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

下载本文档

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

文档简介

1、-. z.串口通信的根本概念串口通信的根本概念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的个数。例如300波特表示每秒钟发送300个bit。当我们提到时钟周期

3、时,我们就是指波特率例如如果协议需要4800波特率,则时钟是4800Hz。这意味着串口通信在数据线上的采样率为4800Hz。通常线的波特率为14400,28800和36600。波特率可以远远大于这些值,但是波特率和距离成反比。高波特率常常用于放置的很近的仪器间的通信,典型的例子就是GPIB设备的通信。b,数据位:这是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。如何设置取决于你想传送的信息。比方,标准的ASCII码是01277位。扩展的ASCII码是02558位。如果数据使用简单的文本标准 ASCII码,则每个数据包使用7位数据。每个包是指

4、一个字节,包括开场/停顿位,数据位和奇偶校验位。由于实际数据位取决于通信协议的选取,术语包指任何通信的情况。c,停顿位:用于表示单个包的最后一位。典型的值为1,1.5和2位。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停顿位不仅仅是表示传输的完毕,并且提供计算机校正时钟同步的时机。适用于停顿位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。d,奇偶校验位:在串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。当然没有校验位也是可以的。对于偶和奇校验的情况,串口会设置校验位数据位后面的一位,用一个值确保传输

5、的数据有偶个或者奇个逻辑高位。例如,如果数据是011,则对于偶校验,校验位为0,保证逻辑高的位数是偶数个。如果是奇校验,校验位位1,这样就有3个逻辑高位。高位和低位不真正的检查数据,简单置位逻辑高或者逻辑低校验。这样使得接收设备能够知道一个位的状态,有时机判断是否有噪声干扰了通信或者是否传输和接收数据是否不同步。2,什么是RS-232?RS-232ANSI/EIA-232标准是IBM-PC及其兼容机上的串行连接标准。可用于许多用途,比方连接鼠标、打印机或者Modem,同时也可以接工业仪器仪表。用于驱动和连线的改良,实际应用中RS-232的传输长度或者速度常常超过标准的值。RS-232只限于PC

6、串口和设备间点对点的通信。RS-232串口通信最远距离是50英尺。DB-9针连接头- 1 2 3 4 5 / 6 7 8 9 / -从计算机连出的线的截面。RS-232针脚的功能:数据: T*Dpin 3:串口数据输出R*Dpin 2:串口数据输入握手:RTSpin 7:发送数据请求CTSpin 8:去除发送DSRpin 6:数据发送就绪DCDpin 1:数据载波检测DTRpin 4:数据终端就绪地线:GNDpin 5:地线其他RIpin 9:铃声指示3,什么是RS-422?RS-422EIA RS-422-A Standard是Apple的Macintosh计算机的串口连接标准。RS-422

7、使用差分信号,RS-232使用非平衡参考地的信号。差分传输使用两根线发送和接收信号,比照RS-232,它能更好的抗噪声和有更远的传输距离。在工业环境中更好的抗噪性和更远的传输距离是一个很大的优点。4,什么是RS-485?RS-485EIA-485标准是RS-422的改良,因为它增加了设备的个数,从10个增加到32个,同时定义了在最大设备个数情况下的电气特性,以保证足够的信号电压。有了多个设备的能力,你可以使用一个单个RS-422口建立设备网络。出色抗噪和多设备能力,在工业应用中建立连向PC机的分布式设备网络、其他数据收集控制器、HMI或者其他操作时,串行连接会选择RS-485。RS-485是R

8、S-422的超集,因此所有的RS-422设备可以被RS-485控制。RS-485可以用超过4000英尺的线进展串行通行。DB-9 引脚连接- 1 2 3 4 5 / 6 7 8 9 / -从计算机连出的线的截面。RS-485和RS-422的引脚的功能数据:T*D+pin 8,T*D-pin 9,R*D+pin 4,R*D-pin 5握手:RTS+pin 3,RTS-pin 7,CTS+pin 2,CTS-pin 6地线:GND pin 15,什么是握手?RS-232通行方式允许简单连接三线:T*、R*和地线。但是对于数据传输,双方必须对数据定时采用使用一样的波特率。尽管这种方法对于大多数应用已

9、经足够,但是对于接收方过载的情况这种使用受到限制。这时需要串口的握手功能。在这一局部,我们讨论三种最常用的RS-232握手形式:软件握手、硬件握手和*modem。a,软件握手:我们讨论的第一种握手是软件握手。通常用在实际数据是控制字符的情况,类似于GPIB使用命令字符串的方式。必须的线仍然是三根:T*,R*和地线,因为控制字符在传输线上和普通字符没有区别,函数Set*Modem允许用户使能或者制止用户使用两个控制字符*ON和O*FF。这些字符在通信中由接收方发送,使发送方暂停。例如:假设发送方以高波特率发送数据。在传输中,接收方发现由于CPU忙于其他工作,输入buffer已经满了。为了暂时停顿

10、传输,接收方发送*OFF,典型的值是十进制19,即十六进制13,直到输入buffer空了。一旦接收方准备好接收,它发送*ON,典型的值是十进制17,即十六进制11,继续通信。输入buffer半满时,LabWindows发送*OFF。此外,如果*OFF传输被打断,LabWindows会在buffer到达75和90时发送*OFF。显然,发送方必须遵循此守则以保证传输继续。b,硬件握手:第二种是使用硬件线握手。和T*和R*线一样,RTS/CTS和DTR/DSR一起工作,一个作为输出,另一个作为输入。第一组线是RTSRequest to Send和CTSClear to Send。当接收方准备好接收数

11、据,它置高RTS线表示它准备好了,如果发送方也就绪,它置高CTS,表示它即将发送数据。另一组线是DTRData Terminal Ready和DSRData Set Ready。这些现主要用于Modem通信。使得串口和Modem通信他们的状态。例如:当Modem已经准备好接收来自PC的数据,它置高DTR线,表示和线的连接已经建立。读取DSR线置高,PC机开场发送数据。一个简单的规则是DTR/DSR用于表示系统通信就绪,而RTS/CTS用于单个数据包的传输。在LabWindows,函数SetCTSMode使能或者制止使用硬件握手。如果CTS模式使能,LabWindows使用如下规则:当PC发送数

12、据:RS-232库必须检测CTS线高后才能发送数据。当PC接收数据:如果端口翻开,且输入队列有空接收数据,库函数置高RTS和DTR。如果输入队列90满,库函数置低RTS,但使DTR维持高电平。如果端口队列近乎空了,哭喊数置高RTS,但使DRT维持高电平。如果端口关闭,库函数置低RTS和DTR。c,*Modem握手:最后讨论的握手叫做*Modem文件传输协议。这个协议在Modem通信中非常通用。尽管它通常使用在Modem通信中,*Modem协议能够直接在其他遵循这个协议的设备通信中使用。在LabWindows中,实际的*Modem应用对用户隐藏了。只要PC和其他设备使用*Modem协议,在文件传

13、输中就使用LabWindows的*Modem函数。函数是*ModemConfig,*ModemSend和*ModemReceive。*Modem使用介于如下参数的协议:start_of_data、end_of_data、neg_ack、wait_delay、start_delay、ma*_tries、packet_size。这些参数需要通信双方认定,标准的*Modem有一个标准的定义:然而,可以通过*ModemConfig函数修改,以满足具体需要。这些参数的使用方法由接收方发送的字符neg_ack确定。这通知发送方其准备接收数据。它开场尝试发送,有一个超时参数start_delay;当超时的尝

14、试超过ma*_ties次数,或者收到接收方发送的start_of_data,发送方停顿尝试。如果从发送方收到start_of_data,接收方将读取后继信息数据包。包中含有包的数目、包数目的补码作为错误校验、packet_size字节大小的实际数据包,和进一步错误检查的求和校验值。在读取数据后,接收方会调用wait_delay,然后想发送方发送响应。如果发送方没有收到响应,它会重新发送数据包,直到收到响应或者超过重发次数的最大值ma*_tries。如果一直没有收到响应,发送方通知用户传输数据失败。由于数据必须以pack_size个字节按包发送,当最后一个数据包发送时,如果数据不够放满一个数据包

15、,后面会填充ASCII码NULL0字节。这导致接收的数据比原数据多。在*Modem情况下一定不要使用*ON/*OFF,因为*Modem发送方发出包的数目很可能增加到*ON/OFF控制字符的值,从而导致通信故障。RS-232,RS-422和 RS-485 串口通讯接口的快速比拟 问题: RS-232,RS-422以及RS-485串口的根本区别是什么?解答: 下面的表格比拟了:工作方式,驱动器和接收器的总数,电缆的最大长度及最大传输速率。RS-232 是大多数计算机通用的接口,比方1 和 2。注意,大多数计算机的接口1以及2并不是RS-422/RS-485。然而,RS-422 是苹果Macinto

16、sh计算机的标准接口。RS-485 是基于 RS-422的一种改良,在工业中更普遍。所有NI的 RS-485 板卡都支持RS-422标准。问题: 串行通讯的根本架构是什么?解答: 串口通讯架构每一个异步串行系统的核心都是一个UART(通用异步接收机/发送机。UART不仅控制传输的数据,相应的电平,同时也控制通讯的速度。UART能够存储足够的信息,所以保证了在电脑忙得时候,数据流也能连续传输。这对于同时处理大量任务的操作系统非常有帮助。下面附图是理想串行通讯的示意。我们大局部的串行卡都有一个输入输出的FIFO查看目录了解详细信息。FIFO的数据可以通过串行驱动获取。串行驱动会自动地把FIFO的数

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

18、引脚短接。这会把计算机发送数据的线连接到接收数据的线。一旦短接,BD-9的上一排变成【1 23 4 5】。对于RS-485端口,电压是差分的。因此,你必须短接T*D+和R*D+、T*D-和R*D-对于DB-9电缆,连接pin4到pin8和pin5到pin9;对于模块化接口,连接pin2到pin6和pin3到pin7;对于bicon接头,连接pin1到pin5和pin2到pin4。确保你的软件配置为4线模式。在LabVIEW中应用串口第一局部使用LabVIEW系统VI一、串口VI介绍LabVIEW的串口通讯VI位于Instrument I/O Platte的Serial中,包括:VI名称VI功能

19、VISA Configure Serial Port初始化VISA resource name指定的串口通讯参数VISA Write将输出缓冲区中的数据发送到VISA resource name指定的串口VISA Read将VISA resource name指定的串口接收缓冲区中的数据读取指定字节数的数据到计算机内存中VISA Serial Break向VISA resource name指定的串口发送一个暂停信号VISA Bytes at Serial Port查询VISA resource name指定的串口接收缓冲区中的数据字节数VISA Close完毕与VISA resource n

20、ame指定的串口资源之间的会话VISA Set I/O Buffer Size设置VISA resource name指定的串口的输入输出缓冲区大小VISA Flush I/O Buffer清空VISA resource name指定的串口的输入输出缓冲区二、使用说明在LabVIEW环境中使用串口与在其它开发环境中开发过程类似,根本的流程框图如下。图1、串口操作数据流图首先需要调用VISA Configure Serial Port完成串口参数的设置,包括串口资源分配、波特率、数据位、停顿位、校验位和流控等等。图2、初始化串口如果初始化没有问题,就可以使用这个串口进展数据收发。发送数据使用VI

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

22、冲区。在串口使用完毕后,使用VISA Close完毕与VISA resource name指定的串口之间的会话。图5、设置缓冲区大小图6、清空缓冲区图7、完毕会话/线程具体的例子可以参考:e*amplesinstrsmplserl.llb。第二局部使用MSM控件在LabVIEW中使用MSM控件,与在VC、VB中使用一样。同样可以使用中断方式进展接收。具体的例子可以发 索取。图8、使用控件的串口收发程序图9、程序数据流图首先通过LabVIEW的工具菜单Tools Advanced Import Active* Controls将Microsoft的串口控件-Microsoft municatio

23、ns Control,version 6.0”添加到LabVIEW环境中,存放在缺省路径即可,这样在User Controls Palette里面可以找到这个控件。图10、添加Active*控件菜单图11、选择添加用户控件图12、用户控件将串口控件 放置在Front Panel上,在框图程序中用控件属性对其进展编程,实现所需要的功能。注意:一个串口资源要有一个MSM控件与之相对应。第三局部 考前须知一、串口通讯的波特率设置要准确,比方要求9600的波特率,则晶振应选择11.0593MHz或其倍数。二、由于通常情况下LabVIEW串口VI接收或发送的都是字符串Normal,所以如果需要发送或接收十六进制数值He*,请在发送或接收之前进展必要的转换。2.1、数值型数据的处理方法:、1、如果这些数据是静态的,也就说在程序设计阶段要传输的数据就已经确定了,在这种情况下,首先设置VIS

温馨提示

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

评论

0/150

提交评论