0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

西门子PLC如何使用Modbus 485通讯传输接收数据

工控论坛 ? 来源:电子开发网 ? 2025-08-19 13:52 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

前言

西门子在 STEP 7-Micro/WIN SMART 中正式推出 Modbus RTU 主站协议库(西门子标准库指令)。使用 Modbus RTU 主站指令库,可以读写 Modbus RTU 从站的数字量、模拟量 I/O 以及保持寄存器,从而实现PLC通过modbus方式控制其他器件。

提示:以下是本篇文章正文内容,下面案例可供参考

一、准备工作

电脑

S7-200smart st30

485通讯线

说明:这里将以S7-200smart作为主站,电脑串口调试助手作为从站。做操作演示。

此处省略接线。

二、写梯形图

1.MBus_CTRL

1. 调用 Modbus RTU 主站初始化和控制子程序

使用 SM0.0 调用 MBUS_CTRL 完成主站的初始化,并启动其功能控制:

60e133d2-7aaa-11f0-a18e-92fbcf53809c.png


图 2. 用 SM0.0 调用 Modbus RTU 主站初始化与控制子程序

各参数意义如下:

a. EN 使能: 必须保证每一扫描周期都被使能(使用 SM0.0)
b. Mode 模式: 为 1 时,使能 Modbus 协议功能;为 0 时恢复为系统 PPI 协议
c. Baud 波特率: 支持的通讯波特率为1200,2400,4800,9600,19200,38400,57600,115200。
d. Parity 校验: 校验方式选择
0=无校验(通常默认选择0)
1=奇较验
2=偶较验
e. Port 端口号: 0 =CPU集成的 RS 485 通讯口 ; 1 = 可选CM 01信号板 。
f. Timeout 超时: 主站等待从站响应的时间,以毫秒为单位,典型的设置值为 1000 毫秒(1 秒),允许设置的范围为 1 - 32767。
注意:这个值必须设置足够大以保证从站有时间响应。
g. Done 完成位: 初始化完成,此位会自动置1。
h. Error 有错误

1.MBus_MSG

调用 Modbus RTU 主站读写子程序MBUS_MSG,发送一个Modbus 请求;

60efa9da-7aaa-11f0-a18e-92fbcf53809c.png

各参数意义如下:

a. EN 使能: 同一时刻只能有一个读写功能(即 MBUS_MSG)使能
注意:建议每一个读写功能(即 MBUS_MSG)都用上一个 MBUS_MSG 指令的 Done 完成位来激活,以保证所有读写指令循环进行(见例程)。
b. First 读写请求位: 每一个新的读写请求必须使用脉冲触发
c. Slave 从站地址: 可选择的范围 1 - 247
d. RW 读写请求: 0 = 读, 1 = 写
e. Addr 读写从站的 选择读写的数据类型
数据地址: 00001 至 0xxxx - 数字量输出
10001 至 1xxxx - 数字量输入
30001 至 3xxxx - 模拟量输入
40001 至 4xxxx - 保持寄存器
f. Count 数据个数 通讯的数据个数(位或字的个数)
注意:Modbus主站可读/写的最大数据量为120个字(是指每一个 MBUS_MSG 指令)
g. DataPtr 数据指针: 1. 如果是读指令,读回的数据放到这个数据区中 2. 如果是写指令,要写出的数据放到这个数据区中
h. Done 完成位 读写功能完成位
i. Error 错误代码: 只有在 Done 位为1时,错误代码才有效
0 = 无错误
1 = 响应校验错误
2 = 未用
3 = 接收超时(从站无响应)
4 = 请求参数错误(slave address, Modbus address, count, RW)
5 = Modbus/自由口未使能
6 = Modbus正在忙于其它请求
7 = 响应错误(响应不是请求的操作)
8 = 响应CRC校验和错误
101 = 从站不支持请求的功能
102 = 从站不支持数据地址
103 = 从站不支持此种数据类型
104 = 从站设备故障
105 = 从站接受了信息,但是响应被延迟
106 = 从站忙,拒绝了该信息
107 = 从站拒绝了信息
108 = 从站存储器奇偶错误

三、使用难点与解答

通常支持485通讯的器件给的使用说明书,给的指令是16进制的字符串代码。很难与当前PLC库指令对应起来,尤其是命令地址。我们以IAI马达给的使用说明书为例子。如图所示:

6104840e-7aaa-11f0-a18e-92fbcf53809c.png

610f523a-7aaa-11f0-a18e-92fbcf53809c.png

6139a81e-7aaa-11f0-a18e-92fbcf53809c.png

该示例是PLC通过modbus去读取马达的位置。读取控制器地址9000这个寄存器里面的数据

RW填0,表示去读取数据。

Plc库里面需要填的Addr(e)是十进制,需要将16进制的9000转成十进制。

通过计算器得知:16#9000=36864

注意事项:这里博主也比较奇怪,实际使用读取寄存器地址的时候需要+1,36865

不知道有没有人可以解释一下的。

61488c08-7aaa-11f0-a18e-92fbcf53809c.png

由于这里是读取寄存器,所以Addr=436865.

61544e30-7aaa-11f0-a18e-92fbcf53809c.png

count是寄存器数量:按照示例,这里有2个寄存器。所以count填2

通过串口调试助手来测试一下:接通M15.0发送信号,串口调试助手收到了PLC发送的信号。且可以看到收到的数据与IAI操作手册示例一致。测试成功

615fbc0c-7aaa-11f0-a18e-92fbcf53809c.png

以上是通过modbus读取的示例。

注意事项:

1、只有在操作就被控方寄存器的时候(无论读取还是写入),转换的成十进制的地址后第一位需要加个4

2、注意发送命令和读取命令的字符长度,需要正确填写

3、需要注意波特率要填写正确,与被控方保持一致。否则发出去的信号与收到的信号不相符

4、发出去的内容填写到DataPtr中。

6170162e-7aaa-11f0-a18e-92fbcf53809c.png

此处我们再来解读plc的这个命令就比较清晰了:

通过MB_MSG,向1号从站读取从36865(Addr)这个地址开始2位(Count)的数据,并把读取到的数据写入VB2000

如果是写入:通过MB_MSG,将PLC的VB2000开始的2位寄存器内的数据,写入到1号从站的36865寄存器中。

来源:电子开发网。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • plc
    plc
    +关注

    关注

    5037

    文章

    14101

    浏览量

    476756
  • 西门子
    +关注

    关注

    98

    文章

    3197

    浏览量

    118638
  • MODBUS
    +关注

    关注

    28

    文章

    2193

    浏览量

    80152

原文标题:西门子PLC S7-200 smart如何使用Modbus 485通讯传输接收数据_200smart modbus

文章出处:【微信号:gkongbbs,微信公众号:工控论坛】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    运用西门子PLC通过Modbus RTU采集YGWE通讯数据

    本案例控制的是YGWE冷却系统。系统主PLC选用西门子CPU,通过Modbus转Profinet网关采集YGWE通讯数据
    的头像 发表于 08-19 19:50 ?2856次阅读
    运用<b class='flag-5'>西门子</b><b class='flag-5'>PLC</b>通过<b class='flag-5'>Modbus</b> RTU采集YGWE<b class='flag-5'>通讯</b><b class='flag-5'>数据</b>

    西门子S7-200PLC西门子变频器MM440通讯程序实例

    西门子S7-200PLC西门子变频器MM440通讯程序实例
    的头像 发表于 05-04 09:54 ?5989次阅读
    <b class='flag-5'>西门子</b>S7-200<b class='flag-5'>PLC</b>与<b class='flag-5'>西门子</b>变频器MM440<b class='flag-5'>通讯</b>程序实例

    三菱PLC西门子PLCMODBUS RTU通信实例

    三菱PLC西门子PLCMODBUS RTU通信实例介绍走modbus ut通讯
    发表于 06-08 15:13 ?157次下载

    西门子S7-1200-PLC-Modbus通讯实例

    西门子S7-1200-PLC-Modbus通讯实例免费下载。
    发表于 04-21 14:46 ?117次下载

    西门子-PLC-通讯线RS485接线图

    西门子-PLC-通讯线RS485接线图说明。
    发表于 04-21 15:22 ?78次下载

    西门子S7-200 Modbus RTU master指令与VLT2800通讯调试说明

    西门子S7-200 Modbus RTU master指令与VLT2800通讯调试说明。
    发表于 04-25 09:53 ?39次下载

    西门子modbus通讯

    西门子modbus通讯样例
    发表于 03-14 14:41 ?0次下载

    运用西门子PLC通过Modbus RTU采集YGWE通讯数据案例

    本案例控制的是YGWE冷却系统。系统主PLC选用西门子CPU,通过Modbus转Profinet网关采集YGWE通讯数据
    发表于 08-20 09:32 ?3次下载

    微硬创新RS485 MODBUS转PROFINET网关PNMD485-K20连接西门子PLCMODBUS设备配置案例

    RS485 MODBUS转PROFINET网关配置步骤,该PLC系统使用的是西门子S7-1200 PLC,支持 PROFINET 工业以太网
    的头像 发表于 12-09 09:09 ?1937次阅读
    微硬创新RS<b class='flag-5'>485</b> <b class='flag-5'>MODBUS</b>转PROFINET网关PNMD<b class='flag-5'>485</b>-K20连接<b class='flag-5'>西门子</b><b class='flag-5'>PLC</b>和<b class='flag-5'>MODBUS</b>设备配置案例

    Profinet转Modbus485网关将探测器接入到西门子1200PLC

    Profinet转Modbus485网关将IAQM多功能空气质量探测器接入到西门子1200PLC中,本案例介绍的是用耐用通信Profinet转Modbus485网关将日本理化CD/CH
    发表于 04-04 14:36 ?4次下载

    西门子PLC通讯知识汇总

    西门子 200 plc 使用 MPI 协议与组态王进行通讯时需要哪些设置?
    的头像 发表于 05-06 10:35 ?2467次阅读
    <b class='flag-5'>西门子</b><b class='flag-5'>PLC</b><b class='flag-5'>通讯</b>知识汇总

    西门子1200PLC之间的ModbusTCP通讯如何实现?

    西门子1200PLC通过以太网通讯与其它设备进行数据交互,西门子1200PLC可以和
    发表于 07-30 14:49 ?1.2w次阅读
    <b class='flag-5'>西门子</b>1200<b class='flag-5'>PLC</b>之间的ModbusTCP<b class='flag-5'>通讯</b>如何实现?

    西门子1200PLC西门子1500PLC的ModbusRTU通讯

    在现代化高度集成工业中,经常用到PLCPLC之间的通讯,常见的通讯modbus,profibus DP,profinet ,CANOPEN
    的头像 发表于 08-23 09:15 ?6920次阅读
    <b class='flag-5'>西门子</b>1200<b class='flag-5'>PLC</b>和<b class='flag-5'>西门子</b>1500<b class='flag-5'>PLC</b>的ModbusRTU<b class='flag-5'>通讯</b>

    如何破解三菱PLC西门子PLC通讯难题

    在工业自动化领域,不同品牌PLC之间的通讯一直是工程师们关注的焦点。三菱PLC西门子PLC作为市场主流设备,常因协议差异导致
    的头像 发表于 06-09 17:14 ?433次阅读
    如何破解三菱<b class='flag-5'>PLC</b>与<b class='flag-5'>西门子</b><b class='flag-5'>PLC</b>的<b class='flag-5'>通讯</b>难题

    三菱PLC西门子PLC如何实现485通讯

    在工业自动化领域,不同品牌PLC之间的通信一直是工程师们关注的焦点。本文将深入探讨兴达易控Modbus RTU转Profinet网关(XD-MDPN100)在三菱PLC西门子
    的头像 发表于 06-07 15:46 ?466次阅读
    三菱<b class='flag-5'>PLC</b>与<b class='flag-5'>西门子</b><b class='flag-5'>PLC</b>如何实现<b class='flag-5'>485</b><b class='flag-5'>通讯</b>?