CN115576265B - Plc设备模拟方法、装置、设备以及存储介质 - Google Patents
Plc设备模拟方法、装置、设备以及存储介质 Download PDFInfo
- Publication number
- CN115576265B CN115576265B CN202211457599.2A CN202211457599A CN115576265B CN 115576265 B CN115576265 B CN 115576265B CN 202211457599 A CN202211457599 A CN 202211457599A CN 115576265 B CN115576265 B CN 115576265B
- Authority
- CN
- China
- Prior art keywords
- virtual
- module
- plc
- file
- plc program
- 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.)
- Active
Links
Images
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/05—Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
- G05B19/054—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/10—Plc systems
- G05B2219/11—Plc I-O input output
- G05B2219/1103—Special, intelligent I-O processor, also plc can only access via processor
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/02—Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Automation & Control Theory (AREA)
- Programmable Controllers (AREA)
Abstract
本公开的实施例提供了一种PLC设备模拟方法、装置、设备以及存储介质。该方法包括:将接收的用于描述PLC程序的ST文件编译为C文件,并将C文件编译为机器码文件;在PLC虚拟容器中执行机器码文件,以便PLC程序根据接收的虚拟IO模块参数读取虚拟IO模块中的变量值,对变量值进行处理,并将处理结果写入虚拟IO模块。以此方式,可以通过PLC虚拟容器与虚拟IO模块的数据交互,模拟真实PLC设备的运行行为,诱导网络攻击者对其进行攻击,从而保护真实PLC设备正常运行。
Description
技术领域
本公开涉及工控安全技术领域,尤其涉及一种PLC设备模拟方法、装置、设备以及存储介质。
背景技术
目前全球针对关键基础设施攻击的事件频繁发生,制造了社会恐慌并极大地影响了公众的生活秩序。由于关键基础设施部署有各种工控设备,且各种工控设备的运行通常需要PLC设备的驱动,所以PLC设备往往成为网络攻击者的主要攻击目标。因此,如何使PLC设备避开网络攻击就成为了目前亟待解决的技术问题。
发明内容
本公开提供了一种PLC设备模拟方法、装置、设备以及存储介质,可以诱导网络攻击者对模拟PLC设备进行攻击,从而保护真实PLC设备正常运行。
第一方面,本公开实施例提供了一种PLC设备模拟方法,该方法包括:
将接收的用于描述PLC程序的ST文件编译为C文件,并将C文件编译为机器码文件;
在PLC虚拟容器中执行机器码文件,以便PLC程序根据接收的虚拟IO模块参数读取虚拟IO模块中的变量值,对变量值进行处理,并将处理结果写入虚拟IO模块。
在第一方面的一些可实现方式中,ST文件的生成步骤包括:
根据PLC程序语句生成PLC程序文件,并将PLC程序文件编译为ST文件。
在第一方面的一些可实现方式中,ST文件的生成步骤还包括:
对ST文件进行逻辑仿真测试和变量仿真测试。
在第一方面的一些可实现方式中,虚拟IO模块是通过对规约模拟器进行从站配置得到的。
在第一方面的一些可实现方式中,虚拟IO模块参数包括虚拟IO模块地址参数,以及PLC程序中的输入变量和输出变量与虚拟IO模块中变量的关联关系参数;
PLC程序根据接收的虚拟IO模块参数读取虚拟IO模块中的变量值,对变量值进行处理,并将处理结果写入虚拟IO模块,包括:
PLC程序根据虚拟IO模块地址参数将PLC虚拟容器与虚拟IO模块连接;
根据关联关系参数,读取虚拟IO模块中与PLC程序中的输入变量关联的变量值;
对读取的变量值进行处理;
根据关联关系参数,将处理结果写入虚拟IO模块中与PLC程序中的输出变量关联的变量。
在第一方面的一些可实现方式中,PLC程序中的输入变量和输出变量与虚拟IO模块中变量的关联关系参数的生成包括以下步骤:
从ST文件中提取PLC程序的输入变量和输出变量;
将输入变量和输出变量的地址分别与虚拟IO模块中变量的地址关联,得到关联关系参数。
在第一方面的一些可实现方式中,该方法还包括:
在PLC虚拟容器中执行机器码文件时,显示PLC程序内的变量值变化情况。
第二方面,本公开实施例提供了一种PLC设备模拟装置,该装置包括:
编译模块,用于将接收的用于描述PLC程序的ST文件编译为C文件,并将C文件编译为机器码文件;
执行模块,用于在PLC虚拟容器中执行机器码文件,以便PLC程序根据接收的虚拟IO模块参数读取虚拟IO模块中的变量值,对变量值进行处理,并将处理结果写入虚拟IO模块。
第三方面,本公开实施例提供了一种电子设备,该电子设备包括:至少一个处理器;以及与至少一个处理器通信连接的存储器;存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行如以上所述的方法。
第四方面,本公开实施例提供了一种存储有计算机指令的非瞬时计算机可读存储介质,计算机指令用于使计算机执行如以上所述的方法。
在本公开中,可以通过PLC虚拟容器与虚拟IO模块的数据交互,模拟真实PLC设备的运行行为,诱导网络攻击者对其进行攻击,从而保护真实PLC设备正常运行。
应当理解,发明内容部分中所描述的内容并非旨在限定本公开的实施例的关键或重要特征,亦非用于限制本公开的范围。本公开的其它特征将通过以下的描述变得容易理解。
附图说明
结合附图并参考以下详细说明,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。附图用于更好地理解本方案,不构成对本公开的限定在附图中,相同或相似的附图标记表示相同或相似的元素,其中:
图1示出了一种能够在其中实现本公开的实施例的示例性运行环境的示意图;
图2示出了本公开实施例提供的一种PLC设备模拟方法的流程图;
图3示出了本公开实施例提供的一种梯形图;
图4示出了本公开实施例提供的一种梯形图存储结构;
图5示出了本公开实施例提供的一种AOV图;
图6示出了本公开实施例提供的一种变量提取示意图;
图7示出了本公开实施例提供的另一种梯形图;
图8示出了本公开实施例提供的一种规约模拟器设置界面;
图9示出了本公开实施例提供的另一种规约模拟器设置界面;
图10示出了本公开实施例提供的另一种规约模拟器设置界面;
图11示出了本公开实施例提供的一种PLC设备模拟装置的结构图;
图12示出了一种能够实施本公开的实施例的示例性电子设备的结构图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的全部其他实施例,都属于本公开保护的范围。
另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
针对背景技术中出现的问题,本公开实施例提供了一种PLC设备模拟方法、装置、设备以及存储介质。
具体地,可以将接收的用于描述PLC程序的ST文件编译为C文件,并将C文件编译为机器码文件,然后在PLC虚拟容器中执行机器码文件,以便PLC程序根据接收的虚拟IO模块参数读取虚拟IO模块中的变量值,对变量值进行处理,并将处理结果写入虚拟IO模块。
以此方式,可以通过PLC虚拟容器与虚拟IO模块的数据交互,模拟真实PLC设备的运行行为,诱导网络攻击者对其进行攻击,从而保护真实PLC设备正常运行。
下面结合附图,通过具体的实施例对本公开实施例提供的PLC设备模拟方法、装置、设备以及存储介质进行详细地说明。
图1示出了一种能够在其中实现本公开的实施例的示例性运行环境的示意图,如图1所示,运行环境100中可以包括PLC程序编辑设备110、PLC设备模拟服务器120,PLC程序编辑设备110与PLC设备模拟服务器120通信连接。
其中,PLC程序编辑设备110上部署有PLC程序编辑组件,在此称之为VPLC_Editor,用于PLC程序的编程,PLC程序文件的编译、仿真等。示例性地,PLC程序编辑设备110可以是移动电子设备,也可以是非移动电子设备。例如,移动电子设备可以是平板电脑、笔记本电脑、掌上电脑或者超级移动个人计算机(Ultra-Mobile Personal Computer,UMPC)等,非移动电子设备可以是个人计算机(Personal Computer,PC)、超级计算机或者服务器等。
PLC设备模拟服务器120(也即PLC设备模拟平台)上部署有PLC设备模拟组件,在此称之为VPLC_Runtime,用于PLC设备模拟(包括ST文件的编译、运行,PLC程序内变量的监控等)。示例性地,PLC设备模拟服务器120可以是单个服务器、服务器集群、云服务器等,在此不做限制。
作为一个示例,用户可以在PLC程序编辑设备110的VPLC_Editor中编写符合IEC61131-3编程规范的PLC程序,得到PLC程序文件,其中,PLC程序语句可以是指令表(Instruction List Diagram,ILD);阶梯图(Ladder Diagram,LD);功能区块图(FunctionBlock Diagram,FBD);结构化文字(Structured Text Language,STL);顺序功能流程图(Sequential Function Chart,SFC)等,在此不做限制。
PLC程序编辑设备110通过VPLC_Editor将PLC程序文件编译为结构化文本(Structured Text Language,ST)文件,然后向PLC设备模拟服务器120发送ST文件和用户输入的虚拟IO模块参数。
PLC设备模拟服务器120接收PLC程序编辑设备110发送的ST文件和虚拟IO模块参数,由VPLC_Runtime将ST文件编译为C文件,并将C文件编译为机器码文件,然后建立PLC虚拟容器,在PLC虚拟容器中执行机器码文件,进而运行PLC程序,以便PLC程序根据虚拟IO模块参数读取虚拟IO模块中的变量值,对变量值进行处理,并将处理结果写入虚拟IO模块。
以此方式,可以通过PLC虚拟容器与虚拟IO模块的数据交互,模拟真实PLC设备的运行行为,诱导网络攻击者对其进行攻击,从而保护真实PLC设备正常运行。
下面将详细介绍本公开实施例提供的PLC设备模拟方法,其中,该PLC设备模拟方法的执行主体可以是图1所示的PLC设备模拟服务器120。
图2示出了本公开实施例提供的一种PLC设备模拟方法的流程图,如图2所示,PLC设备模拟方法200可以包括以下步骤:
S210,将接收的用于描述PLC程序的ST文件编译为C文件,并将C文件编译为机器码文件。
在一些实施例中,可以接收PLC程序编辑设备发送的ST文件,由VPLC_Runtime通过内嵌的IEC 61131-3 编译器将ST文件编译为C文件,并通过GCC工具将C文件编译为机器码文件。其中,VPLC_Runtime在将ST文件编译为C文件时会加入多种规约协议以适应不同的虚拟IO模块。
在一些实施例中,ST文件的生成步骤可以包括:
根据PLC程序语句快速生成PLC程序文件,并将PLC程序文件编译为ST文件。进一步地,可以对ST文件进行逻辑仿真测试和变量仿真测试,若其通过逻辑仿真测试和变量仿真测试,也即PLC程序逻辑变化、变量变化符合预期,才可用作后续编译,提高PLC程序的准确性。
示例性地,用户可以在PLC程序编辑设备110的VPLC_Editor中输入PLC程序语句,由VPLC_Editor根据PLC程序语句生成PLC程序文件,并将PLC程序文件编译为ST文件。
编译期间,当有语法错误时,会弹出报错信息,提示用户更改PLC程序文件,并重新编译更改后的PLC程序文件。
接下来,VPLC_Editor会对ST文件进行逻辑仿真测试和变量仿真测试,若其通过逻辑仿真测试和变量仿真测试,才可用作后续编译。
为了更好地了解PLC程序文件是如何编译为ST文件的,下面以PLC程序语句为梯形图,PLC程序文件为梯形图文件为例,对PLC程序文件如何编译为ST文件进行详细说明,具体如下:
首先,对梯形图进行简单介绍,梯形图是一种图符化的语言形式,在VPLC_Editor中由位图实现,梯形图可以看作一个由梯形图符和连接符组合而成的有向图,其中图符抽象成有向图的顶点,连接符抽象成有向图的弧。在编辑过程中,行数、每行元素个数、类别都是未知的,编辑过程就是一种动态的存储过程。
VPLC_Editor运用双向链表这个种动态数据结构来表达梯形图。双向链表的数据结构不仅封装了数据,而且封装了对数据的操作,如链表的定位、行插入、删除及链表的功能划分等。
VPLC_Editor在将梯形图文件编译为ST文件时,先将梯形图转换为AOV图,然后再对其进行拓扑排序,按照其拓扑排序的结点顺序,依据各结点不同类型分类处理,将AOV图转换为结构文本,最后得到ST文件。
如图3所示,图3是一个串并联比较复杂的梯形图。它对应的结构文本为:4:=((1AND 2 ) OR (5 AND (((6 AND 7) OR (10 AND 11))AND 8) OR (12 AND 13 AND 14)))AND (3 OR 9)。
在将图3所示梯形图转换为AOV图时,除代表各图元的实节点{1,2,3,4,5,6,7,8,9,10,11,12,13,14}外,还在并联相交的位置增加虚节点{a,b,c,d,e,f,g,h,i,j,k,l,m},由此所得该梯形图的存储结构如图4所示,其弧指向只有向下或向右两种。再通过虚接点的合并形成AOV图,AOV图如图5所示。
对图5所示AOV图进行拓扑排序的步骤是,从上往下从左到右检索各节点,处理当前入度为0的节点,并将其访问位标识,将其每个出弧指向的头节点的当前入度减1,并删除该出弧,然后处理下一个当前入度为0的节点。这样图5所示AOV图的节点顺序便为{1,2,5,c,6,7,e,f,g,10,11,d,8,h,i,j,12,k,13,m,l,14,a,3,9,b,4}。然后将该节点分为三种类型处理,普通节点的处理顺序为{1,2,5,6,7,10,11,8,12,13,15,14,3,9,4},虚节点的处理顺序为{c,e,f,g,d,h,i,j,k,m,l,a,b},输出节点为{4},进而得到结构文本为4:=((1 AND2 ) OR (5 AND (((6 AND 7) OR (10 AND 11))AND 8) OR (12 AND 13 AND 14))) AND(3 OR 9),最后得到包含该结构文本的ST文件。
S220,在PLC虚拟容器中执行机器码文件,以便PLC程序根据接收的虚拟IO模块参数读取虚拟IO模块中的变量值,对变量值进行处理,并将处理结果写入虚拟IO模块。
在一些实施例中,可以接收PLC程序编辑设备发送的虚拟IO模块参数,其中,虚拟IO模块参数可以包括虚拟IO模块地址参数(例如IP地址和端口号),以及PLC程序中的输入变量和输出变量与虚拟IO模块中变量的关联关系参数(用于表示PLC程序中的输入变量和输出变量与虚拟IO模块中变量的关联关系,也即PLC程序中的输入变量与虚拟IO模块中哪个变量关联,PLC程序中的输出变量与虚拟IO模块中哪个变量关联)。
适应性地,VPLC_Runtime在PLC虚拟容器中执行机器码文件,进而运行PLC程序,PLC程序可以根据虚拟IO模块地址参数将PLC虚拟容器与虚拟IO模块连接,然后根据关联关系参数,读取虚拟IO模块中与PLC程序中的输入变量关联的变量值(也即关联变量的值),按照处理逻辑对读取的变量值进行处理,并根据关联关系参数,将处理结果写入虚拟IO模块中与PLC程序中的输出变量关联的变量。
如此一来,可以快速建立PLC虚拟容器与虚拟IO模块的连接,精确读取虚拟IO模块中的指定变量值,并将该变量值处理后的结果写入虚拟IO模块中相应的变量,准确实现PLC虚拟容器与虚拟IO模块的数据交互。
示例性地,PLC程序中的输入变量和输出变量与虚拟IO模块中变量的关联关系参数的生成可以包括以下步骤:
从ST文件中提取PLC程序的输入变量和输出变量,将输入变量和输出变量的地址分别与虚拟IO模块中变量的地址关联,快速得到关联关系参数。
例如,VPLC_Runtime在将ST文件编译为C文件时,会提取ST文件中的变量,如图5所示,第一组VAR和END_VAR中的变量后面都有“AT %”,这些变量分配了具体的硬件内存,需要与虚拟IO模块中的变量关联,也即映射到虚拟IO模块,其中,“AT %”后的第一个字符“I”表示该变量为输入变量,“AT %”后的第一个字符“Q”表示该变量为输出变量。第二组VAR和END_VAR中的变量后面则没有“AT %”,这些变量则是在程序内部作用,不需要映射到虚拟IO模块。
VPLC_Runtime可以根据用户输入的变量关联信息(表示用户期望将输入变量与虚拟IO模块中哪个变量关联,输出变量与虚拟IO模块中哪个变量关联),将输入变量和输出变量的地址与虚拟IO模块中变量的地址关联,得到关联关系参数。
值得注意的是,由于规约模拟器内部提供多种规约协议,可以充当I/O模块,因此,在一些实施例中,虚拟IO模块可以是通过对规约模拟器进行从站配置得到的,具有构建简单的特性。
根据本公开实施例,可以通过PLC虚拟容器与虚拟IO模块的数据交互,模拟真实PLC设备的运行行为,诱导网络攻击者对其进行攻击,从而保护真实PLC设备正常运行。
在一些实施例中,在PLC虚拟容器中执行所述机器码文件时,可以显示PLC程序内的变量值变化情况,实现对PLC程序执行的实时监控。
示例性地,可以通过Web页面在PLC程序编辑设备上显示PLC程序内的变量值变化情况。
下面可以结合一个具体实施例,对本公开提供的PLC设备模拟方法进行详细说明,具体如下:
用户在PLC程序编辑设备的VPLC_Editor中使用梯形图编程语言创建一个逻辑电路也即梯形图,如图7所示,电路的逻辑功能为按下PB1开关,LED灯亮;按下PB2开关,LED灯灭。
梯形图编写完成之后,需要按下PB1开关,确定电路是否导通,LED灯是否被点亮;按下PB2开关,电路颜色是否断开,LED是否灯灭,若按下PB1开关,电路导通,LED灯被点亮,按下PB2开关,电路颜色断开,LED灯灭,则确定梯形图表示的电路的逻辑和变量正确。
进而由VPLC_Editor将梯形图文件编译为ST文件,并对ST文件进行逻辑仿真测试和变量仿真测试,若确定ST文件通过逻辑仿真测试和变量仿真测试,则用户可以将ST文件上传至PLC设备模拟服务器,并由PLC设备模拟服务器中的VPLC_Runtime将其编译为C文件,并将C文件编译为机器码文件。
与此同时,用户可以打开规约模拟器,右击“New Scene”->“Manage”->“Add”->“Modbus”->“Slave”,弹出“Dialog”界面,点击“Modbus Channel”,按图8所示界面进行设置:位置1选择需要设置的本地IP地址;位置2设置端口号。
然后点击“Modbus Database”,按图9所示界面进行设置:可以快速点击位置1“Create Default Databae”生成,点击位置2“OK”按钮,设置完成,进入图10所示界面。
用户可以在VPLC_Runtime的Web页面,将规约模拟器参数即虚拟IO模块参数(IP地址和端口号、关联关系参数)上传至PLC设备模拟服务器,并可以点击VPLC_Runtime的Web页面中的“启动PLC”按钮,由VPLC_Runtime在PLC虚拟容器中执行机器码文件,进而运行PLC程序,PLC程序根据虚拟IO模块地址参数将PLC虚拟容器与虚拟IO模块连接,然后根据关联关系参数,读取虚拟IO模块中与PLC程序中的输入变量关联的变量值,按照处理逻辑对读取的变量值进行处理,并根据关联关系参数,将处理结果写入虚拟IO模块中与PLC程序中的输出变量关联的变量。
在PLC程序运行期间,用户可以点击“监控”按钮,由VPLC_Runtime通过Web页面在PLC程序编辑设备上显示PLC程序内的变量值变化情况。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本公开并不受所描述的动作顺序的限制,因为依据本公开,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本公开所必须的。
以上是关于方法实施例的介绍,以下通过装置实施例,对本公开所述方案进行进一步说明。
图11示出了根据本公开的实施例提供的一种PLC设备模拟装置的结构图,如图11所示,PLC设备模拟装置1100可以包括:
编译模块1110,用于将接收的用于描述PLC程序的ST文件编译为C文件,并将C文件编译为机器码文件。
执行模块1120,用于在PLC虚拟容器中执行机器码文件,以便PLC程序根据接收的虚拟IO模块参数读取虚拟IO模块中的变量值,对变量值进行处理,并将处理结果写入虚拟IO模块。
在一些实施例中,ST文件的生成步骤包括:
根据PLC程序语句生成PLC程序文件,并将PLC程序文件编译为ST文件。
在一些实施例中,ST文件的生成步骤还包括:
对ST文件进行逻辑仿真测试和变量仿真测试。
在一些实施例中,虚拟IO模块是通过对规约模拟器进行从站配置得到的。
在一些实施例中,虚拟IO模块参数包括虚拟IO模块地址参数,以及PLC程序中的输入变量和输出变量与虚拟IO模块中变量的关联关系参数。
PLC程序根据接收的虚拟IO模块参数读取虚拟IO模块中的变量值,对变量值进行处理,并将处理结果写入虚拟IO模块,包括:
PLC程序根据虚拟IO模块地址参数将PLC虚拟容器与虚拟IO模块连接。
根据关联关系参数,读取虚拟IO模块中与PLC程序中的输入变量关联的变量值。
对读取的变量值进行处理。
根据关联关系参数,将处理结果写入虚拟IO模块中与PLC程序中的输出变量关联的变量。
在一些实施例中,PLC程序中的输入变量和输出变量与虚拟IO模块中变量的关联关系参数的生成包括以下步骤:
从ST文件中提取PLC程序的输入变量和输出变量。
将输入变量和输出变量的地址分别与虚拟IO模块中变量的地址关联,得到关联关系参数。
在一些实施例中,PLC设备模拟装置1100还包括:
显示模块,用于在PLC虚拟容器中执行机器码文件时,显示PLC程序内的变量值变化情况。
可以理解的是,图11所示的PLC设备模拟装置1100中的各个模块/单元具有实现本公开实施例提供的PLC设备模拟方法200中的各个步骤的功能,并能达到其相应的技术效果,为了简洁,在此不再赘述。
图12示出了一种可以用来实施本公开的实施例的电子设备的结构图。电子设备1200旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备1200还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图12所示,电子设备1200可以包括计算单元1201,其可以根据存储在只读存储器(ROM)1202中的计算机程序或者从存储单元1208加载到随机访问存储器(RAM)1203中的计算机程序,来执行各种适当的动作和处理。在RAM1203中,还可存储电子设备1200操作所需的各种程序和数据。计算单元1201、ROM1202以及RAM1203通过总线1204彼此相连。输入/输出(I/O)接口1205也连接至总线1204。
电子设备1200中的多个部件连接至I/O接口1205,包括:输入单元1206,例如键盘、鼠标等;输出单元1207,例如各种类型的显示器、扬声器等;存储单元1208,例如磁盘、光盘等;以及通信单元1209,例如网卡、调制解调器、无线通信收发机等。通信单元1209允许电子设备1200通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元1201可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元1201的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元1201执行上文所描述的各个方法和处理,例如方法200。例如,在一些实施例中,方法200可被实现为计算机程序产品,包括计算机程序,其被有形地包含于计算机可读介质,例如存储单元1208。在一些实施例中,计算机程序的部分或者全部可以经由ROM1202和/或通信单元1209而被载入和/或安装到设备1200上。当计算机程序加载到RAM1203并由计算单元1201执行时,可以执行上文描述的方法200的一个或多个步骤。备选地,在其他实施例中,计算单元1201可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行方法200。
本文中以上描述的各种实施方式可以在数字电子电路系统、集成电路系统、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,计算机可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。计算机可读介质可以是计算机可读信号介质或计算机可读储存介质。计算机可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。计算机可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
需要注意的是,本公开还提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,计算机指令用于使计算机执行方法200,并达到本公开实施例执行其方法达到的相应技术效果,为简洁描述,在此不再赘述。
另外,本公开还提供了一种计算机程序产品,该计算机程序产品包括计算机程序,计算机程序在被处理器执行时实现方法200。
为了提供与用户的交互,可以在计算机上实施以上描述的实施例,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将以上描述的实施例实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以为分布式系统的服务器,或者是结合了区块链的服务器。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
Claims (8)
1.一种PLC设备模拟方法,其特征在于,所述方法包括:
将接收的用于描述PLC程序的ST文件编译为C文件,并将所述C文件编译为机器码文件;
在PLC虚拟容器中执行所述机器码文件,以便所述PLC程序根据接收的虚拟IO模块参数读取虚拟IO模块中的变量值,对所述变量值进行处理,并将处理结果写入所述虚拟IO模块;
所述虚拟IO模块是通过对规约模拟器进行从站配置得到的;
所述虚拟IO模块参数包括虚拟IO模块地址参数,以及所述PLC程序中的输入变量和输出变量与所述虚拟IO模块中变量的关联关系参数;
所述PLC程序根据接收的虚拟IO模块参数读取虚拟IO模块中的变量值,对所述变量值进行处理,并将处理结果写入所述虚拟IO模块,包括:
所述PLC程序根据所述虚拟IO模块地址参数将所述PLC虚拟容器与虚拟IO模块连接;
根据所述关联关系参数,读取所述虚拟IO模块中与所述PLC程序中的输入变量关联的变量值;
对读取的变量值进行处理;
根据所述关联关系参数,将处理结果写入所述虚拟IO模块中与所述PLC程序中的输出变量关联的变量。
2.根据权利要求1所述的方法,其特征在于,所述ST文件的生成步骤包括:
根据PLC程序语句生成PLC程序文件,并将所述PLC程序文件编译为ST文件。
3.根据权利要求2所述的方法,其特征在于,所述ST文件的生成步骤还包括:
对所述ST文件进行逻辑仿真测试和变量仿真测试。
4.根据权利要求1所述的方法,其特征在于,所述PLC程序中的输入变量和输出变量与所述虚拟IO模块中变量的关联关系参数的生成包括以下步骤:
从所述ST文件中提取所述PLC程序的输入变量和输出变量;
将所述输入变量和所述输出变量的地址分别与所述虚拟IO模块中变量的地址关联,得到所述关联关系参数。
5.根据权利要求1-4中任一项所述的方法,其特征在于,所述方法还包括:
在PLC虚拟容器中执行所述机器码文件时,显示所述PLC程序内的变量值变化情况。
6.一种PLC设备模拟装置,其特征在于,所述装置包括:
编译模块,用于将接收的用于描述PLC程序的ST文件编译为C文件,并将所述C文件编译为机器码文件;
执行模块,用于在PLC虚拟容器中执行所述机器码文件,以便所述PLC程序根据接收的虚拟IO模块参数读取虚拟IO模块中的变量值,对所述变量值进行处理,并将处理结果写入所述虚拟IO模块;
所述虚拟IO模块是通过对规约模拟器进行从站配置得到的;
所述虚拟IO模块参数包括虚拟IO模块地址参数,以及所述PLC程序中的输入变量和输出变量与所述虚拟IO模块中变量的关联关系参数;
所述PLC程序根据接收的虚拟IO模块参数读取虚拟IO模块中的变量值,对所述变量值进行处理,并将处理结果写入所述虚拟IO模块,包括:
所述PLC程序根据所述虚拟IO模块地址参数将所述PLC虚拟容器与虚拟IO模块连接;
根据所述关联关系参数,读取所述虚拟IO模块中与所述PLC程序中的输入变量关联的变量值;
对读取的变量值进行处理;
根据所述关联关系参数,将处理结果写入所述虚拟IO模块中与所述PLC程序中的输出变量关联的变量。
7. 一种电子设备,其特征在于,所述电子设备包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-5中任一项所述的方法。
8.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使计算机执行权利要求1-5中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211457599.2A CN115576265B (zh) | 2022-11-21 | 2022-11-21 | Plc设备模拟方法、装置、设备以及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211457599.2A CN115576265B (zh) | 2022-11-21 | 2022-11-21 | Plc设备模拟方法、装置、设备以及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115576265A CN115576265A (zh) | 2023-01-06 |
CN115576265B true CN115576265B (zh) | 2023-07-11 |
Family
ID=84588598
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211457599.2A Active CN115576265B (zh) | 2022-11-21 | 2022-11-21 | Plc设备模拟方法、装置、设备以及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115576265B (zh) |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106844310A (zh) * | 2017-01-22 | 2017-06-13 | 南京南瑞继保电气有限公司 | 一种结构化文本代码处理方法和系统 |
US10769275B2 (en) * | 2017-10-06 | 2020-09-08 | Ca, Inc. | Systems and methods for monitoring bait to protect users from security threats |
CN108418807B (zh) * | 2018-02-05 | 2020-04-24 | 浙江大学 | 一种工业控制系统主流协议实现与监测解析平台 |
CN108614516A (zh) * | 2018-06-20 | 2018-10-02 | 深圳市同立方科技有限公司 | 一种虚拟plc仿真系统及方法 |
CN214011787U (zh) * | 2020-08-05 | 2021-08-20 | 上海工业自动化仪表研究院有限公司 | 一种基于真实工控环境的高交互蜜罐装置 |
CN112615836A (zh) * | 2020-12-11 | 2021-04-06 | 杭州安恒信息技术股份有限公司 | 一种工控网络安全防护仿真系统 |
CN112988508B (zh) * | 2021-03-04 | 2022-03-18 | 浙江中控研究院有限公司 | 一种基于内存隔离的可信plc嵌入式系统 |
-
2022
- 2022-11-21 CN CN202211457599.2A patent/CN115576265B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN115576265A (zh) | 2023-01-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108351636B (zh) | 工程设计工具、系统及模块 | |
CN107710149B (zh) | 利用连接性模型生成plc代码的方法和系统 | |
US20030016206A1 (en) | Partitioning for model-based design | |
CN107291444B (zh) | Plc指令生成方法及装置和plc编程方法 | |
CN113342345A (zh) | 深度学习框架的算子融合方法、装置 | |
CN111209203B (zh) | 一种基于源代码的模型验证方法 | |
CN112860356A (zh) | 一种api调用控制方法、装置、电子设备和存储介质 | |
CN106933568B (zh) | 一种组态软件系统及一种工业控制方法 | |
CN115509522A (zh) | 面向低代码场景的接口编排方法、系统、电子设备 | |
EP4073626B1 (en) | Method and system for generating engineering diagrams in an engineering system | |
CN115576265B (zh) | Plc设备模拟方法、装置、设备以及存储介质 | |
CN115809688B (zh) | 一种模型调试方法、装置、电子设备及存储介质 | |
CN113590217B (zh) | 基于引擎的函数管理方法、装置、电子设备及存储介质 | |
CN111240972B (zh) | 一种基于源代码的模型验证装置 | |
CN114579120A (zh) | 一种应用代码处理方法、装置、电子设备及存储介质 | |
CN115469561A (zh) | 仿真测试方法及装置、电子设备和存储介质 | |
CN113691403A (zh) | 拓扑节点配置方法、相关装置及计算机程序产品 | |
CN105335153A (zh) | 一种自动生成动态脚本的方法 | |
CN112948245B (zh) | 元素调试方法、装置、设备、存储介质及程序产品 | |
CN115361290B (zh) | 配置比对方法、装置、电子设备及存储介质 | |
US20230237249A1 (en) | Method and system for generating an automation engineering project in a technical installation using multidisciplinary approach | |
CN110361986B (zh) | 仿真文件的生成方法和装置、仿真系统 | |
CN117076813B (zh) | 前端浏览器渲染方法、装置、电子设备和存储介质 | |
CN112363696B (zh) | 增强现实快速开发系统及方法、电子设备及可读存储介质 | |
CN118070536A (zh) | 异构模型转换方法、装置、电子设备及存储介质 |
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 |