- 艾宝物联IOBOV® ─ 工业无线测控专家
常见问题
S7-200 SMART是否支持Modbus ASCII通信模式?
STEP 7-Micro/WIN SMART软件未提供Modbus ASCII通信模式指令库。S7-200 SMART CPU若用于Modbus ASCII通信时,则需要用户使用自由口通信模式进行编程。
S7-200 SMART CPU集成的RS485 端口(端口 0 )以及SB CM01信号板(端口 1)两个通信端口能否同时作为Modbus RTU主站或者同时作为Modbus RTU从站?
S7-200 SMART v2.2版本支持两个通信端口同时做MODBUS RTU主站,不支持同时做MODBUS RTU从站。
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。
S7-200 SMART CPU作为Modbus RTU主站,多次调用MBUS_MSG指令时,为什么该指令会出现6#错误代码?
1.同一时间只能有一条MBUS_MSG指令处于激活状态,如果激活多条MBUS_MSG指令,将执行第一条MBUS_MSG指令,所有后续MBUS_MSG指令将中止执行并出现6#错误代码。多条MBUS_MSG指令的执行需要采用轮询方式。
2. Modbus库存储区中分配的建议地址区与编程中已使用的V存储区有重叠。
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主站协议库的符号表获取。
为什么有的HMI软件使用Modbus RTU协议可以读取作为Modbus RTU从站S7-200 SMART CPU的数据,但是不能写入数据?
可能此软件使用Modbus功能15写多个开关量输出功能到S7-200 SMART CPU时,没有遵守从站协议中“以整字节地址边界(如Q0.0、Q2.0)开始、以8的整数倍为位个数”的规约。定义HMI 软件严格执行此规律可以避免发生写入错误的情况。
为什么有的 HMI 软件使用 Modbus RTU 协议读取作为 Modbus RTU 从站 S7-200 SMART CPU 的浮点型数据时会出现错误?
可能此HMI软件使用Modbus RTU通信协议时,处理保持寄存器中浮点数的存储格式与西门子的浮点数存储格式不同。西门子的PLC遵循“高字节低地址、低字节高地址”的规约。
Modbus RTU的保持寄存器以“字”为单位,1个浮点型数据则由2个“字”构成。HMI软件在处理时可能会将保持寄存器的两个“字”互换位置,造成不能识别以西门子格式表示的浮点数。如果HMI软件一方无法处理这种浮点数,则可在S7-200 SMART CPU中编程将存入保持寄存器区的浮点数的高“字”和低“字”互换。
S7-200 SMART紧凑型CPU作为Modbus RTU从站时,已经将MBUS_INIT指令的Mode 输入参数设置为“1”了,但是MBUS_SLAVE指令还是会出现10#错误(从站功能未启用)?
S7-200 SMART紧凑型CPU不能扩展信号模块,不具有模拟量输入通道,如果MBUS_INIT指令的MaxAI输入参数设置不为“0”,则MBUS_SLAVE指令会出现10#错误。
S7-200 SMART CPU作为Modbus RTU从站时,是否支持Modbus RTU主站发送的广播命令?
S7-200 SMART CPU作为Modbus RTU从站时,不支持广播命令。