MODBUS TCP服务器

yming

西门子1847工业学习平台

  • 帖子

    23182
  • 精华

    881
  • 被关注

    1253

论坛等级:至圣

注册时间:2004-03-06

钻石 钻石 如何晋级?

发布于 2016-07-31 17:13:36

2楼

首先做个MODBUS TCP服务器。服务器在这里相当于从站。它响应来自客户端的访问。

(我觉得不要再使用主站-从站的概念了。这里就是服务器-客户端的连接,是非常自由的。一台PLC既可以是服务器,也可以同时作为客户端;既可以“安装”一个服务器,也可以“安装”多个服务器;可以通过以客户端身份汇总;以服务器身份响应转发给任意客户端。)

首先,插入一个新PLC(我用个最便宜的S7 1211 V4.1;新的固件)

图1

设置IP地址和路由网关。



图2

为了测试传输性能,启用时钟字节。因为这里没有用到掉电保持,选用MB0。用它来模拟数字端口的变化。



图3


在这个PLC上做两个服务器,一个用于客户端读取;一个用于客户端写入。

首先,插入个FC(取个名字,MB_Read1),然后从右侧指令树通讯-其他拖入MB_SERVER.



图4


其次准备好MB_SERVER功能的一些数据块。

1、连接数据快CONNECT DB。注:新版将所有要用到的连接数据参数都整合在一起了,可以方便地集中修改。

建立个DB(优化的)取名CONNECT_RWDB;为客户端读做个连接1.(取名ReadCon1,在数据类型中直接输入TCON_IP_v4,回车)



图 5


连接ID选一个没有被使用的连接号,

连接类型固定为11(16#0B)

主动连接ActiveEstabilished=false(服务器总是等着客户端连接)

远程连接地址IP,如果你要指定固定的客户端来访问,就输入它的IP地址,我这里全为零,就是服务器会响应任意客户端连接访问。

远程端口号RemotePort: 作为服务器不需要这个参数=0既可

本地端口LocalPort:标准的;预留给ModBus 的端口号是502。但是,如果你没有使用WEB(80端口);没有使用Mail(25端口)没有使用S7等通讯,所有端口号都是可以使用的。所以,下一个添加的MB服务器就使用503;以此类推。这样,当客户端要访问这个读服务器就是IP地址:502;要连接写服务器就是IP地址:503;所有服务器都是可以并发(被同时)连接的。

其中,interfaceid要看一下接口的硬件标识符

图6

2、建立一个用于读写的保持寄存器DB,因为用到指针,该DB要求是(非优化的)标准DB。

你可以将读写数据分别放在不同的DB中,也可以放在一起。



图7

3、建立一个用于功能块输出的DB。可以自己建立个数据类型"MB_OutSta"



图8

4、将参数拖到功能块的IO位置,如图:



图9


5、最后简单地写一下主程序,调用MB_Read1(FC1)


至此,MODBUS TCP服务器就写完了。


学而时习之,不亦说乎?温故而知新,不亦乐乎?
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1200系列

共有15208条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。