按照这个接线图连接后无法通讯,后来我考虑到modbus的通讯需要告诉对方是否准备还收发数据以及是否收发结束,所以应该状态也发给对方才行,所以把上面的接线图改成:
实现了硬件连接,可以通讯了。
2、通讯格式设置:
大家都知道西门子的数据存储格式和其他的公司有点不一样,西门子是低字高位,其他公司大多数都是采用的高字高位,如果只是传输字节的话,两者是没有区别的,如果用modbus传输32位的数据就需要注意这个问题了,因为modbus只是原封不动的把药传输的32位地址的数据传过去,具体这些位中式什么它不管的,所以如果没有注意到这个高低位的问题,很有可能你都不知道传过去的是什么。对方能够实现换位功能,则只要采用4321的数据格式就行了,否则就要我们手动把需要传输的数据在传输前或者接收后进行换位操作。第一次使用没有注意这个问题,通讯后的数据全变了,后来换位后正常了。
3、处理:
在实际测试使用过程中处理了前面说的问题后,又遇到了新的问题。实数,整数都能正确通讯,只有bool量无法通讯,只要增加bool量,则第三方系统报错,通讯中断,咨询技术服务人员也没有解决问题,后来我想既然整数能够正确处理,那么我就把bool量打包成字节按整数传输,这样还省了需要传输的变量数,只是双方都需要编程,发送bool量方打包数据把8个bool量转换成一个字节的整数,接收方再把这个整数分解成8个bool量。
通过以上的处理,终于实现的西门子400控制器通过modbus与和利时dcs系统的通讯。
Contact: 吴经理
Phone: 13808548642
Tel:
Add: 福建省泉州市洛江区万虹路99号