[西门子] Modbus RTU 通信教程连载(4)-从站的配置及编程

[复制链接]
查看22085 | 回复0 | 2024-8-10 19:49:09 | 显示全部楼层 |阅读模式
摘要

针对有朋友在易维通匠说提问的S7-1200与S7-200的Modbus通信问题,高级自动化工程师【北岛李工】编写系列技术文章对Modbus RTU通讯进行说明,希望对大家有帮助。北岛李工有丰富的PLC应用经验,工程师朋友们可进入工匠圈和李工多多交流。

来源:方正智芯

点击阅读原文,进入北岛李工的主页

今天这篇文章,我们来介绍从站S7-200 Smart的配置及编程。

本例程从站使用S7-200 Smart的CPU ST40,通信端口使用CPU模块本体的RS485接口,modbus地址为2。

打开编程软件STEP 7-Micro/WIN SMART,在指令库中找到文件夹“Modbus_RTU_Slave”,里面有两个指令:MBUS_INIT和MBUS_SLAVE,如下图:



令INIT用来初始化从站的地址、通信的波特率、存储器地址等相关信息。选中该指令将其拖放到主程序MAIN中,如下图:



该指令的相关参数含义见下面的表格:



注意:

1)MaxIQ用于设置modbus参数地址0xxxx与1xxxx对应的PLC的输出Q与输入I的地址,在S7-200 Smart中,最大可设置为256(不同类型的PLC该值不同)。当设置为0时,将禁用输入及输出的读写操作;

2)MaxAI用于设置modbus参数地址3xxxx对应的PLC的字输入寄存器的地址,也就是模拟量输入(AI)的地址。对于S7-200 Smart紧凑型CPU(CR20s、CR30s、CR40s、CR60s)而言,建议设置为0;其它标准型CPU,建议设置为56;

3)MaxHold用于设置modbus地址4xxxx或4yyyyy对应的PLC的保持存储区的大小,以字为单位。例如,如果要允许modbus主站访问2000个字节的从站V存储区,则MaxHold应设置为1000;

4)MBUS_INIT仅在CPU启动后的第一个扫描周期执行一次即可;如果更改通信参数,则重新再执行一次;

MBUS_INIT指令的完整代码如下图:



接下来我们将MBUS_SLAVE指令添加到主程序块中,并设置其参数如下图:



调用STEP 7 - Mciro/WIN SMART Instruction Library(指令库)需要分配库指令数据区(Library Memory)。库指令数据区是相应库的子程序和中断程序所要用到的变量存储空间。

MBUS_SLAVE指令库需要一个781个字节的全局 V 存储区。 分配方法如下:

右键单击“程序块”,在弹出的菜单中单击“库存储器”,如下图:



在弹出的库存储器分配对话框中,选择“Modbus RTU Slave”,如下图:



点击“建议地址”,系统会自动分配可用的V存储区作为库存储区。

李工的个人介绍




本帖子中包含更多资源

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

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

本版积分规则