(未完待续,下一期继续讲单片机如何接收数据)。
PLC和微控制器 (5)
下面的电路是微控制器从总线发送和接收数据的电路。 微控制器是PIC16F882。 Q5Q8是一个发送跟随器,以增加总线的驱动能力。 IC3 是一个运算放大器,用作比较器,用于向 PIC16F882 的 C2 引脚导出总线复位脉冲。 、Q14Q5解码数据到C7引脚,C6引脚通过Q6Q7将数据返回到232总线。 J2用于单片机地址码输入(用短路端接地为0,悬空为1)。 这样的总线可以承载很多单片机,BO~B7引脚内部有上拉电路,J3是编程接口。
PIC单片机的编程还需要MPLAB_IDE集成开发环境(网上搜索有很多)和KIT3编程下载器(100元左右)。
PLC与单片机之间的通讯方式是由PLC主动、不断地询问单片机来进行的。 微控制器只有在检查地址正确后才会做出响应。 这种通信方式不会造成数据冲突,可靠性高。 在自动化领域,微控制器一般用于工件的状态监控,分为开关量和模拟量。 模拟值必须通过单片机内部的A/D转换器转换成数据回PLC。
关于总线通讯协议,可以随意设置。 之前的定义是PLC下游查询指令是双8位结构,如下图。
单片机的响应也采用双8位结构,因为单片机的A/D结果一般为10或12位,其余位用于切换数据返回。
如何保证单片机100%接收到总线上的数据并响应返回的数据取决于PLC输出的串口复位脉冲(接单片机的B0引脚INT外部中断输入)。 上升沿关闭串口,下降沿打开串口。 这样就完成了单片机的串口复位。 由于Y1串口复位脉冲是由PLC发出的,PLC和单片机在规定的时间内发送和接收数据,是一种非常可靠的总线技术。
下面是串口复位子程序,用汇编语言编写。
PIC单片机的串口可以同时接收和发送两个8位数据。 这是由PIC单片机的串口缓冲区结构决定的。 下图是串口接收部分的汇编程序。
首先判断地址是否相同。 如果相同,则判断是读还是写。 如果是读指令,则需要发回数据。 首先,将数据保存到TX_WWW_H和TX_WWW_L。 此时,自定义的发送数据临时寄存器在主程序中。 始终调用下面的后台数据发送子程序,始终监视TX_WWW_H和TX_WWW_L是否为零,只要有数据就发送数据。
至此,PLC与单片机之间的通讯就可以完成了。