恭喜,你发布的帖子
发布于 2016-10-25 21:42:20
44楼
虽然两个端口都叫SMB2,但是能智能识别。在PORT0的中断里读SMB2,是PORT0的;在PORT1的中断里读,SMB2是PORT1的。
而且,库程序使用的自由口收发指令,不太可能是用SMB2,这个效率太低了。使用XMT、RCV是优选的。
查看了一下S7-200的,系统手册467页,也就是附录D特殊存储器(SM)标志位,清楚写到:SMB2为自由端口接收字符缓冲区;
SMB2和SMB3由0口和1口共用。当0口接收到字符并使得与该事件(中断事件8)相连的中断程序
执行时,SMB2包含0口接收到的字符,而SMB3包含该字符的校验状态。当1口接收到字符并使得
与该事件(中断事件25)相连的中断程序执行时,SMB2包含1口接收到的字符,而SMB3包含该字
符的校验状态。
那么modbus库程序是不是使用自由口模式实现的?很负责的说是的。
Micro 'n Powerv1.8中modbus通信页中,写到:通过 S7-200 CPU 通信口的自由口模式实现 Modbus 通信协议
我也查看过库的程序,就是用自由口的发送和接收指令。
再来看楼主的设计思想,他想把PLC的两个口都用modbus协议,试想当一个口正在使用smb2用来接收数据,另外一口同时也要接收数据,那么PLC必然要将第二个口接收的数据丢掉,这样就造成了楼主modscan的超时。
这里楼主不如改用PPI通信吧
请填写推广理由:
分享
只看
楼主