概述

大量的工控,比如PLC 使用RS485的ModBus RTU协议进行通信,因此在软件上使用ModBus RTU协议(参见:有关modbus通信协议的使用 ),

硬件接法

对于Max485的半双工通信来说,需要使用扩展口E1来控制方向。以上电路图是MAX485的最简接法,如果AB线路较长,有复杂的装配走向,则需要在AB端增加TVS二极管来进行静电防护等保护措施。

软件使用

发送部分

因此,在进入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数据包一样,直接参考就可以