西门子S7-200 SMART之Modbus RTU 通信常见问题及错误代码含义
Modbus通讯协议中功能码错误
功能码主要用于表述该数据报文执行的功能,当服务器对客户机进行响应时,它使用功能码域来指示正常响应(无差错)或者异常响应(即出现某种差错),其中的modbus协议的功能码众多,在此我们一一列出与大家分享。
功能码表
其中物理离散量输入和输入寄存器只能有I/O系统提供的数据类型,即只能是由I/O系统改变离散量输入和输入寄存器的数值,而上位机程序不能改变的数据类型,在数据读写上表现为只读,而内部比特或者物理线圈和内部寄存器或物理输出寄存器(保持寄存器)则是上位机应用程序可以改变的数据类型,在数据读写上表现为可读可写。
错误代码表
我们以Modbus RTU协议为例,地址码为0x01,写操作0x10,寄存器地址为
0x018E,CRC校验。
如寄存器可读写的话,返回正常,如寄存器只读,返回异常。
200SMART MODBUS RTU通讯指令介绍
200SMART MODBUS RTU通讯指令介绍
主站指令1(PLC自带485通讯口)
主站指令2(信号板SB CM01)
从站指令
(1)MBUS—CTRL:主站参数定义
(2)MBUS—MSG:主站读写指令
(3)MBUS—INIT:从站定义指令
(4)MBUS—SLAVE:从站应答
主站定义指令
EN:使能;为1时指令有效,为0时指令不执行
Mode:模式选择;为1时为modbus,为0时为
PPI
Baud:波特率,数据传输速率9600、19200等
Parity:奇偶校验0=无校验1=奇校验2=偶校验
Port:端口;0=PLC自带串口1=信号板CM01
Timeo:通信超时
Done:完成位
Error:错误字节
注:1、此条指令写在主站,写一天即可;
2、波特率和奇偶校验和从站应保持一致,不然无法通信;
主站读写指令
first:触发;需要用沿触发
slave:从站地址
RW:读写0=读取、1=写入
Addr:从数据区
Counl:数据范围
Dataptr:主站数据存放位置
从站定义指令
EN:使能,sm0.1初始化
Mode模式:1=modbus 0=禁用modbus
Buand:波特率
Parity:奇偶校验
Port:端口
Delay:默认为0,表示立即应答
Maxiq:通信最大I/O总数
Maxai:通信最大模拟量通道
Maxhold:通信最大v区
Holdstart;v区起始地址
从站应答指令。
S7 200 SMART 通讯常见问题
一:S7-200 SMART 通信协议与资源每个S7-200 SMART CPU 都提供一个以太网端口和一个RS485 端口(端口0),标准型CPU 额外支持SB CM01 信号板(端口1),信号板可通过STEP 7-Micro/WIN SMART 软件组态为RS232 通信端口或RS485 通信端口。
S7-200 SMART CPU 可实现CPU、编程设备和HMI(人机界面)之间的多种通信:以太网:● CPU 与STEP 7-Micro/WIN SMART 软件之间的数据交换。
● CPU 与HMI 之间的数据交换。
● CPU 与其它S7-200 SMART CPU 之间的GET/PUT 通信。
● CPU 与第三方设备之间的Open IE( TCP、ISO on TCP、UDP) 通信。
RS485/RS232:● CPU 与HMI 之间的数据交换(PPI协议)。
● CPU 使用自由端口模式与其它设备之间的串行通信(例如:XMT/RCV 通信、Modbus RTU通信、USS通信等)。
S7-200 SMART CPU 可同时支持的最大通信连接资源数如下:以太网:● 1 个连接用于与STEP 7-Micro/WIN SMART 软件的通信。
● 8 个连接用于CPU 与HMI 之间的通信。
● 8 个连接用于CPU 与其它S7-200 SMART CPU 之间的GET/PUT 主动连接。
● 8 个连接用于CPU 与其它S7-200 SMART CPU 之间的GET/PUT 被动连接。
● 8 个连接用于CPU 与第三方设备之间的Open IE主动连接。
● 8 个连接用于CPU 与第三方设备之间的Open IE被动连接。
RS485/RS232:● 4 个连接用于CPU 与HMI 之间的通信(PPI协议)。
注意:●S7-200 SMART CPU以太网通信端口从V2.2版本开始支持TCP、UDP和ISO on TCP 等开放式用户通信及Modbus TCP通信。
s7-200smart故障排除指南
s7-200smart故障排除指南S7-200smart故障排除指南
本文档旨在提供S7-200smart控制器的故障排除指南,以帮助用户解决可能遇到的问题。
问题1:控制器无法上电启动
- 可能原因:可能原因:
1. 电源插头未插好;
2. 电源线损坏;
3. 电源供应故障。
- 解决方案:解决方案:
1. 检查电源插头是否正确插入控制器;
2. 检查电源线是否完好,如损坏可更换;
3. 若电源供应故障,建议联系售后服务或更换电源。
问题2:控制器无法与上位机通信
- 可能原因:可能原因:
1. 通信线路连接错误;
2. 上位机设置错误;
3. 控制器通信模块故障。
- 解决方案:解决方案:
1. 检查通信线路连接是否正确,确保连接端口对应无误;
2. 检查上位机的通信设置,确保设置正确;
3. 若排除以上问题仍无法通信,建议联系售后服务或更换控制器的通信模块。
问题3:控制器显示错误代码
- 可能原因:可能原因:
1. 程序错误;
2. 模块故障;
3. 通信异常。
- 解决方案:解决方案:
1. 检查程序是否存在错误,可尝试重新编写或修改程序;
2. 检查相应模块是否正常工作,如存在故障可更换模块;
3. 检查通信是否异常,可重新连接通信线路或更换通信模块。
以上是一些常见问题及其解决方案,如果您遇到其他问题,请参考S7-200smart控制器的使用手册或联系售后服务获取进一步的帮助。
S7-200 SMART PLC 串口通信说明(图文并茂)
S 7-200 S M A R T 串口通信简介S 7-200 S M A R T 支持的串口通信硬件及连接资源如表 1所示: 注意:1. P P I 模式只支持 S 7-200 S M A R T C P U 与 H M I 设备之间的通信;2. 通信信号板的工作模式(R S 485/R S 232)是由用户决定的,可以在 M i c r o /W I N S M A R T 中通过设置系统块来设置。
详细设置方法见:如何设置串口通信参数 通信端口定义1.S 7-200 S M A R T C P U 本体集成 R S 485 端口 (端口 0)表 2. S 7-200 S M A R T C P U 本体集成 R S 485 端口引脚定义 2.通信信号板 表 1.S 7-200 S M AR T 串口参数CPU 本体集成通讯口通信信号板(S B C M 01)通讯口类型R S 485R S 485R S 232支持的通信协议P P I / 自由口 / M O D B U S / U S S 波特率P P I (9600,19200,187500 b /s )自由口(1200,115200 b /s )连接资源每个通信口可连接 4 个 H M I 设备C P U 插座(9针母头)引脚号信号P o r t 0(端口0)引脚定义1屏蔽机壳接地224V 返回逻辑地(24V 公共端)3R S -485信号 B R S -485信号 B4发送请求R T S (T T L )55V 返回逻辑地(5V 公共端)6+5V +5V ,通过100 O h m 电阻7+24V +24V8R S -485信号 A R S -485信号 A9不用10位协议选择(输入)金属壳屏蔽机壳接地表 3.通信信号板(P o r t 1)引脚定义通信信号板(S B C M 01)引脚标记R S 485R S 232机壳接地机壳接地T X /B R S 485-B R S 232-T x R T S R T S (T T L )R T S (T T L )M 逻辑公共端逻辑公共端R X /AR S 485-AR S 232-R x通信信号板通信信号板可以扩展 C P U 的通信端口,其安装位置如图 1所示。
S7-200错误代码及其描述
000D
重新定义已经使用的脉冲输出
000E
PTO个数设为0
0091
范围错误(带地址信息);检查操作数范围
0092
某条指令的计数域错误(带计数信息);确认最大计数范围
0094
范围错误(带地址信息);写无效存储器
009A
用户中断程序试图转换成自由口模式
在程序正常运行中,可能会产生非致命错误(如寻址错误)。此时CPU产生一个非致命运行时刻错误代码。
0000
无错误
0001
执行HDEF之前,HSC不允许
0002
输入中断分配冲突,已分配给HSC
0003
到HSC的输入分配冲突,已分配给输入中断
0004
在中断程序中企图执行ENI,DISI,或HDEF指令
0005
第一个HSC/PLS未执行完之前,又企图执行同编号的第二个HSC/PLS
(中断程序中的HSC同主程序中的HSC/PLS冲突)
错误代码
编译错误(非致命)
0080
程序太大无法编译;你必须缩短程序
0081
堆栈溢出;你必须把一个网络分成多个网络
0082
非法指令;检查指令助记符
0083
无MEND或主程序中有不允许的指令;加条MEND或删去错误指令
0084
保留
0085
无FOR指令;加上FOR指令或删条NEXT指令
0086
无NEXT;加条NEXT指令,或删条FOR指令
内部软件错误
0011
比较接点间接寻址错误
0012
比较接点非法值错误
0013
存储器卡空,或者CPU不识别该卡
致命错误会导致CPU停止执行用户程序,导致CPU无法执行某个或所有功能。致命错误发生时,CPU执行以下任务:进入STOP模式,点亮系统致命、系统错误和STOP指示灯,断开输出。
modbus RTU常见问题
置为主站,一般为PLC端,变频器设为从站,还要注意主站和从站地址的设 置。
•
A
6
• 、Modbus rtu 为什么没有开始和结束标记? • 由于Modbus rtu帧的每个字节是16进制数,数值范围在00~FF,若像
• 1.以太网,对应的通信模式是MODBUS TCP。 • 2.异步串行传输(各种介质如有线RS-232-/422/485/;光纤、无线
等),对应的通信模式是MODBUS RTU或MODBUS ASCII。 • 3.高速令牌传递网络,对应的通信模式是Modbus PLUS。
A
2
• 2、关于MODBUS RTU通讯协议的提问?
A
9
• 13、vb modbus给modScan32 rtu发送数据应该怎么写?
• 确定两个软件哪个是主,哪个是从。然后再确定通讯协议是RTU、ASCII还是TCP。如果是TCP, 就用socket控件。RTU\ASCII就用COM控件。然后给对应的口按照协议收发数并解析就可以了。
•
• 14、ModBus RTU通讯协议与ModBus通讯协议有什么区别?
• • 答:01 读取逻辑线圈组状态 • 02 读取离散量线圈组状态 • 03 读取一个或多个保持寄存器的二进制值 • 04 读取一个或多个输入寄存器的二进制值 • 05 改变逻辑线圈状态 • 06 改变单个寄存器的二进制值 • 15 改变多个寄存器的二进制值 • 16 指定多个操持寄存器的二进制值
• 这些值的和是12.5。因为设置的符号位表示这数是负的,因此十六进制值0xC1480000表示-12.5。
S7-200组态王通讯的问题MODBUS介绍
“MODBUS”常见问题解答1.我的设备支持modbus 设备设备,,能否直接与组态王软件连接能否直接与组态王软件连接??只要设备是标准的modbus 协议设备,即可使用组态王设备列表下的PLC-->莫迪康-->MODBUSRTU(或者ACSII 码)进行通信。
但具体的寄存器地址对照表必须从设备厂家索取。
2.我的支持modbus 协议的串口设备协议的串口设备,,能否与多个上位软件能否与多个上位软件((比如组态王软件和某品牌触摸屏牌触摸屏))同时通讯同时通讯??因为modbus 串口协议不支持多主站,所以不能多个软件同时与modbus 设备同时通信。
3.在组态王工程中建立多个modbusTCPIPserver 设备定义设备定义,,分别使用两台客户端对其访问访问,,只有站点高的那个server 通讯ok ,站点低的通讯失败站点低的通讯失败,,为什么为什么??这是因为在组态王软件中只支持建立一个modbusTCPIPserver ,当建立多个server时,组态王客户端则会自动与站点高的server 进行通讯,所以会导致站点低的通讯失败。
4.如何实现组态王数据通过串口或者以太网驱动方式传送到其他组态软件或者应用程序中序中??如果其他组态软件或者应用程序支持modbus 协议,则可以通过组态王提供的modRTUserver 或者modbusTCPserver 驱动来实现。
5.组态王与支持Modbus 协议的设备进行通讯时协议的设备进行通讯时,,组态王画面上显示的数据不正确常有哪些原因哪些原因??引起数据不正确的原因主要有如下几点:1)组态王中定义的寄存器地址跟实际设备不一致导致。
比如某些使用modbus 协议通讯的设备的数据地址是从0开始的,而组态王modbus 协议驱动寄存器地址是从1开始的,所以遇到此种情况时在组态王中定义变量时,寄存器地址要进行加1处理;2)数据词典中最大原始值和最大值定义不不当;比如最大原始值和最大值不一样会导致画面看到的数据和实际设备不一致;3)组态王读取FLOAT 和LONG 类型的数据时,没有使用提供的SwapF 和SwapL 寄存器来调整FLOAT 型和LONG 型数据的字节顺序;4)LONG 或FLOAT 型的双字的数据,没有按照间隔隔地址方式定义;因为modbus协议所对应的参数地址一般按照字为基本单位进行分地址排序的。
modbus 差错码 异常码
modbus 差错码异常码Modbus是一种常用的通信协议,用于工业自动化领域的设备之间的数据传输和通信。
在Modbus通信中,差错码和异常码是常见的问题。
本文将围绕这两个主题展开,介绍差错码和异常码的含义、原因和解决方法。
差错码是指在Modbus通信过程中出现的错误编码。
这些错误可能由于通信介质故障、设备故障或通信协议不兼容等原因引起。
差错码的出现会导致数据传输错误,影响系统的正常运行。
为了解决差错码问题,我们可以采取以下几种方法:1. 检查通信介质:差错码可能是由于通信介质(如电缆)的损坏或松动造成的。
因此,我们需要检查通信介质的连接状态和质量,确保其正常工作。
2. 检查设备故障:差错码还可能是由于设备本身的故障引起的。
我们可以检查设备的状态和参数,排除设备故障的可能性。
3. 更新通信协议:差错码问题还可能是由于通信协议不兼容或过时引起的。
我们可以尝试更新通信协议或使用兼容性更好的协议,以解决差错码问题。
接下来,我们来介绍一下异常码。
异常码是指在Modbus通信中,设备返回的错误码。
当设备无法正常执行请求时,会返回一个异常码,用于指示错误的类型和原因。
异常码的出现可能是由于设备忙碌、请求格式错误或数据范围超出等原因引起。
为了解决异常码问题,我们可以采取以下措施:1. 确认设备状态:异常码可能是由于设备忙碌或不可用引起的。
我们可以检查设备的状态,确保设备处于可用状态。
2. 检查请求格式:异常码还可能是由于请求格式错误引起的。
我们可以检查请求的格式、参数和数据范围,确保其符合设备的要求。
3. 优化通信速度:异常码问题还可能是由于通信速度过快引起的。
我们可以尝试降低通信速度,以确保设备能够正常处理请求。
差错码和异常码是Modbus通信中常见的问题。
差错码可能由于通信介质故障、设备故障或通信协议不兼容等原因引起,解决方法包括检查通信介质、设备故障排除和更新通信协议。
异常码可能由于设备忙碌、请求格式错误或数据范围超出等原因引起,解决方法包括确认设备状态、检查请求格式和优化通信速度。
MODBUS RTU通信错误代码
错误代码MB_MASTER报错8200(端口正忙于处理传送请求),如何处理?此情况是由于MB_MASTER的DONE或ERROR均未置位从而与后续MB_MASTER冲突导致。
确保接通下一个MB_MASTER的时间大于Blocked_Proc_Timeout的设定时间(默认3S)。
如何检查S7-1200 通信模块CM1241是否已被成功设置为Modbus RTU通信模式?可在程序或监控表中查看“MB_COMM_LOAD”指令的输出位“DONE”,“ERROR”以及“STATUS”状态来判断S7-1200 通信模块CM1241是否已被成功设置为Modbus RTU通信模式。
•如果该模块被成功设置为Modbus RTU通信模式:“MB_COMM_LOAD”指令输出位“DONE”=1,“ERROR”=0,输出状态字“STATUS”=0;•如果该模块未被成功设置为Modbus RTU通信模式:“MB_COMM_LOAD”指令输出位“DONE”=0,“ERROR”=1,输出状态字“STATUS”输出错误代码。
具体错误原因可查看“MB_COMM_LOAD指令STATUS错误代码”表。
执行“MB_MASTER”指令,总是显示输出位“Busy”=1,为什么?因为端口正忙于处理传送请求。
出现该错误时请检查“MB_MASTER“指令输入位”REQ“是否为上升沿触发,或是否有其它的多个“MB_MASTER”指令在执行。
通过执行“MB_MASTER”指令无法写入或读取Modbus RTU丛站地址的数据,但程序中监视“MB_MASTER”指令错误位“Error”=0,错误代码“STATUS”=16#0,为什么?“MB_MASTER”指令上一请求因错误而终止后,ERROR 位将保持为 TRUE 一个扫描周期时间,并且 STATUS 参数中的错误代码值仅在 ERROR =TRUE 的一个扫描周期内有效,因此无法通过程序或监控表查看到。
S7-200通讯连不上问题解决方法
S7-200通讯连不上问题解决方法1 将CPU打到STOP位置试试2 关闭所有的软件,尤其是占用通讯口的软件,只保留200PLC编程软件。
3 要与西门子最新推出的S7-200 CN CPU 正常通信,必须满足以下条件:使用编程软件STEP 7-Micro/WIN V4.0 SP3 以上版将编程软件的工作环境设置为中文状态。
如果不满足上述条件,会在下载通信时遇到82 号错误。
如果已经满足上述条件而仍然遇到错误,请检查是否其他原因。
4 使用原装USB/PPI电缆,需要将编程软件升级到当前发布的最新版本,并且在设置PG/PC接口的时候要选择USB,非原装USB电缆需要正确选择COM口(电脑-属性-硬件-设备管理器-端口)5 在“Set PG/PC”通信属性时,COM口的符号前为什么会有一个星号“*”?COM口前面的星号说明它被其他软件占用,Micro/WIN不能使用。
6 非原装USB电缆实际上是COM电缆,是USB-COM电缆加上COM电缆,所以设置应该根据COM口来设置。
7 安装了USB-COM驱动后,一定要将电缆重新启动。
另参考:检查编程通信的主要步骤如果有时能够通信但不正常,请检查如下“1-4”项,如果根本不通,请检查全部项目:1 检查STEP 7-Micro/WIN与Windows操作系统是否完全兼容2 检查是否使用西门子的原装编程电缆,以及电缆是否符合编程PC机或笔记本电脑的硬件条件3 检查编程电脑上的COM通信口设置鼠标右键单击“我的电脑”,选择“属性”打开“设备管理器”标签(对于Windows2000,选择“硬件”标签,按“设备管理器”按钮)双击“端口(COM和LPT)”双击所使用的通信口,如COM1在端口设置标签,选择“高级”在对话框中把接收和发送缓冲区都设置为最小值,并保持选中“FIFO”选择框重新启动计算机使设置有效4 检查编程电缆的DIP开关设置,是否与Micor/WIN的通信速率设置相同在Micro/WIN左边的浏览条中鼠标单击Communication(通信)大图标,检查通信参数设置。
S7-200 MODBUS RTU通讯教程
•
10001 - 19999:数字量输入(触点)
•
30001 - 39999:输入数据寄存器(通常为模拟量输入)
•
40001 - 49999:数据保持寄存器
Modbus Master 协议库支持的功能
为了支持上述 Modbus 地址的读写,Modbus Master 协议库需要从站支持下列功能:
表 1. 需要从站支持的功能
成位来激活,以保证所有读写指令循环进行(见
每一个新的读写请求必须使用脉冲触发
位:
从站地
c. Slave
可选择的范围 1 - 247
址:
d. RW
从站地 0 = 读, 1 = 写
址:
注意: 1. 开关量输出和保持寄存器支持读和写功能 2. 开关量输入和模拟量输入只支持读功能
围为 1 - 32767。
注意: 这个值必须设置足够大以保证从站有时间响应。 f. Done 完成位:初始化完成,此位会自动置 1。可以用该位启动 MBUS_MSG 读写操作(见例程)
g. Error
初始化错误代码(只有在 Done 位为 1 时有效):
0= 无错误
1= 校验选择非法
读写从站
e. Addr
选择读写的数据类型
的
数据地 00001 至 0xxxx - 开关量输出
址:
10001 至 1xxxx - 开关量输入 30001 至 3xxxx - 模拟量输入 40001 至 4xxxx - 保持寄存器 f. Count 数据个数 通讯的数据个数(位或字的个数)
Modbus 指令库启动后,如何通过同一个通信端口进行 CPU 监控? Modbus 指令库使用的是 CPU 的自由口通信功能,工作在自由口模式下的通讯口不能使用 Micro/WIN 的 PPI 编程
西门子S7-200SMART之ModbusRTU通信常见问题及错误代码含义
西门⼦S7-200SMART之ModbusRTU通信常见问题及错误代码含义常见问题1.S7-200 SMART 是否⽀持Modbus ASCII 通信模式?STEP 7-Micro/WIN SMART 软件未提供Modbus ASCII 通信模式指令库。
S7-200 SMART CPU若⽤于Modbus ASCII 通信时,则需要⽤户使⽤⾃由⼝通信模式进⾏编程。
2. S7-200 SMART CPU 集成的RS485 端⼝(端⼝0 )以及SB CM01 信号板(端⼝1 )两个通信端⼝能否同时作为Modbus RTU 主站或者同时作为Modbus RTU从站?S7-200 SMART V2.2版本⽀持两个通信端⼝同时做MODBUS RTU主站,不⽀持同时做MODBUS RTU从站。
3. S7-200 SMART CPU作为Modbus RTU 主站如何访问Modbus 地址范围⼤于49999 的保持寄存器?通常Modbus 协议的保持寄存器范围在40001 到49999 之间,这个范围对于多数应⽤来说已经⾜够了,但有些Modbus 从站保持寄存器区的地址会超出该范围。
Modbus RTU 主站协议库⽀持保持寄存器地址范围为(40001 到49999)或者(400001 到465536)。
如果Modbus 从站地址范围为400001 –465536,只需在调⽤MBUS_MSG ⼦程序时给Addr 参数赋相应的值即可,如416768。
4.S7-200 SMART CPU作为Modbus RTU 主站,多次调⽤MBUS_MSG 指令时,为什么该指令会出现6# 错误代码?同⼀时间只能有⼀条MBUS_MSG 指令处于激活状态,如果激活多条MBUS_MSG 指令,将执⾏第⼀条MBUS_MSG 指令,所有后续MBUS_MSG 指令将中⽌执⾏并出现6# 错误代码。
多条MBUS_MSG 指令的执⾏需要采⽤轮询⽅式。
S7-200错误代码及其描述
编译错误(非致命)
0080
程序太大无法编译;你必须缩短程序
0081
堆栈溢出;你必须把一个网络分成多个网络
0082
非法指令;检查指令助记符
0083
无MEND或主程序中有不允许的指令;加条MEND或删去错误指令
0084
保留
0085
无FOR指令;加上FOR指令或删条NEXT指令
0086
无NEXT;加条NEXT指令,或删条FOR指令
0099
隐含程序网络太多
0090
非法参数;确认指令所允许的参数
0091
范围错误(带地址信息);检查操作数范围
0092
指令计数域错误(带计数信息);确认最大计数范围
0093
FOR/NEXT嵌套层数超出范围
0095
无LSCR指令(装载SCR)
0096
无SCRE指令(SCR结束)或SCRE前面有不允许的指令
0097
保留
0098
在运行模式进行非法编辑
0006
间接寻址错误
0007
TODW(写实时时钟)或TODR(读实时时钟)数据错误
0008
用户子程序嵌套层数超过规定
0009
在程序执行XMT或RCV时,通讯口0又执行另一条XMT/RCV指令
000A
在同一HSC执行时,又企图用HDEF指令再定义该HSC
000B
在通讯口1上同时执行XMT/RCV指令
000C
从cpu中读出的错误代码及其描述错误代码描述致命错误0000无致命错误0001用户程序检查和错误0002编译后的梯形图程序检查和错误0003扫描看门狗超时错误0004内部eeprom错误0005内部eeprom用户程序检查错误0006内部eeprom配置参数检查错误0007内部eeprom强制数据检查错误0008内部eeprom缺省输出表值检查错误0009内部eeprom用户数据db1检查错误000a存储器卡失灵000b存储器卡上用户程序检查和错误000c存储器卡配置参数检查和错误000d存储器卡强制数据检查和错误000e存储器卡缺省输出表值检查和错误000f存储器卡用户数据db1检查和错误0010内部软件错误0011比较接点间接寻址错误0012比较接点非法值错误0013存储器卡空或者cpu不识别该卡致命错误会导致cpu停止执行用户程序导致cpu无法执行某个或所有功能
西门子伺服故障代码(附件五)
西门子伺服故障代码(附件五)S7-200可编程控制器系统手册位控模块和位控指令的错误代码表9-20指令错误代码错误代码描述0无错1用户放弃2组态错误使用EM253控制面板的诊断标签查看错误代码3非法命令4由于没有有效的组态而放弃使用EM253控制面板的诊断标签查看错误代码5由于没有用户电源而放弃6由于没有定义的参考点而放弃7由于STP输入激活而放弃8由于LMT--输入激活而放弃9由于LMT+输入激活而放弃10由于运动执行的问题而放弃11没有为指定包络所组态的包络块12非法操作模式13该命令不支持的操作模式14包络块中非法的步号15非法的方向改变16非法的距离17RPS触发在达到目标速度前出现18RPS有效区域宽度不足19速度超出范围20没有足够的距离执行所希望的速度改变21非法位置22零位置未知23to127保留128位控模块不能处理该指令:位控模块可能正在忙于处理另一个指令或该指令无启动脉冲。
129位控模块错误模块ID不正确或模块已注销。
其它错误条件请参看SMB8到SMB21(I/O模块ID和错误寄存器)。
130位控模块未使能131位控模块不能使用由于模块故障或未使能(参见POSx_CTRL状态)132由位控向导组态的Q内存地址与位控模块在该位置处模块的内存地址不一致。
S7--200开环运动控制第9章表9-21模块错误代码错误代码描述0无错1无用户电源2没有组态块3组态块指针错误4组态块的大小超过了可用的V区5非法的组态块格式6定义了太多的包络7非法的STP_RSP定义8非法LIM--定义9非法LIM+定义10非法的FILTER_TIME定义11非法的MEAS_SYS定义12非法的RP_CFG定义13非法的PLS/REV值14非法的UNITS/REV值15非法的RP_ZP_CNT值16非法的JOG_INCREMENT值17非法的MAX_SPEED值18非法的SS_SPD值19非法的RP_FAST值20非法的RP_SLOW值21非法的JOG_SPEED值22非法的ACCEL_TIME值23非法的DECEL_TIME值24非法的JERK_TIME值25非法的BKLSH_COMP值S7-200Programmable Controller System ManualError Codes for the Position Module and the Position InstructionsT able9-20Instruction Error CodesError Code Description0No error1Aborted by user2Configuration errorUse the EM253Control Panel Diagnostics tab to view error codes3Illegal command4Aborted due to no valid configurationUse the EM253Control Panel Diagnostics tab to view error codes5Aborted due to no user power6Aborted due to no defined reference point7Aborted due to STP input active8Aborted due to LMT--input active9Aborted due to LMT+input active10Aborted due to problem executing motion11No profile block configured for specified profile12Illegal operation mode13Operation mode not supported for this command14Illegal number of steps in profile block15Illegal direction change16Illegal distance17RPS trigger occurred before target speed reached18Insufficient RPS active region width19Speed out of range20Insufficient distance to perform desired speed change21Illegal position22Zero position unknown23to127Reserved128Position module cannot process this instruction:either the Position module is busy withanother instruction,or there was no Start pulse on this instruction129Position module error:Module ID incorrect or module logged out.Refer to SMB8to SMB21 (I/O Module ID and Error Register)for other error conditions.130Position module is not enabled131Position module is not available due to a module error or module not enabled(See the POSx_CTRL status)132The Q memory address that was configured with the Position Control wizard does notmatch the memory address for the module at this location.Open Loop Motion Control with the S7-200Chapter9T able9-21Module Error CodesError Code Description0No error1No user power2Configuration block not present3Configuration block pointer error4Size of configuration block exceeds available V memory 5Illegal configuration block format6T oo many profiles specified7Illegal STP_RSP specification8Illegal LMT--_RPS specification9Illegal LMT+_RPS specification10Illegal FILTER_TIME specification11Illegal MEAS_SYS specification12Illegal RP_CFG specification13Illegal PLS/REV value14Illegal UNITS/REV value15Illegal RP_ZP_CNT value16Illegal JOG_INCREMENT value17Illegal MAX_SPEED value18Illegal SS_SPD value19Illegal RP_FAST value20Illegal RP_SLOW value21Illegal JOG_SPEED value22Illegal ACCEL_TIME value23Illegal DECEL_TIME value24Illegal JERK_TIME value25Illegal BKLSH_COMP value。
采用S7-200smartModbusRTU通信如何配置,一文全明白
采用S7-200smartModbusRTU通信如何配置,一文全明白软件版本:S7-200 SMART V2.2注意:一个CPU支持两个通信端口同时做MODBUS RTU主站一、背景知识普及概述1、S7-200 SMART CPU上的通信口0(Port0)通过指令库支持Modbus RTU从站模式。
2、S7-200 SMART CPU 上的通讯口0和1(Port0和Port1)通过指令库支持Modbus RTU主站模式。
3、S7-200 SMART CPU 上的通讯口0和1(Port0和Port1)不能同时作为Modbus RTU主站或从站。
S7-200 SMART CPU 本体集成通信口(Port 0)、可选信号板(Port 1)可以支持Modbus RTU协议,成为Modbus RTU主站站。
此功能是通过 S7-200 SMART的自由口通信模式实现,因此可以通过无线数据电台等慢速通信设备传输。
注:SB CM01(RS485/RS232) 订货号:6ES7 288-5CM01-0AA0 S7-200 SMART 软件的帮助有明确说明打开软件找到库选择初始化主站或者从站程序块然后按F1从站参数“端口”(Port) 设置物理通信端口(0 = CPU 中集成的 RS-485,1 = 可选信号板上的 RS-485 或 RS-232)。
主站参数“端口”(Port)设置物理通信端口(0 = CPU 中集成的RS-485,1 = 可选 CM01 信号板上的 RS-485 或 RS-232)。
清晰的写着他们都可以既做主又可以做从而且两个口是独立的既可以同时做主可以同时做从还可以向你说的一个做主一个做从关键词“独立的”Modbus RTU 主站协议Modbus 主站指令使用以下 CPU 资源:执行MBUS_CTRL 会初始化Modbus 主站协议,并使分配的CPU 端口(0 或 1)专用于 Modbus 主站通信。
S7-200与多台变频器 Modbus_RTU
S7-200与多台变频器 Modbus_RTU主站通讯超时处理的问题【工控老鬼】问题:S200与多台变频器 Modbus_RTU 主站通讯,超时处理的问题。
各位大侠,我现在在做一个S200通过Modbus RTU主站协议与多台变频器通讯的小实验,于是连接了一台变频器模拟测试。
结果发现因为找不到其他站,数据传输很慢,读写指令要4-5s才能传过去。
现在通讯是没有问题,做单台程序测试很快,只是程序里加了几个点后发现慢了很多,终端电阻已经设好。
分析应该是程序搜索不存在的地址,造成通讯超时所致。
但我试了很长时间也没有找到一个有效的方法来优化程序,请大家帮助一下,希望可以实现:当存在某台变频器掉线时,可以自动屏蔽对它的周期性访问,但5s左右还要再尝试与这台变频器的通讯,以便在故障恢复时加上这个站。
谢谢!!!问题补充:谢谢wb210xa的热情回答:我利用上一条(a)modbus_msg的Done位做为下一条指令(b)的En和First 触发,同时复位a的En和Done位,如此循环。
按此计算,Timeout=100ms,读写共计10条指令,应该循环时间为100*10=1s。
也不应该到4-5s呀,因此,我想以减少对不存在站点的访问次数的方法来提高扫描速度,如果有其他方法请指教,谢谢!问题分析和解答:其实比较简单,就是设置合适的超时时间。
比如楼主要读取10台变频器,超时时间假如为1s,正常时可能100ms即有数据返回。
1)如果通讯正常时,10台变频的轮询时间为10*100=1s(我只考虑读取状态信息,如果同时读写时时间可能更长,当然和读写数据量有关)。
2)同样情况下,如果有5台变频通讯故障时,总的轮询时间为:5*100+5*1000=5500ms。
而如果超时时间设为150ms时:1)正常通讯时,10台变频的轮询时间为10*100=1s2)而同样情况下,如果有5台变频通讯故障时,总的轮询时间为:5*100+5*150=1250ms。
Modbus通讯错误代码
常见的错误代码有:3:基本上是从站无响应,从站地址错了102:从站不支持此种数据地址,地址40000,30000等不对,在从站中没有对应的地址103:从站不支持此种数据类型,类型不对,开头的4,3,1,0没有选择正确,应看清楚是读写型整型还是只读型整型还是读写型开关量。
读写型整型是4开头,只读型整型是3开头,读写型开关量是0开头,只读型开关量是1开头。
计算方法为:3个字符包含9-10个位(8个数据位+1或2个停止位),即27-30个位,在波特率为9600的情况下,传输速率约为3ms。
MODBUS最高能到多少波特率?38.4k应该没有问题;我公司是SIEMENS PLC 和MODBUS 通信,最大19200;这个跟从站有很大的关系,与所选的接口芯片有直接关系;西门子S7-200的居然可以达到115200最大的都是理论值,现实中用的很少;115200的话,就该用ASCii协议了,RTU估计是容易丢包了;根据需要设置,与串口通讯波特率一样,常用的有19200、38400;根据下位机的波特率来决定通讯的波特率。
RS485是硬件连接,modbus是软件协议,波特率是串口通信的比特流速率。
Modbus从属协议执行错误代码:错误代码说明0 无错误1 内存范围错误2 非法波特率或校验3 非法从属地址4 非法Modbus参数值5 保持寄存器与Modbus从属符号重叠6 收到校验错误7 收到CRC错误8 非法功能请求/功能不受支持9 请求中的非法内存地址10 从属功能未启用1、重新设置主站询问时间,波特率、奇偶检验,停止位。
2、主、从站地址不能相同。
范围1-2473、检查通信线连接是否正常。
4、可采用MODBUS 串口软件测试下从站是否正常。
错误是10是未使能。
1、编程时使用SM0.1调用子程序MBUS_INIT进行初始化,使用SM0.0调用MBUS_SLAVE。
2、检查相关参数是否正常:、模式选择:启动/停止Modbus,1=启动;0=停止。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
常见问题
1.S7-200 SMART 是否支持Modbus ASCII 通信模式?
STEP 7-Micro/WIN SMART 软件未提供Modbus ASCII 通信模式指令库。
S7-200 SMART CPU若用于Modbus ASCII 通信时,则需要用户使用自由口通信模式进行编程。
2. S7-200 SMART CPU 集成的RS485 端口(端口0 )以及SB CM01 信号板(端口1 )两个通信端口能否同时作为Modbus RTU 主站或者同时作为Modbus RTU从站?
S7-200 SMART V2.2版本支持两个通信端口同时做MODBUS RTU主站,不支持同时做MODBUS RTU从站。
3. S7-200 SMART CPU作为Modbus RTU 主站如何访问Modbus 地址范围大于49999 的保持寄存器?
通常Modbus 协议的保持寄存器范围在40001 到49999 之间,这个范围对于多数应用来说已经足够了,但有些Modbus 从站保持寄存器区的地址会超出该范围。
Modbus RTU 主站协议库支持保持寄存器地址范围为(40001 到49999)或者(400001 到465536)。
如果Modbus 从站地址范围为400001 –465536,只需在调用MBUS_MSG 子程序时给Addr 参数赋相应的值即可,如416768。
4.S7-200 SMART CPU作为Modbus RTU 主站,多次调用MBUS_MSG 指令时,为什么该指令会出现6# 错误代码?
同一时间只能有一条MBUS_MSG 指令处于激活状态,如果激活多条MBUS_MSG 指令,将执行第一条MBUS_MSG 指令,所有后续MBUS_MSG 指令将中止执行并出现6# 错误代码。
多条MBUS_MSG 指令的执行需要采用轮询方式。
5.S7-200 SMART CPU作为Modbus RTU 主站,从站故障或者通信线路断开时,主站会尝试发送多次请求报文,从而导致通信时间过长。
如何减少主站的重发次数,以提高通信效率?
MBUS_MSG 指令被激活时将发送Modbus 请求报文帧,如果在Timeout 参数定义的时间间隔内主站未接收到从站应答,Modbus RTU 主站协议库默认的情况下还会再发送2 次Modbus 请求报文帧;在最后一次请求报文帧发送后,经过Timeout 参数定义的时间间隔后还未收到应答时,MBUS_MSG 指令的Done 完成位才被设置为 1 。
将mModbusRetries 变量的数值由2 改为0 ,即可取消Modbus 请求报文帧的重试次数。
mModbusRetries 变量的绝对地址可通过查询Modbus RTU 主站协议库的符号表获取,如图1. Modbus RTU 主站指令符号表所示。
6.为什么有的HMI 软件使用Modbus RTU 协议可以读取作为Modbus RTU 从站S7-200 SMART CPU 的数据,但是不能写入数据?
可能此软件使用Modbus功能15写多个开关量输出功能到S7-200 SMART CPU时,没有遵守从站协议中“以整字节地址边界(如Q0.0、Q2.0)开始、以8的整数倍为位个数”的规约。
定义HMI 软件严格执行此规律可以避免发生写入错误的情况
7.为什么有的HMI 软件使用Modbus RTU 协议读取作为Modbus RTU 从站S7-200 SMART CPU 的浮点型数据时会出现错误?
可能此HMI软件使用Modbus RTU通信协议时,处理保持寄存器中浮点数的存储格式与西门子的浮点数存储格式不同。
西门子的PLC遵循“高字节低地址、低字节高地址”的规约。
Modbus RTU的保持寄存器以“字”为单位,1个浮点型数据则由2个“字”构成。
HMI 软件在处理时可能会将保持寄存器的两个“字”互换位置,造成不能识别以西门子格式表示的浮点数。
如果HMI软件一方无法处理这种浮点数,则可在S7-200 SMART CPU中编程将存入保持寄存器区的浮点数的高“字”和低“字”互换。
8.S7-200 SMART紧凑型CPU作为Modbus RTU 从站时,已经将MBUS_INIT 指令的Mode 输入参数设置为“1”了,但是MBUS_SLAVE 指令还是会出现10 号错误(从站功能未启用)?
S7-200 SMART紧凑型CPU 不能扩展信号模块,不具有模拟量输入通道,如果MBUS_INIT 指令的MaxAI 输入参数设置不为“0”,则MBUS_SLAVE 指令会出现10 号错误。
9.S7-200 SMART CPU作为Modbus RTU 从站时,是否支持Modbus RTU 主站发送的广播命令?
S7-200 SMART CPU 作为Modbus RTU 从站时,不支持广播命令。
主站故障代码
从站故障代码
Modbus RTU 从站执行错误代码。