CN117687344A - I/o数据共享方法、控制器及系统 - Google Patents
I/o数据共享方法、控制器及系统 Download PDFInfo
- Publication number
- CN117687344A CN117687344A CN202410140013.2A CN202410140013A CN117687344A CN 117687344 A CN117687344 A CN 117687344A CN 202410140013 A CN202410140013 A CN 202410140013A CN 117687344 A CN117687344 A CN 117687344A
- Authority
- CN
- China
- Prior art keywords
- controller
- module
- configuration
- protocol frame
- shared
- Prior art date
- Legal status (The legal status 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 status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 87
- 230000004044 response Effects 0.000 claims description 49
- 230000001360 synchronised effect Effects 0.000 claims description 48
- 238000013507 mapping Methods 0.000 claims description 17
- 230000009471 action Effects 0.000 claims description 13
- 239000000284 extract Substances 0.000 claims description 10
- 230000008569 process Effects 0.000 description 22
- 238000010586 diagram Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008929 regeneration Effects 0.000 description 1
- 238000011069 regeneration method Methods 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/042—Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
- G05B19/0423—Input/output
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/20—Pc systems
- G05B2219/25—Pc structure of the system
- G05B2219/25257—Microcontroller
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Automation & Control Theory (AREA)
- Programmable Controllers (AREA)
Abstract
本申请公开了一种I/O数据共享方法、控制器及系统,属于工业自动化控制领域。本申请提供的I/O数据共享方法,包括:获取预先下载好的目标组态数据;其中,所述目标组态数据是第一控制器预先从第二控制器下载好的组态数据,所述目标组态数据包括第二控制器所控制的共享I/O模块的组态数据;获取共享I/O模块生成的数据包;根据所述目标组态数据,从所述数据包中提取所述共享I/O模块的I/O数据。本申请无需依赖第二控制器的转发操作,第一控制器可以直接从共享I/O模块获取I/O数据,提高了第一控制器获取的I/O数据的实时性。
Description
技术领域
本申请属于工业自动化控制领域,具体涉及一种I/O数据共享方法、控制器及系统。
背景技术
在工业自动化控制领域中,控制系统通常包括具有控制逻辑的控制器和实现输入/输出数据功能的I/O(Input/Output,输入/输出)模块。受制于单个控制器有限的运算性能,控制系统通常会将控制逻辑分散在多个控制器中,多个控制器各自控制至少一个I/O模块。
在控制系统运行过程中,往往会涉及到多个控制器使用同一个I/O模块的数据。相关技术中,I/O模块与其所属控制器的耦合性极强,当其他控制器需要使用该I/O模块的I/O数据时,通常利用该I/O模块所属控制器进行控制器间的通信,通过该I/O模块所属的控制器将该I/O模块的I/O数据转发分享给其他控制器。
然而,相关技术中存在通过转发方式获取的I/O数据实时性较差的问题。例如,I/O模块所属的控制器将该I/O模块的I/O数据通过转发方式共享给其他控制器。其他控制器收到该I/O模块的I/O数据后只能在下个周期使用该I/O数据。由于其他控制器需要通过控制器转发方式获取该I/O数据,延误了一段时间,导致I/O数据的实时性比较差。
发明内容
本申请实施例提供一种I/O数据共享方法、控制器及系统,能够解决相关技术中通过转发方式获取的I/O数据实时性较差的问题。
第一方面,本申请实施例提供了一种I/O数据共享方法,该方法包括:
获取预先下载好的目标组态数据;其中,所述目标组态数据是第一控制器预先从第二控制器下载好的组态数据,所述目标组态数据包括第二控制器所控制的共享I/O模块的组态数据;
获取共享I/O模块生成的数据包;
根据所述目标组态数据,从所述数据包中提取所述共享I/O模块的I/O数据。
第二方面,本申请实施例提供了一种I/O数据共享方法,该方法包括:
获取目标组态数据,所述目标组态数据包括第二控制器所控制的共享I/O模块的组态数据;
向第一控制器发送目标组态数据,以使所述第一控制器根据所述目标组态数据从共享I/O模块生成的数据包中提取I/O数据。
第三方面,本申请实施例提供了一种第一控制器,包括处理器和存储器,所述存储器存储可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如第一方面所述的方法的步骤。
第四方面,本申请实施例提供了一种第二控制器,包括处理器和存储器,所述存储器存储可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如第二方面所述的方法的步骤。
第五方面,本申请实施例提供了一种分散控制系统,包括:第三方面所述的第一控制器和第四方面所述的第二控制器。
在本申请实施例中,第一控制器获取预先下载好的目标组态数据;其中,目标组态数据是第一控制器预先从第二控制器下载好的组态数据,目标组态数据包括第二控制器所控制的共享I/O模块的组态数据;获取共享I/O模块生成的数据包;根据目标组态数据,从数据包中提取共享I/O模块的I/O数据。这样,在第一控制器需要使用共享I/O模块的I/O数据的场景下,第一控制器自身可以获取共享I/O模块生成的数据包,并根据预先从第二控制器下载好的组态数据,从数据包中提取共享I/O模块的I/O数据,与相关技术相比,实现了共享I/O模块与其所属的第二控制器的解耦,无需依赖第二控制器的转发操作,第一控制器可以直接从共享I/O模块获取I/O数据,提高了第一控制器获取的I/O数据的实时性。
附图说明
图1是本申请实施例提供的一种分散控制系统下的I/O数据共享的架构组成示意图;
图2是本申请实施例提供的一种I/O数据共享方法的示意性流程图;
图3是本申请实施例提供的另一种I/O数据共享方法的示意性流程图;
图4-1是本申请实施例提供的一种第一控制器执行的组态同步过程的示意性流程图;
图4-2是本申请实施例提供的另一种第一控制器执行的组态同步过程的示意性流程图;
图5是本申请实施例提供的另一种I/O数据共享方法的示意性流程图;
图6是本申请实施例提供的另一种I/O数据共享方法的示意性流程图;
图7-1是本申请实施例提供的一种第二控制器执行的组态同步过程的示意性流程图;
图7-2是本申请实施例提供的另一种第二控制器执行的组态同步过程的示意性流程图;
图8是本申请实施例提供的一种引用站执行的组态同步过程的示意性流程图;
图9是本申请实施例提供的组态同步过程中引用站和共享站进行交互的示意性流程图;
图10-1是本申请实施例提供的一种共享站执行的组态同步过程的示意性流程图;
图10-2是图10-1中所示的“组态同步”步骤的具体过程的示意性流程图;
图11是本申请实施例提供的一种第一控制器的示意性结构图;
图12是本申请实施例提供的一种第二控制器的示意性结构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中“和/或”表示所连接对象的至少其中之一,字符“/”,一般表示前后关联对象是一种“或”的关系。
如背景技术所描述的,在工业自动化控制领域中,分散控制系统通常包括具有控制逻辑的控制器、实现输入/输出数据功能的I/O模块。受制于单个控制器有限的运算性能,分散控制系统通常会将控制逻辑分散在多个控制器中,每个控制器控制至少一个I/O模块。在分散控制系统运行过程中,往往会涉及到多个控制器使用同一个I/O模块的数据。
相关技术中,I/O模块与其所属控制器的耦合性极强,当其他控制器需要使用I/O模块的I/O数据时,通常利用该I/O模块所属控制器进行控制器间的通信,通过该I/O模块所属的控制器将该I/O模块的I/O数据转发分享给其他控制器。当其他控制器需要频繁多次使用该I/O模块的大量数据时,需要该I/O模块所属的控制器将该I/O模块的大量数据分多次转发分享给其他控制器,至少存在以下多个问题:
第一,其他控制器获取的I/O模块的I/O数据的实时性较差。例如,I/O模块所属的控制器将该I/O模块的I/O数据通过转发方式共享给其他控制器。其他控制器收到该I/O模块的I/O数据后,只能在下个周期使用该I/O数据。依赖于控制器的转发操作,其他控制器获取的I/O数据的实时性天然比I/O模块所属的控制器获取的I/O数据滞后一个周期。
第二,其他控制器获取的I/O模块的I/O数据的数据量受限。例如,I/O模块所属的控制器将该I/O模块的I/O数据通过转发方式共享给其他控制器。由于I/O模块所属的控制器本身预留一部分容量用于获取自身所需的I/O数据,用于转发其他控制器所需I/O数据的容量有限,以及在转发其他控制器所需I/O数据时需要对I/O数据再次加工而增大了I/O数据的数据量,受限于I/O模块所属的控制器的性能,其能够转发的I/O数据的数据量是有限的,导致转发至其他控制器的I/O数据的数据量受到限制。
第三,其他控制器获取I/O模块的I/O数据的步骤比较繁琐。例如,I/O模块所属的控制器将该I/O模块的I/O数据通过转发方式共享给其他控制器。当其他控制器需要频繁多次使用该I/O模块的大量数据时,需要该I/O模块所属的控制器将该I/O模块的大量数据分多次转发给其他控制器,以使其他控制器共享该I/O模块的数据,多次转发的操作步骤繁琐。
基于此,本申请实施例将多控制器间的I/O网络互连,各控制器同时接收相同I/O模块数据,实现I/O模块数据共享,实现了I/O模块与其所属的控制器的解耦,无需依赖控制器的转发操作,其他控制器可以直接从共享I/O模块获取I/O数据,简化了I/O数据共享的步骤,提高了其他控制器获取的I/O数据的实时性,并且不再受I/O模块所属的控制器发送数据量的限制。
下面结合附图,通过具体的实施例及其应用场景对本申请实施例提供的I/O数据共享方法进行详细地说明。
图1是本申请实施例提供的一种分散控制系统下的I/O数据共享的架构组成示意图。
如图1所示,在分散控制系统中,控制器1用于控制I/O模块1,控制器2用于控制I/O模块2,相关技术中,当控制器2需要频繁多次使用I/O模块1的大量数据时,需要I/O模块1所属的控制器1将I/O模块1的大量数据分多次转发分享给控制器2,依赖于控制器1的转发操作,转发的I/O数据存在实时性差、数据量受限以及获取步骤繁琐等问题。
而本申请实施例可以将控制系统中各个控制器与控制系统下的所有I/O模块相连,将I/O模块与其所属的控制器解耦,例如,在控制器2与I/O模块1连接时,控制器2自身可以获取I/O模块1生成的数据包,并根据预先从控制器2下载好的组态数据,从数据包中提取I/O模块1的I/O数据。与相关技术相比,无需利用I/O模块1所属的控制器1将I/O模块1的I/O数据转发给控制器2,省略了控制器2利用控制器1转发I/O模块1的I/O数据的步骤,控制器2可以直接从I/O模块1获取I/O数据,简化了I/O数据的共享步骤,提高了控制器2获取的I/O模块1的I/O数据的实时性,并且I/O数据的数据量不再受控制器1性能的限制。
图2是本申请实施例提供的一种I/O数据共享方法的示意性流程图。
如图2所示,本申请实施例提供的I/O数据共享方法,应用于第一控制器,可以包括:
步骤210:获取预先下载好的目标组态数据;
其中,目标组态数据是第一控制器预先从第二控制器下载好的组态数据;
其中,目标组态数据包括第二控制器所控制的共享I/O模块的组态数据;
步骤220:获取共享I/O模块生成的数据包;
步骤230:根据目标组态数据,从数据包中提取共享I/O模块的I/O数据。
在本申请实施例中,第一控制器是控制系统中的任意一个控制器,第一控制器与控制系统下的全部I/O模块相连。换言之,第一控制器既与自身控制的I/O模块相连,也与其他控制器控制的I/O模块相连。例如,第一控制器与共享I/O模块相连。
在本申请实施例中,第一控制器和第二控制器属于不同的控制器。第一控制器可以作为引用站,引用第二控制器所控制的共享I/O模块的组态数据。
在本申请实施例中,第二控制器可以作为共享站,将第二控制器所控制的I/O模块的组态数据分享给其他控制器(例如第一控制器)。
在本申请实施例中,第二控制器可以通过给I/O模块标记特征字的方式,将其控制的至少一个I/O模块配置为共享I/O模块,每个共享I/O模块具有唯一对应的特征字。换言之,在第二控制器下,各个共享I/O模块的特征字不重复。
在本申请实施例中,第一控制器可以配置至少一个引用I/O模块,每个引用I/O模块具有唯一对应的源特征字,该引用I/O模块可以理解为第一控制器所引用的共享I/O模块。
其中,当第一控制器配置的引用I/O模块的源特征字与第二控制器配置的共享I/O模块特征字对应时,说明该引用I/O模块和该共享I/O模块在物理上是同一个I/O模块实体。
在本申请实施例中,针对第一控制器配置的引用I/O模块,第一控制器可以预先从第二控制器下载共享I/O模块的组态数据,作为引用I/O模块的组态数据,并存储至组态数据内存器中,用于后续该共享I/O模块的数据包的解析。
在本申请实施例中,第一控制器从第二控制器下载共享I/O模块的组态数据的具体方式可以是手动方式下载,也可以是自动方式下载,本申请对此不作限制。例如,本申请可以响应于用户对上位机的输入操作,从第二控制器下载指定的共享I/O模块的组态数据,并将该组态数据发送给第一控制器。又例如,本申请可以自动从第二控制器下载任意共享I/O模块的组态数据,并将该组态数据发送给第一控制器。其中,手动方式下载可以更具针对性下载指定的共享I/O模块的组态数据,自动方式下载可以更快速、更全面地下载任意共享I/O模块的组态数据。
在本申请实施例中,在第一控制器需要使用共享I/O模块的I/O数据的场景下,第一控制器与共享I/O模块相连,第一控制器自身可以获取共享I/O模块生成的数据包,并根据预先从第二控制器下载好的组态数据,从数据包中提取共享I/O模块的I/O数据。
其中,共享I/O模块所属的控制器是第二控制器,第二控制器将其控制的I/O模块配置为共享I/O模块,另一方面,对第一控制器而言,第一控制器可以将该共享I/O模块配置为引用I/O模块,该引用I/O模块的源特征字与共享I/O模块的特征字对应。
能够理解的是,与相关技术相比,本申请实施例实现了共享I/O模块与其所属的第二控制器的解耦,无需依赖第二控制器的转发操作,第一控制器可以直接从共享I/O模块获取I/O数据,省略了利用第二控制器转发共享I/O模块的I/O数据的步骤,简化了I/O数据的共享步骤,提高了第一控制器获取的共享I/O模块的I/O数据的实时性。并且I/O数据的数据量不再受第二控制器发送数据量的限制,提高了获取的I/O数据的数据量。
根据本申请实施例提供的I/O数据共享方法,第一控制器获取预先下载好的目标组态数据;其中,目标组态数据是第一控制器预先从第二控制器下载好的组态数据,目标组态数据包括第二控制器所控制的共享I/O模块的组态数据;获取共享I/O模块生成的数据包;根据目标组态数据,从数据包中提取共享I/O模块的I/O数据。这样,在第一控制器需要使用共享I/O模块的I/O数据的场景下,第一控制器自身可以获取共享I/O模块生成的数据包,并根据预先从第二控制器下载好的组态数据,从数据包中提取共享I/O模块的I/O数据,与相关技术相比,实现了共享I/O模块与其所属的第二控制器的解耦,无需依赖第二控制器的转发操作,第一控制器可以直接从共享I/O模块获取I/O数据,提高了第一控制器获取的I/O数据的实时性。
在实际应用中,由于上位机对第二控制器进行组态数据下载、修改组态数据等因素,第二控制器所控制的共享I/O模块的组态数据可能会发生变更,导致第一控制器预先下载好的目标组态数据不是最新版本的组态数据,从而不能正确解析共享I/O模块的I/O数据。
基于此,本申请实施例还可以对第一控制器的组态数据内存器中的组态数据进行更新,将第二控制器所控制的共享I/O模块的最新版本的组态数据,同步至第一控制器中,保证第一控制器获取最新版本的目标组态数据,用以正确解析共享I/O模块的I/O数据。下面对组态同步的过程进行举例说明。
本申请实施例可以通过给I/O模块配置共享卡/引用卡的方式,实现I/O模块数据共享。在I/O模块的组态数据中设置共享模式或引用模式,表征该I/O模块是共享卡(即共享I/O模块)或引用卡(即引用I/O模块)。
例如,将第二控制器下的I/O模块A设为共享卡,并自动给其分配一个2字节的特征字。其中,特征字可以以流水形式依次加1生成,单个控制器内,每当有I/O模块被设为共享卡,特征字需更新,保证单个控制器下各个共享I/O模块对应的特征字不重复。换言之,各个共享I/O模块对应的特征字均不相同。
设置成功后,在第二控制器中生成一张共享映射表,用以记录本控制器下所有被设为共享I/O模块的特征字。其中,共享映射表包括共享I/O模块对应的特征字与共享I/O模块的本地I/O模块ID(Identity Document,身份标识)。例如,共享映射表的内容如下表1所示例:
表1
其中,带有共享卡的第二控制器,可以固定周期广播共享I/O模块的组态信息。其中,组态信息用于指示共享I/O模块的组态数据的版本信息,当共享I/O模块的组态数据被上位机修改后,共享I/O模块的组态信息也随之变化。
其中,第二控制器具体可以固定周期广播发送广播共享模块协议帧,广播共享模块协议帧可以包括:第二控制器的域地址、第二控制器的站地址、第二控制器所控制的共享I/O模块的数量、以及至少一个共享I/O模块的特征字和特征字对应的组态信息。其中,广播共享模块协议帧的格式如表2所示:
表2
本申请实施例可以在第一控制器中配置引用I/O模块。例如,本申请可以在第一控制器中配置I/O模块B,设为引用卡(即引用I/O模块),引用第二控制器所控制的I/O模块A的数据,将I/O模块A的特征字赋给I/O模块B。能够理解的是,第二控制器配置的共享I/O模块(例如I/O模块A)和第一控制器中配置的引用I/O模块(例如I/O模块B)在物理上属于同一I/O模块实体。
设置成功后,在第一控制器中生成一张引用映射表,用以记录本控制器内所有的引用I/O模块的源站地址、源特征字、源组态信息及本地I/O模块ID。
其中,引用映射表的格式如下表3所示:
表3
其中,引用I/O模块的源站地址可以与第二控制器对应,反映该模块所属的控制器的站地址。引用I/O模块的源特征字反映该模块所属的控制器为该I/O模块配置的特征字。引用I/O模块的源组态信息反映该模块所属的控制器内该I/O模块的组态信息。引用I/O模块的本地I/O模块ID反映该模块的本地身份标识信息。
在第二控制器以固定周期广播发送广播共享模块协议帧之后,带有引用卡的第一控制器可以接收第二控制器发送的共享I/O模块的组态信息。当第一控制器检测到自身维护的引用映射表中存在源特征字对应的源组态信息与第二控制器发送的组态信息不一致时,第一控制器将发起组态同步流程,以从第二控制器中获取共享I/O模块最新的组态数据。
在一个具体的实施例中,如图3所示,在第一控制器获取预先下载好的目标组态数据之前,本申请实施例提供的I/O数据共享方法,还可以包括:
步骤310:接收第二控制器发送的广播共享模块协议帧,广播共享模块协议帧包括第二控制器所配置的至少一个共享I/O模块的特征字和组态信息;
步骤320:获取预先配置好的引用映射表,引用映射表包括第一控制器配置的至少一个引用I/O模块的源站地址、源特征字及源组态信息;
步骤330:在引用映射表中存在第一引用I/O模块的源组态信息与第一共享I/O模块的组态信息不一致的情况下,对第一引用I/O模块进行组态同步;
其中,第一引用I/O模块的源站地址与第二控制器对应,第一共享I/O模块为至少一个共享I/O模块中特征字与第一引用I/O模块的源特征字对应的共享I/O模块。
在步骤310中,第二控制器发送的广播共享模块协议帧的格式可以参考上表2。广播共享模块协议帧可以包括第二控制器所配置的至少一个共享I/O模块的特征字和组态信息。其中,特征字和组态信息是一一对应的关系。
在步骤320中,第一控制器可以自身维护一张引用映射表。引用映射表可以包括第一控制器配置的至少一个引用I/O模块的源站地址、源特征字及源组态信息。
在步骤330中,当第一控制器检测到引用映射表中存在第一引用I/O模块的源组态信息与第一共享I/O模块的组态信息不一致的情况下,将第一引用I/O模块确定为待组态同步的模块,对第一引用I/O模块进行组态同步流程。
其中,第一引用I/O模块可以包括至少一个,本申请对第一引用I/O模块的数量不作具体限制。
其中,第一引用I/O模块的源站地址与第二控制器对应,第一共享I/O模块为至少一个共享I/O模块中特征字与第一引用I/O模块的源特征字对应的共享I/O模块,可以理解为,在一个第一引用I/O模块的源特征字与一个第一共享I/O模块的特征字相同时,该第一引用I/O模块和该第一共享I/O模块属于第二控制器所控制的同一模块。
其中,第一引用I/O模块的源组态信息与第一共享I/O模块的组态信息不一致,说明在第二控制器中,上位机对第一共享I/O模块的组态数据进行了修改,使第一共享I/O模块的组态信息(即组态数据的版本信息)发生了变更。此时,第一控制器的组态数据内存器中的第一引用I/O模块的组态数据不是最新的组态数据,需要将第一共享I/O模块的组态数据同步至第一引用I/O模块。
其中,在第一引用I/O模块的源组态信息与第一共享I/O模块的组态信息不一致的情况下,对第一引用I/O模块进行组态同步,具体可以指将第一共享I/O模块的组态数据同步至第一引用I/O模块上。
此外,在对第一引用I/O模块进行组态同步之后,本申请还可以根据第一共享I/O模块的组态信息,更新第一引用I/O模块的源组态信息,以表明第一引用I/O模块的组态数据已完成同步。
这样,本申请可以在第一共享I/O模块的组态数据被修改的情况下,对第一引用I/O模块进行组态同步,保证第一控制器获取最新版本的组态数据,用以正确解析第一共享I/O模块的I/O数据。
在一个具体的实施例中,第一引用I/O模块可理解为第一控制器中的待同步模块,为了对第一引用I/O模块进行组态同步,如图4-1所示,上述步骤330在引用映射表中存在第一引用I/O模块的源组态信息与第一共享I/O模块的组态信息不一致的情况下,对第一引用I/O模块进行组态同步,具体可以包括:
步骤410:向第二控制器发送同步请求协议帧,同步请求协议帧包括第一引用I/O模块的数量,以及至少一个第一引用I/O模块的源特征字;
步骤420:接收第二控制器发送的组态更新协议帧;组态更新协议帧包括第一共享I/O模块的数量,以及至少一个第一共享I/O模块的特征字和组态数据;
步骤430:根据组态更新协议帧,对至少一个第一引用I/O模块的源特征字对应的组态数据进行更新。
其中,步骤410、步骤420和步骤430可以是步骤330的子步骤。
在步骤410中,本申请可以在引用映射表中存在第一引用I/O模块的源组态信息与第一共享I/O模块的组态信息不一致的情况下,采用同步请求协议帧向第二控制器发送第一引用I/O模块的信息。
其中,同步请求协议帧可以包括:第一控制器的域地址、第一控制器的站地址、第一引用I/O模块的数量,以及至少一个第一引用I/O模块的源特征字。其中,同步请求协议帧的格式可以如表4所示:
表4
在步骤420中,第一控制器可以接收第二控制器发送的组态更新协议帧。组态更新协议帧用于后续对至少一个第一引用I/O模块的源特征字对应的组态数据进行更新。
其中,组态更新协议帧包括:第二控制器的域地址、第二控制器的站地址、第一共享I/O模块的数量,以及至少一个第一共享I/O模块的特征字和组态数据。其中,组态更新协议帧的格式可以如表5所示:
表5
在步骤430中,本申请可以根据接收的组态更新协议帧中第一共享I/O模块的特征字对应的组态数据,对第一引用I/O模块的源特征字对应的组态数据进行更新,以将第一共享I/O模块的组态数据同步至第一引用I/O模块,保证第一引用I/O模块的组态数据是最新版本的组态数据,以便于后续第一控制器根据最新版本的组态数据正确解析第一共享I/O模块的I/O数据。
在一个具体的实施例中,为了保证接收的组态更新协议帧是有效帧,如图4-2所示,在步骤420接收第二控制器发送的组态更新协议帧之前,本申请实施例提供的I/O数据共享方法,还可以包括:
步骤411:接收第二控制器发送的同步请求应答协议帧,同步请求应答协议帧包括同步指令,同步指令用于通知第一控制器进入待同步状态;
步骤412:在接收到同步指令后,确定第一控制器是否为可用状态;
步骤413:在第一控制器为可用状态的情况下,确定第一控制器进入待同步状态;
上述步骤420接收第二控制器发送的组态更新协议帧,具体可以包括:
步骤4201:在第一控制器进入待同步状态的情况下,接收第二控制器发送的组态更新协议帧。
在步骤411中,在第二控制器中的组态数据未被上位机下载或修改时,说明当前第二控制器存储的组态数据是稳定的,可被第一控制器下载,这种情况下,第二控制器处于可下载状态。在第二控制器处于可下载状态的情况下,第二控制器可以向第一控制器发送同步请求应答协议帧。第一控制器根据同步请求应答协议帧中的同步指令进入待同步状态。
其中,在第一控制器进入待同步状态之后,第一控制器可进行后续组态同步流程。否则,若当前第二控制器存储的组态数据是不稳定的,不可被第一控制器下载,这种情况下,第二控制器处于禁止下载状态,此时,同步指令用于通知第一控制器结束组态同步流程。在实际应用中,同步请求应答协议帧还可以包括错误码,错误码用于反映第二控制器禁止被其他控制器下载组态数据的原因,例如,第二控制器处于上位机下载状态(正在被上位机修改组态数据),或者第二控制器中的组态数据未准备好(例如组态数据不完整),等等。
其中,同步请求应答协议帧可以包括:第二控制器的域地址、第二控制器的站地址、同步指令、第一共享I/O模块的数量,以及至少一个第一共享I/O模块的特征字。其中,同步请求应答协议帧的格式可以如表6所示:
表6
在步骤412中,本申请可以判断第一控制器自身当前状态是否准备好接收组态数据,第一控制器准备好接收组态数据时,第一控制器处于可用状态。
其中,第一控制器自身当前状态可以理解为第一控制器当前是否正在接收其他终端设备的组态数据。需要说明的是,若第一控制器当前接收通道处于空闲状态,未接收其他终端设备的组态数据,说明第一控制器准备好接收组态数据,可以接收来自第二控制器的组态数据。
在步骤412中,在第一控制器处于可用状态的情况下,第一控制器可以向第二控制器发送同步动作应答协议帧,以向第二控制器通知第一控制器已准备好接收组态数据,然后等待第二控制器(采用组态更新协议帧)发送组态数据。
其中,同步动作应答协议帧可以包括第一控制器的域地址、第一控制器的站地址、第一控制器的状态。第一控制器的状态用于反映第一控制器是否准备好接收组态数据。
其中,同步动作应答协议帧的格式可以如表7所示:
表7
在表7中,UTC(协调世界时)时间可用于同步动作应答协议帧的有效性验证。引用站状态表示第一控制器的状态,反映第一控制器是否准备好接收组态数据。
在步骤413中,在第一控制器接收到同步指令之后,若确定第一控制器自身状态为可用状态,则说明第一控制器进入待同步状态。
在步骤4201中,在第二控制器处于可下载状态,且第一控制器处于可用状态的情况下,接收第二控制器发送的组态更新协议帧。
这样,在保证第二控制器的组态数据是稳定的、完整的,且第一控制器准备好接收组态数据的情况下,接收第二控制器发送的组态更新协议帧,保证了接收到的组态更新协议帧是有效帧。
另外,在一个具体的实施例中,为了保证接收到的组态更新协议帧的内容是准确的,本申请还可以对接收到的组态更新协议帧的内容进行校验,在组态更新协议帧的内容校验正确的情况下,采用该组态更新协议帧的内容更新第一引用I/O模块的源特征字对应的组态数据。例如,如图4-2所示,在步骤430根据组态更新协议帧,对至少一个第一引用I/O模块的源特征字对应的组态数据进行更新之前,本申请实施例提供的I/O数据共享方法,还可以包括:
步骤421:向第二控制器发送组态更新应答协议帧,以使第二控制器根据组态更新应答协议帧确定组态同步成功;
其中,组态更新应答协议帧包括第一控制器接收的组态更新协议帧中的更新内容;
步骤422:接收第二控制器发送的组态同步成功协议帧,组态同步成功协议帧包括组态同步成功的通知消息;
上述步骤430根据组态更新协议帧,对至少一个第一引用I/O模块的源特征字对应的组态数据进行更新,具体可以包括:
步骤4301:在接收到组态同步成功的通知消息的情况下,根据组态更新协议帧,对至少一个第一引用I/O模块的源特征字对应的组态数据进行更新。
在步骤421中,第一控制器可以将其接收的组态更新协议帧中的更新内容(例如第一共享I/O模块的数量,以及至少一个第一共享I/O模块的特征字和组态数据)返回给第二控制器校验,以确定第一控制器接收的组态更新协议帧中的更新内容是否准确。
其中,第一控制器可以向第二控制器发送组态更新应答协议帧,组态更新应答协议帧可以包括:第一控制器的域地址、第一控制器的站地址、第一控制器接收的第一共享I/O模块的数量,以及第一控制器接收的至少一个第一共享I/O模块的特征字和组态数据。其中,组态更新应答协议帧的格式可以如表8所示:
表8
在第一控制器向第二控制器发送组态更新应答协议帧之后,第二控制器可以回读组态更新应答协议帧中的内容,比较其发送的组态更新协议帧中的更新内容和接收的组态更新应答协议帧中的内容相同,从而确定第一控制器接收的组态更新协议帧是准确的。此时,第二控制器可以通知第一控制器组态同步成功。
在步骤422中,第一控制器接收第二控制器发送的组态同步成功协议帧,组态同步成功协议帧包括组态同步成功的通知消息。
其中,组态同步成功协议帧可以包括:第二控制器的域地址、第二控制器的站地址、同步成功的通知消息、第一共享I/O模块的数量,以及至少一个第一共享I/O模块的特征字。其中,组态同步成功协议帧的格式可以如表9所示:
表9
进而,在第一控制器接收到组态同步成功的通知消息的情况下,根据组态更新协议帧,对至少一个第一引用I/O模块的源特征字对应的组态数据进行更新。
这样,本申请可以对第一控制器接收的组态更新协议帧进行校验,保证第一控制器接收的组态更新协议帧是准确的,进而保证第一控制器根据准确的组态更新协议帧,对至少一个第一引用I/O模块的源特征字对应的组态数据进行更新。
此外,基于与上述第一控制器执行的I/O数据共享方法相似的构思,本申请实施例还可以提供由第二控制器执行的I/O数据共享方法。
如图5所示,本申请实施例提供的I/O数据共享方法,应用于第二控制器,可以包括:
步骤510:获取目标组态数据,目标组态数据包括第二控制器所控制的共享I/O模块的组态数据;
步骤520:向第一控制器发送目标组态数据,以使第一控制器根据目标组态数据从共享I/O模块生成的数据包中提取I/O数据。
在本申请实施例中,第二控制器可以作为共享站,将第二控制器所控制的I/O模块的组态数据分享给其他控制器(例如第一控制器)。
在本申请实施例中,针对第二控制器配置的共享I/O模块,共享I/O模块的组态数据可以被第一控制器下载,作为第一控制器配置的引用I/O模块的组态数据,并用于后续第一控制器对该共享I/O模块的数据包的解析。
在本申请实施例中,在第一控制器需要使用共享I/O模块的I/O数据的场景下,第二控制器可以将共享I/O模块的组态数据发给第一控制器,以便于第一控制器自身获取共享I/O模块生成的数据包,并根据预先从第二控制器下载好的组态数据,从数据包中提取共享I/O模块的I/O数据。与相关技术相比,无需第二控制器多次将共享I/O模块生成的数据包转发给第一控制器,第一控制器可以直接从共享I/O模块获取I/O数据,提高了第一控制器获取的I/O数据的实时性,省略第二控制器转发共享I/O模块的I/O数据给第一控制器的步骤,简化了I/O数据的共享步骤,并且突破了第二控制器转发的数据量的限制。
根据本申请实施例提供的I/O数据共享方法,第二控制器获取目标组态数据,目标组态数据包括第二控制器所控制的共享I/O模块的组态数据;向第一控制器发送目标组态数据,以使第一控制器根据目标组态数据从共享I/O模块生成的数据包中提取I/O数据。这样,在第一控制器需要使用共享I/O模块的I/O数据的场景下,第二控制器可以将共享I/O模块的组态数据发给第一控制器,以便于第一控制器自身获取共享I/O模块生成的数据包,并根据预先从第二控制器下载好的组态数据,从数据包中提取共享I/O模块的I/O数据。与相关技术相比,无需第二控制器多次将共享I/O模块生成的数据包转发给第一控制器,第一控制器可以直接从共享I/O模块获取I/O数据,提高了第一控制器获取的I/O数据的实时性,省略第二控制器转发共享I/O模块的I/O数据给第一控制器的步骤,简化了I/O数据的共享步骤,并且突破了第二控制器转发的数据量的限制。
在实际应用中,由于上位机对第二控制器进行组态数据下载、修改组态数据等因素,第二控制器所控制的共享I/O模块的组态数据可能会发生变更,导致第二控制器向第一控制器发送目标组态数据不是最新版本的组态数据,从而导致第一控制器难以正确解析共享I/O模块的I/O数据。
基于此,本申请实施例还可以将第二控制器所控制的共享I/O模块的最新版本的组态数据,同步至第一控制器中,保证第一控制器获取最新版本的目标组态数据,用以正确解析共享I/O模块的I/O数据。下面对组态同步的过程进行举例说明。
在一个具体的实施例中,为了将共享I/O模块的最新版本的组态数据同步至第一控制器,如图6所示,在步骤520向第一控制器发送目标组态数据之后,本申请实施例提供的I/O数据共享方法还可以包括:
步骤610:向第一控制器发送广播共享模块协议帧,广播共享模块协议帧包括第二控制器所配置的至少一个共享I/O模块的特征字和组态信息;
步骤620:接收第一控制器发送的同步请求协议帧,同步请求协议帧包括第一引用I/O模块的数量,以及至少一个第一引用I/O模块的源特征字;
其中,第一引用I/O模块的源站地址与第二控制器对应,至少一个第一引用I/O模块的源特征字与第二控制器所配置的至少一个共享I/O模块中至少一个第一共享I/O模块的特征字对应;
步骤630:根据第二控制器所配置的至少一个第一共享I/O模块的特征字对应的组态数据,对至少一个第一引用I/O模块的源特征字对应的组态数据进行组态同步。
在步骤610中,第二控制器具体可以固定周期广播发送广播共享模块协议帧,广播共享模块协议帧的格式可以参考上表2,此处不再赘述。
在步骤620中,在第一控制器的引用映射表中存在第一引用I/O模块的源组态信息与第一共享I/O模块的组态信息不一致的情况下,第一控制器存在对第一引用I/O模块进行组态同步的需求。此时,第二控制器可以接收第一控制器发送的同步请求协议帧,同步请求协议帧可以包括第一引用I/O模块的数量,以及至少一个第一引用I/O模块的源特征字。其中,同步请求协议帧的格式可以参考上表4,此处不再赘述。
在步骤630中,在接收到同步请求协议帧之后,第二控制器可以根据至少一个第一共享I/O模块的特征字对应的组态数据,对至少一个第一引用I/O模块的源特征字对应的组态数据进行组态同步。
这样,第二控制器可以根据至少一个第一共享I/O模块的特征字对应的组态数据,对至少一个第一引用I/O模块的源特征字对应的组态数据进行组态同步,保证第一引用I/O模块的组态数据是最新版本的组态数据,以便于后续第一控制器根据最新版本的组态数据正确解析第一共享I/O模块的I/O数据。
在一个具体的实施例中,为了保证接收的组态更新协议帧是有效帧,如图7-1所示,上述步骤630根据第二控制器所配置的至少一个第一共享I/O模块的特征字对应的组态数据,对至少一个第一引用I/O模块的源特征字对应的组态数据进行组态同步,具体可以包括:
步骤710:在第二控制器处于可下载状态的情况下,向第一控制器发送同步请求应答协议帧,同步请求应答协议帧包括同步指令,同步指令用于通知第一控制器进入待同步状态;
步骤720:接收第一控制器发送的同步动作应答协议帧;同步动作应答协议帧用于指示第一控制器处于可用状态;
步骤730:在确定第一控制器为可用状态的情况下,向第一控制器发送组态更新协议帧;组态更新协议帧包括第一共享I/O模块的数量,以及至少一个第一共享I/O模块的特征字和组态数据;
其中,所述组态更新协议帧用于对至少一个第一引用I/O模块的源特征字对应的组态数据进行组态同步。
在步骤710中,第二控制器可以检查自身当前状态,在第二控制器中的组态数据未被上位机下载或修改时,说明当前第二控制器存储的组态数据是稳定的,可被第一控制器下载,这种情况下,第二控制器处于可下载状态。在第二控制器处于可下载状态的情况下,第二控制器可以向第一控制器发送同步请求应答协议帧。第一控制器根据同步请求应答协议帧中的同步指令,以及,第一控制器自身当前状态处于可用状态,进入待同步状态。
在第一控制器接收同步指令后,第一控制器可以判断自身当前状态是否准备好接收组态数据,第一控制器准备好接收组态数据时,第一控制器处于可用状态。在第一控制器处于可用状态的情况下,第一控制器进入待同步状态,可以向第二控制器发送同步动作应答协议帧。
在步骤720中,第二控制器根据接收的同步动作应答协议帧确定第一控制器处于可用状态(第一控制器已准备好接收组态数据),然后第二控制器向第一控制器发送组态更新协议帧,以对至少一个第一引用I/O模块的源特征字对应的组态数据进行组态同步。
在一个具体的实施例中,为了保证第一控制器接收到的组态更新协议帧的内容是准确的,第二控制器还可以对第一控制器接收到的组态更新协议帧的内容进行校验,以确保组态同步成功。如图7-2所示,上述步骤730在向第一控制器发送组态更新协议帧之后,本申请实施例提供的I/O数据共享方法还可以包括:
步骤740:接收第一控制器发送的组态更新应答协议帧,其中,组态更新应答协议帧包括第一控制器接收的组态更新协议帧中的更新内容;
步骤750:通过比较组态更新应答协议帧和组态更新协议帧,确定至少一个第一共享I/O模块的特征字对应的组态数据是否下载成功;
步骤760:在至少一个第一共享I/O模块的特征字对应的组态数据下载成功的情况下,向第一控制器发送组态同步成功协议帧,以使第一控制器在组态同步成功的情况下根据所述组态更新协议帧对所述至少一个第一引用I/O模块的源特征字对应的组态数据进行更新;
其中,组态同步成功协议帧包括组态同步成功的通知消息。
在步骤740中,组态更新应答协议帧包括第一控制器接收的组态更新协议帧中的更新内容(例如第一共享I/O模块的数量,以及至少一个第一共享I/O模块的特征字和组态数据)。第一控制器可以将其接收的组态更新协议帧中的更新内容返回给第二控制器,第二控制器可以通过比较组态更新协议帧中的更新内容和组态更新应答协议帧中的内容相同,校验第一控制器接收的组态更新协议帧中的更新内容是否准确。
进而,在校验通过之后,确定第二控制器中至少一个第一共享I/O模块的特征字对应的组态数据被第一控制器下载成功,此时向第一控制器发送组态同步成功协议帧,以便于第一控制器根据准确的组态更新协议帧,对至少一个第一引用I/O模块的源特征字对应的组态数据进行更新。
在一个具体的实施例中,受组态更新协议帧在传输过程中丢失数据等因素影响,可能导致第一控制器组态数据下载失败。为了提高组态同步的成功率,本申请还可在组态数据下载失败的情况下进行多次重试,如图7-2所示,在上述步骤750之后,本申请实施例提供的I/O数据共享方法还可以包括:
步骤770:在至少一个第一共享I/O模块的特征字对应的组态数据下载失败的情况下,确定预设的重试次数是否用完;
步骤780:在预设的重试次数未用完的情况下,再次向第一控制器发送组态更新协议帧;
步骤790:在预设的重试次数用完的情况下,向第一控制器发送组态同步失败的通知消息。
在步骤780之后,本申请可以继续执行步骤740。在步骤790之后,本申请可结束此次组态同步流程。
这样,本申请可在组态数据下载失败的情况下进行多次重试,提高组态同步的成功率。
在实际应用中,参考图1,第一控制器可以是控制器2(引用站),第二控制器可以是控制器1(共享站),当控制器1配置的共享卡的组态数据发生修改时,控制器2的引用卡的组态数据可与共享卡进行同步。
例如,控制器2可接收控制器1发送的共享组态信息,当控制器2检测到其维护的引用映射表中存在源特征字对应的源组态信息与控制器1发送的组态信息不一致时,控制器2将发起组态同步流程,以从控制器1中获取共享卡最新的组态。
其中,控制器2的组态同步的流程参考图8和图9所示:
引用站接收广播的共享组态信息后,与自身维护的引用映射表比较,挑选需要请求的组态,并按源站地址建立组态同步实例;
引用站按源站地址请求组态,同步请求协议帧格式参考上表4;
引用站接收共享站的同步请求应答协议帧,引用站收到请求应答后根据自身当前状态决策是否可接收组态数据,并通过同步动作应答协议帧再次应答共享站,即通知共享站自身是否已准备好接收组态数据;
其中,同步请求应答协议帧格式可以参考上表6,同步动作应答协议帧格式可以参考上表7。若引用站可用于接收组态数据,则根据同步请求应答包内容更新组态同步实例中的可请求的组态实例,等待接收组态数据;
引用站接收到组态更新协议帧中的组态数据后应答,应答内容可以带上此次接收到的组态数据,作为共享站的校验依据,具体的组态更新应答协议帧格式可以参考上8;
引用站发送组态更新应答协议帧后,等待共享站通知同步状态;
引用站接收的共享站同步通知消息包括同步成功/同步失败。在接收到同步成功通知时对组态数据进行更新。而无论通知同步成功或通知同步失败亦或是超时,引用站均可以移除该源站的组态同步实例,等待下一次比较广播的组态信息后重新生成组态同步实例。
其中,在组态同步过程中,引用站可以禁止上位机下载/修改组态数据,确保共享站从引用站下载的组态数据的完整性和稳定性。
另一方面,对控制器1(共享站)而言,当控制器1接收到来自控制器2的同步请求后,将提供对应共享卡的最新组态数据,并对控制器2(引用站)发起组态同步动作,控制器1(共享站)的组态同步的具体步骤参考图9和图10-1和图10-2所示:
共享站收到同步请求后生成一个下载实例,用于控制共享站对请求的引用站的整个组态同步过程,并将此实例加入下载队列,同时应答引用站,应答内容需要通知引用站准备接收组态以及即将发送给引用站的待同步模块数量及其特征字,若共享站无法执行组态同步,需返回错误码。协议帧格式可以参考上表6;
共享站等待引用站准备好接收数据;超时或未准备好则移除该站的下载实例,等待下次请求时重新生成;
共享站每个扫描周期检查下载实例的队列,不为空,则对每个未完成下载的引用站下载请求的组态数据,协议帧格式参考上表5;
共享站接收到组态下载的应答后,根据组态更新应答协议帧的数据包内的组态数据校验下载是否成功。
若下载成功(即校验通过),则通知引用站组态同步成功,自身移除下载实例,组态同步成功协议帧格式参考上表9;
若下载失败且重试次数未用完,则重试,再次下载引用站请求的组态数据;
若下载失败且重试次数用完,则通知同步失败,同时自身移除下载实例,等待下一次请求。
其中,共享站在上位机下载组态过程中,不再接收引用站的组态同步请求。
其中,在控制系统中,引用站支持被多个共享站同时下载组态数据,共享站支持同时下载多个引用站的组态数据。一个控制器可同时作为共享站或引用站,可被其他站下载组态数据,也可向其他站请求组态数据。
在实际应用中,本申请实施例提供的I/O数据共享方法,实现了I/O模块与其所属的控制器的解耦,具有以下优点:
第一,I/O模块不再绑定其所属的控制器,多个控制器可使用来自同一I/O模块的数据,无需使用多个控制器之间的站间通讯,各控制器直接获取各I/O模块的数据,可以提高获取的I/O数据的实时性,并且不再受数据转发容量的限制。
第二,在控制系统中,多个控制器的备用I/O模块可集中配置管理,解决了控制器的备用I/O槽位分布不均匀的问题。
第三,各控制器组态自动同步。只需修改共享站中的共享I/O模块的组态数据,即可实现控制系统中全部引用I/O模块的组态数据的同步,避免对每个引用站多次修改引用I/O模块的组态数据。
第四,共享卡和引用卡的下载,无先后顺序限制,通过对应的特征字正确下载组态,即可实现共享功能。
此外,如图11所示,本申请实施例还提供了一种第一控制器1100,该第一控制器1100包括处理器1110和存储器1120,所述存储器上存储有程序或指令,所述程序或指令被所述处理器执行时实现上述方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
如图12所示,本申请实施例还提供了一种第二控制器1200,该第二控制器1200包括处理器1210和存储器1220,所述存储器上存储有程序或指令,所述程序或指令被所述处理器执行时实现上述方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
此外,本申请实施例还提供了一种分散控制系统,包括上述实施例提供的第一控制器和上述实施例提供的第二控制器。
其中,第一控制器和第二控制器的I/O网络互连,第一控制器和第二控制器可同时接收相同I/O模块数据。
例如,分散控制系统还包括多个I/O模块,多个I/O模块中存在一部分I/O模块由第一控制器控制,另一部分I/O模块由第二控制器控制。
其中,第一控制器分别与所述多个I/O模块连接,第二控制器分别与所述多个I/O模块连接,保证第一控制器和第二控制器同时接收相同I/O模块生成的数据包。
其中,该分散控制系统可以实现上述方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。此外,需要指出的是,本申请实施方式中的方法和装置的范围不限按示出或讨论的顺序来执行功能,还可包括根据所涉及的功能按基本同时的方式或按相反的顺序来执行功能,例如,可以按不同于所描述的次序来执行所描述的方法,并且还可以添加、省去、或组合各种步骤。另外,参照某些示例所描述的特征可在其他示例中被组合。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以计算机软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,或者网络控制器等)执行本申请各个实施例所述的方法。
上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。
Claims (13)
1.一种I/O数据共享方法,应用于第一控制器,其特征在于,包括:
获取预先下载好的目标组态数据;其中,所述目标组态数据是第一控制器预先从第二控制器下载好的组态数据,所述目标组态数据包括第二控制器所控制的共享I/O模块的组态数据;
获取共享I/O模块生成的数据包;
根据所述目标组态数据,从所述数据包中提取所述共享I/O模块的I/O数据。
2.根据权利要求1所述的方法,其特征在于,在获取预先下载好的目标组态数据之前,所述方法还包括:
接收第二控制器发送的广播共享模块协议帧,所述广播共享模块协议帧包括第二控制器所配置的至少一个共享I/O模块的特征字和组态信息;
获取预先配置好的引用映射表,所述引用映射表包括第一控制器配置的至少一个引用I/O模块的源站地址、源特征字及源组态信息;
在所述引用映射表中存在第一引用I/O模块的源组态信息与第一共享I/O模块的组态信息不一致的情况下,对所述第一引用I/O模块进行组态同步;
其中,第一引用I/O模块的源站地址与第二控制器对应,第一共享I/O模块为所述至少一个共享I/O模块中特征字与第一引用I/O模块的源特征字对应的共享I/O模块。
3.根据权利要求2所述的方法,其特征在于,在所述引用映射表中存在第一引用I/O模块的源组态信息与第一共享I/O模块的组态信息不一致的情况下,对所述第一引用I/O模块进行组态同步,包括:
向所述第二控制器发送同步请求协议帧,所述同步请求协议帧包括第一引用I/O模块的数量,以及至少一个第一引用I/O模块的源特征字;
接收第二控制器发送的组态更新协议帧;所述组态更新协议帧包括第一共享I/O模块的数量,以及至少一个第一共享I/O模块的特征字和组态数据;
根据所述组态更新协议帧,对所述至少一个第一引用I/O模块的源特征字对应的组态数据进行更新。
4.根据权利要求3所述的方法,其特征在于,在接收第二控制器发送的组态更新协议帧之前,所述方法还包括:
接收第二控制器发送的同步请求应答协议帧,所述同步请求应答协议帧包括同步指令,所述同步指令用于通知第一控制器进入待同步状态;
在接收到同步指令后,确定第一控制器是否为可用状态;
在第一控制器为可用状态的情况下,确定第一控制器进入待同步状态;
所述接收第二控制器发送的组态更新协议帧,包括:
在第一控制器进入待同步状态的情况下,接收第二控制器发送的组态更新协议帧。
5.根据权利要求3所述的方法,其特征在于,在根据所述组态更新协议帧,对所述至少一个第一引用I/O模块的源特征字对应的组态数据进行更新之前,所述方法还包括:
向所述第二控制器发送组态更新应答协议帧,以使所述第二控制器根据所述组态更新应答协议帧确定组态同步成功;
其中,所述组态更新应答协议帧包括第一控制器接收的组态更新协议帧中的更新内容;
接收第二控制器发送的组态同步成功协议帧,所述组态同步成功协议帧包括组态同步成功的通知消息;
所述根据所述组态更新协议帧,对所述至少一个第一引用I/O模块的源特征字对应的组态数据进行更新,包括:
在接收到所述组态同步成功的通知消息的情况下,根据所述组态更新协议帧,对所述至少一个第一引用I/O模块的源特征字对应的组态数据进行更新。
6.一种I/O数据共享方法,应用于第二控制器,其特征在于,包括:
获取目标组态数据,所述目标组态数据包括第二控制器所控制的共享I/O模块的组态数据;
向第一控制器发送目标组态数据,以使所述第一控制器根据所述目标组态数据从共享I/O模块生成的数据包中提取I/O数据。
7.根据权利要求6所述的方法,其特征在于,在向第一控制器发送目标组态数据之后,所述方法还包括:
向第一控制器发送广播共享模块协议帧,所述广播共享模块协议帧包括第二控制器所配置的至少一个共享I/O模块的特征字和组态信息;
接收第一控制器发送的同步请求协议帧,所述同步请求协议帧包括第一引用I/O模块的数量,以及至少一个第一引用I/O模块的源特征字;
其中,第一引用I/O模块的源站地址与第二控制器对应,至少一个第一引用I/O模块的源特征字与第二控制器所配置的至少一个共享I/O模块中至少一个第一共享I/O模块的特征字对应;
根据第二控制器所配置的至少一个第一共享I/O模块的特征字对应的组态数据,对至少一个第一引用I/O模块的源特征字对应的组态数据进行组态同步。
8.根据权利要求7所述的方法,其特征在于,根据第二控制器所配置的至少一个第一共享I/O模块的特征字对应的组态数据,对至少一个第一引用I/O模块的源特征字对应的组态数据进行组态同步,包括:
在第二控制器处于可下载状态的情况下,向第一控制器发送同步请求应答协议帧,所述同步请求应答协议帧包括同步指令,所述同步指令用于通知第一控制器进入待同步状态;
接收第一控制器发送的同步动作应答协议帧;所述同步动作应答协议帧用于指示第一控制器处于可用状态;
在确定第一控制器为可用状态的情况下,向第一控制器发送组态更新协议帧;所述组态更新协议帧包括第一共享I/O模块的数量,以及至少一个第一共享I/O模块的特征字和组态数据;所述组态更新协议帧用于对至少一个第一引用I/O模块的源特征字对应的组态数据进行组态同步。
9.根据权利要求8所述的方法,其特征在于,在向第一控制器发送组态更新协议帧之后,所述方法还包括:
接收第一控制器发送的组态更新应答协议帧,其中,所述组态更新应答协议帧包括第一控制器接收的组态更新协议帧中的更新内容;
通过比较所述组态更新应答协议帧和所述组态更新协议帧,确定至少一个第一共享I/O模块的特征字对应的组态数据是否下载成功;
在至少一个第一共享I/O模块的特征字对应的组态数据下载成功的情况下,向第一控制器发送组态同步成功协议帧,以使第一控制器在组态同步成功的情况下根据所述组态更新协议帧对所述至少一个第一引用I/O模块的源特征字对应的组态数据进行更新;所述组态同步成功协议帧包括组态同步成功的通知消息。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
在至少一个第一共享I/O模块的特征字对应的组态数据下载失败的情况下,确定预设的重试次数是否用完;
在预设的重试次数未用完的情况下,再次向所述第一控制器发送组态更新协议帧;
在预设的重试次数用完的情况下,向第一控制器发送组态同步失败的通知消息。
11.一种第一控制器,其特征在于,包括处理器和存储器,所述存储器存储可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如权利要求1-5任一项所述的方法的步骤。
12.一种第二控制器,其特征在于,包括处理器和存储器,所述存储器存储可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如权利要求6-10任一项所述的方法的步骤。
13.一种分散控制系统,其特征在于,包括:权利要求11所述的第一控制器和权利要求12所述的第二控制器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410140013.2A CN117687344B (zh) | 2024-01-31 | 2024-01-31 | I/o数据共享方法、控制器及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410140013.2A CN117687344B (zh) | 2024-01-31 | 2024-01-31 | I/o数据共享方法、控制器及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117687344A true CN117687344A (zh) | 2024-03-12 |
CN117687344B CN117687344B (zh) | 2024-04-30 |
Family
ID=90132329
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410140013.2A Active CN117687344B (zh) | 2024-01-31 | 2024-01-31 | I/o数据共享方法、控制器及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117687344B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050172047A1 (en) * | 2003-01-21 | 2005-08-04 | Nextio Inc. | Fibre channel controller shareable by a plurality of operating system domains within a load-store architecture |
CN101216696A (zh) * | 2008-01-03 | 2008-07-09 | 浙江中控技术股份有限公司 | 控制系统组态的增量式在线下载方法 |
CN111984559A (zh) * | 2019-05-22 | 2020-11-24 | 旺宏电子股份有限公司 | 用于数据传送的系统及存储器装置 |
CN113220229A (zh) * | 2021-05-06 | 2021-08-06 | 浙江正泰中自控制工程有限公司 | 一种用于分布式控制系统的在线式i/o无扰组态方法 |
CN115834273A (zh) * | 2022-12-26 | 2023-03-21 | 浙江中控技术股份有限公司 | 一种工业控制系统的i/o资源共享交互架构以及方法 |
CN116582506A (zh) * | 2023-05-12 | 2023-08-11 | 杭州康吉森自动化科技有限公司 | I/o数据传输方法、目标设备、控制器及系统 |
CN116955232A (zh) * | 2023-05-25 | 2023-10-27 | 杭州康吉森自动化科技有限公司 | 一种基于控制系统的硬件识别方法和装置 |
-
2024
- 2024-01-31 CN CN202410140013.2A patent/CN117687344B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050172047A1 (en) * | 2003-01-21 | 2005-08-04 | Nextio Inc. | Fibre channel controller shareable by a plurality of operating system domains within a load-store architecture |
CN101216696A (zh) * | 2008-01-03 | 2008-07-09 | 浙江中控技术股份有限公司 | 控制系统组态的增量式在线下载方法 |
CN111984559A (zh) * | 2019-05-22 | 2020-11-24 | 旺宏电子股份有限公司 | 用于数据传送的系统及存储器装置 |
CN113220229A (zh) * | 2021-05-06 | 2021-08-06 | 浙江正泰中自控制工程有限公司 | 一种用于分布式控制系统的在线式i/o无扰组态方法 |
CN115834273A (zh) * | 2022-12-26 | 2023-03-21 | 浙江中控技术股份有限公司 | 一种工业控制系统的i/o资源共享交互架构以及方法 |
CN116582506A (zh) * | 2023-05-12 | 2023-08-11 | 杭州康吉森自动化科技有限公司 | I/o数据传输方法、目标设备、控制器及系统 |
CN116955232A (zh) * | 2023-05-25 | 2023-10-27 | 杭州康吉森自动化科技有限公司 | 一种基于控制系统的硬件识别方法和装置 |
Non-Patent Citations (1)
Title |
---|
臧峰;蔡丹;徐卫峰;吴波;牛洪海;: "控制器间数据共享方案的设计与实现", 自动化仪表, no. 01, 20 January 2017 (2017-01-20) * |
Also Published As
Publication number | Publication date |
---|---|
CN117687344B (zh) | 2024-04-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111356149A (zh) | 一种无线网络配置方法及装置 | |
CN111638891B (zh) | 一种设备升级方法、装置、终端设备和存储介质 | |
CN112448873B (zh) | 设备的绑定方法、装置及计算机可读存储介质 | |
CN112118322B (zh) | 一种网络设备的数据同步方法、网络设备及系统 | |
US12032952B2 (en) | Service upgrade method, apparatus, and system | |
CN115335803B (zh) | 一种设备升级方法、智能设备及计算机可读存储介质 | |
CN112202877B (zh) | 网关联动方法、网关、云服务器及用户终端 | |
CN103731465A (zh) | 分布式系统及其事务处理方法 | |
CN114866525B (zh) | 一种一主多从模式嵌入式设备远程在线固件升级方法及系统 | |
EP3496337B1 (en) | Method and device for resetting network device to factory settings, and network device | |
CN114285695B (zh) | 通信方法、装置、设备、系统和存储介质 | |
EP2635980A1 (en) | Distributed database | |
CN113516980B (zh) | 场景联动方法、场景联动系统的构建方法及装置 | |
WO2017124741A1 (zh) | 一种设备版本同步方法及装置 | |
CN117097744B (zh) | 信息同步方法、受控设备、控制设备及电子设备 | |
CN117687344B (zh) | I/o数据共享方法、控制器及系统 | |
CN113766027A (zh) | 一种流复制集群节点转发数据的方法及设备 | |
CN112769949A (zh) | 文件传输方法及装置、电子设备和存储介质 | |
US20230214207A1 (en) | Device upgrade control method and apparatus, and computer device and storage medium | |
CN113342764A (zh) | 不同云端服务器之间的数据同步方法及装置 | |
CN112243139B (zh) | 一种多媒体终端的节目分发同步方法及系统 | |
WO2021203384A1 (zh) | 设备升级的方法、装置及存储介质 | |
CN111083016B (zh) | 一种轮询表处理方法及装置、存储介质和设备 | |
US6963993B1 (en) | Fail-over file transfer process | |
KR102054144B1 (ko) | IoT 서비스에서 단말을 제어하기 위한 방법 및 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |