Labview串口通信开发实例_第1页
Labview串口通信开发实例_第2页
Labview串口通信开发实例_第3页
Labview串口通信开发实例_第4页
Labview串口通信开发实例_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、串口通信的基本概念串口通信的基本概念1,什么是串口?2,什么是 RS-232?3,什么是 RS-422?4,什么是 RS-485?5,什么是握手?1,什么是串口? 串口是计算机上一种非常通用设备通信的协议(不要与通用串行 总线Universal Serial Bus或者USB昆淆)。大多数计算机包含两个基于RS232的串口。串口同时也是仪器仪表设备通用的通信 协议;很多GPIB兼容的设备也带有RS-232 口。同时,串口通信 协议也可以用于获取远程采集设备的数据。串口通信的概念非常简单,串口按位( bit )发送和接收字节。尽管比按字节( byte )的并行通信慢,但是串口可以在使用一根线发送

2、数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总常不得超过 20 米,并且任意两个设备间的长度不得超过 2 米;而对于串口而言,长度可达 1200米。典型地,串口用于 ASCII 码字符的传输。通信使用 3 根线完成: (1)地线,(2)发送,(3)接收。由于串口通信是异步的,端 口能够在一根线上发送数据同时在另一根线上接收数据。其他线 用于握手,但是不是必须的。串口通信最重要的参数是波特率、 数据位、停止位和奇偶校验。对于两个进行通行的端口,这些参 数必须匹配:a, 波特率:这是一个衡量通信速度的参数。它表示每秒钟传送的 bit

3、 的个数。例如 300波特表示每秒钟发送 300 个 bit 。当我 们提到时钟周期时,我们就是指波特率例如如果协议需要 4800 波特率,那么时钟是4800HN这意味着串口通信在数据线上的采 样率为4800HN通常电话线的波特率为14400,28800和36600。 波特率可以远远大于这些值,但是波特率和距离成反比。高波特 率常常用于放置的很近的仪器间的通信,典型的例子就是 GPIB 设备的通信。b, 数据位:这是衡量通信中实际数据位的参数。当计算机发送 一个信息包,实际的数据不会是 8 位的,标准的值是 5、7 和 8 位。如何设置取决于你想传送的信息。比如,标准的 ASCII 码是 01

4、27 (7位)。扩展的ASCII码是0255 (8位)。如果数据使 用简单的文本 (标准 ASCII 码),那么每个数据包使用 7 位数据。 每个包是指一个字节,包括开始 / 停止位,数据位和奇偶校验位。由于实际数据位取决于通信协议的选取,术语“包”指任何通信 的情况。c, 停止位:用于表示单个包的最后一位。典型的值为1, 1.5和2 位。由于数据是在传输线上定时的,并且每一个设备有其自己 的时钟,很可能在通信中两台设备间出现了小小的不同步。因此 停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步 的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越 大,但是数据传输率同时也越慢。d

5、, 奇偶校验位:在串口通信中一种简单的检错方式。有四种检 错方式:偶、奇、高和低。当然没有校验位也是可以的。对于偶 和奇校验的情况,串口会设置校验位(数据位后面的一位) ,用 一个值确保传输的数据有偶个或者奇个逻辑高位。例如,如果数 据是 011,那么对于偶校验,校验位为 0,保证逻辑高的位数是 偶数个。如果是奇校验,校验位位 1,这样就有 3 个逻辑高位。 高位和低位不真正的检查数据,简单置位逻辑高或者逻辑低校 验。这样使得接收设备能够知道一个位的状态,有机会判断是否 有噪声干扰了通信或者是否传输和接收数据是否不同步。2,什么是 RS-232?RS-232(ANSI/EIA-232标准)是I

6、BM-PC及其兼容机上的串行连 接标准。可用于许多用途,比如连接鼠标、打印机或者Modem,同时也可以接工业仪器仪表。用于驱动和连线的改进,实际应用 中RS-232的传输长度或者速度常常超过标准的值。RS-232只限 于PC串口和设备间点对点的通信。RS-232串口通信最远距离是50 英尺。DB-9针连接头从计算机连出的线的截面。RS-232针脚的功能:数据:TXD(pin 3 ):串口数据输出RXD(pin 2 ):串口数据输入握手:RTS(pin 7 ):发送数据请求CTS(pin 8 ):清除发送DSR(pin 6 ):数据发送就绪DCD(pin 1 ):数据载波检测DTR(pin 4

7、):数据终端就绪地线:GND(pin 5 ):地线其他RI(pin 9 ):铃声指示3,什么是 RS-422?RS-422(EIA RS-422-A Standard )是 Apple 的 Macintosh 计算 机的串口连接标准。RS-422使用差分信号,RS-232使用非平衡 参考地的信号。差分传输使用两根线发送和接收信号,对比RS-232,它能更好的抗噪声和有更远的传输距离。在工业环境中更好的抗噪性和更远的传输距离是一个很大的优点。4,什么是 RS-485?RS-485 (EIA-485标准)是RS-422的改进,因为它增加了设备的 个数,从 10 个增加到 32 个,同时定义了在最大

8、设备个数情况下 的电气特性,以保证足够的信号电压。有了多个设备的能力,你 可以使用一个单个RS-422 口建立设备网络。出色抗噪和多设备 能力,在工业应用中建立连向 PC机的分布式设备网络、其他数 据收集控制器、HMI或者其他操作时,串行连接会选择 RS-485。RS-485是RS-422的超集,因此所有的RS-422设备可以被 RS-485 控制。RS-485可以用超过4000英尺的线进行串行通行。DB-9 引脚连接从计算机连出的线的截面。RS-485和RS-422的引脚的功能数据:TXD+(pin 8), TXD-(pin 9), RXD+(pin 4), RXD-( pin5)握手:RT

9、S+(pin 3), RTS-(pin 7), CTS+(pin 2), CTS-( pin 6) 地线: GND(pin 1 )5,什么是握手?RS-232通行方式允许简单连接三线:Tx、Rx和地线。但是对于数据传输,双方必须对数据定时采用使用相同的波特率。尽管这种方法对于大多数应用已经足够,但是对于接收方过载的情况这种使用受到限制。这时需要串口的握手功能。在这一部分,我们讨论三种最常用的RS-232握手形式:软件握手、硬件握手和Xmodem。a,软件握手:我们讨论的第一种握手是软件握手。通常用在实 际数据是控制字符的情况,类似于GPIB使用命令字符串的方式。 必须的线仍然是三根:Tx,Rx

10、和地线,因为控制字符在传输线上 和普通字符没有区别,函数SetXModen允许用户使能或者禁止用 户使用两个控制字符XON和OXFF这些字符在通信中由接收方发 送,使发送方暂停。例如:假设发送方以高波特率发送数据。在传输中,接收方发现由于CPU忙于其他工作,输入buffer已经满了。为了暂时停止 传输,接收方发送XOFF典型的值是十进制19,即十六进制13, 直到输入buffer空了。一旦接收方准备好接收,它发送XON典 型的值是十进制 17,即十六进制 11,继续通信。输入 buffer 半 满时,LabWindows发送XOFF此外,如果XOFF专输被打断, LabWindows会在buf

11、fer达到75%和90%时发送XOFF显然, 发送方必须遵循此守则以保证传输继续。b,硬件握手:第二种是使用硬件线握手。和Tx和Rx线一样,RTS/CTS和DTR/DSF一起工作,一个作为输出,另一个作为输入。 第一组线是 RTS(Request to Send )和 CTS(Clear to Send )。 当接收方准备好接收数据,它置高 RTS线表示它准备好了,如果 发送方也就绪,它置高 CTS表示它即将发送数据。另一组线是 DTR(Data Terminal Ready )和 DSR(Data Set Ready )。这些现 主要用于Modenil信。使得串口和Modemi!信他们的状态

12、。例如: 当Modem已经准备好接收来自PC的数据,它置高DTR线,表示 和电话线的连接已经建立。读取DSF线置高,PC机开始发送数据。 一个简单的规则是 DTR/DSR用于表示系统通信就绪,而 RTS/CTS 用于单个数据包的传输。在LabWindows函数SetCTSMode使能或者禁止使用硬件握手。如果CTS模式使能,LabWindows使用如下规则:当PC发送数据:RS-232库必须检测CTS线高后才能发送数据。当PC接收数据:如果端口打开,且输入队列有空接收数据,库函数置高RTS和DTR 如果输入队列90%满,库函数置低RTS但使DTF维持高电平。 如果端口队列近乎空了,哭喊数置高R

13、TS但使DRT隹持高电平。如果端口关闭,库函数置低 RTS和DTRc, XModem握手:最后讨论的握手叫做XModem文件传输协议。这 个协议在Modem通信中非常通用。尽管它通常使用在 Modem通信 中,XModen协议能够直接在其他遵循这个协议的设备通信中使用。在LabWindows中,实际的XModem应用对用户隐藏了。只要PC和其他设备使用XModen协议,在文件传输中就使用LabWindows的 XModen函数。函数是 XModemConfig XModemSend 和口 XModemReceiveXModen使用介于如下参数的协议:start_of_data 、end_of_

14、data、 neg_ack、wait_delay 、start_delay 、max_tries 、packet_size 。这些参数需要通信双方认定,标准的 XModen有 一个标准的定义:然而,可以通过XModemConfig函数修改,以满足具体需要。这些参数的使用方法由接收方发送的字符 neg_ack 确定。这通知发送方其准备接收数据。它开始尝试发送,有一个超时参数start_delay ;当超时的尝试超过 max_ties 次数,或者收到接收方发送的 start_of_data ,发送方停止尝试。如果从发送方收到start_of_data ,接收方将读取后继信息数据包。包中含有包的数目

15、、包数目的补码作为错误校验、 packet_size 字节大小的实际数据包,和进一步错误检查的求和校验值。在读取数据后,接收方会调用 wait_delay ,然后想发送方发送响应。 如果发送方没有收到响应,它会重新发送数据包,直到收到响应或者超过重发次数的最大值 max_tries 。如果一直没有收到响应,发送方通知用户传输数据失败。由于数据必须以 pack_size 个字节按包发送, 当最后一个数据包 发送时,如果数据不够放满一个数据包,后面会填充 ASCII 码 NULL( 0)字节。这导致接收的数据比原数据多。在XModenht况下一定不要使用XON/XOFJF因为XModen发送方发出

16、包的数目很 可能增加到XON/OF控制字符的值,从而导致通信故障。RS-232 , RS-422 和 RS-485 串口通讯接口的快速比较问题:RS-232 , RS-422 以及 RS-485 串口的基本区别是什么?解答:下面的表格比较了:工作方式,驱动器和接收器的总数,电缆的最大长度及最大传输速率。RS-232 是大多数计算机通用的接口,比如 COM1 和 COM2 。注意,大多数计算机的接口 COM1 以及 COM2 并不是RS-422/RS-485 。然而, RS-422 是苹果 Macintosh 计算机的标准接口。 RS-485 是基于 RS-422 的一种改进,在工业中更普遍。所

17、有 NI 的 RS-485 板卡都支持 RS-422 标准。项目R3232RS-422RJM85工作芳或单端差分“单热上的驰动器和接 收黯肋总数但岛4对 甩貉一抚一牛奧渤器 有妁i+ag动器1牛携收器1个軀动器 10牛援收器如个观动器12牛撰收器血英尺(25COpF)*她英尺4000英尺毘犬传输速率(对 期七沁*歩40 R4000 蘇)20WB (持定情况下 可以更旬1B hib 血e10 Mbits/问题:串行通讯的基本架构是什么?解答:串口通讯架构每一个异步串行系统的核心都是一个UART(通用异步接收机/发送机)。UART不仅控制传输的数据,相应的电平,同时也控制通讯的速度。UART能够存

18、储足够的信息,所以保证了在电脑忙得时候,数据流也能连续传输。这对于同时处理大量任务的操作系统非常有帮助。下面附图是理想串行通讯的示意。我们大部分的串行卡都有一个输入输岀的FIFO (查看目录了解详细信息)。FIFO 的数据可以通过串行驱动获取。串行驱动会自动地把FIFO 的数据传输到软件的缓存,这个缓存是可以在应用软件由用户配置的(比如,在LabVIEW 您可以使用Serial PortIn it VI来设置缓存去大小)。读接口的数据实际上包含从软件缓存读的过程。确认硬件操作的回路测试有三种方式确认串口的操作:LabVIEW,超级终端和 LabWi ndows/CVI。这三种方式进行回路测试是

19、把串口的发送和接受引脚短接。第一步描述短接引脚的过程。LabVIEW的处理写在下面,而超级终端和LabWi ndows/CVI的过程在本文后面的链接里。对于LabVIEW建议使用如下步骤:a,连接一根电缆到串口。最常用的RS-232 电缆是9针或者25针(DB-9 或者DB-25 )。在电缆端把 2、3引脚短接。这会把计算机发送数据的线连接到接收数据的线。一旦短接,BD-9的上一排变成【1 2 = 3 4 5】。对于RS-485 端口,电压是差分的。因此,你必须短接TXD+ 和RXD+ 、TXD-和RXD-(对于 DB-9 电缆,连接pin4至Upin8 和pin5至Upin9;对于模块化接口

20、,连接pin2至U pin6 和pin3至Upin7;对于 Combicon接头,连接pinl到pin5 和pin2 到pin4 。)确保你的软件配置为4线模式。在LabVIEW中应用串口第一部分使用LabVIEW系统VI、串口 VI介绍LabVIEW 的串口通讯 VI 位于 Instrument I/O Platte 的 Serial 中,包括:VI名称VI功能VISA Con figure Serial Port初始化 VISA resource name指定的串口通讯参数VISA Write将输出缓冲区中的数据发送到VISA resource name指定的串口VISA Read将VIS

21、A resource name指定的串口接收缓冲区中的数据读取指定字节数的数据到计算机内存中VISA Serial Break向VISA resource name指疋的串口发送一个暂停信号VISA Bytes at Serial Port查询 VISA resource name指定的串口接收缓冲区中的数据字节数VISA Close结束与 VISA resource name指定的串口资源之间的会话VISA Set I/O Buffer Size设置 VISA resource name指定的串口的输入输岀缓冲区大小VISA Flush I/O Buffer清空 VISA resource

22、name指定的串口的输入输出缓冲区二、使用说明在LabVIEW环境中使用串口与在其它开发环境中开发过程类似,基本的流程框图如下波特率读取字节接收数据:WSJi-beErrorJ?!+发送接收关闭Resource耳逊电首先需要调用VISA Con figure Serial Port完成串口参数的设置,包括串口资源分配、波特率、数据位、停止位、校验位和流控等等图1、串口操作数据流图波特率ftSASEfelAL丽 iEEldupliVISA resource 九卯ebf7ol图2、初始化串口如果初始化没有问题,就可以使用这个串口进行数据收发。发送数据使用VISA Write ,接收数据使用 VIS

23、A Read 。在接收数据之前需要使用 VISA Bytes at Serial Port查询当前串口接收缓冲区中的数据字节数,如果VISA Read要读取的字节数大于缓冲区中的数据字节数,VISA Read操作将一直等待,直至Timeout 或者缓冲区中的数据字节数达到要求的字节数。当然也可以分批读取接收缓冲区或者只从中读取一定字节的数据。duplicate VISA resource name图4、从串口接收数据发送数据wl3图3、从串口发送数据在某些特殊情况下,需要设置串口接收/发送缓冲区的大小,此时可以使用VISA Set I/O Buffer Size ;而使用VISA FlushI

24、/O Buffer则可以清空接收与发送缓冲区。在串口使用结束后,使用VISA Close 结束与VISA resource name指定的串VISA r j&sour c e JxaimSIcLupli c ateVISA r esourIgRlname图7、结束会话/线程图5、设置缓冲区大小图6、清空缓冲区口之间的会话。具体的例子可以参考:examplesi nstrsmplserl.llb第二部分使用 MSCOMM控件索取在LabVIEW 中使用MSCOMM 控件,与在 VC、VB中使用一样。同样可以使用中断方式进行接收。具体的例子可以发图8、使用控件的串口收发程序七 串口拎制:Lalug

25、 Ian严 卜串口控制电i o.i卜严卫卫工旦卫Sourca IlflSComm JJ谭莎” INSCoidb FortOpen * PortOpen轻需愉令JTypeTi*eCtllefOldValNewValDis ihld) 口n|9600p N, a, 1Isr2MSCommE退出m-HHE图9、程序数据流图 -SlNSCcmm p CwmFort b Settings P PortOpn* EThreshcld 卜 Thresholdmi5ComPortOpea 首先通过LabVIEW的工具菜单Tools Advaneed Import ActiveXControls ”将 Micr

26、osoft 的串 口控件-“ MicroCommunications Control, version 6.0”添加到LabVIEW 环境中,存放在缺省路径即可,这样在 User Controls Palette 里面可找到这个控件。Eilt Edit Qpert* I Qin rose Wirdw 曲lpMetswremeTit & Axtontatiaik Explerer. . s Ins tzrum efitskti oil_ConpareSource Code CoiLtxol卜VI Revi *5 3 Qlt Hl 3 t OjrgCtrl+YUser Nm* .Euild Apl

27、i?r Shurad Litr uryQ)LL).VI Libr ary fflaniger.,.Edit VI LLbrry.Find Vis oil Disk. R&b ote Fnel Conziect 1 oik Nanaigeir.Wat Publishine Tgol. . PFile EdAdancd图10、添加ActiveX控件菜单丄吁(ijBl;也ees CovTipi 1q.VI N&trics.Frofile VisEii + Error Codes.Eiil falette 7i4*s.Expert Strings. L .Lmp or t Str inigs.Impo

28、rt ActittsI ControLE,.ActiveX Frojerty Browser,. .1JEI 盘sw&nbly References.sSelect one or more cti vel contr ols from the li st. Tkese Controls will be imported as Custom Control Filas.Can trol sMi CTMMi CTMWi GYMMi crostBHi voi oftMi croc oftMi cros oft cros。卞七 eroz o ft cros o tkniftatian Contral

29、6. ii tSF4)Animalioa Control, ufertioa 5. 0 (5P2)BarCode Cojitrol 9. (JChart Control 6.0 P4)(OLEDB)Cliai-t Con.trq1 j, ver ei oil 5. 0C ominon Dialog Con.tr ol, ver si cm 6. 0Mli crasaft C mnhU3iLieions C&ntr&l, v&rEiftn S_ 0Coolbar C witrod, rersi qr 6. DSDohiIq Con trod versi on 6, DLi at Control.

30、 vsrsi ;tt 5. Q DIS图11、选择添加用户控件图12、用户控件将串口控件放置在 Front Panel上,在框图程序中用控件属性对其进行编程,实现所需要的功能。注意:一个串口资源要有一个MSCOMM控件与之相对应第三部分注意事项、串口通讯的波特率设置要精确,比如要求9600的波特率,则晶振应选择11.0593MHz 或其倍数。二、由于通常情况下LabVIEW 串口 VI接收或发送的都是字符串( Normal ),所以如果需要发送或接收十六进制数值( Hex ),请在发或接收之前进行必要的转换。2.1、数值型数据的处理方法:2.1.1、 1、如果这些数据是静态的, 也就说在程序设

31、计阶段要传输的数据就已经确定了,在这种情况下,首先设置VISA Write的write bu的显示属性为 Hex Display,然后直接输入要发送的 16进制字符串就可以了。串口设备的控制命令通常是由一个或多个16进制字符组的,当我们需要对其进行控制时经常会采用这种方法发送控制命令。2.1.2、数据是动态的;即要传输的数值型数据是动态产生和变化的,在发送之前首先要将其转换成对应的16进制字符串,才能赋给VWrite发送。将这些数据构成一个数组,用Byte Array To String进行转换,转换的结果就是对应数组数值的字符串,可以提交VISA W发送。或者使用 Type Cast也可以实

32、现同样的功能串口发送数据:;|阿1I字符昂1 ( Hex )2345 296? 83*字琦串2 ( Hex )2345 296? 3上面是串口发匡数据界面2345 296T 83下面是爭口接收数据界面4529E盲ES30数爼1图13、串口数据转换界面图14、串口数据转换数据流图节。此时我们往往都采用统一的字符形式来处理这些数据,因此有时候我们说,字符是LabVIEW 里最方便的数据类型。节。此时我们往往都采用统一的字符形式来处理这些数据,因此有时候我们说,字符是LabVIEW 里最方便的数据类型。D230K!图15、操作界面节。此时我们往往都采用统一的字符形式来处理这些数据,因此有时候我们说,字符是LabVIEW 里最方便的数据类型。节。此时我们往往都采用统一的字符形式来处理这些数据,因此有时候我们说,字符是LabVIEW

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论