西门子CM PtP RS422/485 BA 6ES7 540-1AB00-0AA0 实现MODBUS RTU主站通信

已锁定

不欲勿施

  • 帖子

    842
  • 精华

    14
  • 被关注

    266

论坛等级:奇侠

注册时间:2009-03-27

钻石 钻石 如何晋级?

西门子CM PtP RS422/485 BA 6ES7 540-1AB00-0AA0 实现MODBUS RTU主站通信

17944

54

2021-01-01 17:50:55


一、   概述

本文描述的程序文件可以在西门子CM PtP RS422/485 BA 6ES7540-1AB00-0AA0通信模块实现MODBUS RTU 主站通信。

本程序特点:

1.     实现MODBUS RTU 功能号1、2、3、4、5、6、15、16。

2.     支持单台CPU下多台通信模块,一台通信模块使用一套程序,互不干扰。

3.     可单条或多条 轮询指令 离线,即从站掉电,可手动让其离线,减少轮询时间。

4.     可控制每条指令间的时间间隔。

5.     程序量再大也不必担心CPU扫描时间,因为未运行的指令会跳过。

6.     每条指令单独返回错误信息。

7.     不必担心程序块和数据块多,支持多重背景。

8.     程序组态直观,简单,方便,灵活。

9.    指令内集成端口配置指令,发送和接收配置指令,外部只需简单参数即可。

10.  在冗余系统上使用通过。

二、   硬件网络施工

关于通信网络施工,尽量选择西门子485紫皮电缆,你胡弄网络,网络就胡弄你,所以质量可靠的硬件是保证通信正常的前提。若通信线路过长,请使用RS485中继器,但请不要西门子RS485中继器,因为不支持MODBUS通信。具体接线方式请查阅相关资料。

CM PtP RS422/485 BA接线图:下表显示了 CM PtP RS422/485 BA 前面板上 15 针 sub-D 型插槽的针脚分配。

三、   硬件组态

现以CM PtP RS422/485 BA为例进行硬件组态说明

1.     添加CM PtP RS422/485 BA到机架,如图:

2.     在CM PtP RS422/485 BA对象属性中配置485接口操作模式。

3.     端口组态:协议选择自由口。端口参数根据需要进行修改。注意:受到硬件模块限制传输率最高只能设置为:9600bits/s。

4.     帧结束检测设置。选择在字符延时时间到达后40位时间 (4ms)就完成报文

5.     记下这里的地址,编程时需要用到。

四、      程序说明及使用方法

1.     您得到的程序如图:

这是由TIA V16归档后文件,打开TIA V16后,打开此文件,会提示新建文件夹,恢复后会看到项目已经打开。

2.     程序工作原理

3.     程序块功能说明:

MbusPointerDB1:用户数据块。可以是单个数据块,也可以是多个数据块。从站返回的数据保存在这个数据里,向从站写入的数据也在这个数据块里。

MbusBufferDB1:缓冲区数据块。一个缓冲区数据块对应一个串口。将要发送的数据在这里进行校验操作,接收回的数据同样在这里校验操作。

MBrtuMasterMsg:主站轮询指令功能块。可以单个块运行,也可以多个块轮流运行。根据输入参数决定把哪些用户数据放入缓冲区数据块,再将从站返回数据放回用户数据块。注意:同一时刻只允许一个主站轮询指令工作,否同返回06错误。

MBrtuMasterCrtl:主站通信控制功能块。一个通信控制功能块对应一个串口。主要功能为发送和接收与从站的通信的报文。

4.     功能块参数说明

MBrtuMasterCrtl

MBTcpMasterCtrl

名称类型数据类型说明允许值,说明
CpuHWIDINPUTHW_SUBMODULECPU硬件标识符 设备组态》CPU》系统常数》名称:Local类型:Hw_SubModule的硬件标识符
PROTINPUTHW_SUBMODULE通信模块硬件标识符 设备组态》通信模块》系统常数》硬件标识符
SendTimeINPUTTIME指令与指令之间的通信间隔时间值可以很大,但没有必要
RcvTimeOutINPUTTIME接收信息时的超时时间,通常为1S值可以很大,但没有必要
MbusBufferDBNumberINPUTDIntMODBUS缓冲区数据块号如:DINT#3000
MbusBufferINPUTVariantMODBUS缓冲区指针如:"MbusBufferDB1".Buffer
LicenseOUTPUTBOOL授权
WorkingSlaveOUTPUTUInt正在与从站通信的从站地址可能值为1到247
DoneOUTPUTBOOL完成标志位指令完成后,一直为真

MBrtuMasterMsg


名称类型数据类型说明允许值,说明
InstructionActiveINPUTBOOL真为激活指令,假为不激活指令
NewRequestINPUTBOOL读写请求位每一个新的读写请求必须使用脉冲触发
SlaveINPUTINT从站地址1到247
ReadWriteINPUTINT0=读,1=写

1. 开关量输出和保持寄存器支持读和写功能

2. 开关量输入和模拟量输入只支持读功能
AddrINPUTDINT读写从站的数据地址

选择读写的数据类型

00001 至 0xxxx - 开关量输出

10001 至 1xxxx - 开关量输入

30001 至 3xxxx - 模拟量输入

40001 至 4xxxx - 保持寄存器

400001 至 465535 - 保持寄存器
CountINPUTINT数据个数

通讯的数据个数(位或字的个数)

Modbus主站可读/写的最大数据量为120个字(是指每一个 MBrtuMasterMsg 指令)
MbusBufferDBNumberINPUTDINTMODBUS缓冲区数据块号如:DINT#3000
MbusPointerDBNumberINPUTDINTMODBUS读写数据块号如:DINT#2000
MbusPointerByteINPUTINT用户数据块字节地址

1. 如果是读指令,读回的数据放到数据区这个字节开始的区域中

2. 如果是写指令,要写出的数据从这个字节开始的数据区取出
DoneOUTPUTBOOL完成位此位为脉冲信号,需要保持信号,用户自行加起保停程序,完成位为启动,读写请求位为停止即可。
BUSYOUTPUTBOOLBUSY = 1:作业尚未完成。BUSY = 0:作业完成
ErrorOUTPUTINT通信错误

0无错误

3接收超时

4输入参数错吴

5 Modbus未激活

6忙,正在处理其它请求

7接收的数据CRC校验错误

8接收的数据长度与预长长度不符

9发送指令出错

10发送出错

11接收出错

12接收数据时出错

14指令未启用

15签名不匹配

101从站不支持请求的功能

102从站不支持数据地址

103从站不支持此种数据类型

104从站设备故障

105从站接收的信息,但响应被延迟

106从站忙,拒绝了该消息

107从站拒绝了消息

108从站存储器奇偶错误


MbusSendStatusOUTPUTWORD发送指令状态及错误见发送指令规范
MbusRevStatusOUTPUTWORD接收指令状态及错误发接收指令规范

MbusBufferDB

缓冲区数据块是一个400(不可小于400)个字节数据块,可以复制,可改符号,可改绝对地址

MbusPointerDB

用户数据块用户可自行定义,无要求。

五、      程序注意

符号地址和绝对地址都可更改。

当功能号为5时,用户数据块的字节地址的第0位有效。

当功能号为1,2,15时,用户数据块的字节地址的从第0位开始有效。

程序无法在仿真器内工作。

六、      程序高级应用

1.当有多台从站执行相同操作时,如读取相同数据寄存器。这时可将指令的完成位连接到读写请求位,将从站地址和用户数据块字节号做成变量,使用完成位改变这两个变量,就可以实现单指令轮询多主站。

2.当用通信控制设备启停等操作时,或多从站时快速刷新单个从站数据时,要求响应时间快一些,而有些程序没有这方面考虑。本程序在应对此方面可以将单一轮询指令的激活位置真,其它指令置假(用上升沿,仅一个扫描即可),这时不管其它指令在什么状态都会将串口使用权让出,优先让激活的指令运行。



西门子CM PtP RS422/485 BA 6ES7 540-1AB00-0AA0 实现MODBUS RTU主站通信 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1500系列

共有8641条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

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