CN116846943A - 可编程人机界面与控制器间远程过程调用方法及系统 - Google Patents
可编程人机界面与控制器间远程过程调用方法及系统 Download PDFInfo
- Publication number
- CN116846943A CN116846943A CN202310741013.3A CN202310741013A CN116846943A CN 116846943 A CN116846943 A CN 116846943A CN 202310741013 A CN202310741013 A CN 202310741013A CN 116846943 A CN116846943 A CN 116846943A
- Authority
- CN
- China
- Prior art keywords
- remote procedure
- procedure call
- remote
- controller
- value
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 253
- 230000008569 process Effects 0.000 claims abstract description 67
- 230000001360 synchronised effect Effects 0.000 claims abstract description 26
- 230000006870 function Effects 0.000 claims description 37
- 230000005540 biological transmission Effects 0.000 claims description 26
- 239000003999 initiator Substances 0.000 claims description 23
- PWPJGUXAGUPAHP-UHFFFAOYSA-N lufenuron Chemical compound C1=C(Cl)C(OC(F)(F)C(C(F)(F)F)F)=CC(Cl)=C1NC(=O)NC(=O)C1=C(F)C=CC=C1F PWPJGUXAGUPAHP-UHFFFAOYSA-N 0.000 claims description 23
- 230000009471 action Effects 0.000 claims description 8
- 238000004891 communication Methods 0.000 claims description 4
- 230000000977 initiatory effect Effects 0.000 claims description 4
- 238000012423 maintenance Methods 0.000 claims description 4
- 230000000737 periodic effect Effects 0.000 claims description 4
- 238000012800 visualization Methods 0.000 claims description 4
- 238000011161 development Methods 0.000 abstract description 13
- 238000012938 design process Methods 0.000 abstract description 7
- 230000008878 coupling Effects 0.000 abstract description 4
- 238000010168 coupling process Methods 0.000 abstract description 4
- 238000005859 coupling reaction Methods 0.000 abstract description 4
- 230000002349 favourable effect Effects 0.000 abstract description 2
- 230000006872 improvement Effects 0.000 abstract description 2
- 230000003993 interaction Effects 0.000 description 6
- 230000009286 beneficial effect Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 230000000007 visual effect Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000013515 script Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/133—Protocols for remote procedure calls [RPC]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
- H04L12/40006—Architecture of a communication node
- H04L12/40013—Details regarding a bus controller
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
- H04L12/40169—Flexible bus arrangements
- H04L12/40176—Flexible bus arrangements involving redundancy
- H04L12/40195—Flexible bus arrangements involving redundancy by using a plurality of nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
- H04L2012/40208—Bus networks characterized by the use of a particular bus standard
- H04L2012/40228—Modbus
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
- H04L2012/4026—Bus for use in automation systems
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Programmable Controllers (AREA)
Abstract
本发明提出了可编程人机界面与控制器间远程过程调用方法及系统,涉及远程过程调用技术领域。包括步骤S1:可编程人机界面与CODESYS控制器基于Modbus协议进行通信;步骤S2:Modbus从站中分配一段连续的保持寄存器地址,用于存储和传递远程过程调用所需要的同步参数和输入输出参数;步骤S3:客户端将远程调用过程的输入参数写入保持寄存器中;步骤S4:服务端读写Modbus从站中的保持寄存器,读取远程调用过程的输入参数并在保持寄存器中写入输出参数;步骤S5:客户端读取服务端写入的输出参数,实现远程过程调用。本发明降低了人机界面端设计过程与CODESYS控制器端开发过程的耦合性,有利于进行模块化开发和提高开发效率。
Description
技术领域
本发明属于远程过程调用技术领域,尤其涉及可编程人机界面与控制器间远程过程调用方法及系统。
背景技术
本部分的陈述仅仅是提供了与本发明相关的背景技术信息,不必然构成在先技术。
CODESYS是德国3S(3S-Smart Software Solutions GmbH)公司开发的一套用于可编程逻辑控制器(PLC)的软件开发平台,因其具有独立于硬件平台、开放式、可重构、组件化、符合IEC61131-3国际标准等优点,在现代工业自动化领域得到了广泛应用。CODESYS包含可视化界面设计组件,可实现控制系统的人机交互功能,但因其是额外收费的,很多控制器开发商开发的CODESYS控制器并不支持可视化界面设计,控制器用户通常选择与第三方可编程人机界面搭配使用。
可编程人机界面是一类具有用户可自行编程功能的人机界面设备,其具有界面设计过程简单、价格低廉、稳定等优点,用户可自行编程功能使其具有极大的使用灵活性和适用性,在各大自动化行业中得到广泛使用,其与CODESYS控制器的组合是一种常用的人机交互方案。
可编程人机界面具有的可编程功能,可将一些运算和处理过程封装在人机界面本地,在与用户进行人机交互时,人机界面通过本地过程调用即可完成响应。本地过程调用适合具有如下特点的场景:所需要的输入参数大部分或全部都是人机界面的本地数据,输出参数大部分或全部用于人机交互本身,所调用的过程(函数、脚本、宏等)其逻辑、流程简单,所调用的过程在功能上与控制器是解耦的或较容易解耦的。但是本地过程调用不适合具有如下特点的场景:所需要的输入参数大部分或全部都位于控制器存储区或其他与控制器连接的附属设备中、大部分输出参数除了用于人机交互外还用于控制器本地程序、所调用的过程在执行过程中需要与控制器连接的附属设备进行大量交互、所调用的过程本身是控制器程序必不可少的组成部分、所调用的过程其逻辑、流程复杂或运算量巨大。对于上述不适合本地过程调用的场景,通常需要在CODESYS控制器中对执行过程进行实现,并在控制器与人机界面间通信接口(包含物理接口和软件接口)的基础上,通过约定某些寄存器进行数据传递,从而实现人机界面对控制器程序的远程过程调用。
但是当人机界面中有大量组件存在远程过程调用需求时,这种方法会出现如下问题:
1)每个远程过程调用都需要分配寄存器用于传递参数,所需寄存器数量随着存在远程过程调用需求的组件数目增多而成比例增多;
2)因缺少统一的管理机制和接口,会导致人机界面设计过程变得复杂繁琐,对大量寄存器的分配和使用容易出错;
3)人机界面端的设计过程与CODESYS控制器端的开发过程是强耦合的,不利于进行模块化设计,也导致通用性差而不便于在CODESYS控制器间移植
发明内容
为克服上述现有技术的不足,本发明提供了可编程人机界面与控制器间远程过程调用方法及系统,此方法基于Modbus协议,可通过以太网、RS232、RS485等接口,实现可编程人机界面对CODESYS控制器中程序的远程过程调用,适用于人机界面中有大量组件存在远程过程调用需求的情况,降低了人机界面端设计过程与CODESYS控制器端开发过程的耦合性,有利于进行模块化开发和提高开发效率。
为实现上述目的,本发明的一个或多个实施例提供了如下技术方案:
本发明第一方面提供了可编程人机界面与控制器间远程过程调用方法。
可编程人机界面与控制器间远程过程调用方法,包括以下步骤:
步骤S1:可编程人机界面与CODESYS控制器基于Modbus协议进行通信,可编程人机界面作为Modbus主站,在远程过程调用过程中作为客户端,CODESYS控制器作为Modbus从站,在远程过程调用过程中作为服务端;
步骤S2:Modbus从站中分配一段连续的保持寄存器地址,用于存储和传递远程过程调用所需要的同步参数和输入输出参数;
步骤S3:客户端通过读写人机界面的本地寄存器和位于Modbus从站中的保持寄存器,将远程调用过程的输入参数写入保持寄存器中;
步骤S4:服务端读写Modbus从站中的保持寄存器,读取远程调用过程的输入参数并在保持寄存器中写入输出参数,远程过程调用所请求的调用过程在CODESYS控制器本地实现;
步骤S5:客户端读取服务端写入的输出参数,实现远程过程调用。
优选的,所述步骤S2,具体为:
将保持寄存器的起始地址记为h0,h0为输入参数传输同步标志,寄存器值0表示将要开始传输输入参数,非0正值表示输入参数设置完成,且值等于远程调用过程的编号;保持寄存器的h1~hXY为输入参数区域,用于传递远程过程调用的输入参数;保持寄存器的h(XY+1)为输出参数传输同步标志,寄存器值0表示远程过程还未执行完毕,1表示执行完成,且已经将所有输出参数设置完毕;h(XY+2)~hAB为输出参数区域,用于传递远程过程调用的输出参数。
优选的,所述步骤S3,具体为:
S3-1、分配本地寄存器地址LW-a1、LW-a2,LW-a1用来存储当前申请发起远程过程调用的发起者编号,LW-a2用来存储当前正在执行远程过程调用的发起者编号;
S3-2、为远程过程调用发起者编号,远程过程调用发起者包括人机界面中的可视化组件和非可视化组件;
S3-3、新增一个宏指令macro1作为初始化宏指令;
S3-4、增加结果解析宏指令,读取输出参数并根据发起者的需求进行解析,在人机界面中进行显示;
S3-5、新增一个宏指令macro2作为客户端状态维护宏指令;
S3-6、新增一个宏指令macro3作为轮询宏指令,周期性检查S3-1中本地寄存器地址,决定是否发起新的远程过程调用。
优选的,在所述S3-5中:
将LW-a2的值赋值给输入参数传输同步标志时,启动一个计时器;
检查输出参数传输同步标志,若远程过程还未执行完毕,则判断计时器是否超时,超时则将输入参数传输同步标志、输出参数传输同步标志、LW-a2重置为0,不超时则维持当前状态;其中不同的远程过程调用有不同的预设时间;
若远程过程执行完毕,则根据LW-a2中存储的当前远程过程调用的发起者编号,执行S3-4中与之对应的结果解析宏指令。
优选的,所述步骤S4,具体为:
S4-1、针对每个远程过程调用编号各自实现一个FUNCTION,在FUNCTION中通过状态机实现远程调用过程的执行;
S4-2、新增一个用于维护远程过程调用服务端的PROGRAM,此PROGRAM由一个周期性TASK进行调用;
S4-3、在前述S4-2 PROGRAM中定义一个局部变量A1,用于存储当前正在执行的远程调用过程的编号;
S4-4、在前述S4-2 PROGRAM中新增2个ACTION,ACTION1用于启动新的远程调用过程,ACTION2用于中止当前正在执行的远程调用过程;
S4-5、比较Modbus从站寄存器中的h0地址处数值与局部变量A1的数值,决定是否执行ACTION1、ACTION2;然后读取局部变量A1中的值,若不为0,就根据其中储存的编号执行S4-1中对应的FUNCTION;最后判断FUNCTION中的状态值是否为0,为0则将局部变量A1设置为0。
优选的,所述比较Modbus从站寄存器中的h0地址处数值与局部变量A1的数值,决定是否执行ACTION1、ACTION2,具体判断逻辑为:
若A1数值等于0且h0数值大于0,则执行ACTION1;若A1数值大于0且h0数值等于0,则执行ACTION2;若A1和h0数值均大于0,且二者不相等,则先执行ACTION2,然后执行ACTION1。
优选的,所述S4-4中:
ACTION1完成如下工作:Modbus从站寄存器中的h0地址处数值赋值给局部变量A1,根据局部变量A1中储存的远程过程调用编号将S4-1中对应的FUNCTION的状态值设置为1,从Modbus从站寄存器处读取本远程过程调用的输入参数;
ACTION2完成如下工作:将S4-1中对应的FUNCTION的状态值设置为-1,请求中止本远程过程调用,并执行一次该FUNCTION,最后将局部变量A1设置为0。
本发明第二方面提供了可编程人机界面与控制器间远程过程调用系统。
可编程人机界面与控制器间远程过程调用系统,包括:
通信建立模块,被配置为:可编程人机界面与CODESYS控制器基于Modbus协议进行通信,可编程人机界面作为Modbus主站,在远程过程调用过程中作为客户端,CODESYS控制器作为Modbus从站,在远程过程调用过程中作为服务端;
分配寄存器模块,被配置为:Modbus从站中分配一段连续的保持寄存器地址,用于存储和传递远程过程调用所需要的同步参数和输入输出参数;
客户端写入模块,被配置为:客户端通过读写人机界面的本地寄存器和位于Modbus从站中的保持寄存器,将远程调用过程的输入参数写入保持寄存器中;
服务端本地实现模块,被配置为:服务端读写Modbus从站中的保持寄存器,读取远程调用过程的输入参数并在保持寄存器中写入输出参数,远程过程调用所请求的调用过程在CODESYS控制器本地实现;
客户端读取模块,被配置为:客户端读取服务端写入的输出参数,实现远程过程调用。
本发明第三方面提供了计算机可读存储介质,其上存储有程序,该程序被处理器执行时实现如本发明第一方面所述的可编程人机界面与控制器间远程过程调用方法中的步骤。
本发明第四方面提供了电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的程序,所述处理器执行所述程序时实现如本发明第一方面所述的可编程人机界面与控制器间远程过程调用方法中的步骤。
以上一个或多个技术方案存在以下有益效果:
1)此方法中用于远程过程调用的寄存器数量是恒定的,适用于人机界面中有大量组件存在远程过程调用需求的情况;
2)提供了一种统一的机制和接口,通过对寄存器进行一次分配和统一管理,使人机界面设计过程变得简单明晰,有利于降低出错几率;
3)本方法中的CODESYS控制器作为Modbus从站、人机界面端实现的超时重置机制、Modbus寄存器的一次分配,共同降低了人机界面端设计过程与CODESYS控制器端开发过程的耦合性,有利于进行模块化开发和提高开发效率;
4)CODESYS控制器中的远程过程调用服务端由单独的TASK和PROGRAM维护,便于发挥IEC61131-3标准的优势,提高了该方法的通用性,便于实现在不同CODESYS控制器间移植。
本发明附加方面的优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
构成本发明的一部分的说明书附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。
图1为第一个实施例的方法流程图。
图2为可编程人机界面与CODESYS控制器间的远程过程调用的客户端实现流程图。
图3为可编程人机界面与CODESYS控制器间的远程过程调用的服务端实现流程图。
具体实施方式
应该指出,以下详细说明都是示例性的,旨在对本发明提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本发明所属技术领域的普通技术人员通常理解的相同含义。
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本发明的示例性实施方式。
在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
术语解释:
1)可编程人机界面:可编程人机界面指的是具有允许用户编程功能的人机界面设备,在工业自动化领域有广泛使用;
2)CODESYS:是德国3S(3S-Smart Software Solutions GmbH)公司开发的一套用于可编程逻辑控制器(PLC)的软件开发平台,CODESYS包括用来编程的集成开发环境(Development System,IDE)和运行时系统(Runtime System),CODESYS IDE支持IEC61131-3标准;
3)CODESYS控制器:指含有CODESYS运行时系统的控制器,控制器厂家设计完控制器硬件和驱动程序后,将CODESYS运行时系统移植安装到控制器中,就形成了CODESYS控制器。控制器厂家的用户购买CODESYS控制器后,借助CODESYS IDE进行应用开发,编译后生成二进制机器码,通过以太网口或串口下载到CODESYS控制器中,在CODESYS运行时系统的支持下执行这些机器码,从而实现目标功能;
4)本地过程调用、远程过程调用:当调用方和被调用方在同一台机器上时所发生的调用为本地过程调用,当调用方和被调用方不在同一台机器上时所发生的调用为远程过程调用;对于人机界面和CODESYS控制器的组合,调用方指的是人机界面,被调用方指的是人机界面本地的程序和CODESYS控制器中的程序;
5)TASK:IEC61131-3标准中为描述软件模型所定义的概念,意为“任务”,一个TASK可以被引起执行,比如周期性循环执行、事件触发执行等,一个TASK可包含一个或多个PROGRAM,这些PROGRAM就是该TASK所要执行的程序;
6)PROGRAM:IEC61131-3标准中为描述软件模型所定义的概念,意为“程序”,一个PROGRAM可以被添加到一个TASK中从而被执行,也可以在另一个已经被添加到某个TASK中的PROGRAM调用执行;
7)FUNCTION:IEC61131-3标准中为描述软件模型所定义的概念,意为“函数”,一个FUNCTION可以被PROGRAM或其他FUNCTION调用;
8)ACTION:IEC61131-3标准中为描述软件模型所定义的概念,意为“动作”,指的是要执行的布尔变量或一组操作以及相关的控制结果,一个ACTION可以被PROGRAM或其他ACTION调用。
实施例一
本实施例公开了可编程人机界面与控制器间远程过程调用方法。
如图1所示,可编程人机界面与控制器间远程过程调用方法,包括以下步骤:
步骤S1:可编程人机界面与CODESYS控制器基于Modbus协议进行通信,可编程人机界面作为Modbus主站,在远程过程调用过程中作为客户端,CODESYS控制器作为Modbus从站,在远程过程调用过程中作为服务端;
步骤S2:Modbus从站中分配一段连续的保持寄存器地址,用于存储和传递远程过程调用所需要的同步参数和输入输出参数;
步骤S3:客户端通过读写人机界面的本地寄存器和位于Modbus从站中的保持寄存器,将远程调用过程的输入参数写入保持寄存器中;
步骤S4:服务端读写Modbus从站中的保持寄存器,读取远程调用过程的输入参数并在保持寄存器中写入输出参数,远程过程调用所请求的调用过程在CODESYS控制器本地实现;
步骤S5:客户端读取服务端写入的输出参数,实现远程过程调用。
具体的技术方案如下:
S1、可编程人机界面与CODESYS控制器通过以太网、RS232、RS485等接口连接,基于Modbus协议进行通信,可编程人机界面作为Modbus主站,在远程过程调用过程中作为客户端,CODESYS控制器作为Modbus从站,在远程过程调用过程中作为服务端;
基于Modbus协议的远程过程调用和CODESYS控制器作从站是一个关键点,这样可以使Modbus寄存器位于CODESYS控制器中,而远程调用过程的执行主体也在CODESYS控制器中,便于访问寄存器。
S2、Modbus从站(CODESYS控制器)中分配一段连续的保持寄存器地址(起始地址记为h0),用于存储和传递远程过程调用所需要的同步参数和输入输出参数,具体如下表所示:
这里的寄存器分配是一个关键点,本实施例对寄存器进行一次分配和统一管理;输入参数传输同步标志和输出参数传输同步标志是一个关键点,用于对远程过程调用进行同步。
S3、客户端通过读写人机界面的本地寄存器和位于Modbus从站中的保持寄存器,实现远程过程调用的申请、发起、过程维护、结束等过程,这里的客户端实现是一个关键点。
客户端的具体实现方法如下:
S3-1、分配本地寄存器地址:在可编程人机界面上分配2个寄存器地址,记为LW-a1、LW-a2,前者用来存储当前申请发起远程过程调用的发起者编号,后者用来存储当前正在执行远程过程调用的发起者编号,0表示没有申请发起远程过程调用的发起者和正在执行远程过程调用的发起者;
S3-1、为远程过程调用发起者编号:可编程人机界面中的远程过程调用发起者可以是人机界面中的可视化组件(如功能按钮、位状态切换按钮等),或人机界面中的非可视化组件(如宏指令、函数等),本方法需要为每个远程过程调用发起者进行编号,从1开始计数,发起者通过将自身编号写入LW-a1进行申请调用;
S3-3、初始化宏指令:新增一个宏指令macro1,用于将LW-a1、LW-a2置为0,将Modbus从站中的输入参数传输同步标志、输出参数传输同步标志置为0,当可编程人机界面启动时执行一次;
S3-4、结果解析宏指令:为每一个远程过程调用的发起者编写一个宏指令macroX,从地址h22~h41处的输出参数区域读取输出参数并根据发起者的需求进行解析,在人机界面中进行相应的显示或其他处理;
S3-5、客户端状态维护宏指令:新增一个宏指令macro2,通过状态机维护LW-a2指定的远程过程调用的全过程,初始状态为0,各状态对应不同的操作:
S3-5.1、状态0:无操作,维持当前状态;
S3-5.2、状态1:将地址h0处的输入参数传输同步标志设置为0,并将状态值切换为2;
S3-5.3、状态2:将输入参数按照顺序写入地址h1~h20处的输入参数区域,并将状态值切换为3;
S3-5.4、状态3:将地址h21处的输出参数传输同步标志设置为0,并将状态值切换为4;
S3-5.5、状态4:将LW-a2的值赋值给地址h0处的输入参数传输同步标志,启动一个计时器,并将状态值切换为5;
S3-5.6、状态5:检查地址h21处的输出参数传输同步标志,若为0则判断计时器是否超时(不同远程过程调用有不同的预设时间),超时则将状态值切换为7,不超时则维持当前状态;若不为0,则将状态值切换为6;这里的超时重置是一个关键点,有利于降低耦合性;“不同远程过程调用有不同的预设时间”也是一个关键点,用于提高对各种远程调用过程的适用性;
S3-5.7、状态6:根据LW-a2中存储的当前远程过程调用的发起者编号,执行S3-4中与之对应的结果解析宏指令,最后将状态值切换为7;
S3-5.8、状态7:将输入参数传输同步标志、输出参数传输同步标志、LW-a2重置为0;
S3-5.9、从状态1到状态6各自的代码执行过程中遇到任何异常,均将状态值切换为7;
S3-6、轮询宏指令:新增一个宏指令macro3,通过周期性检查LW-a1、LW-a2的值,决定是否发起新的远程过程调用,具体判定逻辑为:
S3-6.1、若发现LW-a1和LW-a2均为0,则不执行任何远程过程调用;若发现LW-a1不为0而LW-a2为0,则将LW-a1的值复制到LW-a2,并将macro2中状态机状态设置为1,然后执行宏指令macro2;若发现LW-a1为0而LW-a2不为0,则继续执行宏指令macro2;若发现LW-a1和LW-a2均不为0,则将LW-a1重置为0,并继续执行宏指令macro2;
S4、服务端使用符合IEC61131-3标准的ST编程语言编写代码,通过读写位于CODESYS控制器的Modbus从站中的保持寄存器,读取远程调用过程的输入参数和写入输出参数,远程过程调用所请求的调用过程在CODESYS控制器本地实现,服务端的实现是一个关键点。
服务端的具体实现方法如下:
S4-1、针对每个远程过程调用编号各自实现一个FUNCTION(IEC61131-3标准术语,意为“函数”),在FUNCTION中通过状态机实现远程调用过程的执行,状态机初始状态为0,各状态对应不同的操作:
S4-1.1、状态0:无操作,维持当前状态;
S4-1.2、状态1:从Modbus从站寄存器的h1~h20地址处读取本远程过程调用的输入参数,并将状态值切换为2;
S4-1.3、状态2:执行本远程过程调用所期望完成的工作,执行完成则将状态值切换为3;本次执行未完成,则维持状态值不变,下次调用时继续执行;
S4-1.4、状态3:将输出参数写入到Modbus从站寄存器的h22~h41地址处,将h21地址处的输出参数传输同步标志设置为1,并将状态值切换为0;
S4-1.5、状态-1:此状态表示请求中止本远程过程调用,根据之前的状态进行本远程过程调用的中止操作,并将状态值切换为0;
S4-2、新增一个用于维护远程过程调用服务端的PROGRAM(IEC61131-3标准术语,意为“程序”),此PROGRAM由一个周期性TASK(IEC61131-3标准术语,意为“任务”)进行调用;本实施例中,这是一个关键点,由单独的PROGRAM和TASK来维护服务端,利于提高此方法的通用性,便于移植;
S4-3、在前述PROGRAM中定义一个局部变量A1,用于存储当前正在执行的远程调用过程的编号;
S4-4、在前述PROGRAM中新增2个ACTION(IEC61131-3标准术语,意为“动作”),ACTION1用于启动新的远程调用过程,ACTION2用于中止当前正在执行的远程调用过程;
S4-4.1、ACTION1完成如下工作:Modbus从站寄存器中的h0地址处数值赋值给局部变量A1,根据局部变量A1中储存的远程过程调用编号将S4-1中对应的FUNCTION的状态值设置为1;
S4-4.2、ACTION2完成如下工作:将S4-1中对应的FUNCTION的状态值设置为-1,并执行一次该FUNCTION,最后将局部变量A1设置为0;
S4-5、前述PROGRAM的执行逻辑为:通过比较Modbus从站寄存器中的h0地址处数值与局部变量A1的数值,决定是否执行ACTION1、ACTION2;然后读取局部变量A1中的值,若不为0,就根据其中储存的编号执行S4-1中对应的FUNCTION;最后判断FUNCTION中的状态值是否为0,为0则将局部变量A1设置为0;
S4-5.1、前述通过比较Modbus从站寄存器中的h0地址处数值与局部变量A1的数值,决定是否执行ACTION1、ACTION2,具体判断逻辑为:若A1数值等于0且h0数值大于0,则执行ACTION1;若A1数值大于0且h0数值等于0,则执行ACTION2;若A1和h0数值均大于0,且二者不相等,则先执行ACTION2,然后执行ACTION1。本实施例中,这是一个关键点,这里的判断逻辑实现了新远程过程调用的启动和原远程过程调用的异常中止。
实施例二
本实施例公开了可编程人机界面与控制器间远程过程调用系统。
可编程人机界面与控制器间远程过程调用系统,包括:
通信建立模块,被配置为:可编程人机界面与CODESYS控制器基于Modbus协议进行通信,可编程人机界面作为Modbus主站,在远程过程调用过程中作为客户端,CODESYS控制器作为Modbus从站,在远程过程调用过程中作为服务端;
分配寄存器模块,被配置为:Modbus从站中分配一段连续的保持寄存器地址,用于存储和传递远程过程调用所需要的同步参数和输入输出参数;
客户端写入模块,被配置为:客户端通过读写人机界面的本地寄存器和位于Modbus从站中的保持寄存器,将远程调用过程的输入参数写入保持寄存器中;
服务端本地实现模块,被配置为:服务端读写Modbus从站中的保持寄存器,读取远程调用过程的输入参数并在保持寄存器中写入输出参数,远程过程调用所请求的调用过程在CODESYS控制器本地实现;
客户端读取模块,被配置为:客户端读取服务端写入的输出参数,实现远程过程调用。
实施例三
本实施例的目的是提供计算机可读存储介质。
计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本公开实施例1所述的可编程人机界面与控制器间远程过程调用方法中的步骤。
实施例四
本实施例的目的是提供电子设备。
电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的程序,所述处理器执行所述程序时实现如本公开实施例1所述的可编程人机界面与控制器间远程过程调用方法中的步骤。
以上实施例二、三和四的装置中涉及的各步骤与方法实施例一相对应,具体实施方式可参见实施例一的相关说明部分。术语“计算机可读存储介质”应该理解为包括一个或多个指令集的单个介质或多个介质;还应当被理解为包括任何介质,所述任何介质能够存储、编码或承载用于由处理器执行的指令集并使处理器执行本发明中的任一方法。
本领域技术人员应该明白,上述本发明的各模块或各步骤可以用通用的计算机装置来实现,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。本发明不限制于任何特定的硬件和软件的结合。
上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。
Claims (10)
1.可编程人机界面与控制器间远程过程调用方法,其特征在于,包括以下步骤:
步骤S1:可编程人机界面与CODESYS控制器基于Modbus协议进行通信,可编程人机界面作为Modbus主站,在远程过程调用过程中作为客户端,CODESYS控制器作为Modbus从站,在远程过程调用过程中作为服务端;
步骤S2:Modbus从站中分配一段连续的保持寄存器地址,用于存储和传递远程过程调用所需要的同步参数和输入输出参数;
步骤S3:客户端通过读写人机界面的本地寄存器和位于Modbus从站中的保持寄存器,将远程调用过程的输入参数写入保持寄存器中;
步骤S4:服务端读写Modbus从站中的保持寄存器,读取远程调用过程的输入参数并在保持寄存器中写入输出参数,远程过程调用所请求的调用过程在CODESYS控制器本地实现;
步骤S5:客户端读取服务端写入的输出参数,实现远程过程调用。
2.如权利要求1所述的可编程人机界面与控制器间远程过程调用方法,其特征在于,所述步骤S2,具体为:
将保持寄存器的起始地址记为h0,h0为输入参数传输同步标志,寄存器值0表示将要开始传输输入参数,非0正值表示输入参数设置完成,且值等于远程调用过程的编号;保持寄存器的h1~hXY为输入参数区域,用于传递远程过程调用的输入参数;保持寄存器的h(XY+1)为输出参数传输同步标志,寄存器值0表示远程过程还未执行完毕,1表示执行完成,且已经将所有输出参数设置完毕;h(XY+2)~hAB为输出参数区域,用于传递远程过程调用的输出参数。
3.如权利要求1所述的可编程人机界面与控制器间远程过程调用方法,其特征在于,所述步骤S3,具体为:
S3-1、分配本地寄存器地址LW-a1、LW-a2,LW-a1用来存储当前申请发起远程过程调用的发起者编号,LW-a2用来存储当前正在执行远程过程调用的发起者编号;
S3-2、为远程过程调用发起者编号,远程过程调用发起者包括人机界面中的可视化组件和非可视化组件;
S3-3、新增一个宏指令macro1作为初始化宏指令;
S3-4、增加结果解析宏指令,读取输出参数并根据发起者的需求进行解析,在人机界面中进行显示;
S3-5、新增一个宏指令macro2作为客户端状态维护宏指令;
S3-6、新增一个宏指令macro3作为轮询宏指令,周期性检查S3-1中本地寄存器地址,决定是否发起新的远程过程调用。
4.如权利要求3所述的可编程人机界面与控制器间远程过程调用方法,其特征在于,在所述S3-5中:
将LW-a2的值赋值给输入参数传输同步标志时,启动一个计时器;
检查输出参数传输同步标志,若远程过程还未执行完毕,则判断计时器是否超时,超时则将输入参数传输同步标志、输出参数传输同步标志、LW-a2重置为0,不超时则维持当前状态;其中不同的远程过程调用有不同的预设时间;
若远程过程执行完毕,则根据LW-a2中存储的当前远程过程调用的发起者编号,执行S3-4中与之对应的结果解析宏指令。
5.如权利要求2所述的可编程人机界面与控制器间远程过程调用方法,其特征在于,所述步骤S4,具体为:
S4-1、针对每个远程过程调用编号各自实现一个FUNCTION,在FUNCTION中通过状态机实现远程调用过程的执行;
S4-2、新增一个用于维护远程过程调用服务端的PROGRAM,此PROGRAM由一个周期性TASK进行调用;
S4-3、在前述S4-2 PROGRAM中定义一个局部变量A1,用于存储当前正在执行的远程调用过程的编号;
S4-4、在前述S4-2 PROGRAM中新增2个ACTION,ACTION1用于启动新的远程调用过程,ACTION2用于中止当前正在执行的远程调用过程;
S4-5、比较Modbus从站寄存器中的h0地址处数值与局部变量A1的数值,决定是否执行ACTION1、ACTION2;然后读取局部变量A1中的值,若不为0,就根据其中储存的编号执行S4-1中对应的FUNCTION;最后判断FUNCTION中的状态值是否为0,为0则将局部变量A1设置为0。
6.如权利要求5所述的可编程人机界面与控制器间远程过程调用方法,其特征在于,所述比较Modbus从站寄存器中的h0地址处数值与局部变量A1的数值,决定是否执行ACTION1、ACTION2,具体判断逻辑为:
若A1数值等于0且h0数值大于0,则执行ACTION1;若A1数值大于0且h0数值等于0,则执行ACTION2;若A1和h0数值均大于0,且二者不相等,则先执行ACTION2,然后执行ACTION1。
7.如权利要求5所述的可编程人机界面与控制器间远程过程调用方法,其特征在于,所述S4-4中:
ACTION1完成如下工作:Modbus从站寄存器中的h0地址处数值赋值给局部变量A1,根据局部变量A1中储存的远程过程调用编号将S4-1中对应的FUNCTION的状态值设置为1,从Modbus从站寄存器处读取本远程过程调用的输入参数;
ACTION2完成如下工作:将S4-1中对应的FUNCTION的状态值设置为-1,请求中止本远程过程调用,并执行一次该FUNCTION,最后将局部变量A1设置为0。
8.可编程人机界面与控制器间远程过程调用系统,其特征在于:包括:
通信建立模块,被配置为:可编程人机界面与CODESYS控制器基于Modbus协议进行通信,可编程人机界面作为Modbus主站,在远程过程调用过程中作为客户端,CODESYS控制器作为Modbus从站,在远程过程调用过程中作为服务端;
分配寄存器模块,被配置为:Modbus从站中分配一段连续的保持寄存器地址,用于存储和传递远程过程调用所需要的同步参数和输入输出参数;
客户端写入模块,被配置为:客户端通过读写人机界面的本地寄存器和位于Modbus从站中的保持寄存器,将远程调用过程的输入参数写入保持寄存器中;
服务端本地实现模块,被配置为:服务端读写Modbus从站中的保持寄存器,读取远程调用过程的输入参数并在保持寄存器中写入输出参数,远程过程调用所请求的调用过程在CODESYS控制器本地实现;
客户端读取模块,被配置为:客户端读取服务端写入的输出参数,实现远程过程调用。
9.计算机可读存储介质,其上存储有程序,其特征在于,该程序被处理器执行时实现如权利要求1-7任一项所述的可编程人机界面与控制器间远程过程调用方法中的步骤。
10.电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-7任一项所述的可编程人机界面与控制器间远程过程调用方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310741013.3A CN116846943A (zh) | 2023-06-21 | 2023-06-21 | 可编程人机界面与控制器间远程过程调用方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310741013.3A CN116846943A (zh) | 2023-06-21 | 2023-06-21 | 可编程人机界面与控制器间远程过程调用方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116846943A true CN116846943A (zh) | 2023-10-03 |
Family
ID=88168137
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310741013.3A Pending CN116846943A (zh) | 2023-06-21 | 2023-06-21 | 可编程人机界面与控制器间远程过程调用方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116846943A (zh) |
-
2023
- 2023-06-21 CN CN202310741013.3A patent/CN116846943A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6718294B1 (en) | System and method for synchronized control of system simulators with multiple processor cores | |
US6425038B1 (en) | Conversion of desk-top operating system for real-time control using installable interrupt service routines | |
CN110663006B (zh) | 对可编程逻辑控制器执行故障转移并控制物理系统的方法 | |
US10789192B2 (en) | System and method for programming data transfer within a microcontroller | |
JP2010015534A (ja) | マルチコアマイコンシステムのシミュレーション方法及びシミュレーション装置 | |
CN109822549B (zh) | 一种机器人编程方法、装置及控制器 | |
CN107179982B (zh) | 一种跨进程调试方法和装置 | |
CN111666210A (zh) | 一种芯片验证方法及装置 | |
CN114237676A (zh) | 一种fpga逻辑更新方法、装置、设备及可读存储介质 | |
TW202403541A (zh) | 第三方行動應用程式中引入小程序的系統、方法、裝置及介質 | |
WO2018096717A1 (ja) | コントロールシステム及びコントロール方法 | |
JP2003015906A (ja) | リモートデバッグ方法および装置 | |
JP2013242629A (ja) | 制御装置、制御方法および命令セット | |
CN102331961A (zh) | 并行模拟多个处理器的方法及系统、调度器 | |
CN116846943A (zh) | 可编程人机界面与控制器间远程过程调用方法及系统 | |
CN115934062A (zh) | 一种工业控制程序开发平台及方法 | |
CN115857883A (zh) | 工业控制软件开发方法、装置和计算设备 | |
CN114281404B (zh) | 一种工控机算法代码的移植方法及装置 | |
CN112559336B (zh) | 自适应调试异构计算芯片的方法、装置、系统及主板芯片 | |
CN112579460B (zh) | 一种基于多核嵌入式系统的多级调试方法 | |
CN100492299C (zh) | 一种嵌入式软件开发的方法及系统 | |
US8914274B1 (en) | Method and system for instruction set simulation with concurrent attachment of multiple debuggers | |
CN116126366B (zh) | 芯片输入输出接口配置方法,装置,介质及电子设备 | |
CN114721325B (zh) | 一种多平台多版本plc工程兼容的方法 | |
CN116775038B (zh) | 支持iec和c++任务同时或独立运行的运行时系统 |
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 |