论坛元老
 
- 积分
- 3190
- 金钱
- 3190
- 注册时间
- 2013-12-8
- 在线时间
- 438 小时
|
我的单片机是原子的阿波罗STM32F429 与施耐德的PLC通过Modbus协议进行485通讯。
单片机为主站,PLC为从站。
调试时发现PLC能够收到单片机的下发通讯报文,并能正确动作,但单片机收到的PLC回复报文死活不对。
我在通讯链路中加入USB转485对整个的通讯报文监视发现PLC的回复报文是正确的,但单片机就是收不到正确报文。
我通过对比报文发现单片机收到的报文比PLC发出报文少了开始的近11个字节的数据。
为了查找这个原因,我在线跟踪后发现485芯片的读取控制端用的是PCF8574的P6口,这个是IIC接口,485芯片从发送模式改为接收模式需要运行这个PCF8574_WriteBit(RS485_RE_IO,en)函数,而运行这个函数需要将近25ms的时间,就是这个25ms造成了有部分数据无法接收。从而使得MODBUS通讯一直报错无法正常通讯。
最后希望把485端口的控制端直接用IO控制,减少切换时间。
|
|