您好!欢迎光临工博士商城

西门子PLC专卖

产品:6824    
联系我们
您当前的位置:首页 » 新闻中心 » 西门子PLC-- 新升级6ES7 540-1AB00-0AA0 实现MODBUS RTU主站通信
产品分类
新闻中心
西门子PLC-- 新升级6ES7 540-1AB00-0AA0 实现MODBUS RTU主站通信
发布时间:2021-08-11        浏览次数:2234        返回列表
  新增特点:

1、不需要在端口界面上进行硬件组态,指令中集成了Port_Config、Send_Config、Receive_Config,通信指令的输入脚就可以进行端口组态。

2、指令的错误代码更加规范。

3、增加MBrtuMastrer1500Manual说明块

4、除例程外,还制做了项目库、全局库

一、   概述

本文描述的程序文件可以在西门子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 型插槽的针脚分配。

 

 

三、      程序说明及使用方法

  1.      您得到的程序如图:

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

2.     程序工作原理

3.     程序块功能说明:

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

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

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

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

4.     功能块参数说明

MBrtuMaster1500Crtl

 

名称 类型 数据类型 说明 允许值,说明
iCpuHWID Input HW_SUBMODULE CPU硬件标识符 设备组态》CPU》系统常数》名称:Local类型:Hw_SubModule的硬件标识符  
iProt Input HW_SUBMODULE 通信模块硬件标识符 设备组态》通信模块》系统常数》硬件标识符  
iBaud Input UInt

端口数据传输速率

1 = 300 bps,

2 = 600 bps,

3 = 1200 bps,

4 = 2400 bps,

5 = 4800 bps,

6 = 9600 bps,

iParity Input UInt 端口的奇偶校验

1 = 无奇偶校验,2 = 偶校验,

3 = 奇校验,

4 = 传号校验,

5 = 空号校验,

6 = 任意

iSendTime Input Time 发送前定时时间 值可以很大,但没有必要
iRcvTimeOut Input Time 接收信息超时时间 值可以很大,但没有必要
iBufferDBNumber Input UDInt MODBUS缓冲区数据块号 如:UDINT#3000
iBuffer Input Variant MODBUS缓冲区指针 如:"MBrtuMaster1500BufferDB1".Buffer
qLicense Output Bool 授权  
qDone Output Bool 初始化完成标志位 指令完成后,一直为真
qWorkingSlave Output UInt 正在与从站通信的从站地址 可能值为1到247
qWortConfigStatus Output Word 组态PtP端口状态 详见Port_Config指令帮助
qSendConfigStatus Output Word 组态PtP发送方状态 详见Send_Config指令帮助
qReceiveConfigStatus Output Word 组态PtP接收方状态 详见Receive_Config指令帮助

MBrtuMaster1500Msg

名称 类型 数据类型 说明 允许值,说明
iInstructionActive Input Bool 真为激活指令,假为不激活指令  
iNewRequest Input Bool 读写请求位 每一个新的读写请求必须使用脉冲触发
iSlave Input USInt 从站地址 1到247
iReadWrite Input USInt 0=读,1=写

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

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

选择读写的数据类型

00001 至 0xxxx - 开关量输出

10001 至 1xxxx - 开关量输入

30001 至 3xxxx - 模拟量输入

40001 至 4xxxx - 保持寄存器

400001 至 465535 - 保持寄存器
iCount Input UInt 数据个数

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

Modbus主站可读/写的***大数据量为120个字(是指每一个 MBrtuMasterMsg 指令)
iBufferDBNumber Input UDInt MODBUS缓冲区数据块号 如:UDINT#3000
iPointerDBNumber Input UDInt MODBUS读写数据块号 如:UDINT#2000
iPointerByte Input UInt 用户数据块字节地址

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

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

错误规范

0000 命令完成没有错误

7000 指令未执行

7001 指令开始工作

9003 接收超时

9004 输入参数错误

9005 Modbus未激活

9006 忙 其它指令在工作

9007 功能号不符

9008 CRC校验错误

9009 本指令未启用

900A 发送错误

900B 发送超时

900C 接收错误

900D 接收的数据长度与预计长度不符

900E 签名错误

91XX 从站返回的错误

qSendStatus Output Word 发送指令状态及错误 见发送指令规范
qRevStatus Output Word 接收指令状态及错误 发接收指令规范

 

MBrtuMaster1500BufferDB1

非优化数据块。缓冲区数据块是一个400(不可小于400)个字节数据块,可以复制,可改符号,可改***地址

 

MBrtuMaster1500PointerDB1

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

 

五、      程序注意

符号地址和***地址都可更改。

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

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

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

 

 

六、      程序高级应用

 

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

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

  新增特点:

1、不需要在端口界面上进行硬件组态,指令中集成了Port_Config、Send_Config、Receive_Config,通信指令的输入脚就可以进行端口组态。

2、指令的错误代码更加规范。

3、增加MBrtuMastrer1500Manual说明块

4、除例程外,还制做了项目库、全局库

一、   概述

本文描述的程序文件可以在西门子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 型插槽的针脚分配。

 

 

三、      程序说明及使用方法

  1.      您得到的程序如图:

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

2.     程序工作原理

3.     程序块功能说明:

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

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

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

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

4.     功能块参数说明

MBrtuMaster1500Crtl

 

名称 类型 数据类型 说明 允许值,说明
iCpuHWID Input HW_SUBMODULE CPU硬件标识符 设备组态》CPU》系统常数》名称:Local类型:Hw_SubModule的硬件标识符  
iProt Input HW_SUBMODULE 通信模块硬件标识符 设备组态》通信模块》系统常数》硬件标识符  
iBaud Input UInt

端口数据传输速率

1 = 300 bps,

2 = 600 bps,

3 = 1200 bps,

4 = 2400 bps,

5 = 4800 bps,

6 = 9600 bps,

iParity Input UInt 端口的奇偶校验

1 = 无奇偶校验,2 = 偶校验,

3 = 奇校验,

4 = 传号校验,

5 = 空号校验,

6 = 任意

iSendTime Input Time 发送前定时时间 值可以很大,但没有必要
iRcvTimeOut Input Time 接收信息超时时间 值可以很大,但没有必要
iBufferDBNumber Input UDInt MODBUS缓冲区数据块号 如:UDINT#3000
iBuffer Input Variant MODBUS缓冲区指针 如:"MBrtuMaster1500BufferDB1".Buffer
qLicense Output Bool 授权  
qDone Output Bool 初始化完成标志位 指令完成后,一直为真
qWorkingSlave Output UInt 正在与从站通信的从站地址 可能值为1到247
qWortConfigStatus Output Word 组态PtP端口状态 详见Port_Config指令帮助
qSendConfigStatus Output Word 组态PtP发送方状态 详见Send_Config指令帮助
qReceiveConfigStatus Output Word 组态PtP接收方状态 详见Receive_Config指令帮助

MBrtuMaster1500Msg

名称 类型 数据类型 说明 允许值,说明
iInstructionActive Input Bool 真为激活指令,假为不激活指令  
iNewRequest Input Bool 读写请求位 每一个新的读写请求必须使用脉冲触发
iSlave Input USInt 从站地址 1到247
iReadWrite Input USInt 0=读,1=写

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

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

选择读写的数据类型

00001 至 0xxxx - 开关量输出

10001 至 1xxxx - 开关量输入

30001 至 3xxxx - 模拟量输入

40001 至 4xxxx - 保持寄存器

400001 至 465535 - 保持寄存器
iCount Input UInt 数据个数

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

Modbus主站可读/写的***大数据量为120个字(是指每一个 MBrtuMasterMsg 指令)
iBufferDBNumber Input UDInt MODBUS缓冲区数据块号 如:UDINT#3000
iPointerDBNumber Input UDInt MODBUS读写数据块号 如:UDINT#2000
iPointerByte Input UInt 用户数据块字节地址

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

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

错误规范

0000 命令完成没有错误

7000 指令未执行

7001 指令开始工作

9003 接收超时

9004 输入参数错误

9005 Modbus未激活

9006 忙 其它指令在工作

9007 功能号不符

9008 CRC校验错误

9009 本指令未启用

900A 发送错误

900B 发送超时

900C 接收错误

900D 接收的数据长度与预计长度不符

900E 签名错误

91XX 从站返回的错误

qSendStatus Output Word 发送指令状态及错误 见发送指令规范
qRevStatus Output Word 接收指令状态及错误 发接收指令规范

 

MBrtuMaster1500BufferDB1

非优化数据块。缓冲区数据块是一个400(不可小于400)个字节数据块,可以复制,可改符号,可改***地址

 

MBrtuMaster1500PointerDB1

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

 

五、      程序注意

符号地址和***地址都可更改。

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

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

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

 

 

六、      程序高级应用

 

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

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

 




 

联系热线:18621383616   联系人:贺万华 联系地址:北京市朝阳区东土城路4号3幢4层

技术和报价服务:星期一至星期六8:00-22:00 西门子PLC专卖  |