PLC程序的仿真之-施耐德大型PLC的变量强制( UnityPro编程软件)
Unity Pro编程软件集成了PLC仿真器,使用PC上运行的PLC的仿真软件,应用程序在现场安装以前,就可以进行完整的测试,这对于大项目的应用来说,可以及早发现程序中的逻辑错误,提高程序开发的效率,缩短程序的开发、调试时间。
Unity Pro 软件集成了完善的仿真功能,集成在 Unity Pro 中的 PLC 仿真器可以在 PC 上准确的再现目标程序的行为。在仿真中所有调试工具均可使用:
Ø 断点和观察点
Ø 实时监测,用于显示运行中变量和逻辑的状态
Ø 程序单步执行
通过PLC 仿真器,读者不必连接到真实的PLC,就可以进行程序调试。在真实的PLC 上运行的所有项目任务(主任务、快速任务和事件任务)都可以在仿真器上运行。该仿真器和真实PLC 的区别在于它没有I/O 模块和通信网络的实时行为,因此对通讯等等的仿真效果差一些。
Unity Pro的仿真器有离线、在线和监视器等操作状态。离线状态是打开新应用程序或现有应用程序时,操作状态将更改为离线状态。在线状态可以让处于在线状态中的应用程序直接连接到控制器内存当中。在监视状态中,读者可以更改操作状态并调整控制器,还可以用来启动或停止控制器。并可以使用动态数据表编辑器查看、修改或传送数据。
一、 Unity Pro的仿真界面
仿真时,在Unity Pro编程软件中,单击【PLC】菜单下的菜单选项【仿真模式】,或点击快速访问栏中的仿真模式图标 ,就可以弹出仿真画面,如图1 所示。
图 1 启动PLC的仿真器
二、 仿真示例
单击菜单【生成】下的菜单选项【重新生成所有项目】,或直接点击快速访问栏中的图标 ,如图2所示。
图 2 在下载前进行编译检查
单击【PLC】菜单下的菜单选项【连接】,如图3所示。
图 3 使用连接建立与仿真器的连接
点击【将项目传输到PLC】,菜单项的位置如图4所示。
图4 下载程序到仿真器
勾选【PLC在传输后运行】,然后点击【传输】按钮,操作如图5所示。
图 5 项目传输到PLC对话框
在【运行】确认对话框中确认昆腾项目的运行,如图6所示。
图6 点击OK按钮确认项目的运行
可通过单击 ,允许/禁止程序读写,仿真器面板左下方蓝色的【复位】按钮是冷启动按钮,红色的【电源重置】按钮是热启动按钮,无论冷启动还是热启动,复位后Quantum的运行状态会变成【空闲】,并且Unity Pro与仿真PLC的在线连接会断开,必须重新连接,再点击Run运行命令,方能再次运行仿真器,仿真器的面板如图7所示,。
图 7 仿真器的控制面板
当程序下载运行后,可以看到,在梯形图编辑器中,导通以绿色粗线标识,没导通以红色细线标识,在线后显示如图8所示。
图8 程序在线后的状态
选中【润滑泵启动】,然后单击右键,在弹出的右键快捷菜单选择【强制值】下的【强制为1】,对于仿真来说,实际的逻辑输入需要使用【强制值】的方式来修改,内部的变量等可使用【设置值】的方式来修改,操作如图9所示。
图 9将润滑泵启动强制为1
在弹出的警告对话框中说明了强制使能需要注意的一些情况,包括强制后PLC重新上电冷启动不再有效,热启动在PLC的内存保护被禁用且应用程序存储在内存的备份区域,在此对话框的操作选择【确定】,如图10所示。
图 10选择确定使强制值操作有效
则在线监控的程序变为绿色,逻辑输出【润滑泵运行连接中间继电器CR2】也接通,如图11所示。
图 11强制后的程序运行图
使用同样的方法将【润滑泵启动QA4】的强制值修改为【强制为0】,模拟完成了按下QA4按钮的过程,完成后程序如图12所示。
图 12 润滑泵启动QA4按钮强制为0
选中【润滑泵停止TA2】常闭点,然后单击右键,在弹出的右键快捷菜单选择【强制值】下的【强制为1】,然后在弹出的对话框中选择【确定】。程序如图13所示。
图 13 模拟润滑泵停止按钮按下的过程
选中【润滑泵停止TA2】常闭点,然后单击右键,在弹出的右键快捷菜单选择【强制值】下的【强制为0】,然后在弹出的对话框中选择【确定】。程序如图14所示。
图14 模拟润滑泵停止按钮松开的过程[c1]
最后选中【润滑泵停止TA2】和【润滑泵启动QA4】,然后单击右键,在弹出的右键快捷菜单选择【强制值】下的【取消强制】,可以看到【润滑泵停止TA2】和【润滑泵启动QA4】的变量名上的代表强制变量的框消失了,程序如图15所示。
图 15 取消强制后的程序
仿真器还支持使用动态数据表,读/写程序中变量或对逻辑输入变量进行强制的操作。
在Unity Pro首先创建动态数据表,如图16所示。
图 16 创建新的动态数据表
动态数据表的名字为M590 Monitor[c2] ,此动态表为模拟/监视主机运行状态创建,如图17所示。
图17 动态表的名称
三、 Unity Pro仿真软件的其它功能
1 工具提示
当鼠标指针停留在变量上时,将显示一个提供该变量值的工具提示,如图18所示。
图 18工具提示
2 检查窗口
先选中要创建检查窗口的变量,然后单击右键,在快捷菜单中选择【新建检查窗口】,或直接按功能键【F9】,创建的变量功能在所有编程语言都可使用,在变量窗口中显示变量值、地址和任何注释(如果有),创建变量窗口的操作如图19所示。
图 19 新建检查窗口的图示
检查变量窗口还可以设置,单击右键在快捷菜单中选【设置】,如图20所示。
图 20 设置图示
在对话框中选择变量显示的格式和最大/最小值,如图21所示。
图 21 检查设置的对话框
3 断点
断点可用于在设置断点处停止执行任务,使用断点可以随时停止项目的处理。
在调试过程中,可以使用断点执行检查代码的行为和查看变量的值两种操作。
在项目中的给定位置只有一个断点。断点不会保存,在与 PLC 断开连接时它将丢失。
它是在在线模式下实现的,而不管 PLC 是处于运行状态还是停止状态。断点功能不能在事件任务中使用,具有断点的 ST 段如图22所示。
图 22 断点ST段的图示
4 单步模式
设置完断点后,则可以使用单步模式将程序的=一步步执行,进行程序的深入分析,这个功能在大项目中查找程序中出现的问题,是非常有效的。
使用单步模式可以分步执行程序。在项目因到达断点而停止或已处于单步模式时,提供单步功能,处于单步模式的 ST 段如图23所示。
图 23开始调试的图示
在单步模式下提供了以下功能:
Ø 分步执行程序
Ø 步入
Ø 步出
Ø 跳过
Ø 显示当前步
Ø 调用存储器
在多次执行【步入】功能时,调用存储器可以显示从第一个断点开始的整个路径。
在分步模式下运行 PLC 程序并进入(步入)读/写保护段可能导致无法读取程序及从段中退出。读者必须在【停止】模式下切换 PLC 以返回到初始状态。
分步模式是指逐功能块执行应用程序,这个模式由预先设置的断点启动,用于检查代码的行为和变量的值。
分步模式必须在【在线模式】下实现,在分步模式下执行的段会停止相应的任务,可用于分步模式的命令有三个,即步入命令、步进命令和步出命令。
在分步模式下,如果要重新启动任务的执行以便返回到以前设置的断点,则需要从菜单中选择调试->开始命令,或者单击工具栏中的开始。
警惕!Schneider Electric软件再爆漏洞,PLC自查请开启
1、概述
近日,网络安全公司Trustwave的研究人员报告称他们在Schneider Electric软件中发现了一个安全漏洞CVE-2020-7489,该漏洞类似于Stuxnet恶意软件利用的漏洞。Stuxnet是十年前美国和以色列用来破坏伊朗核计划的恶意软件,其设计目标是西门子的SIMATICS7-300和S7-400可编程逻辑控制器(PLC)。利用该漏洞可以访问托管SoMachine软件和目标PLC的环境。EcoStruxure Machine Expert–Basic 以及其前身 SoMachine Basic 都是法国施耐德电气(Schneider Electric)公司的产品,SoMachine Basic,也被称为EcoStruxure Machine Expert,是一款轻量级的编程软件,专为施耐德Modicon M221可编程逻辑控制器(Programmable Logic Controller,PLC)而设计。
2、漏洞描述
Schneider Electric EcoStruxure Machine Expert – Basic或SoMachine Basic中存在注入漏洞。此漏洞的结果是DLL替换,攻击者可利用该漏洞将恶意代码传输到控制器。
图1-1 CVSS评分
图1-2 CVSS评分
2.1漏洞披露时间
发布时间:2020年4月22日
更新时间:2020年5月5日
2.2漏洞影响版本
SoMachine Basic(所有版本)
EcoStruxure Machine Expert-Basic(所有版本)
Modicon M100逻辑控制器(所有版本)
Modicon M200逻辑控制器(所有版本)
Modicon M221逻辑控制器(所有版本)
2.3已知受影响的软件配置
图2 受影响的软件配置
3、漏洞原理及复现
3.1 漏洞原理
该漏洞的跟踪源为CVE-2020-7475,该漏洞在多款Schneider Electric产品中存在注入漏洞。该漏洞源于用户输入构造命令、数据结构或记录的操作过程中,网络系统或产品缺乏对用户输入数据的正确验证,未过滤或未正确过滤掉其中的特殊元素,导致系统或产品产生解析或解释方式错误。而CVE-2020-7489类似于CVE-2020-7475漏洞,攻击者可利用该漏洞将恶意代码传输到控制器。
3.2 漏洞复现
首先确定SoMachine Basic使用的两个DLL来构建网络数据包,并将这些库加载到IDA Pro中以识别将控制命令发送到控制器的所有功能。下图突出显示了一些功能。
图3 函数调用了将消息发送到PLC的函数
我们分析了两个功能(分别称为功能A和功能B),用于发送命令以启动PLC。其思想是了解两个功能之间的执行情况,以识别其子功能所部署的安全机制,以防止操纵控制平面。
直观地说,当操作员使用SoMachine Basic图形用户界面单击“start controller”时,函数A被触发,调用函数B准备数据包并将其发送到PLC以启动控制器。
控制命令由数据包中的单个字节表示。用于启动PLC的控制命令值是硬编码在函数B中的,如下图所示。其他命令控制值可以在其他函数中找到,这些函数被调用来为其他控制操作做准备。
图4 硬编码值从功能B复制到出口Modbus消息
当操作员在SoMachine Basic UI上单击“启动控制器”时,功能A将调用一个子功能以检查PLC设备的当前状态。如果目标PLC可用,功能A将继续调用功能B。将要发送到PLC的数据包将在功能B中创建,然后再发送给PLC。流程图如下:
图5 部分控制流程图
遵循过程间控制流程图,我们发现从未检查或验证硬编码值。这使威胁参与者可以修补DLL,修改值并更改数据包的预期行为。
图6 修改DLL上的硬编码值,数据包通过“OK”响应成功发送到PLC
4、漏洞危害及防护建议
4.1漏洞危害
l 获取管理访问权:攻击者可利用该漏洞将恶意代码传输到控制器,很可能获得对受害系统的管理访问权,并且该系统可能已被锁定到与周围网络形成物理隔离的地步
l 系统崩溃:攻击者可能会替换所有命令功能,以在PLC上执行违反PLC设计方式的命令。例如,他可以修改所有硬编码值以运行“停止PLC”命令,而操作员将失去对PLC的控制。他还可以修改(来自PLC的)所有返回数据包,以便即使威胁执行者可能已经将恶意代码注入到PLC中,也将始终返回预期的良好行为。
4.2防护建议
1. 更新软件以及固件
l 将项目更新到EcoStruxure Machine Expert - Basic V1.0 SP2或更高版本;
l 在Modicon M100/M200/M221逻辑控制器上,更新到最新固件版本;
l 在项目属性中为读和写操作激活应用程序保护。
2. 程序转移
l 将应用程序转移到Modicon M100/M200/M221逻辑控制器。EcoStruxure Machine Expert-Basic将在传输应用程序时执行完整性检查,如果应用程序在传输期间被更改,将向用户显示一个警告弹出窗口。
参考文献
[1] MISC:https://www.se.com/ww/en/download/document/SEVD-2020-105-01/
[2] NVD:https://nvd.nist.gov/vuln/detail/CVE-2020-7489
[3] CVE:https://www.tenable.com/cve/CVE-2020-7489
[4] OSINT:https://osint.geekcq.com/2020/04/22/cve-2020-7489/
相关问答
一启动施耐德atv610电流迅速增大,然后就风扇反馈警告,红灯闪烁?
可能跟这个系列的产品的参数设置(有些不人性化,需要一些调教),联系联系供应商或致电施耐德热线。可能跟这个系列的产品的参数设置(有些不人性化,需要一些调教...
施耐德变频器igbt过热故障原因?
施耐德变频器IGBT过热故障的原因是多种因素综合作用。1.IGBT(InsulatedGateBipolarTransistor)是变频器中的重要组件之一,其工作温度通常较高。过高的工作...
0PF警告灯什么意思?
施耐德大功率带小电机或不带电机,都要将FLT菜单中OPL改为NO,同时还要将DRC菜单中SPC改为SMALLMOTOR,这样应该没问题了。在操作中警告灯短暂地点亮不表示有问...
同是受美国管制的非正常国家,为何日本认怂上缴天价保护费,而德国霸气拒提军费比例?
随着美国对日韩两国提出承担更高的美国驻军军费的承担比例,使得美国驻军军费问题,成为了人们关注的焦点,但是在这个问题上,同为二战战败国的德国,却霸气的拒...
美国的水质好吗?
确实是这样,美国人不会像中国人,会买桶装水,自来水都是直饮的。而且,在公共场合,也都安装了这种直饮水的龙头。很显然,至少从自来水而言,美国的平均水质...
米切尔招募乔治加盟爵士,你怎么看?
不过,话又说回来,不管施耐德怎么安排阵容,安排战术,这支爵士还是无法和勇士、火箭想抗衡,至少在未来几年没有能力。好了,这就是个人看法,如果你有不同看...好了...
中端单反哪款好超人气中端单反推荐-ZOL问答
9条回答:【推荐答案】深度使用尼康d7200和佳能70d,这两个相机也能代表NC两家半幅伪旗舰,也就是题主说的中端单反的水平操作上各有千秋,尼康按钮多,起初会感觉有点...
相序保护器型号有哪些?_住范儿家装官网
本产品符合GB14085.5-2001eqvIEC60947-1:1999标准。警告!本产品一般是对三相电源的电源侧采样,不得安装在变频电流的输出侧!2结构特点1)安装...