具有信号交换机板和输入表的车辆控制模块的制作方法

文档序号:13740859阅读:258来源:国知局
具有信号交换机板和输入表的车辆控制模块的制作方法
本发明一般涉及物料搬运车辆的操作,更具体地说,涉及对物料搬运车辆的基于软件的控制。
背景技术
:预计叉车和其他类型的工业车辆将在各种不同的条件下操作。另外,这样的车辆通常包括许多不同的功能系统,诸如用于控制车辆行驶速度的牵引系统和用于控制车辆行驶方向的转向系统。存在各种各样的具有不同硬件传感器、输入和输出的车辆。此外,不同类型的车辆也可以具有由软件仿真或模拟的不同功能系统。例如,驾驶员所坐的车辆可能具有与操作员在其旁边行走的车辆不同的功能。因此,每种车辆类型通常具有专门针对车辆上存在的硬件设备而设计的自己的控制系统以及适用于特定车辆的具体功能系统。技术实现要素:本发明的各方面涉及一种能够在第一物料搬运车辆和第二物料搬运车辆之一上运行的基于计算机的车辆控制模块。该模块可以包括:a)包括模块输入元素的超集的模块输入表,其中,模块输入元素的超集包括与第一车辆上设置的第一组硬件设备有关的输入元素的第一子集以及与第二车辆上设置的第二组硬件设备有关的模块输入元素的第二子集;b)至少一个配置表,所述至少一个配置表包括与所述模块输入元素的超集中的一些对应的相应配置元素,其中,每个相应配置元素包括与实现同所述模块输入表的对应模块输入元素相关联的值的变换有关的数据;以及c)与在第一车辆和第二车辆上使用的车辆功能输入有关的车辆功能输入元素。该模块还可包括基于计算机的结构,用于确定与对应于车辆功能输入元素的模块输入表的模块输入元素相关联的值,将该值变换成变换后的值,并将变换后的值与对应的车辆功能输入元素链接。作为示例,在第一车辆和第二车辆之一上实现的硬件设备包括下列各项中的一个或多个:车辆网络的总线;编码器;交换机;模拟传感器;以及数字传感器。具体地,基于计算机的结构可以包括路由表,所述路由表包括与下列各项有关的值/条目:a)相关联的车辆功能输入元素,以及b)与车辆控制模块在其上运行的第一车辆和第二车辆之一对应的模块输入元素的第一子集和第二子集中的一个中的相关联的模块输入元素。此外,确定与模块输入元素相关联的值可以包括:a)确定与同所述条目相关联的车辆功能输入元素相关联的模块输入元素;以及b)确定与模块输入表中的对应模块输入元素相关联的值。相应地,模块可以包括计算机可访问的存储器,其中模块输入表中的每个元素包括存储器中存储其相关联的值的相应地址。根据本发明的各方面和各实施例,车辆控制模块可以包括模块输入数据结构,该模块输入数据结构包括模块输入变量的超集,其中,模块输入变量的超集包括与第一车辆上设置的第一组硬件设备有关的模块输入变量的第一子集以及与第二车辆上设置的第二组硬件设备有关的模块输入变量的第二子集;并且其中,每个模块输入元素对应于模块输入变量的超集中的一个,并且包括对应的模块输入变量在模块输入数据结构内的偏移量。结果,基于计算机的结构可以包括路由表,所述路由表包括与下列各项有关的条目:a)相关联的车辆功能输入元素,以及b)与车辆控制模块在其上运行的第一车辆和第二车辆之一对应的模块输入元素的第一子集和第二子集中的一个中的相关联的模块输入元素。确定与模块输入元素相关联的值包括:a)确定与同所述条目相关联的所述车辆功能输入元素相关联的所述模块输入元素,b)确定所述模块输入数据结构的地址,c)基于所述模块输入元素和所述模块输入数据结构的地址来构建复合地址,以及d)确定与复合地址相关联的值。模块的至少一个配置表可以包括模块输入配置表,该模块输入配置表包括与模块输入元素的超集中的一些对应的相应模块输入配置元素,其中每个相应模块输入配置元素包括实现与同模块输入表中的对应模块输入元素相关联的值有关的第一变换的数据。所述至少一个配置表还可以包括或可替代地包括功能输入配置表,该功能输入配置表包括与车辆功能输入元素中的一些对应的相应功能输入配置元素,其中每个相应功能输入配置元素包括实现与同模块输入表中的对应模块输入元素相关联的值有关的第二变换的数据。结果,将该值变换成变换后的值可以包括:基于第一变换和/或第二变换来确定变换后的值。变换所述值包括以下各项中的一个或多个:使所述值保持不变;对所述值进行比特掩码;对所述值进行比特移位;将预定偏移量与所述值相加;以及将所述值乘以预定增益。此外,模块输入配置表中的每个元素可包括与同模块输入表中的对应的模块输入元素相关联的值的数据类型有关的数据,并且功能输入配置表中的每个元素包括与同对应的车辆功能输入元素相关联的不同数据类型有关的数据。在这种情况下,变换所述值可以包括将数据类型改变为不同数据类型。车辆控制模块还可以包括计算机可访问的存储器,其中,每个车辆功能输入元素可包括存储器中存储其相关联的变换后的值的相应地址。对于模块输入元素,a)模块输入元素的超集中的至少一个模块输入元素可以是模块输入元素的第一子集和模块输入元素的第二子集两者中的成员,以及b)模块输入元素的超集中的至少一个模块输入元素可以是模块输入元素的第一子集或模块输入元素的第二子集中的仅一个子集中的成员。对于模块输入变量,a)模块输入变量的超集中的至少一个模块输入变量可以是模块输入变量的第一子集和模块输入变量的第二子集两者中的成员,以及b)模块输入变量的超集中的至少一个模块输入变量可以是模块输入变量的第一子集或模块输入变量的第二子集中的仅一个子集中的成员。本发明的另一方面涉及一种能够在第一物料搬运车辆和第二物料搬运车辆之一上运行的车辆控制模块的方法。该方法包括:a)提供包括模块输入元素的超集的模块输入表,其中,模块输入元素的超集包括与第一车辆上设置的第一组硬件设备有关的模块输入元素的第一子集以及与第二车辆上设置的第二组硬件设备有关的模块输入元素的第二子集;b)提供至少一个配置表,所述至少一个配置表包括与所述模块输入元素的超集中的一些对应的相应配置元素,其中,每个相应配置元素包括与实现同所述模块输入表中的对应的模块输入元素相关联的值的变换有关的数据;以及c)提供与在第一车辆和第二车辆上使用的车辆功能输入有关的车辆功能输入元素。该方法还可以包括:确定与对应于车辆功能输入元素的模块输入表中的模块输入元素相关联的值;将该值变换成变换后的值;以及将变换后的值与对应的车辆功能输入元素链接。本发明的一个方面涉及一种能够在第一物料搬运车辆和第二物料搬运车辆之一上运行的基于计算机的车辆控制模块。该模块包括:源表,所述源表包括源元素的第一超集,其中,源元素的第一超集包括与第一车辆上设置的第一组硬件设备有关的源元素的第一子集以及与第二车辆上设置的第二组硬件设备有关的源元素的第二子集。该模块还包括至少一个配置表,所述至少一个配置表包括与所述源元素的第一超集中的一些对应的相应配置元素,其中,每个相应配置元素包括与实现同所述源表中的对应的源元素相关联的值的变换有关的数据。还包括车辆功能输入表,所述车辆功能输入表包括与在第一车辆和第二车辆上使用的车辆功能输入有关的一组车辆功能输入元素。该模块还包括结构,用于确定与车辆功能输入表中的车辆功能输入元素对应的源表中的源元素的值,将该值变换成变换后的值,并将变换后的值与对应的车辆功能输入元素链接。本发明的另一方面涉及一种能够在第一物料搬运车辆和第二物料搬运车辆之一上运行的车辆控制模块的方法。所述方法包括:提供源表,所述源表包括源元素的第一超集,其中,源元素的第一超集包括与第一车辆上设置的第一组硬件设备有关的源元素的第一子集以及与第二车辆上设置的第二组硬件设备有关的源元素的第二子集。所述方法也可包括提供至少一个配置表,所述至少一个配置表包括与源元素的第一超集中的一些对应的相应配置元素,其中,每个相应配置元素包括与实现同所述源表中的对应的源元素相关联的值的变换有关的数据。可提供车辆功能输入表,所述车辆功能输入表包括与在第一车辆和第二车辆上使用的车辆功能输入有关的一组车辆功能输入元素。所述方法还可以包括:a)确定与车辆功能输入表中的车辆功能输入元素对应的源表中的源元素的值;b)将该值变换成变换后的值;以及c)将变换后的值与对应的车辆功能输入元素链接。根据本发明的各方面和各实施例,源表中的每个元素和车辆功能输入表中的每个元素可以包括存储器中存储其相关联的值的相应地址。此外,变换所述值可以包括以下各项中的一个或多个:使所述值保持不变;对所述值进行比特掩码;对所述值进行比特移位;将预定偏移量与所述值相加;以及将所述值乘以预定增益。在第一车辆和第二车辆之一上实现的硬件设备可包括下列各项中的一个或多个:车辆网络的总线;编码器;交换机;模拟传感器;以及数字传感器。根据本发明的一些方面和实施例,所述至少一个配置表可以包括模块输入配置表,所述模块输入配置表包括与所述源元素的第一超集中的一些对应的相应模块输入配置元素,其中,每个相应模块输入配置元素包括实现与同源表中的对应的源元素相关联的值的第一变换有关的数据。附加地或可替代地,所述至少一个配置表还可包括功能输入配置表,该功能输入配置表包括与车辆功能输入元素中的一些对应的相应功能输入配置元素,其中,每个相应功能输入配置元素包括实现与同源表中的对应的源元素相关联的值有关的第二变换的数据。因此,将该值变换成变换后的值可以包括:基于第一变换和/或第二变换来确定变换后的值。此外,根据本发明的各方面和各实施例,所述方法可以包括:提供包括与以下各项有关的条目的路由表:a)相关联的车辆功能输入元素,以及b)与车辆控制模块在其上运行的第一车辆和第二车辆之一对应的源元素的第一子集和第二子集之一中的相关联的源元素。因此,确定源元素的值可以包括:a)确定与同所述条目相关联的所述车辆功能输入元素相关联的源元素,以及b)确定与源表中的对应的源元素相关联的值,以及将值变换成变换后的值可以包括:a)确定与相关联的源元素对应的第一配置表和第二配置表中的每个中的相应配置元素,以及b)基于对应的相应配置元素,将该值变换成变换后的值,将该变换后的值链接到与条目相关联的车辆功能输入元素。此外,路由表中的条目的数量可以等于车辆功能输入表中的元素的数量。另外,根据本发明的各方面和各实施例,第一超集还可以包括与一个或多个默认值有关的源元素的第三子集,并且路由表可以包括与以下各项有关的一个或多个条目:a)相关联的车辆功能输入元素,以及b)第三子集中的相关联的源元素。对于与源元素的第三子集有关的路由表中的每个条目,可以执行以下步骤:a)确定与同所述条目相关联的所述车辆功能输入元素相关联的源元素,b)确定与相关联的源元素对应的第一配置表和第二配置表中的每个中的相应配置元素,c)确定与源表中的对应的源元素相关联的值,以及d)基于对应的相应配置元素,将该值变换成变换后的值,该变换后的值链接到与条目相关联的车辆功能输入元素。根据各个方面和实施例,模块输入配置表中的每个元素包括与源表中的对应的元素相关联的值的数据类型有关的数据,并且功能输入配置表中的每个元素包括与同车辆功能输入表中的对应的元素相关联的不同数据类型有关的数据。因此,变换所述值可以包括将数据类型改变为不同数据类型。根据本发明的各方面和各实施例,源元素的第一超集中的至少一个元素是源元素的第一子集和源元素的第二子集两者中的成员。可替代地或附加地,源元素的第一超集中的少一个元素是源元素的第一子集或源元素的第二子集中的仅一个子集中的成员。本发明的再一个方面涉及一种能够在第一物料搬运车辆和第二物料搬运车辆之一上操运行的基于计算机的车辆控制模块。所述模块包括:a)源表,所述源表包括源元素的第一超集,其中,源元素的第一超集包括与第一车辆上设置的第一组硬件设备有关的源元素的第一子集以及与第二车辆上设置的第二组硬件设备有关的源元素的第二子集;b)模块输入配置表,所述模块输入配置表包括与源元素的第一超集中的一些对应的相应模块输入配置元素,其中,每个相应模块输入配置元素包括与实现同所述源表中的对应的源元素相关联的值的变换有关的数据;以及c)车辆功能输入表,所述车辆功能输入表包括与在第一车辆和第二车辆上使用的车辆功能输入有关的一组车辆功能输入元素。该模块还可以包括路由表,所述路由表包括与以下各项有关的条目:a)相关联的车辆功能输入元素,以及b)与车辆控制模块在其上运行的第一车辆和第二车辆之一对应的源元素的第一子集和第二子集之一中的相关联的源元素。所述模块中所包括的路由引擎,当所述路由引擎在第一车辆和第二车辆之一上执行时,对于所述路由表中的每个条目,所述路由引擎被配置为:a)确定与同所述条目相关联的所述车辆功能输入元素相关联的源元素,b)确定与相关联的源元素对应的模块输入配置表中的模块输入配置元素,c)确定与源表中的对应的源元素相关联的值,以及d)基于对应的模块输入配置元素,将该值变换成变换后的值。车辆控制模块还可以包括:功能输入配置表,所述功能输入配置表包括与车辆功能输入元素中的一些对应的相应功能输入配置元素,其中,每个相应功能输入配置元素包括与实现同所述源表中的对应的源元素相关联的变换后的值的进一步变换有关的数据。当路由引擎在第一车辆和第二车辆之一上执行时,对于所述路由表中的每个条目,路由引擎可以进一步被配置为: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包括主体或动力单元12,主体或动力单元12包括限定车辆10的主要结构组件的框架14,并且容纳电池15。车辆10还包括耦合到第一外伸支架和第二外伸支架18的一对叉侧支撑轮16、安装在动力单元12的后部12a的第一拐角附近的从动与转向轮20以及安装到动力单元12的后部12a的第二拐角的脚轮(未示出)。车轮16、20允许车辆10在地面上移动。驾驶室22位于动力单元12内,用于容纳驾驶车辆10的驾驶员。在驾驶室22内设置有舵柄旋钮24,用于控制车辆10的转向。车辆10的运动(向前或向后)的速度和方向由操作员经由设置在操作员座椅28附近的多功能控制手柄26来控制,该控制手柄26可以控制如本领域普通技术人员可以理解的一个或多个其他车辆功能。车辆10还包括高架防护装置30,高架防护装置30包括固定到车辆框架14的垂直支撑结构32。车辆10的负载搬运组件40通常包括桅杆组件42和可沿桅杆组件42竖直移动的滑架组件44。桅杆组件42定位在外伸支架18之间,并且包括固定到框架14的固定桅杆构件46以及嵌套的第一可移动桅杆构件48和第二可移动桅杆构件50。应注意的是,桅杆组件42可以包括比图1中所示的两个(即第一可移动桅杆构件48和第二可移动桅杆构件50)更多或更少的可移动桅杆构件。托架组件44包括传统结构,该传统结构包括到达组件52、叉架54和包括一对叉56a、56b的叉结构。如本文中所定义的可移动组件47包括下部和上部可移动桅杆构件48、50和滑架组件44。桅杆组件42可以被配置为如在于2014年5月6日授予给stevenc.billger等人并转让给申请人crownequipmentcorporation的美国专利第8714311号中所述的单体桅杆,其全部公开内容通过引用合并于此。图1的车辆10是作为示例提供的,并且在本发明的范围内设想了许多不同类型的物料搬运车辆。如下文详细描述的那样,提供了车辆控制模块的各个方面,即使车辆可能是不同类型的,也允许在各种车辆上使用许多相同的组件。图2a描绘了根据本文中示出和描述的一个或多个实施例的用于提供车辆控制模块(vcm)200中的控制逻辑和软件应用的计算环境的块级视图。在所示的实施例中,vcm200包括一个或多个处理器或微控制器216、输入/输出硬件218、网络接口硬件220、数据存储组件222和存储器组件202。数据存储组件222和存储器组件202可以各自被配置为易失性和/或非易失性存储器,因此可以包括随机存取存储器(包括sram、dram和/或其他类型的ram)、闪存、安全数字(sd)存储器、寄存器、紧凑盘(cd)、数字多功能盘(dvd)和/或其他类型的非暂时性计算机可读介质。旨在车辆10关闭并重新启动之后可用的任何存储的信息可有利地存储在非易失性存储器中。此外,取决于特定实施例,上述非暂时性计算机可读介质可以驻留在vcm200内和/或vcm200外部。另外,存储器组件202可以存储可由一个或多个处理器或微控制器216执行的软件或应用。因此,存储器组件202可以存储操作应用或逻辑204、牵引应用208、转向应用206、提升应用210和配件应用212。操作逻辑204可以包括操作系统和其他软件,例如用于管理vcm200的组件的与诊断有关的应用。牵引应用208可以配置有用于促进对车辆10的最佳牵引力控制的一个或多个算法和参数。转向应用206可以配置有用于促进对车辆10的最佳转向控制的一个或多个算法和参数。提升应用210可以包括用于促进对车辆10的最佳提升控制的一个或多个算法和参数,该提升应用210用作用来提升和降低车辆10的可移动组件47的主要负载搬运组件系统。另外,配件应用212可以包括用于提供对车辆10的配件(诸如辅助负载搬运组件系统,其执行诸如滑架组件44的倾斜和侧移之类的附加任务)的控制的一个或多个算法和参数。在图2中还包括了本地通信接口214,本地通信接口214可以被实现为总线或其他通信接口,例如串行外围接口(spi)或串行命令接口(sci),以促进vcm200的组件之间的通信。一个或多个处理器或微控制器204可以包括可操作以接收并执行(诸如来自数据存储组件222和/或存储器组件202)的指令的任何处理组件。输入/输出硬件218可以包括监视器、定位系统、键盘、触摸屏、鼠标、打印机、图像捕捉设备、麦克风、扬声器、陀螺仪、指南针和/或用于接收、发送和/或呈现数据的其他设备,和/或被配置为与前述各项进行接口连接。网络接口硬件220可以包括任何有线或无线联网硬件,包括天线、调制解调器、lan端口、无线保真(wi-fi)卡、wimax卡、移动通信硬件和/或用于与其他网络和/或设备进行通信的其他硬件,和/或被配置为用于与前述各项进行通信。通过这种连接,可以促进vcm200与其他计算设备之间的通信,其他计算设备包括与车辆10上的can总线或类似网络耦合的其他组件。应该理解的是,图2a中所示的组件仅仅是示例性的,而不是旨在限制本公开的范围。尽管图2a中的组件被示为驻留在vcm200内,但这仅仅是一个示例。在一些实施例中,这些组件中的一个或多个可驻留在vcm200外部。还应该理解,虽然图2a中的vcm200被示为单个设备,但这也仅仅是一个示例。在一些实施例中,牵引应用208、转向应用206、提升应用210、和/或配件应用212可驻留在不同的设备上。此外,虽然vcm200被示为将牵引应用208、转向应用206、提升应用210和配件应用212作为单独的逻辑组件,但这也只是一个示例。在一些实施例中,单个、复合软件应用可以使vcm200提供所描述的功能。还应该理解,vcm200可以与车辆10的各种传感器和其他控制电路进行通信,以协调对车辆10的手动操作和自动操作的各种条件。参考图2b,vcm200的软件体系架构的概念视图包括顶部应用层230,该顶部应用层230通常包括基础设施框232、叉积模型和/或卡车功能框234以及位于基础设施框232和叉积模型框234之间的模型接口框236。应用层230还可以包括许多通信相关的应用240,其允许其他应用通过车辆10上实现的各种总线和网络进行通信。还提供了接口层242、驱动器层244和硬件层246。图2a是vcm200的一个或多个功能组件的块级图,而图2b描绘了vcm200的软件被分离到它们的不同抽象层。虽然图2a和图2b的元素之间没有一一对应的关系,但也存在一些相似之处和不同之处。例如,由于图2b主要关注于软件,因此不存在与图2a的存储器组件202和处理器216类似的元素。然而,图2a的i/o硬件218、网络接口硬件220和数据存储器组件222类似于图2b的硬件层246中的与vcm200的处理器216外部的设备和组件进行接口连接的那些部分。图2a的本地通信接口214包括类似于驱动器层244的功能的基于硬件的互连件(例如,信号引脚、电路板迹线、驱动器芯片等),诸如图2b的串行外围接口(spi)、串行命令接口(sci)和其他串行通信信道。至于图2a的应用204、206、208、210、212,它们对应于图2b的应用层230,更具体地,对应于模型和卡车功能234。接口层242包括用于驱动器层244的具体设备驱动器的许多接口250,其一起为应用层230的各种应用提供统一的应用程序接口(api)248。驱动器层244提供具体的驱动器软件以与输入硬件设备进行接口连接,驱动输出设备,通过can网络或其他网络进行通信,并且实现诸如串行外围接口(spi)和串行命令接口(sci)之类的串行协议。顶部应用层230、接口层242和驱动器层244包括与vcm200一起提供给多种类型的不同车辆的通用软件。然而,硬件层246的输入/输出硬件结构,例如,与车辆上的输入/输出硬件连接的连接器,可能因车辆而异。模型框234表示使用各种模型、应用逻辑、由各种软件实现的功能以及在vcm环境内执行的过程而生成的控制软件。由模型框234包含的这些软件组件接收与一个或多个车辆功能有关的输入,以便生成与控制或影响车辆10的操作有关的命令、控制指令或输出,所述与控制或影响车辆的操作有关的命令、控制指令或其他输出被应用层230中的路由引擎238接收。控制软件提供对各种卡车系统的控制,例如液压、诊断、油门控制、校准、互锁、牵引、制动、转向、电池放电指示器、以及通常被称为“静态返回到关闭”(sro)的禁用功能。vcm200被设计为用于各种车辆模型配置,并且定义各种卡车系统的控制的控制软件或模型234将是通用的,即相同的,可用于任何车辆。这是有利的,因为只需要设计一个vcm200,其可用于一部分车辆或整个车队或车辆生产线,即由给定车辆制造商制造的一个以上的车辆模型配置。从与不同组件功能相关联的硬件层246的输入/输出硬件结构接收到的输入/输出的特征可以在车辆模型与车辆模型之间不同,并且有益的是,提供来往于控制软件234的标准化的输入/输出,而不管与每个特定车辆(即,车辆模型)相关联的组件输入/输出特征中的车辆与车辆间的变化。应用层230还包括交换机板,所述交换板包含图3a和图3b的交换机板表和路由引擎238,其操作以将来自硬件层246的输入/输出硬件结构的输入路由到控制软件234的正确车辆功能输入。此外,在相反的方向上,路由引擎238和交换机板表还将来自控制软件234的控制信号提供给硬件层246的适当的输入/输出硬件结构。vcm200可以利用在组装车辆时装载到vcm200中的车辆专用配置参数文件来操作。例如,可以将参数文件或参数数据加载到存储器组件202的某一区域中,使得参数文件可以被构成应用层230的一个或多个软件组件(例如232、236、234、238)访问。例如,可以有四个主要类别的参数,包括:1)通用、2)模块、3)模型和4)卡车。类别1)中的参数可以对所有车辆类型都是通用的。类别2)中的参数可以对于安装了相同vcm200的所有车辆是通用的,但是对于不同类型的vcm(未示出),参数将不同。类别3)和4)中的参数对于具体卡车模型是唯一的。类别3)中的参数与模型有关,并且例如,可以与matlab或simulink代码一起使用,而类别4)中的参数则可以被例如其他c代码或应用层230的软件使用。来自卡车类别(即,类别4)的参数的子集可以被配置用于设置包括路由引擎238和交换机板表的交换机板的配置,该配置特定于vcm200正在其上运行的车辆的车辆硬件。无论安装和运行vcm200的物料搬运车辆的具体类型/型号如何,对于不同类型的车辆而言,vcm200都有许多共同的功能方面。例如,许多不同类型的车辆具有转向轮和牵引轮。另外,许多车辆可能具有某种类型的提升机构,即使每个不同提升机构的具体属性可能不同。因此,在将四个不同类别的参数下载并存储在vcm200上之后,可能在许多不同类型或型号的车辆上安装并运行通用vcm200。在下文所描述的示例中,对vcm200的讨论表明vcm200可以安装在两种不同类型的车辆上。本领域普通技术人员将认识到,在不脱离本发明的范围的情况下,vcm200可以安装在多于两种不同类型或型号的车辆上。在其上运行vcm200的第一车辆可具有第一组硬件设备,第一组硬件设备连接定义vcm200的硬件层的硬件结构或以其他方式与定义vcm200的硬件层的硬件结构相关联。在其上可以运行相似或相同的vcm200的第二车辆可以具有第二组硬件设备,第二组硬件设备中的一个或多个硬件设备不同于第一组中的硬件设备,第二组硬件设备连接定义vcm200的硬件层的硬件结构或以其他方式与定义vcm200的硬件层的硬件结构相关联。vcm200上可能存在硬件结构(例如连接器)的超集,硬件结构的超集中的两个或更多个定义与第一车辆的硬件设备连接的第一集合,并且硬件结构的超集中的两个或更多个定义与第二车辆的硬件设备连接的第二集合。第一组硬件结构中的一个或多个元素(例如,连接器)可以与第二组硬件结构中的一个或多个元素相同。第一组硬件结构中的一个或多个元素(例如,连接器)可以不是第二组硬件结构的成员,反之亦然。在每种情况下,车辆硬件设备生成由定义vcm200的硬件层的硬件结构接收的输入。参考图2b,每个车辆的接口层242、驱动器层244和硬件层246进行操作以获取输入信号、对输入信号进行过滤并将输入信号提供给vcm200的应用层230。第一车辆的第一组中的一些硬件设备也可以处于第二车辆的第二组中。然而,也可以有第一组和第二组中的一组或两组所特有的硬件设备。因此,通过将第一组硬件设备和第二组硬件设备组合在一起,可以定义硬件设备的超集,所述硬件设备的超集包括来自第一组和第二组的每个不同硬件设备。由于每个硬件设备也被认为对应于vcm200的应用层230的输入,所以还定义了vcm应用层输入的超集,vcm应用层输入的超集包括vcm200的应用层230可以从第一组车辆硬件设备和第二组车辆硬件设备两者接收的所有可能的输入。这些输入可以包括,例如,数字输入值、模拟输入值、网络消息和数据包(例如,can消息、ip数据包等)、编码器输入以及其他输入(例如,4-20ma环路)。作为vcm200的正常操作的一部分,可以轮询或采样各种硬件设备和传感器,并且例如可以监控网络总线,使得可以对所接收的消息进行排队以便可以提取数据。来自硬件设备的值在定义vcm200的硬件层的硬件结构处被接收为相应的输入,并且存储在由vcm200的应用层230的各种过程限定的预定变量中。与由vcm200从车辆硬件设备接收到的输入不同,第一车辆vcm上的控制软件234可以接收输入和默认值,该输入和默认值可以不同于由第二车辆vcm的控制软件234接收到的输入和默认值。例如,第一车辆可能具有在牵引电机通电之前需要操作员坐在座位上的特征。第二车辆也可能要求操作员坐在座位上,但还可能要求在牵引电机通电之前关闭电池箱门。在两个示例中,在所示的实施例中,控制软件234控制牵引电机的操作,但是在第一示例中,仅利用来自车辆硬件设备的一个实际输入值和一个默认值(不来自车辆硬件设备),而在第二示例中,利用了来自车辆硬件设备的两个实际输入值。由控制软件234接收到的这些实际的和默认的“输入”或输入值可以被称为“车辆功能输入”,并且包含控制软件可以接收并随后用于执行其功能的各种各样的输入值。由于vcm200的控制软件234对于第一车辆和第二车辆两者都是基本相同的,所以在所示的实施例中的vcm200内,存在适用于第一车辆和第二车辆两者的那些车辆功能输入的组合,即使第一车辆和第二车辆的两个vcm接收到的一个或多个输入可能不同。相应车辆功能输入的值被存储在由vcm200的应用层230的各种过程定义的预定变量中。由于vcm200可以在第一车辆或第二车辆上安装并运行,所以可能存在对应于实际上并未包括在vcm在其上运行的车辆上的一个或多个硬件设备的一个或多个vcm输入变量。类似地,也可能存在对应于不是由车辆硬件设备提供的或由vcm在其上运行的车辆使用的实际输入值的一个或多个车辆功能输入变量。因此,本发明的实施例提供了确定如何将由特定车辆的一个或多个硬件设备提供的、由硬件层246的硬件结构接收到的vcm输入或vcm输入值路由到也被控制软件234使用的特定车辆功能输入的方式。图3a示出根据本发明的原理的路由引擎238所使用的交换机板表的块级视图,路由引擎238将vcm输入路由到对应于车辆功能输入元素的存储器位置。“源表”302由vcm200构建或提供,其包括对于可以由第一车辆和第二车辆提供的vcm应用层输入或输入值的超集中的每一个的元素。如下所述,源表302中的每个元素可以是存储器地址,因此源表302(在本文中也被称为模块输入表)包括模块输入或输入元素的超集。所示示例中的源表302在为第一车辆和第二车辆提供的vcm中相同或基本相同。如上所述,作为vcm200的正常操作的一部分,每个vcm输入或vcm输入值存储在存储器组件202或数据存储组件222中的存储器位置或预定变量中(参见图2a)。因此,源表302中的每个元素对应于那些变量或存储器位置中的相应的一个,并且该元素可以是该对应变量或存储器位置在存储器中的地址。在图3a中示出车辆功能输入表310,并且车辆功能输入表310具有对于可能潜在地被vcm200的控制软件234利用的每个车辆功能输入的元素。如上所述,车辆功能输入中的每个可以与预定的控制软件变量或存储器位置相关联,并被存储在该预定变量中。因此,车辆功能输入表310中的每个元素对应于那些控制软件变量或存储器位置中的相应的一个,并且该元素的值可以是该对应变量在存储器中的地址。源表302和车辆功能输入表310可以在第一车辆和第二车辆两者上相同,并且优选地相同。但是,存在这样的路由表306,该路由表306对于第一车辆和第二车辆中的每个可以不同,并且定义应用层230的基础设施框232与控制软件234之间的接口236(参见图2b)。路由表306定义了路由,以允许路由引擎238路由每个所利用的车辆功能输入,或类似于交换机板,将每个所利用的车辆功能输入与适合于vcm200正在其上运行的车辆的vcm输入连接。vcm200还可以设置模块输入配置表304,模块输入配置表304具有与源表302中的每个元素对应的元素。来自模块输入配置表304的元素包括与如何将与对应的源表元素相关联的vcm输入值变换成控制软件可以利用的值有关的数据。如下面进一步描述的,例如,vcm输入值可以被缩放、比特移位、比特掩码、偏移或重组为控制软件234被设计来利用的不同数据类型。还可以包括单独的功能输入配置表308,其允许在将值存储在车辆功能输入变量中之前对值进行进一步变换,以便被控制软件234使用。功能输入配置表308可以包括与车辆功能输入表310中的每个元素对应的相应元素。下面提供了示例源表302作为表1:在本示例中,存在与在定义vcm200的硬件层的硬件结构处接收到的37个不同vcm输入或vcm输入值对应的元素。元素#0是指定义通用低值信号(例如,“0”)的变量“ulag_low”,而元素#1是指定义通用高值信号(例如“1”)的变量“ulag_high”。接下来的几个元素是指存储可以在vcm200正在其上运行的车辆上设置的各种开关的值的变量。这些元素还可以指没有在vcm200正在其上运行的车辆上设置的各种开关。元素#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中的元素是指存储vcm200正在其上运行的车辆的控制软件234可使用的值的变量或存储器位置。以下提供了用于第一车辆或第二车辆的配置表304的示例作为表3:在本示例中,存在37个元素,每个元素对应于源表302中的相应元素。如上所述,由源表302中的元素的地址指向的变量或存储器位置的所存储的输入值可以被变换,使得其具有控制软件234所期望的属性。因此,源表302中的元素#17保存变量或存储器位置“usr_s_ov.ubx10digin1”的地址,并且可以利用来自表3的对应元素(即,#17){ag_uint8,ag_right,0x02u,1u,ag_sf_array_00}来变换该地址位置处存储的值。上述变换数据仅作为示例提供,并且本领域普通技术人员将认识到,在不脱离本发明的范围的情况下,可以实现许多不同的或附加的数据变换。可以执行不同数量的比特移位,并可以应用各种比特掩码。考虑到不同类型车辆上的不同硬件配置,预期有不同的缩放因子,而变量的数据类型可以包括无符号、有符号、长、浮点、布尔、整数等。在上面的示例中,元素#17“ag_uint8”表示usr_s_ov.ubx10digin1的值是无符号类型的8比特整数,如下面解释的,可使用来自单独的功能输入配置表的元素来重组该变量类型。“0x02u”部分指示应当应用“00000010”的比特掩码,并且“agright”和“lu”部分分别表示该值将被向右比特移位并且被移位“1”比特。最后一部分“ag_sf_array_00”可以是存储不同缩放因子的数组中的索引。例如,可以存在4个通常使用的不同缩放因子,这些缩放因子被存储在可以通过ag_sf_array_00-ag_sf_array_03进行索引的数组中。配置表元素标识要使用哪个索引从该数组中读取适当的缩放因子。例如,每个缩放因子可以包括与变量的值相加的偏移量和与变量的值相乘的增益量。偏移量0.0和增益1.0将使变量的值保持不变。以下提供了用于第一车辆类型的一个示例路由表306作为表4a:以下提供了用于第二车辆的另一个示例路由表306作为表4b:输入路由表(车辆#2)条目编号{process_sys_model,ag_in_x10_digin1},0{process_sys_model,ag_in_not_used_high},1{process_sys_model,ag_in_not_used_high},2{process_sys_model,ag_in_not_used_high},3{process_sys_model,ag_in_switch2},4{process_sys_model,ag_in_not_used_high},5{process_sys_model,ag_in_switch6},6{process_sys_model,ag_in_switch7},7{process_sys_model,ag_in_rx_tcm_motor_speed},8{process_sys_model,ag_in_rx_tcm_torque_achieved},9{process_sys_model,ag_in_analog_input1_counts},10{process_sys_model,ag_in_analog_input2_counts},11{process_sys_model,ag_in_x10_digin5},12{process_sys_model,ag_in_x10_digin4},13{process_sys_model,ag_in_x10_analog3},14{process_sys_model,ag_in_not_used_low},15{process_sys_model,ag_in_scm_drive_unit_positionfb1},16{process_sys_model,ag_in_scm_steering_fb_speed},17{process_sys_model,ag_in_scm_motor_current},18{process_sys_model,ag_in_scm_stop_traction},19{process_sys_model,ag_in_master_enc1_counts},20{process_sys_model,ag_in_not_used_low},21{process_sys_model,ag_analog_input_scaled_units6},22{process_sys_model,ag_analog_input_scaled_units5},23{process_sys_model,ag_in_batt_amp_hours},24每个路由表具有25个条目,每个条目对应于车辆功能输入表310中的相应元素。路由引擎238可以被在vcm200上执行的不同过程使用,因此上面的示例中的每个路由表条目包括两个部分。第一部分“process_sys_model”仅仅作为示例提供,并且在不偏离本发明的范围的情况下可以省略。该第一部分标识了路由表的该特定条目与其一起使用的过程的名称。作为示例,不同的过程(例如,“process_analog”)可以具有路由表的自己的部分或条目以供路由引擎238使用,以便遍历所有可用的模拟输入,并从那些输入获取当前值。表4b中的条目(例如,条目#14)的第二部分“ag_in_x10_analog3”标识由硬件层246的硬件结构接收到的vcm输入中的一个,以路由到与车辆功能输入表310中的条目#14对应的存储器位置。如下面将描述的,关于图4,表3、表4a、表4b和表5中的条目之间的差异允许用于对vcm200在其上运行的不同类型的车辆的接口236的定制。这些路由和配置表允许相同的vcm输入表302和相同的车辆功能输入表310在具有不同硬件设备的不同类型的车辆上使用。图4是根据本发明的原理的用于将vcm输入路由到车辆功能输入的示例方法的流程图。在本文所描述的示例实施例中,示例模块输入配置表304和示例功能输入配置表308被用于第一车辆和第二车辆。然而,在其他实施例中,可以针对不同的车辆来定制表304和308中的任一个表或两个表。路由表306、功能输入配置表308以及车辆功能输入表310有相同数量的条目,并且路由表306中的条目#x对应于功能输入配置表308中的元素#x和车辆功能输入表310中的元素#x,或者与功能输入配置表308中的元素#x和车辆功能输入表310中的元素#x相关联。源表302和模块输入配置表304具有相同数量的元素,该数量与路由表306中的条目的数量不同。源表302中的元素#y对应于配置表304中的元素#y,或与配置表304中的元素#y相关联。可使用来自路由表306的条目将vcm输入值路由到与车辆功能输入元素对应的存储器位置的一个示例方式是在源表302和模块输入配置表304中创建枚举的索引。例如,如果vcm输入表(即,源表302)被视为数组“module_input[]”,则可以通过“module_input[i]”来引用特定元素。如果索引“i”是由下列列表定义的枚举类型:那么通过将“i”分配给枚举值中相等的一个(例如,ag_in_scm_motor_current或ag_in_batt_amp_hours等等)来生成指向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”)标记的那些条目的路由,并跳过具有不同标记的那些条目。路由引擎在步骤402中通过读取路由表306中的第一条目而开始,并基于该条目在步骤404中确定源表302中的对应元素。如果使用第一车辆路由表“表4a”,那么路由引擎238确定路由表条目#0标识“ag_in_switch4”,并且基于枚举的索引(即,模块输入的索引),这对应于“模块输入的索引”列表中的索引值#5和源表302中的元素#5,源表302中的元素#5对应于变量“&gswitch[sdi_sw_drv4].control.rswitchdriveroutput”。在步骤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中的其余的所有条目和元素一直持续。因此,在步骤412中,通过应用来自功能输入配置表308的元素#0,进一步变换由于应用模块输入配置表304中的元素#5而产生的变换后的值。使用下面的表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的地址指向的存储器位置。如果vcm200在第二车辆上运行,那么将使用路由表“表4b”。在这种情况下,路由表中的条目#0标识对应于“模块输入的索引”列表中的枚举索引值#16的“ag_in_x10_digin1”。因此,在本示例中,将使用来自模块输入配置表304的元素#16{ag_uint8,ag_right,0x01u,0u,ag_sf_array_00},检索并变换存储在源表中的元素#16“&usr_s_ov.ubx10digin1”处的值。还根据车辆功能配置表(例如,参见下面的表5)中的元素#0,进一步变换该初始变换后的值,以便通过将值从变量类型“8比特无符号整数”重组为“32比特无符号整数”类型的变量来进一步变换初始变换后的值。然后,可以由路由引擎将该变换后的值存储在由来自车辆功能输入表的元素#0的地址指向的存储器位置。因此,根据vcm200正在其上运行的车辆,相同的车辆功能输入(例如,gop_int_inputs.ulbrs1)将被路由到不同的vcm输入并被从不同的vcm输入接收。换句话说,与路由表条目相关联的一些vcm输入对于第一车辆或第二车辆而言可以是唯一的。在步骤416中,路由引擎确定是否有更多匹配调用过程(例如process_sys_models)的路由表条目要处理。如果是,则路由引擎对于25个路由表条目中的每个,顺序地重复上述步骤,直到其可以在步骤418处等待。从表4a和表4b可以看出,对于条目#8、#9和#24(及其他)的路由表条目是相同的。因此,这些条目对应于对于第一车辆和第二车辆两者相同的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”指向的存储器位置。是“高”值合适还是“低”值合适取决于可以使用该车辆功能输入的过程的逻辑。例如,如果车辆功能输入指的是全部都必须是高值才能使车辆操作的多个开关中的一个,则对于该开关没有来自车辆硬件设备的实际vcm输入的车辆将把车辆功能输入与“ag_not_used_high”相关联。反之,如果逻辑被配置为:如果任何一个开关都是“高”,则车辆将被禁用,那么对于那些开关中的一个没有来自车辆硬件设备的实际vcm输入的车辆将把车辆功能输入与“ag_not_used_low”相关联。下面提供功能输入配置表308的示例作为表5。如上所述,该表的一个使用示例是使用每个元素的最左侧部分,在将值存储在车辆功能输入表310中所指向的地址之前帮助对变量值的数据类型进行造型。相应地,功能输入配置表308与车辆功能输入表310中的元素之间存在一一对应的关系,以及功能输入配置表308中的元素与路由表306中的条目之间也存在一一对应的关系。如上文所描述的,除了功能输入配置表308中的每个元素的最左侧部分之外的部分(参见紧下面的表5)也可以用于进一步变换初始使用来自模块输入配置表304的对应条目变换的值。例如,两个配置表(即,模块输入配置表“表3”和功能输入配置表“表5”)的元素的结构可以是类似的,使得对初始变换后的值的进一步变换可以包括缩放、添加偏移、应用比特掩码、进行比特移位、或根本不作改变。例如,表5中的元素#22包括“ag_sf_4_20ma_input”部分,其表示应该使用特定的一对偏移和缩放因子来进一步变换对应的初始变换后的值。在vcm200上执行的应用或控制软件234不仅利用输入,还产生可以路由到vcm输出存储器位置的输出,该vcm输出值被提供给硬件层246的硬件结构,以控制车辆硬件设备(例如喇叭)或者将设置提供给其他模块(例如车辆的牵引控制模块或转向控制模块)。类似于以上关于路由输入的描述,来自控制软件234的车辆功能输出值可以被路由到对应的vcm输出变量或存储器位置。例如,vcm输出值可以涉及车辆硬件设备数字输出、车辆硬件设备模拟输出、网络格式化消息以及与车辆上的其他模块进行接口连接的输出驱动器。图3b示出了根据本发明的原理的包括路由表324的交换机板表的块级视图,其中路由表324被路由引擎238用来将车辆功能输出从控制软件234路由到vcm输出存储器位置。下面提供示例车辆功能输出表320作为表6,其包括来自控制软件234的10个不同车辆功能输出变量中的每个的相应元素或地址:车辆功能输出表(地址)元素编号&ged_outputs.uleddriverson,0&gtraction_output.rbrake1cmd,1&gtraction_output.rbrake2cmd,2&gtraction_output.rbrake3cmd,3&gtraction_output.rtorquecmd,4&ghyd_output.ulsvml,5&ghyd_output.ulsvmr,6&ghornbus.fhorn_on,7&gsteer_outputs.slmstrstrcmd,8&gsteer_outputs.slslvstrcmd,9具体地,每个元素将地址存储到变量或存储器位置,该变量或存储器位置存储由控制软件234提供的10个预定输出值中的一个。可能不在第一车辆和第二车辆两者上提供全部10个值。尽管一些输出值可以由两个车辆提供,但是一些输出值可以是第一车辆或第二车辆中的仅一个车辆才有的。下面提供示例车辆功能输出配置表322作为表7,其包括车辆功能输出表320中的10个不同车辆功能输出变量中的每个的相应元素:功能输出配置表元素编号{ag_uint32,ag_no_bit_man,0u,0u,ag_sf_array_00},0{ag_float32,ag_no_bit_man,0u,0u,ag_sf_array_00},1{ag_float32,ag_no_bit_man,0u,0u,ag_sf_array_00},2{ag_float32,ag_no_bit_man,0u,0u,ag_sf_array_00},3{ag_float32,ag_no_bit_man,0u,0u,ag_sf_array_01},4{ag_uint32,ag_no_bit_man,0u,0u,ag_sf_array_00},5{ag_uint32,ag_no_bit_man,0u,0u,ag_sf_array_00},6{ag_boolean,ag_no_bit_man,0u,0u,ag_sf_array_00},7{ag_int32,ag_no_bit_man,0u,0u,ag_sf_array_00},8{ag_int32,ag_no_bit_man,0u,0u,ag_sf_array_00},9功能输出配置表322具有与车辆功能输出表320相同数量的元素,其中功能输出配置表322中的每个元素与来自车辆功能输出表320的相同编号的元素具有一一对应关系。功能输出配置表322中的每个元素可以包括与对值进行缩放、添加偏移、应用比特掩码、和向左或向右对值进行比特移位(与上文关于功能输入配置表308所描述的技术类似)有关的部分。因此,可以使用来自功能输出配置表322的元素来实现从车辆功能输出表320的对应元素的存储器地址检索到的值的第一变换。另外,来自功能输出配置表322的每个元素的第一部分可以识别与车辆功能输出表320中的对应元素中的地址相关联的变量类型,而元素的其他部分可以指示不对检索到的值进行变换。例如,功能输出配置表322中的元素#2指示变量“gtraction_output.rbrake2cmd”(其地址存储在车辆功能输出表中的元素#2中)是“ag_float32”类型的变量,并且该元素的其他部分不改变变量的值。因此,在一些情况下,与对应的车辆功能输出元素相关联的值不一定需要被初始地改变。在这些情况下,即使在功能输出配置表中可能存在对应的元素,该元素也不会以任何方式修改对应的值,因此该值和初始变换后的值实际上相同。下面提供示例模块输出配置表326作为表8,并且其具有对应于26个不同vcm输出变量或存储器位置中的每个的相应元素。模块输出配置表中的每个元素对应于下面的表9中的vcm或模块输出或目的地表328上的vcm输出地址元素中的相应一个。模块输出配置表326中的元素提供与如何变换从车辆功能输出表320中的地址所指向的存储器位置检索到的相关联的车辆功能输出值有关的数据,之后该变换后的值被存储在由来自vcm输出表328的对应元素中的地址所指向的存储器位置。如上所述,值的这种变换可以是对所检索到的值进行变换(即,所检索到的值先前未被变换),或者可以是使用功能输出配置表322中的元素首先变换的先前变换后的值。类似于之前描述的输入配置表,变换可以包括改变变量类型、对值进行缩放、添加偏移、应用比特掩码、以及向左或向右对值进行比特移位。下面提供示例vcm输出表328作为表9:在上面的示例中,存在26个元素,其中每个元素存储对应于预定变量的地址,例如,该预定变量存储要从vcm200输出到车辆硬件设备的值。26个元素包括超集,该超集包括对应于第一车辆上设置的vcm输出或输出值的第一组元素和对应于第二车辆上设置的vcm输出或输出值的第二组元素。每辆车辆可用的输出或输出值部分地取决于由该车辆提供的硬件设备。构成超集的两组元素可具有对应于两辆车辆共有的vcm输出值的共同元素以及对应于第一车辆和第二车辆中的一个所特有的vcm输出值的一个或多个元素。vcm输出表328中的每个元素可以是存储器地址,因此vcm输出表328(在本文中也被称为模块输出表)包括模块输出元素的超集。下面提供了两个不同的示例路由表作为表10a和表10b:输出路由表(车辆#1)条目编号{process_sys_model,ag_out_gp1_command},0{process_sys_model,ag_out_supv_gp9_command},1{process_sys_model,ag_out_supv_gp10_command},2{process_sys_model,ag_out_supv_gp11_command},3{process_sys_model,ag_out_txn_speed_setpoint},4{process_sys_model,ag_out_tcm_gp3_command},5{process_sys_model,ag_out_tcm_gp5_command},6{process_sys_model,ag_out_supv_gp8_command},7{process_sys_model,ag_out_scm_command_setpoint1},8{process_sys_model,ag_out_scm_command_setpoint2},9输出路由表(车辆#2)条目编号{process_sys_model,ag_out_gp1_command},0{process_sys_model,ag_out_supv_gp10_command},1{process_sys_model,ag_out_not_used},2{process_sys_model,ag_out_not_used},3{process_sys_model,ag_out_txn_speed_setpoint},4{process_sys_model,ag_out_tcm_gp4_command},5{process_sys_model,ag_out_not_used},6{process_sys_model,ag_out_supv_gp8_command},7{process_sys_model,ag_out_scm_command_setpoint1},8{process_sys_model,ag_out_scm_command_setpoint2},9每个路由表具有对应于车辆功能输出表320中的10个车辆功能输出元素和功能输出配置表322中的10个配置元素的10个条目。上面所示的两个示例路由表是针对安装它的特定类型的车辆定制的。配置表322和326也可以针对安装它们的特定车辆类型进行定制。这些路由表和配置表允许相同的vcm输出表328和相同的车辆功能输出表320在具有不同硬件设备的不同类型的车辆上使用。例如,表10a中的条目#1-#3指示:第一车辆包括对应于可以从控制软件234输出的3个不同制动命令的vcm输出,但是来自路由表“表10b”的相同条目指示:制动命令中的两个不对应于第二车辆上实现的vcm输出。相反,条目#7指示两个车辆都具有对应于从控制软件234输出的“喇叭接通(hornon)”命令的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在第一车辆上运行的vcm200中并且目前正在处理条目#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的索引。基于上文定义的示例“模块输出的索引”中的枚举索引,“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})。因此,在步骤506中,路由引擎使用来自车辆功能输出表320的对应元素中的地址(即,“&ghyd_output.ulsvml”)来检索该存储器位置处存储的值,并且在步骤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比特无符号整数”,利用”00000100“进行比特掩码,并且向左比特移位”2“比特,以便产生变换后的值。在步骤510中,路由引擎使用来自vcm输出表328的对应元素中的地址(即,地址“&usr_s_ov.uwtcmgpdrivercontrol”),将变换后的值存储在该存储器位置。在步骤512中,路由引擎确定是否有更多匹配调用过程(例如process_sys_models)的路由表条目要处理。如果是,则对于10个路由表条目中的每个,路由引擎顺序地重复上述步骤,直到其可以在步骤514处等待。当路由输出时,可能不需要两个不同的“未使用”值,因为vcm输出变量“ulag_zero”将不被用来从vcm200产生输出。因此,用于输出的示例枚举索引具有单个元素“ag_out_not_used”,其可以被输出路由表引用以用于未被安装有该输出路由表的车辆使用的车辆功能输出值。上述源表或模块输入表302的一个替代方案涉及使用有目的地为所有vcm应用层输入或输入值构建的数据结构,以便使用预定的变量或存储器位置名称,将那些输入或输入值存储在对应的vcm或模块输入变量或存储器位置中。这些变量名称是由vcm200的应用层230的各种过程定义的,以存储与vcm200的应用层230可以从第一组车辆硬件设备和第二组车辆硬件设备二者接收的所有可能输入有关的值。例如,这些输入可以包括数字输入值、模拟输入值、网络消息和数据包(例如,can消息、ip数据包等)、编码器输入以及其他输入(例如,4-20ma环路)。c编程语言(以及许多其他语言)中的“struct(结构)”是一个复杂或复合的数据类型声明,它定义了一种数据结构,该数据结构包含物理分组的变量列表,这些变量将被放置在存储器块中的一个名称下,从而允许经由单个指针(即地址)访问不同的变量。例如,应用于结构(struct)的声明的名称的操作符(即,“&”)的“地址”返回该地址。结构(struct)的成员或成员变量可以是相互关联的许多其他复杂和简单的数据类型。c“结构(struct)”数据类型引用了通常由字长边界分隔的连续的物理存储器块。但是,各种编译器实现可以利用半字或字节的边界,这将允许更密集的封装,并因此使用更少的存储器。因此,结构(struct)的特定成员相对于字边界的对齐是特定于实现的,并且可以包括填充。由于“结构(struct)”数据类型引用了连续存储器块,因此每个内部成员变量与索引零的引用(即,“结构(struct)”的地址或指针)相距固定偏移或偏移量。以下代码片段为具有与源表302中的37个地址或元素(并且顺序相同)对应的37个成员变量(在本文中也称为“vcm或模块输入变量”)的数据结构(在本文中也称为“模块输入数据结构”)定义数据类型“module_input_struct_t”:在上面的数据结构定义中,左列提供每个成员变量的相应数据类型的声明,而右列是与预定的vcm或模块输入变量之一对应的成员变量的标签或名称。然后,该typedef可以用来在存储器中创建已定义结构的实例。例如,下面这行代码创建被标记为“smodule_inputs”的数据结构实例或变量:staticmodule_input_struct_tsmodule_inputs;因此,为数据结构的每个成员变量预留了存储器空间。存储器中的该数据结构实例的起始地址由“&smodule_inputs”表示,并且所有成员变量按照它们在结构定义中被列出的顺序依次位于存储器中。图6示出了处理器216可以寻址的存储器空间的映射的概念图。仅出于示例目的,映射600被认为是8比特宽的,使得沿着映射600左侧的地址引用存储器的连续字节。在示例存储器映射600中,存在程序地址范围610,其存储要由处理器216执行的指令,并且存在数据地址范围616,其存储由执行指令使用或产生的数据。本领域普通技术人员将认识到,可以使用其他地址范围,其允许处理器216读取/写入其他数据,例如与寄存器有关的范围612、与只读存储器(rom)有关的范围614、和/或与引导区域有关的范围618。当创建数据结构实例“smodule_inputs601”时,它可以例如被存储在从地址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个成员的数据结构实例,存在最终成员606n,其被存储在从地址40xxh开始的地址608n处。“模块输入偏移表”可由vcm200构建或提供,其包括可以由第一车辆和第二车辆提供的vcm应用层输入或输入值的超集中的每个的元素。所示示例中的模块输入偏移表在为第一车辆和第二车辆提供的vcm中相同或基本相同。在所示的实施例中使用以下示例代码片段来创建具有与“smodule_inputs”数据结构601的每个成员变量或模块输入变量对应的元素的模块输入偏移表,并且为每个元素赋值,其中每个元素的值是与其对应的成员变量相关联的偏移量:例如,当上面的代码片段被编译为给表中的每个元素赋值并且编译器到达下面的部分时(例如,倒数第二行):offsetof(module_input_struct_t,quadrature1.slcounts),它评估与数据结构类型定义“module_input_struct_t”内的变量“quadrature1.slcounts”的偏移对应的数字。在上文的示例实施例中,该成员变量是37个成员变量中的第36个变量(即,成员#35),假设给每个成员变量分配4个字节,那么其偏移是35x4,以十六进制表示为008ch。因此,它在模块输入偏移表中的值将评估为008ch。如下文所讨论的,由于为模块输入偏移表指定的数据类型(即,uint16_t),模块输入偏移表中的每个元素被认为是整数,并且可以用来计算地址值。本领域普通技术人员将认识到,模块输入偏移表的上述声明语句可以包括附加参数,例如“const”,如下所示:staticconstuint16_tsuwag_moduleinputoffsetarray[37]=以将模块输入偏移表定位在存储器映射的特定区域中(例如程序地址范围610而不是数据地址范围616)。基于以上讨论的关于为每个成员变量分配的存储器大小以及存在37个模块输入变量的假设,可以通过编译上述代码片段来构建的示例模块输入偏移表如下面的表11所示:在图7a中描绘了模块输入偏移表702,并且模块输入偏移表702可以用作图3a中所示的源表302的替代。结果,图4的流程图的基本上所有的步骤也可以用于该第二实施例,但是步骤404被修改。模块输入偏移表702中的每个元素可以是“smodule_inputs”数据结构601内的对应的成员变量或模块偏移变量的偏移或偏移量,因此,模块输入偏移表702(在本文中也被称为模块输入表)包括模块输入元素的超集,每个模块输入元素都是整数值。模块输入偏移表中的元素编号0-36以相同顺序对应于上面定义“module_input_struct_t”的代码片段中的模块输入变量的名称。图8是根据本发明的原理的用于将vcm输入/输出链接到车辆功能输入/输出的替代方法的示例部分的流程图。关于将vcm输入与车辆功能输入相链接,在步骤802中,在存储器中创建模块输入数据结构,其包括vcm或模块输入变量或存储器位置的超集,其中,模块输入变量的超集包括与第一车辆上设置的第一组硬件设备有关的模块输入变量的第一子集和与第二车辆上设置的第二组硬件设备有关的模块输入变量的第二子集。具体地,创建的数据结构可以是“结构(struct)”,其每个成员变量对应于模块输入变量之一。接下来,在步骤804中,创建包括一组输入偏移元素的模块输入偏移表,其中,每个输入偏移元素对应于模块输入变量的超集中的一个,并且包括对应的模块输入变量在模块输入数据结构内的偏移量。如上文参考图4的流程图所描述的,路由引擎在步骤402中通过读取路由表306中的第一条目开始,并基于该条目,在步骤404中确定源表302中的对应元素。取代执行步骤404,图8的算法使用路由表条目作为模块输入偏移表702中的索引,并且在步骤806中确定模块输入偏移表702中的对应元素。如果使用第一车辆路由表“表4a”,那么路由引擎238确定路由表条目#0标识“ag_in_switch4”,并基于枚举索引(即,模块输入的索引),这对应于“模块输入的索引”列表中的索引值#5和模块输入偏移表702中的元素#5,模块输入偏移表702中的元素#5对应于偏移量0014h。在步骤808中,可以使用存储器中存储的“smodule_inputs”数据结构来构建地址。具体地,可以构造地址,其将偏移值0014h(即,suwag_moduleinputoffsetarray[5])与“smodule_inputs”数据结构或数据结构变量(例如,04000h)的地址相加以得到示例地址04014h。可由路由引擎(在步骤410中)在该构造的复合地址处,而不是在从源表302检索到的地址处读取值,以确定与模块输入变量switch[sdi_sw_drv4].control.rswitchdriveroutput相关联的值。无论使用源表302还是模块输入偏移表702来确定模块输入变量的地址,图4的流程图的步骤406、408、412、414、416和418都相同。作为车辆功能输入表310(其中,每个车辆功能输入元素是变量的存储器地址或存储器位置,其存储可被控制软件234用于vcm正在其上运行的车辆的值)的一个替代方案,可以使用车辆功能输入表710,其中,每个车辆功能输入元素可以是如表310中的存储器地址或偏移。以类似于如何利用模块输入数据结构的成员变量的相应偏移值构建模块输入偏移表的方式,可以构建车辆功能输入表710,使得每个元素是偏移量。因此,每个车辆功能输入元素将是与数据结构的成员变量相关联的相应偏移量,所述数据结构包括其地址在上面的表2中被引用的25个车辆功能输入变量作为其成员变量。类似于上文所描述的替代交换机板模块输入偏移表702,如图7b中所示的模块输出偏移表728可以代替图3b的目的地表328,并用于将来自控制软件234的车辆功能输出或输出值链接到车辆模块输出变量或存储器位置。上述目的地或模块输出表328的一个替代方案涉及使用有目的地为所有vcm应用层输出(即模块输出变量)使用预定变量名构建的数据结构。这些变量名称是由vcm200的应用层230的各种过程定义的那些变量名称,以存储与车辆10的输出设备和硬件有关的值,诸如车辆硬件设备数字输出、车辆硬件设备模拟输出、网络格式化消息以及与车辆上的其他模块进行接口连接的输出驱动器。下面的代码片段为具有与目的地表328中的26个地址或元素对应的26个成员变量的数据结构,以相同的顺序定义数据类型“module_output_struct_t”:在上面的数据结构定义中,左列提供每个成员变量的相应数据类型的声明,而右列是与预定的模块输出变量之一对应的成员变量的标签或名称。该typedef可被用来在存储器中创建已定义结构的实例。例如,下面这行代码创建被标记为“smodule_outputs”的数据结构实例或变量:staticmodule_output_struct_tsmodule_outputs;因此,为数据结构的每个成员预留存储器空间。存储器中的该数据结构实例的起始地址由“&smodule_outputs”表示,并且所有成员按照它们在结构定义中被列出的顺序依次定位在存储器中。返回到图6的存储器映射600,当创建数据结构实例“smodule_outputs”时,它例如可被存储在具有地址4d00h的存储器中的地址处开始的存储器中。在存储器映射600中,该地址由部分603表示。与上文所描述的“smodule_inputs”数据结构(其中,“smodule_outputs”数据结构的第一成员变量或模块输出变量(成员#0)被存储在该起始地址4d00h处,并且每个随后成员变量或模块输出变量被存储在存储器中从起始地址4d00h偏移的相应地址处)类似,“smodule_outputs”数据结构存储在存储器中。可以由vcm200构建或提供“模块输出偏移表”,该“模块输出偏移表”包括可以为第一车辆和第二车辆提供的vcm应用层输出或输出值的超集中的每个的元素。在所示示例中的模块输出偏移表在为第一车辆和第二车辆提供的vcm中相同或基本相同。在所示实施例中使用以下示例代码片段来创建模块输出偏移表,该模块输出偏移表具有与“smodule_outputs”数据结构的每个成员变量或模块输出变量对应的元素,并且为每个元素赋值,其中每个元素的值是与其对应的成员变量或模块输出变量相关联的偏移量:例如,当上面的代码片段被编译为向表中的每个元素赋值并且编译器到达下面的部分时(例如,倒数第二行):offsetof(module_output_struct_t,rgp8_command),它评估与数据结构类型定义“module_output_struct_t”内的变量“rgp8_command”的偏移对应的数字。在上面的示例实施例中,该成员变量是26个成员变量中的第25个变量(即,成员#24),并且再次假设给每个成员变量分配4个字节,那么其偏移是24x4,以十六进制表示为0060h。因此,其在模块输出偏移表中的值将评估为0060h。如下所述,由于为模块输出偏移表指定的数据类型(即,uint16_t),模块输出偏量表中的每个元素被视为整数,并且可以用来计算地址值。基于上面关于为每个成员变量分配的存储器大小以及存在26个模块输出变量所讨论的假设,可以通过编译上述代码片段来构建的示例模块输出偏移表如下面的表12所示:如所述的,图7b中描绘了模块输出偏移表728,并且模块输出偏移表728可以用作图3b中所示的目的地表328的替代。结果,图5的流程图的基本上所有的步骤也可以用于该第二实施例,但是步骤504被修改。模块输出偏移表728中的每个元素可以是“smodule_outputs”数据结构内的对应成员变量的偏移或偏移量,因此模块输出偏移表728(在此也被称为模块输出表)包括模块输出元素的超集,每个元素都是整数值。模块输出偏移表中的元素编号0-25以相同的顺序对应于上面代码段中定义“module_output_struct_t”的模块输出变量的名称。图8是根据本发明的原理的用于将vcm输入/输出与车辆功能输入/输出相链接的替代方法的示例部分的流程图。关于将车辆功能输出或输出值与车辆模块输出变量或存储器位置相链接,在步骤802中,在存储器中创建模块输出数据结构,模块输出数据结构包括模块输出变量或存储器位置的超集,其中,模块输出变量的超集包括与第一车辆上设置的第一组硬件设备有关的模块输出变量的第一子集和与第二车辆上设置的第二组硬件设备有关的模块输出变量的第二子集。具体地,创建的数据结构可以是“结构(struct)”,其每个成员变量对应于模块输出变量之一。接下来,在步骤804中,创建包括一组输出偏移元素的模块输出偏移表,其中,每个输出偏移元素对应于模块输出变量的超集中的一个,并且包括对应的模块输出变量在模块输入数据结构内的偏移量。如上面参考图5的流程图所描述的,路由引擎在步骤502中通过读取路由表324中的第一条目开始,并基于该条目,在步骤504中确定目的地表328中的对应元素。代替以这种方式执行步骤504,图8的算法使用路由表条目作为模块输出偏移表728中的索引,并且在步骤806中确定模块输出偏移表728中的对应元素。例如,如果路由引擎238位于在第一车辆上运行的vcm200中并且目前正在处理条目#5,那么路由引擎238可从表10a的条目#5中提取“ag_out_tcm_gp3_command”,然后使用所提取的值作为模块输出偏移表728的索引。基于上文定义的示例“模块输出的索引”中的枚举索引,“ag_out_tcm_gp3_command”对应于索引#17。因此,路由引擎可以使用索引从模块输出偏移表728中检索元素#17,即,偏移值0044h。在步骤808中,可以使用存储器中存储的“smodule_outputs”数据结构来构建地址。具体地,可以构建地址,其将偏移值0044h(即,suwag_moduleoutputoffsetarray[17])与“smodule_outputs”数据结构变量(例如04d00h)的地址相加以得到示例地址04d44h。路由引擎(在步骤510)可以将变换后的值链接或存储在该构建的复合地址处,而不是从目的地表328检索到的地址处,以存储与模块输出变量“usr_s_ov.uwtcmgpdrivercontrol”相关联的值。无论是使用目的地表328还是模块输出偏移表728来确定模块输出变量的地址,图5的流程图的步骤506、508、512和514都是相同的。作为车辆功能输出表320(其中每个车辆功能输出元素是来自控制软件234的车辆功能输出变量的存储器地址)的一个替代方案,可以使用车辆功能输出表720,其中每个车辆功能输出元素可以是如表320中的存储器地址或偏移。以类似于如何利用模块输出数据结构的成员变量的相应偏移值来构建模块输出偏移表的方式,可以构建车辆功能输出表720,使得每个元素都是偏移量。因此,每个车辆功能输出元素将是与包括10个其地址在上面的表6中被提及的车辆功能输出变量作为其成员变量的数据结构的成员变量相关联的相应偏移量。虽然已经说明和描述了本发明的特定实施例,但是对于本领域技术人员而言明显的是,可以在不偏离本发明的精神和范围的情况下做出各种其他改变和修改。因此,旨在于所附权利要求中覆盖在本发明范围内的所有这些改变和修改。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1