基于dcs系统的can总线的通信方法、系统、设备及介质
技术领域
1.本发明属于分散式工业控制技术领域,尤其涉及一种基于dcs系统的can总线的通信方法、系统、设备及介质。
背景技术:2.随着信息科学与计算机技术的发展,目前大部分工业领域都实现了数字化控制,正向着智能化方向发展。其中,基于can总线(控制器局域网络)的智能传感器、智能执行器等智能仪表在发电厂等工控领域得到越来越广泛地运用。
3.随着can总线的仪表装机量的增加,dcs系统(分散控制系统)需要从原来的封闭系统转变为开放系统。因此,dcs系统需要一个与can总线智能仪表的数据交互接口。dcs系统不但能从这个接口获取can总线智能仪表的输入输出的实时数据(包括开关量数据或模拟量数据),还能从这个数据获取can总线工作状态信息、诊断信息等其他重要信息。can通讯模块需要有较高的可靠性要求,如果can通讯模块(can主站)发生故障造成can通讯失效,那么,dcs系统会失去对can总线上所有的can智能仪表(can从站)的监控和管理。这样的故障情况若发生在发电厂场景的重要设施中会造成严重后果。在现有技术中,一般使用can总线协议栈芯片实现dcs系统和can总线之间的数据交互,这种方法依赖于特定芯片供应商。
技术实现要素:4.本发明要解决的技术问题是为了克服现有技术中基于dcs系统的can总线通信依赖于芯片,并且可靠性欠佳的缺陷,提供一种基于dcs系统的can总线的通信方法、系统、设备及介质。
5.本发明是通过下述技术方案来解决上述技术问题:
6.作为本发明的第一方面,提供一种基于dcs系统的can总线的通信方法,所述can总线上设有若干个协议栈,所述协议栈包括第一协议栈和第二协议栈,所述第一协议栈用于获取dcs系统的交互数据,所述第二协议栈用于监听所述第一协议栈数据交互,并输出监听结果,所述通信方法包括:
7.获取所述第二协议栈的监听结果;
8.根据所述监听结果设置所述第一协议栈;
9.根据所述第一协议栈的交互数据与所述dcs系统进行通信。
10.较佳地,所述获取所述第二协议栈的监听结果的步骤之前包括:
11.从若干个所述协议栈中选取一个协议栈作为所述第一协议栈;
12.从若干个所述协议栈中选取一个或多个协议栈作为所述第二协议栈。
13.较佳地,所述获取所述第二协议栈的监听结果的步骤之前还包括:
14.接收所述dcs系统的协议栈配置信息;
15.根据所述协议栈配置信息配置所述第一协议栈和所述第二协议栈。
16.较佳地,若从若干个所述协议栈中选取多个协议栈作为所述第二协议栈,则所述
获取所述第二协议栈的监听结果的步骤包括:
17.统计所述第二协议栈的监听结果;
18.若相同的所述监听结果的个数达到预设阈值,则输出所述监听结果。
19.较佳地,所述根据所述监听结果设置所述第一协议栈的步骤包括:
20.根据所述监听结果判断所述第一协议栈的在线状态;
21.根据所述在线状态设置所述第一协议栈。
22.较佳地,所述监听结果包括心跳时间间隔和心跳丢失次数,所述根据所述监听结果判断所述第一协议栈的在线状态的步骤包括:
23.若所述心跳时间间隔低预设间隔阈值且所述心跳丢失次数低于预设次数阈值,则判断所述第一协议栈的状态为在线;
24.若所述心跳时间间隔高于预设间隔阈值和/或所述心跳丢失次数高于预设次数阈值,则判断所述第一协议栈的状态为离线。
25.较佳地,所述根据所述在线状态设置所述第一协议栈的步骤包括:
26.在所述第一协议栈的在线状态为离线时,从所述第二协议栈中选取一个协议栈设置为所述第一协议栈。
27.作为本发明的第二方面,提供一种基于dcs系统的can总线的通信系统,所述can总线上设有若干个协议栈,所述协议栈包括第一协议栈和第二协议栈,所述第一协议栈用于获取dcs系统的交互数据,所述第二协议栈用于监听所述第一协议栈数据交互,并输出监听结果,所述通信系统包括:
28.获取模块,用于获取所述第二协议栈的监听结果;
29.协议栈设置模块,用于根据所述监听结果设置所述第一协议栈;
30.通信模块,用于根据所述第一协议栈的交互数据与所述dcs系统进行通信。
31.作为本发明的第三方面,提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述所述的基于dcs系统的can总线的通信方法。
32.作为本发明的第四方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述所述的基于dcs系统的can总线的通信方法。
33.本发明的积极进步效果在于:
34.本发明提供的一种基于dcs系统的can总线的通信方法、系统、设备及介质,通过设置第二协议栈监听第一协议栈得到监听结果,并根据监听结果设置所述第一协议栈,由此使可靠的第一协议栈来获取dcs系统的交互数据以与dcs系统进行通信,保证了can总线通信的可靠性和容错性,满足了发电厂等高可靠性应用场景。进一步地,此方法运用软件方法替代使用协议栈芯片进行dcs系统与can总线的数据交互的传统方法,摆脱了对特定供应商的依赖。
附图说明
35.图1为本发明实施例1的基于基于dcs系统的can总线的通信方法的流程示意图;
36.图2为本发明实施例1的基于dcs系统的can总线的通信方法的子流程示意图;
37.图3为本发明实施例1的基于dcs系统的can总线的通信方法的另一子流程示意图;
38.图4为本发明实施例1的基于dcs系统的can总线的通信方法的硬件结构图;
39.图5为本发明实施例1的基于dcs系统的can总线的通信方法中存储器的地址空间结构图;
40.图6为本发明实施例2的基于dcs系统的can总线的通信系统的模块示意图;
41.图7为本发明实施例3中的电子设备的结构示意图。
具体实施方式
42.下面通过实施例的方式进一步说明本发明,但并不因此将本发明限制在所述的实施例范围之中。
43.实施例1
44.本实施例提供一种基于dcs系统的can总线的通信方法,所述can总线上设有若干个协议栈,所述协议栈包括第一协议栈和第二协议栈,所述第一协议栈用于获取dcs系统的交互数据,所述第二协议栈用于监听所述第一协议栈数据交互,并输出监听结果,如图1所示,所述通信方法包括:
45.步骤101、获取第二协议栈的监听结果。
46.步骤102、根据监听结果设置所述第一协议栈。
47.步骤103、根据第一协议栈的交互数据与dcs系统进行通信。
48.通过设置第二协议栈监听第一协议栈得到监听结果,并根据监听结果设置所述第一协议栈,由此使可靠的第一协议栈来获取dcs系统的交互数据以与dcs系统进行通信,保证了can总线通信的可靠性和容错性,满足了发电厂等高可靠性应用场景。进一步地,此方法运用软件方法替代使用协议栈芯片进行dcs系统与can总线的数据交互的传统方法,摆脱了对特定供应商的依赖。
49.具体的,如图2所示,步骤101之前包括:
50.步骤1001、选取一个协议栈作为第一协议栈。
51.在本步骤中,can总线上的协议栈若干个,从若干个协议栈中选取一协议栈作为第一协议栈。
52.步骤1002、选取一个或多个协议栈作为第二协议栈。
53.在本步骤中,可以从若干个协议栈中选取一个或多个协议栈设置为第二协议栈,可以满足多种个数的协议栈场景。
54.选取完毕后,执行以下步骤:
55.步骤1003、接收dcs系统的协议栈配置信息。
56.步骤1004、根据协议栈配置信息配置第一协议栈和第二协议栈。
57.在一个实施例中,协议栈配置信息包括can总线协议栈的工作模式:主工作模式或热备份工作模式,主工作模式协议栈即为第一协议栈,热备份工作模式协议栈即为第二协议栈。协议栈配置信息中还包括can总线波特率、can主站心跳时间间隔设置、can主站心跳允许丢失次数设置、can从站心跳时间间隔设置、can从站心跳丢失次数设置。以第一协议栈为例,在第一协议栈的存储器的发送邮箱空间中写入配置事件id,存储器发出中断信号触发第一协议栈产生中断处理,读取存储器中接收邮箱空间里的消息。若消息为配置事件id,则第一协议栈读取存储器的配置数据空间,获取协议栈配置消息,配置通讯要求波特率的
收发模式,通过发送can报文,配置心跳时间间隔和心跳丢失次数。第二协议栈通过协议配置信息配置为只监听第一协议栈,并得到监听结果,不发送任何can报文到can总线上的任何从站。根据协议栈配置信息配置完毕第一协议栈和第二协议栈,以便于后续实现由第二协议栈监听第一协议栈,以设置第一协议栈与dcs系统进行通信。
58.在一个实施例中,若从若干个所述协议栈中选取多个协议栈作为第二协议栈时,则步骤101中包括:
59.统计所述第二协议栈的监听结果。
60.若相同的监听结果的个数达到预设阈值,则输出所述监听结果,通常相同的监听结果超过所有监听结果个数的二分之一时,输出该监听结果,防止多个第二协议栈的监听结果不同导致最终结果出现误差,影响对第一协议栈的设置,保证了监听结果的准确性。
61.具体的,如图3所示,步骤102中还包括:
62.步骤1021、根据监听结果判断第一协议栈的在线状态。
63.在本步骤中,监听结果包括心跳时间间隔和心跳丢失次数。若心跳时间间隔低预设间隔阈值且心跳丢失次数低于预设次数阈值,则判断第一协议栈的状态为在线;
64.若心跳时间间隔高于预设间隔阈值和/或心跳丢失次数高于预设次数阈值,则判断第一协议栈的状态为离线。
65.第二协议栈通过监听心跳时间间隔和心跳丢失次数,对第一协议栈的在线状态进行判断,便于后续设置第一协议栈。
66.步骤1022、根据在线状态设置第一协议栈。
67.在本步骤中,在第一协议栈的在线状态为离线时,从第二协议栈中选取一个协议栈设置为第一协议栈,由此替换离线的第一协议栈,保证第一协议栈与dcs系统的正常通信,提高了通信的可靠性和容错性。
68.下面结合由一个第一协议栈和一个第二协议栈组成的双冗余can总线的实例进一步说明本实施例中的基于dcs系统的can总线的通信方法:
69.如图4所示,该实例的硬件架构具体包括:双冗余电源模块,主控模块,通讯传输模块0,通讯传输模块1,双端口ram模块0,双端口ram模块1,can总线协议栈模块0和can总线协议栈模块1。
70.具体的,双冗余电源模块输入端与两路外接电源连接,将外接电源转换为主控模块、通讯传输模块0、通讯传输模块1,双端口ram模块0、双端口ram模块1、can总线协议栈模块1和can总线协议栈模块2需要的额定电压,并为全部模块硬件供电。
71.通信传输模块0和通信传输模块1经通信端口与所述主控器模块端口相连,用于接收dcs系统控制单元控制指令,并转发至所述主控模块和发送所述主控模块的数据或信息到dcs系统控制单元。
72.双端口ram模块0和双端口ram模块1用于使主控模块与can总线协议栈模块0和can总线协议栈模块1进行数据交互。如图5所示,双端口ram模块0和双端口ram模块1的地址空间应该分成至少8个地址空间区域。主控模块可以读取和写入双端口ram模块0和双端口ram模块1内存储的任意地址内的数据和信息。can总线协议栈模块0,即第一协议栈可以读取双端口ram模块0内存储的数据和信息,并且可以将数据和信息写入双端口ram模块0内存储里任意地址内;can总线协议栈模块1,即第二协议栈可以读取双端口ram模块1内存储的数据
和信息,并且可以将数据和信息写入双端口ram模块1内存储里任意地址内。
73.主控模块获取所述通信传输模块0和所述通信传输模块1接收的dcs系统协议栈配置信息,据此配置can总线协议栈模块0,即第一协议栈和can总线协议栈模块1,即第二协议栈的can总线通讯波特率。若配置所述can总线协议栈模块0为can主站工作模式,则配置所述can总线协议栈模块1为can监听站工作模式。
74.基于dcs系统的can总线的通信方法由所述can总线协议栈模块0和所述can总线协议栈模块1实现。具体的,若can总线协议栈为双冗余设计,则:所述双冗余can总线通讯模块需要具备一个第一协议栈,实现对can总线上的智能仪表进行通讯和控制。同时,can总线通讯模块还需要一个静默的第二协议栈,用于监听can总线上的can主站心跳信息,其中,心跳信息包括心跳时间间隔和心跳丢失次数。
75.在一个实施例中,主控模块硬件可选用微控制器(单片机/mcu)或微处理器(mpu),can协议协议栈模块0硬件和can协议协议栈模块1可选用微控制器(单片机/mcu)或微处理器(mpu),其中微控制器的架构可以是arm、avr(均为微控制器架构)。微处理器的架构可以是arm、x86、powerpc、mips(均为微处理器架构)。
76.具体的通信方法包括:can总线的协议栈执行步骤1003,通过等待中断接收can协议栈配置信息。以can总线协议栈模0为例,当主控模块在双端口ram模块0发送邮箱空间写入配置事件id,双端口ram模块0发出中断信号触发can总线协议栈0模块产生中断处理,在所述can总线协议栈嵌入式软件中断处理函数中读取双端口ram模块0接收邮箱空间里的消息。若消息为配置事件id,则所述can总线协议栈模块0读取所述双端口ram模块0配置数据空间,获取协议栈配置消息。
77.获取协议栈配置信息后,执行步骤1004、根据协议栈配置信息配置第一协议栈和第二协议栈。若can协议栈模块0配置为主工作模式,即设置为第一协议栈,can通讯初始化为配置要求波特率的收发模式,通过发送can报文,配置can从站,配置can从站心跳时间间隔。若在所述双端口ram模块0产生的中断,所述双端口ram模块0的接收邮箱内获取消息为输出事件id,can总线协议栈模块0从双端口ram模块0的can从站输出地址空间读取输出数据通过can报文发送给指定can从站。can总线协议模块0上运行的所述can总线协议栈嵌入式软件在can接收中断中接收来自can从站的can报文,若can报文为输入实时数据,则将输入实时数据写入所述双端口ram模块0的can从站输入实时数据空间;若can报文为报警信息,则将报警信息写入所述端口ram模块0的can从站报警信息空间。
78.若can总线协议栈0模块配置为热备工作模式,即设置为第二协议栈,则can通讯初始化为配置要求波特率的接收模式,只执行步骤101,监听can总线上的can报文,具体包括心跳时间间隔和心跳丢失次数,不发送任何can报文到can总线上的任何can从站。
79.之后执行步骤102、根据监听结果设置所述第一协议栈,具体的,包括:步骤1021、根据监听结果判断第一协议栈的在线状态。若第二协议栈有多个,则先统计所述第二协议栈的监听结果,若相同的监听结果的个数达到预设阈值,则输出所述监听结果,通常相同的监听结果超过所有监听结果个数的二分之一时,输出该监听结果。
80.若第一协议栈为离线状态,则执行步骤1022、根据在线状态设置第一协议栈。在所述双端口ram模块0的发送邮箱写入主站故障事件id。重新将工作模式切换为主工作模式,即第一协议栈,重新初始化can通讯为配置要求波特率的收发模式,按配置要求的主站心跳
时间间隔发送主站心跳到can总线上。
81.第一协议栈设置完毕后,执行步骤103、根据第一协议栈的交互数据与dcs系统进行通信,第一协议栈定时读取双端口ram模块0中的信息发送至dcs系统。
82.在一个实施例中,本方法适用于多种can应用层协议包括:canopen协议、ican协议、devicenet协议、j1939协议(均为can应用层协议)等。本方法能解析和组包canopen协议报文、ican协议报文、devicenet协议报文、j1939协议报文(均为协议报文)等协议报文。
83.本实施例的基于dcs系统的can总线的通信方法通过设置第二协议栈监听第一协议栈得到监听结果,并根据监听结果设置所述第一协议栈,由此使可靠的第一协议栈来获取dcs系统的交互数据以与dcs系统进行通信,保证了can总线通信的可靠性和容错性,满足了发电厂等高可靠性应用场景。进一步地,此方法运用软件方法替代使用协议栈芯片进行dcs系统与can总线的数据交互的传统方法,摆脱了对特定供应商的依赖。
84.实施例2
85.本实施例提供一种基于dcs系统的can总线的通信系统,所述can总线上设有若干个协议栈,所述协议栈包括第一协议栈和第二协议栈,所述第一协议栈用于获取dcs系统的交互数据,所述第二协议栈用于监听所述第一协议栈数据交互,并输出监听结果,如图6所示,所述通信系统包括:
86.获取模块201,用于获取第二协议栈的监听结果。
87.协议栈设置模块202,用于根据监听结果设置第一协议栈。
88.通信模块203,用于根据第一协议栈的交互数据与dcs系统进行通信。
89.通过设置第二协议栈监听第一协议栈得到监听结果,并根据监听结果设置所述第一协议栈,由此使可靠的第一协议栈来获取dcs系统的交互数据以与dcs系统进行通信,保证了can总线通信的可靠性和容错性,满足了发电厂等高可靠性应用场景。进一步地,此方法运用软件方法替代使用协议栈芯片进行dcs系统与can总线的数据交互的传统方法,摆脱了对特定供应商的依赖。
90.具体的,包括:
91.选取单元2001,用于选取一个协议栈作为第一协议栈和选取一个或多个协议栈作为第二协议栈。
92.接收单元2002,用于接收dcs系统的协议栈配置信息。
93.配置单元2003,用于根据协议栈配置信息配置第一协议栈和第二协议栈。
94.在一个实施例中,若从若干个所述协议栈中选取多个协议栈作为第二协议栈,则获取模块201还包括:
95.统计单元2011,用于统计第二协议栈的监听结果。
96.若相同的监听结果的个数达到预设阈值,则输出所述监听结果,通常相同的监听结果超过所有监听结果个数的二分之一时,输出该监听结果。
97.具体的,协议栈设置模块202包括:
98.判断单元2021,用于根据监听结果判断第一协议栈的在线状态。
99.监听结果包括心跳时间间隔和心跳丢失次数,若心跳时间间隔低预设间隔阈值且心跳丢失次数低于预设次数阈值,则判断第一协议栈的状态为在线;
100.若心跳时间间隔高于预设间隔阈值和/或心跳丢失次数高于预设次数阈值,则判
断第一协议栈的状态为离线。
101.第二协议栈通过监听心跳时间间隔和心跳丢失次数,对第一协议栈的在线状态进行判断,便于后续设置第一协议栈。
102.设置单元2022,用于根据在线状态设置第一协议栈。
103.在所述第一协议栈的在线状态为离线时,从第二协议栈中选取一个协议栈设置为第一协议栈,由此替换离线的第一协议栈,保证第一协议栈与dcs系统的正常通信,提高了通信的可靠性和容错性。
104.需要说明的是,本实施例的基于dcs系统的can总线的通信系统的工作原理与实施例1中的基于dcs系统的can总线的通信方法的工作原理相同,因此在此就不再赘述。
105.实施例3
106.图7为本发明实施例提供的一种电子设备的结构示意图,电子设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行所述程序时实现上述基于dcs系统的can总线的通信方法。图7显示的电子设备30仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
107.电子设备30可以以通用计算设备的形式表现,例如其可以为服务器设备。电子设备30的组件可以包括但不限于:上述至少一个处理器31、上述至少一个存储器32、连接不同系统组件(包括存储器32和处理器31)的总线33。
108.总线33包括数据总线、地址总线和控制总线。
109.存储器32可以包括易失性存储器,例如随机存取存储器(ram)321和/或高速缓存存储器322,还可以进一步包括只读存储器(rom)323。
110.存储器32还可以包括具有一组(至少一个)程序模块324的程序/实用工具325,这样的程序模块324包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
111.处理器31通过运行存储在存储器32中的计算机程序,从而执行各种功能应用以及数据处理,例如上述基于dcs系统的can总线的通信方法。
112.电子设备30也可以与一个或多个外部设备34(例如键盘、指向设备等)通信。这种通信可以通过输入/输出(i/o)接口35进行。并且,模型生成的设备30还可以通过网络适配器36与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器36通过总线33与模型生成的设备30的其它模块通信。应当明白,尽管图中未示出,可以结合模型生成的设备30使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、raid(磁盘阵列)系统、磁带驱动器以及数据备份存储系统等。
113.应当注意,尽管在上文详细描述中提及了电子设备的若干单元/模块或子单元/模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多单元/模块的特征和功能可以在一个单元/模块中具体化。反之,上文描述的一个单元/模块的特征和功能可以进一步划分为由多个单元/模块来具体化。
114.实施例4
115.本实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如上述实施例中基于dcs系统的can总线的通信方法。
116.其中,可读存储介质可以采用的更具体可以包括但不限于:便携式盘、硬盘、随机存取存储器、只读存储器、可擦拭可编程只读存储器、光存储器件、磁存储器件或上述的任意合适的组合。
117.在可能的实施方式中,本发明还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行实现上述实施例中基于dcs系统的can总线的通信方法。
118.其中,可以以一种或多种程序设计语言的任意组合来编写用于执行本发明的程序代码,所述程序代码可以完全地在用户设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户设备上部分在远程设备上执行或完全在远程设备上执行。
119.虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。