modbus 0x06 连续写_基于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。

70782253009f51080ef9f0d4f736e241.png

(2)Kali linux虚拟机(IP:192.168.180.146)安装OpenPLC_Editor,安装过程参考https://github.com/thiagoralves/OpenPLC_Editor,安装后,在应用里面搜索OpenPLC_Editor,打开后,编写简单程序如下,下载链接:openplc_test.st。

93d5eda69b91edf4ab7ebbd93a688175.png 66a3e0de3f8103336f4065004e540bb9.png

(3)winxp sp3 虚拟机(IP:192.168.180.157)安装组态王6.53,新建test工程下载链接https://github.com/sxd0216/kingview–test,并按下图所示添加OpenPLC设备OpenPLC_test。

c36e4f1e7d3a13d7228ea9c7ed18c83f.png ecf51108a8c6338a1c55402512086309.png 7253229c905e1d5df4208298b293d24c.png 1d1a84d0f6abf1a38c1f43faf2bf4107.png a830825607bc0357b000afb94a0275bf.png

(4)设定变量并和OpenPLC_test连接

247bb2c19e9228960f27cc64f3de006b.png

(5)组态简单画面,点击Start,电机运行,点击Stop,电机停止

24c1118a678f92a790577c0ae698055e.png

(1)Kali linux虚拟机(IP:192.168.180.146)中运行OpenPLC,导入OpenPLC_Editor编辑好的程序openplc_test.st。

c7891b7405e27da350af829db31bdfa4.png dca42cca7fd918eb50bb77ba64055c9c.png

待程序编译好后,Go to Dashboard,然后Start PLC

1291d10a3bfde6f03bc3a68518f0bcc0.png bd8ea06f8e235f8d2b67e24151ff7521.png

待PLC出现Running后,进入Monitoring

032b5bc62e841c20befd01eeb2d2ef7c.png 658997cb950e4dd7e05b0fd794a3ff35.png

(2)winxp sp3 虚拟机(IP:192.168.180.157)中运行test工程

ce4a9184e94e1dac353468291fa53d29.png 0c2e9ff53083caed0b15bec7fa3eccbb.png

(3)通过信息窗口查看,已经通讯成功

14992698492caf8616869aa9496836ae.png

(4)点击Start后,指示灯亮,电机启动,进入PLC,发现Start和MV1变量值已经变为TRUE,对比图如下:

508e8ca923a891d230b0e65d2b672c83.png 8b5ef4f06e602c23aff978d5968f78d3.png

(5)点击Stop后,指示灯灭,电机停止,进入PLC,发现Start和MV1变量值已经变为FALSE,Stop变量值变为TRUE,对比图如下:

afda2d6ac544451a7ec04e969939428e.png 75ccfab9bf0cc0498d6e7098b06c399d.png

(1)winxp sp3 虚拟机(IP:192.168.180.157)中利用wireshark抓取03.仿真通讯中Start(14帧、16帧)和Stop(19帧、21帧)的数据包,下载链接https://github.com/sxd0216/attack-packets。

e28dac41917e2a0c070705b80d09c471.png 0eb23b5feaf274bb41b795fd03dcb74a.png

查看数据包,搜索modbus协议”05″功能码Write Coil,捕获到Start(14帧、16帧)和Stop(19帧、21帧)的攻击数据包,modbus协议常用功能码如下:

01 :读取线圈状态

02:读取输入状态

03:保持型寄存器读取

05:写单一线圈

06:写单一寄存器

(2)基于wireshark捕获的Write Coil,编写Python攻击包,下载链接https://github.com/sxd0216/attack-packets。

0787fe08278dbb36fb11a7d6f46586e3.png f383e44a723ebc38af9013aa1514dc5d.png

(3)利用攻击包也可以达到(4)和(5)的效果

本文主要利用OpenPLC模拟modbus协议实现了OpenPLC实现了与Kingview的通讯仿真与模拟测试,大家如果感兴趣也可以基于OpenPLC模拟其他协议,进而仿真其他环境;同时本文也对kingview如何建立工程、组态画面,OpenPLC Editor编辑简单梯形图程序进行了简单介绍,希望对热爱工控的人士有所帮助。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值