logo资料库

西门子TCP的通讯方法.docx

第1页 / 共18页
第2页 / 共18页
第3页 / 共18页
第4页 / 共18页
第5页 / 共18页
第6页 / 共18页
第7页 / 共18页
第8页 / 共18页
资料共18页,剩余部分请下载后查看
描述了 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 重要声明: 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 帖子链接:http://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1314543&b_id=50&b_sid=0&s_id=0&num=2 相关推荐  【分享】关于 MODBUS TCP V4.0 使用(三)实际传输测试 【分享】关于 MODBUS TCP V4.0 的使用(一) MB 服务器  【求助】S7-1200 支持 Modbus TCP/IP 协议吗?
【求助】1200 做为 modbus TCP 客户端与笫三方进行通讯,通讯不上  【求助】两台 S7-1200 之间通过 Modbus TCP 指令通讯 【探讨】S7-1200 Modbus tcp 客户机与服务器读写的技巧问题探讨 yming 至圣 经验值: 64187 发帖数: 15193 精华帖: 545 客户端使用方法: 楼主 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 的程序。 yming 至圣 经验值: 64187 发帖数: 15193 精华帖: 545 客户端仿真模拟测试 楼主 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 服务器。服务器在这里相当于从站。它响应来自客户端的访问。 (我觉得不要再使用主站-从站的概念了。这里就是服务器-客户端的连接,是非常自由的。一台 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(服务器总是等着客户端连接)
分享到:
收藏