技术论坛

【分享】关于MODBUS TCP V4.0 使用(二)客户端

作者 主题
至圣

经验值: 127317
发帖数: 22001
精华帖: 824
主题:【分享】关于MODBUS TCP V4.0 使用(二)客户端
精华帖精华帖星级5级 推荐帖


只看楼主 只看精华 楼主 2016-08-02 01:03:38

(一)描述了S7 1200/1500的MODBUS TCP服务器的写法。

关于MODBUS TCP V4.0使用 (一)服务器端


下面开始说一下 MODBUS TCP 客户端的写法。


可能有些网友已经有注意到在服务器的 OB1 中有个SEL 选择开关。这实际上是留给客户端写入的一个控制字(WORD9)。
实际上,可以用它来控制服务器的动作。(例如:用于切换服务器;切换需要读写的数据;控制服务器的运行方式等等。)
除此之外,为检查传输,再做一个低频正弦信号,发送给MODBUS TCP服务器。


首先,再添加一个 S7 1200(最便宜的1211 V4.1)
组态:
在其属性-常规中设置IP地址(169.254.1.70);设备名称(  )
对于都是西门子的装置(PLC/MODBUS TCP模块),可以加入到PN/IE子网;对于第三方的MODBUS TCP模块,可能不需要在项目中做组态,直接使用该模块的说明去设置 IP地址,然后用客户端身份去访问。(通常MODBUS TCP传感器模块为服务器端,使用TCP/IP WEB设置,MODBUS TCP访问。)

图 1


为了测试,先做个低频正弦波信号。



图2a
拖过一个预先做好的DB(SIN_MOD), 它就是个简单数组 ARRAY(1-50) OF INT;预先写好了50个正弦值。


图2


插入一个循环中断,间隔时间500毫秒;每次中断改变一次,形成0.1Hz正弦波输出。


图3







学而时习之,不亦说乎?温故而知新,不亦乐乎?
以下网友喜欢您的帖子:

  
重要声明:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1314543&b_id=50&s_id=0&num=7

至圣

经验值: 127317
发帖数: 22001
精华帖: 824
客户端使用方法:
推荐帖


只看楼主 只看精华 楼主 1楼 2016-08-02 01:10:50

做好上述准备后,与服务器端相同。新建个FC功能;从右侧拖入两个 MB_CLIENT 客户端功能块。


图4


要为客户端功能块准备一个标准(非优化的)DB保持寄存器数据块。(我这里直接复制了服务器的那个寄存器DB)
其中,WORD9 用于服务器的控制字; WORD10用于发送给服务器 正弦信号(INT)。


图5


与服务器端相同,对于MB_CLIENT 功能块的状态输出,建立个DB,集中处理。(自己做个数据类型好了。)


图6


与服务器端一样;新建一个连接DB(CONNECT_DB);每一个MB_CLIENT需要用一个连接参数。(数据类型栏直接敲入哦。)
(也可以从已经编写好的服务器端的程序中,直接拷贝过来,修改即可。)


图7


接口ID(interfaceid)如前帖,要查一下PLC组态的网络端口硬件标识符。
连接ID 选用没有被用到的ID。每个客户端用不同的连接ID。(反正就要用个没被占用的即可,号在范围内随你。)
连接类型 只能是11(16#0B)
主动连接(ActiveEstabilished)必须为真(客户端当然是主动去访问服务器啦。)
远程地址 就填写 上贴那个 服务器的 IP地址(169.254.1.71)
远程端口号:完全根据服务器侧的要求。就是说,要看服务器(MODBUS TCP 传感器)的说明。这里的服务器是自己“做”的。所以“读”服务器的用502端口号,“写”服务器用503端口号。
本地端口 不需要=0 (这是客户端,没人能来访问。)


以上完成后,就是 拖拽放 把 FC 写完。



图8



注意: 数据地址;读和写服务器的两个客户端的MB_DATA_ADDR地址都是 40001;这是因为(前帖)的服务器的写寄存器的指针是DBX16.0;所以,第一个字就是用40001即可。(这就是一定要看服务器说明的原因。)


最后写一下主程序MAIN (OB1)


图 9


编译,保存。这就完成了 MB_CLIENT客户端PLC的程序。




学而时习之,不亦说乎?温故而知新,不亦乐乎?
以下网友喜欢您的帖子:

  
至圣

经验值: 127317
发帖数: 22001
精华帖: 824
客户端仿真模拟测试
推荐帖


只看楼主 只看精华 楼主 2楼 2016-08-02 01:12:54

编译没问题后,可以启动PLC SIM 仿真。

启动仿真,下载运行程序。
首先建立个监控表。将需要监控的变量分别从 M变量表、DB中拖入。
在线。检查 客户端状态码。
同时,检查准备发送给服务器的“正弦波”信号是否正常。



图10


MB客户端没有问题后,再启动 MB服务器端PLC的仿真(两个PLC同时仿真)
启动客户端连接请求 (监控表 MBREQ=1)
在监控表中,检查 读到的MB服务器值。



图11


最后,将MB服务器PLC 在线。检查是否接收到来自客户端的“正弦波”信号。



图12


以上,就完成了MODBUS TCP 服务器-客户端的仿真模拟。


是不是很容易呀?


下面(三)实际传输测试。

关于MODBUS TCP V4.0使用(三)实际传输测试


学而时习之,不亦说乎?温故而知新,不亦乐乎?
以下网友喜欢您的帖子:

  
侠士

经验值: 1045
发帖数: 190
精华帖: 1
回复:【分享】关于MODBUS TCP V4.0 使用(二)客户端


只看楼主 只看精华 3楼 2016-08-03 07:47:40

 昨天看了(一)贴,很受用,(二)贴依旧精彩~ 

感谢Y版无私奉献~~


希望多年以后看看自己会发现如今的努力没有白费。
以下网友喜欢您的帖子:

  
侠士

经验值: 1289
发帖数: 106
精华帖: 0
回复:【分享】关于MODBUS TCP V4.0 使用(二)客户端


只看楼主 只看精华 4楼 2016-08-03 09:24:22

这几天正在摸索,就看到这么牛的分享,太谢谢了


 
以下网友喜欢您的帖子:

  
奇侠

经验值: 7132
发帖数: 1022
精华帖: 2
回复:【分享】关于MODBUS TCP V4.0 使用(二)客户端


只看楼主 只看精华 5楼 2016-08-19 05:26:31
看完一,再看二受益匪浅啊!一直用的看产品,刚开始接触1200/1500,总之太感谢了
心有多远路就有多远
以下网友喜欢您的帖子:

  
新手

经验值: 37
发帖数: 5
精华帖: 0
回复:【分享】关于MODBUS TCP V4.0 使用(二)客户端


只看楼主 只看精华 6楼 2017-05-17 11:43:25

大神,我想请教下,如果我PLC作客户端,上位机做服务器,那我应该怎样在PLC里面作通讯正常的判断(服务器不添加任何程序的情况下),总后,大神可以把这二个例子文件发我一下嘛 1090056581@qq.com


 
以下网友喜欢您的帖子:

  
奇侠

经验值: 5143
发帖数: 117
精华帖: 2
回复:【分享】关于MODBUS TCP V4.0 使用(二)客户端


只看楼主 只看精华 7楼 2017-05-17 14:46:11

 PLC作客户端的指令模块输出有DONE;ERR信息可以用。


ztf
以下网友喜欢您的帖子:

  
  • 上一页
  • 1
  • 下一页
收起
【分享】关于MODBUS TCP V4.0 使用(二)客户端
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。