机型:S7-1200 1214C AC/DC/RLY(目前固件版本为V3.0)
软件版本:STEP7 Professional V13 SP1 Update9
说明:本博文是对西门子官方教程的补充:
MODBUS TCP V3 客户端
未详述的部分可在此文内查看。
PORTAL 配置
将S7-1200设做MODBUS TCP客户端,目前MODBUS库指令的最新版本为V4,但由于机型限制,只能使用V3版本。V3版本和V4版本的配置是有所区别的。
- 首先需要调用MB_CLIENT通信指令,调用时会自动生成背景DB 。
- 新建MB_DATA_PTR数据块,作为数据缓冲区,可以为DB块或M存储区。在其内部建立一个数组,用于在通信中存放数据。
缓冲区为数据块时需要选择“标准与S7- 300/400兼容” ,但实际上一些版本是没有这个选项的,只需要右键DB选择属性,去掉勾选“优化的块访问”,即可达到相同目的。
顺带一提,优化访问的块没有实际地址,所以只能符号寻址。必须去掉该选项,才能保持同例程的一致。
- 完成MB_CLIENT通信指令的填写。
图中左下角MB_DATA_PTR必须在创建数据块(并且不勾选优化的块访问)后输入数据才不会报错,填入格式为P#DB3.DBX0.0 WORD 20,不需要敲回车键。
在MB_CLIENT指令中,MB_MODE和MB_DATA_ADDR两个参数组合定义了当前Modbus消息中所用的功能代码;DATA_ADDR还决定了访问数据的起始地址;MB_DATA_LEN决定了数据访问的长度(位数或字数),接受的数据存放在缓冲区。
40001(有些是400001)前面的4并不代表实际数字,Modbus协议中的地址(规约中指的Starting Address)都是从0开始的。40001指的是Hold寄存器第0个,有时候还会写成4001或400001,它在协议中表示为低位0,高位0,40002在协议中为低位1,高位0。依次类推。
MODBUS SLAVE配置
Modbus Slave是从设备仿真器,在此处作为modbus服务器。
下载
在下载之前需配置PLC的IP地址,PLC的IP地址需要与电脑在同一子网。
可通过PROFINET通信口可以实现CPU与编程设备的通信。
编译硬件和软件后(若未编译,下载时也会自动编译),点击下载,在弹出的"扩展下载到设备"对话框中,设置PG/PC接口类型,并在"PG/PC接口"下拉选项中选择编程设备的网卡(此二者通常使用默认选项),点击"开始搜索"。
如果编程设备的IP地址和组态的PLC不在一个网段,会弹出“分配IP地址的选项框”,在弹出的对话框中分别点击"是"和"确定",可完成添加IP地址。
将工程下载进PLC,完成。
验证
在MODBUS SLAVE中填入测试用的变量值(需要预先创建数据块(并且不勾选优化的块访问)并进行编译)。
下载完成后,启动CPU,在portal中【转到在线】,点击【全部监视】,在监控表中可看到在SLAVE中设置的变量值。
参考资料
MODBUS TCP通信
MODBUS TCP V3 客户端
S7-1200项目的下载
Modbus测试工具ModbusPoll与Modbus Slave使用方法