串行通信系统论文(共11篇)
串行通信系统论文 篇1
摘要:本文根据微机保护通信系统的要求, 设计了由以太网与串行通信相结合的通信系统, 阐述了通信系统的硬件构成, 完成了相关驱动程序与通信功能软件的编写。
关键词:微机保护,通信系统,串行通信,以太网
本文介绍了微机保护的一种通信系统, 该通信系统采用以太网通信与串行通信相结合的方式构成。
一、硬件构成
1.1串行通信接口
装置中, 考虑到需要处理的数据较多, 数字算法的计算量大, 因此在保护CPU的选择上采用的是TI公司的新一代高性能32位浮点DSP芯片TMS320VC33。在装置中设置了两个串行通信口, 其中串口1固定为RS-232, 在实际应用中用来实现串口打印实时数据和各种参数, 串口2可以通过跳线选择为RS-232或RS-485模式, 用来组网通信。
1.2以太网接口
基于DSP与RTL8019AS组成的以太网, DSP主处理器与网卡之间的接口主要实现的功能有: (1) 主处理器通过接口电路对网卡芯片进行控制, 包括对网卡的逻辑控制、读写控制、复位等; (2) 主处理器与网卡之间的数据交换, DSP通过接口电路对网卡接收数据进行读取, 将需要发送的数据写入网卡缓存。
二、通信功能的软件实现
2.1串行通信的软件设计
2.1.1UART的驱动程序设计
下面就简要介绍一下相关的寄存器的情况与设置。 (1) 线路控制寄存器 (LCR) 。线路控制寄存器 (LCR) 存放串口传送的二进制位串数据格式, LCR是一个8位的寄存器, 各位的定义如下:d0d1是字长选择位, 若d0d1=00, 传送的字长为5位;d0d1=1时字长为6;d0d1=0时字长为7;d0d1=11时字长为8。d2位是停止位选择, d2=0时停止位为1位;d2=1时停止位为1.5位。d3=0时校验有效;d3=1时检验无效。d4是校验类型位, d4=0时进行奇校验;d4=1时进行偶校验。d7位 (DLAB) 是锁定波特率发生器位, d7=1时访问波特率因子寄存器;d7=0时访问其他寄存器。在本系统中, 使d0d1=11, 选择的8位字长;d2=0, 选择1位停止位;d3=0, 校验有效;d4=1, 选择进行偶校验。 (2) 波特率因子寄存器 (DLL&DLH) 。两个8位的波特率因子寄存器构成一个16位的波特率因子寄存器。在TL16C752的内部具有波特率发生器, 产生发送数据的时钟信号。波特率因子可以通过下列算式求出:波特率因子=基准时钟频率/ (16×波特率) 。 (3) FIFO控制寄存器 (FCR) 。这个寄存器用来设置FIFO的允许/禁止、清除FIFO、设置接收FIFO的触发级别和选择DMA模式。
2.1.2通信的软件设计
在约定的监控系统与保护系统之间采用主从方式进行通讯, 因而保护系统总是被动接收指令, 即始终为从动站。保护系统的通讯模块在完成初始化工作后随即进入接收状态。当通讯接口收到完整的链路规约数据单元 (LPDU) 时将对其进行校错, 出错丢弃这个数据单元。保护系统收到的LPDU有3种类型:第一种是2级数据请求帧, 保护系统将以测量值LPDU作为回答;第二种是1级数据请求帧, 此时先判断FCB是否变化, 有变化则以新的ASDU形成LPDU并填充发送缓冲区, 否则重发上一个LPDU;第三种是命令帧或下传数据帧。在这里我们将2级数据与1级数据同时召唤, 使用户进程得以简化。
2.2以太网通信的软件设计
网络接口通过2个DMA操作来完成数据的接收和发送。本地DMA完成RTL8019A S与其内部FIFO队列之间的数据传送, 远程DMA完成RTL8019AS与CPU之间的数据传送。
2.2.1RTL8019AS的初始化
为了使RTL8019AS启动并处于准备接收或准备发送数据的状态, 必须对相关的寄存器进行初始化。
2.2.2数据的收发
通过对地址及数据口的读写来完成以太网帧的接收与发送。本地DMA完成RTL8019A S与其内部FIFO队列之间的数据传送, 远程DMA完成RTL8019AS与CPU之间的数据传送。
三、结束语
文章设计了通信系统的硬件结构、编写了驱动程序与功能软件。设计的通信系统不仅可以满足以太网组网的要求, 也可以兼容传统的串行通信要求, 将大大地促进电厂和变电站综合自动化的进程。
参考文献
[1]吴在军, 胡敏强, 杜炎森.嵌入式以太网在变电站通信系统中的应用[J].电网技术, 2003, 27 (1) :71-75.
[2]邢萱, 江健, 王晓平.DSP在互联网控制器上的应用[J].微处理机, 2002 (3) :56-57.
串行通信系统论文 篇2
①从通信距离上看:并行通信适宜于近距离的数据传送,通常小于30米。而串行通信适宜于远距离传送,可以从几米到数千公里。
②从通信速率上看:在短距离内,并行接口的数据传输速率显然比串行接口的传输速率高得多,但远距离串行数据传送速率比并行数据传送速率易于提高。由于串行通信的通信时钟频率较并行通信容易提高,因此许多高速外部设备如数字摄像机与计算机之间的通信也往往使用串行通信方式。
③从抗干扰性能上看:串行通信由于只有少数几根信号线,信号间的互相干扰比较小。
单片机与PC机的串行通信 篇3
【关键词】 单片机;PC机;串行通信;VB6.0;汇编程序
随着科学技术的发展,在单片机应用系统的设计中常常遇到计算机与外界的信息交换,即通信。鉴于PC机具有强大的监控和管理功能,单片机具有快速以及容易控制的特点,在实际应用中,一般都利用PC机所配置的RS-232C标准串行接口来实现应用系统与PC机之间的数据交换。Visual Basic 6.0(简称VB6.0)在通信方面提供了专门的Communications控件,即控件Mscomm,可以完成简单的串行端口通讯功能,也可以用来创建功能完备、事件驱动的高级通讯工具。可以利用VB6.0的Mscomm控件来实现PC机与多台MCS-51单片机之间的串行通信。该控件提供了一系列标准通讯命令的使用接口,利用它可以建立与串行端口的连接,并通过串行端口连接到其它仪器设备,从而发出命令、交换数据、以及监视和响应连接中发生的事件与错误。
一、系统结构设计
本系统是由一台上位PC机和若个台以M CS-51单片机为核心的下位机构成。大多数PC机都配备有串行通讯端口RS-232C,用于两台计算机间进行串行通讯,但单片机的输入、输出电平为TTL电平,与PC机的RS-232C标准串行接口的电气规范不一致,要实现单片机与PC机之间的数据通信,还必须进行电平转换,在上位PC机与下位机的连接中采用RS-232C/RS-485转换器,将PC机串口的标准由RS-232C电平信号转换成RS-485的差分信号。RS-485具用“平衡差动式”的数据传输特性,工作于半双工方式,RS-485的串行通信线路可采用最普遍的双绞线,且在抗干扰能力和带负载能力方面较其它的串行接口标准有非常明显的优势,适用于高速率和远距离的串性通信场合。PC机与多个单片机通信的电路结构图(如图1所示)。
图中的下位机是以MCS-51为核心的单片机系统,该系统由一片MCS-51外加一片256K的Eprom组成,并由外围芯片构成系统数据输入功能块、电机驱动功能块、数据输出功能块和通信功能块,其中通信功能块可选择下列三种通信方式之一,即由74LS245芯片构成的并行通信方式、由MAX232芯片构成的RS-232C串行通信方式以及由75176芯片构成的RS-485串行通信方式。
图1PC机与多个单片机通信的电路结构图
二、PC机的程序设计
VB6.0提供了串行端口控件Mscomm来为应用程序提供串行通讯。该控件屏蔽了通信过程中的底层操作,程序员可以通过设置、监视控件的属性和事件,结合Tiner控件即可完成对串行口的初始化和数据的输入输出工作。
(1)建立串行端口连接
Mscomm1.commport=1;设置通讯端口号为com1
Mscomm1.setting=’1200,N,8,1’;设置为字符串形式,波特率为1200,无校验位,8位数据位,1位停止位
Mscomm1.portopen=tu re;打开通讯端口
(2)连接和发送缓冲区的属性设置
Inbuffersize=256;接收缓冲区为256个字符
Outbuffersize=2;发送缓冲区为2个字符
Rthreshold =6;每当缓冲区收到6个字符就产生oncomm事件
Sthreshold=1;发送缓冲区为空触发事件
Inputlern=0;读取接收缓冲区所有字符
(3)主程序清单
Private sub commandl_click()
Textl.text=’检查下位机的连线’
Endsub
Private sub command2_click()
Comml.Output =chr(49)
Textl.text=’1#’;1号下位机
Endsub
Private sub command3_click()
Comml.Output =chr(50)
Textl.text=’2#’;2号下位机
Endsub
Private sub command4_click()
Comml.Output =chr(51)
Textl.text=’3#’;3号下位机
Endsub
Private sub command5_click()
End
Endsub
Private sub comm1.oncomm()
Select case comml.commevent
Case comEvReceive
Dim data(100)as string
Data num>=comml. input
k=data(num)
Textl.text=k
Endselect
Endsub
三、单片机的程序设计
下位机中关于RS-485的串行通信部分采用MCS-51系列单片机的汇编语言编写。MCS-51系列单片机有一个标准的全双工串行接口,其串行控制寄存器SCON包含串行工作方式选择位、接收发送控制位以及串行口状态标志位。SCON在单片机中的地址为98H。假设MCS-51单片机从外部采集到的一组30个的数据,并存在片内RAM 20H~3DH区域中,现要求将这个数据块传送给PC机。为了保证传送的正确,在传送前应由单片机先向PC机发送联络信号#55H,PC机准确接收到后,向单片机发送回应信号#0AAH,在检验无误后,单片机才开始向PC机传送数据。对串行口的操作可分为以下四步进行:(1)串行口初始化;(2)发送联络信号;(3)接收回应信号;(4)发送数据。
汇编程序代码如下所示:
ORG0030H
START: MOVSP, #60H
MOVTMOD, #20H;Tl工作在模式2下
MOVTH 1, #F3H
MOVTL1, #F3H;波特率设置为1200
SETB TRl
MOVPCON, #00H;SMOD=0
MOVSCON, #50H;选择串行方式1
MOVR0, #20H
MOVR2, #30;数据个数
XX1: MOVA, #55H
MOVSBUF,A;发送联络信号
WAITl: JBCT 1, W AIT2;等待发送完毕
AJMPWAIT1
WAIT2: JBC R1, READ ;等待接收完毕
AJMPWAIT2
READ:MOVA, SBUF ;接收联络信号
CJNEA,#0AAH, XX 1 ;接收数据不正确,重新开始
LOOP:MOVA,@R0
MOVSBUF,A
WAIT:JBC T1, LOOP1 ;等待发送完毕
AJMPWAIT
LOOPl:JNCR0
DJNZR2, LOOP
END
在VB6.0下实现串行通信有多种方法,除利用Windows API函数和利用Mscomm ActiveX控件外,还可通过VB调用动态链接库dll来实现,本文只介绍了如何利用Mscomm控件来实现串行通信。当前,基于VB6.0的PC机与单片机的串行通信技术在我国发展已比较成熟,应用也比较广泛。
参考文献
[1]陈立元.Visual Basic与RS232串行通信控制.北京:清华大学出版社,2002:48~51
[2]李朝青.PC机及单片机数据通信技术.北京:北京航空航天大学出版社,2000:177
[3]胡汉才.单片机原理及系统设计.清华大学出版社,2003
[4]李湘江.基于VB串行通信技术的应用开发.北京:机械与电子出版社,2002:61~64
串行通信系统论文 篇4
关键词:Modbus协议,单片机,工控系统,串口通信
1 Modbus协议
当在Modbus网络上通信时,每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成反馈信息并用Modbus协议发出。在其它网络上,包含了Modbus协议的消息转换为在此网络上使用的帧或包结构。查询-回应周期如图1所示。
控制器能设置为两种传输模式(ASCII或RTU)中的任何一种在标准的Modbus网络通信。用户选择想要的模式,包括串口通信参数(波特率、校验方式等)。在配置每个控制器时,在一个Modbus网络上的所有设备都必须选择相同的传输模式和串口参数。
2 工控系统通信协议设计
(1)使用ASCII模式。
(2)接收与发送以ACK(06h)or NACK(15h)响应。
(3)ACK(06h)or NACK(15h)无接收内容时,重新传送。
(4)初期接电源时确认连接状态:单片机(STX+ENQ(05h)+ETX)→工控系统,从单片机传送连接确认信号;工控系统(STX+ACK(06h)or NACK(15h)+ETX)→单片机,在工控系统响应。
(5)单片机→工控系统Station传送编号:单片机(STX(02h)d1 d0 ETX(03h))→工控系统,在单片机传送0~99号;工控系统(STX+ACK(06h)or NACK(15h)+ETX)→单片机,在工控系统响应。
(6)工控系统传送Tag编号→单片机:工控系统(STX(02h)d2 d1 d0 ETX(03h))→单片机,工控系统传送0~255号;单片机(STX+ACK(06h)or NACK(15h)+ETX)→工控系统,在单片机响应。
(7)工控系统传送Error Reset→单片机:工控系统(STX(02h)R(52h)ETX(03h))→单片机,在工控系统传送‘R’;单片机(STX+ACK(06h)or NACK(15h)+ETX)→工控系统,在单片机响应。
(8)工控系统发生Error时传送Error代码→单片机:工控系统(STX(02h)‘E’d2 d1 d0 ETX(03h))→单片机,工控系统传送Error代码。
3 串口通信
RS-232串行接口也称标准串口,是最常用的一种串行通信接口。RS-232采取不平衡传输方式,即所谓单端通信。由于发送电平与接收电平的差仅为2~3V,所以其共模抑制能力差,再加上双绞线上的分布电容,其传送距离最大约15m,最高速率为20kb/s。RS-232是为点对点(即只用一对收、发设备)通信而设计的,其驱动器负载为3~7kΩ。所以RS-232适合本地设备之间的通信。RS-232(DB9)接口说明如图2所示。
4 工控系统串行通信的硬件设计
4.1 硬件系统的构成
采用两片80C51单片机作为通信对方,分别用单片机各自的通用异步接收和发送器发送和接收数据。利用RS-232接口延长通信距离,在通信双方单片机的串行接口部分增加RS-232电气转换接口,选择MAX232集成芯片构成接口电路。此外,根据设计要求,还需要选择控制器(甲机)的一个8位I/O接口按键来控制工控系统(乙机)。系统结构如图3所示。
4.2 RS-232串行接口电路的设计
RS-232接口电路如图4所示。通常RS-232接口以9个引脚(DB-9)或是25个引脚(DB-25)的型态出现,一般个人计算机上会有两组RS-232接口,分别称为COM1和COM2。
参考文献
串行通信系统论文 篇5
一、实验目的及要求
1、了解掌握RS-232接口标准以及 DB9的主要引脚功能;
2、了解掌握串口通信的基本原理;
3、学习掌握RS-232电缆的制作和测试方法;
4、学习掌握使用串口调试程序进行串口之间的通信实验。
二、实验原理
1、异步串行通信原理
在计算机系统中,每个字符一般使用一个 8 位二进制代码表示。在数据通信中,通常将 传送的每个字符的二进制代码按照由低位到高位的顺序依次发送的方式称为串行通信。图 2-1 是串行通信的示意图。由于串行通信只需在发送方和接收方之间建立一条通信信道,因 此可以减小通信系统的造价。在远程通信中,一般采用串行通信方式。
图 1-1 串行通信示意图
同步是数据通信中必须解决的一个重要问题。所谓同步就是要求通信的收发双方在时间基准上保持一致。在串行通信中,“异步”是同步收发双方通信的重要方式。在异步串行通信中,每个字符作为一个独立的整体进行发送,字符之间的时间间隔可以是任意的。为了实现同步,需要在每个字符的第一位前加 1 位起始符(逻辑 1),并在字符的最后一位后加 1位、1.5 位或 2 位停止位(逻辑 0)。异步串行传输的比特流结构如图 2-2所示。
图 1-2 异步串行传输的比特流结构
常用的串行通信接口标准包括RS-232、RS-449、V.24、V.35等。其中,RS-232是最常 用的串行通信标准之一。个人计算机及终端系统中配备的串行接口几乎都符合 RS-232 标准。
2、RS-232 接口标准
串行口是一种最基本的通信接口,基本上所有的个人计算机及通信终端设备都配有这种接口。RS-232 的主要内容就 是定义数据终端设备DTE(data terminal equipment)和数据通信设备DCE(data circuit equipment)之间的接口标准。RS-232 是美国电子工业协会 EIA 推荐使用的串行通信标准。其初衷是为了促进利用电话网进行数据通信应用的发展,现在也普遍应用于各类计算机或终端设备之间的短距离连接。
RS-232 使用的连接器包括 DB-
25、DB-15 和 DB-9 等几种类型,不同类型连接器使用的引脚定义也各不相同。
计算机 RS-232 串行通信的基本过程。图 1-4 异步串行通信实验总体结构示意图
三、实验过程与实验步骤
1、使用制作的 RS-232电缆将 2台计算机的可用 COM 口连接起来。
2、复制串口调试助手到硬盘上。
3、直接双击 “串口调试助手 3.0”运行软件。检查串口线是否连接到计算机和设备上。确定串口(本机为com1)。在串口调试助手中打开串口:com1。
4、使用字符串收发
5、使用文件传输功能
使用文件传输功能,在 2 台电脑上传输文件,这对于某些特定场合可以用到该功能。首先由接收一端在打开串口后,按下接收文件按钮。
之后会弹出一个对话框,等待对方发送文件。
发送一端在打开串口后,先选择发送文件(如下图)
选择文件后,按下发送按钮,文件开始传输中,这时 2 端都可以看到发送的进度条。发送完毕后,软件会提示!
四、实验结果与分析:串口(com1)
1、正常发送:
(1)A机:波特率相同(9600)、校验位相同(none)、数据位相同(8)、停止位相同(1)
B机:波特率相同(9600)、校验位相同(none)、数据位相同(8)、停止位相同(1)结果:A机发“你好”,B机收“你好”,(图1); B机发“哈哈”,A机收“哈哈”,(图2);
图1
图2(2)、A机:波特率相同(19200)、校验位相同(ODD)、数据位相同(8)、停止位相同(2)
B机:波特率相同(19200)、校验位相同(ODD)、数据位相同(8)、停止位相同(2)结果:A机发“我很好”,B机收“我很好”;图3); B机发“你呢”,A机收“你呢”;图4);
图3
图4
2、波特率不同
A机:波特率相同(4800)、校验位相同(ODD)、数据位相同(8)、停止位相同(1)B机:波特率相同(9600)、校验位相同(ODD)、数据位相同(8)、停止位相同(1)结果:A机发“01 02 03”,B机收“胉”;(图5); B机发“yjw”,A机收“?”;(图6); 分析: 图6
图5 波特率控制采样时间间隔,波特率不相同,收发双方在 相等时间内接收和发送数据 不一致。
3、数据位不同
A机:波特率相同(9600)、校验位相同(ODD)、数据位相同(6)、停止位相同(1)B机:波特率相同(9600)、校验位相同(ODD)、数据位相同(8)、停止位相同(1)结果:A机发“040506”,B机收“?”,(图7); B机发“lys”,A机收“,9>”,(图8); 分析:数据位不相同,收发双方在相等时间内接收和发送数据不一致,所以结果不相同
图7
图8
4、奇偶校检不同
(1)A机:波特率相同(9600)、校验位相同(EVE)、数据位相同(8)、停止位相同(1)
B机:波特率相同(9600)、校验位相同(ODD)、数据位相同(8)、停止位相同(1)结果:A机发“54 85 96 75”,B机收“54 85 96 75”;(图9)B机发“第五种”,A机收“第五种”;(图10)分析:因为校验位用于检验 接收和发送的数据的正确性的,在最终转换时会去除校验位,所以接收到的有效数据和发送的有效数据相同,发送与接收结果一样。
图9
图10(2)A机:波特率相同(9600)、校验位相同(NONE)、数据位相同(8)、停止位相同(1)
B机:波特率相同(9600)、校验位相同(ODD)、数据位相同(8)、停止位相同(1)结果:A机发“54 85 96 75”,B机收“
”;(图11)
B机发“第六种”,A机收“第六种”;(图12)
分析:由于A机无校验位,B机有校验位,所以B机在收到数据并校检,后会自动去除校检位以致发双方的有校数据不一致,结果不一样。
相反的。当A机为接收方时,虽然A机无检验位,但是因为A机已接收到8位数据故不接收B机发送的校检位。结果一样。
图11
图12
5、停止位不同
A机:波特率相同(9600)、校验位相同(ODD)、数据位相同(8)、停止位不同(1)B机:波特率相同(9600)、校验位相同(ODD)、数据位相同(8)、停止位不同(2)
图13
结果:A机发“B机收“B机发“
”,A机收“
”,”;(图13)”;(图14)
图14 分析:
5、发送文件
A机:波特率相同(9600)、校验位相同(NONE)、数据位相同(8)、停止位相同(2)B机:波特率相同(9600)、校验位相同(NONE)、数据位相同(8)、停止位相同(2)结果分析:
当有校检位时,不可以接收文件;波特率不同、校验位不同、数据位同或停止位不同时,文件无法接收;即唯有当波特率相同、数据位相同、停止位相同且无校检位时,方可以正确接收文件。
五、思考并回答以下问题:
(1)在本实验中,RS—232 串口电缆处于 OSI 参考模型的什么位置?它的作用是什么?
答:处于OSI 参考模型的物理层,其作用是作为传输介质,连接通信的网络节点,实现比特流的透明传输,为数据链路层提供数据传输服务。
(2)在本实验中,数据和信号分别体现在 OSI参考模型的什么位置?两者之间有何区别?
答:数据体现在数据链路层,信号体现在物理层。两者区别在:数据链路层:为网络层提供服务的,解决两个相邻结点之间的通信问题,传送的协议数据单元称为数据帧。物理层:OSI模型的最底层。它提出了网络的物理特性,比如连接的电缆类型。这里是二进制值0和1的世界,也就是数据以信号的电特性(高低电平)来表示。
(3)什么是波特率?为何两台 PC 的波特率不同就不能正常通信?
答:波特率又称调制速率、传码速率,记为Nbd,是指在数据通信系统中,每秒钟传输信号码元个数,单位是波特。
串行通信系统论文 篇6
关键词:相控阵 发射机 监控设计 单片机 串行轮询
中图分类号:TN911 文献标识码:A 文章编号:1674-098X(2016)06(b)-0074-02
Abstract:Ageing of the power amplifier modules or cables will make accuracy of the phased array radar reduced. The paper demonstrates the theory of the phased array radar transmitter,analyzes the merits of the PIC microcontroller serial alternation communication and the process of communication,actualizes the monitor of phased array radar transmitter reliably in a low-cost method.
Key Words:Phased array; Transmitter; Design of monitor; Microcontroller;Alternation communication
1 相控阵雷达发射原理
相控阵雷达即相位控制电子扫描阵列雷达,其快速而精确转换波束的能力使雷达能够在1 min内完成全空域的扫描。所谓相控阵雷达是由大量相同的辐射单元组成的雷达面阵,每个辐射单元在相位和幅度上独立受波控和移相器控制,能得到精确可预测的辐射方向图和波束指向。雷达工作时发射机通过馈线网络将功率分配到每个天线单元,通过大量独立的天线单元将能量辐射出去并在空间进行功率合成,形成需要的波束指向。
相控阵雷达的发射系统由数十至上百块功率放大模块组成,通过相控阵天线采用集中式发射,集中向天线面阵馈电并通过移相控制波束方向,发射馈线损耗较大,同时放大模块故障率较高。相控阵发射机长时间工作后,经常出现个别功率放大模块和线缆老化情况,虽然不会使雷达整体停止工作,但辐射方向图和波束指向均会发生偏移,进而对雷达精度和探测范围产生影响,亟需低成本的有效、可靠方法实现发射机全部功率放大模块的有效实时监控,从而降低相控阵雷达检修维护的难度。
2 PIC单片机与传感器串行组网
发射机功率放大模块内置传感器,可以直接监控是否在发射端口实际产生了电磁脉冲。发射模块传感器通信信号简单,除故障信号电平外只提供脉冲是否达到门限值的0/1信号。传感器具有RS232C电平串行数字通信功能,免去了传统模拟量监测时大量的模/数转换器件。由于传感器数量众多,串行轮询通信网络又极大地减少了线缆铺设数量,数字信号的传输同时可避免模拟信号的线缆内部衰减和干扰问题。
3 PIC单片机串行轮询通信
PIC单片机网络采用串行轮询通信主从通信模式,波特率9 600bit,8位数据位,1位起始位,1位停止位,无校验。PIC单片机设计为主站,包含发送请求信号、接收信号、逻辑判断和非正常状态字上传工控机的功能。全部内置传感器为从站,只在接收到主站通信请求后发送状态数据。PIC单片机主站可通过设计程序响应中断,进而通过中断程序控制整个串行轮询通信过程。对不同编号的内置传感器产生的中断赋予不同编号,利用PIC单片机与非逻辑程序语句完成感应器传回的状态字判读工作,并将非正常状态字上传工控计算机,最终实现雷达发射机的整体监控。
4 PIC单片机与工控机的通信
将PIC单片机其中一个通用串行通信接口设置为全双工异步串行通信模式。为了把单片机的RC6和RC7分别设置为串行接口发送/时钟线和接收/数据线,首先应当把SPEN位和方向存储器TRISC的D7:D6置1。[1]向波特率寄存器写入预定的数值并同时产生单片机定时器复位清零的效果,单片机初始化时对该非同步通信端口执行初始化程序:
BSF STATUS,RP1;程序指针指向数据存储器
MOVWF SPBRG;设置传输波特率
CLRF RCSTA;接收控制和状态寄存器清零
BSF RCSTA,SPEN;允许使用串口
CLRF PIR1;清除中断标志
CLRF TXSTA;发送控制和状态寄存器清零
BSF TXSTA,BRGH;设置为异步传输
BSF TXSTA,TXEN;发送允许开始
BSF RCSTA,CREN;接收允许开始
当工控机与单片机系统通信时,单片机数据存储器内的数据格式是十六进制,[1]向工控机传输的是十六进制数的ASCII码的二进制形式。雷达工控机使用windows系统,串口接收使用ANSI码,而ANSI码仅前126个与ASCII码相同。所以,设计中断编码时,必须考虑编码规则使字符长度满足要求。
5 结语
由于不同型号雷达发射模块出厂内置的传感器不尽相同,在监控设计过程中必须充分考虑传感器的通信性能,尤其要注意传感器对传输速率、信息位个数、校验位的要求。[2]在单片机中断响应设计时,也要对传感器的通信响应时间进行充分实验,否则容易引起轮询冲突,使监控系统不定期失效。另外,RS232C通信协议要求传输距离最好不超过20m,如确实需要较长通信传输距离,建议设计RS485接口的监控系统。[3]
参考文献
[1]周杰,张银胜,刘金涛,等.PIC单片机原理及系统设计[M].气象出版社,2008:227-229.
[2]赵雅兴.PSpice与电子器件模型[M].北京邮电大学出版社,2006:315-317.
超声波定位系统串行通信模块设计 篇7
1 模块实现
1.1 硬件介绍
超声波定位系统通过ZigBee无线网络将数据传送至PIC单片机, 数据经过PIC单片机处理后, 再经串口传送至上位机。由于PIC单片机的信号电平 (TTL电平) 与上位机的串口电平 (RS 232电平) 电气规范不一致, 因此采用MAX3232电平转换芯片进行电平转换。串口是上位机上的标准设备, 进行串行通信时不需给上位机增加硬件设备, 使得整个系统更加简单可靠[2,3,4], 如图1所示。
1.2 上位机软件设计
1.2.1 Delphi介绍
Delphi是一种具有功能强大, 简便易用, 代码执行速度快等优点的可视化快速应用开发工具[5,6]。运用Delphi实现串口通信的常用方法有三种:一是利用MSComm控件和SPComm控件;二是使用API函数;三是调用其他串口通信程序。在此, 采用SPComm控件, 它具有许多与串口通信密切相关的属性及事件, 提供了对串口的各种操作, 支持多线程等优点, 可以在C++Builder, Delphi等多种开发工具下使用且灵活方便, 因此在Delphi软件开发中已经成为被广泛应用的串口通信开发控件[7,8]。SPComm串口通信控件具有多线程的特性, 分别在两个线程内完成接收和发送数据。接收线程负责收到数据时触发OnReceiveData事件;用WriteComm-Data函数将待发送的数据写入输出缓冲器, 发送线程在后台完成数据发送工作。在接收和发送数据前, 需要初始化串口, 用StartComm方法打开串口;退出程序时, 用StopComm方法关闭串口[9,10]。本文主要实现串口数据的采集, 重点运用OnReceiveData事件以及对该事件的相关处理。
1.2.2 上位机软件介绍
上位机软件由Delphi编写, 具有数据的接收及处理功能, 能够通过对数据的计算, 将机器鱼的位置、角度、温度等信息实时显示在界面上。上位机软件的图表显示功能通过Delphi中自带的Tchart控件实现。
1.2.3 上位机软件主要代码
(1) 上位机初始化代码
(2) 接收串口数据并进行处理的代码
(3) 绘制图表的代码
1.2.4 运行结果
上位机软件运行界面如图2所示, 软件界面的左侧显示当前两条机器鱼的坐标和角度、温度信息;软件界面右侧显示上位机接收数据后的所有数据[6]。
2 结 语
讨论了超声波定位系统的串行通信模块, 并重点介绍应用SPComm控件在Delphi环境下开发的上位机软件。该模块具有结构简单, 开发周期短, 成本低等特点。在仿生机器鱼的定位实验中, 该模块表现出了很强的通信稳定性。由于上位机软件采用高级软件编写, 稍加修改便可移植到其他类似系统中, 在机器人及小型工业控制领域有着广阔的应用前景。
摘要:针对超声波定位系统, 设计了串行通信模块。介绍模块的工作流程和硬件电路, 以及应用SPComm控件在Del-phi环境下开发的上位机软件。模块实现了PIC单片机与上位机的通信功能, 并能够通过上位机软件对采集到的数据进行处理与显示。实验表明, 该模块结构简单, 性能稳定, 在多机器鱼系统得到了应用。
关键词:Delphi,SPomm,串行通信,超声波定位,ZigBee
参考文献
[1]鲁琦, 殳国华.基于单片机的红外超声定位系统[J].微处理机, 2006 (2) :66-71.
[2]孙滨, 宋健.用Delphi实现上位机与PIC单片机的串行通信[J].现代电子技术, 2004, 27 (16) :92-93.
[3]桑开勇, 陈铁军.Delphi环境下利用SPComm控件进行单片机串口通信[J].现代电子技术, 2006, 29 (15) :26-28.
[4]范逸之, 陈立元.Delphi与RS 232串行通信控制[M].北京:清华大学出版社, 2004.
[5]肖建, 杨新臣.Delphi 7编程基础[M].北京:清华大学出版社, 2003.
[6]明日科技.Delphi开发技术大全[M].北京:人民邮电出版社, 2006.
[7]廖平, 陈峰, 马洪秋.Delphi环境下PC机与AVR单片机的串行通信[J].现代电子技术, 2008, 29 (2) :123-125.
[8]仇芝, 杜坚, 罗敏, 等.基于Delphi 7.0的高精度低速数据采集系统[J].现代电子技术, 2006, 29 (11) :111-112.
[9]罗贤东, 张民, 赵卫华, 等.Delphi环境下利用SPComm控件实现计算机与PLC的串行通信[J].工业控制计算机, 2007 (6) :29-30.
串行通信系统论文 篇8
关于防尘呼吸器的技术要求和检测方法, 国标GB/T2626-1992经整合、修订后作为强制性标准GB2626-2006《呼吸防护用品——自吸过滤式防颗粒物呼吸器》于2006年5月正式颁布实施。防尘面罩粒子阻隔效率测试是评价防尘面罩防尘性能的关键指标。目前国内外厂家通常使用美国TSI公司的自动滤料测试设备TSI CERTITEST MODEL 8130, 该设备同时具有氯化钠和DOP过滤效率检测和随弃式面罩阻力的检测能力。
但上述检测设备并没有提供良好的用户界面接口, 没有附带数据获取和处理软件, 检测结果仅通过附带的操作面板和针式打印机显示过程数据及最终指标, 不便于对实验过程数据进行自动处理和分析。但设备提供了串行数据通信的底层接口, 这使自动化的数据处理和分析成为可能。
通过微软提供的串行接口组件对设备发送的数据进行处理和存储, 并进一步采用EXCEL程序的公式功能对数据进行计算和分析。从而实现粒子阻隔效率测试过程的自动化数据处理, 提高了检测效率, 并方便了进一步的科研工作。
2粒子阻隔效率测试仪器
CERTITEST MODEL 8130 (如图1) 是美国TSI公司在1994年研制, 用于检测呼吸防护用品防尘性能关键指标的测试。该设备主要分气溶胶发生系统、检测系统和过滤系统三大部分。测试用粒子在气溶胶发生器中发生后在混合罐中与纯净的空气混合稀释, 进入被测样品检测室, 其中Nacl气溶胶要经过静电中和器后进入检测室, 通过定时采样, 由检测仪分别得到上游、下游部分粒子浓度, 余下部分进入过滤器过滤后排放, 其具体流程见图2所示。其中气溶胶发生方式采用喷雾法:即液体从喷雾嘴高速射出并撞击管道一端管壁, 撞击破碎产生粒子, 大颗粒粒子沉降到瓶内, 小粒子则延管道进入气体混合罐内;而粒子浓度测试采用光度计进行, 在粒子气流通过面罩前和通过面罩后由真空泵采样, 光度计测定粒子浓度。
实验数据和结果通过集成在仪器上的一个操作面板和一个便携打印机来获取, 基本不具备数据存储和处理功能。而实际应用中, 检测效率相关的检测和科研工作往往需要对阻隔效率动态过程进行连续检测和分析, 这就需要对实验过程中的数据进行实时获取、存储和计算。从这一点来讲, 8130没有提供良好的用户界面接口。虽然8130从硬件底层提供了串行数据通信接口, 但数据处理程序并未提供给用户。对于一般用户而言, 从8130设备背部的串行接口, 只能得到二进制电平信号, 不能直接用于检测结果分析。因此需要开发独立的串行接口程序, 自动由串口获取数据, 并对数据进行存储和计算, 进而实现对测量结果的实时处理和分析。
3串行通信接口系统方案
一般通用计算机都带有一个或多个串行端口, 这些串口提供了外部设备与PC进行数据传输和通信的通道。串口在主机和外设之间充当解释器的角色。当字符数据从CPU发送给外设时, 这些字符数据将被转换成串行比特流数据;当接收数据时, 比特流数据被转换为字符数据传递给CPU。在操作系统层面, Windows用通信驱动程序调用API函数发送和接收数据, 当用通信控件或声明调用API函数时, 它们由驱动程序解释并传递给设备驱动程序, 在通信程序中。只需知道通信控件提供给Windows通信AP1函数的接口即可, 也即设定和监视通信控件的属性和事件。
3.1基于MSCOMM控件的串行通信
Microsoft Communications Control (以下简称MSComm) 是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件, 它为应用程序提供了通过串行接口收发数据的简便方法。MSComm控件通过串行端口传输和接收数据, 为应用程序提供串行通讯功能, 在VB、Delphi等语言中均可使用。MSComm提供了两种处理通信问题的方法:一是事件驱动方法, 二是查询法。本研究采用了事件驱动方法。
事件驱动通讯是处理串行端口交互作用的一种非常有效的方法。在许多情况下, 在事件发生时需要得到通知, 例如, 在串口接收缓冲区中有字符, 或者CD或RTS线上一个字符到达或一个变化发生时。在这些情况下, 可以利用MSComm控件的OnComm事件捕获并处理这些通讯事件, OnComm事件还可以检查和处理通讯错误。在编程过程中, 可以在OnComm事件处理函数中加入自己的处理代码。这种方法的优点是程序响应及时, 可靠性高。
使用的每个MSComm控件都与一个串口对应。如果在应用程序中需要访问多个串口, 必须使用多个MSComm控件。可以在Windows控制面板中修改串口地址的中断地址。
更详细的控件开发参考见微软的MSDN开发帮助。
3.2EXCEL VB脚本开发
通过EXCEL的宏功能, 可以采用VB脚本程序开发基于MSComm控件的串口通信程序。创建控件后, 只需采用控件提供的对Windows通讯驱动程序的API函数的接口, 也就是设置MSComm控件的属性, 并监视MSComm控件的事件。发生通讯事件或错误时, 将触发OnComm事件, CommEvent属性的值将被改变, 应用程序检查CommEvent属性值并作出相应的反应。
在本研究的EXCEL VB脚本中采用的关键串口代码如下:
设定串口号:Worksheets (“SerialPort”) .MSComm1.CommPort=4
设定串口通信方式:Worksheets (“SerialPort”) .MSComm1.Settings=“9600, n, 7, 1”
设定串口缓冲:Worksheets (“SerialPort”) .MSComm1.InBufferSize=4096
打开串口:Worksheets (“SerialPort”) .MSComm1.PortOpen=True
串口事件相应函数为MSComm1_OnComm () , 在响应函数中读取串口通讯获得的数据如下:
MyData=MyData+Worksheets (“SerialPort”) .MSComm1.Input
4测试过程及结果
通过上述VB脚本程序, 实时获取粒子阻隔效率测量过程中的数据, 并通过EXCEL的计算功能得到所需的检测指标, 进而做出更深入的分析。表2是某品牌的纱布口罩过滤效率测试的部分数据。根据测试过程中的数据, 可以进一步通过EXCEL的图形功能方便地实现表格数据的直观显示 (如图3) 。
5结论
针对装置的串行数据通信的底层接口, 所开发的基于EXCEL VB脚本的串行通信数据处理系统, 实现数据通信及处理的自动化操作, 提高检测效率, 为更好的进行实粒子阻隔效率测定及相关的科研工作提供了便利条件。用EXCEL直接处理过程数据, 可以通过程序附带的公式计算功能直接求取所需指标数据, 并进一步应用图表功能, 实现数据表格的实时绘制, 便于对整个动态测试过程进行直观监测。基于串行通信控件的开发方案具有直观、便于使用的优点, 给类似检测设备的串行通信数据处理技术提供了借鉴。
摘要:在GB2626-2006《呼吸防护用品——自吸过滤式防颗粒物呼吸器》中防尘面罩粒子阻隔效率测定是一项评价防尘面罩性能的关键指标。为实现数据通信及处理的自动化操作, 提高检测效率, 本研究针对装置的串行数据通信的底层接口, 开发基于EXCELVB脚本的串行通信数据处理系统。该系统为更好地研究实粒子阻隔效率测定方法和阻隔效率相关规律提供了便利条件。
关键词:防尘面罩,阻隔效率,串行通信,接口,VB脚本
参考文献
[1]GB2626-2006《呼吸防护用品——自吸过滤式防颗粒物呼吸器》[S]GB2626-2006“Respirator Protective Equipment-Non-Powered Air-Purifying Particle Respirator”[S]
[2]田军, 张明明, 李双会, 刘宝龙.防尘面罩粒子阻隔效率测试仪器及测试原理[J].中国安全生产科学技术, 2008, 4 (5) :114~117TIAN Jun, ZHANG Ming-ming, LI Shuang-hui, LIU Bao-long.Respirator Filter Efficiency Tester and Testing Principle[J].Journal of Safety Science and Technology, 2008, 4 (5) :114~117
[3]黄大勇, 王萍.基于MSCOMM控件的微机与单片机多机通信[J].自动化与仪表, 2008, (10) HUANG Da-yong, WANG Ping.Communication Between PC and Multi-MCU Based on MSCOMM[J].Automation&Instrumentation, 2008, (10)
串行通信系统论文 篇9
许多控制监测系统往往需要采集大量的数据进行高速的分析运算, 而且要求系统具备友好的人机交互功能, 这对CPU的处理能力和控制功能提出了很高的要求[1]。目前MCR控制系统多采用单个CPU, 在处理速度上已经受到很大的影响。本项目采用双CPU的处理系统, 选用ADI公司的DSP芯片ADSP-BF506F为主处理器, 来完成对数据的实时采集、处理、控制;ARM嵌入式系统采用ADu C7026微处理器, 来完成MCR现场控制中的液晶显示和键盘操作。为了实现对MCR的远程控制, PC机采用C++Builder 6.0程序语言进行设计, 利用串行通信控件MSComm, 实现了PC上位机平台软件与下位机DSP之间的数据传输。
本文主要针对磁控电抗器控制系统中ADSP-BF506F、ADu C7026、PC上位机三者之间的串行通信进行研究。目前, 该方案正应用于校企合作的MCR型动态无功补偿装置的开发项目中。通过样机试验, 该方案进一步完善了磁控电抗器的控制系统功能, 使磁控电抗器的控制更加可靠、灵活, 稳定, 可以更加有效地实现对电力系统无功功率的连续、平滑调节的要求。
1 磁控电抗器的控制系统功能
(1) 实时快速地采集数据:电网三相电压、电流信号、电网频率、磁控电抗器三相电流信号、磁控电抗器铁芯和铁芯气隙处的温度、瓦斯和压力检测信号。
(2) 处理采集信号:经过快速傅里叶变换 (FFT) , 计算出电网的有功功率, 无功功率、功率因数、晶闸管触发角、谐波含量。
(3) 数据显示:由ADSP-BF506F和ADu C7026之间的串行通信, 通过液晶显示电网三相电压、三相电流、电网频率、有功功率、无功功率、功率因数、晶闸管触发角以及磁控电抗器三相电流;由ADSP-BF506F和PC上位机之间的串行通信, 通过远程操控界面显示控制系统内的各项参数。
(4) 磁控电抗器基波电流幅值I*与铁芯饱和度β, 及饱和度和控制角α之间的关系:
根据处理数据结果计算出相应的晶闸管触发角?, 通过控制磁控电抗器二次侧直流回路晶闸管触发角, 改变二次侧直流的电流[2]。利用控制系统中的串行通信, 通过键盘操作或PC上位机界面输入, 手动和自动改变晶闸管触发角, 达到平滑调节磁控电抗器容量的目的。控制系统功能如图1所示。
2 串行通信的硬件设计
ADSP-BF506F内置两个通用异步串口UART, 即UART0和UART1。它是一个全双工、通用的、异步接收/发送器, 通常称为串行通信接口, 具有5-8个数据位, 1/2个停止位, 奇偶校验位, 灵活的数据发送和接受中断, 独立的DMA数据传输通道等特点[3]592。ADu C7026的UART也是一个全双工、通用的、异步接收/发送器, 在进行串口通信时, 遵循一个非同步的协议, 支持不同的字节长度、停止位和奇偶校验位[4]。
ADSP-BF506F芯片的UART1引脚和ADu C7026芯片UART引脚相连, ADu C7026再通过液晶显示, 本项目设计中采用HS320240E图形点阵液晶。PC上位机的串行口都是RS-232的标准接口, DSP在通讯上采用的TTL电平特性与RS-232电气特性不匹配。为了使DSP的串行口UART0能与RS-232接口通信, 在串行通信的硬件设计中, 采用了MAXIM公司符合RS-232标准的驱动芯片MAX232来实现TTL电平与RS-232接口电平之间的转换[5]。另外, 项目在设计中, 通过在MAX232信号输出端加装光电隔离转换器, 实现RS-232/RS-422转换, 使得串行通信的有效距离从15 m延长到1 200 m, 满足了控制系统的远程控制功能。串行通信的接口电路如图2所示。
3 串行通信的软件设计
3.1 串行通信的初始化设置
在异步串行通信中, ADSP-BF506F、ADu C7026、PC上位机三方均进行数据的收发。为了实现异步串行通信的可靠性, 通信的三方首先必须进行初始化设置。
(1) UART相关寄存器的配置
ADSP-BF506F完成了磁控电抗器控制系统中的数据采集、信号处理、电网参数计算之后, 通过UART1和UART0两个串行口分别与ADu C7026、PC上位机进行串行通信。依据ADSP-BF506F引脚功能, 相关寄存器应设置PG12和PG13引脚为UART0, 设置PG0和PG3引脚为UART1。在项目设计上, ADSP-BF506F采用了DMA的数据传输模式, 它具有独立的接收和发送通道, 不需要内核干预, 极大的提高了传送速度和工作效率[3]238。在程序中, 配置DMA的相关寄存器并使能。
系统运行时, ADu C7026首先在主函数中设置系统时钟、初始化液晶、设置P0.7和P2.0引脚为UART。在串行通信中, ADu C7026使用普通中断 (IRQ) 和快速中断 (FIQ) 进行数据的接收和发送。在程序中, 配置中断相关寄存器并使能。
(2) 通信协议的制定
在串行通信的过程中, 为了保证数据传输的准确, 将通信的三方设置成一致的波特率和数据格式。在项目设计中, 通信三方的波特率均设置成9 600 bit/s, 8位数据位, 1个停止位, 无奇偶校验位。这些规定通过在初始化中设置相关寄存器和控件实现。由于ADSP-BF506F中DMA定义12位二进制发送, 而ADu C7026接收寄存器和PC接收缓冲区只有8位, 因此需要将前后相邻两个接收的数据重新组合, 才能在液晶实现正确显示。
为了保证控制系统的有效性, 通信三方约定相应的通信协议。当ADSP-BF506F在发送数据前, 首先发送数据0x FF作为ADu C7026和PC接收数据的识别码;当ADu C7026和PC发送数据0x FB、0x FC、0x FD、0x FE时, ADSP-BF506F经过串行通信接收识别后, 可判断执行控制系统中相应的各项功能。
3.2 ADu C7026的人机交互功能
ADu C7026程序初始化后, 在与ADSP-BF506F进行数据的串行通信时, 采用了普通中断 (IRQ) 和快速中断 (FIQ) 相结合的方式, FIQ的中断优先级高于IRQ[6]。在普通中断 (IRQ) 下, ADu C7026通过串行口UART不断接收ADSP-BF506F在DMA模式下发送来的数据, 并通过液晶显示;在快速中断 (FIQ) 下, ADu C7026通过键盘操作, 选择不同的控制功能, 再通过串行通信, 向ADSP-BF506F发送指令, 从而实现控制系统的人机交互功能。本项目针对ADu C7026开发的串行通信流程如图3所示。
3.3 PC上位机的远程监控系统
在Windows环境下, 利用C++Builder6.0实现串行通信主要有两种编程方法:一是使用MSComm通信控件, 二是调用Windows的API函数。在项目设计中, 利用MSComm控件来实现PC上位机与ADSP-BF506F之间的串行通信, 在程序的实现上要比调用API函数方式简单、快捷[7]。C++Builder 6.0集成开发环境中并不包含MSComm控件, 需要先从VC或VB中导入, 然后再在Active X页中选择MSComm控件并添加到界面之中[8]。本项目针对PC上位机开发的串行通信流程如图4所示。
4 实验结果
本项目以容量20 kvar, 额定电压为400 V的磁控电抗器为例。通过调试, 验证了控制系统中串行通信的可靠性。实验方案如下:
4.1 不同触发角的晶闸管及二极管相关波形
系统上电之后, 先将控制系统的工作模式设置为手动触发控制模式, 通过PC上位机或ADu C7026外部键盘手动输入晶闸管触发角, 通过输入60°和120°, 分析不同触发角的晶闸管电压波形、晶闸管电流波形、二极管电流波形, 可以看出电抗器分别在60°和120°可以正常触发, 串行通信正常。相关波形如图5所示 (60° (左图) 和120° (右图) ) 。
4.2 ADu C7026中的液晶显示和外部中断
控制器上电以后, 先后按下“液晶复位”和“主板复位”按钮, 系统和液晶均进入初始化状态, 在选择“启动”功能之后, 再切换至“自动触发”功能, 通过串行通信, 可以从液晶中成功显示和控制电网各项参数。ADu C7026液晶显示如图6所示。
4.3 PC上位机的界面显示和远程控制
通过RS-232串口线, 一端与控制器上的RS-232接口相连, 另一端接上光电隔离转换器后与PC机机箱后的RS-232接口相连。系统上电后, 打开PC上位机的界面监控系统, 设置串行通信参数后, 点击“打开串口”按键, 通过变比修改, 启动界面监控系统, 可以从界面上实时显示和控制电网各项参数。PC上位机界面显示如图7所示。
5 结束语
本文基于由ADSP-BF506F和ADu C7026组成的磁控电抗器双CPU控制系统装置, 并通过RS-232串口与PC上位机相连, 重点研究并解决了磁控电抗器控制系统中多通道串行通信的问题。经过调试运行, 证明串行通信在磁控电抗器控制系统中稳定可靠, 具有很强的实时性, 能够实现数据间的准确传输。在具体工程应用上, 通过串行通信, ADu C7026控制下的现场液晶显示、键盘操作和PC上位机的远程界面均能够实现了对电网参数的监控, 对磁控电抗器容量进行有效和平滑地调节, 进而达到了电力系统动态无功补偿的目的。
参考文献
[1]郑秀聪, 谢运祥.DSP与单片机的串行通信及液晶显示系统的设计[J].计算机工程与科学, 2011, 33 (6) :173-177.
[2]张健华, 程汉湘, 何绍洋, 等.磁控电抗器中DSP及其嵌入式系统控制器的研究[J].电气自动化, 2011, 33 (5) :71-74.
[3]Analog Devices, ADSP-BF50x BlackfinProcessor Hardware Reference[M].Preliminary Revision 2010, 06.
[4]孙来军, 刘明亮, 庄培栋, 等.ADuC7026原理与应用[M].北京:电子工业出版社, 2009, 8.
[5]梁天, 杨振强.基于VB的DSP与PC机的串行通信[J].微机发展, 2005, 15 (9) :96-98.
[6]Analog Devices, Precision Analog Microcontroller, 12-Bit Analog I/O, ARM7TDMIMCU[M].Preliminary Revision 2010, 06.
[7]曹卫彬.C/C++串口通信典型应用实例编程实践[M].北京:电子工业出版社, 2009, 7.
串行通信系统论文 篇10
1 数控系统串行通信模块介绍
随着现代数控技术的发展, 数控系统的功能越来越多, 系统的构成也越来越复杂, 除了运算速度不断提高外, 硬件的升级、扩展和维护都要在系统设计时考虑。图1是数控系统的结构框图, 主要包括4部分:主板、系统键盘板、用户键盘板和接口板。接口板连接IO和伺服电机。系统键盘用于G代码编程, 该矩阵式键盘通过并行总线与主板FPGA连接。主板包括ARM和FPGA两块处理器。FPGA是协处理器, 负责时序、“方向+脉冲”信号、接口扩展。ARM是主处理器搭载UCOS操作系统实现G代码编辑、编译、界面、插补运算。该主板搭载三个异步串口, UART0、UART1和UART2。UART0接超级终端, 打印系统信息。UART1和UART2扩展成RS422, 分别接操作键盘板和接口板通过串口进行通信。串行通信的波特率是115200bps, 8为数据位, 1位停止位, 没有校验位。机床的主令开关、指示灯、继电器、电磁阀、用户键盘板的手动调整开关等通过RS-422传至ARM。这种通讯架构主要有以下三个优点:第一, 用户键盘和接口板从主板上分离出来, 用RS422连接, 便于安装, 并且兼容了不同类型的数控系统。第二, 用双RS422而不用RS485, 最大限度提高带宽, 简化应用层通信软件的设计。第三, 设计了一套完整的帧传送协议, 保证了数据快速有效传递。
2 串行通信硬件设计
图2是RS-422接口电路图[4], 该系统的接口板和操作键盘板的信息采集是通过RS-422完成的。选择RS-422的理由如下: (1) RS-422的通信速率和误码率完全能够达到信号传输的要求。 (2) RS-422是工业标准的总线, 可靠性高, 应用广泛, 价格低廉。 (3) ARM端有UART, FPGA端可通过IO口扩展串口。 (4) MAX3491可将LVTTL/CMOS的信号转换为RS-422的差分信号。本系统用到3片MAX3491, 分别接在主板的ARM上, 接口板的FPGA上, 和用户键盘板的FPGA上。图2中的MAX3491右侧是3.3V的LVTTL/CMOS信号, 接ARMS3C2410的UART管脚或者FPGA的IO口。FPGA选用Cyclone的EP1C6Q240, 对于串口115200bps的波特率, 可用FPGA的通用IO口。由于RS-422采用输入、输出通道独立, 三态门缓冲器的控制引脚/RE接高, DE接低。MAX3491左边的信号是差分信号。RS422_T+、RS422_T-是差分信号输出的正和负, RS422_R+、RS422_R-是差分信号输入的正和负。差分信号在进入电平转化芯片MAX3491之前进行滤波和限幅处理, 消除信号在传输过程中接收到的噪声。L1是滤波器, 消除共模干扰。D1~D4、R11、R12将信号大致限幅在电源和地之间, 避免尖峰电压损坏接口芯片。C9是压片电容, 25V/104, 接在接口芯片的电源和地之间。
3 串行通信协议的设计
本协议解决上位机 (ARM) 和下位机 (FPGA) 间的数据传输, 约定了数据格式、通信的建立、故障的处理。
3.1 帧结构
串行通信分为异步串行和同步串行, RS-422是基于异步串行通信设计的。异步通信的双方没有时钟, 通信始于发送方的逻辑‘1’到逻辑‘0’的下跳沿, 一般是1位起始位, 5~8位数据位, 1位奇偶校验位, 1位停止位。停止位是逻辑’1’, 停止后总线保持逻辑’1’状态, 直到下一次的起始位出现。这样, 一次通信的信息量很小, 8位数据最多只能表示256种状态, 无法在复杂的通信系统中直接使用。于是, 将要传送的数据按照一定的格式组成帧, 由协议控制帧中的数据, 一个字节接一个字节地发送和接收。
图3 (a) 是本文设计的通讯协议帧结构。对主站和从站, 命令和数据的定义有所不同。帧长12个字节, 编号0到11, 低编号字节先发、先收。帧头0X55, 帧尾0XAA, 编号是10的字节是累加和SUM, SUM是CMD、Data7~Data0共9个字节的累加。帧长为12个字节的设计使得主板到接口板和操作键盘板所有的通信信息均可在一帧内完成, 节省了通信时间, ARMS3C2410的FIFO模式中断支持一次12字节的发送和接收。该协议不需要ID, ARM有两个UART, 点对点连接接口板和用户键盘板。图3 (b) 是一个字节Data0的解析, D7~D0每位控制一个输出端口, 每位输出端口 (OUT-7~OUT0) 对应机床的一个继电器或者电磁阀或者用户键盘板的一个指示灯。数控机床的输入输出以及用户键盘板上有很多这样的数字IO, 它们经过编码后被填入图3 (a) 的Data7~Data0。
3.2 通信的建立
图4是通讯建立的状态机。帧的第1字节是CMD, 共8位, 支持256个命令。本数控系统用到的的常见命令:复位命令0X01, 启动命令0X02, 停止命令0X03, 正常数据0X04。前三个命令要有应答。通信的建立从硬件复位开始, 由主站 (ARM) 发起, 在周期任务里发送复位命令0X01给从站, 从站的状态信息依赖这个复位命令进行初始化。从站完成复位以后, 发一个应答给主站, 表示复位已完成。然后, 主站发送启动命令0X02, 该命令发给从站, 启动从站里的一些定时模块, 为接下来的数据采集做准备。从站启动完成后, 发送应答给主站, 表示启动已完成。接下来主站发一个数据帧, 表示接数准备完成, 同时打开看门狗计时器 (溢出时间是3秒) 。每当收到从站发来的数据时看门狗计时器清零, 当看门狗计时器溢出时状态机复位, 表示通讯系统故障。此时, 系统进入自修复自动通信状态。
通信系统建立以后, 主站通过看门狗监视从站的通信是否正常工作。主站收到来自从站的数据, 根据自动循环或手动调整的加工要求决定是否返回应答数据。考虑到频繁的帧应答不仅需要大量的时间, 而且还会造成死锁。本协议规定, 当通信建立以后, 从站每20ms定时向主站发送一帧数据, 不管主站是否应答, 当收到停止命令时, 从站停止数据帧发送。
4 串行通信协议的软件设计
函数Renew OSInit Uart为ARM9S3C2410的初始化代码, 解决串口初始化、串口发送中断和接收中断初始化问题。其中ARM的串口1接接口板, 串口2接用户键盘板。具体的代码如下所示:
图5是上位机ARMS3C2410串口接收中断流程图, 使能了超时中断。在正常情况下, 当下位机开始向上位机发送数据的时候, ARM S3C2410连续收到12个字节的数据后, 进入接收中断。若因为通信的原因没有接收到触发深度设定的12个字节且三个字长的时间没有收到任何数据, 进入超时中断。超时中断和接收中断共用同一个中断源。在接收中断的最开始, 读取接收数据长度, 看是否等于触发深度12, 若不是, 说明是超时中断, 清空串口缓冲区数据, 丢弃数据, 清零看门狗计时器, 中断返回。当接收数据等于触发深度, 说明接收的是一帧完整的帧。把串口缓冲区数据逐个读出, 送到接收数组, 同时, 计算累加和。接下来判断帧头、帧尾和累加和是否正确, 若正确, 将接收到的数据填充到IO的据结构里去, 称IO处理。若不正确, 丢弃数据, 然后返回。
5 系统实测结果
图6 (a) 数控系统控制箱, 包括系统键盘、用户键盘、手轮、主轴波段开关和用于界面显示的液晶屏。图6 (b) 是数控系统的主板。图6 (c) 是自动加工时的操作和显示界面。图6 (d) 是加工的工件。
6 结论
本文设计了一种RS-422的通信协议, 用于解决数控系统模块间信号通信。利用ARMS3C2410异步串行通信接口的资源, 结合模块间数据通信的需求, 将中断和FIFO帧 (12字节) 用于数据通信。实现了下位机每隔20ms向上位机传送一次数据的功能。看门狗、超时中断、出错重发机制、帧头帧尾和累加和校验保证了数据通信的可靠性和稳定性。该协议应用在两轴车床上, 完成了轴承外环沟道的小批量试产。其加工样品完全满足工艺和误差的要求, 达到了预期的设计要求, 验证了本协议的有效性和实用性。
摘要:一个复杂的数控系统, 模块众多, 如何使得各模块间通讯实时且可靠是一个关键。研究了数控系统各模块间的通信协议, 设计了串行通信协议和软件框图, 并给出了串行通信硬件设计的电路图。最后通过数控系统现场加工实验验证了该通信协议设计的有效性。
关键词:ARM,数控系统,通信协议,串行通信,RS-422总线
参考文献
[1]中华人民共和国国务院.国家中长期科学和技术发展规划纲要 (2006-2020年) [Z].北京:中华人民共和国国务院, 2006.
[2]阳宪惠, 工业数据通信与控制网络[M].北京:清华大学出版社, 2003.
[3]谢剑, 金永乔, 等.高档数控系统中的RS485串行总线接口研究与开发[J].组合机床与自动化加工技术, 2010 (5) :22—25.
串行通信系统论文 篇11
在世纪之交的几次高技术局部战争中,无人机(UAV)得到了广泛使用并且表现优异,在国际上掀起了新的无人机研制热潮。由于无人机在飞行过程中,机载设备所处的工作环境非常复杂,很多情况难以预料,因此必须做大量的地面检测;同时为了确保无人机可靠有效地执行各项飞行任务,在其起飞前也必须进行充分检测,确保装备使用时的完好性。作为无人机综合检测系统中非常重要的地面检测子系统就是专门用于完成以上这些工作而设计的。
1 实现串行口通信的方法
目前,利用Delphi开发串行口通信模块主要有两种比较成熟的方法:一是调用WindowsAPI函数实现串行口通信;二是利用Delphi提供的ActivX通信控件,如Mscomm32。
1.1 利用Windows提供的API函数
Delphi作为编程语言,可以方便地调用 CreateFile、ReadFile、WriteFile等WindowsAPI函数,实现对串行口的输入输出控制操作。首先,用CreateFile( )函数打开通信端口,然后通过SetupComm( )函数给通信的输入输出队列分配一定大小的内存缓冲区,接着通过BuildCommDCB( )函数和SetCommstate( )等函数对主要通信参数进行设置。初始化完成后就可以利用ReadFlie( )函数和 WriteFlie( )函数对通信端口进行读写操作了。
1.2 利用MSComm32控件
MSComm是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,用于串行口发送和接收数据的控件,它为应用程序提供了通过串行接口收发数据的简便方法。每个ActiveX控件都有它的属性和方法。每个属性都可以通过指定整数索引及相应的值来设置,也可通过整数索引值来获取控件的属性值。MSComm32控件提供了很多标准的事件处理函数、过程,通过方法设置串行通信的参数(端口号、波特率等),可以方便地实现串行通信。
2 地面检测系统的设计
2.1 需求分析
该无人机地面检测系统的基本需求为:
(1) 参数监视功能 可通过该检测系统监视机上飞行参数及机载设备参数。
(2) 机载设备控制功能 该检测系统与飞控计算机连接后,可以向飞控计算机发送指令,可监视指令回报及设备工作情况,从而判断其是否工作正常。
(3) 具备对检测数据进行管理的功能 可以根据需要查询、回放历史数据,并能生成各种报表。
2.2 该系统的整体设计
开发平台选用Delphi 7.0,后台数据库采用Microsoft SQL Server 2000,系统运行平台为Windows2000专业版。
2.2.1 硬件组成
系统硬件有中心处理计算机、相关接口板卡及外设连接线。中心处理计算机选用某型军用便携式计算机,板卡为4口RS-422串行口卡,接口连线为串行口特制连线。
2.2.2 软件组成
本系统需要对飞控机功能、高度、空速、缸温、平台功能等进行测试,判断其工作是否正常,同时记入数据库。由于该部分内容较多,相互独立又相互联系,而且要求具有可扩展性,因此我们采用模块细化管理方法,下设若干模块,该部分的结构流程图见图1。
3 地面检测系统的实现
3.1 软件实现
下面以高度检测模块为例介绍其实现过程:将该检测系统与飞控计算机测试表接口或遥测数据接口连接,通过操纵器模块向飞控计算机发送指令,观察软件界面中高度显示和结果分析,并将用户选择的记录数据入库。该串口数据通信协议是:数据传输速率为9600bps,1位起始位,8位数据位,1位停止位,无奇偶校验位。
(1) 主窗体创建时的初始化
首先从数据库中读取相应通信协议的串口参数,再进行串口通信的初始化工作,主要是设置通信的参数并为打开端口通信的运行作准备。在Delphi7.0编写程序过程中,我们采用编写代码的方式来设置通信参数,主要有端口号、波特率数据位、停止位、奇偶校验位等。这样可保证程序的鲁棒性。主要代码如下:
为了实现实时监测功能,接收数据的读取要尽可能的快速,则设置MSComm_RT的属性RThreshold=32,接收缓冲区收到32个字节产生OnComm事件;
(2) MSComm_RT的Oncomm事件
接收缓冲区接收到32个字节数据后触发该事件进行数据接收,代码如下:
然后对接收的数据进行处理,放入公共变量m_PubVar中。
(3) 高度检测子模块中的定时器
通过高度检测子模块的Timer控件来配合MSComm32控件显示实时监测的结果,同时进行相应的计算。 主要代码如下:
3.2 软件实现过程中的主要问题及其解决方法
3.2.1 接收缓冲区的设置
本检测系统采用MSComm32控件接收串行口数据,遥测接口每80ms接收一帧完整数据,然后进行数据处理。如果检测系统在下一帧数据接收前即80ms内能将数据计算处理完毕,则接收缓冲区内只会保存有一帧数据,接收缓冲区的大小不会影响实时监测效果,这时可以实现实时监测或实时控制。
如果检测系统数据处理量很大,在80ms内不能将数据计算处理完毕,接收缓冲区的大小就会影响实时监测效果。如果接收缓冲区设置得很大,在数据计算处理完毕前,接收缓冲区内就会保存有多帧数据,一旦工作时间加大,缓冲区内滞留数据帧就会增多,当接收缓冲区充满后,部分新数据因不能及时采集到接收缓冲区中,而使当前的真实工作情况和该检测系统处理结果产生较大的偏差,对实时监测和实时控制很不利。
所以,鉴于该检测系统数据处理量较大,接收缓冲区设置不能过大,在该系统中设置接收缓冲区为64个字节,采用只处理最新两帧数据的方法来保证数据处理的实时性。
3.2.2 发送缓冲区的变量格式转换
操纵器模块负责向飞控计算机发送控制指令,产生相应的控制信号,使无人机做相应的动作进行各项检测工作。在系统开发过程中对MSComm_RT.Output进行操作时,把Byte型变量赋值给它后调试时接收端接收到的数据全为0。
我们经过分析后查明了原因。这是因为MSComm_RT.Output的值为variant型变量,和Byte类型不能匹配,Delphi也没有强制该类型转换的语句。我们采取以下方法解决了此问题:先定义一个变量,命名为Frame_Send,定义它为variant型变量,然后在运行时再给它确定具体类型,即定义一个VariantArray数组,使用VarArrayCreate()语句,在Delphi中语句如下:
Frame_Send:= VarArrayCreate([1,sizeof(pubvar)],VarByte); //pubvar为记录类型变量
然后把Frame_Send的值赋给MSComm_RT.Output,调试结果显示,采用此方法接收端接收数据情况正常。
4 结 语
本文对 Windows2000下Delphi7.0程序中使用MSComm32控件编程的方法作了探讨。实践证明,采用Delphi7.0结合MSComm32控件开发某型无人机地面检测系统的应用软件,只要处理好实时串行通信部分,就能在短时间内开发出界面友好、功能易扩展的无人机地面检测子系统。
参考文献
[1]饶贵安,陈铁红.实时检测系统设计[J].电测与仪表,2003(12):47-50.
[2]钱默抒,熊克.无人机大气数据检测系统的设计[J].桂林电子工业学院学报,2006(2):97-99.
[3]陈皓生,徐军,陈大融.一种微型飞行器测控系统数据的收发[J].计算机工程与应用,2001(24):151-152.
[4]范玉青.现代飞机制造技术[M].北京:北京航空航天大学出版社,2001.
【串行通信系统论文】推荐阅读:
串行通信口09-26
双机串行通信设计12-28
轮询串行通信01-07
SPI串行通信协议07-02
串行口通信技术开题报告11-16
实验一简单的异步串行通信实验报告06-03
异步串行传输论文11-10
并行和串行论文12-15
串行程序01-18
串行设计06-10