好几年没碰了,这几天昌晖仪表工程师又碰上了CP341通信模块,调试的过程仍然不够顺利,没有说程序设置完,通讯就OK了。这里把需要注意的细节总结一下:
1、模块的参数设置
对于RS485通讯,由于模块的缺省设置为422,所以需要设置。而且还要定期来检查是不是保存了,有没有丢了。如果硬件协议错误,CP上面会报红灯。
通讯波特率奇偶校验的问题,以往都是默认使用9600,8,N,1。这次跟FOXBORO的DCS对接,发现对方在N的情况下必须2个停止位,而在O或者E的时候则必须1个停止位。所以最后选择了9600,8,E,1。
通讯区的参数设置,尽管平常我们用4XXXX的寄存器区比较多,但其它未用的区,也要设置。否则会引起罢工。而且诊断还看不出故障。选择的DB块必须存在。另外还有一个limits的设置,必须充分考虑到给那些未用的数据区乱设的空值。不能超出这个limits之外。
所有上述的禁忌,如果发生,都会导致CP341静悄悄的罢工,而不给出任何故障。
2、在程序调用中,比较简单,不要听信CP341模块例程设置的那般复杂,因为FB块很多管脚原本就可以挂空的。
这里搞不懂的是CP_START和CP_START_FM的管脚,曾经以为只要把长1的M0.1送到START即可,但调试看,显然不行。导致对主站的查询指令不响应。这个时候从模块上看到只有偶尔的RX灯亮,而TX灯不亮。
还是老老实实按照例子的做法在OB100中做了SET M0.2和 RESET M0.3才搞定。这两个管脚到底要的啥变量?待以后把FB80打开看看是怎么回事。
通讯正常以后,观察RX灯和TX灯,RX闪亮的时间明显要短,而TX的闪亮的时间要长很多,应该是因为主站查询指令短,而上传的响应数据包太大吧!
最后,再次重申一下,使用CP341做MODBUS SLAVE真的很不好用!
哪里比得上随便买一个DP/MB的网关简单啊!而且维护还容易。如果模块有坏的,直接买个新的,拨码一模一样拨对了,换上即可。
来源:http://yunrun.com.cn/tech/731.html