在使用S7-200 SMART V3.0版本PLC过程中发现一下问题,希望您向西门子官方反馈一下。
具体问题如下:
PLC采用自由口格式通信与我们的485拉线设备通信读取拉线的动作状态,通信波特率设置2400,N,8,1,现场使用
中拉线设备数量不固定,我们查询时需要从1~32站轮询,在线的拉线就返回数据,不存在的拉线查询超时45ms结束
然后进行下一个拉线查询。PLC发送查询命令后在线拉线设备立即返回数据。PLC发送查询命令格式共8个字节:
起始字符(16#02) 站号(16#81~16#A0对应1~32#站) 固定字节1(16#D2) 固定字节2(16#82) 固定字节3(16#C2)
固定字节4(16#B4) 固定字节5(16#00) 结束字符(16#03),拉线接到查询命令后返回数据格式共8个字节:起始字符(16#02)
站号(16#81~16#A0对应1~32#站) 固定字节1(16#D2)固定字节2(16#82) 固定字节3(16#C3)
拉线状态字节(≥16#80,bit1~bit4代表拉线状态) 固定字节4(16#00) 结束字符(16#03)。
采用发送--接收式轮询,原来用V2.8版本的PLC时没有问题,现在改用V3.0版本PLC后用原来的程序移植后出现帧错误SMB86=1
接收1个错误字节后退出,用串口调试助手连接我们的拉线查询接收正常。我们分析原因是V3.0版本的固件程序自由口通信部分
时序控制有问题,PLC发送命令完成后,设备接收到查询命令后需要延时1段时间再返回数据,否则会造成总线数据冲突。
为验证此问题我用1台V2.8 ST60模拟拉线设备,V2.8版本PLC接收到查询命令后延时20ms再回复数据,这时V3.0 PLC这边就可以
正常接收数据不在报帧错误了。