概述
大量的工控,比如PLC 使用RS485的ModBus RTU协议进行通信,因此在软件上使用ModBus RTU协议(参见:有关modbus通信协议的使用 ),
硬件接法
对于Max485的半双工通信来说,需要使用扩展口E1来控制方向。以上电路图是MAX485的最简接法,如果AB线路较长,有复杂的装配走向,则需要在AB端增加TVS二极管来进行静电防护等保护措施。
软件使用
发送部分
- 初始化之后,让E1呈现低电平,485处于接收状态;当发送时候,E1呈现高电平,485处于发送状态,在发送之后,立即切换为低电平;
因此,在进入RS485状态时,使用:
setcomadv(0,9600,8,0,1,1); //设置串口,高级模式,可设置成modbus
gpio_mode(0,1); //设置E1为输出
gpio_out(0,0); //低电平接收
于是,在appbase中添加发送方法:
void send485(int addr,int cmd,int bs,int size){
gpio_out(0,1); //高电平发送
modbus_send(addr,cmd,bs,size);
gpio_out(0,0); //低电平接收
}
于是调用这个函数发送即可;
当然,也可以使用其他扩展口来控制RS485发送方向;
接收部分
接收部分与ModBus接收RTU数据包一样,直接参考就可以