[西门子] 使用PLCSIM Advanced仿真博途Modbus_TCP

[复制链接]
查看80171 | 回复0 | 2024-3-11 15:36:02 | 显示全部楼层 |阅读模式
上期说到仿真PID,这次来说说仿真Modbus_TCP。

使用方式请参见这一期文章

S7-PLCSIM Advanced使用入门


    创建两个PLC,一个为Client,客户端。一个为Server,服务器。如图一。



    图一

    此处为了方便记忆,取1511的IP地址为192.168.0.11。取1513的IP地址为192.168.0.13

    打开PLCSIM Advanced,创建两个PLC。如图二。



    图二

    Client端程序编写

    3.1_首先回到Client PLC中,在OB1中,拖入两个Modbus_TCP的块,并创建实例,分别用于读和写。如图三。





    图三

    3.2_创建一个DB块,分别用于读写指令的管脚处填写对应的参数,如图四。



    图四

    3.3_参数详细说明

    InterfaceId:硬件标识符,在系统常数中可以看到。

    ID:引用该连接的唯一ID。

    ConnectionType:连接类型,对于TCP,选择11,不可以使用其他类型

    ActiveEstablished:建立连接的方式所对应的 ID,对于主动连接建立,应选择 TRUE。

    RemoteAddress:连接伙伴(Modbus 服务器)的 IP 地址。

    RemotePort:远程连接伙伴的端口号。

    LocalPort:本地连接伙伴的端口号,可不填。

    详细可以参考F1帮助。

    3.4_引脚参数关联。将REQ等参数分配到引脚上,写好Modbus的读写寄存器的地址区。如图五。



    图五

    至此,Client已经完成,把程序下载到Client的PLC。

    Server端程序编写

    4.1_将Modbus_TCP的Server指令拖入程序段并创建实例,如图六。



    图六

    4.2_创建一个DB块,将Server指令所需的参数创建在DB块中。如图七。



    图七

    4.3_参数详细说明

    参见3.3,大部分都相同,唯一需要注意的就是ActiveEstablished为False,因为他是被动连接的、其次就是LocalPort,对于Client来说,他是远程端口,对于Server来说,他是本地端口,所以他的本地端口需要为333。如图七。

    其余参数详见F1帮助

    4.4_引脚参数关联,如图八。



    图八

    至此,Server已经完成,把程序下载到Server的PLC。

    仿真测试_Client写数据到Server

    将Write的REQ置1,此时Client的数据发送到Server,如图九_1-3。



    图九_1



    图九_2



    图九_3

    可以看到已经将数据从Client端发送到Server端。

    仿真测试_Client从Server读取数据

    将Read的REQ置1,将数据从Server读取到Client,,如图十_1-3。



    图十_1



    图十_2



    图十_3

    可以看到已经将数据从Server端读取到Client端

    数据区域问题

    Client的MB_DATA_ADDR的数据,一个是40001,一个是40011,分别读取和写入5个数据,那么服务器对应的MB_HOLD_REG的第一个就为40001,第十一个就为40011,所以是分别往这两个地方去读取和写入的。

    总结

    注意点1:客户端的“RemotePort”

    注意点2:服务器的“LocalPort”

    注意点3:MB_HOLD_REG地址

    注意点4:ActiveEstablished,客户端为1,因为客户端主动连接。服务器为0,因为服务器被动接受

    也可以使用Modbus_POLL或者Modbus_Slave等软件测试。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则