最近研讨了一下MODBUS通讯,在STC12C5A60S2单片机上完成了MODBUS协议的部分功用,便利上位机从单片机体系上获取数据,比方由单片机获取的温度、湿度、或许操控信号的状况等。有了MODBUS协议后,上位机的开发就很便利了,能够运用C#等高档言语经过串口通讯,或许运用组态王直接经过串口通讯而不需要写代码,这些都归功于MODBUS协议的开放性,许多的组态软件都能供给对他的支撑。乃至经过PLC直接能够和单片机通讯,比方在PLC体系上没有AD时,能够运用单片也来进行AD,然后经过MODBUS回来给PLC进行相应的操控。
经过MODBUS协议能够完成主机和多个从机进行通谢,而每个从机有仅有的地址,主机就靠这个地址和从机进行通讯。每一帧数据都要经过CRC进行校验,确保通讯的正确性。
在进行多机通讯时只需要把每个从机的串口并到一同即可,见后边的图。
单片机中3号功用的中心代码如下:
本例中每个从机回来80个字节的数据,1号机回来i+1, 2号机回来2*i+1 ,当然在实践运用中只需自己界说所回来的数据的意义即可。比方1,2字节代表温度,3,4字节代表湿度,接下来的4个字节代表P0,P1,P2,P3端口的状况等。能够自在界说,很便利。
详细作用见下图:
把两块板的串口经过杜绑线连在一同。
在TEXTBOX中输入从机的地址,回来相应的数据
假如输入的地址从机不存在,那么通讯将会超时,就会提示通讯毛病。这个是依据通讯超时来判别的。