赞
踩
大家好,之前需要更新的MQTT通讯【2】因为硬件不足还不能发布出来,但最近在项目中涉及到西门子和欧姆龙之间的modbus TCP通讯,想到modbus TCP通讯是个非常常见并广泛使用的通讯协议,今天就结合最近做的测试给大家好好讲解一下,先提示一下,这边只给大家讲解如何实现,至于报文是什么,如何用socket来编写功能块或dll这边不会讲解,这块我会根据私信的小伙伴数量来考虑要不要出一篇如何用ST语言来编写modbus TCP功能块的博客。
先请出我们今天测试的主角,他们分别是西门子200smart(IP地址192.168.250.200),西门子1200(IP地址192.168.250.100),欧姆龙NX102(IP地址192.168.250.1),电脑ThinkPad T14(IP地址192.168.250.188),电脑天选3(IP地址192.168.250.88),设置他们的IP在同一网段,
我们将测试以下三大内容:
(1)使用modbus TCP的仿真软件实现modbus TCP通讯;
(2)使用仿真软件分别实现与西门子200smart及欧姆龙NX102的通讯;
(3)实现西门子200smart和欧姆龙NX102的通讯,西门子1200和NX102的通讯;
我们先分别在两台电脑上开启modbus服务器和客户端,这边以ThinkPad这台电脑为服务器如下图
天选3这台电脑当成客户端,去连接服务器,如下图
接下来我做读写线圈,读写保存寄存器测试,输入寄存器,输入线圈测试
客户端:
服务器:
结果:读取成功!
客户端:
服务器:
结果:读写成功!
客户端:
服务器:
结果:读取成功!
客户端:
服务器:
结果:读写成功!
首先我们先去modbus TCP的输入线圈,输出线圈,保持寄存器和输入寄存器分别对应了西门子200smart的那些存储区,通过查询帮助我可以发现,分别对应I区,Q区,V区,AIW区,有了这前提我们可以开始做测试,先做西门子为服务器的测试。
我们要在200smart中使用MBUS_SERVER 指令,并写入以下程序;
下载进PLC中,打开modbus客户端,输入IP地址,端口号,连接,并进行Q区和V区的读写测试
客户端
服务器
结果:读写成功!
客户端
服务器
结果:读写成功!
欧姆龙PLC本身并没有包含modbus功能块,这就导致我们需要寻求欧姆龙官方技术提供的modbus TCP功能块,里面包含客户端和服务器功能块(版权原因这边就不给大家展示了);当然我们也能自己利用ST语言编写功能块,这对于一般的上位机工程师来说并不难,只需要了解ST的编写规范和socket的通讯方式,以及modbus TCP的报文,这块之后有时间会发篇博客来详细的说明,大家可以敬请期待一下。
好的,要实现服务器通讯,我们要在NX102中写入如下程序:
接下来我们利用仿真软件对寄存器和线圈进行读写测试
客户端
服务器
结果:读写成功!
客户端
服务器
结果:读写成功!
在欧姆龙里我们要写入连接、读写相应功能码的程序;这边的话由于版权原因我只给大家读取寄存器的程序。
客户端
服务器
结果:读取成功!
客户端
服务器
结果:写入成功!
客户端
服务器
结果:写入成功!
本次测试中西门子将作为服务器,欧姆龙作为客户端,在对应的PLC写入相应的程序,程序如上面程序。
选择前十个寄存器采取读取,后十个采取写入
结果:欧姆龙和西门子200smart通讯成功,读写成功!
这边在西门子中我们写入如下程序:
并建立两个DB块,一个是读写的数据,一个是服务器参数
我们将欧姆龙里程序的服务器IP改一下,连接成功后,进行读写测试,将前五个字读取,后五个字写入,看一下最后效果
结果:欧姆龙和西门子1200通讯成功,读写成功!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。