KR102644394B1 - 신호 스위치보드 및 입력 테이블을 갖춘 차량 제어 모듈 - Google Patents

신호 스위치보드 및 입력 테이블을 갖춘 차량 제어 모듈 Download PDF

Info

Publication number
KR102644394B1
KR102644394B1 KR1020187005045A KR20187005045A KR102644394B1 KR 102644394 B1 KR102644394 B1 KR 102644394B1 KR 1020187005045 A KR1020187005045 A KR 1020187005045A KR 20187005045 A KR20187005045 A KR 20187005045A KR 102644394 B1 KR102644394 B1 KR 102644394B1
Authority
KR
South Korea
Prior art keywords
vehicle
value
input
elements
module
Prior art date
Application number
KR1020187005045A
Other languages
English (en)
Other versions
KR20180034510A (ko
Inventor
마크 이. 애디슨
월터 3세 콘리
칼 엘. 다미어
조 케이. 해머
스티븐 티. 망겟
Original Assignee
크라운 이큅먼트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 크라운 이큅먼트 코포레이션 filed Critical 크라운 이큅먼트 코포레이션
Publication of KR20180034510A publication Critical patent/KR20180034510A/ko
Application granted granted Critical
Publication of KR102644394B1 publication Critical patent/KR102644394B1/ko

Links

Images

Classifications

    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60WCONJOINT CONTROL OF VEHICLE SUB-UNITS OF DIFFERENT TYPE OR DIFFERENT FUNCTION; CONTROL SYSTEMS SPECIALLY ADAPTED FOR HYBRID VEHICLES; ROAD VEHICLE DRIVE CONTROL SYSTEMS FOR PURPOSES NOT RELATED TO THE CONTROL OF A PARTICULAR SUB-UNIT
    • B60W50/00Details of control systems for road vehicle drive control not related to the control of a particular sub-unit, e.g. process diagnostic or vehicle driver interfaces
    • B60W50/06Improving the dynamic response of the control system, e.g. improving the speed of regulation or avoiding hunting or overshoot
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60WCONJOINT CONTROL OF VEHICLE SUB-UNITS OF DIFFERENT TYPE OR DIFFERENT FUNCTION; CONTROL SYSTEMS SPECIALLY ADAPTED FOR HYBRID VEHICLES; ROAD VEHICLE DRIVE CONTROL SYSTEMS FOR PURPOSES NOT RELATED TO THE CONTROL OF A PARTICULAR SUB-UNIT
    • B60W10/00Conjoint control of vehicle sub-units of different type or different function
    • B60W10/20Conjoint control of vehicle sub-units of different type or different function including control of steering systems
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60WCONJOINT CONTROL OF VEHICLE SUB-UNITS OF DIFFERENT TYPE OR DIFFERENT FUNCTION; CONTROL SYSTEMS SPECIALLY ADAPTED FOR HYBRID VEHICLES; ROAD VEHICLE DRIVE CONTROL SYSTEMS FOR PURPOSES NOT RELATED TO THE CONTROL OF A PARTICULAR SUB-UNIT
    • B60W10/00Conjoint control of vehicle sub-units of different type or different function
    • B60W10/30Conjoint control of vehicle sub-units of different type or different function including control of auxiliary equipment, e.g. air-conditioning compressors or oil pumps
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60WCONJOINT CONTROL OF VEHICLE SUB-UNITS OF DIFFERENT TYPE OR DIFFERENT FUNCTION; CONTROL SYSTEMS SPECIALLY ADAPTED FOR HYBRID VEHICLES; ROAD VEHICLE DRIVE CONTROL SYSTEMS FOR PURPOSES NOT RELATED TO THE CONTROL OF A PARTICULAR SUB-UNIT
    • B60W50/00Details of control systems for road vehicle drive control not related to the control of a particular sub-unit, e.g. process diagnostic or vehicle driver interfaces
    • B60W50/0098Details of control systems ensuring comfort, safety or stability not otherwise provided for
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B66HOISTING; LIFTING; HAULING
    • B66FHOISTING, LIFTING, HAULING OR PUSHING, NOT OTHERWISE PROVIDED FOR, e.g. DEVICES WHICH APPLY A LIFTING OR PUSHING FORCE DIRECTLY TO THE SURFACE OF A LOAD
    • B66F9/00Devices for lifting or lowering bulky or heavy goods for loading or unloading purposes
    • B66F9/06Devices for lifting or lowering bulky or heavy goods for loading or unloading purposes movable, with their loads, on wheels or the like, e.g. fork-lift trucks
    • B66F9/075Constructional features or details
    • B66F9/20Means for actuating or controlling masts, platforms, or forks
    • B66F9/24Electrical devices or systems
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/042Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/02Control of position or course in two dimensions
    • G05D1/021Control of position or course in two dimensions specially adapted to land vehicles
    • G05D1/0231Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60WCONJOINT CONTROL OF VEHICLE SUB-UNITS OF DIFFERENT TYPE OR DIFFERENT FUNCTION; CONTROL SYSTEMS SPECIALLY ADAPTED FOR HYBRID VEHICLES; ROAD VEHICLE DRIVE CONTROL SYSTEMS FOR PURPOSES NOT RELATED TO THE CONTROL OF A PARTICULAR SUB-UNIT
    • B60W50/00Details of control systems for road vehicle drive control not related to the control of a particular sub-unit, e.g. process diagnostic or vehicle driver interfaces
    • B60W2050/0062Adapting control system settings
    • B60W2050/0075Automatic parameter input, automatic initialising or calibrating means
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60WCONJOINT CONTROL OF VEHICLE SUB-UNITS OF DIFFERENT TYPE OR DIFFERENT FUNCTION; CONTROL SYSTEMS SPECIALLY ADAPTED FOR HYBRID VEHICLES; ROAD VEHICLE DRIVE CONTROL SYSTEMS FOR PURPOSES NOT RELATED TO THE CONTROL OF A PARTICULAR SUB-UNIT
    • B60W50/00Details of control systems for road vehicle drive control not related to the control of a particular sub-unit, e.g. process diagnostic or vehicle driver interfaces
    • B60W2050/0062Adapting control system settings
    • B60W2050/0075Automatic parameter input, automatic initialising or calibrating means
    • B60W2050/0082Automatic parameter input, automatic initialising or calibrating means for initialising the control system
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60WCONJOINT CONTROL OF VEHICLE SUB-UNITS OF DIFFERENT TYPE OR DIFFERENT FUNCTION; CONTROL SYSTEMS SPECIALLY ADAPTED FOR HYBRID VEHICLES; ROAD VEHICLE DRIVE CONTROL SYSTEMS FOR PURPOSES NOT RELATED TO THE CONTROL OF A PARTICULAR SUB-UNIT
    • B60W2300/00Indexing codes relating to the type of vehicle
    • B60W2300/12Trucks; Load vehicles
    • B60W2300/121Fork lift trucks, Clarks
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60WCONJOINT CONTROL OF VEHICLE SUB-UNITS OF DIFFERENT TYPE OR DIFFERENT FUNCTION; CONTROL SYSTEMS SPECIALLY ADAPTED FOR HYBRID VEHICLES; ROAD VEHICLE DRIVE CONTROL SYSTEMS FOR PURPOSES NOT RELATED TO THE CONTROL OF A PARTICULAR SUB-UNIT
    • B60W2556/00Input parameters relating to data
    • B60W2556/45External transmission of data to or from the vehicle
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/26Pc applications
    • G05B2219/2641Fork lift, material handling vehicle

Landscapes

  • Engineering & Computer Science (AREA)
  • Transportation (AREA)
  • Automation & Control Theory (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Mechanical Engineering (AREA)
  • General Engineering & Computer Science (AREA)
  • Structural Engineering (AREA)
  • Combustion & Propulsion (AREA)
  • Chemical & Material Sciences (AREA)
  • Geology (AREA)
  • Civil Engineering (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Human Computer Interaction (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Remote Sensing (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Aviation & Aerospace Engineering (AREA)
  • Electromagnetism (AREA)
  • Small-Scale Networks (AREA)
  • Programmable Controllers (AREA)
  • Input From Keyboards Or The Like (AREA)
  • Stored Programmes (AREA)

Abstract

제 1 및 제 2 차량들 중 하나에서 작동할 수 있는 모듈은, 상기 제 1 차량의 제 1 세트의 하드웨어 장치들과 관련된 입력 요소들의 제 1 하위 세트와 상기 제 2 차량의 제 2 세트의 하드웨어 장치들과 관련된 제 2 하위 세트를 갖는 입력 요소들의 상위 세트를 가지는 입력 테이블을 포함한다. 상기 모듈은 상기 입력 요소들의 상위 세트의 것들에 대응하는 구성 요소들을 갖는 적어도 하나의 구성 테이블을 포함하며, 각각의 구성 요소는 입력 요소와 연관된 값을 변환시키는 것과 관련된 데이터를 갖는다. 상기 모듈은 차량들에 이용되는 기능 입력들과 관련된 차량 기능 입력 요소들; 및 기능 입력 요소에 대응하는 입력 요소의 와 값을 결정하고, 상기 값을 변환 값으로 변환하고, 상기 변환 값을 상기 대응하는 기능 입력 요소에 연결하는 구조를 포함한다.

Description

신호 스위치보드 및 입력 테이블을 갖춘 차량 제어 모듈
본 발명은 일반적으로 재료 취급 차량(materials handling vehicle)의 작동에 관한 것으로, 보다 구체적으로는 재료 취급 차량의 소프트웨어 기반 제어에 관한 것이다.
지게차 및 기타 유형의 산업 차량은 다양한 상이한 조건 하에서 작동하게 될 것이다. 또한, 이러한 차량은 전형적으로 차량의 주행 속도를 제어하기 위한 트랙션 시스템(traction system) 및 차량이 주행하는 방향을 제어하기 위한 조향 시스템(steering system)과 같은 다수의 상이한 기능 시스템을 포함한다. 상이한 하드웨어 센서, 입력 및 출력을 갖는 광범위한 종류의 차량들이 있다. 또한, 상이한 유형의 차량들은 소프트웨어에 의해 에뮬레이션 되거나 시뮬레이션 된 상이한 기능적 시스템을 가질 수도 있다. 예를 들어, 운전자가 앉아있는 차량은 조작자가 옆에서 걸어가는 차량의 기능과는 다른 기능을 가질 수 있다. 따라서, 각 차량 유형은 일반적으로 그 차량에 있는 하드웨어 장치를 위해 특별히 설계된 그 자체의 제어 시스템 및 특정 차량에 적합한 특정 기능 시스템을 갖추고 있다.
본 발명은 신호 스위치보드 및 입력 테이블을 갖춘 차량 제어 모듈에서 이하의 상세한 설명에 기술되는 바와 같은 개선된 구성 및 방법을 제공한다.
본 발명의 양태는 제 1 및 제 2 재료 취급 차량들 중 하나에서 작동할 수 있는 컴퓨터 기반의 차량 제어 모듈에 관한 것이다. 상기 모듈은, a) 모듈 입력 요소들의 상위 세트를 포함하는 모듈 입력 테이블로서, 상기 모듈 입력 요소들의 상위 세트가 상기 제 1 차량에 제공된 제 1 세트의 하드웨어 장치들과 관련된 입력 요소들의 제 1 하위 세트와 상기 제 2 차량에 제공된 제 2 세트의 하드웨어 장치들과 관련된 모듈 입력 요소들의 제 2 하위 세트를 포함하는, 상기 모듈 입력 테이블; b) 상기 모듈 입력 요소들의 상위 세트의 것들에 대응하는 각자의 구성 요소들을 포함하는 적어도 하나의 구성 테이블로서, 각자의 구성 요소들 각각이 상기 모듈 입력 테이블의 대응하는 모듈 입력 요소와 연관된 값을 변환시키는 것과 관련된 데이터를 포함하는, 상기 적어도 하나의 구성 테이블; 및 c) 상기 제 1 차량 및 상기 제 2 차량에서 이용되는 차량 기능 입력들과 관련된 차량 기능 입력 요소들을 포함할 수 있다. 상기 모듈은 또한 차량 기능 입력 요소에 대응하는 모듈 입력 테이블의 모듈 입력 요소와 연관된 값을 결정하고, 상기 값을 변환 값으로 변환하고, 상기 변환 값을 상기 대응하는 차랑 기능 입력 요소에 연결하는 컴퓨터 기반의 구조를 포함할 수 있다.
예로서, 상기 제 1 차량 및 상기 제 2 차량 중 하나에서 구현된 하드웨어 장치들은: 차량 네트워크의 버스; 인코더; 스위치; 아날로그 센서; 및 디지털 센서 중 하나 이상을 포함한다.
특히, 상기 컴퓨터 기반의 구조는, a) 연관된 차량 기능 입력 요소들, 및 b) 차량 제어 모듈이 작동하고 있는 상기 제 1 차량 및 상기 제 2 차량 중 하나에 대응하는 상기 모듈 입력 요소들의 제 1 및 제 2 하위 세트들 중 하나의 연관된 모듈 입력 요소들과 관련된 값들/엔트리들을 포함하는 라우팅 테이블(routing table)을 포함할 수 있다. 또한, 모듈 입력 요소와 연관된 값을 결정하는 것은, a) 상기 엔트리와 연관된 차량 기능 입력 요소와 연관된 모듈 입력 요소를 결정하고, b) 상기 모듈 입력 테이블의 대응하는 모듈 입력 요소와 연관된 값을 결정하는 것을 포함할 수 있다. 따라서, 상기 모듈은 컴퓨터 액세스 가능한 메모리를 포함할 수 있고, 여기에서 상기 모듈 입력 테이블의 각각의 요소는 그 연관된 값이 저장되는 메모리 내의 각자의 어드레스를 포함한다.
본 발명의 양태들 및 실시예들에 따라, 상기 차량 제어 모듈은 모듈 입력 변수들의 상위 세트를 포함하는 모듈 입력 데이터 구조를 포함할 수 있고, 여기에서 상기 모듈 입력 변수들의 상위 세트는 상기 제 1 차량에 제공된 상기 제 1 세트의 하드웨어 장치들과 관련된 모듈 입력 변수들의 제 1 하위 세트 및 상기 제 2 차량에 제공된 상기 제 2 세트의 하드웨어 장치들과 관련된 모듈 입력 변수들의 제 2 하위 세트를 포함하고; 각각의 모듈 입력 요소는 상기 모듈 입력 변수들의 상위 세트 중 하나에 대응하고, 상기 모듈 입력 데이터 구조 내의 대응하는 모듈 입력 변수의 오프셋 양을 포함한다.
결과적으로, 상기 컴퓨터 기반의 구조는, a) 연관된 차량 기능 입력 요소들, 및 b) 차량 제어 모듈이 작동하고 있는 상기 제 1 차량 및 상기 제 2 차량 중 하나에 대응하는 상기 모듈 입력 요소들의 제 1 및 제 2 하위 세트들 중 하나의 연관된 모듈 입력 요소들과 관련된 엔트리들을 포함하는 라우팅 테이블을 포함할 수 있다. 모듈 입력 요소와 연관된 값을 결정하는 것은: a) 상기 엔트리와 연관된 차량 기능 입력 요소와 연관된 모듈 입력 요소를 결정하고, b) 상기 모듈 입력 데이터 구조의 어드레스를 결정하고, c) 상기 모듈 입력 요소 및 상기 모듈 입력 데이터 구조의 어드레스에 기초하여 복합 어드레스를 구성하고, d) 상기 복합 어드레스와 연관된 값을 결정하는 것을 포함한다.
상기 모듈의 상기 적어도 하나의 구성 테이블은 상기 모듈 입력 요소들의 상위 세트의 것들에 대응하는 각자의 모듈 입력 구성 요소들을 포함하는 모듈 입력 구성 테이블을 포함할 수 있으며, 각자의 모듈 입력 구성 요소들 각각은 상기 모듈 입력 테이블의 대응하는 모듈 입력 요소와 연관된 값과 관련된 제 1 변환을 달성하기 위한 데이터를 포함한다. 상기 적어도 하나의 구성 테이블은 또한 또는 대안적으로 상기 차량 기능 입력 요소들의 것들에 대응하는 각자의 기능 입력 구성 요소들을 포함하는 기능 입력 구성 테이블을 포함할 수 있고, 여기에서 각자의 기능 입력 구성 요소들 각각은 상기 모듈 입력 테이블의 대응하는 모듈 입력 요소와 연관된 값과 관련된 제 2 변환을 달성하기 위한 데이터를 포함한다. 결과적으로, 상기 값을 상기 변환 값으로 변환하는 것은 상기 제 1 변환 및/또는 상기 제 2 변환에 기초하여 상기 변환 값을 결정하는 것을 포함할 수 있다.
상기 값의 변환은: 상기 값을 변경하지 않고 그대로 두고; 상기 값을 비트마스크하고(bitmask); 상기 값을 비트-시프트하고(bit-shift); 상기 값에 미리 결정된 오프셋을 부가하고; 및 상기 값을 미리 결정된 이득으로 곱하는 것 중 하나 이상을 포함할 수 있다. 또한, 상기 모듈 입력 구성 테이블의 각각의 요소는 상기 모듈 입력 테이블의 대응하는 모듈 입력 요소와 연관된 상기 값의 데이터 형식과 관련된 데이터를 포함할 수 있고, 상기 기능 입력 구성 테이블의 각각의 요소는 상기 대응하는 차량 기능 입력 요소와 연관된 상이한 데이터 형식과 관련된 데이터를 포함한다. 이 경우, 상기 값을 변환하는 것은 상기 데이터 형식을 상기 상이한 데이터 형식으로 변경하는 것을 포함한다.
상기 차량 제어 모듈은 또한 컴퓨터 액세스 가능한 메모리를 포함할 수 있으며, 여기에서 각각의 차량 기능 입력 요소는 그 연관된 변환 값이 저장되는 메모리 내의 각자의 어드레스를 포함할 수 있다.
상기 모듈 입력 요소들과 관련하여, a) 상기 모듈 입력 요소들의 상위 세트의 적어도 하나의 모듈 입력 요소는 상기 모듈 입력 요소들의 제 1 하위 세트 및 상기 모듈 입력 요소들의 제 2 하위 세트 모두의 멤버가 될 수 있고, b) 상기 모듈 입력 요소들의 상위 세트의 적어도 하나의 모듈 입력 요소는 상기 모듈 입력 요소들의 제 1 하위 세트 또는 상기 모듈 입력 요소들의 제 2 하위 세트 중 단지 하나의 멤버가 될 수 있다.
상기 모듈 입력 변수들과 관련하여, a) 상기 모듈 입력 변수들의 상위 세트의 적어도 하나의 모듈 입력 변수는 상기 모듈 입력 변수들의 제 1 하위 세트 및 상기 모듈 입력 변수들의 제 2 하위 세트 모두의 멤버가 될 수 있고, b) 상기 모듈 입력 변수들의 상위 세트의 적어도 하나의 모듈 입력 변수는 상기 모듈 입력 변수들의 제 1 하위 세트 또는 상기 모듈 입력 변수들의 제 2 하위 세트 중 단지 하나의 멤버가 될 수 있다.
본 발명의 또 다른 양태는, 제 1 및 제 2 재료 취급 차량들 중 하나에서 작동할 수 있는 차량 제어 모듈을 위한 방법에 관한 것이다. 상기 방법은, a) 모듈 입력 요소들의 상위 세트를 포함하는 모듈 입력 테이블을 제공하는 단계로서, 상기 모듈 입력 요소들의 상위 세트는 상기 제 1 차량에 제공된 제 1 세트의 하드웨어 장치들과 관련된 모듈 입력 요소들의 제 1 하위 세트 및 상기 제 2 차량에 제공된 제 2 세트의 하드웨어 장치들과 관련된 모듈 입력 요소들의 제 2 하위 세트를 포함하는, 상기 모듈 입력 테이블을 제공하는 단계; b) 상기 모듈 입력 요소들의 상위 세트의 것들에 대응하는 각자의 구성 요소들을 포함하는 적어도 하나의 구성 테이블을 제공하는 단계로서, 각자의 구성 요소들 각각은 상기 모듈 입력 테이블의 대응하는 모듈 입력 요소와 연관된 값을 변환시키는 것과 관련된 데이터를 포함하는, 상기 적어도 하나의 구성 테이블을 제공하는 단계; 및 c) 상기 제 1 차량 및 상기 제 2 차량에서 이용되는 차량 기능 입력들과 관련된 차량 기능 입력 요소들을 제공하는 단계를 포함한다. 상기 방법은 또한 차량 기능 입력 요소에 대응하는 상기 모듈 입력 테이블의 모듈 입력 요소와 연관된 값을 결정하는 단계; 상기 값을 변환 값으로 변환하는 단계; 및 상기 변환 값을 상기 대응하는 차량 기능 입력 요소와 연결하는 단계를 포함할 수 있다.
본 발명의 한 양태는 제 1 및 제 2 재료 취급 차량들 중 하나에서 작동할 수 있는 컴퓨터 기반의 차량 제어 모듈에 관한 것이다. 상기 모듈은 소스 요소들의 제 1 상위 세트를 포함하는 소스 테이블을 포함하며, 상기 소스 요소들의 제 1 상위 세트는 상기 제 1 차량에 제공된 제 1 세트의 하드웨어 장치들과 관련된 소스 요소들의 제 1 하위 세트와, 상기 제 2 차량에 제공된 제 2 세트의 하드웨어 장치들과 관련된 소스 요소들의 제 2 하위 세트를 포함한다. 상기 모듈은 또한, 상기 소스 요소들의 제 1 상위 세트의 것들에 대응하는 각자의 구성 요소들을 포함하는 적어도 하나의 구성 테이블을 포함하고, 각자의 구성 요소들 각각은 상기 소스 테이블의 대응하는 소스 요소와 연관된 값을 변환시키는 것과 관련된 데이터를 포함한다. 상기 제 1 차량 및 상기 제 2 차량에서 이용되는 차량 기능 입력들과 관련된 차량 기능 입력 요소들의 세트를 포함하는 차량 기능 입력 테이블이 또한 포함된다. 상기 모듈은 또한, 상기 차량 기능 입력 테이블의 차량 기능 입력 요소에 대응하는 소스 테이블의 소스 요소의 값을 결정하고, 상기 값을 변환 값으로 변환하고, 상기 변환 값을 상기 대응하는 차량 기능 입력 요소에 연결하기 위한 구조를 포함한다.
본 발명의 또 다른 양태는 제 1 및 제 2 재료 취급 차량들 중 하나에서 작동할 수 있는 차량 제어 모듈을 위한 방법에 관한 것이다. 상기 방법은 소스 요소들의 제 1 상위 세트를 포함하는 소스 테이블을 제공하는 단계로서, 상기 소스 요소들의 제 1 상위 세트는 상기 제 1 차량에 제공된 제 1 세트의 하드웨어 장치들과 관련된 소스 요소들의 제 1 하위 세트와 상기 제 2 차량에 제공된 제 2 세트의 하드웨어 장치들과 관련된 소스 요소들의 제 2 하위 세트를 포함하는, 상기 소스 테이블을 제공하는 단계를 포함한다. 상기 방법은 또한 상기 소스 요소들의 제 1 상위 세트의 것들에 대응하는 각자의 구성 요소들을 포함하는 적어도 하나의 구성 테이블을 제공하는 단계로서, 각자의 구성 요소들 각각이 상기 소스 테이블의 대응하는 소스 요소와 연관된 값을 변환시키는 것과 관련된 데이터를 포함하는, 상기 적어도 하나의 구성 테이블을 제공하는 단계를 포함한다. 상기 제 1 차량 및 상기 제 2 차량에서 이용되는 차량 기능 입력들과 관련된 차량 기능 입력 요소들의 세트를 포함하는 차량 기능 입력 테이블이 제공될 수 있다. 상기 방법은 또한, a) 상기 차량 기능 입력 테이블의 차량 기능 입력 요소에 대응하는 소스 테이블의 소스 요소의 값을 결정하는 단계, b) 상기 값을 변환 값으로 변환하는 단계, 및 c) 상기 변환 값을 상기 대응하는 차량 기능 입력 요소와 연결하는 단계를 포함할 수 있다.
본 발명의 양태들 및 실시예들에 따라, 상기 소스 테이블의 각각의 요소 및 상기 차량 기능 입력 테이블의 각각의 요소는 그 연관된 값이 저장되는 메모리 내의 각자의 어드레스를 포함할 수 있다. 또한, 상기 값의 변환은: 상기 값을 변경하지 않고 그대로 두고; 상기 값을 비트 마스크하고; 상기 값을 비트-시프트하고; 상기 값에 미리 결정된 오프셋을 부가하고; 및 상기 값을 미리 결정된 이득으로 곱하는 것 중 하나 이상을 포함할 수 있다. 상기 제 1 차량 및 상기 제 2 차량 중 하나에서 구현된 하드웨어 장치들은: 차량 네트워크의 버스; 인코더; 스위치; 아날로그 센서; 및 디지털 센서 중 하나 이상을 포함할 수 있다.
본 발명의 일부 양태들 및 실시예들에 따라, 상기 적어도 하나의 구성 테이블은 소스 요소들의 제 1 상위 세트의 것들에 대응하는 각자의 모듈 입력 구성 요소들을 포함하는 모듈 입력 구성 테이블을 포함할 수 있으며, 각자의 모듈 입력 구성 요소들 각각은 상기 소스 테이블의 대응하는 소스 요소와 연관된 값과 관련된 제 1 변환을 달성하기 위한 데이터를 포함한다. 부가적으로 또는 대안적으로, 상기 적어도 하나의 구성 테이블은 또한 상기 차량 기능 입력 요소들의 것들에 대응하는 각자의 기능 입력 구성 요소들을 포함하는 기능 입력 구성 테이블을 포함할 수 있고, 여기에서 각자의 기능 입력 구성 요소들 각각은 상기 소스 테이블의 대응하는 소스 요소와 연관된 값과 관련된 제 2 변환을 달성하기 위한 데이터를 포함한다. 따라서, 상기 값을 상기 변환 값으로 변환하는 것은 상기 제 1 변환 및/또는 상기 제 2 변환에 기초하여 상기 변환 값을 결정하는 것을 포함할 수 있다.
또한, 본 발명의 양태들 및 실시예들에 따라, 상기 방법은 a) 연관된 차량 기능 입력 요소들, 및 b) 차량 제어 모듈이 작동하고 있는 제 1 차량 및 제 2 차량 중 하나에 대응하는 소스 요소들의 제 1 및 제 2 하위 세트들 중 하나의 연관된 소스 요소들과 관련된 엔트리들을 포함하는 라우팅 테이블을 제공하는 단계를 포함할 수 있다. 따라서, 따라서, 상기 소스 요소의 값을 결정하는 것은, a) 상기 엔트리와 연관된 차량 기능 입력 요소와 연관된 소스 요소를 결정하고, b) 상기 소스 테이블의 대응하는 소스 요소와 연관된 값을 결정하는 것을 포함할 수 있으며, 상기 값을 변환 값으로 변환하는 것은, a) 상기 연관된 소스 요소에 대응하는 제 1 및 제 2 구성 테이블들 각각의 각자의 구성 요소를 결정하는 것과, b) 대응하는 각자의 구성 요소들에 기초하여, 상기 값을 상기 엔트리와 연관된 차량 기능 입력 요소와 연결되는 변환 값으로 변환하는 것을 포함할 수 있다. 또한, 상기 라우팅 테이블의 엔트리들의 수는 상기 차량 기능 입력 테이블의 요소들의 수와 동일할 수 있다.
또한, 본 발명의 양태들 및 실시예들에 따라, 상기 제 1 상위 세트는 또한 하나 이상의 디폴트 값들과 관련된 소스 요소들의 제 3 하위 세트를 포함할 수 있고, 상기 라우팅 테이블은: a) 연관된 차량 기능 입력 요소들과, b) 상기 제 3 하위 세트의 연관된 소스 요소들과 관련된 하나 이상의 엔트리들을 포함할 수 있다. 상기 소스 요소들의 제 3 하위 세트와 관련된 라우팅 테이블의 각각의 엔트리에 대해, 다음의 단계들: a) 상기 엔트리와 연관된 차량 기능 입력 요소와 연관된 소스 요소를 결정하는 단계, b) 상기 연관된 소스 요소에 대응하는 제 1 및 제 2 구성 테이블들 각각의 각자의 구성 요소를 결정하는 단계, c) 상기 소스 테이블의 대응하는 소스 요소와 연관된 값을 결정하는 단계, 및 d) 대응하는 각자의 구성 요소들에 기초하여, 상기 값을 상기 엔트리와 연관된 차량 기능 입력 요소와 연결되는 변환 값으로 변환하는 단계가 수행될 수 있다.
다양한 양태들 및 실시예들에 따라, 모듈 입력 구성 테이블의 각각의 요소는 상기 소스 테이블의 대응하는 요소와 연관된 값의 데이터 형식과 관련된 데이터를 포함하고, 상기 기능 입력 구성 테이블의 각각의 요소는 상기 차량 기능 입력 테이블의 대응하는 요소와 연관된 상이한 데이터 형식과 관련된 데이터를 포함한다. 따라서, 상기 값을 변환하는 것은 상기 데이터 형식을 상기 상이한 데이터 형식으로 변경하는 것을 포함한다.
본 발명의 양태들 및 실시예들에 따라, 상기 소스 요소들의 제 1 상위 세트 중 적어도 하나의 요소는 상기 소스 요소들의 제 1 하위 세트 및 상기 소스 요소들의 제 2 하위 세트 모두의 멤버가 된다. 대안적으로 또는 부가적으로, 상기 소스 요소들의 제 1 상위 세트 중 적어도 하나의 요소는 상기 소스 요소들의 제 1 하위 세트 또는 상기 소스 요소들의 제 2 하위 세트만의 멤버가 된다.
본 발명의 또 다른 양태는 제 1 및 제 2 재료 취급 차량들 중 하나에서 작동할 수 있는 컴퓨터 기반의 차량 제어 모듈에 관한 것이다. 상기 모듈은, a) 소스 요소들의 제 1 상위 세트를 포함하는 소스 테이블로서, 상기 소스 요소들의 제 1 상위 세트가 상기 제 1 차량에 제공된 제 1 세트의 하드웨어 장치들과 관련된 소스 요소들의 제 1 하위 세트와 상기 제 2 차량에 제공된 제 2 세트의 하드웨어 장치들과 관련된 소스 요소들의 제 2 하위 세트를 포함하는, 상기 소스 테이블; b) 상기 소스 요소들의 제 1 상위 세트의 것들에 대응하는 각자의 모듈 입력 구성 요소들을 포함하는 모듈 입력 구성 테이블로서, 각자의 모듈 입력 구성 요소들 각각이 상기 소스 테이블의 대응하는 소스 요소와 연관된 값을 변환시키는 것과 관련된 데이터를 포함하는, 상기 모듈 입력 구성 테이블; 및 c) 상기 제 1 차량 및 상기 제 2 차량에서 이용되는 차량 기능 입력들과 관련된 차량 기능 입력 요소들의 세트를 포함하는 차량 기능 입력 테이블을 포함한다. 상기 모듈은 또한: a) 연관된 차량 기능 입력 요소들과, b) 상기 차량 제어 모듈이 작동하고 있는 상기 제 1 차량 및 상기 제 2 차량 중 하나에 대응하는 소스 요소들의 상기 제 1 및 제 2 하위 세트들 중 하나의 연관된 소스 요소들과 관련된 엔트리들을 포함하는 라우팅 테이블을 포함할 수 있다. 라우팅 엔진이 상기 모듈에 포함되며, 상기 라우팅 엔진은 상기 제 1 차량 및 상기 제 2 차량 중 하나에서 실행될 때, 상기 라우팅 테이블의 각각의 엔트리에 대해: a) 상기 엔트리와 연관된 차량 기능 입력 요소와 연관된 소스 요소를 결정하고, b) 상기 연관된 소스 요소에 대응하는 모듈 입력 구성 테이블의 모듈 입력 구성 요소를 결정하고, c) 상기 소스 테이블의 대응하는 소스 요소와 연관된 값을 결정하고, d) 상기 대응하는 모듈 입력 구성 요소에 기초하여 상기 값을 변환 값으로 변환하도록 구성된다.
상기 차량 제어 모듈은 또한 차량 기능 입력 요소들의 것들에 대응하는 각자의 기능 입력 구성 요소들을 포함하는 기능 입력 구성 테이블로서, 각자의 기능 입력 구성 요소들 각각이 상기 소스 테이블의 대응하는 소스 요소와 연관된 변환 값의 추가의 변환을 달성하는 것과 관련된 데이터를 포함하는, 상기 기능 입력 구성 테이블을 더 포함할 수 있다. 상기 라우팅 엔진은 또한 상기 제 1 차량 및 상기 제 2 차량 중 하나에서 실행될 때 상기 라우팅 테이블의 각각의 엔트리에 대해: e) 상기 대응하는 기능 입력 구성 요소에 기초하여 상기 변환 값을 추가의 변환 값으로 더 변환하고, f) 상기 추가의 변환 값을 상기 엔트리와 연관된 차량 기능 입력 요소와 연결하도록 구성될 수 있다.
본 발명은 또한 본 명세서에 정의된 차량 제어 모듈을 포함하는 차량과 본 명세서에 정의된 본 발명의 방법을 수행하도록 적응된 차량을 포함한다. 본 발명의 차량은 재료 취급 차량이될 수 있다.
달리 언급하지 않는 한, 본 명세서에서 정의된 본 발명의 다양한 양태들 및 실시예들의 특징은 임의의 적절한 조합으로 결합될 수 있으며, 모든 이러한 조합은 본 명세서를 통해 예상된다.
도 1은 본 발명의 한 양태에 따른 재료 취급 차량의 사시도를 도시한다.
도 2a는 도 1의 차량의 차량 제어 모듈(VCM)에서 제어 로직을 제공하기 위한 컴퓨팅 환경을 도시한다.
도 2b는 본 발명의 원리에 따른 VCM을 위한 소프트웨어 아키텍처의 개념도를 개략적으로 도시한다.
도 3a는 본 발명의 원리에 따라 VCM 입력을 차량 기능 입력으로 라우팅하는 데 사용되는 스위치보드 테이블의 블록 레벨도를 도시한다.
도 3b는 본 발명의 원리에 따라 차량 기능 출력을 VCM 출력으로 라우팅하는 데 사용되는 스위치보드 테이블의 블록 레벨도를 도시한다.
도 4는 본 발명의 원리에 따라 VCM 입력을 차량 기능 입력으로 라우팅하기 위한 예시적인 방법의 흐름도를 도시한다.
도 5는 본 발명의 원리에 따라 차량 기능 출력을 VCM 출력으로 라우팅하기 위한 예시적인 방법의 흐름도를 도시한다.
도 6은 본 발명의 원리에 따라 메모리에 저장된 데이터 구조의 개념도를 도시한다.
도 7a는 본 발명의 원리에 따라 VCM 입력을 차량 기능 입력으로 라우팅하는 데 사용되는 다른 스위치보드 테이블의 블록 레벨도를 도시한다.
도 7b는 본 발명의 원리에 따라 차량 기능 출력을 VCM 출력으로 라우팅하는 데 사용되는 다른 스위치보드 테이블의 블록 레벨도를 도시한다.
도 8은 본 발명의 원리에 따라 VCM 입력/출력을 차량 기능 입력/출력과 연결하기 위한 예시적인 방법의 흐름도를 도시한다.
바람직한 양태들 및 실시예들에 대한 다음의 상세한 설명에서, 본 명세서의 일부를 형성하는 첨부된 도면들이 참조되고, 이러한 도면들은 설명의 목적으로 도시된 것이며 제한하려는 의도가 아니라 본 발명이 실행될 수 있는 특정의 적절한 실시예들의 목적으로 도시된다. 다른 실시예들이 이용될 수 있으며 본 발명의 사상 및 범위를 벗어나지 않고서 변경이 이루어질 수 있음이 이해될 것이다.
이제 도 1을 참조하면, 재료 취급 차량(10)(이하, "차량")이 도시된다. 본 발명은 지게차 트럭을 포함하는 도시된 차량(10)을 참조하여 본 명세서에서 설명되었지만, 본 발명은 다양한 다른 유형의 재료 취급 차량에 사용될 수 있음은 당업자에게 명백할 것이다.
차량(10)은 차량(10)의 주요 구조적 구성 요소를 형성하는 프레임(14)을 포함하고 배터리(15)를 수용하는 본체 또는 동력 유닛(12)을 포함한다. 상기 차량(10)은 또한 제 1 및 제 2 아우트리거(outriggers)(18)에 결합된 한 쌍의 포크-사이드 지지 휠(fork-side support wheels)(16), 상기 동력 유닛(12)의 후방(12A)에 제 1 코너 근처에 장착된 구동 및 조향 휠(driven and steered wheel)(20), 및 상기 동력 유닛(12)의 후방(12A)에 제 2 코너 근처에 장착된 캐스터 휠(도시되지 않음)을 포함한다. 휠들(16, 20)은 차량(10)이 바닥면을 가로질러 움직일 수 있게 한다.
조작실(22)은 차량(10)을 운전하는 조작자를 수용하기 위해 동력 유닛(12) 내에 위치된다. 차량(10)의 조향을 제어하기 위한 틸러 노브(tiller knob)(24)가 조작실(22) 내에 제공된다. 차량(10)의 운동 속도 및 방향(앞 또는 뒤)은 조작자 좌석(28)에 인접하게 제공되는 다기능 제어 핸들(26)을 통해 조작자에 의해 제어되며, 그러한 제어 핸들(26)은 당업자에 의해 인식될 바와 같이 하나 이상의 다른 차량 기능들을 제어할 수 있다. 차량(10)은 또한 차량 프레임(14)에 부착된 수직 지지 구조체(32)를 포함하는 오버헤드 가드(30)를 포함한다.
차량(10)의 화물 핸들링 어셈블리(40)는 일반적으로 마스트 어셈블리(mast assembly)(42) 및 상기 마스트 어셈블리(42)를 따라 수직으로 이동 가능한 캐리지 어셈블리(44)를 포함한다. 마스트 어셈블리(42)는 아우트리거들(18) 사이에 위치되고, 상기 프레임(14)에 부착된 고정된 마스트 부재(46) 및 내포된(nested) 제 1 및 제 2 이동식 마스트 부재들(48, 50)을 포함한다. 상기 마스트 어셈블리(42)는 도 1에 도시된 2 개의 부재, 즉 상기 제 1 및 제 2 이동식 마스트 부재들(48, 50)보다 많거나 적은 이동식 마스트 부재들을 포함할 수 있다는 것을 유의해야 한다. 캐리지 어셈블리(44)는 리치 어셈블리(52), 포크 캐리지(54), 및 한 쌍의 포크들(56A, 56B)로 이루어진 포크 구조를 포함하는 통상적인 구조를 포함한다. 본 명세서에 정의된 이동식 어셈블리(47)는 하부 및 상부 이동식 마스트 부재들(48, 50) 및 캐리지 어셈블리(44)를 포함한다. 마스트 어셈블리(42)는 2014년 5월 6일 특허결정되고, 출원인인 크라운 이큅먼트 코포레이션에게 양도된, 스티븐 씨. 빌거(Steven C. Billger) 등의 미국 특허 번호 8,714,311에 기술된 모노마스트(monomast)로서 구성될 수 있으며, 그 전체 내용은 본 명세서에 참조로 포함된다.
도 1의 차량(10)은 예로서 제공되며, 많은 상이한 유형들의 재료 취급 트럭들이 본 발명의 범위 내에서 고려된다. 아래에서 상세하게 설명되는 바와 같이, 차량들이 비록 상이한 유형들이라 하더라도 다수의 동일한 구성 요소들이 다양한 차량들에 이용될 수 있게 하는 차량 제어 모듈의 양태들이 제공된다.
도 2a는 본 명세서에서 도시되고 기술된 하나 이상의 실시예들에 따라 차량 제어 모듈(VCM)(200)에서 제어 로직 및 소프트웨어 애플리케이션들을 제공하기 위한 컴퓨팅 환경의 블록 레벨도를 도시한다.
도시된 실시예에서, VCM(200)은 하나 이상의 프로세서 또는 마이크로컨트롤러들(216), 입력/출력 하드웨어(218), 네트워크 인터페이스 하드웨어(220), 데이터 저장 컴포넌트(222), 및 메모리 컴포넌트(202)를 포함한다. 데이터 저장 컴포넌트(222) 및 메모리 컴포넌트(202) 각각은 휘발성 및/또는 비휘발성 메모리로서 구성될 수 있으며, 랜덤 액세스 메모리(SRAM, DRAM, 및/또는 다른 유형의 RAM을 포함), 플래시 메모리, 보안 디지털(SD) 메모리, 레지스터, 콤팩트 디스크(CD), DVD(digital versatile disc), 및/또는 다른 유형의 비-일시적 컴퓨터 판독가능 매체를 포함할 수 있다. 차량(10)이 셧다운되고(shutdown) 재개된 후에 이용가능하게 되도록 의도된 임의의 저장된 정보는 바람직하게는 비-휘발성 메모리에 저장될 수 있다. 또한, 특정 실시예에 따라, 전술한 비-일시적 컴퓨터 판독가능 매체는 VCM(200) 내에 및/또는 VCM(200) 외부에 존재할 수 있다.
또한, 메모리 컴포넌트(202)는 하나 이상의 프로세서 또는 마이크로컨트롤러(216)에 의해 실행될 수 있는 소프트웨어 또는 애플리케이션들을 저장할 수 있다. 따라서, 메모리 컴포넌트(202)는 운영 애플리케이션 또는 로직(204), 트랙션 애플리케이션(208), 조향 애플리케이션(206), 호이스트(hoist) 애플리케이션(210), 및 액세서리 애플리케이션(들)(212)을 포함할 수 있다. 운영 로직(204)은 예를 들어, VCM(200)의 구성 요소들을 관리하기 위한 진단 관련 애플리케이션들과 같은 운영 시스템 및 다른 소프트웨어를 포함할 수 있다. 트랙션 애플리케이션(208)은 차량(10)에 대한 최적의 견인력 제어를 용이하게 하기 위한 하나 이상의 알고리즘들 및 파라미터들로 구성될 수 있다. 조향 애플리케이션(206)은 차량(10)의 최적의 조향 제어를 용이하게 하기 위한 하나 이상의 알고리즘들 및 파라미터들로 구성될 수 있다. 호이스트 애플리케이션(210)은 차량(10)의 최적의 호이스트 제어를 용이하게 하기 위한 하나 이상의 알고리즘들 및 파라미터들을 포함할 수 있으며, 상기 차량(10)의 이동식 어셈블리(47)를 높이고 낮추는 데 사용되는 주요 화물 취급 어셈블리 시스템으로서 작용한다. 부가적으로, 액세서리 애플리케이션(212)은 캐리지 어셈블리(44)의 기울기 및 측면 이동(sideshift)과 같은 추가적인 작업들을 수행하는 보조의 화물 취급 어셈블리 시스템과 같은, 차량(10)의 액세서리들을 제어하기 위한 하나 이상의 알고리즘들 및 파라미터들을 포함할 수 있다. 로컬 통신 인터페이스(214)가 또한 도 2a에 포함되며, 예를 들어 직렬 주변 인터페이스(SPI) 또는 직렬 명령 인터페이스(SCI)와 같은 버스 또는 다른 통신 인터페이스로서 구현될 수 있으며, VCM(200)의 구성 요소들 간의 통신을 용이하게 한다.
상기 하나 이상의 프로세서 또는 마이크로컨트롤러(204)는 (예를 들어, 데이터 저장 컴포넌트(222) 및/또는 메모리 컴포넌트(202)로부터) 명령들을 수신하고 실행하도록 동작가능한 임의의 프로세싱 구성 요소를 포함할 수 있다. 입력/출력 하드웨어(218)는 모니터, 포지셔닝 시스템, 키보드, 터치 스크린, 마우스, 프린터, 이미지 캡쳐 장치, 마이크로폰, 스피커, 자이로스코프, 나침반 및/또는, 데이터를 수신하고 전송하고 나타내기 위한 다른 장치를 포함할 수 있으며 및/또는 이들과 인터페이스하도록 구성될 수 있다. 네트워크 인터페이스 하드웨어(220)는 안테나, 모뎀, LAN 포트, Wi-Fi(wireless fidelity) 카드, WiMax 카드, 이동 통신 하드웨어, 및/또는 다른 네트워크 및/또는 장치와 통신하기 위한 다른 하드웨어를 포함하는 임의의 유선 또는 무선 네트워킹 하드웨어를 포함할 수 있으며 및/또는 이와 통신하도록 구성될 수 있다. 이러한 접속으로부터, VCM(200)과 차량(10) 상의 CAN 버스 또는 유사한 네트워크와 결합된 다른 구성 요소들을 포함하는 다른 컴퓨팅 장치 사이의 통신이 용이하게 될 수 있다.
도 2a에 도시된 구성 요소들은 단지 예시적인 것이고 본 개시의 범위를 제한하려는 의도가 아니라는 것을 이해해야한다. 도 2a의 구성 요소들은 VCM(200) 내에 존재하는 것으로 도시되어 있지만, 이러한 것은 단지 예일 뿐이다. 일부 실시예들에서, 구성 요소들 중 하나 이상은 VCM(200) 외부에 존재할 수 있다. 도 2a의 VCM(200)은 단일 장치로서 도시되어 있지만, 이러한 것은 단지 예일 뿐이라는 것을 이해해야한다. 일부 실시예들에서, 트랙션 애플리케이션(208), 조향 애플리케이션(206), 호이스트 애플리케이션(210), 및/또는 액세서리 애플리케이션(212)은 상이한 장치들 상에 존재할 수 있다. 또한, 트랙션 애플리케이션(208), 조향 애플리케이션(206), 호이스트 애플리케이션(210), 및 액세서리 애플리케이션(212)이 별도의 논리 구성 요소들로서 VCM(200)에 도시되어 있지만, 이러한 것도 역시 예이다. 일부 실시예들에서, 단일의 복합 소프트웨어 애플리케이션이 VCM(200)으로 하여금 상기 기술된 기능을 제공하게 할 수 있다.
또한, VCM(200)은 차량(10)의 수동 작동 및 자동 작동의 다양한 조건들을 조정하기 위해 상기 차량(10)의 다양한 센서들 및 다른 제어 회로들과 통신할 수 있음을 이해해야한다.
도 2b를 참조하면, VCM(200)에 대한 소프트웨어 아키텍처의 개념도는 일반적으로 인프라스트럭처 박스(232), 교차 제품 모델 및/또는 트럭 기능 박스(234) 및 상기 인프라스트럭처 박스(232)와 상기 교차 제품 모델 박스(234) 사이에 위치된 모델 인터페이스 박스(236)를 포함하는 상부 애플리케이션 층(230)을 포함한다. 상기 애플리케이션 층(230)은 또한 다른 애플리케이션들이 차량(10)에 구현된 다양한 버스들 및 네트워크들을 통해 통신할 수 있게 하는 다수의 통신 관련 애플리케이션들(240)을 포함할 수 있다. 인터페이스 층(242), 드라이버 층(244), 및 하드웨어 층(246)이 또한 제공된다.
도 2a는 VCM(200)의 하나 이상의 기능적 구성 요소들의 블록 레벨 다이어그램이며, 도 2b는 VCM(200)의 소프트웨어를 추상적인 그들의 상이한 층들로 분리한 것을 도시한다. 도 2a와 도 2b의 요소들 사이에는 일대일 대응은 없지만, 일부 유사점들 및 차이점들이 있다. 예를 들어, 도 2b는 주로 소프트웨어에 초점을 맞추기 때문에, 도 2a로부터의 메모리 컴포넌트(202) 및 프로세서(216)와 유사한 요소는 없다. 그러나, 도 2a의 I/O 하드웨어(218), 네트워크 인터페이스 하드웨어(220), 및 데이터 저장 컴포넌트(222)는 VCM(200)의 프로세서(216) 외부의 장치들 및 구성 요소들과 인터페이스하는 도 2b의 하드웨어 층(246)의 부분들과 유사하다. 도 2a의 로컬 통신 인터페이스(214)는 도 2b의 직렬 주변장치 인터페이스(SPI), 직렬 명령 인터페이스(SCI) 및 다른 직렬 통신 채널들과 같은 드라이버 층(244)의 기능과 유사한 하드웨어 기반 상호접속부들(예를 들어, 신호 핀, 보드 트레이스, 드라이버 칩 등)을 포함한다. 도 2a의 애플리케이션들(204, 206, 208, 210, 212)과 관련하여, 이들은 도 2b의 애플리케이션 층(230)에 대응하고, 특히 모델들 및 트럭 기능들(234)에 대응한다.
인터페이스 층(242)은 애플리케이션 층(230)의 다양한 애플리케이션들을 위한 일정한 애플리케이션 프로그램 인터페이스(API)(248)를 함께 제공하는 드라이버 층(244)의 특정 장치 드라이버에 대한 다수의 인터페이스들(250)을 포함한다. 상기 드라이버 층(244)은 입력 하드웨어 장치와 인터페이스하고, 출력 장치들을 구동하고, CAN 네트워크 또는 다른 네트워크를 통해 통신하고, 직렬 주변장치 인터페이스(SPI) 및 직렬 명령 인터페이스(SCI)와 같은 직렬 프로토콜을 구현하도록 특정 드라이버 소프트웨어를 제공한다. 최상부 애플리케이션 층(230), 인터페이스 층(242), 및 드라이버 층(244)은 여러 유형들의 상이한 차량들에 대해 VCM(200)과 함께 제공되는 포괄적인 소프트웨어를 포함한다. 그러나, 차량의 입력/출력 하드웨어와 접속하는 하드웨어 층(246)의 입력/출력 하드웨어 구조, 예를 들면 커넥터들은 차량마다 다를 수 있다.
모델 박스(234)는 다양한 SIMULINK® 모델, 애플리케이션 로직, 다양한 소프트웨어에 의해 구현된 기능들, 및 VCM 환경 내에서 실행되는 프로세스들을 사용하여 생성된 제어 소프트웨어를 나타낸다. 모델 박스(234)에 포함된 이들 소프트웨어 구성 요소들은 차량(10)의 동작을 제어하거나 그에 영향을 미치는 것과 관련된 명령들, 제어 지시들, 또는 출력을 발생시키기 위해 하나 이상의 차량 기능들과 관련된 입력을 수신하고, 상기 차량의 동작을 제어하거나 그에 영향을 미치는 것과 관련된 명령들, 제어 지시들, 또는 다른 출력들은 애플리케이션 층(230)의 라우팅 엔진(238)에 의해 수신된다. 제어 소프트웨어는 예를 들어 유압, 진단, 스로틀 제어, 캘리브레이션, 인터록(interlock), 트랙션(traction), 브레이크, 조향(steering), 배터리 방전 표시기, 및 일반적으로 SRO("static return to off")로 불리는 장애 기능(disablement features)과 같은 다양한 트럭 시스템들에 대한 제어를 제공한다.
VCM(200)은 다양한 차량 모델 구성에 사용되도록 설계되고, 다양한 트럭 시스템의 제어를 정의하는 제어 소프트웨어 또는 모델(234)은 포괄적, 즉 어떠한 차량에 대해서도 사용하는 데 동일하다. 이러한 것은 단지 하나의 VCM(200)만이 설계될 필요가 있기 때문에 유익하며, 이러한 것은 차량들의 일부 또는 전체 플릿(fleet) 또는 라인(line)에 걸쳐, 즉 주어진 차량 제조자에 의해 제조된 하나의 차량 모델 구성뿐 아니라 더 많은 차량 모델 구성들에 걸쳐 사용될 수 있다. 상이한 구성 요소 기능들과 관련된 하드웨어 층(246)의 입력/출력 하드웨어 구조로부터 수신된 입력/출력의 특징은 차량 모델마다 다를 수 있으며, 각각의 특정 차량, 즉 차량 모델과 연관된 구성 요소 입력/출력 특징의 차량들 간의 변화에 관계없이, 제어 소프트웨어(234)에 그리고 그로부터 정규화된 입력/출력을 제공하는 것이 유익하다.
애플리케이션 층(230)은 또한 하드웨어 층(246)의 입력/출력 하드웨어 구조로부터의 입력을 제어 소프트웨어(234)의 정확한 차량 기능 입력으로 라우팅하도록 동작하는 라우팅 엔진(238)과 도 3a 및 도 3b의 스위치보드 테이블들을 포함하는 스위치보드를 포함한다. 또한, 반대 방향으로, 라우팅 엔진(238) 및 스위치보드의 테이블들은 또한 제어 소프트웨어(234)로부터 하드웨어 층(246)의 적절한 입력/출력 하드웨어 구조로 제어 신호를 제공한다. VCM(200)은 차량의 조립시에 VCM(200)에 로딩되는 차량 특정 구성 파라미터 파일들로 동작할 수 있다. 예를 들어, 파라미터 파일들 또는 파라미터 데이터는 메모리 컴포넌트(202)의 영역으로 로딩될 수 있어, 파라미터 파일들은 애플리케이션 층(230)을 구성하는 하나 이상의 소프트웨어 구성 요소들(예를 들어, 232, 236, 234, 238)에 의해 액세스될 수 있다. 예를 들면 1) 일반(General), 2) 모듈(Module), 3) 모델(Model), 및 4) 트럭(Truck)을 포함하는 4 가지 주요한 카테고리들의 파라미터들이 있을 수 있다. 카테고리 1)의 파라미터들은 모든 차량 유형들에 공통일 수 있다. 카테고리 2)의 파라미터들은 동일한 VCM(200)이 설치된 모든 차량들에 공통일 수 있지만, 상기 파라미터들은 상이한 유형의 VCM(도시되지 않음)에 대해서는 다를 수 있다. 카테고리들 3)과 4)의 파라미터들은 특정 트럭 모델에 대해 고유하다. 카테고리 3)의 파라미터들은 모델과 관련되며 예를 들면 MATLAB 또는 SIMULINK 코드와 함께 사용될 수 있으며, 카테고리 4)의 파라미터들은 예를 들면 애플리케이션 층(230)의 다른 C 코드 또는 소프트웨어에 의해 사용될 수 있다. 트럭 카테고리(즉, 카테고리 4))로부터의 파라미터들의 하위 세트는 VCM(200)이 동작하고 있는 차량의 차량 하드웨어에 특정한 스위치보드 테이블들과 라우팅 엔진(238)을 포함하는 스위치보드에 대한 구성을 셋업하도록 구성될 수 있다.
VCM(200)이 설치되고 작동되는 재료 취급 차량의 특정 유형/모델에 관계없이, 상이한 유형의 차량들에 대해 VCM(200)의 공통의 기능적 양태들이 많이 있다. 예를 들어, 많은 상이한 유형의 차량들은 조향 휠(steered wheel)과 트랙션 휠(traction wheel)을 갖추고 있다. 또한, 각각의 상이한 호이스트 메커니즘의 특정 속성들이 상이할 수 있음에도 불구하고, 많은 차량들은 어떤 유형의 호이스트 메커니즘을 가질 수 있다. 따라서, 4 개의 상이한 카테고리들의 파라미터들이 VCM(200) 상에 다운로드되고 저장된 후에, 많은 상이한 유형들 또는 모델들의 차량들에 공통의 VCM(200)이 설치되어 작동될 수 있다. 이하에 설명되는 예들에서, VCM(200)의 설명은 VCM(200)이 2 개의 상이한 유형들의 차량들에 설치될 수 있다는 것을 나타낸다. 당업자는 VCM(200)이 본 발명의 범위를 벗어나지 않고서 2 개 이상의 상이한 유형들 또는 모델들의 차량들에 설치될 수 있음을 인식할 것이다.
VCM(200)이 작동되는 제 1 차량은 제 1 세트의 하드웨어 장치들을 가질 수 있으며, 이들은 VCM(200)에 대한 하드웨어 층을 정의하는 하드웨어 구조를 접속하거나 그 하드웨어 구조와 연관된다. 유사하거나 동일한 VCM(200)이 작동되는 제 2 차량은 제 2 세트의 하드웨어 장치들을 가질 수 있으며, 이들 중 하나 이상은 상기 제 1 세트의 하드웨어 장치들과는 상이하고, VCM(200)에 대한 하드웨어 층을 정의하는 하드웨어 구조를 접속하거나 그 하드웨어 구조와 연관된다. VCM(200) 상에 상위 세트의 하드웨어 구조, 즉 커넥터들이 있을 수 있으며, 이들 중 둘 이상은 상기 제 1 차량의 하드웨어 장치들과 접속하는 제 1 세트를 정의하고, 이들 중 둘 이상은 상기 제 2 차량의 하드웨어 장치들과 접속하는 제 2 세트를 정의한다. 상기 제 1 세트의 하드웨어 구조의 하나 이상의 요소들, 예를 들면 커넥터들은 상기 제 2 세트의 하드웨어 구조의 하나 이상의 요소들과 동일할 수 있다. 상기 제 1 세트의 하드웨어 구조의 하나 이상의 요소들, 예를 들면 커넥터들은 상기 제 2 세트의 하드웨어 구조의 멤버가 아닐 수 있으며, 그 역으로도 마찬가지다. 각각의 경우에서, 차량 하드웨어 장치들은 VCM(200)의 하드웨어 층을 정의하는 하드웨어 구조에 의해 수신되는 입력들을 발생시킨다.
도 2b를 참조하면, 각 차량에 대한 인터페이스 층(242), 드라이버 층(244), 및 하드웨어 층(246)은 입력 신호들을 취득하고 필터링하여 VCM(200)의 애플리케이션 층(230)에 제공하도록 작동한다. 상기 제 1 차량에 대한 제 1 세트의 하드웨어 장치들의 일부는 또한 상기 제 2 차량에 대한 제 2 세트에 있을 수 있다. 그러나, 상기 제 1 및 제 2 세트 중 하나에 또는 둘 모두에 고유한 하드웨어 장치들이 있을 수도 있다. 따라서, 상기 제 1 및 제 2 세트의 하드웨어 장치들을 함께 결합함으로써, 상기 제 1 및 제 2 세트와는 상이한 모든 하드웨어 장치를 포함하는 하드웨어 장치들의 상위 세트가 정의될 수 있다. 각각의 하드웨어 장치가 VCM(200)의 애플리케이션 층(230)에 대한 입력에 대응하도록 고려되기 때문에, VCM의 애플리케이션 층 입력들의 상위 세트도 또한 VCM(200)의 애플리케이션 층(230)이 차량 하드웨어 장치들의 제 1 및 제 2 세트들 모두로부터 수신할 수 있는 모든 가능한 입력들을 포함하는 것으로 정의된다. 이러한 입력들은 예를 들어 디지털 입력 값, 아날로그 입력 값, 네트워크 메시지 및 패킷(예를 들면, CAN 메시지, IP 패킷 등), 인코더 입력, 및 기타 입력(예를 들면, 4~20 ma 루프)을 포함할 수 있다.
VCM(200)의 정상 동작의 일부로서, 다양한 하드웨어 장치들 및 센서들이 폴링되거나 샘플링(polled or sampled)될 수 있고, 예를 들어, 네트워크 버스가 모니터링되어, 데이터가 추출될 수 있도록 수신된 메시지들이 큐잉(queued)될 수 있다. 하드웨어 장치로부터의 값은 VCM(200)의 하드웨어 층을 정의하는 하드웨어 구조에서 각자의 입력으로서 수신되고, VCM(200)의 애플리케이션 층(230)의 다양한 프로세스들에 의해 정의된 미리 결정된 변수들에 저장된다.
차량 하드웨어 장치로부터 VCM(200)에 의해 수신된 입력과는 별개로, 제 1 차량 VCM 상의 제어 소프트웨어(234)는 제 2 차량 VCM의 제어 소프트웨어(234)에 의해 수신되는 입력 및 디폴트 값과 다를 수 있는 입력 및 디폴트 값을 수신할 수 있다. 예를 들어, 제 1 차량은 트랙션 모터가 작동되기 전에 조작자가 좌석에 있어야할 것을 요구하는 특징을 가질 수 있다. 제 2 차량도 또한 조작자가 좌석에 있어야할 것을 요구할 수 있지만, 또한 트랙션 모터가 작동되기 전에 배터리 격실 문이 닫히도록 요구할 수도 있다. 두 예들 모두에서, 설명된 실시예에서의 제어 소프트웨어(234)는 트랙션 모터의 작동을 제어하지만, 제 1 예에서는 차량 하드웨어 장치로부터의 단지 하나의 실제 입력 값과 (차량 하드웨어 장치로부터의 것이 아닌) 하나의 디폴트 값이 이용되며, 제 2 예에서는 차량 하드웨어 장치들로부터의 2 개의 실제 입력 값들이 이용된다. 제어 소프트웨어(234)에 의해 수신된 이러한 실제 및 디폴트 "입력" 또는 입력 값은 "차량 기능 입력"이라고 할 수 있으며, 제어 소프트웨어가 수신하여 그 기능들을 수행하기 위해 이용할 수 있는 광범위한 입력 값들을 포함한다. VCM(200)의 제어 소프트웨어(234)는 설명된 실시예에서 VCM(200) 내에서 제 1 차량 및 제 2 차량 모두에 대해 실질적으로 동일하기 때문에, 제 1 및 제 2 차량들의 2 개의 VCM들에 의해 수신된 하나 이상의 입력들이 상이할 수 있다고 하더라도, 제 1 차량 및 제 2 차량 모두에 대해 적절하게 사용되는 차량 기능 입력들의 조합이 있게 된다. 각자의 차량 기능 입력들의 값들은 VCM(200)의 애플리케이션 층(230)의 다양한 프로세스들에 의해 정의된 미리 결정된 변수들에 저장된다.
VCM(200)이 제 1 차량에든 제 2 차량에든 어느 한 쪽에 설치되고 작동될 수 있기 때문에, VCM이 작동되는 차량에 실제로 포함되지 않는 하나 이상의 하드웨어 장치들에 대응하는 하나 이상의 VCM 입력 변수들이 있을 수 있다. 유사하게, 차량 하드웨어 장치들에 의해 제공되지 않거나 또는 VCM이 작동되는 차량에 의해 이용되는 실제 입력 값들에 대응하는 하나 이상의 차량 기능 입력 변수들이 또한 있을 수 있다. 따라서, 본 발명의 실시예들은 특정 차량의 하나 이상의 하드웨어 장치들에 의해 제공되는 하드웨어 층(246)의 하드웨어 구조에 의해 수신된 VCM 입력 또는 VCM 입력 값을 제어 소프트웨어(234)에 의해 또한 이용되는 특정 차량 기능 입력에 라우팅하는 방법을 제공한다.
도 3a는 VCM 입력을 본 발명의 원리에 따라 차량 기능 입력 요소들에 대응하는 메모리 위치들로 라우팅하는 라우팅 엔진(238)에 의해 사용되는 스위치보드 테이블들의 블록 레벨도를 도시한다. "소스 테이블"(302)은, 제 1 차량 및 제 2 차량에 의해 제공될 수 있는 VCM 애플리케이션 층 입력들 또는 입력 값들의 상위 세트 각각에 대한 요소를 포함하는 VCM(200)에 의해 구성되거나 제공된다. 소스 테이블(302)의 요소들 각각은 후술되는 바와 같이 메모리 어드레스가 될 수 있으며, 따라서 본 명세서에서 모듈 입력 테이블이라고도 하는 소스 테이블(302)은 모듈 입력 또는 입력 요소들의 상위 세트를 포함한다. 설명된 예에서 소스 테이블(302)은 제 1 및 제 2 차량들에 대해 제공된 VCM들에서 동일하거나 실질적으로 동일하다. 전술한 바와 같이, VCM(200)의 정상 동작의 일부로서, VCM 입력들 또는 VCM 입력 값들 각각은 메모리 컴포넌트(202) 또는 데이터 저장 컴포넌트(222)(도 2a 참조)의 미리 결정된 변수 또는 메모리 위치에 저장된다. 따라서, 소스 테이블(302)의 각 요소는 이들 변수들 또는 메모리 위치들 중 각자의 하나에 대응하며, 상기 요소는 그 대응하는 변수 또는 메모리 위치의 메모리 내의 어드레스가 될 수 있다.
차량 기능 입력 테이블(310)이 도 3a에 도시되어 있고, VCM(200)의 제어 소프트웨어(234)에 의해 잠재적으로 이용될 수 있는 차량 기능 입력들 각각에 대한 요소를 갖는다. 전술한 바와 같이, 차량 기능 입력들 각각은 미리 결정된 제어 소프트웨어 변수 또는 메모리 위치와 연관되며 그 미리 결정된 변수에 저장된다. 따라서, 차량 기능 입력 테이블(310)의 각 요소는 이들 제어 소프트웨어 변수들 또는 메모리 위치들 중 각자의 하나에 대응하고, 상기 요소의 값은 그 대응하는 변수의 메모리 내의 어드레스가 될 수 있다.
소스 테이블(302) 및 차량 기능 입력 테이블(310)은 제 1 차량 및 제 2 차량 모두에서 동일하게 될 수 있고 바람직하게는 동일하다. 그러나, 제 1 차량 및 제 2 차량 각각에 대해 상이할 수 있으며 애플리케이션 층(230)의 인프라스트럭처 박스(232)와 제어 소프트웨어(234) 사이에 인터페이스(236)(도 2b 참조)를 정의하는 라우팅 테이블(306)이 존재한다. 상기 라우팅 테이블(306)은 라우팅 엔진(238)이 VCM(200)이 작동하고 있는 차량에 적합한 VCM 입력으로 각각의 활용된 차량 기능 입력을 스위치보드와 유사하게 라우팅 또는 접속할 수 있게 하도록 경로들을 정의한다.
모듈 입력 구성 테이블(304)은 또한 소스 테이블(302)의 각 요소에 대응하는 요소를 갖는 VCM(200)에 의해 제공될 수 있다. 모듈 입력 구성 테이블(304)의 요소는, 대응하는 소스 테이블 요소와 연관된 VCM 입력 값을 제어 소프트웨어(234)가 이용할 수 있는 값으로 어떻게 변환하는지에 관한 데이터를 포함한다. 후술되는 바와 같이, VCM 입력 값은, 예를 들어, 제어 소프트웨어(234)가 이용하도록 설계된 다른 데이터 형식으로서 스케일링, 비트-시프트, 비트-마스크, 오프셋 또는 재구성(recast)될 수 있다.
제어 소프트웨어(234)에 의해 사용되기 위해 차량 기능 입력 변수에 저장되기 전에, 값의 추가 변환을 가능하게 하는 별도의 기능 입력 구성 테이블(308)이 또한 포함될 수 있다. 기능 입력 구성 테이블(308)은 차량 기능 입력 테이블(310)의 각 요소에 대응하는 각자의 요소를 포함할 수 있다.
예시적인 소스 테이블(302)이 하기 테이블 1과 같이 제공된다:
이 예에서, VCM(200)의 하드웨어 층을 정의하는 하드웨어 구조에서 수신된 37 개의 상이한 VCM 입력들 또는 VCM 입력 값들에 대응하는 요소(element)들이 존재한다. 요소 #0은 일반적인 낮은 값의 신호(예를 들면, "0")를 정의하는 변수 "ulAG_Low"를 참조하고, 요소 #1은 일반적인 높은 값의 신호(예를 들면, "1")를 정의하는 변수 "ulAG_High"를 참조한다. 다음의 몇몇 요소들은 VCM(200)이 작동하고 있는 차량에 제공될 수 있는 다양한 스위치들의 값들을 저장하는 변수들을 지칭한다. 이들 요소들은 VCM(200)이 작동하고 있는 차량에 제공되지 않는 다양한 스위치들을 또한 지칭할 수도 있다. 요소 #35는 인코더 "counts" 입력에 대응하는 변수를 참조하고 요소들 #10 및 #11은 CAN 버스를 통해 전송된 값들을 저장하는 변수들을 참조한다. 요소들 #16~#23은 동일한 변수를 참조할 수 있으며, 하기에 설명되는 바와 같이 추가로 조정될 수 있다. 따라서, 테이블 1의 요소들은 차량 하드웨어 장치 디지털 입력, 차량 하드웨어 장치 아날로그 입력, 차량 하드웨어 장치 인코더 입력, 네트워크 메시지, 및 다른 유형들의 입력을 저장하는 변수들 또는 메모리 위치들에 대응할 수 있다. 테이블 1의 내용에서 알 수 있듯이, 각각의 요소 앞에는 "&" 기호가 있으며, 이는 상기 요소가 "&" 기호 다음의 변수 이름의 어드레스에 대응한다는 것을 나타낸다.
따라서, 라우팅 엔진(238)과 같은 소프트웨어 프로세스는 테이블 1로부터 요소의 값(즉, 어드레스)을 판독할 수 있고, 그 어드레스에서의 변수 또는 메모리 위치의 실제 값 또는 저장된 입력(즉, 그 값은 차량 하드웨어 장치로부터 비롯될 수 있음)을 검색하기 위한 포인터로서 사용할 수 있다.
예시적인 차량 기능 입력 테이블(310)이 하기에 테이블 2와 같이 제공된다:
이 예에서, VCM의 제어 소프트웨어(234)에 의해 이용될 수 있는 25 개의 상이한 차량 기능 입력들에 대응하는 25 개의 요소들이 존재한다. 요소들 #0~#2는 예를 들어 3 개의 상이한 브레이크 스위치들과 관련된 값을 저장하는 변수들을 지칭한다. 요소들 #10 및 #11은 예를 들어 조작자로부터 수신된 조향 명령을 참조하는 값들을 저장하는 변수들을 지칭하고, 요소들 #12 내지 #15는 조작자로부터 수신된 트랙션 명령들과 관련된 값들을 저장하는 변수들을 참조한다. 일반적으로, 테이블 2의 요소들은 VCM(200)이 작동하고 있는 차량에 대한 제어 소프트웨어(234)에 의해 이용될 수 있는 값들을 저장하는 변수들 또는 메모리 위치들을 지칭한다.
제 1 차량이든 또는 제 2 차량이든 어느 하나에 대한 구성 테이블(304)의 예가 하기 테이블 3과 같이 제공된다:
이 예에서, 소스 테이블(302)의 각자의 요소에 각각 대응하는 37 개의 요소들이 존재한다. 전술한 바와 같이, 소스 테이블(302) 내의 요소의 어드레스에 의해 지시된 변수 또는 메모리 위치의 저장된 입력 값은 제어 소프트웨어(234)에 의해 예상되는 특성들을 갖도록 변환될 수 있다. 따라서, 소스 테이블(302)의 요소 #17은 변수 또는 메모리 위치 "USR_s_OV.ubX10DigIn1"에 대한 어드레스를 보유하고, 상기 어드레스 위치에 저장된 값은 테이블 3으로부터 대응하는 요소(즉, #17)를 이용하여 변환될 수 있다:
{ AG_UINT8, AG_RIGHT, 0x02u, 1u, AG_SF_ARRAY_00 }
상기 변환 데이터는 단지 예시로서 제공되며, 당업자는 본 발명의 범위를 벗어나지 않으면서 다수의 상이한 또는 추가적인 데이터 변환들이 구현될 수 있다는 것을 인식할 것이다. 상이한 양의 비트 시프팅(bit shifting)이 수행될 수 있고, 다양한 비트마스크들이 적용될 수 있다. 상이한 스케일의 팩터들이 상이한 유형들의 차량들에서 상이한 하드웨어 구성들을 설명하도록 고려되며, 변수들의 데이터 형식은 부호 없이(unsigned), 부호를 두고(signed), 길게(long), 부동적으로(floating), 불 방식(Boolean), 정수 등을 포함할 수 있다.
위의 예에서, 요소 #17("AG_UINT8")은 USR_s_OV.ubX10DigIn1의 값이 부호 없는 8 비트 정수 유형인 것을 나타내고, 이러한 변수 형식은 별도의 기능 입력 구성 테이블로부터의 요소를 사용하여 하기에 설명된 대로 재구성할 수 있다. "0x02u" 부분은 "0000 0010"의 비트 마스크가 적용되어야 함을 나타내고, "AG_RIGHT" 및 "1u" 부분들은 상기 값이 오른쪽으로 및 "1" 비트만큼 비트 시프트된다는 것을 각각 나타낸다. 마지막 부분인 "AG_SF_ARRAY_00"은 다른 스케일링 팩터들을 저장하는 배열의 인덱스가 될 수 있다. 예를 들어, AG_SF_ARRAY_00~AG_SF_ARRAY_03으로 인덱싱될 수 있는 배열로 저장되는 데 일상적으로 사용되는 4 개의 상이한 스케일링 팩터들이 존재할 수 있다. 구성 테이블 요소는 해당 배열로부터 적절한 스케일링 팩터들을 판독하는 데 어느 인덱스를 사용할지를 식별한다. 각각의 스케일링 팩터는 예를 들어 변수의 값에 부가되는 오프셋 양과 상기 변수의 값에 곱해지는 이득의 양을 모두 포함할 수 있다. 0.0의 오프셋과 1.0의 이득은 변수의 값을 변경하지 않은 채로 유지한다.
제 1 차량 유형에 대한 하나의 예시적인 라우팅 테이블(306)이 하기 테이블 4A와 같이 제공된다:
제 2 차량에 대한 또 다른 예시적인 라우팅 테이블(306)의 예가 하기 테이블 4B와 같이 제공된다:
라우팅 테이블들 각각은 차량 기능 입력 테이블(310)의 각자의 요소에 대응하는 각각의 엔트리를 갖는 25 개의 엔트리들을 갖는다. 라우팅 엔진(238)은 VCM(200) 상에서 실행하는 상이한 프로세스들에 의해 이용될 수 있고, 따라서 상기 예들에서 각각의 라우팅 테이블 엔트리는 두 부분들을 포함한다. 제 1 부분 "PROCESS_SYS_MODEL"은 단지 예로서 제공되며 본 발명의 범위를 벗어나지 않고서 생략될 수 있다. 이러한 제 1 부분은 라우팅 테이블의 이러한 특정 엔트리가 이용되는 상기 프로세스의 이름을 식별하다. 실례로, 다른 프로세스(예를 들어, "PROCESS_ANALOG")가 이용 가능한 아날로그 입력들 모두를 트래버스(traverse)하고 이들 입력들로부터 현재의 값들을 획득하기 위해 라우팅 엔진(238)에 의해 이용될 라우팅 테이블의 자체 부분 또는 엔트리를 가질 수 있다.
엔트리의 제 2 부분, 예를 들어 테이블 4B에서 엔트리 #14("AG_IN_X10_ANALOG3")는 차량 기능 입력 테이블(310)의 엔트리 #14에 대응하는 메모리 위치로 라우팅하도록 하드웨어 층(246)의 하드웨어 구조에 의해 수신된 VCM 입력들 중 하나를 식별한다. 이하에서 설명될 바와 같이, 도 4와 관련하여, 테이블 3, 테이블 4A, 테이블 4B, 및 테이블 5의 엔트리들 간의 차이들은 VCM(200)이 작동하는 상이한 유형들의 차량들에 대한 인터페이스(236)의 주문형(customization)을 가능하게 한다. 이러한 라우팅 및 구성 테이블들은 상이한 하드웨어 장치들을 갖는 상이한 유형들의 차량들에 동일한 VCM 입력 테이블(302) 및 동일한 차량 기능 입력 테이블(310)이 사용될 수 있게 한다. 도 4는 본 발명의 원리에 따라 VCM 입력을 차량 기능 입력으로 라우팅하기 위한 예시적인 방법의 흐름도를 도시한다. 본 명세서에 설명된 예시적인 실시예에서, 예시적인 모듈 입력 구성 테이블(304) 및 예시적인 기능 입력 구성 테이블(308)이 제 1 및 제 2 차량들 모두에 사용된다. 그러나, 테이블들(304 및 308) 중 하나 또는 모두는 다른 실시예들에서 상이한 차량들에 대해 커스터마이징될 수 있다.
라우팅 테이블(306), 기능 입력 구성 테이블(308), 및 차량 기능 입력 테이블(310)은 동일한 수의 엔트리들을 갖고, 라우팅 테이블(306)의 엔트리 #x는 기능 입력 구성 테이블(308)의 의 요소 #x 및 차량 기능 입력 테이블(310)의 요소 #x에 대응하거나 또는 이들과 연관된다. 소스 테이블(302) 및 모듈 입력 구성 테이블(304)은 라우팅 테이블(306)의 엔트리들의 수와 다를 수 있는 동일한 수의 요소들을 갖는다. 소스 테이블(302)의 요소 #y는 구성 테이블(304)의 요소 #y에 대응하거나 또는 이와 연관된다.
라우팅 테이블(306)로부터의 엔트리들이 VCM 입력 값을 차량 기능 입력 요소에 대응하는 메모리 위치로 라우팅하는 데 사용될 수 있는 한 예시적인 방법은 소스 테이블(302) 및 모듈 입력 구성 테이블(304)에 열거된 인덱스를 생성하는 것이다. 예를 들어, VCM 입력 테이블(즉, 소스 테이블(302))이 "Module_Input []" 배열로 고려되면, 특정 요소는 "Module_Input [i]"에 의해 참조될 수 있다. 인덱스 "i"가 아래에 나타낸 목록에 의해 정의된 열거된 유형이라면, 열거된 값들 중 하나(예를 들어, AG_IN_SCM_MOTOR_CURRENT, 또는 AG_IN_BATT_AMP_HOURS 등)와 같도록 "i"를 할당함으로써, 37 개의 가능한 VCM 입력들 중 하나를 참조하는 인덱스 값이 생성된다.
예를 들어, AG_IN_SCM_MOTOR_CURRENT가 열거된 값으로서 제공되면, 소스 테이블(302)의 요소를 참조하는 데 사용되도록 생성된 인덱스 값 또는 번호는 #27이 될 것이다. 다른 예로서, AG_IN_BATT_AMP_HOURS가 열거된 값으로서 제공되면, 소스 테이블(302)의 요소를 참조하는 데 사용되도록 생성된 인덱스 값 또는 번호는 #36이 될 것이다. 라우팅 테이블 4A 또는 테이블 4B에서 엔트리들 각각은 상기한 테이블에 열거된 37 개의 값들 중 하나를 참조한다.
전술한 바와 같이,도 4는 본 발명의 원리에 따라 차량 기능 입력 요소들에 대응하는 메모리 위치들로 VCM 입력들을 라우팅하기 위한 예시적인 방법의 흐름도를 도시한다. 당업자는 도 4의 흐름도의 단계들이 아래에 기술된 특정 순서로 수행되지 않아도 된다는 것을 인식할 것이다. 라우팅 기능이 여러 가지 다른 방식들로 제공될 수 있도록 일부 단계들은 다른 것과 동시에 수행될 수 있다. 라우팅 엔진(238)은 전체의 라우팅 테이블(306)을 트래버스할 수 있도록 주기적으로 실행되고, 다시 한번 호출되어 실행될 때까지 대기한다. 전체의 라우팅 테이블(306)을 트래버스하는 데 있어서, 라우팅 엔진은 프로세스(예를 들어, "PROCESS_SYS_MODEL" 또는 "PROCESS_ANALOG")로 태그된 엔트리들의 라우팅을 수행할 것이고, 상이한 태그를 갖는 엔트리들을 스킵할 것이다. 라우팅 엔진은 라우팅 테이블(306)의 제 1 엔트리를 판독함으로써 단계(402)에서 시작하고, 상기 엔트리에 기초하여, 단계(404)에서 소스 테이블(302) 내의 대응하는 요소를 결정한다.
제 1 차량의 라우팅 테이블 4A가 사용되면, 라우팅 엔진(238)은 라우팅 테이블 엔트리 #0이 "AG_IN_SWITCH4"를 식별하고, 열거된 인덱스, 즉 모듈 입력들의 인덱스에 기초하여, 이것이 "Index of the Module Inputs" 리스트에서의 인덱스 값 #5 및 변수 "&gSwitch[SDI_SW_DRV4].Control.rSwitchDriverOutput"에 해당하는 소스 테이블(302)에서의 요소 #5에 대응하는지를 결정한다. 단계(406)에서, 라우팅 테이블 엔트리에 기초하여, 라우팅 엔진은 모듈 입력 구성 테이블(304)의 대응하는 요소를 결정할 수 있으며, 본 경우에 요소 #5는: { AG_FLOAT32, AG_NO_BIT_MAN, 0u, 0u, AG_SF_ARRAY_00 }이 된다. 단계(408)에서, 라우팅 엔진은 차량 기능 입력 테이블(310)로부터 대응하는 요소를 결정한다. 라우팅 테이블(306)과 차량 기능 입력 테이블(310)은 일대일 대응이다. 따라서, 라우팅 테이블의 엔트리 #0은 차량 기능 입력 테이블(310)의 요소 #0에 대응하고, &gOp_int_inputs.ulBrs1로서 식별된다. 라우팅 테이블의 엔트리 #1은 차량 기능 입력 테이블(310)의 요소 #1에 대응하고, 이러한 일대일 대응은 라우팅 테이블 및 차량 기능 입력 테이블(310)의 모든 나머지 엔트리들 및 요소들에서 계속된다. 단계(410)에서, 라우팅 엔진은 대응하는 소스 테이블 요소로서 본 예에서는 소스 테이블 요소 #5로부터의 어드레스에 의해 지시된 변수의 VCM 값을 검색하고(즉, 이 값은 차량 하드웨어 장치로부터 비롯됐을 수 있음), 단계(412)에서 대응하는 모듈 입력 구성 테이블 요소로서 본 예에서는 모듈 입력 구성 테이블 요소 #5에 따라 이를 변환한다.
예시적인 테이블 5와 관련하여 하기에 설명되는 바와 같이, 기능 입력 구성 테이블(308)은 모듈 입력 구성 테이블 요소를 적용한 결과로 생성된 변환 값을 더 세분화하는 데 사용될 수 있다. 라우팅 테이블의 엔트리 #0은 기능 입력 구성 테이블(308)의 요소 #0에 대응하고, 이 일대일 대응은 라우팅 테이블 및 기능 입력 구성 테이블(308)의 모든 나머지 엔트리들 및 요소들로 계속된다. 따라서, 모듈 입력 구성 테이블(304)의 요소 #5를 적용한 결과로 생성된 변환 값은 단계(412)에서 기능 입력 구성 테이블(308)로부터의 요소 #0을 적용함으로써 더 변환된다. 하기의 테이블 5의 예를 사용하면 요소 #0은: { AG_UINT32, AG_NO_BIT_MAN, 0u, 0u, AG_SF_ARRAY_00}이 되고, 여기에서 첫 번째 부분 "AG_UINT32"는 변수 gOp_int_inputs.ulBrs1의 변수 형식을 나타낸다(그 어드레스는 차량 기능 입력 테이블인 테이블 2의 요소 #0가 된다).
결과적으로, 초기의 변환 값은 더 변환되고, 즉 그 원래의 변수 형식인 "32-비트 플로팅"으로부터 "32-비트 부호 없는 정수" 형식으로 재구성된다. 상기 변환 값은 단계(414)에서 차량 기능 입력 테이블로부터의 대응하는 요소와 연결될 수 있다. 특히, 상기 변환 값은 차량 기능 입력 테이블의 요소 #0으로부터의 어드레스에 의해 지시된 메모리 위치에 저장될 수 있다.
VCM(200)이 제 2 차량에서 작동한다면, 라우팅 테이블 4B이 사용되었을 것이다. 이 경우, 라우팅 테이블의 엔트리 #0은 "Index of the Module Inputs" 리스트에서 열거된 인덱스 값 #16에 대응하는 "AG_IN_X10_DIGIN1"을 식별하다. 따라서, 이 예에서는, 소스 테이블의 요소 #16에 저장된 값, &USR_s_OV.ubX10DigIn1이 검색되고, 모듈 입력 구성 테이블(304)로부터의 요소 #16 { AG_UINT8, AG_RIGHT, 0x01u, 0u, AG_SF_ARRAY_00 }를 사용하여 변환되었을 것이다. 이러한 초기 변환 값은 또한 차량 기능 구성 테이블(예를 들어, 하기의 테이블 5 참조)의 요소 #0에 따라 더 변환되어, 상기 초기 변환 값이 "8-비트 부호 없는 정수"의 변수 형식으로부터의 값을 "32-비트 부호 없는 정수" 형식의 변수로 재구성함으로써 더 변환된다.이러한 변환 값은, 라우팅 엔진에 의해, 차량 기능 입력 테이블의 요소 #0으로부터의 어드레스에 의해 지시된 메모리 위치에 저장될 것이다. 따라서, 동일한 차량 기능 입력, 예를 들어, gOp_int_inputs.ulBrs1은 VCM(200)이 작동하고 있던 차량에 따라 다른 VCM 입력으로 라우팅되어 수신되었을 것이다. 다시 말해서, 라우팅 테이블 엔트리들과 연관된 VCM 입력들 중 일부는 제 1 차량이나 제 2 차량에 고유할 수 있다.
단계(416)에서, 라우팅 엔진은 호출 프로세스(예를 들어, PROCESS_SYS_MODELS)와 일치하는 처리할 라우팅 테이블 엔트리들이 더 있는지 여부를 결정한다. 그렇다면, 라우팅 엔진은 단계(418)에서 대기할 수 있을 때까지 25 개의 라우팅 테이블 엔트리들 각각에 대해 상기 단계들을 순차적으로 반복한다.
테이블 4A 및 테이블 4B에서 알 수 있듯이, (엔트리들 중에서도 특히) 엔트리 #8, #9 및 #24에 대한 라우팅 테이블 엔트리들은 동일하다. 따라서, 이러한 엔트리들은 제 1 및 제 2 번째 차량 모두에 대해 동일한 VCM 입력들, 즉 양쪽 유형들의 차량들에 공통인 VCM 입력들에 대응한다.
테이블 4A에서, 엔트리 #3은 "AG_IN_NOT_USED_HIGH"를 참조한다. 이러한 엔트리는, 이러한 특정 차량에서 대응하는 차량 기능 입력: gOp_int_inputs.ulFps1과 관련된 값을 생성하는 제공된 하드웨어가 없으며, "디폴트" 값이 차량 기능 입력에 대해 제공되어, 잘 정의된 값을 가질 것이라는 것을 나타낸다. 라우팅 엔진은 (열거된 인덱스로부터) AG_NOT_USED_HIGH가 엔트리 #1에 대응하고 따라서 &ulAG_High에 저장된 값을 검색하는 것을 결정할 수 있다. 이 값은 모듈 입력 구성 테이블(304)로부터의 요소 #1을 사용하여 변환될 수 있고, 기능 입력 구성 테이블(308)의 요소 #3을 사용하여 더 변환될 수 있으며, 그 변환 값은 &gOp_int_inputs.ulFps1에 의해 지시된 메모리 위치에 저장될 수 있다. 테이블 4B에서, 엔트리 #15는 유사한 엔트리이고, "AG_NOT_USED_LOW"를 참조한다. 이 엔트리는 &gThrottleIn.Throttle_input_traction1.ulStart에 의해 지시된 메모리 위치에 저장된 변환 값이 된다. HIGH 값 또는 LOW 값이 적절한 지의 여부는 해당 차량 기능 입력을 이용할 수 있는 프로세스들의 로직에 의존한다. 예를 들어, 차량 기능 입력이 차량이 작동하기 위해 모두 HIGH가 되어야하는 다수의 스위치들 중 하나를 참조한다면, 해당 스위치에 대한 차량 하드웨어 장치로부터의 실제 VCM 입력을 갖지 않는 차량은 그 차량 기능 입력을 "AG_NOT_USED_HIGH"와 연관시킬 것이다. 반대로, 스위치들 중 어느 하나가 HIGH 이었는지의 로직이 구성되었다면, 차량은 디스에이블될 것이고, 이어서 이들 스위치들 중 하나에 대한 차량 하드웨어 장치로부터의 실제 VCM 입력을 갖지 않는 차량은 차량 기능 입력을 "AG_NOT_USED_LOW"와 연관시킬 것이다.
기능 입력 구성 테이블(308)의 예가 하기에 테이블 5와 같이 제공된다. 전술한 바와 같이, 이 테이블에 대한 사용의 한 예는 각 요소의 가장 왼쪽 부분을 사용하여, 차량 기능 입력 테이블(310)에 지시된 어드레스의 값을 저장하기 전에 변수 값의 데이터 형식을 선정(cast)하는 것을 돕는 것이다. 따라서, 기능 입력 구성 테이블(308)과 차량 기능 입력 테이블(310)의 요소들 간의 일대일 대응 및 기능 입력 구성 테이블(308)의 요소들과 라우팅 테이블들(306)의 엔트리들 간의 일대일 대응이 존재한다.
기능 입력 구성 테이블(308)의 각 요소의 가장 왼쪽 부분 이외의 부분들(바로 아래의 테이블 5 참조)은 또한 전술한 바와 같이 모듈 입력 구성 테이블(304)로부터 대응하는 엔트리를 사용하여 초기에 변환됐던 값을 추가로 변환하는데 사용될 수 있다. 예를 들어, 2 개의 구성 테이블들(즉, 모듈 입력 구성 테이블인 테이블 3 및 기능 입력 구성 테이블인 테이블 5)의 요소들의 구조는 유사할 수 있어, 초기 변환 값의 추가 변환은 스케일링, 오프셋의 부가, 비트 마스크를 적용, 비트 시프팅, 또는 전혀 변경하지 않는 것을 포함할 수 있다. 예를 들어, 테이블 5의 요소 #22는 대응하는 초기 변환 값이 특정 쌍의 오프셋 및 스케일링 팩터를 사용하여 더 변환되어야 함을 나타내는 "AG_SF_4_20MA_INPUT" 부분을 포함한다.
VCM(200) 상에서 실행되는 애플리케이션 또는 제어 소프트웨어(234)는 입력들을 이용할 뿐만 아니라, VCM 출력 메모리 위치들로 라우팅될 수 있는 출력들을 생성하며, 그 VCM 출력 값들은 하드웨어 층(246)의 하드웨어 구조에 제공되어 차량 하드웨어 장치들(예를 들어, 혼(horn))을 제어하거나 차량의 트랙션 제어 모듈 또는 조향 제어 모듈과 같은 다른 모듈들에 설정들(settings)을 제공한다. 라우팅 입력들과 관련하여 전술한 바와 유사하게, 제어 소프트웨어(234)로부터의 차량 기능 출력 값들은 대응하는 VCM 출력 변수들 또는 메모리 위치들로 라우팅될 수 있다. VCM 출력 값들은 예를 들어 차량 하드웨어 장치 디지털 출력, 차량 하드웨어 장치 아날로그 출력, 네트워크 포맷 메시지, 및 차량의 다른 모듈들과 인터페이스하는 출력 드라이버와 관련할 수 있다. 도 3b는 본 발명의 원리에 따라 제어 소프트웨어(234)로부터의 차량 기능 출력들을 VCM 출력 메모리 위치들로 라우팅하기 위해 라우팅 엔진(238)에 의해 사용되는 라우팅 테이블(324)을 포함하는 스위치보드 테이블들의 블록 레벨도를 도시한다.
예시적인 차량 기능 출력 테이블(320)이 하기에 테이블 6과 같이 제공되며, 제어 소프트웨어(234)로부터의 10 개의 상이한 차량 기능 출력 변수들 각각에 대한 각자의 요소 또는 어드레스를 포함한다:
특히, 각각의 요소는 제어 소프트웨어(234)에 의해 제공된 10 개의 미리 결정된 출력 값들 중 하나를 저장하는 변수 또는 메모리 위치에 어드레스를 저장한다. 상기 10 개의 값들은 제 1 및 제 2 양쪽 차량들에 의해 모두가 제공되지 않을 수도 있다. 출력 값들 중 일부는 양쪽 차량들에 의해 제공될 수 있지만, 출력 값들 중 일부는 제 1 또는 제 2 차량들 중 오직 하나에만 고유할 수 있다.
차량 기능 출력 테이블(320)의 10 개의 상이한 차량 기능 출력 변수들 각각에 대한 각자의 요소를 포함하는 예시적인 차량 기능 출력 구성 테이블(322)이 테이블 7과 같이 하기에 제공된다.
기능 출력 구성 테이블(322)은 차량 기능 출력 테이블(320)과 동일한 수의 요소들을 가지며, 기능 출력 구성 테이블(322)의 각 요소는 차량 기능 출력 테이블(320)에서 동일하게 번호가 매겨진 요소와 일대일 대응을 갖는다. 기능 출력 구성 테이블(322)의 각 요소는 기능 입력 구성 테이블(308)과 관련하여 전술한 기술과 유사하게 값을 스케일링하고, 오프셋을 부가하고, 비트 마스크를 적용하고, 상기 값들을 좌측 또는 우측으로 비트 시프트하는 것과 관련된 부분들을 포함할 수 있다. 따라서, 기능 출력 구성 테이블(322)로부터의 요소는 차량 기능 출력 테이블(320)의 대응하는 요소의 메모리 어드레스로부터 검색된 값의 제 1 변환을 달성하는 데 사용될 수 있다. 또한, 기능 출력 구성 테이블(322)로부터의 각 요소의 제 1 부분은 차량 기능 출력 테이블(320)의 대응하는 요소에서 어드레스와 연관된 변수 형식을 식별할 수 있으며, 상기 요소의 다른 부분들은 검색된 값의 변환이 일어나지 않을 것임을 나타낼 수 있다. 예를 들면, 기능 출력 구성 테이블(322)의 요소 #2는 변수 gTraction_output.rBrake2Cmd(그 어드레스는 차량 기능 출력 테이블의 요소 #2에 저장된다)가 AG_FLOAT32 형식의 변수이고, 이 요소의 다른 부분들은 상기 변수 값을 변경하지 않는다는 것을 나타낸다. 따라서, 일부 경우들에 있어서, 대응하는 차량 기능 출력 요소와 연관된 값이 반드시 초기에 변경될 필요는 없다. 이러한 경우들에서, 기능 출력 구성 테이블에 대응하는 요소가 있을 수 있지만, 이러한 요소는 어떤 식으로든 상기 대응하는 값을 수정하지 않으므로 상기 값과 상기 초기 변환 값은 실제로 동일하다.
예시적인 모듈 출력 구성 테이블(326)이 하기에 테이블 8로서 제공되며, 26 개의 상이한 VCM 출력 변수들 또는 메모리 위치들 각각에 대응하는 각자의 요소를 갖는다.
모듈 출력 구성 테이블의 각 요소는 VCM 또는 모듈 출력 또는 목적지 테이블(328)의, 하기의 테이블 9에 있는, VCM 출력 어드레스 요소들의 각자의 것에 대응한다. 모듈 출력 구성 테이블(326) 내의 요소는, 그 변환 값이 VCM 출력 테이블(328)로부터의 대응하는 요소의 어드레스에 의해 지시된 메모리 위치에 저장되기 전에, 차량 기능 출력 테이블(320) 내의 어드레스에 의해 지시된 메모리 위치로부터 검색된 연관된 차량 기능 출력 값을 어떻게 변환하는지에 관한 데이터를 제공한다. 이러한 값의 변환은 검색된 값을 변환하는 것이 될 수 있다. 즉, 상기 검색된 값이 이전에 변환되지 않았거나, 또는 전술한 바와 같이 기능 출력 구성 테이블(322)의 요소를 사용하여 처음 변환되었던 이전 변환 값이 될 수 있다. 앞서 기술된 입력 구성 테이블과 유사하게, 변환들은 변수 형식 변경, 값 스케일링, 오프셋 부가, 비트 마스크 적용, 및 상기 값들을 왼쪽 또는 오른쪽으로 비트 시프팅하는 것을 포함할 수 있다. 예시적인 VCM 출력 테이블(328)은 하기에 테이블 9로서 제공된다:
상기 예에서, 26 개의 요소들이 존재하며, 이들 각각은 VCM(200)으로부터 예를 들어 차량 하드웨어 장치로 출력될 값을 저장하는 미리 결정된 변수에 대응하는 어드레스를 저장한다. 26 개의 요소들은 제 1 차량에 제공된 VCM 출력들 또는 출력 값들에 대응하는 제 1 세트의 요소들 및 제 2 차량에 제공되는 VCM 출력들 또는 출력 값들에 대응하는 제 2 세트의 요소들을 포함하는 상위 세트를 포함한다. 각각의 차량에 사용할 수 있는 상기 출력들 또는 출력 값들은 해당 차량에 의해 제공되는 하드웨어 장치들에 부분적으로 의존하다. 상기 상위 세트를 구성하는 상기 두 세트의 요소들은 두 차량들에 공통인 VCM 출력 값들에 대응하는 공통 요소들과, 상기 제 1 차량 및 상기 제 2 차량 중 하나에 고유한 VCM 출력 값들에 대응하는 하나 이상의 요소들을 가질 수 있다. VCM 출력 테이블(328)의 요소들 각각은 메모리 어드레스가 될 수 있고, 따라서 본 명세서에서 모듈 출력 테이블로 지칭되는 VCM 출력 테이블(328)은 모듈 출력 요소들의 상위 세트를 포함한다.
두 개의 상이한 예시적인 라우팅 테이블들이 테이블 10A 및 테이블 10B으로서 하기에 제공된다.
라우팅 테이블들 각각은 차량 기능 출력 테이블(320)의 10 개의 차량 기능 출력 요소들 및 기능 출력 구성 테이블(322)의 10 개의 구성 요소들에 대응하는 10 개의 엔트리들을 갖는다. 상기 도시된 2 개의 예시적인 라우팅 테이블들은 그것이 설치된 차량의 특정 유형에 대해 커스터마이징된다. 상기 구성 테이블들(322 및 326)은 또한 그들이 설치된 특정 차량 유형에 대해 커스터마이징될 수 있다. 이러한 라우팅 및 구성 테이블들은 동일한 VCM 출력 테이블(328) 및 동일한 차량 기능 출력 테이블(320)이 상이한 하드웨어 장치들을 갖는 상이한 유형들의 차량들에 사용될 수 있게 한다. 예를 들어, 테이블 10A의 엔트리 #1 내지 #3은, 제 1 차량이 제어 소프트웨어(234)로부터 출력될 수 있는 3 개의 상이한 브레이크 명령들에 대응하는 VCM 출력들을 포함하는 것을 나타내지만, 라우팅 테이블인 테이블 10B로부터의 동일한 엔트리들은, 브레이크 명령들 중 두 명령들은 제 2 차량 상에 구현된 VCM 출력들과 대응하지 않는다는 것을 나타낸다. 대조적으로, 엔트리 #7은 양쪽 차량들이 제어 소프트웨어(234)로부터의 "혼 온(horn on)" 명령 출력에 대응하는 VCM 출력을 갖는다는 것을 나타낸다.
라우팅 출력들에 대해, VCM 출력 테이블(328) 및 모듈 출력 구성 테이블(326)의 각 요소에 대한 값을 포함하는 열거된 인덱스가 정의된다. 26 개의 요소들을 포함하는 하나의 예시적 인덱스가 하기에 제공된다.
라우팅 입력들과 관련하여 전술한 바와 같이, 라우팅 엔진은 상기 열거된 인덱스로부터 인덱스 값을 결정하기 위해 라우팅 테이블 엔트리를 사용할 수 있고, VCM 출력 테이블(328) 및 모듈 출력 구성 테이블(326)에서 적절한 요소를 식별하기 위해 그 인덱스 값을 사용하여 할 수 있다 .
도 5는 본 발명의 원리에 따라 제어 소프트웨어(234)로부터의 차량 기능 출력들을 VCM 출력 메모리 위치들로 라우팅하기 위한 예시적인 방법의 흐름도를 도시한다. 출력들을 라우팅하는 라우팅 엔진(238)의 동작은 도 4의 흐름도와 관련하여 기술된 방법과 실질적으로 유사하다. 단계(502)에서, 라우팅 엔진(238)은 출력 라우팅 테이블들(10A 또는 10B) 중 하나에서 엔트리를 판독한다. 그 엔트리에 기초하여, 라우팅 엔진은 단계(504)에서, VCM 출력 테이블(328), 모듈 출력 구성 테이블(326), 기능 출력 구성 테이블(322), 및 차량 기능 출력 테이블(320)에서 대응하는 요소를 결정할 수 있다. 테이블들(326 및 328)로부터의 대응하는 요소는 상기 라우팅 테이블 엔트리와 연관된 열거된 인덱스 값에 기초하고, 테이블들(320 및 322) 내의 대응하는 요소들은 현재 처리되고 있는 라우팅 테이블 엔트리의 인덱스에 의존한다.
예를 들어, 라우팅 엔진(238)이 제 1 차량 상에서 동작하는 VCM(200)에 있었고 현재 엔트리 #5를 처리하고 있다면, 라우팅 엔진(238)은 또한 차량 기능 출력 테이블(320)의 요소 #5로부터 어드레스를 검색할 수 있으며(본 예에서는, &gHyd_output.ulSVML이 될 것이다), 기능 출력 구성 테이블(322)로부터 요소 #5를 또한 검색할 것이다(본 예에서는, { AG_UINT32, AG_NO_BIT_MAN, 0u, 0u, AG_SF_ARRAY_00 }이 될 것이다). 차량 기능 출력 테이블(320)의 이러한 어드레스를 사용하면, 라우팅 엔진은 그 어드레스에 저장된 실제 값에 액세스할 수 있다. 라우팅 엔진(238)은 또한 테이블 10A의 엔트리 #5로부터 AG_OUT_TCM_GP3_COMMAND를 추출할 수 있고, 이 추출된 값을 VCM 출력 테이블(328) 및 출력 구성 테이블(326)에 인덱스로서 사용할 수 있다. 열거된 인덱스가 위와 같이 정의된 상기 예시적인 "Index of Module Outputs"에 기초하여, AG_OUT_TCM_GP3_COMMAND는 인덱스 #17에 대응한다. 따라서, 상기 인덱스를 사용하면 라우팅 엔진은 모듈 출력 테이블(328)로부터 요소 #17(즉, 어드레스 &USR_s_OV.uwTcmGPDriverControl)을 검색할 수 있으며, 모듈 출력 구성 테이블(326)로부터 요소 #17(즉, { AG_UINT16, AG_LEFT_RMW, 0x04u, 2u, AG_SF_ARRAY_00 })를 검색할 수 있다.
따라서, 차량 기능 출력 테이블(320)로부터의 대응하는 요소의 어드레스(즉, &gHyd_output.ulSVML)를 사용하면, 라우팅 엔진은 단계(506)에서 그 메모리 위치에 저장된 값을 검색하고, 단계(508)에서 a) 기능 출력 구성 테이블(322)로부터의 대응하는 요소(즉, { AG_UINT32, AG_NO_BIT_MAN, 0u, 0u, AG_SF_ARRAY_00 }) 및 b) 모듈 출력 구성 테이블(326)의 대응하는 요소(즉, { AG_UINT16, AG_LEFT_RMW, 0x04u, 2u, AG_SF_ARRAY_00 })에 따라 이를 변환한다. 따라서, 이 예에서, 기능 출력 구성 테이블(322)의 요소는 상기 검색된 값의 초기 변환을 초래하지 않으며, 모듈 출력 구성 테이블(326)의 요소는, 변환된 값을 생성하기 위하여 상기 검색된 값이 "32-비트 부호 없는 정수" 형식의 변수로부터 "16-비트 부호 없는 정수"로 재구성되고, "0000 0100"으로 비트-마스크되고, "2" 비트만큼 좌측으로 비트 시프트되는 것을 나타낸다. VCM 출력 테이블(328)로부터 대응하는 요소의 어드레스(즉, 어드레스 &USR_s_OV.uwTcmGPDriverControl)를 사용하면, 라우팅 엔진은 단계(510)에서 그 메모리 위치에 상기 변환 값을 저장한다. 단계(512)에서, 라우팅 엔진은 호출 프로세스(예를 들어, PROCESS_SYS_MODELS)와 일치하는 처리할 라우팅 테이블 엔트리들이 더 있는지를 결정한다. 그렇다면, 라우팅 엔진은 단계(514)에서 대기할 수 있을 때까지 10 개의 라우팅 테이블 엔트리들 각각에 대해 상기 단계들을 순차적으로 반복한다.
출력을 라우팅할 때, VCM 출력 변수 ulAG_Zero가 VCM(200)으로부터의 출력을 생성하는데 사용되지 않을 것이기 때문에, 2 개의 상이한 "사용되지 않은(not-used)" 값들은 필요하지 않을 수 있다. 따라서, 상기 출력들에 대한 예시적인 열거된 인덱스는 그 출력 라우팅 테이블이 설치된 차량에 의해 이용되지 않는 차량 기능 출력 값들에 대한 출력 라우팅 테이블에 의해 참조될 수 있는 단일 요소 "AG_OUT_NOT_USED "를 갖는다.
전술된 소스 또는 모듈 입력 테이블(302)에 대한 하나의 대안은 모든 VCM 애플리케이션 층 입력들 또는 입력 값들에 대해 의도적으로 구성된 데이터 구조를 사용하는 것으로, 미리 결정된 변수 또는 메모리 위치 이름들을 사용하여 이들 입력들 또는 입력 값들을 대응하는 VCM 또는 모듈 입력 변수들 또는 메모리 위치들에 저장하는 것을 수반한다. 이들 변수 이름들은 VCM(200)의 애플리케이션 층(230)이 차량 하드웨어 장치들의 제 1 및 제 2 세트들 모두로부터 수신할 수 있는 모든 가능한 입력들과 관련된 값들을 저장하기 위해 VCM(200)의 애플리케이션 층(230)의 다양한 프로세스들에 의해 정의된 것들이 된다. 이러한 입력들은 예를 들어 디지털 입력 값, 아날로그 입력 값, 네트워크 메시지 및 패킷(예를 들면, CAN 메시지, IP 패킷 등), 인코더 입력, 및 기타 입력(예를 들면, 4~20 ma 루프)을 포함할 수 있다.
C 프로그래밍 언어(및 많은 다른 언어들)의 "구조체(struct)"는 복잡한 또는 복합 데이터 형식의 선언문이고, 메모리 블록에서 하나의 이름 아래에 배치될 변수들의 물리적으로 그룹화된 리스트를 포함하는 데이터 구조를 정의하며, 상이한 변수들이 단일의 포인터(즉, 어드레스)를 통해 액세스될 수 있게 한다. 예를 들어 구조체의 선언된 이름에 적용된 "address of" 연산자(즉, "&")는 해당 어드레스를 리턴한다. 구조체의 멤버들 또는 멤버 변수들은 서로 간에 연관되어있는 많은 다른 복잡하고 간단한 데이터 형식들이 될 수 있다. C 구조체 데이터 형식은 통상적으로 단어 길이 경계들로 경계가 정해진 물리적 메모리의 인접하는 블록을 참조하다. 그러나, 다양한 컴파일러 구현들은 고밀도 패킹(denser packing)을 허용하고 그에 따라 더 적은 메모리를 사용하는 하프-워드 또는 바이트 경계들을 이용할 수 있다. 따라서, 단어 경계와 관련하여 구조체의 특정 멤버들을 정렬하는 것은 구현에 따라 다르며 패딩(padding)을 포함할 수도 있다. 구조체 데이터 형식은 인접한 메모리의 블록을 참조하기 때문에, 각 멤버 변수는 인덱스 제로 참조(즉, 구조체의 어드레스 또는 포인터)로부터 고정된 오프셋 또는 오프셋 양 내에 위치된다.
다음의 코드 스니펫(code snippet)은 동일한 순서로, 소스 테이블(302)에 있던 37 개의 어드레스들 또는 요소들에 대응하는 37 개의 멤버 변수들(여기서는 "VCM 또는 모듈 입력 변수"라고도 함)를 가진 데이터 구조(여기서는 "모듈 입력 데이터 구조"라고도 함)에 대한 데이터 형식 "module_input_struct_t"를 정의한다.
위의 데이터 구조 정의에서, 왼쪽 열은 각 멤버 변수의 각자의 데이터 형식에 대한 선언을 제공하고, 오른쪽 열은 미리 결정된 VCM 또는 모듈 입력 변수들 중 하나에 대응하는 그 멤버 변수의 레이블 또는 이름이다. 그런 다음 이러한 typedef를 사용하여 메모리에 정의된 구조의 인스턴스를 생성할 수 있다. 예를 들어, 다음의 코드 라인은 "sModule_Inputs"라는 레이블이 붙은 데이터 구조 인스턴스 또는 변수를 생성한다:
static module_input_struct_t sModule_Inputs;
따라서 메모리 공간은 데이터 구조의 각 멤버 변수에 대해 예약된다. 메모리에 있는 이러한 데이터 구조 인스턴스에 대한 시작 어드레스는 &sModule_Inputs로 표현되며 모든 멤버 변수들은 이들이 상기 구조 정의로 나열된 순서대로 메모리에 순차적으로 배치된다.
도 6은 프로세서(216)가 어드레스할 수 있는 메모리 공간의 맵의 개념도를 도시한다. 단지 예시적인 목적으로, 맵(600)은 맵(600)의 좌측을 따른 어드레스들이 메모리의 순차적 바이트들을 참조하도록 8-비트 폭으로 고려된다. 예시적인 메모리 맵(600)에서는 프로세서(216)에 의해 실행될 명령들을 저장하는 프로그램 어드레스 범위(610)가 있고, 실행 명령들에 의해 사용되거나 생성된 데이터를 저장하는 데이터 어드레스 범위(616)가 있다. 당업자는 프로세서들(216)로 하여금 레지스터들과 관련된 범위(612), 판독 전용 메모리(ROM)와 관련된 범위(614) 및/또는 부트 영역과 관련된 범위(618)와 같은 다른 데이터를 판독할 수 있게 하는 데 다른 어드레스 범위들이 이용될 있다는 것을 인식할 것이다.
데이터 구조 인스턴스 sModule_Inputs(601)가 생성될 때, 예를 들어, 어드레스 4000h에서 시작하는 메모리에 저장될 수 있다. 메모리 맵(600)에서, 이 어드레스는 섹션(602)에 의해 표현된다. 메모리의 인접한 블록이 어드레스(608A)에서 시작하는 데이터 구조(601)에 할당된다. 상기 데이터 구조의 첫 번째 멤버 변수(606A)(멤버 #0)는 그 시작 어드레스(608A)에 저장되고, 각각의 후속 멤버 변수(606B, 606C, 606D)는 시작 어드레스(608A)로부터 오프셋된 각자의 어드레스(608B, 608C, 608D)에서 메모리에 저장된다. 도 6의 예에서, 각 멤버 변수(예를 들어, 606A~606D)는 그 저장을 위해 할당된 4 바이트를 가지며, 따라서 어드레스들(608B~608D)은 각 단계마다 "4"씩 증가한다. 그러나, 상술한 바와 같이, 특정 변수 형식에 할당된 바이트들의 양은 예를 들어 컴파일러에 의해 결정될 수 있고, 4 바이트보다 작거나 4 바이트보다 큰 바이트들이 특정 멤버 변수에 할당될 수 있다. 멤버 변수(606A~606D)의 "오프셋" 또는 "오프셋 양"은 그 시작 어드레스와 데이터 구조 인스턴스의 시작 어드레스(예를 들어, 4000h) 사이의 차이가 된다. n 개의 멤버들을 갖는 데이터 구조 인스턴스의 경우, 어드레스 40xxh에서 시작하는 어드레스(608n)에 저장되는 최종 멤버(606n)가 있다.
"모듈 입력 오프셋 테이블"이 VCM(200)에 의해 구성되거나 제공될 수 있으며, 제 1 차량 및 제 2 차량에 의해 제공될 수 있는 VCM 애플리케이션 층 입력들 또는 입력 값들의 상위 세트의 각각에 대한 요소를 포함한다. 설명된 예에서 모듈 입력 오프셋 테이블은 제 1 및 제 2 차량들에 제공된 VCM들에서 동일하거나 실질적으로 동일하다.
다음의 예시적인 코드 스니펫은 예시된 실시예에서 sModule_Inputs 데이터 구조(601)의 각 멤버 변수 또는 모듈 입력 변수에 대응하는 요소를 갖는 모듈 입력 오프셋 테이블을 생성하도록 사용되고, 각 요소에 어떤 값을 할당하는데 각 요소의 값은 그 대응하는 멤버 변수와 연관된 오프셋 양이 된다.
예를 들어 상기한 코드 스니펫이 상기 테이블의 각 요소에 값들을 할당하도록 컴파일되고 상기 컴파일러가 다음의 부분에 도달할 때(예를 들면, 마지막에서 두 번째 라인):
offsetof(module_input_struct_t, Quadrature1.slCounts),
이것은 데이터 구조체 형식 정의 module_input_struct_t 내의 변수 Quadraturel.slCounts의 오프셋에 대응하는 숫자로 평가된다. 위의 예시적인 실시예에서, 이 멤버 변수는 37 개의 멤버 변수들 중 36 번째 변수(즉, 멤버 #35)가 되고, 각 멤버 변수가 4 바이트로 할당되었다고 가정하면, 그 오프셋은 35x4이며, 16 진수에서 008Ch이다. 따라서, 모듈 입력 오프셋 테이블에서 그 값은 008Ch로 평가될 것이다. 모듈 입력 오프셋 테이블(즉, uint16_t)에 대해 특정된 데이터 형식으로 인해, 모듈 입력 오프셋 테이블의 각 요소는 정수로 고려되며, 하기에서 설명하는 바와 같이 어드레스 값을 계산하는 데 사용될 수 있다. 당업자는 모듈 입력 오프셋 테이블에 대한 상기 선언문이 아래에 도시된 바와 같이 "const"와 같은 추가 파라미터를 포함할 수 있다는 것을 인식할 것이다:
static const uint16_t suwAG_ModuleInputOffsetArray [37] =
이는 데이터 어드레스 범위(616)보다는 프로그램 어드레스 범위(610)와 같은 메모리 맵의 특정 영역에 모듈 입력 오프셋 테이블을 위치시킨다.
각 멤버 변수에 대해 할당된 메모리 크기 및 37 개의 모듈 입력 변수들의 존재와 관련하여 위에서 논의된 가정에 기초하여, 상기 코드 스니펫을 컴파일함으로써 구성될 수 있는 예시적인 모듈 입력 오프셋 테이블이 하기에 테이블 11로서 도시된다:
모듈 입력 오프셋 테이블(702)은 도 7a에 도시되어 있으며, 도 3a에 도시된 소스 테이블(302)에 대한 대체물로서 사용될 수 있다. 결과적으로, 도 4의 흐름도의 실질적으로 모든 단계들이 이러한 제 2 실시예에서도 사용될 수 있지만, 단계(404)는 수정된다. 모듈 입력 오프셋 테이블(702)의 요소들 각각은 sModule_Inputs 데이터 구조(601) 내의 대응하는 멤버 변수 또는 모듈 오프셋 변수의 오프셋 또는 오프셋 양이 될 수 있으며, 따라서 여기에서 모듈 입력 테이블이라고도 부를 수 있는, 모듈 입력 오프셋 테이블(702)은 각각 정수 값인 모듈 입력 요소들의 상위 세트를 포함한다. Module Input Offset Table에서 요소 번호 0~36은 "module_input_struct_t"를 정의하는 코드 스니펫의 모듈 입력 변수들의 이름과 동일한 순서로 대응하다.
도 8은 본 발명의 원리에 따라 VCM 입력/출력을 차량 기능 입력/출력과 연결하기 위한 대안적인 방법의 예시적인 부분의 흐름도를 도시한다. VCM 입력을 차량 기능 입력과 연결하는 것과 관련하여, 모듈 입력 데이터 구조가 단계(802)에서 메모리에 생성되어 VCM 또는 모듈 입력 변수들 또는 메모리 위치들의 상위 세트를 포함하고, 모듈 입력 변수들의 상위 세트는 제 1 차량에 제공된 제 1 세트의 하드웨어 장치들과 관련된 모듈 입력 변수들의 제 1 하위 세트 및 제 2 차량에 제공된 제 2 세트의 하드웨어 장치들과 관련된 모듈 입력 변수들의 제 2 하위 세트를 포함한다. 특히, 상기 생성된 데이터 구조는 그 멤버 변수들 각각이 모듈 입력 변수들 중 하나에 대응하는 "구조체(struct)"가 될 수 있다. 다음으로, 단계(804)에서, 입력 오프셋 요소들의 세트를 포함하는 모듈 입력 오프셋 테이블이 생성되며, 여기에서 각 입력 오프셋 요소는 모듈 입력 변수들의 상위 세트 중 하나에 대응하고, 모듈 입력 데이터 구조 내의 대응하는 모듈 입력 변수의 오프셋 양을 포함한다.
도 4의 흐름도와 관련하여 전술한 바와 같이, 라우팅 엔진은 단계(402)에서 라우팅 테이블(306)의 제 1 엔트리를 판독함으로써 시작하고, 그 엔트리에 기초하여 단계(404)에서 소스 테이블(302) 내의 대응하는 요소를 결정한다. 단계(404)를 수행하는 대신에, 도 8의 알고리즘은 라우팅 테이블 엔트리를 모듈 입력 오프셋 테이블(702)에 대한 인덱스로서 사용하고, 단계(806)에서 모듈 입력 오프셋 테이블(702) 내의 대응하는 요소를 결정한다.
제 1 차량 라우팅 테이블인 테이블 4A가 사용되면, 라우팅 엔진(238)은 라우팅 테이블 엔트리 #0이 "AG_IN_SWITCH4"를 식별하고 열거된 인덱스, 즉 모듈 입력들의 인덱스에 기초하여 이것이 "Index of the Module Inputs" 리스트에서 인덱스 값 #5와 오프셋 양 0014h에 대응하는 모듈 입력 오프셋 테이블(702)의 요소 #5에 대응하는 것을 결정한다. 단계(808)에서, 어드레스는 메모리에 저장된 sModule_Inputs 데이터 구조를 사용하여 구성될 수 있다. 특히, 예시적인 어드레스 04014h에 도달하기 위해 sModule_Inputs 데이터 구조 또는 데이터 구조 변수(예를 들어, 04000h)의 어드레스에 오프셋 값 0014h(즉, suwAG_ModuleInputOffsetArray [5])를 부가하는 어드레스가 구성될 수 있다. 소스 테이블(302)로부터 검색된 어드레스보다는 이렇게 구성된 복합 어드레스에서 라우팅 엔진에 의해 값이 판독되어(단계 410), 모듈 입력 변수
Switch[SDI_SW_DRV4].Control.rSwitchDriverOutput
와 연관된 값을 결정할 수 있다.
도 4의 흐름도의 단계들(406, 408, 412, 414, 416, 및 418)은 소스 테이블(302) 또는 모듈 입력 오프셋 테이블(702)이 모듈 입력 변수의 어드레스를 결정하는데 사용되는지 여부에 대해 동일하다.
각각의 차량 기능 입력 요소가 VCM이 작동하고 있는 차량에 대한 제어 소프트웨어(234)에 의해 이용될 수 있는 값을 저장하는 변수 또는 메모리 위치에 대한 메모리 어드레스였던 차량 기능 입력 테이블(310)에 대한 하나의 대안으로서, 차량 기능 입력 테이블(710)이 사용될 수 있으며, 여기에서 각각의 차량 기능 입력 요소가 오프셋 또는 테이블(310)에서와 같은 메모리 어드레스가 될 수 있다. 모듈 입력 오프셋 테이블이 모듈 입력 데이터 구조의 멤버 변수들에 대한 각자의 오프셋 값으로 구성되었던 방법과 유사한 방식으로, 차량 기능 입력 테이블(710)은 각 요소가 오프셋 양이 되도록 구성될 수 있다. 따라서, 각 차량 기능 입력 요소는 상기 테이블 2에서 그 어드레스들이 참조된 25 개의 차량 기능 입력 변수들을 그 멤버 변수들로서 포함하는 데이터 구조의 멤버 변수들과 연관된 각자의 오프셋 양이 될 것이다.
전술한 대체 스위치보드 모듈 입력 오프셋 테이블(702)과 유사하게, 도 7b에 도시된 바와 같은 모듈 출력 오프셋 테이블(728)은 도 3b의 목적지 테이블(328)을 대체할 수 있고, 제어 소프트웨어(234)로부터의 차량 기능 출력들 또는 출력 값들을 차량 모듈 출력 변수들 또는 메모리 위치들에 연결하는 데 사용될 수 있다. 전술한 목적지 또는 모듈 출력 테이블(328)의 하나의 대안은 미리 결정된 변수 이름들을 사용하여 모든 VCM 애플리케이션 층 출력들, 즉 모듈 출력 변수들에 대해 의도적으로 구축된 데이터 구조를 사용하는 것을 포함한다. 이들 변수 이름들은 차량 하드웨어 장치 디지털 출력, 차량 하드웨어 장치 아날로그 출력, 네트워크 포맷 출력 메시지, 및 상기 차량 상에서 다른 모듈들과 인터페이스하는 출력 드라이브들과 같은 차량(10)의 출력 장치 및 하드웨어와 관련된 값들을 저장하기 위해 VCM(200)의 애플리케이션 층(230)의 다양한 프로세스들에 의해 정의된 것들이다.
다음의 코드 스니펫은 목적지 테이블(328)에 있었던 26 개의 어드레스들 또는 요소들에 대응하는 26 개의 멤버 변수들을 동일한 순서로 갖는 데이터 구조에 대한 데이터 형식 "module_output_struct_t"을 정의하다:
상기한 바의 데이터 구조 정의에서, 왼쪽 열은 각 멤버 변수의 각자의 데이터 형식에 대한 선언을 제공하고 오른쪽 열은 미리 결정된 모듈 출력 변수들 중 하나에 대응하는 멤버 변수의 레이블 또는 이름이다. 이러한 typedef는 메모리에 정의된 구조의 인스턴스를 생성하는 데 사용될 수 있다. 예를 들어, 다음의 코드 라인은 "sModule_Outputs"라는 레이블이 붙은 데이터 구조 인스턴스 또는 변수를 생성한다:
static module_output_struct_t sModule_Outputs;
따라서, 메모리 공간은 데이터 구조의 각 멤버에 대해 예약된다. 메모리에서의 이러한 데이터 구조 인스턴스의 시작 어드레스는 &sModule_Outputs로 표현되며, 모든 멤버들은 이들이 상기 구조 정의에 나열된 순서대로 메모리에 순차적으로 위치된다.
도 6의 메모리 맵(600)으로 다시 돌아가서, 상기 데이터 구조 인스턴스 sModule_Outputs가 생성될 때, 이러한 것은 예를 들어 어드레스 4D00h를 갖는 메모리 내의 어드레스에서 시작하여 메모리에 저장될 수 있다. 메모리 맵(600)에서, 이러한 어드레스는 섹션(603)에 의해 표현된다. sModule_Outputs 데이터 구조는 sModule_Outputs 데이터 구조의 첫 번째 멤버 변수 또는 모듈 출력 변수(멤버 #0)가 그 시작 어드레스 4D00h에 저장되는 것으로 앞서 설명된 sModule_Inputs 데이터 구조와 유사하게 메모리에 저장되고, 각각의 후속 멤버 변수 또는 모듈 출력 변수는 상기 시작 어드레스 4D00h로부터 오프셋된 각자의 어드레스에서 메모리에 저장된다.
"모듈 출력 오프셋 테이블"은 VCM(200)에 의해 구성되거나 제공될 수 있으며, 제 1 차량 및 제 2 차량에 대해 제공될 수 있는 VCM 애플리케이션 층 출력들 또는 출력 값들의 상위 세트 각각에 대한 요소를 포함한다. 도시된 예에서 모듈 출력 오프셋 테이블은 제 1 및 제 2 차량에 제공된 VCM들에서 동일하거나 실질적으로 동일하다.
다음의 예시적인 코드 스니펫은 예시된 실시예에서 sModule_Outputs 데이터 구조의 각각의 멤버 변수 또는 모듈 출력 변수에 대응하는 요소를 갖는 모듈 출력 오프셋 테이블을 생성하고, 각각의 요소에 값을 할당하며 상기 각각의 요소의 값은 그 대응하는 멤버 변수 또는 모듈 출력 변수와 연관된 오프셋의 양이 된다:
예를 들어, 상기한 코드 스니펫을 컴파일하여 상기 테이블의 각각의 요소에 값들을 할당하고 상기 컴파일러가 다음 부분(예를 들면, 마지막 라인에서 두 번째)에 도달하면:
offsetof(module_output_struct_t, rGP8_Command),
이것은 데이터 구조 형식 정의 module_output_struct_t 내의 변수 rGP8_Command의 오프셋에 대응하는 숫자로 평가된다. 상기한 예시적인 실시예에서, 이러한 멤버 변수는 26 개의 멤버 변수들 중 25 번째 변수(즉, 멤버 #24)가 되고, 각 멤버 변수가 4 바이트로 할당된다고 다시 가정하면, 그 오프셋은 24x4이며, 16 진수로 0060h가 된다. 따라서 모듈 출력 오프셋 테이블에서 그 값은 0060h로 평가될 것이다. 모듈 출력 오프셋 테이블에 대해 지정된 데이터 형식(즉, uint16_t)으로 인해, 모듈 출력 오프셋 테이블의 각각의 요소는 정수로 고려되며, 아래에서 기술하는 바와 같이 어드레스 값을 계산하는 데 사용될 수 있다.
각각의 멤버 변수에 대해 할당된 메모리 크기 및 26 개의 모듈 출력 변수들에 관해 위에서 논의된 가정에 기초하여, 상기한 코드 스니펫을 컴파일함으로써 구성될 수 있는 예시적인 모듈 출력 오프셋 테이블은 하기의 테이블 12와 같이 도시된다.
언급한 바와 같이, 모듈 출력 오프셋 테이블(728)이 도 7b이 도시되어 있고도 3b에 도시된 목적지 테이블(328)에 대한 대체물로서 사용될 수 있다. 결과적으로, 도 5의 흐름도의 실질적으로 모든 단계들이 이 제 2 실시예에서도 사용될 수 있지만, 단계(504)는 수정된다. 모듈 출력 오프셋 테이블(728)의 요소들 각각은 sModule_Outputs 데이터 구조 내의 대응하는 멤버 변수의 오프셋 또는 오프셋 양이 되고, 따라서, 본 명세서에서 모듈 출력 테이블로 지칭되는 모듈 출력 오프셋 테이블(728)은 각각 정수 값인 모듈 출력 요소들의 상위 세트를 포함한다. Module Output Offset Table에서 요소 번호들(0-25)은 상기에서 "module_output_struct_t"를 정의하는 코드 스니펫에서 모듈 출력 변수들의 이름들에 대해 동일한 순서로 대응하다.
도 8은 본 발명의 원리에 따라 VCM 입력들/출력들을 차량 기능 입력들/출력들과 연결하기 위한 대안적인 방법의 예시적인 부분의 흐름도를 도시한다. 차량 기능 출력들 또는 출력 값들을 차량 모듈 출력 변수들 또는 메모리 위치들과 연결하는 것과 관련하여, 단계(802)에서, 모듈 출력 변수들 또는 메모리 위치들의 상위 세트를 포함하는 모듈 출력 데이터 구조가 메모리에서 생성되고, 여기서 상기 모듈 출력 변수들의 상위 세트는 제 1 차량에 제공된 제 1 세트의 하드웨어 장치들과 관련된 모듈 출력 변수들의 제 1 하위 세트 및 제 2 차량에 제공된 제 2 세트의 하드웨어 장치들과 관련된 모듈 출력 변수들의 제 2 하위 세트를 포함한다. 특히, 상기 생성된 데이터 구조는 그 멤버 변수들 각각이 모듈 출력 변수들 중 하나에 대응하는 "구조체(struct)"가 될 수 있다. 다음으로, 단계(804)에서, 출력 오프셋 요소들의 세트를 포함하는 모듈 출력 오프셋 테이블이 생성되며, 여기서 각각의 출력 오프셋 요소는 모듈 출력 변수들의 상위 세트 중 하나에 대응하며, 상기 모듈 입력 데이터 구조 내의 대응하는 모듈 출력 변수의 오프셋 양을 포함한다.
도 5의 흐름도와 관련하여 전술한 바와 같이, 라우팅 엔진은 라우팅 테이블(324)의 제 1 엔트리를 판독함으로써 단계(502)에서 시작하고, 상기 엔트리에 기초하여, 단계(504)에서, 목적지 테이블(328) 내의 대응하는 요소를 결정한다. 이러한 방식에서 단계(504)를 수행하는 대신에, 도 8의 알고리즘은 라우팅 테이블 엔트리를 모듈 출력 오프셋 테이블(728)에 대한 인덱스로서 사용하고, 단계(806)에서 모듈 출력 오프셋 테이블(728) 내의 대응하는 요소를 결정한다.
예를 들어, 라우팅 엔진(238)이 제 1 차량에서 동작하는 VCM(200)에 있었고 현재 엔트리 #5를 처리하고 있다면, 상기 라우팅 엔진(238)은 테이블 10A의 엔트리 #5로부터 AG_OUT_TCM_GP3_COMMAND를 추출할 수 있고, 이렇게 추출된 값을 상기 모듈 출력 오프셋 테이블(728)에 대한 인덱스로서 사용한다. 상기 예시적인 "Index of Module Outputs"에 기초하여, 상기 정의된 열거된 인덱스, AG_OUT_TCM_GP3_COMMAND는 인덱스 #17에 대응한다. 따라서, 상기 인덱스를 사용하는 라우팅 엔진은 상기 모듈 출력 오프셋 테이블(728), 즉 오프셋 값 0044h로부터 요소 #17을 검색할 수 있다.
단계(808)에서, 어드레스는 메모리에 저장된 sModule_Outputs 데이터 구조를 사용하여 구성될 수 있다. 특히, sModule_Outputs 데이터 구조 변수의 어드레스(예를 들어, 04D00h)에 오프셋 값 0044h(즉, suwAG_ModuleOutputOffsetArray[17])를 부가하여 예시적인 어드레스 04D44h에 도달하는 어드레스가 구성될 수 있다. 변환 값은 모듈 출력 변수 USR_s_OV.uwTcmGPDriverControl과 연관된 값을 저장하기 위해 목적지 테이블(328)로부터 검색된 어드레스보다는 이와 같이 구성된 복합 어드레스에서 상기 라우팅 엔진에 의해 라우팅 엔진에 의해 연결되거나 저장될 수 있다(단계 510).
도 5의 흐름도의 단계들(506, 508, 512 및 514)은 모듈 출력 변수의 어드레스를 결정하기 위해 목적지 테이블(328) 또는 모듈 출력 오프셋 테이블(728)이 사용되는지 여부에 대해 동일하다.
각각의 차량 기능 출력 요소가 제어 소프트웨어(234)로부터의 차량 기능 출력 변수들에 대한 메모리 어드레스였던 차량 기능 출력 테이블(320)에 대한 대안으로서, 차량 기능 출력 테이블(720)이 사용될 수 있으며, 여기서 각각의 차량 기능 출력 요소는 오프셋 또는 테이블(320)에서와 같은 메모리 어드레스가 될 수 있다. 모듈 출력 데이터 구조의 멤버 변수들에 대한 각자의 오프셋 값으로 모듈 출력 오프셋 테이블이 구성되었던 방법과 유사한 방식으로, 상기 차량 기능 출력 테이블(720)은 각 요소가 오프셋 양이 되도록 구성될 수 있다. 따라서, 각 차량 기능 출력 요소는, 그 멤버 변수들로서 어드레스들이 상기 테이블 6에서 참조된 10 개의 차량 기능 출력 변수들을 포함하는 데이터 구조의 멤버 변수들과 연관된 각자의 오프셋 양이 될 것이다.
본 발명의 특정 실시예들이 도시되고 설명되었지만, 본 발명의 사상 및 범위를 벗어나지 않고 다양한 다른 변경들 및 수정들이 이루어질 수 있다는 것은 당업자에게 명백할 것이다. 따라서, 본 발명의 범위 내에 있는 이러한 모든 변경들 및 수정들을 첨부된 청구 범위에 포함하도록 의도된다.

Claims (72)

  1. 제 1 및 제 2 재료 취급 차량들 중 하나에서 작동할 수 있는 컴퓨터 기반의 차량 제어 모듈에 있어서:
    모듈 입력 요소들의 상위 세트를 포함하는 모듈 입력 테이블로서, 상기 모듈 입력 요소들의 상위 세트는 상기 제 1 차량에 제공된 제 1 세트의 하드웨어 장치들과 관련된 입력 요소들의 제 1 하위 세트와, 상기 제 2 차량에 제공된 제 2 세트의 하드웨어 장치들과 관련된 모듈 입력 요소들의 제 2 하위 세트를 포함하는, 상기 모듈 입력 테이블;
    상기 모듈 입력 요소들의 상위 세트의 것들에 대응하는 각자의 구성 요소들을 포함하는 적어도 하나의 구성 테이블로서, 각자의 구성 요소들 각각이 상기 모듈 입력 테이블의 대응하는 모듈 입력 요소와 연관된 값을 변환시키는 것과 관련된 데이터를 포함하는, 상기 적어도 하나의 구성 테이블;
    상기 제 1 차량 및 상기 제 2 차량에서 이용되는 차량 기능 입력들과 관련된 차량 기능 입력 요소들; 및
    차량 기능 입력 요소에 대응하는 상기 모듈 입력 테이블의 모듈 입력 요소와 연관된 값을 결정하고, 상기 값을 변환 값으로 변환하고, 상기 변환 값을 대응하는 차량 기능 입력 요소와 연결하기 위한 구조를 포함하는, 컴퓨터 기반의 차량 제어 모듈.
  2. 제 1 항에 있어서,
    상기 구조는,
    a) 연관된 차량 기능 입력 요소들과,
    b) 상기 차량 제어 모듈이 작동하고 있는 상기 제 1 차량 및 상기 제 2 차량 중 하나에 대응하는 상기 모듈 입력 요소들의 제 1 및 제 2 하위 세트들 중 하나의 연관된 모듈 입력 요소들과 관련된 엔트리들을 포함하는 라우팅 테이블(routing table)을 포함하며,
    상기 모듈 입력 요소와 연관된 값을 결정하는 것은:
    a) 상기 엔트리와 연관된 차량 기능 입력 요소와 연관된 모듈 입력 요소를 결정하고;
    b) 상기 모듈 입력 테이블의 대응하는 모듈 입력 요소와 연관된 값을 결정하는 것을 포함하는, 컴퓨터 기반의 차량 제어 모듈.
  3. 제 1 항 또는 제 2 항에 있어서,
    컴퓨터 액세스 가능한 메모리를 포함하고, 상기 모듈 입력 테이블의 각각의 요소는 그 연관된 값이 저장되는 메모리 내의 각자의 어드레스를 포함하는, 컴퓨터 기반의 차량 제어 모듈.
  4. 제 1 항에 있어서,
    모듈 입력 변수들의 상위 세트를 포함하는 모듈 입력 데이터 구조를 포함하며,
    상기 모듈 입력 변수들의 상위 세트는 상기 제 1 차량에 제공된 상기 제 1 세트의 하드웨어 장치들과 관련된 모듈 입력 변수들의 제 1 하위 세트 및 상기 제 2 차량에 제공된 상기 제 2 세트의 하드웨어 장치들과 관련된 모듈 입력 변수들의 제 2 하위 세트를 포함하고,
    각각의 모듈 입력 요소는 상기 모듈 입력 변수들의 상위 세트 중 하나에 대응하고, 상기 모듈 입력 데이터 구조 내의 대응하는 모듈 입력 변수의 오프셋 양을 포함하는, 컴퓨터 기반의 차량 제어 모듈.
  5. 제 4 항에 있어서,
    상기 모듈 입력 변수들의 상위 세트의 적어도 하나의 모듈 입력 변수는 상기 모듈 입력 변수들의 제 1 하위 세트 및 상기 모듈 입력 변수들의 제 2 하위 세트 모두의 멤버인, 컴퓨터 기반의 차량 제어 모듈.
  6. 제 4 항에 있어서,
    상기 모듈 입력 변수들의 상위 세트의 적어도 하나의 모듈 입력 변수는 상기 모듈 입력 변수들의 제 1 하위 세트 또는 상기 모듈 입력 변수들의 제 2 하위 세트 중 단지 하나의 멤버인, 컴퓨터 기반의 차량 제어 모듈.
  7. 제 4 항 내지 제 6 항 중 어느 한 항에 있어서,
    상기 구조는,
    a) 연관된 차량 기능 입력 요소들과,
    b) 상기 차량 제어 모듈이 작동하고 있는 상기 제 1 차량 및 상기 제 2 차량 중 하나에 대응하는 상기 모듈 입력 요소들의 제 1 및 제 2 하위 세트들 중 하나의 연관된 모듈 입력 요소들과 관련된 엔트리들을 포함하는 라우팅 테이블을 포함하며,
    상기 모듈 입력 요소와 연관된 값을 결정하는 것은:
    a) 상기 엔트리와 연관된 차량 기능 입력 요소와 연관된 모듈 입력 요소를 결정하고;
    b) 상기 모듈 입력 데이터 구조의 어드레스를 결정하고;
    c) 상기 모듈 입력 요소 및 상기 모듈 입력 데이터 구조의 어드레스에 기초하여 복합 어드레스를 구성하고;
    d) 상기 복합 어드레스와 연관된 값을 결정하는 것을 포함하는, 컴퓨터 기반의 차량 제어 모듈.
  8. 제 1 항 또는 제 2 항에 있어서,
    상기 적어도 하나의 구성 테이블은 상기 모듈 입력 요소들의 상위 세트의 것들에 대응하는 각자의 모듈 입력 구성 요소들을 포함하는 모듈 입력 구성 테이블을 포함하며,
    각자의 모듈 입력 구성 요소들 각각은 상기 모듈 입력 테이블의 대응하는 모듈 입력 요소와 연관된 값과 관련된 제 1 변환을 달성하기 위한 데이터를 포함하는, 컴퓨터 기반의 차량 제어 모듈.
  9. 제 8 항에 있어서,
    상기 적어도 하나의 구성 테이블은 상기 차량 기능 입력 요소들의 것들에 대응하는 각자의 기능 입력 구성 요소들을 포함하는 기능 입력 구성 테이블을 더 포함하며,
    각자의 기능 입력 구성 요소들 각각은 상기 모듈 입력 테이블의 대응하는 모듈 입력 요소와 연관된 값과 관련된 제 2 변환을 달성하기 위한 데이터를 포함하는, 컴퓨터 기반의 차량 제어 모듈.
  10. 제 9 항에 있어서,
    상기 모듈 입력 구성 테이블의 각각의 요소는 상기 모듈 입력 테이블의 대응하는 모듈 입력 요소와 연관된 상기 값의 데이터 형식과 관련된 데이터를 포함하는, 컴퓨터 기반의 차량 제어 모듈.
  11. 제 10 항에 있어서,
    상기 기능 입력 구성 테이블의 각각의 요소는 상기 대응하는 차량 기능 입력 요소와 연관된 상이한 데이터 형식과 관련된 데이터를 포함하고, 상기 값을 변환하는 것은 상기 데이터 형식을 상기 상이한 데이터 형식으로 변경하는 것을 포함하는, 컴퓨터 기반의 차량 제어 모듈.
  12. 제 9 항에 있어서,
    상기 값을 상기 변환 값으로 변환하는 것은 상기 제 1 변환 및 상기 제 2 변환에 기초하여 상기 변환 값을 결정하는 것을 포함하는, 컴퓨터 기반의 차량 제어 모듈.
  13. 제 1 항 또는 제 2 항에 있어서,
    컴퓨터 액세스 가능한 메모리를 포함하고, 각각의 차량 기능 입력 요소는 그 연관된 변환된 값이 저장되는 메모리 내의 각자의 어드레스를 포함하는, 컴퓨터 기반의 차량 제어 모듈.
  14. 제 1 항 또는 제 2 항에 있어서,
    상기 값을 변환하는 것은:
    상기 값을 변경하지 않고 그대로 두고;
    상기 값을 비트마스크하고(bitmask);
    상기 값을 비트-시프트하고;
    상기 값에 미리 결정된 오프셋을 부가하고;
    상기 값을 미리 결정된 이득으로 곱하는 것 중 하나 이상을 포함하는, 컴퓨터 기반의 차량 제어 모듈.
  15. 제 1 항 또는 제 2 항에 있어서,
    상기 제 1 차량 및 상기 제 2 차량 중 하나에 구현되는 하드웨어 장치들은:
    차량 네트워크의 버스;
    인코더;
    스위치;
    아날로그 센서; 및
    디지털 센서 중 하나 이상을 포함하는, 컴퓨터 기반의 차량 제어 모듈.
  16. 제 1 항 또는 제 2 항에 있어서,
    상기 모듈 입력 요소들의 상위 세트의 적어도 하나의 모듈 입력 요소는 상기 모듈 입력 요소들의 제 1 하위 세트 및 상기 모듈 입력 요소들의 제 2 하위 세트 모두의 멤버인, 컴퓨터 기반의 차량 제어 모듈.
  17. 제 1 항 또는 제 2 항에 있어서,
    상기 모듈 입력 요소들의 상위 세트의 적어도 하나의 모듈 입력 요소는 상기 모듈 입력 요소들의 제 1 하위 세트 또는 상기 모듈 입력 요소들의 제 2 하위 세트 중 단지 하나의 멤버인, 컴퓨터 기반의 차량 제어 모듈.
  18. 제 1 및 제 2 재료 취급 차량들 중 하나에서 작동할 수 있는 차량 제어 모듈을 위한 방법에 있어서:
    모듈 입력 요소들의 상위 세트를 포함하는 모듈 입력 테이블을 제공하는 단계로서, 상기 모듈 입력 요소들의 상위 세트는 상기 제 1 차량에 제공된 제 1 세트의 하드웨어 장치들과 관련된 모듈 입력 요소들의 제 1 하위 세트와, 상기 제 2 차량에 제공된 제 2 세트의 하드웨어 장치들과 관련된 모듈 입력 요소들의 제 2 하위 세트를 포함하는, 상기 모듈 입력 테이블을 제공하는 단계;
    상기 모듈 입력 요소들의 상위 세트의 것들에 대응하는 각자의 구성 요소들을 포함하는 적어도 하나의 구성 테이블을 제공하는 단계로서, 각자의 구성 요소들 각각은 상기 모듈 입력 테이블의 대응하는 모듈 입력 요소와 연관된 값을 변환시키는 것과 관련된 데이터를 포함하는, 상기 적어도 하나의 구성 테이블을 제공하는 단계;
    상기 제 1 차량 및 상기 제 2 차량에서 이용되는 차량 기능 입력들과 관련된 차량 기능 입력 요소들을 제공하는 단계;
    차량 기능 입력 요소에 대응하는 상기 모듈 입력 테이블의 모듈 입력 요소와 연관된 값을 결정하는 단계;
    상기 값을 변환 값으로 변환하는 단계; 및
    상기 변환 값을 대응하는 차량 기능 입력 요소와 연결하는 단계를 포함하는, 차량 제어 모듈을 위한 방법.
  19. 제 18 항에 있어서,
    a) 연관된 차량 기능 입력 요소들과,
    b) 상기 차량 제어 모듈이 작동하고 있는 상기 제 1 차량 및 상기 제 2 차량 중 하나에 대응하는 상기 모듈 입력 요소들의 제 1 및 제 2 하위 세트들 중 하나의 연관된 모듈 입력 요소들과 관련된 엔트리들을 포함하는 라우팅 테이블을 제공하는 단계를 포함하며,
    상기 모듈 입력 요소와 연관된 값을 결정하는 단계는:
    a) 상기 엔트리와 연관된 차량 기능 입력 요소와 연관된 모듈 입력 요소를 결정하는 단계; 및
    b) 상기 모듈 입력 테이블의 대응하는 모듈 입력 요소와 연관된 값을 결정하는 단계를 포함하는, 차량 제어 모듈을 위한 방법.
  20. 제 18 항 또는 제 19 항에 있어서,
    상기 모듈 입력 테이블의 각각의 모듈 입력 요소는 그 연관된 값이 저장되는 메모리 내의 각자의 어드레스를 포함하는, 차량 제어 모듈을 위한 방법.
  21. 제 18 항에 있어서,
    모듈 입력 변수들의 상위 세트를 포함하는 모듈 입력 데이터 구조를 제공하는 단계를 포함하며,
    상기 모듈 입력 변수들의 상위 세트는 상기 제 1 차량에 제공된 상기 제 1 세트의 하드웨어 장치들과 관련된 모듈 입력 변수들의 제 1 하위 세트 및 상기 제 2 차량에 제공된 상기 제 2 세트의 하드웨어 장치들과 관련된 모듈 입력 변수들의 제 2 하위 세트를 포함하고,
    각각의 모듈 입력 요소는 상기 모듈 입력 변수들의 상위 세트 중 하나에 대응하고, 상기 모듈 입력 데이터 구조 내의 대응하는 모듈 입력 변수의 오프셋 양을 포함하는, 차량 제어 모듈을 위한 방법.
  22. 제 21 항에 있어서,
    상기 모듈 입력 변수들의 상위 세트의 적어도 하나의 모듈 입력 변수는 상기 모듈 입력 변수들의 제 1 하위 세트 및 상기 모듈 입력 변수들의 제 2 하위 세트 모두의 멤버인, 차량 제어 모듈을 위한 방법.
  23. 제 21 항에 있어서,
    상기 모듈 입력 변수들의 상위 세트의 적어도 하나의 모듈 입력 변수는 상기 모듈 입력 변수들의 제 1 하위 세트 또는 상기 모듈 입력 변수들의 제 2 하위 세트 중 단지 하나의 멤버인, 차량 제어 모듈을 위한 방법.
  24. 제 21 항 내지 제 23 항 중 어느 한 항에 있어서,
    a) 연관된 차량 기능 입력 요소들과,
    b) 상기 차량 제어 모듈이 작동하고 있는 상기 제 1 차량 및 상기 제 2 차량 중 하나에 대응하는 상기 모듈 입력 요소들의 제 1 및 제 2 하위 세트들 중 하나의 연관된 모듈 입력 요소들과 관련된 엔트리들을 포함하는 라우팅 테이블을 제공하는 단계를 포함하며,
    상기 모듈 입력 요소와 연관된 값을 결정하는 단계는:
    a) 상기 엔트리와 연관된 차량 기능 입력 요소와 연관된 모듈 입력 요소를 결정하는 단계;
    b) 상기 모듈 입력 데이터 구조의 어드레스를 결정하는 단계;
    c) 상기 모듈 입력 요소 및 상기 모듈 입력 데이터 구조의 어드레스에 기초하여 복합 어드레스를 구성하는 단계; 및
    d) 상기 복합 어드레스와 연관된 값을 결정하는 단계를 포함하는, 차량 제어 모듈을 위한 방법.
  25. 제 18 항 또는 제 19 항에 있어서,
    상기 적어도 하나의 구성 테이블은 상기 모듈 입력 요소들의 상위 세트의 것들에 대응하는 각자의 모듈 입력 구성 요소들을 포함하는 모듈 입력 구성 테이블을 포함하며,
    각자의 모듈 입력 구성 요소들 각각은 상기 모듈 입력 테이블의 대응하는 모듈 입력 요소와 연관된 값과 관련된 제 1 변환을 달성하기 위한 데이터를 포함하는, 차량 제어 모듈을 위한 방법.
  26. 제 25 항에 있어서,
    상기 적어도 하나의 구성 테이블은 상기 차량 기능 입력 요소들의 것들에 대응하는 각자의 기능 입력 구성 요소들을 포함하는 기능 입력 구성 테이블을 포함하며,
    각자의 기능 입력 구성 요소들 각각은 상기 모듈 입력 테이블의 대응하는 모듈 입력 요소와 연관된 값과 관련된 제 2 변환을 달성하기 위한 데이터를 포함하는, 차량 제어 모듈을 위한 방법.
  27. 제 26 항에 있어서,
    상기 모듈 입력 구성 테이블의 각각의 요소는 상기 모듈 입력 테이블의 대응하는 모듈 입력 요소와 연관된 상기 값의 데이터 형식과 관련된 데이터를 포함하는, 차량 제어 모듈을 위한 방법.
  28. 제 27 항에 있어서,
    상기 기능 입력 구성 테이블의 각각의 요소는 상기 대응하는 차량 기능 입력 요소와 연관된 상이한 데이터 형식과 관련된 데이터를 포함하고, 상기 값을 변환하는 것은 상기 데이터 형식을 상기 상이한 데이터 형식으로 변경하는 것을 포함하는, 차량 제어 모듈을 위한 방법.
  29. 제 26 항에 있어서,
    상기 값을 상기 변환 값으로 변환하는 것은 상기 제 1 변환 및 상기 제 2 변환에 기초하여 상기 변환 값을 결정하는 것을 포함하는, 차량 제어 모듈을 위한 방법.
  30. 제 18 항 또는 제 19 항에 있어서,
    각각의 차량 기능 입력 요소는 그 연관된 변환 값이 저장되는 메모리 내의 각자의 어드레스를 포함하는, 차량 제어 모듈을 위한 방법.
  31. 제 18 항 또는 제 19 항에 있어서,
    상기 값을 변환하는 것은:
    상기 값을 변경하지 않고 그대로 두고;
    상기 값을 비트마스크하고;
    상기 값을 비트-시프트하고;
    상기 값에 미리 결정된 오프셋을 부가하고;
    상기 값을 미리 결정된 이득으로 곱하는 것 중 하나 이상을 포함하는, 차량 제어 모듈을 위한 방법.
  32. 제 18 항 또는 제 19 항에 있어서,
    상기 제 1 차량 및 상기 제 2 차량 중 하나에 구현되는 하드웨어 장치들은:
    차량 네트워크의 버스;
    인코더;
    스위치;
    아날로그 센서; 및
    디지털 센서 중 하나 이상을 포함하는, 차량 제어 모듈을 위한 방법.
  33. 제 18 항 또는 제 19 항에 있어서,
    상기 모듈 입력 요소들의 상위 세트의 적어도 하나의 모듈 입력 요소는 상기 모듈 입력 요소들의 제 1 하위 세트 및 상기 모듈 입력 요소들의 제 2 하위 세트 모두의 멤버인, 차량 제어 모듈을 위한 방법.
  34. 제 18 항 또는 제 19 항에 있어서,
    상기 모듈 입력 요소들의 상위 세트의 적어도 하나의 모듈 입력 요소는 상기 모듈 입력 요소들의 제 1 하위 세트 또는 상기 모듈 입력 요소들의 제 2 하위 세트 중 단지 하나의 멤버인, 차량 제어 모듈을 위한 방법.
  35. 제 1 및 제 2 재료 취급 차량들 중 하나에서 작동할 수 있는 컴퓨터 기반의 차량 제어 모듈에 있어서:
    소스 요소들의 제 1 상위 세트를 포함하는 소스 테이블로서, 상기 소스 요소들의 제 1 상위 세트는 상기 제 1 차량에 제공된 제 1 세트의 하드웨어 장치들과 관련된 소스 요소들의 제 1 하위 세트와, 상기 제 2 차량에 제공된 제 2 세트의 하드웨어 장치들과 관련된 소스 요소들의 제 2 하위 세트를 포함하는, 상기 소스 테이블;
    상기 소스 요소들의 제 1 상위 세트의 것들에 대응하는 각자의 구성 요소들을 포함하는 적어도 하나의 구성 테이블로서, 각자의 구성 요소들 각각은 상기 소스 테이블의 대응하는 소스 요소와 연관된 값을 변환시키는 것과 관련된 데이터를 포함하는, 상기 적어도 하나의 구성 테이블;
    상기 제 1 차량 및 상기 제 2 차량에서 이용되는 차량 기능 입력들과 관련된 차량 기능 입력 요소들의 세트를 포함하는 차량 기능 입력 테이블; 및
    상기 차량 기능 입력 테이블의 차량 기능 입력 요소에 대응하는 소스 테이블의 소스 요소의 값을 결정하고, 상기 값을 변환 값으로 변환하고, 상기 변환 값을 대응하는 차량 기능 입력 요소와 연결하기 위한 구조를 포함하는, 컴퓨터 기반의 차량 제어 모듈.
  36. 제 35 항에 있어서,
    상기 적어도 하나의 구성 테이블은 소스 요소들의 제 1 상위 세트의 것들에 대응하는 각자의 모듈 입력 구성 요소들을 포함하는 모듈 입력 구성 테이블을 포함하며,
    각자의 모듈 입력 구성 요소들 각각은 상기 소스 테이블의 대응하는 소스 요소와 연관된 값과 관련된 제 1 변환을 달성하기 위한 데이터를 포함하는, 컴퓨터 기반의 차량 제어 모듈.
  37. 제 36 항에 있어서,
    상기 적어도 하나의 구성 테이블은 상기 차량 기능 입력 요소들의 것들에 대응하는 각자의 기능 입력 구성 요소들을 포함하는 기능 입력 구성 테이블을 더 포함하며,
    각자의 기능 입력 구성 요소들 각각은 상기 소스 테이블의 대응하는 소스 요소와 연관된 값과 관련된 제 2 변환을 달성하기 위한 데이터를 포함하는, 컴퓨터 기반의 차량 제어 모듈.
  38. 제 37 항에 있어서,
    상기 모듈 입력 구성 테이블의 각각의 요소는 상기 소스 테이블의 대응하는 요소와 연관된 값의 데이터 형식과 관련된 데이터를 포함하는, 컴퓨터 기반의 차량 제어 모듈.
  39. 제 38 항에 있어서,
    상기 기능 입력 구성 테이블의 각각의 요소는 상기 차량 기능 입력 테이블의 대응하는 요소와 연관된 상이한 데이터 형식과 관련된 데이터를 포함하고, 상기 값을 변환하는 것은 상기 데이터 형식을 상기 상이한 데이터 형식으로 변경하는 것을 포함하는, 컴퓨터 기반의 차량 제어 모듈.
  40. 제 37 항 내지 제 39 항 중 어느 한 항에 있어서,
    상기 값을 상기 변환 값으로 변환하는 것은 상기 제 1 변환 및 상기 제 2 변환에 기초하여 상기 변환 값을 결정하는 것을 포함하는, 컴퓨터 기반의 차량 제어 모듈.
  41. 제 35 항 내지 제 39 항 중 어느 한 항에 있어서,
    상기 구조는:
    라우팅 테이블로서,
    a) 연관된 차량 기능 입력 요소들과,
    b) 상기 차량 제어 모듈이 작동하고 있는 상기 제 1 차량 및 상기 제 2 차량 중 하나에 대응하는 소스 요소들의 상기 제 1 및 제 2 하위 세트들 중 하나의 연관된 소스 요소들과 관련된 엔트리들을 포함하는, 상기 라우팅 테이블; 및
    라우팅 엔진으로서, 상기 제 1 차량 및 상기 제 2 차량 중 하나에서 실행될 때 상기 라우팅 테이블의 각각의 엔트리에 대해,
    a) 상기 엔트리와 연관된 차량 기능 입력 요소와 연관된 소스 요소를 결정하고,
    b) 상기 연관된 소스 요소에 대응하는 제 1 및 제 2 구성 테이블들 각각의 각자의 구성 요소를 결정하고,
    c) 상기 소스 테이블의 대응하는 소스 요소와 연관된 값을 결정하고,
    d) 대응하는 각자의 구성 요소들에 기초하여, 상기 값을 상기 엔트리와 연관된 차량 기능 입력 요소와 연결되는 변환 값으로 변환하도록 구성되는, 상기 라우팅 엔진을 포함하는, 컴퓨터 기반의 차량 제어 모듈.
  42. 제 41 항에 있어서,
    상기 제 1 상위 세트는 하나 이상의 디폴트 값들과 관련된 소스 요소들의 제 3 하위 세트를 더 포함하며,
    상기 라우팅 테이블은,
    a) 연관된 차량 기능 입력 요소들과,
    b) 상기 제 3 하위 세트의 연관된 소스 요소들과 관련된 하나 이상의 엔트리들을 더 포함하고,
    상기 라우팅 엔진은 또한, 상기 제 1 차량 및 상기 제 2 차량 중 하나에서 실행될 때 상기 소스 요소들의 제 3 하위 세트와 관련된 상기 라우팅 테이블의 각각의 엔트리에 대해:
    a) 상기 엔트리와 연관된 상기 차량 기능 입력 요소와 연관된 소스 요소를 결정하고;
    b) 상기 연관된 소스 요소에 대응하는 제 1 및 제 2 구성 테이블들 각각의 각자의 구성 요소를 결정하고;
    c) 상기 소스 테이블의 대응하는 소스 요소와 연관된 값을 결정하고;
    d) 상기 대응하는 각자의 구성 요소들에 기초하여, 상기 값을 상기 엔트리와 연관된 차량 기능 입력 요소와 연결되는 변환 값으로 변환하도록 구성되는, 컴퓨터 기반의 차량 제어 모듈.
  43. 제 42 항에 있어서,
    상기 라우팅 테이블의 엔트리들의 수는 상기 차량 기능 입력 테이블의 요소들의 수와 동일한, 컴퓨터 기반의 차량 제어 모듈.
  44. 제 35 항 내지 제 39 항 중 어느 한 항에 있어서,
    컴퓨터 액세스 가능한 메모리를 포함하고, 상기 소스 테이블의 각각의 요소는 그 연관된 값이 저장되는 메모리 내의 각자의 어드레스를 포함하는, 컴퓨터 기반의 차량 제어 모듈.
  45. 제 35 항 내지 제 39 항 중 어느 한 항에 있어서,
    컴퓨터 액세스 가능한 메모리를 포함하고, 상기 차량 기능 입력 테이블의 각각의 요소는 그 연관된 변환 값이 저장되는 메모리 내의 각자의 어드레스를 포함하는, 컴퓨터 기반의 차량 제어 모듈.
  46. 제 35 항 내지 제 39 항 중 어느 한 항에 있어서,
    상기 값의 변환은:
    상기 값을 변경하지 않고 그대로 두고;
    상기 값을 비트 마스크하고;
    상기 값을 비트-시프트하고;
    상기 값에 미리 결정된 오프셋을 부가하고;
    상기 값을 미리 결정된 이득으로 곱하는 것 중 하나 이상을 포함하는, 컴퓨터 기반의 차량 제어 모듈.
  47. 제 35 항 내지 제 39 항 중 어느 한 항에 있어서,
    상기 제 1 차량 및 상기 제 2 차량 중 하나에서 구현된 하드웨어 장치들은:
    차량 네트워크의 버스;
    인코더;
    스위치;
    아날로그 센서; 및
    디지털 센서 중 하나 이상을 포함하는, 컴퓨터 기반의 차량 제어 모듈.
  48. 제 35 항 내지 제 39 항 중 어느 한 항에 있어서,
    상기 소스 요소들의 제 1 상위 세트의 적어도 하나의 요소는 상기 소스 요소들의 제 1 하위 세트 및 상기 소스 요소들의 제 2 하위 세트 모두의 멤버인, 컴퓨터 기반의 차량 제어 모듈.
  49. 제 35 항 내지 제 39 항 중 어느 한 항에 있어서,
    상기 소스 요소들의 제 1 상위 세트의 적어도 하나의 요소는 상기 소스 요소들의 제 1 하위 세트 또는 상기 소스 요소들의 제 2 하위 세트 중 단지 하나의 멤버인, 컴퓨터 기반의 차량 제어 모듈.
  50. 제 1 및 제 2 재료 취급 차량들 중 하나에서 작동할 수 있는 차량 제어 모듈을 위한 방법에 있어서:
    소스 요소들의 제 1 상위 세트를 포함하는 소스 테이블을 제공하는 단계로서, 상기 소스 요소들의 제 1 상위 세트는 상기 제 1 차량에 제공된 제 1 세트의 하드웨어 장치들과 관련된 소스 요소들의 제 1 하위 세트와, 상기 제 2 차량에 제공된 제 2 세트의 하드웨어 장치들과 관련된 소스 요소들의 제 2 하위 세트를 포함하는, 상기 소스 테이블을 제공하는 단계;
    상기 소스 요소들의 제 1 상위 세트의 것들에 대응하는 각자의 구성 요소들을 포함하는 적어도 하나의 구성 테이블을 제공하는 단계로서, 각자의 구성 요소들 각각이 상기 소스 테이블의 대응하는 소스 요소와 연관된 값을 변환시키는 것과 관련된 데이터를 포함하는, 상기 적어도 하나의 구성 테이블을 제공하는 단계;
    상기 제 1 차량 및 상기 제 2 차량에서 이용되는 차량 기능 입력들과 관련된 차량 기능 입력 요소들의 세트를 포함하는 차량 기능 입력 테이블을 제공하는 단계;
    상기 차량 기능 입력 테이블의 차량 기능 입력 요소에 대응하는 소스 테이블의 소스 요소의 값을 결정하는 단계;
    상기 값을 변환 값으로 변환하는 단계; 및
    상기 변환 값을 대응하는 차량 기능 입력 요소와 연결하는 단계를 포함하는, 차량 제어 모듈을 위한 방법.
  51. 제 50 항에 있어서,
    상기 적어도 하나의 구성 테이블은 소스 요소들의 제 1 상위 세트의 것들에 대응하는 각자의 모듈 입력 구성 요소들을 포함하는 모듈 입력 구성 테이블을 포함하며,
    각자의 모듈 입력 구성 요소들 각각은 상기 소스 테이블의 대응하는 소스 요소와 연관된 값과 관련된 제 1 변환을 달성하기 위한 데이터를 포함하는, 차량 제어 모듈을 위한 방법.
  52. 제 51 항에 있어서,
    상기 적어도 하나의 구성 테이블은 상기 차량 기능 입력 요소들의 것들에 대응하는 각자의 기능 입력 구성 요소들을 포함하는 기능 입력 구성 테이블을 포함하며,
    각자의 기능 입력 구성 요소들 각각은 상기 소스 테이블의 대응하는 소스 요소와 연관된 값과 관련된 제 2 변환을 달성하기 위한 데이터를 포함하는, 차량 제어 모듈을 위한 방법.
  53. 제 52 항에 있어서,
    상기 모듈 입력 구성 테이블의 각각의 요소는 상기 소스 테이블의 대응하는 요소와 연관된 값의 데이터 형식과 관련된 데이터를 포함하는, 차량 제어 모듈을 위한 방법.
  54. 제 53 항에 있어서,
    상기 기능 입력 구성 테이블의 각각의 요소는 상기 차량 기능 입력 테이블의 대응하는 요소와 연관된 상이한 데이터 형식과 관련된 데이터를 포함하는, 차량 제어 모듈을 위한 방법.
  55. 제 52 항 내지 제 54 항 중 어느 한 항에 있어서,
    상기 값을 변환 값으로 변환하는 단계는 상기 제 1 변환 및 상기 제 2 변환에 기초하여 상기 변환 값을 결정하는 단계를 포함하는, 차량 제어 모듈을 위한 방법.
  56. 제 50 항 또는 제 51 항에 있어서,
    a) 연관된 차량 기능 입력 요소들과,
    b) 상기 차량 제어 모듈이 작동하고 있는 제 1 차량 및 제 2 차량 중 하나에 대응하는 소스 요소들의 제 1 및 제 2 하위 세트들 중 하나의 연관된 소스 요소들과 관련된 엔트리들을 포함하는 라우팅 테이블을 제공하는 단계를 포함하며,
    상기 소스 요소의 값을 결정하는 단계는:
    a) 상기 엔트리와 연관된 차량 기능 입력 요소와 연관된 소스 요소를 결정하는 단계; 및
    b) 상기 소스 테이블의 대응하는 소스 요소와 연관된 값을 결정하는 단계를 포함하고,
    상기 값을 상기 변환 값으로 변환하는 단계는:
    a) 상기 연관된 소스 요소에 대응하는 제 1 및 제 2 구성 테이블들 각각의 각자의 구성 요소를 결정하는 단계; 및
    b) 상기 대응하는 각자의 구성 요소들에 기초하여, 상기 값을 상기 엔트리와 연관된 차량 기능 입력 요소와 연결되는 변환 값으로 변환하는 단계를 포함하는, 차량 제어 모듈을 위한 방법.
  57. 제 56 항에 있어서,
    상기 제 1 상위 세트는 하나 이상의 디폴트 값들과 관련된 소스 요소들의 제 3 하위 세트를 더 포함하며,
    상기 라우팅 테이블은,
    a) 연관된 차량 기능 입력 요소들과,
    b) 상기 제 3 하위 세트의 연관된 소스 요소들과 관련된 하나 이상의 엔트리들을 더 포함하고,
    상기 소스 요소들의 제 3 하위 세트와 관련된 라우팅 테이블의 각각의 엔트리에 대해:
    a) 상기 엔트리와 연관된 차량 기능 입력 요소와 연관된 소스 요소를 결정하는 단계;
    b) 상기 연관된 소스 요소에 대응하는 제 1 및 제 2 구성 테이블들 각각의 각자의 구성 요소를 결정하는 단계;
    c) 상기 소스 테이블의 대응하는 소스 요소와 연관된 값을 결정하는 단계; 및
    d) 상기 대응하는 각자의 구성 요소들에 기초하여, 상기 값을 상기 엔트리와 연관된 차량 기능 입력 요소와 연결되는 변환 값으로 변환하는 단계를 포함하는, 차량 제어 모듈을 위한 방법.
  58. 제 56 항에 있어서,
    상기 라우팅 테이블의 엔트리들의 수는 상기 차량 기능 입력 테이블의 요소들의 수와 동일한, 차량 제어 모듈을 위한 방법.
  59. 제 50 항 또는 제 51 항에 있어서,
    상기 소스 테이블의 각각의 요소는 그 연관된 값이 저장되는 메모리 내의 각자의 어드레스를 포함하는, 차량 제어 모듈을 위한 방법.
  60. 제 50 항 또는 제 51 항에 있어서,
    상기 차량 기능 입력 테이블의 각각의 요소는 그 연관된 변환 값이 저장되는 메모리 내의 각자의 어드레스를 포함하는, 차량 제어 모듈을 위한 방법.
  61. 제 50 항 또는 제 51 항에 있어서,
    상기 값을 변환하는 단계는:
    상기 값을 변경하지 않고 그대로 두고;
    상기 값을 비트마스크하고;
    상기 값을 비트-시프트하고;
    상기 값에 미리 결정된 오프셋을 부가하고;
    상기 값을 미리 결정된 이득으로 곱하는 것 중 하나 이상을 포함하는, 차량 제어 모듈을 위한 방법.
  62. 제 50 항 또는 제 51 항에 있어서,
    상기 제 1 차량 및 상기 제 2 차량 중 하나에 구현되는 하드웨어 장치들은:
    차량 네트워크의 버스;
    인코더;
    스위치;
    아날로그 센서; 및
    디지털 센서 중 하나 이상을 포함하는, 차량 제어 모듈을 위한 방법.
  63. 제 50 항 또는 제 51 항에 있어서,
    상기 소스 요소들의 제 1 상위 세트의 적어도 하나의 요소는 상기 소스 요소들의 제 1 하위 세트 및 상기 소스 요소들의 제 2 하위 세트 모두의 멤버인, 차량 제어 모듈을 위한 방법.
  64. 제 50 항 또는 제 51 항에 있어서,
    상기 소스 요소들의 제 1 상위 세트의 적어도 하나의 요소는 상기 소스 요소들의 제 1 하위 세트 또는 상기 소스 요소들의 제 2 하위 세트 중 단지 하나의 멤버인, 차량 제어 모듈을 위한 방법.
  65. 제 1 및 제 2 재료 취급 차량들 중 하나에서 작동할 수 있는 컴퓨터 기반의 차량 제어 모듈에 있어서:
    소스 요소들의 제 1 상위 세트를 포함하는 소스 테이블로서, 상기 소스 요소들의 제 1 상위 세트가 상기 제 1 차량에 제공된 제 1 세트의 하드웨어 장치들과 관련된 소스 요소들의 제 1 하위 세트와 상기 제 2 차량에 제공된 제 2 세트의 하드웨어 장치들과 관련된 소스 요소들의 제 2 하위 세트를 포함하는, 상기 소스 테이블;
    상기 소스 요소들의 제 1 상위 세트의 것들에 대응하는 각자의 모듈 입력 구성 요소들을 포함하는 모듈 입력 구성 테이블로서, 각자의 모듈 입력 구성 요소들 각각이 상기 소스 테이블의 대응하는 소스 요소와 연관된 값을 변환시키는 것과 관련된 데이터를 포함하는, 상기 모듈 입력 구성 테이블;
    상기 제 1 차량 및 상기 제 2 차량에서 이용되는 차량 기능 입력들과 관련된 차량 기능 입력 요소들의 세트를 포함하는 차량 기능 입력 테이블;
    라우팅 테이블로서,
    a) 연관된 차량 기능 입력 요소들과,
    b) 상기 차량 제어 모듈이 작동하고 있는 상기 제 1 차량 및 상기 제 2 차량 중 하나에 대응하는 소스 요소들의 상기 제 1 및 제 2 하위 세트들 중 하나의 연관된 소스 요소들과 관련된 엔트리들을 포함하는, 상기 라우팅 테이블; 및
    라우팅 엔진으로서, 상기 제 1 차량 및 상기 제 2 차량 중 하나에서 실행될 때 상기 라우팅 테이블의 각각의 엔트리에 대해,
    a) 상기 엔트리와 연관된 차량 기능 입력 요소와 연관된 소스 요소를 결정하고,
    b) 상기 연관된 소스 요소에 대응하는 모듈 입력 구성 테이블의 모듈 입력 구성 요소를 결정하고,
    c) 상기 소스 테이블의 대응하는 소스 요소와 연관된 값을 결정하고,
    d) 상기 대응하는 모듈 입력 구성 요소에 기초하여 상기 값을 변환 값으로 변환하도록 구성되는, 상기 라우팅 엔진을 포함하는, 컴퓨터 기반의 차량 제어 모듈.
  66. 제 65 항에 있어서,
    상기 차량 기능 입력 요소들의 것들에 대응하는 각자의 기능 입력 구성 요소들을 포함하는 기능 입력 구성 테이블로서, 각자의 기능 입력 구성 요소들 각각이 상기 소스 테이블의 대응하는 소스 요소와 연관된 변환 값의 추가의 변환을 달성하는 것과 관련된 데이터를 포함하는, 상기 기능 입력 구성 테이블을 포함하며,
    상기 라우팅 엔진은 또한 상기 제 1 차량 및 상기 제 2 차량 중 하나에서 실행될 때 상기 라우팅 테이블의 각각의 엔트리에 대해:
    e) 상기 대응하는 기능 입력 구성 요소에 기초하여 상기 변환 값을 추가의 변환 값으로 더 변환하고;
    f) 상기 추가의 변환 값을 상기 엔트리와 연관된 차량 기능 입력 요소와 연결하도록 구성되는, 컴퓨터 기반의 차량 제어 모듈.
  67. 제 65 항 또는 제 66 항에 있어서,
    상기 라우팅 테이블의 엔트리들의 수는 상기 차량 기능 입력 테이블의 요소들의 수와 동일한, 컴퓨터 기반의 차량 제어 모듈.
  68. 제 65 항 또는 제 66 항에 있어서,
    컴퓨터 액세스 가능한 메모리를 포함하고,
    상기 소스 테이블의 각각의 요소는 그 연관된 값이 저장되는 상기 메모리 내의 각자의 어드레스를 포함하는, 컴퓨터 기반의 차량 제어 모듈.
  69. 제 65 항 또는 제 66 항에 있어서,
    컴퓨터 액세스 가능한 메모리를 포함하고,
    상기 차량 기능 입력 테이블의 각 요소는 그 연관된 변환 값이 저장되는 상기 메모리 내의 각자의 어드레스를 포함하는, 컴퓨터 기반의 차량 제어 모듈.
  70. 제 65 항 또는 제 66 항에 있어서,
    상기 값을 변환하는 것은:
    상기 값을 변경하지 않고 그대로 두고;
    상기 값을 비트마스크하고;
    상기 값을 비트-시프트하고;
    상기 값에 미리 결정된 오프셋을 부가하고;
    상기 값을 미리 결정된 이득으로 곱하는 것 중 하나 이상을 포함하는, 컴퓨터 기반의 차량 제어 모듈.
  71. 제 65 항 또는 제 66 항에 있어서,
    상기 소스 요소들의 제 1 상위 세트의 적어도 하나의 요소는 상기 소스 요소들의 제 1 하위 세트 및 상기 소스 요소들의 제 2 하위 세트 모두의 멤버인, 컴퓨터 기반의 차량 제어 모듈.
  72. 제 65 항 또는 제 66 항에 있어서,
    상기 소스 요소들의 제 1 상위 세트의 적어도 하나의 요소는 상기 소스 요소들의 제 1 하위 세트 또는 상기 소스 요소들의 제 2 하위 세트 중 단지 하나의 멤버인, 컴퓨터 기반의 차량 제어 모듈.
KR1020187005045A 2015-07-28 2016-07-26 신호 스위치보드 및 입력 테이블을 갖춘 차량 제어 모듈 KR102644394B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201562197836P 2015-07-28 2015-07-28
US201562197857P 2015-07-28 2015-07-28
US62/197,836 2015-07-28
US62/197,857 2015-07-28
PCT/US2016/043977 WO2017019655A1 (en) 2015-07-28 2016-07-26 Vehicle control module signal switchboard and input tables

Publications (2)

Publication Number Publication Date
KR20180034510A KR20180034510A (ko) 2018-04-04
KR102644394B1 true KR102644394B1 (ko) 2024-03-07

Family

ID=56684252

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020187005045A KR102644394B1 (ko) 2015-07-28 2016-07-26 신호 스위치보드 및 입력 테이블을 갖춘 차량 제어 모듈
KR1020187004837A KR102644393B1 (ko) 2015-07-28 2016-07-26 신호 스위치보드 및 출력 테이블을 갖춘 차량 제어 모듈

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020187004837A KR102644393B1 (ko) 2015-07-28 2016-07-26 신호 스위치보드 및 출력 테이블을 갖춘 차량 제어 모듈

Country Status (9)

Country Link
US (2) US10106171B2 (ko)
EP (4) EP3329642B1 (ko)
KR (2) KR102644394B1 (ko)
CN (2) CN107709222B (ko)
AU (2) AU2016297998B2 (ko)
BR (2) BR112018000030A2 (ko)
CA (2) CA2991329C (ko)
MX (2) MX2018001206A (ko)
WO (2) WO2017019655A1 (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2016309788B2 (en) 2015-08-14 2020-10-22 Crown Equipment Corporation Steering and traction applications for determining a steering control attribute and a traction control attribute
EP3334637B1 (en) 2015-08-14 2020-03-18 Crown Equipment Corporation Model based diagnostics based on steering model
US10414288B2 (en) 2017-01-13 2019-09-17 Crown Equipment Corporation Traction speed recovery based on steer wheel dynamic
MX2019008407A (es) 2017-01-13 2019-09-16 Crown Equip Corp Desensibilizacion de timon en linea recta a alta velocidad.
EP3511288A1 (de) * 2018-01-10 2019-07-17 STILL GmbH Verfahren zur steuerung einer kleinfunktionalität eines flurförderzeugs mittels eines makro-programms und entsprechendes flurförderzeug
US11042637B1 (en) * 2018-02-01 2021-06-22 EMC IP Holding Company LLC Measuring code sharing of software modules based on fingerprinting of assembly code
KR102021447B1 (ko) * 2018-04-06 2019-09-16 서울대학교산학협력단 컴퓨팅 장치 및 그것의 동작 방법
EP3705970A1 (en) 2019-03-06 2020-09-09 Cargotec Patenter AB A vehicle comprising a vehicle accessory arrangement
EP3705969B1 (en) 2019-03-06 2021-06-23 Hiab AB Vehicle accessory arrangement
DE102019206658A1 (de) * 2019-05-09 2020-11-12 Zf Friedrichshafen Ag Verfahren und Vorrichtung zur Getriebesteuerung einer Arbeitsmaschine
KR20210065450A (ko) * 2019-11-27 2021-06-04 엘지전자 주식회사 로봇
JP2021135807A (ja) * 2020-02-27 2021-09-13 マツダ株式会社 車載機器制御装置及び車両制御システム
JP2021135808A (ja) * 2020-02-27 2021-09-13 マツダ株式会社 車載機器制御装置
JP7443820B2 (ja) * 2020-02-27 2024-03-06 マツダ株式会社 車載機器制御装置および車両制御システム

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090113186A1 (en) 2007-10-31 2009-04-30 Hitach., Ltd. Microcontroller and controlling system
US20130318214A1 (en) 2011-01-14 2013-11-28 Bae Systems Plc Data transfer system and method thereof
US20140188324A1 (en) * 2011-08-29 2014-07-03 Crown Equipment Corporation Vehicular navigation control interface
JP2014186694A (ja) 2013-03-25 2014-10-02 Murata Mach Ltd 自律移動式無人搬送車、及び、自律移動式無人搬送システム

Family Cites Families (75)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4084240A (en) 1976-07-28 1978-04-11 Chrysler Corporation Mass production of electronic control units for engines
DE2732781C3 (de) 1977-07-20 1995-04-06 Bosch Gmbh Robert Einrichtung zum Steuern von betriebsparameterabhängigen und sich wiederholenden Vorgängen
DE3306463A1 (de) 1983-02-24 1984-09-06 Jungheinrich Unternehmensverwaltung Kg, 2000 Hamburg Flurfoerderzeug
US4556943A (en) 1983-05-27 1985-12-03 Allied Corporation Multiprocessing microprocessor based engine control system for an internal combustion engine
AU612191B2 (en) 1987-11-06 1991-07-04 Lockin Pty Limited User modifiable fuel injection computer
DE4003507A1 (de) 1990-02-06 1991-08-08 Bosch Gmbh Robert Digitales steuergeraet, insbesondere zuend- und/oder einspritzsteuergeraet fuer kraftfahrzeuge
US5113344A (en) 1990-07-27 1992-05-12 Raymond Corporation Material handling vehicle identification tag
US5200900A (en) 1990-09-06 1993-04-06 John B. Adrain Automotive multiple memory selector apparatus with human interactive control
GB9019423D0 (en) 1990-09-06 1990-10-24 Gen Motors Luxembourg Operatio Electronic controller for vehicle
US5446665A (en) 1993-03-18 1995-08-29 John B. Adrain Automotive multiple memory selector apparatus
US5523948A (en) 1990-09-06 1996-06-04 Adrain; John B. Apparatus and method for modifying control of an originally manufactured engine control module
US5394327A (en) 1992-10-27 1995-02-28 General Motors Corp. Transferable electronic control unit for adaptively controlling the operation of a motor vehicle
US5832397A (en) 1993-01-21 1998-11-03 Hitachi, Ltd. Integrated wiring systems for a vehicle control system
JPH06276570A (ja) 1993-03-17 1994-09-30 Honda Motor Co Ltd 車両用制御システム
US6009370A (en) 1993-07-26 1999-12-28 Hitachi, Ltd. Control unit for vehicle and total control system therefor
EP0636955B1 (en) 1993-07-26 1998-11-04 Hitachi, Ltd. Control unit for vehicle and total control system therefor
US6269300B1 (en) 1995-03-29 2001-07-31 Caterpillar Inc. Method for producing production control software for a natural gas or diesel engine controller
JP3491419B2 (ja) 1995-12-04 2004-01-26 株式会社デンソー 電子制御装置
JP3460593B2 (ja) 1998-09-17 2003-10-27 株式会社デンソー 車両用制御装置
JP3692820B2 (ja) 1999-03-10 2005-09-07 株式会社デンソー 自動車用制御装置
US6560528B1 (en) 2000-03-24 2003-05-06 Internal Combustion Technologies, Inc. Programmable internal combustion engine controller
JP4427860B2 (ja) 2000-03-24 2010-03-10 株式会社デンソー 車両用制御装置及び記録媒体
DE10022423A1 (de) 2000-05-09 2001-11-15 Bosch Gmbh Robert Verfahren zur Steuerung von Geräten und Gerät in einem Kommunikationsnetz in einem Kraftfahrzeug
DE10101311C2 (de) 2001-01-12 2002-12-12 Bosch Gmbh Robert Fahrzeugsteuergerät sowie Steuerungsverfahren
US7506097B2 (en) 2001-09-25 2009-03-17 Caterpillar, Inc. Method and apparatus for installing data in a memory on a work machine
KR100980793B1 (ko) 2001-11-28 2010-09-10 에볼루션 로보틱스, 인크. 로봇을 위한 하드웨어 추상화 계층에서의 센서 및액추에이터 추상화 및 집단화
DE10318470A1 (de) 2002-05-08 2004-07-22 Volkswagen Ag Verfahren und Vorrichtung zur Programmierung von Steuergeräten eines Kraftfahrzeuges
US20050225949A1 (en) 2002-05-31 2005-10-13 Otto Kollmannsberger Circuit arrangement for controlling electromotive driving means of a mobile working machine, particularly of an industrial truck
DE10233443A1 (de) 2002-07-23 2004-01-29 Still Gmbh Flurförderzeug mit einem elektrischen Antrieb
US6760659B1 (en) 2002-11-26 2004-07-06 Controls, Inc. Device and method for engine control
US6965326B2 (en) * 2003-07-21 2005-11-15 General Motors Corporation Automated electronic module configuration within a vehicle
CN1312605C (zh) * 2003-08-18 2007-04-25 刘恒春 基于多协议通信嵌入式模块结构网络控制平台
EP1671027A4 (en) 2003-09-10 2014-12-10 Pcrc Products DEVICE AND METHOD FOR CONTROLLING THE OPERATIONS OF AN INTERNAL COMBUSTION ENGINE EQUIPPED WITH AN ELECTRONIC INJECTION SYSTEM
US6978198B2 (en) 2003-10-23 2005-12-20 General Motors Corporation System and method to load vehicle operation software and calibration data in general assembly and service environment
DE102004018384B4 (de) 2004-04-16 2007-07-05 Jungheinrich Ag Verfahren zur Montage eines Flurförderzeugs
DE102004044778A1 (de) 2004-09-16 2006-04-06 Daimlerchrysler Ag Elektroniksystem für ein Kraftfahrzeug
DE102004055875A1 (de) 2004-11-19 2006-05-24 Robert Bosch Gmbh Verfahren zum anwendungsspezifischen Konfigurieren einer Software
JP4437468B2 (ja) 2004-12-06 2010-03-24 富士通テン株式会社 車両用電子制御装置
US20060136626A1 (en) 2004-12-17 2006-06-22 Avritch Steven A Reconfigurable input/output interface
JP4728020B2 (ja) 2005-03-17 2011-07-20 日立オートモティブシステムズ株式会社 車両制御用ソフトウェア及び車両制御装置
JP4337768B2 (ja) * 2005-04-25 2009-09-30 トヨタ自動車株式会社 車両統合制御装置
US7590768B2 (en) 2005-09-23 2009-09-15 Joseph Gormley Control and interconnection system
US8478506B2 (en) 2006-09-29 2013-07-02 Caterpillar Inc. Virtual sensor based engine control system and method
US7899610B2 (en) 2006-10-02 2011-03-01 Inthinc Technology Solutions, Inc. System and method for reconfiguring an electronic control unit of a motor vehicle to optimize fuel economy
US10013815B2 (en) 2006-12-13 2018-07-03 Crown Equipment Corporation Information system for industrial vehicles
ATE552675T1 (de) * 2006-12-14 2012-04-15 Bayerische Motoren Werke Ag Verfahren zur vernetzung von steuergeräten eines kraftfahrzeugs, darauf beruhendes datenbussystem und computerprogramm-produkt
US7870223B2 (en) 2007-02-27 2011-01-11 Rockwell Automation Technologies, Inc. Services associated with an industrial environment employing controller engine instances
US8708349B1 (en) * 2007-03-12 2014-04-29 Mitchell Olin Setzer, SR. Portable transfer apparatus for moving items
WO2009023895A1 (en) 2007-08-23 2009-02-26 Adaptronic Electronics Pty Ltd Engine control system
DE102007059524B4 (de) 2007-12-11 2009-09-17 Continental Automotive Gmbh Verfahren zum Erzeugen einer Betriebssoftware auf einem Steuergerät für ein Kraftfahrzeug sowie Steuergerät
JP5123321B2 (ja) 2008-01-24 2013-01-23 株式会社オートネットワーク技術研究所 機器制御装置及び機器制御プログラム
GB2457279A (en) 2008-02-08 2009-08-12 Airmax Group Plc Configuration of an electronic control system for controlling the operation of at least one component of a vehicle
US8060290B2 (en) 2008-07-17 2011-11-15 Honeywell International Inc. Configurable automotive controller
WO2010030797A1 (en) 2008-09-12 2010-03-18 Crown Equipment Corporation Monomast for a materials handling vehicle
US8943467B2 (en) 2009-01-26 2015-01-27 GM Global Technology Operations LLC On-target rapid control prototyping
KR101312964B1 (ko) * 2009-04-01 2013-10-01 스미도모쥬기가이고교 가부시키가이샤 하이브리드형 작업기계
US20110022545A1 (en) 2009-07-24 2011-01-27 A Truly Electric Car Company Re-inventing carmaking
BR112012007021A2 (pt) 2009-09-29 2016-04-12 Volvo Technology Corp método e sistema para preparação de danos de saída de sensor de uma montagem de sensor para processamento adicional em pelo menos uma aplicação e/ou pelo menos um algoritimo
JP5204073B2 (ja) * 2009-09-30 2013-06-05 三菱重工業株式会社 電動車両用制御装置、並びに、これを備えた電動車両及びフォークリフト
US8521328B2 (en) 2009-12-10 2013-08-27 The Boeing Company Control system for robotic vehicles
US20120123614A1 (en) 2010-11-17 2012-05-17 INRO Technologies Limited Method and apparatus for virtualizing industrial vehicles to automate task execution in a physical environment
US8561897B2 (en) * 2010-11-18 2013-10-22 Sky-Trax, Inc. Load tracking utilizing load identifying indicia and spatial discrimination
DE102010053488A1 (de) 2010-12-04 2012-06-06 Audi Ag Verfahren zum reversiblen, manipulationssicheren Codieren eines Motorsteuergeräts für ein Kraftfahrzeug und Motorsteuergerät
US9104443B2 (en) 2011-03-31 2015-08-11 GM Global Technology Operations LLC Control software with programmable arrays that are configurable for vehicles having different propulsion system configurations
DE102011087509A1 (de) * 2011-12-01 2013-06-06 Robert Bosch Gmbh Sensorübertragungsvorrichtung und Verfahren zur Übertragung von Nutzdaten von einer Mehrzahl von Sensoren an eine Bussteuervorrichtung für ein Fahrzeug
DE102012202323A1 (de) 2012-02-16 2013-08-22 Jungheinrich Aktiengesellschaft Gewerbliches Fahrzeug, insbesondere Gabelstapler oder Flurförderzeug, mit einem fahrzeugseitig fest angebrachten Datenspeicher in Zuordnung zu einer parametrierbaren elektronischen Steueranordnung
DE102012206745A1 (de) 2012-04-24 2013-10-24 Mtu Friedrichshafen Gmbh Verfahren zum Betrieb einer Brennkraftmaschine, Brennkraftmaschine und Wartungssystem für eine Brennkraftmaschine, selbstausführbares Computerprogrammprodukt und nichtflüchtiges Speichermedium
JP5672275B2 (ja) 2012-08-28 2015-02-18 株式会社デンソー ネットワークシステム
JP5936703B2 (ja) * 2012-11-01 2016-06-22 日産自動車株式会社 ハイブリッド車両のモード切り替え制御装置
WO2014099886A1 (en) 2012-12-18 2014-06-26 Agco Corporation Universal software platform for work vehicles
DE102013102082A1 (de) 2013-03-04 2014-09-04 Still Gmbh Verfahren zur Integration von Anwendungen in eine Steuerung eines Flurförderzeugs
DE102013210077A1 (de) 2013-05-29 2014-12-04 Robert Bosch Gmbh Verfahren zur Bereitstellung einer generischen Schnittstelle sowie Mikrocontroller mit generischer Schnittstelle
DE102013210182A1 (de) 2013-05-29 2014-12-04 Robert Bosch Gmbh Verfahren zur Bereitstellung einer generischen Schnittstelle sowie Mikrocontroller mit generischer Schnittstelle
DE102013210064A1 (de) 2013-05-29 2014-12-04 Robert Bosch Gmbh Verfahren zur Bereitstellung einer generischen Schnittstelle sowie Mikrocontroller mit generischer Schnittstelle
WO2016060132A1 (ja) * 2014-10-14 2016-04-21 日立建機株式会社 ハイブリッド式建設機械

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090113186A1 (en) 2007-10-31 2009-04-30 Hitach., Ltd. Microcontroller and controlling system
US20130318214A1 (en) 2011-01-14 2013-11-28 Bae Systems Plc Data transfer system and method thereof
US20140188324A1 (en) * 2011-08-29 2014-07-03 Crown Equipment Corporation Vehicular navigation control interface
JP2014186694A (ja) 2013-03-25 2014-10-02 Murata Mach Ltd 自律移動式無人搬送車、及び、自律移動式無人搬送システム

Also Published As

Publication number Publication date
BR112018000025A2 (pt) 2018-09-04
US20170028993A1 (en) 2017-02-02
EP4289781A1 (en) 2023-12-13
AU2016297998B2 (en) 2020-07-16
WO2017019655A1 (en) 2017-02-02
AU2016298171A1 (en) 2018-01-18
MX2018001207A (es) 2018-04-24
AU2016297998A1 (en) 2018-01-18
WO2017019655A8 (en) 2017-09-14
EP3328785A1 (en) 2018-06-06
EP3329642B1 (en) 2023-07-12
US10106171B2 (en) 2018-10-23
CA2991329A1 (en) 2017-02-02
KR102644393B1 (ko) 2024-03-07
KR20180034510A (ko) 2018-04-04
CN107852361B (zh) 2021-04-16
WO2017019658A1 (en) 2017-02-02
CN107852361A (zh) 2018-03-27
CN107709222B (zh) 2019-11-19
CA2988675A1 (en) 2017-02-02
EP3328785B1 (en) 2023-07-12
KR20180033535A (ko) 2018-04-03
BR112018000030A2 (pt) 2018-09-04
US20170028994A1 (en) 2017-02-02
EP3329642A1 (en) 2018-06-06
CN107709222A (zh) 2018-02-16
MX2018001206A (es) 2018-04-24
CA2991329C (en) 2023-05-16
AU2016298171B2 (en) 2021-10-28
US10427692B2 (en) 2019-10-01
EP4289780A1 (en) 2023-12-13

Similar Documents

Publication Publication Date Title
KR102644394B1 (ko) 신호 스위치보드 및 입력 테이블을 갖춘 차량 제어 모듈
EP0661630A2 (en) Compilation method of information contained in GDMO name bindings
EP1238334A1 (en) Preparation of a software configuration using an xml type programming language
CN111835646B (zh) 一种基于Vue的模块化路由管理方法及权限控制方法
JP2005196286A (ja) リアルタイムアプリケーションプログラムを動作可能なオペレーティングシステム及びその制御方法、共有ライブラリをロードする方法
CN111954871A (zh) 提供在车辆的控制设备可实施的应用的应用数据的方法,控制设备及其校准方法,分析处理装置
CN103853535A (zh) 修改中间件的方法和装置
WO2018116737A1 (ja) 電子制御装置、電子制御システム、及び電子制御方法
JP5895616B2 (ja) 情報処理装置およびプログラム実行方法
CN110072255B (zh) 用于以有效带宽利用率传输信号的方法和***
CN116208661B (zh) 功能配置适配方法、装置、车辆及存储介质
CN112498358A (zh) 车辆轴荷确定方法、装置、介质及电子设备
JP5079166B1 (ja) シンボルテーブル生成方法、周辺機器との通信方法およびプログラマブルロジックコントローラ
US20100204809A1 (en) Method for Operating an Automation System, Corresponding Computer Program and System or Device that Operates According to the Method
CN113391568B (zh) 适配用于机器人的多个底盘的中间件及控制方法
CN117793190A (zh) 元模型文件的生成方法、装置和存储介质及电子设备
CN118393955A (en) Unmanned vehicle data acquisition method, chassis domain controller and equipment
CN114919652A (zh) 随速摩擦力的控制方法、装置、设备及计算机存储介质
CN117022434A (zh) 差动转向控制方法及两级转向***
JPH0214326A (ja) 言語翻訳システム
JPH0415826A (ja) ワンチップマイクロコンピュータ

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant