一种基于can通信的可重构化多线程并行上位机系统
技术领域
本发明涉及电路系统
技术领域
,具体是指一种基于can通信的可重构化多线程并行上位机系统。背景技术
上位机的作用主要是实时地在线监控数字电源的各项表征参数,运行状态和工作模式等,另外还可以控制数字电源系统。过去,在还没有这类基于虚拟仪器技术的上位机软件还没有出现的时候,人们是使用传统的仪器仪表来完成对电路系统的监控和控制工作。
上位机软件可以传输数据,实现对数字电源的参数设置,在线校准和逻辑测试。过去,人们在调试这类型电源系统的时候,往往需要辅以许多测试仪器仪表来进行硬件调试工作,以实时得知电路的运行状态等信息。这类仪表数量繁多,读取和保存不方便,而且从外部直接耦合进入电源系统还会引入不知名的干扰,这些问题都会对研发工作造成极大的阻碍。
此外,在进行软件调试的时候,需要一些控制模型的相关参数进行修改和验证。例如传统的PID控制就需要对比例系数/积分系数/微分系数等控制参数进行调节并观察其工作状态,以此为判据来进行软件调试。由于不能在线以及实时的修改控制策略和参数,对于数字电源模块来说,每次修改控制参数需要重新烧录程序。而对于传统电源模块,改变控制环路参数则意味着可能要修改硬件电路的元器件参数。
在使用过程中,同样也需要对电路的实时运行状态进行监控,调整和修改输出参数。过去,人们监控电路的实时运行状态需要多种仪器仪表嵌入电路系统。在需要监控的参数比较多的时候,这类仪表往往就显得人机交互体验不够顺畅,其外形不够美观以及系统操作不够简单/轻便/自由。
发明内容
本发明要解决的技术问题是解决上述问题,提供一种有效地提升上位机程序的运行效率,降低故障概率的基于can通信的可重构化多线程并行上位机系统。
为解决上述技术问题,本发明提供的技术方案为:一种基于can通信的可重构化多线程并行上位机系统,其特征在于:包括主线程和与主线程连接的副线程,所述主线程包括打开CAN设备、初始化CAN设备、CAN报文传输和接收、CAN设备重启、CAN设备设定改变,所述主线程为一种有序、优雅地进行CAN通信的并行式程序的状态机模式,运行状态由一个枚举型变量中的运行状态枚举来决定,运行状态枚举的数据类型是一种可以被命名的整型常数的集合,来表达主线程的不同运行状态,所述运行状态枚举拥有四种数值:Init、Run、Wait和Exit,处于不同运行状态枚举进入不同的状态运行,同时会根据情况更新运行状态枚举,然后在下一次主线程循环里面进入指定的运行状态,所述主线程包括以下步骤:
S1,判断运行状态枚举的值,判断运行状态枚举是否为Exit,判断运行状态枚举为Exit则结束该程序,判断运行状态枚举补位Exit则进入判断运行状态枚举的值;
S2、步骤S1中运行状态枚举的值包括有Init、Run、Wait和Exit,
S3、所述Init包括以下步骤:
a1、对CAN配制信息按名称捆绑进CAN通信标准簇,
a2、创建用户事件CANOpen,
a3、把新的CAN通信标准簇重新插入主线程数据流,
a4、把事件插入主线程的事件数据流、运行状态枚举赋值Wait数值;
所述Wait包括事件结构产生自用户事件的更新,所述事件结构产生自用户事件的更新包括并行Open值改变事件、其他值的改变事件,所述并行Open值改变事件打开CAN的步骤为依次执行三个子VI程序,分别为Open子VI程序、Init子VI程序、Start子VI程序,所述其他值的改变事件包括对所改变的其他值按名称捆绑进CAN通信标准簇里面的特定信息值,所述并行Open值改变事件包括对事件数据流进行判断、运行状态枚举赋予Run和Wait数值;
所述Run包括以下步骤:
b1、事件结构,所述事件结构包括产生自前面板按键控件和用户事件数据流UpdateUIEvent,
b2、当为对应控件事件调用CAN发送子程序把打包好的CAN通信标准簇转化为CAN报文,
b3、发送CAN报文,
b4、当为用户数据用户事件数据流UpdateUIEvent则对应Event属性节点的Disablie赋值,然后对事件数据流进行判断,最后运行状态枚举赋予Run数值,
b5、步骤b3和步骤b4最后运行状态枚举都赋予Run和Wait数值的时候,主线程进入下一轮循环;
所述Exit包括以下步骤:
c1、取消注册事件,注销用户事件和从CAN通信标准簇里面按名称解绑出对应数据,
c2、关闭CAN设备,运行状态枚举都赋予Exit数值,则结束程序;
所述副线程包括接收线程、循环发送询问报文线程、输出参数修改线程、校准高低位参数修改线程,
所述接收线程运行过程包括以下步骤:
F1、先判断主线程的状态是否是open,若主线程的状态是open,则调用子VI,
F2、通过调用CAN二次库把接收到CAN报文格式转换为CAN通信标准簇,反之,则判断为CAN为打开,延时50ms,
F3、在得到CAN通信标准簇之后,判断其是否为空信息,若不是空信息,则继续进行操作,对报文进行解析和翻译;
所述循环发送询问报文线程的功能为及时获取和更新数字电源模块的各种运行参数和模式状态数据,运行过程包括以下步骤:
T1、进入循环发送询问报文线程为后对主线程状态进行判断,然后通过一个根据协议规定来自动生成轮询参数的并行程序框图,得到数据帧并组合为询问用的数据帧的字符串,
T2、接着,进行对主线程状态进行判断,进入一个独立于主线程的发送程序框图,
T3、最后,又是进行对主线程状态进行判断,进行更新多列列表框数据的操作,
T4、更新多列列表框数据需要判断数据帧的排队个数不超过500,然后判断是否要清空多列列表框,最终把接收到的数据更新到多列列表框控件,
所述输出参数修改线程为对数字电源模块的各种运行参数和模式状态数据进行修改,运行过程包括以下步骤:
W1、在进入输出参数修改线程之后,先是判断参数设置枚举,然后加入对应的程序分支以合成输出报文用到的字符串,并把这个数据传输给主线程,并触发主线程的按键事件,
W2、同时,有一个对话框的并行程序在本副线程中执行,
W3、除了进行报文合成,还会对下拉选择控件所生成的枚举变量进行判断,生成相应的提示信息,来提示用户对应参数的输入范围;
所述校准高低位参数修改线程的功能为对数字电源模块进行校准,运行过程包括以下步骤:
X1、分别对“校准高低位设置”数值输入控件和“较准设置”数值输入控件的枚举进行判断,然后分别计入对应的程序分支,
X2、然后在对应程序分支里面读取数据控件的数据并合成数据帧,输出校准参数的字符串,
X3、当前面板按下发送按键,主线程进入相应的事件分支接收这个字符串,并发送CAN报文。
采用以上结构后,本发明具有如下优点:本发明系统是一种用于数字电源模块的CAN上位机软件,是由一种图形化高级编程语言labview编写的,本发明的特点是:
1、多线程以串并行混联的方式进行构成,同时又避免数据发生竞争冒险现象,
2、可根据需要功能进行可重构化设计,可以根据实际需求增减线程的数量和构成方式,
3、可根据协议内容和实际硬件进行适应化以及可重构化设计,通过替换协议解读方式和二次库来适应不同的数字电源系统,
4、一主多副的软件构架,以提升上位机系统的稳定性,
5、主线程为一种可以有序及优雅地进行CAN通信的并行式程序的状态机模式。
本发明的主线程是整个程序唯一一个在整个使用过程都会一直运作的程序线程,其他程序线程会根据运行状态枚举和中间量状态等信息来决定是否运行,这种“一个主线程一直运行,多个副线程间断运作”的多线程模式可以有效地提升上位机程序的运行效率,降低故障概率。
作为改进,主线程在Init状态下,主线程的主要功能是打开CAN设备并对其进行初始化,具体操作包括对CAN通信标准簇进行分解和再捆绑,通过调用属性节点和动态注册事件来产生UI更新事件UpdateUIEvent,以此及时更新CAN通信标准簇与调整UI数据的状态,同时,为运行状态枚举赋值Wait,让主线程进入Wait模式。
作为改进,主线程在Wait状态下,主线程的主要功能是等待CAN设备准备完成,并判断CAN设备的操作状态来决定下一步进入何种主线程状态以及更新CAN通信标准簇里面的信息,Wait状态下的主线程是一种事件结构的程序,事件结构的事件类型主要包括CAN通信标准簇里面的特定信息值发生改变和前面板关闭事件。
作为改进,主线程在Run状态下,主线程的主要功能是判断并接收来自各个副线程的数据,并把这些数据打包为CAN通信标准簇,并调用CAN发送子程序把打包好的CAN通信标准簇转化为CAN报文发送出去。
作为改进,主线程在Init状态下,主线程的主要功能是打开CAN设备并对其进行初始化,具体操作包括对CAN通信标准簇进行分解和再捆绑,通过调用属性节点和动态注册事件来产生UI更新事件UpdateUIEvent,以此及时更新CAN通信标准簇与调整UI数据的状态,同时,为运行状态枚举赋值Wait,让主线程进入Wait模式。
作为改进,主线程在Wait状态下,主线程的主要功能是等待CAN设备准备完成,并判断CAN设备的操作状态来决定下一步进入何种主线程状态以及更新CAN通信标准簇里面的信息。
作为改进,所述副线程还包括校准复位、识别符合成、模块序列号设置参数修改、模块状态信息分离与显示、逻辑变量输出、电源模块开关机线程。
附图说明
图1是本发明一种基于can通信的可重构化多线程并行上位机系统的主线程的程序功能示意图。
图2是本发明一种基于can通信的可重构化多线程并行上位机系统的主线程的程序框图。
图3是本发明一种基于can通信的可重构化多线程并行上位机系统的接收线程程序框图。
图4是本发明一种基于can通信的可重构化多线程并行上位机系统的循环发送询问报文线程程序框图。
图5是本发明一种基于can通信的可重构化多线程并行上位机系统的输出参数修改线程程序框图。
图6是本发明一种基于can通信的可重构化多线程并行上位机系统的校准高低位参数修改线程程序框图。
具体实施方式
下面结合附图对本发明做进一步的详细说明。
结合所有附图,一种基于can通信的可重构化多线程并行上位机系统,包括一个主线程和多个与主线程连接的副线程,所述主线程包括打开CAN设备、初始化CAN设备、CAN报文传输和接收、CAN设备重启、CAN设备设定改变,所述主线程运行状态由一个枚举型变量中的运行状态枚举来决定,运行状态枚举的数据类型是一种可以被命名的整型常数的集合,来表达主线程的不同运行状态,所述运行状态枚举拥有四种数值:Init、Run、Wait和Exit,处于不同运行状态枚举进入不同的状态运行,同时会根据情况更新运行状态枚举,然后在下一次主线程循环里面进入指定的运行状态,所述主线程包括以下步骤:
S1,判断运行状态枚举的值,判断运行状态枚举是否为Exit,判断运行状态枚举为Exit则结束该程序,判断运行状态枚举补位Exit则进入判断运行状态枚举的值;
S2、步骤S1中运行状态枚举的值包括有Init、Run、Wait和Exit,
S3、所述Init包括以下步骤:
a1、对CAN配制信息按名称捆绑进CAN通信标准簇,
a2、创建用户事件CANOpen,
a3、把新的CAN通信标准簇重新插入主线程数据流,
a4、把事件插入主线程的事件数据流、运行状态枚举赋值Wait数值;
所述Wait包括事件结构产生自用户事件的更新,所述事件结构产生自用户事件的更新包括并行Open值改变事件、其他值的改变事件,所述并行Open值改变事件打开CAN的步骤为依次执行三个子VI程序,分别为Open子VI程序、Init子VI程序、Start子VI程序,所述其他值的改变事件包括对所改变的其他值按名称捆绑进CAN通信标准簇里面的特定信息值,所述并行Open值改变事件包括对事件数据流进行判断、运行状态枚举赋予Run和Wait数值;
所述Run包括以下步骤:
b1、事件结构,所述事件结构包括产生自前面板按键控件和用户事件数据流UpdateUIEvent,
b2、当为对应控件事件调用CAN发送子程序把打包好的CAN通信标准簇转化为CAN报文,
b3、发送CAN报文,
b4、当为用户数据用户事件数据流UpdateUIEvent则对应Event属性节点的Disablie赋值,然后对事件数据流进行判断,最后运行状态枚举赋予Run数值,
b5、步骤b3和步骤b4最后运行状态枚举都赋予Run和Wait数值的时候,主线程进入下一轮循环;
所述Exit包括以下步骤:
c1、取消注册事件,注销用户事件和从CAN通信标准簇里面按名称解绑出对应数据,
c2、关闭CAN设备,运行状态枚举都赋予Exit数值,则结束程序;
所述副线程包括接收线程、循环发送询问报文线程、输出参数修改线程、校准高低位参数修改线程,
所述接收线程运行过程包括以下步骤:
F1、先判断主线程的状态是否是open,若主线程的状态是open,则调用子VI,
F2、通过调用CAN二次库把接收到CAN报文格式转换为CAN通信标准簇,反之,则判断为CAN为打开,延时50ms,
F3、在得到CAN通信标准簇之后,判断其是否为空信息,若不是空信息,则继续进行操作,对报文进行解析和翻译;
所述循环发送询问报文线程的功能为及时获取和更新数字电源模块的各种运行参数和模式状态数据,运行过程包括以下步骤:
T1、进入循环发送询问报文线程为后对主线程状态进行判断,然后通过一个根据协议规定来自动生成轮询参数的并行程序框图,得到数据帧并组合为询问用的数据帧的字符串,
T2、接着,进行对主线程状态进行判断,进入一个独立于主线程的发送程序框图,
T3、最后,又是进行对主线程状态进行判断,进行更新多列列表框数据的操作,
T4、更新多列列表框数据需要判断数据帧的排队个数不超过500,然后判断是否要清空多列列表框,最终把接收到的数据更新到多列列表框控件,
所述输出参数修改线程为对数字电源模块的各种运行参数和模式状态数据进行修改,运行过程包括以下步骤:
W1、在进入输出参数修改线程之后,先是判断参数设置枚举,然后加入对应的程序分支以合成输出报文用到的字符串,并把这个数据传输给主线程,并触发主线程的按键事件,
W2、同时,有一个对话框的并行程序在本副线程中执行,
W3、除了进行报文合成,还会对下拉选择控件所生成的枚举变量进行判断,生成相应的提示信息,来提示用户对应参数的输入范围;
所述校准高低位参数修改线程的功能为对数字电源模块进行校准,运行过程包括以下步骤:
X1、分别对“校准高低位设置”数值输入控件和“较准设置”数值输入控件的枚举进行判断,然后分别计入对应的程序分支,
X2、然后在对应程序分支里面读取数据控件的数据并合成数据帧,输出校准参数的字符串,
X3、当前面板按下发送按键,主线程进入相应的事件分支接收这个字符串,并发送CAN报文。
主线程在Init状态下,主线程的主要功能是打开CAN设备并对其进行初始化,具体操作包括对CAN通信标准簇进行分解和再捆绑,通过调用属性节点和动态注册事件来产生UI更新事件UpdateUIEvent,以此及时更新CAN通信标准簇与调整UI数据的状态,同时,为运行状态枚举赋值Wait,让主线程进入Wait模式。
主线程在Wait状态下,主线程的主要功能是等待CAN设备准备完成,并判断CAN设备的操作状态来决定下一步进入何种主线程状态以及更新CAN通信标准簇里面的信息,Wait状态下的主线程是一种事件结构的程序,事件结构的事件类型主要包括CAN通信标准簇里面的特定信息值发生改变和前面板关闭事件。
主线程在Run状态下,主线程的主要功能是判断并接收来自各个副线程的数据,并把这些数据打包为CAN通信标准簇,并调用CAN发送子程序把打包好的CAN通信标准簇转化为CAN报文发送出去。
主线程在Init状态下,主线程的主要功能是打开CAN设备并对其进行初始化,具体操作包括对CAN通信标准簇进行分解和再捆绑,通过调用属性节点和动态注册事件来产生UI更新事件UpdateUIEvent,以此及时更新CAN通信标准簇与调整UI数据的状态,同时,为运行状态枚举赋值Wait,让主线程进入Wait模式。
主线程在Wait状态下,主线程的主要功能是等待CAN设备准备完成,并判断CAN设备的操作状态来决定下一步进入何种主线程状态以及更新CAN通信标准簇里面的信息。
所述副线程还包括校准复位、识别符合成、模块序列号设置参数修改、模块状态信息分离与显示、逻辑变量输出、电源模块开关机线程。
本发明在具体实施时,在Init状态下,主线程的主要功能是打开CAN设备并对其进行初始化。具体操作包括对CAN通信标准簇进行分解和再捆绑,如把从CAN通信标准簇分解出来的CAN配置信息进行覆写,然后按名称捆绑回CAN通信标准簇里面,通过调用属性节点和动态注册事件来产生UI更新事件(英文名称UpdateUIEvent),以此及时更新CAN通信标准簇与调整UI数据的状态。同时,为“运行状态枚举”赋值“Wait”,让主线程进入Wait模式。
在Wait状态下,主线程的主要功能是等待CAN设备准备完成,并判断CAN设备的操作状态来决定下一步进入何种主线程状态以及更新CAN通信标准簇里面的信息。Wait状态下的主线程是一种事件结构的程序,这类似于中断事件,是一种讲究实时性的编程结构,只在发生相应的事件才会执行相应的程序的编程结构,事件结构的事件类型主要包括CAN通信标准簇里面的特定信息值发生改变和前面板关闭事件,一共十种事件类型。除了CAN通信标准簇里面的open值改变事件以外,其他CAN通信标准簇里面的特定信息值发生改变只是对CAN通信标准簇里面的对应参数进行替换而已,然后产生相应的UI更新事件(英文名称UpdateUIEvent)。
其中,需要重点描述一下主线程的Wait状态的open事件。该程序部分是用于初始化CAN设备完成之后,对CAN设备进行特定步骤的操作才可以成功打开CAN设备。通常的步骤是依次执行三个子VI程序,分别是1.Open、2.Init、3.Start,并判断是否执行成功。另外,该部分还需要产生对应的用户事件来对整个多线程系统进行调控,以提升系统的可靠性。并根据执行效果判断“运行状态枚举”的赋值。若打开CAN设备不成功便停留在Wait状态,如果打开CAN设备成功便对“运行状态枚举”赋值Run。
在Run状态下,主线程的主要功能是判断并接收来自各个副线程的数据,并把这些数据打包为本发明所定义的CAN通信标准簇,并调用CAN发送子程序把打包好的CAN通信标准簇转化为CAN报文发送出去。该程序是一个事件结构的编程结构,可以通过“某个按键按下”这种事件来触发程序的运行。例如,当“输出参数按键按下”的事件发生的时候,便进入了相应的程序流程,把来自输出参数副线程的数据帧(已经转化为字符串的数据帧)打包为CAN通信标准簇,接着转化为CAN报文发送出去。另外,发生“超时事件”会让主线程继续运行在Run状态。最后如果接收到CAN关闭的命令(该命令可能来自于前面板的关闭按键或者CAN设备的关闭),便会进入“CAN关闭事件”,具体操作为调用CAN关闭子函数和更新相应的用户事件和产生UI更新事件(英文名称UpdateUIEvent)。
主线程除了进行上述的操作以外,还会更新一些相应的用户事件和产生UI更新事件(英文名称UpdateUIEvent)。这些事件(Event,是对并行程序的数据流的一种描述方式,一般用于协调多个线程的并行操作)会其他副线程的运行状态进行控制,并与其他副线程进行数据的传输。以此来达到多个线程协调运作的目的,实现了程序的并行运行。
接下来介绍各个副线程,这些线程会根据主线程所操作的“运行状态枚举”来进入相应运作状态,并执行相应的程序。
接收线程:结合图3,为了及时接收来自数字电源模块的报文并进行解析,需要一个接收CAN报文并对CAN报文进行翻译的线程。本发明用于实现该功能的副线程是“接收线程”。
副线程“接收线程”的运行过程:先判断主线程的状态状态是否是open,若主线程的状态状态是open,则调用子VI“VCI_Recieve”,通过调用CAN二次库把接收到CAN报文格式转换为CAN通信标准簇。反之,则判断为CAN为打开,延时50ms。在得到CAN通信标准簇之后,判断其是否为空信息。若不是空信息,则继续进行如程序框图所示的操作,对报文进行解析和翻译。
循环发送询问报文线程:结合图4,为了及时获取和更新数字电源模块的各种运行参数和模式状态数据,需要一个轮询发送询问CAN报文的线程。本发明用于实现该功能的副线程是“循环发送询问报文线程”,“循环发送询问报文线程”的程序结构是平铺式顺序结构(英文名称flat sequence),即一种按照指定顺序执行相应程序帧(英文名称frame)的程序结构。本发明的循环发送询问报文线程用了三个程序帧,分别是:合成询问的数据帧的字符串(顺序0)、发送询问报文(顺序1)和更新多列列表框数据(顺序2)。
在进入“循环发送询问报文线程”之后,先是对主线程状态进行判断,然后通过一个根据协议规定来自动生成轮询参数的并行程序框图,得到数据帧并组合为询问用的数据帧的字符串。接着,进行对主线程状态进行判断,进入一个独立于主线程的发送程序框图。最后,又是进行对主线程状态进行判断,进行更新多列列表框数据的操作。更新多列列表框数据需要判断数据帧的排队个数(帧数)不超过500,然后判断是否要清空多列列表框,最终把接收到的数据更新到多列列表框控件。
在循环发送询问报文线程里面加入更新多列列表框数据的程序可以避免其数据流的竞争-冒险效应(类似于数字电路的竞争-冒险效应,这种现象也在并行的程序里面会出现。同一数据经不同线程的数据流传输后,到达中某一会合点的时间有先有后,会发生一些数据错误现象),以提高系统的可靠性。
输出参数修改线程的程序结构是一种条件结构(英文名称case structure)。结合图5,先是对前面板控件的下拉选择控件所生成的枚举变量进行判断,然后加入对应的程序分支(英文名称case),根据通信协议合成相应的输出的字符串,并把这个字符串传递给主流程的发送程序。最终由主流程来完成CAN发送的过程,这可以避免CAN设备的硬件冲突等问题。
在进入“输出参数修改线程”之后,先是判断“参数设置”枚举,然后加入对应的程序分支(case)以合成输出报文用到的字符串,并把这个数据传输给主线程,并触发主线程的按键事件(Event,这个需要前面板的按键控件被按下才可以启动)。同时,有一个对话框的并行程序在本副线程中执行。除了进行报文合成,还会对下拉选择控件所生成的枚举变进行判断,生成相应的提示信息,来提示用户对应参数的输入范围。
校准高低位参数修改线程”的程序结构是一种条件结构(英文名称casestructure)。结合图6,会分别对“校准高低位设置”和“较准设置”的枚举进行判断,然后分别计入对应的程序分支(英文名称case)。然后在对应程序分支里面读取数据控件并合成数据帧,输出校准参数的字符串。当前面板按下发送按键,主线程进入相应的事件分支接收这个字符串,并发送CAN报文。
至此,本发明主要的几个线程已经介绍完毕,这几个线程已经可以满足对数字电源模块的一些常规的监控和控制。另外,为了增加本发明所提及的上位机系统的可用性,还可以根据对数字电源模块的功能需要,增加其他副线程,例如“校准复位”、“识别符合成”、“模块序列号设置参数修改”、“模块状态信息分离与显示”、“逻辑变量输出”和“电源模块开关机”等副线程,均可以这种方法来增加上位机的功能。
总而言之本发明具有以下优点:
可重构性:本发明的并行软件结构可以根据具体需要随意地增减所有副线程,按照需要构造出合适的上位机软件。而且通过配置和传递运行状态枚举和中间量状态等信息,达到各个线程协调运行的效果。
向下兼容性:本发明可以通过接入不同的二次库,实现与不同CAN设备的连接,向下地对硬件有很宽的包容性。
串并行协调性:对某些线程进行组合,合称为平铺式顺序结构(英文名称flatsequence),以通过消除冒险竞争。在实际设计过程中,可以把数种单功能线程进行合适的串并行组合,一些线程互为串行关系,一些线程互为并行关系。这种串并行协调性有助于提高系统的鲁棒性和可靠性。
一种多线程以串并行混联的可重构方式:按照实际电源模块需求,可以安排不同种类的副线程进行串联或者并联的方式进行重构。其中,对包含“会产生竞争冒险现象的数据流”的复数个副线程需要以串行方式进行程序构造(具体程序构造方法是把这数个互相有数据冲突的副线程以平铺式顺序结构(英文名称flat sequence)进行重构,让它们按照顺序进行,以消除数据流的竞争冒险现象),而彼此之间没有数据冲突的副线程可以互相以并联的方式进行构造。然后,所有线程彼此以串行和并行同时具备的连接方式进行混合。在实际设计过程中,可以把数种单功能线程进行合适的串并行组合,一些线程互为串行关系,一些线程互为并行关系。这种串并行协调性有助于提高系统的鲁棒性和可靠性。
由于不同CAN硬件设备可能需要不同的操作方式(开启设备电平时序,关闭设备电平时序和反射匹配阻抗都可能不一样),所以对于不同的CAN设备需要不同的处置方式。本发明可以通过接入不同的二次库,实现与不同CAN设备的连接,向下地对硬件有很宽的包容性。
对副线程种类以及数量的可重构性:本发明的并行软件结构可以根据具体需要随意地增减所有副线程,按照需要构造出合适的上位机软件。而且通过配置和传递运行状态枚举和中间量状态等信息,达到各个线程协调运行的效果。这种可重构性具有“一主多副”的特点,即一个主线程持续性地工作,多个副线程间歇性地工作,所有线程以上述的“串并行混联方式”进行工作。
本发明的工作原理:所有线程,包括一个主线程和复数副线程都共用一个CAN通信标准簇,所有线程均可以对这个CAN通信标准簇读取/写入,本发明定义的CAN通信标准簇是根据现有电动汽车车载传导式充电机标准CAN通信协议进行定义的,包括识别符的系统类型、源地址、目标地址、命令类型、数据、标准帧/远程帧标志、数据长度帧和通道类型等等数据,并由这些复数类型的数据重新捆绑构成一个簇,簇是一种数据结构,类似于C语言中的结构体变量。
以上对本发明及其实施方式进行了描述,这种描述没有限制性,实际的结构并不局限于此。总而言如果本领域的普通技术人员受其启示,在不脱离本发明创造宗旨的情况下,不经创造性的设计出与该技术方案相似的结构方式及实施例,均应属于本发明的保护范围。