MODBUS主站通讯时的注意事项.docx
《MODBUS主站通讯时的注意事项.docx》由会员分享,可在线阅读,更多相关《MODBUS主站通讯时的注意事项.docx(15页珍藏版)》请在冰豆网上搜索。
![MODBUS主站通讯时的注意事项.docx](https://file1.bdocx.com/fileroot1/2023-6/15/e75d5478-5385-49d5-9ffb-5b3ba9016395/e75d5478-5385-49d5-9ffb-5b3ba90163951.gif)
MODBUS主站通讯时的注意事项
有关TSXSCP114卡及TSXSCY21601/TSXSCY11601模块在Premium/MicroPLC中作为MODBUS主站通讯时的注意事项
1.前言
近来发现有些客户反映在应用SCP114或SCY21601/SCY11601模块作为MODBUS(RTU模式)主站与其他从站设备以RS485方式通讯时,有通讯不畅或不能采集到数据的情况。
经对部分客户的现场调查,发现有部分原因是由于对SCP114或SCY模块的的配置及应用程序编写不当而引起。
本文指出其中一些需要注意的问题,望大家在以后使用SCP114卡或SCY21601/SCY11601时注意一下。
2.TSXSCPCM4030的接线
应用TSXSCP114卡作MODBUSRTURS485方式通讯时,采用的连接的电缆应选择TSXSCPCM4030电缆。
原先手册中的接线如下:
请注意的新订的TSXSCPCM4030电缆的颜色编码已经改变为如下:
当TSXSCP114卡连接作为网络中间节点时,只需要将绿线(D-)与棕线(D+)接入网络。
但当TSXSCP114卡连在未端应按未端的接法接线,如下图所示:
SCP114
2#Temperaturemeter
3#
protection
1#
Powermeter
PremiumPLC
C
P
U
上图中SCP114连接在起始端,应将TSXSCPCM4030的电缆连接如下:
即在未端时,加上终端电阻及上拉下拉电阻,以提高线路的通讯性能。
对于最后一个从站也应加上终端电阻以防止信号反射引起通讯不稳定。
有些从站上本身带有终端电阻可以通过拔码设置,有些从站设备本身没带终端电阻需要并接一个120欧姆左右的电阻,具体情况可视最后一个从站设备而定。
3.TSXSCYCM6030的接线
应用TSXSCY21601/TSXSCY11601通讯模块作MODBUSRTURS485方式通讯时应采用TSXSCYCM6030通讯电缆,其不作为未端使用时接线方式如下:
若作未端连接时则应如下方式连接:
注意:
上述图中D(A)为D-,D(B)为D+。
图中TSXSCA50为施耐德电气提供的接线盒。
4.ANSWERDELAY的参数设置
在TSXSCP114及TSXSCY21601的配置中都answerdelay的参数设置,如下图所示:
此Answerdelay参数设置的目的是当主站发出请求之后,若在此参数规定的时间没有任何信息响应,则主站会根据Retries中的设置重新发出新的请求。
如上图所示,当请求发出后在1秒之主站没能收到任何数据响应,随后会重新发送一请求。
若请求发出之后,在1秒之收到数据,无论此数数据是否正确则不会重新发出请求。
AnswerDelay参数隐含设置为1秒,可以根据下列情况来调整:
若从站响应的延迟时间较长,可以将此时间适当延长。
如:
读取数据的设备本身不是MODBUS从站,需要通协议转换读取数据,此时通过现场设备、协议转换器所需要的时间可能会超过1秒,在这种情况下需要将此参数调整为更长的时间。
否则永远无法读到此设备的数据,或由于从站的较长响应延时导致数据冲突,产生较多的CRC错误。
若从站响应较快可以将此时间参数缩短,以避免偶尔的无数据响应导致较长的等侍时间,可以提高整个网络的通讯效率。
尤其在有多从站的应用中,我们可能会重点关注整个网络上所有从站的数据刷新时间,当某从站通讯有问题时希望尽快跳过此站,在此种情况下可以将此参数调整为较小的时间,如:
300ms或500ms等。
通常情况下,建议将此参数设为500ms
5.NumberofRetries参数设置
在TSXSCP114及TSXSCY21601模块作MODBUS主站时,在其参数配置中也同样都有NumberofRetries参数设置。
如下图所示:
此参数设置的目的是当从站没有数据响应时,主站重新发送请求偿试通讯的次数。
此参数隐含设置3次。
建议在实际应用将此参数调整为1次,通常若重试1次后仍收不到数据响应,往往是从站设备不存在或本身有问题,此时再重试多次没有实际的意义。
在有很多从站的应用中,若关注重点为快速轮询则可以将此重试次数设为0。
6.CharacterDelay参数设置
如下图所示,在TSXSCP114卡及SCY21601模块配置为MODBUS主站时,有“Delaybetweencharacters”的参数设置。
此参数为判断某一数据帧传输结束的静默时间长度。
MODBUSRTU数据帧间隔
在MODBUSRTU方式通讯中,对MODBUS数据帧间隔是有一定要求的,通常两个数据帧之间的间隔时间要大于传输3.5个字符的时间。
在19200bps的传输速率时,此时间为1.75ms。
在9600bps时,此时间为3.5ms左右。
所以在配置参数中当通讯速率为9600时,其隐含的值通常为4ms,即到总线静默4ms之后表明前一数据帧结束可以传输下一数据帧。
示波器波形分析
如上图中所示,此参数会影响前一响应到下一请求之间的时间间隔。
假如现场从站设备不符合MODBUS串行通讯的标准要求,在总线静默时间超过3.5个字符时长不能判别前一数据帧通讯已经结束则需要加大此参数值,否则会导致从站无法识别新的MODBUS请求,导致从站无数据响应。
尤其在多从站通讯时,导致数据效率大降低或无法完成数据交换。
(如:
DY2000的温度巡检仪就有此问题,在4ms它不能识别数据帧的结束,需将将此值调整10~15ms左右)
7.通讯管理字
在Premium、MircoPLC的通讯函数中,最后的参数为4个字的通讯管理字表
如上图中所示的READ_VAR函数中,最后的通讯管理字为%MW137:
4。
通讯管理字表的含义如下:
%MWx:
4
高字节
低字节
%MWx
通讯交换号
通讯激活状态(最低位)
%MWx+1
操作报告
通讯报告
%MWx+2
超时时间(时基为100ms)
%MWx+3
长度(发送或接收的字节数)
通讯交换号指每次触发通讯时,系统会自动给出一个编号。
可以根据此编号将某一次通讯取消(CANCEL函数)。
通讯激活状态为此字节最低位(%MWx:
X0),当此位为1表示通讯正在进行,为0表示通讯结束。
通讯报告指通讯链路建立时的错误情况。
操作报告指当数据交换可以实现但数据有误时的错误情况。
超时时间指在CPU管理此通讯时允许的规定时间。
若此值设为0表示无超时设置,无数据响应或无错误报告时会始终处于等待状态。
此参数设置的时间基值为100ms,例设值为3,表示超时时间为300ms。
在通讯管理字表中,前两个字由系统进行自动管理,应用程序中不能对这两个字作任何的赋值操作。
7.1详细的错误代码:
通讯报告
此报告是所有功能的公用报告。
当活动位的值由1切换为0后,报告中的值才有效。
报告的值介于16#01到16#FE之间,代表由执行相应功能的处理器所检测到的错误。
下表列出了此报告的各个值:
值
通讯报告(最低有效字节)
16#00
交换正确
16#01
交换因超时而停止
16#02
交换因用户请求(CANCEL)而停止
16#03
地址格式不正确
16#04
目标地址不正确
16#05
管理参数格式不正确
16#06
特定参数不正确
16#07
向目标发送时出现问题
16#08
保留
16#09
接收缓冲区的大小不足
16#0A
发送缓冲区的大小不足
16#0B
无处理器系统资源
16#0C
交换号不正确
16#0D
未接收到任何电报
16#0E
长度不正确
16#0F
电报服务尚未配置
16#10
网络模块缺失
16#11
请求缺失
16#12
应用程序服务器已处于活动状态
16#13
UNI-TEV2事务编号不正确
16#FF
消息被拒绝
注意:
此功能可以在激活交换之前,检测参数错误。
此时,活动位保持为0,并用该错误对应的值来初始化报告。
操作报告
此报告字节对应于各个功能,用于指明对远程应用程序进行操作的结果。
仅当通讯报告具有以下值时,此报告才有效:
16#00(交换正确)
16#FF(消息被拒绝)
如果通讯报告的值是16#00,操作报告将具有以下值:
值
操作报告(最高有效字节)
16#00
结果为正
16#01
请求尚未处理
16#02
响应不正确
16#03
保留
如果通讯报告的值是16#FF,操作报告将具有以下值:
值
操作报告(最高有效字节)
16#01
处理器无可用资源
16#02
无线路资源
16#03
无设备或者设备无资源(*)
16#04
线路错误
16#05
长度错误
16#06
通讯通道出现故障
16#07
寻址错误
16#08
应用程序错误
16#0B
无系统资源
16#0C
通讯功能未激活
16#0D
目标缺失
16#0F
工作站的路由出现问题,或者通道尚未配置
16#11
地址格式尚未管理
16#12
无目标资源
16#14
非可操作连接(例如:
以太网TCP/IP)
16#15
无针对本地通道的资源
16#16
访问未获得授权(如以太网TCP/IP)
16#17
网络配置不一致(如以太网TCP/IP)
16#18
连接暂时不可用
16#21
应用程序服务器已停止
16#30
传输错误
7.2超时时间设置
对于超时时间设置建议如下:
1.在通讯管理字表的第三个字中,必须设置超时时间。
以防止当某次通讯无响应时,导致通讯始终处于等待状态,无法触发下次通讯。
建议编写程序时,在通讯函数执行之前对超时时间进行赋值,防止在从重新下载程序之后忘记超时时间的设置。
如下图所示:
2.超时时间的设值,建议超时时间=3*Answerdelay*(reties+1)
8.通讯函数调用
在Premium系统中对于通讯函数的调用有一定的限止,在同一扫描周期每个通讯端口同时处于激活状态的通讯函数数量为4个(最新的版本中说明为8个,但建议在程序设计中仍以4个为设计标准)。
当有多个从站需要进行通讯,或对单个从站有多个读写通讯函数时需要注意通讯函数触发的调度。
1#温度巡检仪
7#
电表
PremiumPLC
C
P
U
2#温度巡检仪
SCY21601
5#
电表
6#
电表
8#
电表
如上述应用中共有6个从站都需要采集数据,为防止同时触发过多的通讯函数可对数据交换进行调度,如:
按秒调度,前一秒种读取1号与2号从站数据,后一秒种读取5、6、7、8号从站的数据,通过秒脉冲对部字及触发条件进控制:
再利用触发条件控制通讯函数:
另外在每个通讯函数之前必须加对激活状态的控制,如上图所示。
9.其他注意事项
根据不同的通讯方式,选择正确的通讯电缆。
注意EMC及接地。
注意各站之间通讯参数的一致性。