PC机与单片机间串行通信优化控制方法
2023-10-30杨韶斌窦忠国
杨韶斌 窦忠国
(肇庆市四会中等专业学校,广东 肇庆 526200)
在工业控制中,需要经常建立一个由上位机和下位机组成的系统,并通过上位机实现对多个下位机的控制。由于上位机与下位机之间的距离较远,因此需要进行上位机与下位机间的串行通信。上位机通常为PC 机,下位机通常为单片机,因此经常会不可避免地出现PC 机与单片机之间的串行通信问题[1]。目前PC 机的研发与应用已经使其具备了极强的监控和管理能力,而单片机在实际应用中具备了快速和容易被控制等特点。因此在实际应用中,通常都是通过PC 机串行接口与多个单片机相连接来实现对数据的传输[2-3]。基于该特点,为了实现PC 机与单片机间的串行通信控制,该文提出了一种全新的优化控制方法。
1 PC 机与单片机通信连接设计
为了实现PC 机与单片机之间的串行通信,采用RS-485 接口,该解耦器与TTL 电平相兼容,具有10Mbit/s 的数据传输速度,并具有较强的抗共模噪声干扰能力,将其引入PC 机与单片机通信连接结构上。PC 机与单片机通信连接结构示意图如图1所示。
图1 PC 机与单片机通信连接结构示意图
此外,RS-232 接口只能在总线上与一个收发机相连,也就是一个单站的功能。而RS-485 的接口最多可以连接128 台收发信机,即具备多个基站的功能,使使用者能够较容易地使用一个RS-485 接口来组建一个设备网络[4]。因此,RS-485 接口是PC 和MCU 间串行通信的首选。根据上述论述,由于PC 机的串口选用了RS232 电平信号,因此在单片机与PC机之间需要加装一个能够实现RS-232与RS-485 转换的接口。根据上述内容,完成对PC 机与单片机通信连接设计。
2 通信程序优化设计
在下位机中,通过查找和中断2 种方式实现数据的发送和接收。不管采用何种方法,它的串行数据的传输仅(利用MOVSBUF.A 指令)将数据从累加器转移到串口缓冲区寄存器即可。其串行数据的接收仅需将数据从串口缓冲区寄存器传输到累加器(采用MOVA、SBUF 指令)[5]。在具体的使用过程中,通常使用中断的方法来实现与上位机的通信。而上位机作为主控方,当接收到上位机发送的地址信息后,将该信息传输给相应的中断服务子程序,然后与上位机进行通信。它接收一个中断服务子例程的过程如下:第一步,关中断,现场保护。第二步,接收来自PC机发送的地址。第三步,判断该地址是否为本机地址,如果是则进行下一步操作;如果不是则直接进行现场恢复并开启中断。第四步,接收判断为本机地址的数据。第五步,判断数据是否接收完毕,如果接收完毕,则直接恢复现场,开启中断;如果未接收完毕,则需要返回第四步,直到完成对所有数据接收。最后恢复现场,开启中断,完成下位机接收中断服务子程序流程。上述流程也适用于多个单片机的通信。
该文利用可视化语言编写了PC 机的串口通信程序。Windows 的支持使串口装置被包装为MSComm 控件,非常便于VisualBasic 程序对串口的控制[6]。利用MSComm控制器,可以较容易地完成微机与微机以及微机与其外围设备之间的通信,具体操作步骤如下:选择可以添加的MSComm 控件,启动VisualBasic,并在弹出的Project 菜单中选择对应的Components 选项,选择所需的控件。然后从工具栏中选择电话机图标,将其拖拽到窗体中,单击鼠标右键,在弹出的串口属性对话框中完成对各项属性的设置。MSComm 控制中最重要的通信事件就是OnComm,而串行通信的一切都可以由程序来处理。通过OnComm事件,也可以不使用程序实时监控输入缓冲区,只要有数据传输,就可以引发OnCom 事件,实现通信数据的自动处理[7]。
3 串行异步通信与串行同步通信控制
串行通信通常以比特为单位,逐位完成对数据的传输。假设并行通信传送N位数据所需的时间是T,则串行通信所需时间如公式(1)所示。
式中:T'min为串行通信需要的最少时间。
串行通信由于每次只能传送一比特,而且都是统一的电压,因此很难出现数据丢失的情况。如果采取一定的保护措施,则串口通信的抗干扰性就会有较大增强。此外,其所需的传输线路较少,可以大幅减少经济费用,特别适用于长距离通信传输[8]。根据串行通信的特性,将串行通信分为串行异步通信与同步通信2 个部分。
在串行异步通信控制的过程中,进行数据传送时采用了独立的字节模式,每个字节前面有一个开始信号,字节后面有一个或多个结束信号[9]。为确保同步接收机的起止信号被利用,在有标签的地方,传送线路是空闲的,每字节传送一次,其前方的起始比特就会从一位元传送到一位元传送,这一传送代表着一位元传送的开始。发送结束时,发送线路通过一个或更多的终结位恢复到标记状态。此时传送器即可以传送下一个位字节。针对串行异步通信进行编码,其起始位占用1 位,字符编码占用7 位,第8 位为奇偶校验位,如图2所示。
图2 串行异步通信控制字符格式
同时,在串行异步通信控制过程中,每次发送一个字符,都必须同步附加一个标志信息在字符中。
针对串行同步通信的控制,把这些字符串串起来,组成一个完整的数据块。进行串行同步通信时,还需要在数据块前增加一个特殊的同步字符,并将组合后的字符作为串行同步头通信起始信号。在一组数据后加上一个检查符号,以检查通信中是否有错误。在同步通信中,字符间不存在空格,因此可以达到数十至数百波特,但是需要一个时钟来完成收发双方的同步。串行同步通信控制字符格式如图3所示。
图3 串行同步通信控制字符格式
根据实际PC 机与单片机的串行通信需要,选择异步通信或同步通信。进行通信前,先控制定时器、串行口进入初始化状态,然后将地址指针寄存器、程度计数器、校验和寄存器等设置为初始值,判断是否发送缓冲器为空。如果为空则返回,不为空则接收回答信号。再判定传输是否正确,如果不正确则返回,正确则结束单片机的传输。
4 优化前、后试验研究
4.1 试验准备
为对该文上述控制方法应用效果进行验证,进行下述优化前、后的对比试验研究。在试验前,准备51 单片机(AT58C40)、数据存储器(6264)和5×8的矩阵键盘。利用电平转换芯片转换为RS485 和TTL 接口能够识别的电平,通过串口传输到上位机上。利用VB/VC 编程在PC 机上显示所有接收和发送的通信数据。通过上述操作,可以实现对试验中产生的各项参数,例如通信发送与接收时间等数据的统计,为对比后续试验结果提供依据。在该基础上,还需设定串口主控件MSCOMM 的参数。将一个通信对象MSCOMM 用于串行通信,设定通信端口编号为1,设定通信协定handshaking=0。将发送速率及其他参数设定为SETTINGS=4800、n、8、1。开启通信端口,设 PORTOPEN 为ture。完成上述设置后,进行PC 机与单片机之间的串行通信,并分别从优化前、后串行通信传输速度方面和优化前、后串行通信质量方面,验证优化控制方法的应用可行性。
4.2 优化前、后串行通信传输速度对比
完成上述试验准备后,对比控制方法优化前、后在应用中PC 机与单片机间串行通信数据量。分别设置5 组条件,5组不同通信条件的基本信息见表1。
表1 5 组串行通信条件设置
在上述5 组串行通信传输过程中,分别利用优化前的控制方法和优化后的控制方法对其进行串行通信控制,通信数据量记录见表2。
表2 5 组串行通信应用优化前、后控制方法的通信数据量
从表2 中的2 组串行通信数据量对比可以看出,在优化前控制方法应用下,其串行通信数据量最高为598.25YB,优化后最高为865.32YB,最低也达到了826.26YB。在相同的传输时间条件下,优化后控制方法应用下的串行通信数据量明显更大。因此,通过上述试验结果可以证明,优化后的控制方法在实际应用中可以有效提高PC 机与单片机之间串行通信的传输速度。
4.3 优化前、后串行通信质量对比
上述从串行通信传输的速度方面对比了优化前、后控制方法的应用性能。在该基础上,针对优化前、后控制方法应用下PC 机与单片机之间串行通信质量进行对比。选择将串行通信过程中产生的信干噪比为评价指标,信干噪比是指串行通信过程中正常通信信号与干扰、噪声等信号之和之间的比值,如公式(2)所示。
式中:S为信干噪比;W1为正常通信信号有效传输功率;W2为干扰信号有效传输功率;W3为噪声信号有效传输功率。
通过计算得出的信干噪比S,取值越大,说明串行通信中的正常信号占比越大,通信质量越优;取值越小,说明串行通信中干扰信号和噪声信号占比越大,通信质量越差。以表1 中编号为TX-#01 的通信组合为例,由PC 机A 发送通信信号,由单片机A 接收通信信号,将其通信时间控制为50s,记录50s 内优化前、后控制方法应用下的2 组信干噪比,结果如图4所示。
图4 优化前、后串行通信质量对比图
从图4 中得到的结果可以看出,在优化前、后控制方法应用下,信干噪比均呈现出先增加、后降低的变化趋势,但优化后控制方法应用下的信干噪比始终高于另一组。因此,上述试验结果可以证明,应用优化后的控制方法,串行通信质量得到了显著提升。
5 结语
该文针对PC 机与单片机之间的串行通信需要提出了一种全新的优化控制方法,并对比优化前、后的应用效果证明了优化后控制方法的应用可行性。在实际应用中,如果存在多个控制对象,则可以在该文优化控制方法应用的基础上构成集散结构,实现一台PC 机和多个单片机的同步控制,为单片机应用适应性提升提供更有利的条件。