基于Modbus协议实现Openplc与Kingview的仿真通讯与模拟测试

工业控制系统离不开上位机监控系统和下位机控制器即PLC,上位机软件相对比较容易获得,比如本文采用kingview6.53,但PLC的获得相对来说就没有那么轻松,考虑这种情况,本文借助一款模拟工业自动化环境的开源软件OpenPLC基于modbus协议实现与组态王的通讯仿真 。同时基于环境进行模拟测试,对组态王的组态画面、OpenPLC Editor梯形图简单编程进行简单介绍,亲测效果不错 。
(1)Kali linux虚拟机(IP:192.168.180.146)安装OpenPLC
安装过程参考https://github.com/thiagoralves/OpenPLC_v3,安装后,Kali linux虚拟机内置浏览器输入如下地址,账户/密码:openplc/openplc 。

基于Modbus协议实现Openplc与Kingview的仿真通讯与模拟测试

文章插图
(2)Kali linux虚拟机(IP:192.168.180.146)安装OpenPLC_Editor,安装过程参考https://github.com/thiagoralves/OpenPLC_Editor,安装后,在应用里面搜索OpenPLC_Editor,打开后,编写简单程序如下,下载链接:openplc_test.st 。
基于Modbus协议实现Openplc与Kingview的仿真通讯与模拟测试

文章插图
基于Modbus协议实现Openplc与Kingview的仿真通讯与模拟测试

文章插图
(3)winxp sp3 虚拟机(IP:192.168.180.157)安装组态王6.53,新建test工程下载链接https://github.com/sxd0216/kingview–test,并按下图所示添加OpenPLC设备OpenPLC_test 。
基于Modbus协议实现Openplc与Kingview的仿真通讯与模拟测试

文章插图
基于Modbus协议实现Openplc与Kingview的仿真通讯与模拟测试

文章插图
基于Modbus协议实现Openplc与Kingview的仿真通讯与模拟测试

文章插图
基于Modbus协议实现Openplc与Kingview的仿真通讯与模拟测试

文章插图
基于Modbus协议实现Openplc与Kingview的仿真通讯与模拟测试

文章插图
(4)设定变量并和OpenPLC_test连接
基于Modbus协议实现Openplc与Kingview的仿真通讯与模拟测试

文章插图
(5)组态简单画面,点击Start,电机运行,点击Stop,电机停止
基于Modbus协议实现Openplc与Kingview的仿真通讯与模拟测试

文章插图
(1)Kali linux虚拟机(IP:192.168.180.146)中运行OpenPLC,导入OpenPLC_Editor编辑好的程序openplc_test.st 。
基于Modbus协议实现Openplc与Kingview的仿真通讯与模拟测试

文章插图
基于Modbus协议实现Openplc与Kingview的仿真通讯与模拟测试

文章插图
待程序编译好后,Go to Dashboard,然后Start PLC
基于Modbus协议实现Openplc与Kingview的仿真通讯与模拟测试

文章插图
基于Modbus协议实现Openplc与Kingview的仿真通讯与模拟测试

文章插图
待PLC出现Running后,进入Monitoring
基于Modbus协议实现Openplc与Kingview的仿真通讯与模拟测试

文章插图
基于Modbus协议实现Openplc与Kingview的仿真通讯与模拟测试

文章插图
(2)winxp sp3 虚拟机(IP:192.168.180.157)中运行test工程
基于Modbus协议实现Openplc与Kingview的仿真通讯与模拟测试

文章插图
基于Modbus协议实现Openplc与Kingview的仿真通讯与模拟测试

文章插图
(3)通过信息窗口查看,已经通讯成功
基于Modbus协议实现Openplc与Kingview的仿真通讯与模拟测试

文章插图
(4)点击Start后,指示灯亮,电机启动,进入PLC,发现Start和MV1变量值已经变为TRUE,对比图如下:
基于Modbus协议实现Openplc与Kingview的仿真通讯与模拟测试

文章插图
基于Modbus协议实现Openplc与Kingview的仿真通讯与模拟测试

文章插图
(5)点击Stop后,指示灯灭,电机停止,进入PLC,发现Start和MV1变量值已经变为FALSE,Stop变量值变为TRUE,对比图如下:
基于Modbus协议实现Openplc与Kingview的仿真通讯与模拟测试

文章插图
基于Modbus协议实现Openplc与Kingview的仿真通讯与模拟测试

文章插图
(1)winxp sp3 虚拟机(IP:192.168.180.157)中利用wireshark抓取03.仿真通讯中Start(14帧、16帧)和Stop(19帧、21帧)的数据包,下载链接https://github.com/sxd0216/attack-packets 。
基于Modbus协议实现Openplc与Kingview的仿真通讯与模拟测试

文章插图
基于Modbus协议实现Openplc与Kingview的仿真通讯与模拟测试

文章插图
查看数据包,搜索modbus协议”05″功能码Write Coil,捕获到Start(14帧、16帧)和Stop(19帧、21帧)的攻击数据包,modbus协议常用功能码如下:
01 :读取线圈状态
02:读取输入状态
03:保持型寄存器读取
【基于Modbus协议实现Openplc与Kingview的仿真通讯与模拟测试】05:写单一线圈
06:写单一寄存器
(2)基于wireshark捕获的Write Coil,编写Python攻击包,下载链接https://github.com/sxd0216/attack-packets 。


推荐阅读