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

下载本文档

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

文档简介

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

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

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

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

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

6、标、打印机或者Modem同时也可以接工业仪器仪表。用于驱动与连线的改进,实际应用中RS-232的传输长度或者速度常常超过标准的值。RS-232只限于PC串口与设备间点对点的通信。RS-232串口通信最远距离就是50英尺。DB-9针连接头从计算机连出的线的截面。RS-232针脚的功能:数据:TXD(pin3):串口数据输出RXD(pin2):串口数据输入握手:RTS(pin7):发送数据请求CTS(pin8):清除发送DSR(pin6):数据发送就绪DCD(pin1):数据载波检测DTR(pin4):数据终端就绪地线:Labview串口通信开发实例GND(pin5):地线其她RI(pin9):铃

7、声指示3, 什么就是RS-422?RS-422(EIARS-422-AStandard)就是Apple的Macintosh计算机的串口连接标准。RS-422使用差分信号,RS-232使用非平衡参考地的信号。差分传输使用两根线发送与接收信号,对比RS-232,它能更好的抗噪声与有更远的传输距离。在工业环境中更好的抗噪性与更远的传输距离就是一个很大的优点。4, 什么就是RS-485?RS-485(EIA-485标准)就是RS-422的改进,因为它增加了设备的个数,从10个增加到32个,同时定义了在最大设备个数情况下的电气特性,以保证足够的信号电压。有了多个设备的能力,您可以使用一个单个RS-422

8、口建立设备网络。出色抗噪与多设备能力,在工业应用中建立连向PC机的分布式设备网络、其她数据收集控制器、HMI或者其她操作时,串行连接会选择RS-485。RS-485就是RS-422的超集,因此所有的RS-422设备可以被RS-485控制。RS-485可以用超过4000英尺的线进行串行通行。Labview串口通信开发实例DB-9引脚连接从计算机连出的线的截面。RS-485与RS-422的引脚的功能数据:TXD+(pin8),TXD-(pin9),RXD+(pin4),RXD-(pin5)握手:RTS+(pin3),RTS-(pin7),CTS+(pin2),CTS-(pin6)地线:GND(pi

9、n1)5, 什么就是握手?RS-232通行方式允许简单连接三线:Tx、Rx与地线。但就是对于数据传输,双方必须对数据定时采用使用相同的波特率。尽管这种方法对于大多数应用已经足够,但就是对于接收方过载的情况这种使用受到限制。这时需要串口的握手功能。在这一部分,我们讨论三种最常用的RS-232握手形式:软件握手、硬件握手与Xmodem。a,软件握手:我们讨论的第一种握手就是软件握手。通常用在实际数据就是控制字符的情况,类似于GPIB使用命令字符串的方式。必须的线仍然就是三根:Tx,Rx与地线,因为控制字符在传输线上与普通字符没有区别,函数SetXModemfo许用户使能或者禁止用户使用两个控制字符

10、XONfOXFF这些字符在通信中由接收方发送,使发送方暂停。例如:假设发送方以高波特率发送数据。在传输中,接收方发现由于CPU亡于其她工作,输入buffer已经满了。为了暂时停止传输,接收方发送XOFF典型的值就是十进制19,即十六进制13,直到输入buffer空了。一旦接收方准备好接收,它发送XON典型的值就是十进制17,即十六进制11,继续通信。输入buffer半满时,LabWindows发送XOFF此外,如果XOFF专输被打断,LabWindows会在buffer达到75与90时发送XOFF。显然,发送方必须遵循此守则以保证传输继续。b,硬件握手:第二种就是使用硬件线握手。与Tx与Rx线

11、一样,RTS/CTS与DTR/DSR-起工作,一个作为输出,另一个作为输入。第一组线就是RTS(RequesttoSend)与CTS(CleartoSend)。当接收方准备好接收数据,它置高RTSII表示它?t备好了,如果发送方也就绪,它置高CTS,表示它即将发送数据。另一组线就是DTR(DataTerminalReady)与DSR(DataSetReady)。这些现主要用于ModemiS信。使彳#串口与Modemil信她们的斗犬态。例如:Labview串口通信开发实例当ModemC经准备好接收来自PC的数据,它置高DT磔,表示与电话线的连接已经建立。读取DSRI置高,PC机开始发送数据。一个

12、简单的规则就是DTR/DSFffi于表示系统通信就绪,而RTS/CTSffl于单个数据包的传输。在LabWindows,函数SetCTSModei能或者禁止使用硬件握手。如果CTSIt式使能,LabWindows使用如下规则:当PC发送数据:RS-232库必须检测CT酸高后才能发送数据。当PC接收数据:如果端口打开,且输入队列有空接收数据,库函数置高RTSWDTR如果输入队列90%满,库函数置低RTS但使DTR隹持高电平。如果端口队列近乎空了,哭喊数置高RTS,但使DRT隹持高电平。如果端口关闭,库函数置低RTSfDTRc,XModem握手:最后讨论的握手叫做XModem件传输协议。这个协议在

13、Modemil信中非常通用。尽管它通常使用在Modemil信中,XModem协议能够直接在其她遵循这个协议的设备通信中使用。在LabWindows中,实际的XModem用对用户隐藏了。只要PC与其她设备使用XModerm议,在文件传输中就使用LabWindows白勺XModermi数。函数就是XModemConfig,XModemSendLabview串口通信开发实例与XModemReceiveXModemt用介于如下参数的协议:start_of_data、end_of_data、neg_ack、wait_delay、start_delay、max_tries、packet_size。这些参数

14、需要通信双方认定,标准的XModenH一个标准的定义:然而,可以通过XModemConfig函数彳改,以满足具体需要。这些参数的使用方法由接收方发送的字符neg_ack确定。这通知发送方其准备接收数据。它开始尝试发送,有一个超时参数start_delay;当超时的尝试超过max_ties次数,或者收到接收方发送的start_of_data,发送方停止尝试。如果从发送方收到start_of_data,接收方将读取后继信息数据包。包中含有包的数目、包数目的补码作为错误校验、packet_size字节大小的实际数据包,与进一步错误检查的求与校验值。在读取数据后,接收方会调用wait_delay,然后

15、想发送方发送响应。如果发送方没有收到响应,它会重新发送数据包,直到收到响应或者超过重发次数的最大值max_tries。如果一直没有收到响应,发送方通知用户传输数据失败。由于数据必须以pack_size个字节按包发送,当最后一个数据包发送时,如果数据不够放满一个数据包,后面会填充ASCII码NULL(0)字节。这导致接收的数据比原数据多。在XModer#况下一定不要使用XON/XOF冏为XModemt送方发出包的数目很可能增加到XON/OF我制字符的值,从而导致通信故隙。Labview串口通信开发实例RS-232,RS-422与RS-485串口通讯接口的快速比较问题:RS-232,RS-422以

16、及RS-485串口的基本区别就是什么?解答:下面的表格比较了:工作方式,驱动器与接收器的总数,电缆的最大长度及最大传输速率。RS-232就是大多数计算机通用的接口,比如COM1与COM2。注意,大多数计算机的接口COM1以及COM2并不就是RS-422/RS-485。然而,RS-422就是苹果Macintosh计算机的标准接口。RS-485就是基于RS-422的一种改进,在工业中更普遍。所有NI的RS-485板卡都支持RS-422标准。顼甘RS-422RST35外方式的差分,单续上的能动器和核收般的总熬(RS.4g5阿部一次一个服功器呼1个鬓动器L个携悦招1个驱动器10个售收器g个理动器的个横

17、圆器龟嫌最长长度3口英尺C500pF)4的0英尺最大传输速率(附尺4W0物)3的(特定情同下可以更高)10KtbiUklOMbiU'e问题:串行通讯的基本架构就是什么?解答:串口通讯架构每一个异步串行系统的核心都就是一个UART(通用异步接收机/发送机)。UART不仅控制传输的数据,相应的电平,同时也控制通讯的速度。UART能够存储足够的信息,所以保证了在电脑忙得时候,数据流也能连续传输。这对于同时处理大量任务的操作系统非常有帮助。下面附图就是理想串行通讯的示意。我们大部分的串行卡都有一个输入输出的FIFO(查瞧目录了解详细信息)。FIFO的数据可以通过串行驱动获取。串行驱动会自动地把

18、FIFO的数据传输到软件的缓存,这个缓存就是可以在应用软件由用户配置的(比如,在LabVIEW您可以使用SerialPortInitVI来设置缓存去大小)。读接口的数据实际上包含从软件缓存读的过程。确认硬件操作的回路测试有三种方式确认串口的操作:LabVIEW,超级终端与LabWindows/CVI。这三种方式进行回路测试就是把串口的发送与接受引脚短接。第一步描述短接引脚的过程。LabVIEW的处理写在下面,而超级终端与LabWindows/CVI的过程在本文后面的链接里。对于LabVIEW建议使用如下步骤:a,连接一根电缆到串口。最常用的RS-232电缆就是9针或者25针(DB-9或者DB-

19、25)。在电缆端把2、3引脚短接。这会把计算机发送数据的线连接到接收数据的线。一旦短接,BD-9的上一排变成12=345对于RS-485端口,电压就是差分的。因此,您必须短接TXD+与RXD+、TXD-与RXD-(对于DB-9电缆,连接pin4到pin8与pin5到pin9;对于模块化接口,连接pin2到pin6与pin3到pin7;对于Combicon接头,连接pin1到pin5与pin2到pin4。)确保您的软件配置为4线模式。在LabVIEW中应用串口第一部分使用LabVIEW系统VI、串口VI介绍LabVIEW的串口通讯VI位于InstrumentI/OPlatte的Serial中,包

20、括:VI名称VI功能VISAConfigureSerialPort初始化VISAresourcename指定的串口通讯参数VISAWrite将输出缓冲区中的数据发送到VISAresourcename指定的串口VISARead将VISAresourcename指定的串口接收缓冲区中的数据读取指定字节数的数据到计算机内存中VISASerialBreak向VISAresourcename指定的串口发送一个暂停信号VISABytesatSerialPort查询VISAresourcename指定的串口接收缓冲区中的数据字节数VISAClose结束与VISAresourcename指定的串口资源之间的会

21、话VISASetI/OBufferSize设置VISAresourcename指定的串口的输入输出缓冲区大小VISAFlushI/OBuffer清空VISAresourcename指定的串口的输入输出缓冲区二、使用说明在 LabVIEW环境中使用串口与在其它开发环境中开发过程类似,基本的流程框图如下。图1、串口操作数据流图波特率cm:首先需要调用VISAConfigureSerialPort完成串口参数的设置,包括串口资源分配、波特率、数据位、停止位、校验位与流控等等duplieeitVISAresourcenineSERIAL*Labview串口通信开发实例图2、初始化串口如果初始化没有问题

22、,就可以使用这个串口进行数据收发。发送数据使用VISAWrite,接收数据使用VISARead。在接收数据之前需要使用VISABytesatSerialPort查询当前串口接收缓冲区中的数据字节数,如果VISARead要读取的字节数大于缓冲区中的数据字节数,VISARead操作将一直等待,直至Timeout或者缓冲区中的数据字节数达到要求的字节数。当然也可以分批读取接收缓冲区或者只从中读取一定字节的数据。dLupli cateVISA rsefltir 丸5色MM泅wl:lI发送数据I 32读取字节数图3、从串口发送数据cate VISA y esOlirCe n印巨必川全息、接收数据图4、从

23、串口接收数据在某些特殊情况下,需要设置串口接收/发送缓冲区的大小,此时可以使用VISASetI/OBufferSize;而使用VISAFlushI/OBuffer则可以清空接收与发送缓冲区。在串口使用结束后,使用VISAClose结束与VISAresourcename指定的串口之间的会话。jupli.ceVISAresourceitamsllupli也在七百WEAr总soiircertanieyupJ.1e玄士心VISAresotLrce瓦gumi/oy-冏泡ir;'-ii,uiii,u,wvu-Hvvv1t图5、设置缓冲区大小图6、清空缓冲区图7、结束会话/线程具体的例子可以参考:e

24、xamplesinstrsmplserl、llb第二部分使用MSCOMM控件在LabVIEW中使用MSCOMM控彳,与在VC、VB中使用一样。同样可以使用中断方式进行接收。具体的例子可以发。索取图8、使用控件的串口收发程序图9、程序数据流图首先通过LabVIEW的工具菜单Tools>>Advanced>>ImportActiveXControls”将Microsoft的串口控件CommunicationsControl,version6、0”添加到LabVIEW环境中,存放在缺省路径即可,这样在UserControlsPaletteMicro里面可1到这个控件。Rd炉皿

25、匚edControls&Mi crcioftMi crosoftHi croioftMi eras c£tSelect An? ar more ActiveX controls from the list. These Gcutrols will te imported 35 Custcn Control Filts.Jhlbtfj 上忸虫里21?匚3比full !zijMi crosfift C onihmi c4.ti oilsvfiTEi&n 8. 0MiMi crosoftHi crosoftMicrosoftMicroLoftMicroso£tHu

26、eConila.VIMetrics.FrtfiliVis.Eii+ErrorCodts.Eii+PalfittftVi4WS.Ep4rtSlrizigs.TmpoftStrizigs.LmpcirtActiveXContriQils,hctiveXFrorty.BJIAssemblyReferences.图10、添加ActiveX控件菜单AitiihitienCfintrfil6.0(SF4)AnimationControl,usr5ioii5.0(5F2)BarCadeControl9.CClartCon.trolB.OmF4)巾LEDB)CharlCoiLtrolbversi3D.5.0C

27、ominojiDialog:Controlversioni,60CoolbaruntroLersiqdb.0D£CantoControLversion6.口DilistCqntrg,=ionDIS图11、选择添加用户控件将串口控件放置在FrontPanel图12、用户控件上,在框图程序中用控件属性对其进行编程,实现所需要的功能注意:一个串口资源要有一个MSCOMM控件与之相对应第三部分注意事项一、串口通讯的波特率设置要精确,比如要求9600的波特率,则晶振应选择11、0593MHz或其倍数。二、由于通常情况下LabVIEW串口VI接收或发送的都就是字符串(Normal),所以如果需要

28、发送或接收十六进制数值(Hex),请在发受接收之前进行必要的转换。2、1、数值型数据的处理方法:2、1、1、1、如果这些数据就是静态的,也就说在程序设计阶段要传输的数据就已经确定了,在这种ff况下,首先设置VISAWrite的writebu的显示属性为HexDisplay,然后直接输入要发送的16进制字符串就可以了。串口设备的控制命令通常就是由一个或多个16进制字符4的,当我们需要对其进行控制时经常会采用这种方法发送控制命令。2、1、2、数据就是动态的;即要传输的数值型数据就是动态产生与变化的,在发送之前首先要将其转换成对应的16进制字符串,才能赋VISAWrite发送。将这些数据构成一个数组,用ByteArrayToString进行转换,转换的结果就就是对应数组数值的字符串,可以提交VISWrite发送。或者使用TypeCast也可以实现同样的功能。图13、串口数据转换界面字符串1 ( Hex*«*« ib-c |雷口发送数据串口接收数据(J

温馨提示

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

评论

0/150

提交评论