青岛工控机
Search
导航菜单
Search
文章检索
    工控机与单片机主从分布式控制系统串行通信
    作者:    发布于:2016/5/22    浏览次数:841

    1硬件接口设计本文所述控制系统由工控机和多台AT89C2051单片机组成,主从机之间数据传输采用异步串行通讯方式。由于工控机的串行通讯口是RS―232C接口,其逻辑电平对地是对称的,与AT89C2051单片机串行口输出的TTL电平不同,因此要保证两者之间可靠地进行数据传输,应在通讯线路中接电平转换器,常用的电平转换芯片有ICL232、MAX232芯片等。本文采用MAX232电平转换芯片。

      整个通信电路的设计如所示。

      多个单片机pc机通信电路2软件设计2.1AT89C2051单片机多机通讯功能AT89C2051单片机串行口具有:串行发送缓冲器/接收缓冲器(SBUF),串行口控制寄存器(SCON),特殊功能寄存器(PCON)。通过设置SCON可以有4种工作方式,其中工作方式2、3适用于多机通讯。AT89C2051单片机的串行通信方式3是波特率可变的9位为数据异步通信方式,也是目前多机通讯中应用最多的方式。在此方,AT89C2051传送一巾贞信息共11位:1位起始位,8位数据位,1位可程序控制为“1”或“0”的第9位数据和1位停止位,其中的第9位数据可作奇偶校验位,也可作“地址帧”和“数据帧”

      的识别标志位。

      2.2工控机通讯功能工控机配有串行异步通讯端口(COM1端口地址为3f8H,CM2端口地址为2f8H),接口板上的通用异步接收/发送器(UART),是一片8250或一片结构、编程方法与8250相同的芯片,内部有10个寄存器。PC机串行通讯程序设计,程序员只要应用输入/输出命令对UART内的寄存器进行输入/输出操作,从而设定串行通讯的波特率、数据传送格式、是否允许中断、发送或接收数据等。

      2.3―种新的多机通讯方法在常规的多机通讯方法中,奇偶校验位已用作发送地址码(通道号)或数据的特征位,而数据通信的校核则采用累加和校验方法。采用这种方法不但软件开销和进行通信的数据量增加了,而且实时性也受到影2.3.1通信的基本原理上位机发送数据给下位机,下位机要产生接收中断必须同时符合两个条件。

      数据为5 2―直置为“0”,并使+,清零,则不论第9位数据(+9 8)为何值,下位机均可产生串行接收中断,这样第9位就可作为差错检测的奇偶校验位了。如上位机与某下位机通信时,先发送地址码,待握手成功后再发送数据命令,此时该下位机的FLAG被置为“1”,相当于该机的“口袋”已打开,上位机不断从该下位机中取数据,取完无误后发出一命令使该下位机中的FLAG复原为“0”,实现“关口袋”。

      下位机向上位机发送数据时,先发送要传送数据的长度,然后才开始发送有效数据。

      约定00H为取数命令,0FFH为复位命令,通信采用偶校验,波特率设为2400b/s.上面给出PC机主函数的流程图,如所示。PC机通信程序采用VC++6.0语言编写。下位单片机的通信模块,包括主程序和中断服务程序,其程序流程图分别如和所示。何实现上位机与相应发送地址相符的下位机之间一对一通信呢,可采用软件方法。具体方法如下:在下位机程序中设立一个标志变量FLAG,初始化时FLAG置为“0”,当上位机发送数据时,各下位机均会产生接收中断,中断服务程序先判断本机FLAG的值。若FLAG为“0”,则把接收的数据与本机地址比较,如果一致,则置FLAG为6“,并发回本机地址码作为应答,否则马上跳出中断服务程序;如果FLAG是”1“,说明上位机发送来的是控制命令,则转相应命令处理程序,最后才跳出中断服务程序,返回主程序。上位机与该下位机通信完毕后,再令该下位机的FLAG为”0“。如果握手失败,则上位机发送复位命令给下位机,然后重新开始握手,三次都不成功则转出错处理。

      2.3.2软件实现方法及可靠性措施①对各下位机进行编号,并将其作为该机地址码。

      3结束语本文只概述了一种分布式控制系统串行接口方法,但各机之间的通讯接口方法较多,如:串口的直接连接(距离较近时)、通过调制解调器连接等。在软件编程方面,从机直接用单片机的汇编语言编写;而工控机的通讯子程序模块,同样可以采用多种语言实现。因此,在具体的系统设计时,可根据实际情况,选择其中的一种方法,并在编程时考虑错误检测和纠错技术,就能完成可靠的通讯。

脚注信息
Copyright(C)2009-2024 青岛亨利达电脑有限公司
脚注栏目