关于modbus rtu通讯调试过程的那些事2

已锁定

WWCWWC

西门子1847工业学习平台

  • 帖子

    9600
  • 精华

    161
  • 被关注

    1504

论坛等级:至圣

注册时间:2008-07-26

钻石 钻石 如何晋级?

关于modbus rtu通讯调试过程的那些事2

1995

4

2025-05-30 10:27:04

关于modbus rtu通讯调试过程的那些事2

  接上一个贴【关于Modbus rtu通讯调试过程的那些事1】,https://www.ad.siemens.com.cn/club/bbs/post_1950268_50_0_4.html#anch 说到采用调试软件调试Modbus rtu通讯,及基本步骤和方法。主要是利用串口调试软件主要是能够规避初次应用的用户,在调用通讯指令时可能性出现的错误,造成对用户的编程思想暂时困惑,本贴重新来说道说道Modbus rtu通讯中并不起眼的功能码问题。主要还是为了结合集中采集数据时,作为主站侧需要的是采用功能码方式向从站侧方式数据,而不是触发诸如MSG指令时填写的Addr和Count管脚那种方式。

功能码:

关于Modbus rtu通讯中的功能码,如果不使用调试软件或者通讯调用的是库指令,用户基本上不需要理解这个问题,通讯调用库指令时,通讯指令的管脚并没有对功能码有明确的规范要求,而只需理解Addr(数据区)和Count(数据长度)管脚含义即可。常用的读、写寄存器功能码有:03、06、16。

功能码03:读取一个或者多个数据。

读取从站寄存器数据,串口调试软件发送编辑区发送:Hex 05 03 00 00 00 02

05:从站地址;5#从站

03:读取从站数据的功能码;读取

00 00:寄存器地址; 从寄存器开始地址读取

00 02:读取寄存器数据的长度,2个字,此处相当于一个浮点数。

数据发送到s7-1200,读取5#从站寄存器起始的第一个浮点数数据,图示;

S7-1200返回的第一个寄存器数据,图示:

 

串口调试软件接收数据区接收到Hex 05 03 04 3F 80 00 00 B2 0F

其中,

05表示是读取到的数据发送自5#从站;

03表示读取从站的功能码;

04表示读取的数据4个字节长度;

3F 80 00 00表示读取到的有效数据;

B2 0F表示读取数据的校验码。

多个数据读取,上一个帖子有例子,也就是上面00 02读取数据长度的变化。

功能码06:单个寄存器数据写入。

写入从站寄存器数据,串口图示软件发送比较区,写入Hex 05 06 00 00 FF FF数据,

05表示写入到5#从站;

06表示写的功能码;

00 00表示写入的寄存器开始地址,是从第0个字开始的;

FF FF表示写入的数据数值。

由串口图示软件向s7-1200从站寄存器第0个寄存器写了数据FF FF,图示:

发送数据后,s7-1200的寄存器到第0个数据,DB3.DBW0的数据由Hex 3F 80 变为Hex FF FF ,图示:

 

Hex FF FF数据被写入DB3.DBW0中。

  目前暂时只用到这些功能码,实际上其它功能码按注释理解也是容易的,思想上的理解结合实际的测试很容易上手了的。


关于modbus rtu通讯调试过程的那些事2 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1200系列

共有15809条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。