S7-200 SMART Modbus TCP客户端与服务器如何编程及通信过程

step7-micro/win smart 从v2.4 版本开始,软件中直接集成 modbus tcp 库指令,无需单独安装或者购买。安装软件后,modbus tcp 指令位于 step7-micro/win smart 项目树中“指令”文件夹的“库”文件夹中。如图1.modbus tcp库指令所示。
指令分为客户端和服务器两种,目前指令版本为 v1.0。客户端指令会占用开放式用户通信资源主动连接,最多8个;服务器指令会占用开放式用户通信资源的被动连接资源,最多也是8个。
图1.modbus tcp库指令
实验环境及通信任务 下面以两台s7-200 smart 之间进行modbus tcp 通信为例,详细阐述客户端与服务器侧如何编程及通信的过程。具体的实验环境见表1.;通信任务见表2:
表1.实验环境
操作系统
win7 sp1 专业版 64位
编程软件 step7-micro/win smart v2.4版本
硬件 sr60:6es7288-1sr60-0aa0 固件:v2.4 版本
st20:6es7288-1st20-0aa0 固件:v2.4版本
交换机:csm 127 6gk7 277-1aa10-0aa0
表2.通信任务
硬件 通信角色 ip地址 端口号 读/写 数据区域
sr60 客户端 192.168.0.60 0 读 vb20-vb31
st20 服务器 192.168.0.20 502 响应 vb0-vb11
客户端侧指令编程 1、系统块中设置客户端的ip地址,以确保ip地址设置无误。此步骤为可选,如果确定ip地址设置无误,可忽略此步骤。设置方法如图2.所示。
图2.系统块设置ip地址
2、鼠标点击 main 主程序的程序段1的编程区域,从库文件夹下找到 modbus tcp 客户端指令 mbus_client,鼠标双击,指令出现在程序段1中,操作如图3.所示。
图3.添加客户端指令
3、填写客户端指令参数,如图4.所示。
图4.填写客户端参数
程序块具体参数详细解释介绍见表3.
参数及类型 数据类型 说明
req in bool =1:表示向服务器发送modbus 请求
connect in bool =1:尝试与分配的ip地址及端口号建立连接;
=0:尝试断开已经建立的连接,忽略req的任何请求
ipaddr1-4 in byte 填写 modbus tcp 服务器的ip地址ipaddr1-4为高到低字节
ip_port in byte 填写modbus tcp 服务器的端口号
rw in byte 指定操作模式 =0:读;=1写
addr in dword 要进行读写的参数的 modbus 起始地址
count in int 要进行读写的参数数据长度;
数字量输入/输出count=1表示1 bit,最大1920位
对于模拟量输入和保持寄存器,最大 count 值为 120 字。
dataptr in_out dword 数据寄存器地址指针,指向本地用于读/写操作的数据地址区域的首地址
done out bool true:以下任一条件时为真:客户端已与服务器建立连接;客户端已与服务器断开连接;客户端已接收 modbus 响应;发生错误
false:客户端正忙于建立连接或等待来自服务器的 modbus 响应。
error out bool 出现错误,仅一个周期有效
4、鼠标选中程序块文件夹,单击右键,下拉菜单中选择库存储器,如图5.所示。
图5.点击库存储器
5、在库存储区分配对话框中手动输入存储区的起始地址。此实例为vb5000开始,以使指令库可以正常工作。确保库存储区与程序中其他已使用的地址不冲突。使用建议地址无法确定是否有地址重叠,所以推荐手动输入正确的库存储区首地址。如图6.所示。
图6.库存储区地址分配
6、编译项目,下载程序。
通信测试结果 将m0.0置位为1,然后在状态图表中创建变量,vw20-vw30 共6个字,监视值如图7.所示。
图7.读取服务器数据
关于modbus地址与cpu中数据区域地址对应关系说明 s7-200 smart 做 modbus tcp 通信,可以支持的功能码及功能描述及所占用的地址区,如表4.所示。客户端会主动的发送请求,服务器响应。在通信指令填写参数中没有直接填写功能码,而是通过多个参数填写共同确定功能码的。
表4.功能码概况说明
功能码(十进制) 功能描述 rw addr count cpu地址
01 读数字量输出 位
0
00001-09999
1-1920 位
q0.0-1151.7
02 读数字量输入 位
0
10001-19999
1-1920 位
i0.0-1151.7
03 读寄存器 字
0
40001-49999
400001-465535
1-120 字
v区
04 读模拟量输入 字
0
30001-39999
1-120 字
aiw0-aiw110
05 写数字量输出 单个位
1
00001-09999
1位
q0.0-q1151.7
06 写寄存器 单个字
1
40001-49999
400001-465535
1个字
v区
15 写数字量输出 多个位
1
00001-09999
1-1920 位
q0.0-1151.7
16 写寄存器 多个字
1
40001-49999
400001-465535
1-120 字
v区
举例:
和modbus tcp服务器交换数据参数支持功能码:03,在客户端指令中设置两个参数确定03功能码:
rw=0:确定读取数据,(筛选出可能会使用的功能码:01,02,03,04),
addr:40001-49999/400001-465535,表示交换数据为寄存器类型的数据。


电动汽车中的高压线束
骨传导式蓝牙耳机哪个牌子好,最好的骨传导耳机音质排行榜
沃尔玛在美国50多家店开始测试超市机器人
Vection收购AR/VR设计平台 为设计师提供完全在VR中创建产品的可能
Xilinx发布Vivado 2015.1版加速系统验证
S7-200 SMART Modbus TCP客户端与服务器如何编程及通信过程
瑞丰光电荣获友达苏州“供应链贡献奖”称号
到2020年,全球机器人技术和无人机支出将达到1287亿美元
ZETag云标签让仓库资产管理更高效
NVMe厂商Excelero获得西部数据注资
七天物联网智能家居实战学习笔记(二)
NVIDIA GTX 1060拆解评测:供电接口亮了!
硬件怎样为打造智慧社区出力
中国联通今年将对局端10G PON进行规模部署2020年将进一步扩大范围
致远测评工作室:投影仪好用吗?国产投影仪品牌排行榜
RFID技术在军事后勤上有什么可以大展拳脚的
温补晶振有什么特性呢
没有重要的基础设施,5G无法起飞
计算机通信与网络v2 实验课程(5)
阿里自主研发人工智能芯片 神经网络芯片Ali-NPU性价比如何