论文部分内容阅读
【摘 要】单片机作为智能单元越来越多地应用到复杂系统中的低层部分,进而对各个单元之间的多机通讯提出更高的要求。本文给出依靠单片机串口、利用CAN控制器构成CAN总线以及采用双端口RAM等三种方法来实现单片机之间的多机通讯,并给出了三种多机通讯的特点和实现过程,对于组建多机通讯的智能系统具有一定的参考价值。
【关键词】多机通讯、串口通讯、CAN总线、双端口RAM
【Abstact】 microcontroller as an intelligent unit is widely applied to the lower part of complex system, and then put forward the higher requirements for multi-machine communication between each unit. In this paper, three methods such as serial port, CAN bus using CAN controller and dual-port RAM is given to realize multi-machine communication between the microcontrollers. It gives the characteristics of the three multi-machine communication and implementation process. It has a certain reference value for the formation of intelligent multi-machine communication system.
【Keywords】: multi-machine communication; serial communication; CAN bus; dual-port RAM.
中图分类号:TP317 文章标识码:A
0.引言
目前,智能控制已成为一种趋势并深入到我们生活的各个层面,在我们生活的各种场合都有智能控制的影子。智能控制的深入也对其要求在不断地提高,可视化、灵活、稳定可靠、操作方便等都成为考核和验证一个系统能否占领市场的性能指标。无论是家用电器、智能楼宇还是工业类产品都要求具有人性化操作的功能,显示屏、键盘等用户界面和实时可靠的控制已成为产品不可或缺的部分。要保证系统各部分可靠运行、又要保障给用户提供良好的操作界面,将显示、各个关键控制部分等分别由不同的控制单元来完成,而各个控制单元之间则通过总线的通讯方式完成数据和信息的交换已成为构建系统的一种方式。本文针对控制单元之间如何通讯进行了探讨,对几种通讯方式进行对比并给出其实现的途径。
1.单片机的串口实现多机通讯
通过设置单片机的串口可以方便实现三个或三个以上单片机之间的多机通讯,构成主从式多机通讯系统。串口通讯的电器特性、逻辑电平和各种信息都由其自身的特点。下面以C51系列单片机为例介绍串口多机通讯的实现过程,其它单片机的配置和应用也类似。
C51系列单片机之间通过多机通讯进行数据交换时,需要将串口设置为工作方式2或者3,数据的接收受到SM2的控制。多机通讯涉及下面几个过程。
1.1主机广播查询设置。主机发送的信息有地址和数据两类。当主机设置TB=1时,表示发送的为地址,TB=0时表示要发送的为数据。当主机的TB=1,各从机均设置成SM2=1时,从机监听主机发来的广播信号。
1.2各从机确认。各从机通信息的第9位(RB8)来区分收到的是地址还是数据。当RB8=1时,表示从机收到的信息是地址,从机将其和自身设备的地址进行比较。如果两者相同,该从机将复位SM2=0,置位RI=1,并给上位机发送确认信息设置成点对点的通讯。该从机将收到的地址当作和主机的握手信号进入接收信息状态。其它从机由于地址不匹配而处于等待状态直到总线被释放。
1.3点对点通讯。主机收到从机的确认信息后,置TB8=0进入数据发送状态,即随后发送的每个数据的第九位都是0。虽然所有的从机都能接收到数据帧,但是只有SM2=0的从机才会将数据送入SBUF,与主机进行一对一的通信。地址不匹配的从机则保持SM2=1和RB8=0,并将主机发送的数据丢弃。当从机给主机发送数据帧时,需要将TB8置为0,表示传送的为数据。
1.4总线占有权的释放。从机处于接收状态时SM=0,并将接收的数据存入指定的内存中,接收完毕后置位SM=1,交出总线占有权。
串行多机通讯中各从机的地址不同,地址匹配时只会有一个从机被选中。因此在任意时刻,只能由主机与某台从机进行数据传输,各个从机之间的通信必须通过主机来中转。例如从机1先将数据传给主机,再由主机传送给从机2完成从机1和2之间的通讯。利用单片机串口构成的多级通讯的软件流程图如图1所示。
单片机的TTL电平与RS-232C标准的电器特性不同,如果单片机的串口要和标准的RS-232C建立串口通讯必须进行电平转换。单片机的串口通过RS-232C电平转换芯片MAX232可构成232串口通讯,通过光电隔离的方法可构成RS-422通讯,通过MAX483芯片可构成RS-485通讯等。通过这些通讯方式就可以组成相应的多机通讯系统。利用单片机的串行口组成的多机通讯系统电路结构简单、成本低、软件也较易实现,正是基于这样的优点,使得其得到广泛的应用。但是单片机的串口通讯也存在如下的缺点:
(1)接口的电平值较高,接口电路的芯片易损坏,且需要电平转换电路来完成与TTL电路的连接;
(2)传输速率较低;
(3)接口的信号线和信号返回线之间容易产生共模干扰,抗噪声干扰能力差。 (4)传输距离有限,实际的最大传输距离仅在50米左右。
2.CAN总线实现多机通讯
CAN通讯是德国Bosch公司20世纪80年代初为解决现代汽车中众多的控制与测试系统之间的数据交换而开发的一种通讯协议。
由于其高性能、高可靠性及独特的设计,目前它已成为国内外最普及和实时性最高的通讯方式。CAN通讯的特征如下:
(1)数据信号采用差分电压传输,仅有CAN_H和CAN_L两条数据线;
(2)介质可用双绞线、同轴电缆或光纤,抗干扰能力强;
(3)可以多主方式工作,网络上任意一个节点均可以在任意时刻主动的向其它节点发送信息而不分主从,通讯方式灵活;
(4)可点对对、点对多传送数据,而且接到信息可分成不同的优先级用于满足不同的实时要求;
(5)采用短帧结构,校错能力强,保证了极低的出错率,被公认为是目前最有发展前途的通讯方式之一。
目前广泛使用的C51系列,AVR等单片机都可以通过独立的CAN控制器如82C200、SJA1000、Intel82536/82527等构成CAN总线。
多机通讯系统中的各个功能单元和这些CAN控制器组成的CAN接口结构图如图2所示。
8051单片机和PHILIPS半导体公司推出的SJA1000组成的电路如图3所示,SJA1000可工作在PeliCAN工作模式,支持CAN2.0B协议。
在图3中,SJA1000是一个CAN总线接口芯片,通过它完成8051和CAN总线上其它CAN模块之间的数据交换;8051是CAN总线接口电路的核心,承担CAN控制器的初始化、CAN的收发控制等任务。
不具备在片CAN的微控制器之间通过图3的连接就可以组成CAN总线网络,通过CAN通讯完成不同功能单元之间的数据交换,实现多机通讯。CAN总线是一种有效支持分布式控制或实时控制的通讯,在单片机或现场系统多控制单元之间实现数据通讯具有广泛的前景。
3.双端口RAM实现多机通讯
数据获取及交换是多CPU系统的重要组成部分。数据交换的通讯速率要求10k左右或者100k以上的系统中,传统的并行接口和串行接口设计在通信速率和可靠性方面都不易满足要求,用双端口RAM或四端口RAM来实现CPU之间高速的数据交换则是一个很好的实现方案。
目前市场上由多种专用双端口RAM芯片,如IDT7132/7142、DS1609等。双端口存储器具有两套地址线、数据线和读写控制线,因而可使两个CPU分时独立访问其内部RAM资源,完成数据的交换和共享。
双端口RAM内一般都有一个总线抢答占优先级比较器。只要双CPU不同时访问同一存储单元,那么较先送出地址的CPU将拥有该单元的本次访问优先权,而另一个CPU的地址与读写信号将被屏蔽掉,同时通过“busy”引脚告知该CPU以使之根据需要对该单元重新访问或撤销本次访问。
专用双端口RAM的优点是通讯速率高,实时性强,接口比较简单,两边CPU都可以主动进行数据传输,在通讯实时性要求高的场合得到很好地应用。双图4双端口RAM接口电路图
端口RAM的接口电路图如图4所示,利用双端口或者四端口RAM可以实现多CPU之间的数据交换。这种方式的缺点是成本高,需要克服竞争现象。
4.多机通讯实现方法的对比
单片机串口构成的串行多机通讯系统中,主机和各从机都运行着各自的程序,并依靠串行通讯进行联系,各从机能按主机的要求协调各种工作,构成一个相对完美的主从式实时多级系统。
该系统因设计成本低得到广泛的应用,当从机数过多时主机需要不停地查询或响应从机的中断,并要在一定的时间内等待和接收数据,主机的负荷会增大许多,此时软件设计也相对复杂,这是该系统的缺陷。
CAN通讯是一种有效支持分布式控制或实时控制的串行通讯,它在可靠性和实用性方面远远优于RS-485等工业总线,而且设计成本也不高,是目前国内外最普及和实时性最高的现场总线,采用这种方式实现多机通讯将是一个趋势。
双端口或四端口RAM集成电路内部具有冲突仲裁电路,接口电路简单,便于操作,可用在数据交换率高、实时性强的场合,在实际中一些关键的参与控制的量可通过双端口RAM传递给需要的CPU控制器进来相应的控制。
5.结论
单片机作为智能单元越来越多地应用到复杂系统中的低层部分,进而对各个单元之间的多机通讯提出更要的要求。在设计单片机多机通讯时,需要从设计成本、数据交换量的大小、传输速度、抗干扰能力、软件实现的难易程度等方面综合考虑来选择合适的通讯方式,合理设计通讯的硬件和软件以获得高可靠性、强干扰能力和容错能力的系统。
本文提出依靠单片机串口、利用CAN控制器构成CAN总线以及采用双端口RAM等三种方法来实现单片机控制单元之间的多机通讯,在实际中都有应用,在不同的场合效果都比较理想!
参考文献:
俞国亮MCS-51单片机原理与应用.北京:清华大学出版社,2008
邬宽明.CAN总线原理和应用系统设计.北京:北京航空航天大学出版社,1996
【关键词】多机通讯、串口通讯、CAN总线、双端口RAM
【Abstact】 microcontroller as an intelligent unit is widely applied to the lower part of complex system, and then put forward the higher requirements for multi-machine communication between each unit. In this paper, three methods such as serial port, CAN bus using CAN controller and dual-port RAM is given to realize multi-machine communication between the microcontrollers. It gives the characteristics of the three multi-machine communication and implementation process. It has a certain reference value for the formation of intelligent multi-machine communication system.
【Keywords】: multi-machine communication; serial communication; CAN bus; dual-port RAM.
中图分类号:TP317 文章标识码:A
0.引言
目前,智能控制已成为一种趋势并深入到我们生活的各个层面,在我们生活的各种场合都有智能控制的影子。智能控制的深入也对其要求在不断地提高,可视化、灵活、稳定可靠、操作方便等都成为考核和验证一个系统能否占领市场的性能指标。无论是家用电器、智能楼宇还是工业类产品都要求具有人性化操作的功能,显示屏、键盘等用户界面和实时可靠的控制已成为产品不可或缺的部分。要保证系统各部分可靠运行、又要保障给用户提供良好的操作界面,将显示、各个关键控制部分等分别由不同的控制单元来完成,而各个控制单元之间则通过总线的通讯方式完成数据和信息的交换已成为构建系统的一种方式。本文针对控制单元之间如何通讯进行了探讨,对几种通讯方式进行对比并给出其实现的途径。
1.单片机的串口实现多机通讯
通过设置单片机的串口可以方便实现三个或三个以上单片机之间的多机通讯,构成主从式多机通讯系统。串口通讯的电器特性、逻辑电平和各种信息都由其自身的特点。下面以C51系列单片机为例介绍串口多机通讯的实现过程,其它单片机的配置和应用也类似。
C51系列单片机之间通过多机通讯进行数据交换时,需要将串口设置为工作方式2或者3,数据的接收受到SM2的控制。多机通讯涉及下面几个过程。
1.1主机广播查询设置。主机发送的信息有地址和数据两类。当主机设置TB=1时,表示发送的为地址,TB=0时表示要发送的为数据。当主机的TB=1,各从机均设置成SM2=1时,从机监听主机发来的广播信号。
1.2各从机确认。各从机通信息的第9位(RB8)来区分收到的是地址还是数据。当RB8=1时,表示从机收到的信息是地址,从机将其和自身设备的地址进行比较。如果两者相同,该从机将复位SM2=0,置位RI=1,并给上位机发送确认信息设置成点对点的通讯。该从机将收到的地址当作和主机的握手信号进入接收信息状态。其它从机由于地址不匹配而处于等待状态直到总线被释放。
1.3点对点通讯。主机收到从机的确认信息后,置TB8=0进入数据发送状态,即随后发送的每个数据的第九位都是0。虽然所有的从机都能接收到数据帧,但是只有SM2=0的从机才会将数据送入SBUF,与主机进行一对一的通信。地址不匹配的从机则保持SM2=1和RB8=0,并将主机发送的数据丢弃。当从机给主机发送数据帧时,需要将TB8置为0,表示传送的为数据。
1.4总线占有权的释放。从机处于接收状态时SM=0,并将接收的数据存入指定的内存中,接收完毕后置位SM=1,交出总线占有权。
串行多机通讯中各从机的地址不同,地址匹配时只会有一个从机被选中。因此在任意时刻,只能由主机与某台从机进行数据传输,各个从机之间的通信必须通过主机来中转。例如从机1先将数据传给主机,再由主机传送给从机2完成从机1和2之间的通讯。利用单片机串口构成的多级通讯的软件流程图如图1所示。
单片机的TTL电平与RS-232C标准的电器特性不同,如果单片机的串口要和标准的RS-232C建立串口通讯必须进行电平转换。单片机的串口通过RS-232C电平转换芯片MAX232可构成232串口通讯,通过光电隔离的方法可构成RS-422通讯,通过MAX483芯片可构成RS-485通讯等。通过这些通讯方式就可以组成相应的多机通讯系统。利用单片机的串行口组成的多机通讯系统电路结构简单、成本低、软件也较易实现,正是基于这样的优点,使得其得到广泛的应用。但是单片机的串口通讯也存在如下的缺点:
(1)接口的电平值较高,接口电路的芯片易损坏,且需要电平转换电路来完成与TTL电路的连接;
(2)传输速率较低;
(3)接口的信号线和信号返回线之间容易产生共模干扰,抗噪声干扰能力差。 (4)传输距离有限,实际的最大传输距离仅在50米左右。
2.CAN总线实现多机通讯
CAN通讯是德国Bosch公司20世纪80年代初为解决现代汽车中众多的控制与测试系统之间的数据交换而开发的一种通讯协议。
由于其高性能、高可靠性及独特的设计,目前它已成为国内外最普及和实时性最高的通讯方式。CAN通讯的特征如下:
(1)数据信号采用差分电压传输,仅有CAN_H和CAN_L两条数据线;
(2)介质可用双绞线、同轴电缆或光纤,抗干扰能力强;
(3)可以多主方式工作,网络上任意一个节点均可以在任意时刻主动的向其它节点发送信息而不分主从,通讯方式灵活;
(4)可点对对、点对多传送数据,而且接到信息可分成不同的优先级用于满足不同的实时要求;
(5)采用短帧结构,校错能力强,保证了极低的出错率,被公认为是目前最有发展前途的通讯方式之一。
目前广泛使用的C51系列,AVR等单片机都可以通过独立的CAN控制器如82C200、SJA1000、Intel82536/82527等构成CAN总线。
多机通讯系统中的各个功能单元和这些CAN控制器组成的CAN接口结构图如图2所示。
8051单片机和PHILIPS半导体公司推出的SJA1000组成的电路如图3所示,SJA1000可工作在PeliCAN工作模式,支持CAN2.0B协议。
在图3中,SJA1000是一个CAN总线接口芯片,通过它完成8051和CAN总线上其它CAN模块之间的数据交换;8051是CAN总线接口电路的核心,承担CAN控制器的初始化、CAN的收发控制等任务。
不具备在片CAN的微控制器之间通过图3的连接就可以组成CAN总线网络,通过CAN通讯完成不同功能单元之间的数据交换,实现多机通讯。CAN总线是一种有效支持分布式控制或实时控制的通讯,在单片机或现场系统多控制单元之间实现数据通讯具有广泛的前景。
3.双端口RAM实现多机通讯
数据获取及交换是多CPU系统的重要组成部分。数据交换的通讯速率要求10k左右或者100k以上的系统中,传统的并行接口和串行接口设计在通信速率和可靠性方面都不易满足要求,用双端口RAM或四端口RAM来实现CPU之间高速的数据交换则是一个很好的实现方案。
目前市场上由多种专用双端口RAM芯片,如IDT7132/7142、DS1609等。双端口存储器具有两套地址线、数据线和读写控制线,因而可使两个CPU分时独立访问其内部RAM资源,完成数据的交换和共享。
双端口RAM内一般都有一个总线抢答占优先级比较器。只要双CPU不同时访问同一存储单元,那么较先送出地址的CPU将拥有该单元的本次访问优先权,而另一个CPU的地址与读写信号将被屏蔽掉,同时通过“busy”引脚告知该CPU以使之根据需要对该单元重新访问或撤销本次访问。
专用双端口RAM的优点是通讯速率高,实时性强,接口比较简单,两边CPU都可以主动进行数据传输,在通讯实时性要求高的场合得到很好地应用。双图4双端口RAM接口电路图
端口RAM的接口电路图如图4所示,利用双端口或者四端口RAM可以实现多CPU之间的数据交换。这种方式的缺点是成本高,需要克服竞争现象。
4.多机通讯实现方法的对比
单片机串口构成的串行多机通讯系统中,主机和各从机都运行着各自的程序,并依靠串行通讯进行联系,各从机能按主机的要求协调各种工作,构成一个相对完美的主从式实时多级系统。
该系统因设计成本低得到广泛的应用,当从机数过多时主机需要不停地查询或响应从机的中断,并要在一定的时间内等待和接收数据,主机的负荷会增大许多,此时软件设计也相对复杂,这是该系统的缺陷。
CAN通讯是一种有效支持分布式控制或实时控制的串行通讯,它在可靠性和实用性方面远远优于RS-485等工业总线,而且设计成本也不高,是目前国内外最普及和实时性最高的现场总线,采用这种方式实现多机通讯将是一个趋势。
双端口或四端口RAM集成电路内部具有冲突仲裁电路,接口电路简单,便于操作,可用在数据交换率高、实时性强的场合,在实际中一些关键的参与控制的量可通过双端口RAM传递给需要的CPU控制器进来相应的控制。
5.结论
单片机作为智能单元越来越多地应用到复杂系统中的低层部分,进而对各个单元之间的多机通讯提出更要的要求。在设计单片机多机通讯时,需要从设计成本、数据交换量的大小、传输速度、抗干扰能力、软件实现的难易程度等方面综合考虑来选择合适的通讯方式,合理设计通讯的硬件和软件以获得高可靠性、强干扰能力和容错能力的系统。
本文提出依靠单片机串口、利用CAN控制器构成CAN总线以及采用双端口RAM等三种方法来实现单片机控制单元之间的多机通讯,在实际中都有应用,在不同的场合效果都比较理想!
参考文献:
俞国亮MCS-51单片机原理与应用.北京:清华大学出版社,2008
邬宽明.CAN总线原理和应用系统设计.北京:北京航空航天大学出版社,1996