APP下载

PC与单片机多机RS232串口通信设计分析

2020-01-01席小卫陈荻茜田铭繁

数字通信世界 2020年2期
关键词:PC机串口数值

席小卫,陈荻茜,苏 喆,田铭繁

(兰州理工大学技术工程学院,兰州 730200)

0 引言

现阶段,控制系统的功能逐渐增加,内部构造日益复杂,通常以工控机为上位机,以单片机为下位机,处于被控对象的地层,借助PC机完成数据采集与分析工作。由于PC机和单片机之间需要完成数据传输,这时需要多个RS232串口的支持,本文针对串口通信的设计进行分析和研究。

1 RS23 2串口通信原理

串口通信主要通过ASCII码进行传输,采用地线进行接收和发送,通信段在一条线路中发送信息,可在另一条线路中进行接收。其中,波特率、数据位、奇偶校验位等参数十分关键。

(1)波特率。可对通信速度进行反应,与时钟的周期相同,但与距离呈反比,只有相似仪器中才可使用这一参数。

(2)数据位。可对通信数据进行体现,通常标准为5、7、8位,发送信息与标准值之间具有一定关联。标准码由7或者8位组成,在单包中最后一位是停止位,在定时时可通过传输线进行数据传输,因此设备时钟不同。在通信时设备之间很难做到同步传输,因此差异性相对较小,此时可发挥停止位的作用,对传输进行约束,停止位的数量应得当,不可过多或者过少,以适当的位数保障数据的传输率。

(3)奇偶校验位。该项参数可对串口通信的正误率进行检验,主要方式为高、低、奇、偶等类型,在奇偶校验的过程中,数据最末位便是校验位;对于设备来说,对位的状态进行掌握,可有效判断数据传输是否受到其他设备的干扰。

2 PC与单片机RS23 2 串口通信设计

2.1 连接框架

在该系统中,主要采用“一主多从”的总线连接方式,与总线特征相结合,将两个120的电阻分别连接在两侧,芯片类型为MAX485,在驱动器中最多可带128个单片机,因此通信数量不可超过128个。

2.2 软件设计

在数据传输过程中,单片机通常采用中断方式,在初始化时,SM2的数值为1,工作方式为3,波特率为9600。通信协议为:

(1)PC机将地址信息传输给单片机,由接收端对信息进行查询。

(2)当单片机接收到PC机传输来的信息后,即可执行程序,使串口通信中断,与自身现有的地址进行对比,当地址与自身设定的地址相同时,单片机即可将应答信号发送出来,使SM2的数值为0,反之则中断返回。

(3)当PC机接收到地址信息,并将应答信号传输后,即可将开始数据发送出去,如若未接收到正确的应答信号,则需要继续发送地址。当单片机收到数据后,即可执行相应指令。

(4)当单片机接收到PC机传输的信息后,即可开启通信中断程序,当单片机对数据进行顺利接收后,即可将应答信号传输给PC机[1]。

2.3 通信实现

在单片机通信过程中,采用多机通信控制位SM2实现主机与从机之间的相互通信,对于IBM PC机来说,其内部采用INS8250型的芯片,不具有单片机多机控制位的相应功能,但是可通过上述流程进行软件处理,使该芯片具有单片机控制位SM2。与INS8250单片机相比,采用INS8250单片机多机通信控制位,单片机发送的11位数据帧格式,将二者的帧格式进行对比,如下所示:PC机与单片机在起始位、停止位以及中间D0到D7均相互对应,只有PC机的奇偶位与TB8相互对应。从上述数据可知,第1行为属于INS850可发送11位数据帧格式,与第2行为相比,第一位均未起始位,最后一位均为停止位,只有第9位的含义有所不同,即PC机为奇偶位,单片机为TB8,因此如若在INS8520中对奇偶位中的TB8功能进行校验,则可实现PC与多个单片机相互通信的目标。在应用过程中,对PC软件进行编程时,可对INS8250进行编程,使奇偶位具备TB8的功能,也就是在发送地址时,可强制奇偶位为1,在发送数据时,可强制奇偶位为0,进而实现相互通信[2]。

通过对INS8250进行分析可知,其内部具有10个寄存器,其中D0和D1代表的是数据位长、D2代表的是停止位长、D3到D5代表的是奇偶检验选择、D6代表的是中止位、D7代表的是除数标志。当D7的数值为0时,说明是正常寻址;当D7的数值为1时,说明对除数寄存器进行访问;当D6的数值为0时,说明处于正常发送状态;当D6的数值为1时,说明正常发送终止,在串行输出端方面,当Sout为0时,D5和D3三者均代表着通信数据的奇偶校验规则;D3可代表校验位的有无,D4可代表校验的奇偶性[3];D5代表的是将发送方的奇偶性,通过数据传输的方式,放入附加位中告知接收方;当D5、D3和D4的数值均为1时,在D7发送数据时,可在D7与停止符之间附加一个0的标志,可对以往奇偶性进行校验。当D3、D4和D5的数值均为1时,可在D7与停止符之间附加一个1的标志。简单来将,当D3、D4和D5的数值均为1时,原本奇偶校验位始终为1,当D2的数值为0时,则只有一位和半停止位;当D2的数值为1时,当数据位的长度为5时,代表一半均为停止位;当数据位长为6—8时,则有两位停止位。D0和D1均为传输数据位的长度,当二者的数值为0时,规定数据位应为5;当D1的数值为0,D0的数值为1时,此时数据位应为6。事实上,可采用以下三条语句对INS8250进行编程,对串口通信中的11位数据帧进行定义,奇偶位为1,即:

Mov al,2bh//INS8250线路控制寄存器,数据位为8,停止位位长为1,奇偶位为1;

Mov dx,3fbh//INS8250线路寄存器端口地址为3fb;

Out dx,al

通过上述编程,可使PC向单片机通信传输时的相互通信创造有利条件,使TB8的数值为1,充分满足串口通信传输需求。

3 结束语

综上所述,通过本文分析,在多机串口通信过程中,可实现PC和单片机之间的相互通信,有效节省二者传输中的无效时间,使系统传输的实时性得到显著提升,在更多场合得到广泛应用。

猜你喜欢

PC机串口数值
体积占比不同的组合式石蜡相变传热数值模拟
基于NPORT的地面综合气象观测系统通信测试方法及故障处理
数值大小比较“招招鲜”
舰船测风传感器安装位置数值仿真
铝合金加筋板焊接温度场和残余应力数值模拟
基于API函数库实现串口数据通信的分析与设计
基于EM9000工控板高性能双串口通信模型设计与实现
船舶电子设备串口数据的软件共享方法
基于WiFi技术的智能手机双控视频小车
用VC++实现PC机与单片机的串行通信