大型电子投票表决系统通信协议的设计与实现

时间:2022-06-01 04:43:24

大型电子投票表决系统通信协议的设计与实现

作者简介:孟庆波(1973—),男,河南孟津人,讲师,硕士,研究方向:电力电子技术及变频调速(E-mail:);索娜(1973—),女,河南郑州人,副教授,硕士,研究方向:电气化铁道技术。

摘要:根据通信协议的分层结构,对物理层、数据链路层和应用层进行设计。实现了下位机(主控制器、分支控制器和表决器)的通信协议和上位机(计算机)的通信协议。该协议适用于计算机和单片机点对点通信的情况。本文所提出的通信协议的设计思想和思路方法对于相关设计和应用具有一定的参考意义和借鉴价值。

关键词:通信协议;单片机;计算机;电子投票表决系统

中图分类号:TP368文献标识码:A

1引言

大型电子投票表决系统支持大型会议(如300-500人)的电子表决功能,采集和统计大量重要的短时表决数据必须准确稳定,实时性好,能够实现大规模、中距离、高速率、低成本的多机通信。目前,对大型电子投票表决系统的研究和应用成为智能会议系统的重点和难点,而系统通信的可靠性在很大程度上依赖于是否有一个好的通信协议。本文重点研究大型电子投票表决系统的通信协议。

2通信协议设计

在集散控制系统中,上位机与下位机之间如何进行数据传输,怎么提高通信的效率和可靠性,以及对通信过程中的故障处理,帧格式的约定,都需要一套详尽的通信协议。

通常,一个集散控制系统由一个主控计算机(上位机)和一系列单片机(下位机)构成,它们之间再通过一定的物理媒介连接在一起,以完成必要的通信功能。对于一个特定的测控系统而言,所要测控的对象和所采取的测控算法是个有个性的东西;而上位机和下位机之间的通信可以看作是一系列命令流和数据流的流动,所采用的通信协议是用来保证传输过程的可靠和高效,是具有共性的,能够也应该有一个统一的设计标准[1]。

2.1通信协议的分层结构

通信协议的设计通常采用分层的机构,如ISO的OSI参考模型[2]。基于RS485串行接口的电气标准属于七层OSI模型物理层的协议标准,如图1所示。

物理层是利用物理媒介实现物理连接的功能描述和执行连接的规程,提供用于建立、保持和断开物理连接的机械的、电气的、功能的和过程的条件;数据链路层用于建立、维持和拆除链路连接,实现无差错传输的功能;应用层针对不同的应用,利用链路层提供的服务,完成不同通信节点之间的通信。

2.2通信协议的分层设计

1)物理层协议设计

上位机(计算机)和下位机(单片机)都挂在通信总线上,物理层的通信协议由RS485标准和多单片机通信方式共同实现。物理层要完成发送及接收字节流的任务,但对传输过程的可靠性不做出保证,而由高层协议来保证。物理层为链路层提供接口(以子程序的形式来描述),包括Send子程序(功能为发送一个字节)及Receive子程序(功能为接收一个字节)。

2)数据链路层协议设计

链路层可以引入帧长度域、冗余字节和CRC校验等方法进行差错处理[3]。链路层向上层(应用层)提供的接口为SendFrame(功能是发送一帧)和ReceiveFrame(功能是接收一帧),其中利用了下层(物理层)提供的接口。

3)应用层协议设计

应用层是协议的最高层,它的设计对于不同的应用可以有所不同,但是也存在很多通用性的原则。应用层也个有一定的差错检查能力:首先,它引入了冗余类型字节;其次,数据域字节也可以采用CRC校验等方法进行校验[3]。

2.3通信协议的机制规范

基于本协议的通信可以有两种机制。一种是面向握手的,即每发出一帧,总是要等待确认帧,否则将认为是通信出错。这是一种可靠的通信方式,适合传输系统命令和一些非常重要的系统参数。另一种是无握手的,即发送方假设接收方总是接收正确,从而无须等待确认帧就不停地发送,适合大量前端采集数据的发送。在计算机与单片机实现编程通信之前,两者之间需要规定握手协议,以保证数据收发的正确性[4]。在本系统中,单片机与单片机之间采用同样格式的通信协议。在上位机呼叫下位机地址之后,就可利用本协议的规范来设计具体的通信流程。

另外,设计一套完整的通信协议还要求结构简单、功能完备、高效可靠,同时要求具有通用性、兼容性与可扩充性,并且尽量标准化。

3通信协议实现

电子投票表决系统从本质上来讲,可认为是一个分布式的数据采集与集散控制系统。在集散控制系统中,普遍采用RS-485总线作为底层通信接口[5]。

大型电子投票表决系统以RS485半双工通信协议为基础,由计算机、主控制器、分支控制器和表决器构成一个多级分层的总线型网络结构。下位机(包含主控制器、分支控制器和表决器)采用AT89CXX系列单片机实现,构成了一个符合RS-485通信规范的主从分布、三级驱动、串行连接的多机网络[6]。

软件系统设计主要包括基于Windows操作系统的计算机(上位机)统计管理软件设计和采用单片机技术的主控制器、分支控制器和表决器(下位机)的通信程序编写。系统采用异步串行通信、主从呼叫响应的通信方式,完成下位机通信、上位机通信和上下位机间的通信等功能。主控制器、分支控制器和表决器基于RS-485通信协议,采用查询和地址数据回送的方式实现相互通信和统计功能。最后由主控制器对数据进行收集、统计和处理,并回送计算机。

通信协议的实现主要包括下位机通信协议、上位机通信协议、上下位机间的通信过程等几个部分。

3.1下位机通信协议

3.1.1主控制器通信协议

主控制器核心芯片89C52对应的主控制器的通信协议。

主控制器至PC机通信协议:

1) 一般约定:

(1)采用RS-485(也可采用RS-232,需转换)标准串行接口,完成主控制器至PC机通信。

(2)波特率为:9600 bit/s。

(3)1位起始位,8位数据,1位停止位,无校验。

2) 帧数据结构:

起始码(固定为ASCII码“BJ”)

命令码

数据

校验码

3) 命令码定义:

表1命令码定义表

命令名称

命令码(ASCII码)

1.表决器测试(注册)开始

“C”

2.表决器测试(注册)结束

“E”

3.表决开始

“B”

4.计票数据(表决动态数据)

“P”

5.表决结束(含计票结果)

“X”

3.1.2分支控制器通信协议

电子投票表决系统的分支控制器核心芯片89C51对应的分支控制器的通信协议。

通信协议约定:对于11.059M晶振,波特率设定为 14400,倍速为28800,单字节传输时间为 347us,延时为1ms。

3.1.3表决器通信协议

电子投票表决系统的表决器核心芯片89C2051对应的表决器的通信协议。

通信协议约定:对于11.0592M晶振,波特率设定为 9600,延时为10ms。接受和发送数据为定长8字节。表决时改为按键短时保持。

3.2上位机通信协议

Visual Basic提供三种通信编程方式。一是使用MSComm控件;二是使用Windows API;另外一个就是使用Inp和Out直接对端口读写方式[7]。本论文利用MSComm控件实现计算机与主控制器的通信。

在上位机开始表决子程序的通信协议中,包含以下过程:

1)设置打开通信端口1(COM1),并设置通信参数为19200波特,不校验,8个数据位,一个停止位。

2)发送单片机命令:

为了使主机能够对整个检测过程进行实时控制,须要在发送命令以后设定等待的时间,也可以通过条件判断下一步是发达还是接收命令。对发送的命令,可能是文本方式或二进制代码。发送命令过程是一个带参过程,这样可使发送命令简便易行。

3)接收数据:

接收数据是一个被动的过程,可以通过函数来实现,由定时器开启。在接收过程中,多数用特征字符,如“OK”、“#”等。这些需要在通信协议中约定。

4)Timer控件控制:

通过Timer控件来控制通信中的发送命令和接收数据过程,在通信程序中设置两个Timer控件分别控制发送单片机命令和接收单片机数据。

5)自动接收、监视总线状态和通信错误的处理:

自动接收、监视总线状态和通信错误的处理可以通过OnComm事件实现。通过控件中的OnComm事件可以捕捉和处理错误。当CommEvent属性值发生改变时,表明有通信错误,就会产生OnComm事件。这样可以监视通信线路状态,得到单片机和主机及单片机和单片机之间的通信进程。

综合以上分析,我们可知:利用Visual Basic的串行通信控件实现了计算机与多单片机之间的通信。同时,采用定时器控件控制收发过程,在必要的地方自动接收,使定时控制和通信过程完美地结合起来,大大加快了进程,克服了往多“握手”协议造成的通信速度缓慢的缺点。

3.3上下位机间的通信过程

计算机(上位机)与多单片机(下位机)之间的串行通信采用RS-485总线标准,半双工传输方式。

1) 通信均有上位机发起,下位机不主动申请通信。

2) 当处于轮询状态时,上位机依据下位机地址,定时向下位机发送呼叫指令。此时,每台下位机都中断接受并判断,地址不相符的下位机中断返回,执行其他下位机任务;反之则把本机地址及其状态作为应答信号发送给上位机。上位机接收到应答信号后,可以作进一步的处理。

4结论

大型电子投票表决系统的软件设计主要集中在通信协议的设计。通信协议是保证通信畅通的关键,在一定程度上也影响着网络通信的可靠性。本论文设计了一种以单片机为主控机的基于帧的通信协议,本通信协议适用于计算机和单片机点对点通信的情况。

需要注意的是,数据通信只是整个系统的一部分内容,要占用尽量少的时间,以求达到整个系统的高效率。在通信数据量一定的情况下,采用较高的波特率虽然比较好,但高的波特率必定要降低传输距离,在实际应用中必须仔细衡量。为了能使具体的命令、数据在网络上正确地传输,在数据链路层必须提供一定的网络协议,保证在物理层的比特流出现错误时能够进行检测和校正。为保证数据传输质量,对每个字节进行校验的同时,应尽量减少特征字和校验字。

本文所提出的通信协议的设计思想和思路方法对于相关设计和应用具有一定的参考意义和借鉴价值。

参考文献

[1]唐竟新,董彦伶,李庆祥.计算机控制管理的投票系统[J].清华大学学报:自然科学版, 1997,37(1):98-101.

[2]唐竟新,许欢.第二代计算机控制和管理的投票系统[J].计算机工程应用,2002, 13(5):203-205.

[3]孟德红.循环冗余校验码的软件实现[J].矿业研究与开发,2000,24(2):40-41.

[4]李朝青.PC机及单片机数据通信技术(第一版) [M].北京:北京航空航天大学出版社,2000.

[5]沈红星.一种基于RS485总线的网络协议及其实现方法[J].单片机与嵌入式系统应用,2003,16(6):13-15.

[6]余永权.ATMEL 89系列单片机应用技术[M].北京:北京航空航天大学出版社, 2002.

[7]詹国华.VB6.0环境下直接利用MSComm控件实现分布式下位机群控制[J].计算机工程,2001,7(5):164-166.

上一篇:云计算平台上实现30年气候资料整编的方法 下一篇:基于MPS4021的30W LED驱动电源设计