版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、串口通信的基本概念串口通信的基本概念1,什么是串口?2,什么是RS-232?3,什么是RS-422?4,什么是RS-485?5,什么是握手?1,什么是串口?串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线UniversalSerialBus或者USBf!淆)。大多数计算机包含两个基于RS232的串口。串口同时也是仪器仪表设备通用的通信协议;很多GP旧兼容的设备也带有RS-232口。同时,串口通信协议也可以用于获取远程采集设备的数据。串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据
2、。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总常不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。典型地,串口用于ASCII码字符的传输。通信使用3根线完成:(1)地线,(2)发送,(3)接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但是不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通行的端口,这些参数必须匹配:a,波特率:这是一个衡量通信速度的参数。它表示每秒钟传送的bit的个数。例如300波特表示每秒钟发送300个bit。当我们提
3、到时钟周期时,我们就是指波特率例如如果协议需要4800波特率,那么时钟是4800Hz这意味着串口通信在数据线上的采样率为4800Hzo通常电话线的波特率为14400,28800和36600。波特率可以远远大于这些值,但是波特率和距离成反比。高波特率常常用于放置的很近的仪器间的通信,典型的例子就是GPIB设备的通信。b,数据位:这是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。如何设置取决于你想传送的信息。比如,标准的ASCII码是0127(7位)。扩展的ASCII码是0255(8位)。如果数据使用简单的文本(标准ASCII码),那么每个数据
4、包使用7位数据。每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。由于实际数据位取决于通信协议的选取,术语“包”指任何通信的情况。c,停止位:用于表示单个包的最后一位。典型的值为1,1.5和2位。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。d,奇偶校验位:在串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。当然没有校验位也是可以的。对于偶和奇校验的情况,串口会设置校验位(数
5、据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。例如,如果数据是011,那么对于偶校验,校验位为0,保证逻辑高的位数是偶数个。如果是奇校验,校验位位1,这样就有3个逻辑高位。高位和低位不真正的检查数据,简单置位逻辑高或者逻辑低校验。这样使得接收设备能够知道一个位的状态,有机会判断是否有噪声干扰了通信或者是否传输和接收数据是否不同步。2,什么是RS-232?RS-232(ANSI/EIA-232标准)是旧M-PC及其兼容机上的串行连接标准。可用于许多用途,比如连接鼠标、打印机或者Modem同时也可以接工业仪器仪表。用于驱动和连线的改进,实际应用中RS-232的传输长度或者速度常常
6、超过标准的值。RS-232只限于PC串口和设备间点对点的通信。RS-232串口通信最远距离是50英尺。DB-9针连接头从计算机连出的线的截面。RS-232针脚的功能:数据:TXD(pin3):串口数据输出RXD(pin2):串口数据输入握手:RTS(pin7):发送数据请求CTS(pin8):清除发送DSR(pin6):数据发送就绪DCD(pin1):数据载波检测DTR(pin4):数据终端就绪地线:GND(pin5):地线其他RI(pin9):铃声指示3,什么是RS-422?RS-422(EIARS-422-AStandard)是Apple的Macintosh计算机的串口连接标准。RS-42
7、2使用差分信号,RS-232使用非平衡参考地的信号。差分传输使用两根线发送和接收信号,对比RS-232,它能更好的抗噪声和有更远的传输距离。在工业环境中更好的抗噪性和更远的传输距离是一个很大的优点。4,什么是RS-485?RS-485(EIA-485标准)是RS-422的改进,因为它增加了设备的个数,从10个增加到32个,同时定义了在最大设备个数情况下的电气特性,以保证足够的信号电压。有了多个设备的能力,你可以使用一个单个RS-422口建立设备网络。出色抗噪和多设备能力,在工业应用中建立连向PC机的分布式设备网络、其他数据收集控制器、HMI或者其他操作时,串行连接会选择RS-485。RS-48
8、5是RS-422的超集,因此所有的RS-422设备可以被RS-485控制。RS-485可以用超过4000英尺的线进行串行通行。DB-9引脚连接从计算机连出的线的截面。RS-485和RS-422的引脚的功能数据:TXD+(pin8),TXD-(pin9),RXD+(pin4),RXD-(pin5)握手:RTS+(pin3),RTS-(pin7),CTS+(pin2),CTS-(pin6)地线:GND(pin1)5,什么是握手?RS-232通行方式允许简单连接三线:Tx、Rx和地线。但是对于数据传输,双方必须对数据定时采用使用相同的波特率。尽管这种方法对于大多数应用已经足够,但是对于接收方过载的情
9、况这种使用受到限制。这时需要串口的握手功能。在这一部分,我们讨论三种最常用的RS-232握手形式:软件握手、硬件握手和Xmodema,软件握手:我们讨论的第一种握手是软件握手。通常用在实际数据是控制字符的情况,类似于GPIB使用命令字符串的方式。必须的线仍然是三根:Tx,Rx和地线,因为控制字符在传输线上和普通字符没有区别,函数SetXModencfc许用户使能或者禁止用户使用两个控制字符XOM口OXFF这些字符在通信中由接收方发送,使发送方暂停。例如:假设发送方以高波特率发送数据。在传输中,接收方发现由于CPU忙于其他工作,输入buffer已经满了。为了暂时停止传输,接收方发送XOFF典型的
10、值是十进制19,即十六进制13,直到输入buffer空了。一旦接收方准备好接收,它发送XON典型的值是十进制17,即十六进制11,继续通信。输入buffer半满时,LabWindows发送XOFF止匕外,如果XOFFW输被打断,LabWindows会在buffer达至U75%和90%时发送XOFF显然,发送方必须遵循此守则以保证传输继续。b,硬件握手:第二种是使用硬件线握手。和Tx和Rx线一样,RTS/CTS口DTR/DSR-起工作,一个作为输出,另一个作为输入。第一组线是RTS(RequesttoSend)和CTS(CleartoSend)。当接收方准备好接收数据,它置高RTS线表示它准备好
11、了,如果发送方也就绪,它置高CTS表示它即将发送数据。另一组线是DTR(DataTerminalReady)和DSR(DataSetReady)。这些现主要用于Modemil信。使得串口和Modemil信他们的状态。例如:当ModemB经准备好接收来自PC的数据,它置高DT就,表示和电话线的连接已经建立。读取DS瞰置高,PC机开始发送数据。一个简单的规则是DTR/DS即于表示系统通信就绪,而RTS/CTS用于单个数据包的传输。在LabWindows函数SetCTSMod祕能或者禁止使用硬件握手。如果CT蹴式使能,LabWindows使用如下规则:当PC发送数据:RS-232库必须检测CT酸高后
12、才能发送数据。当PC接收数据:如果端口打开,且输入队列有空接收数据,库函数置高RT印口DTR如果输入队列90%满,库函数置低RTS但使DTRt持高电平。如果端口队列近乎空了,哭喊数置高RTS但使DRTI持高电平。如果端口关闭,库函数置低RT竽口DTRc,XModeM手:最后讨论的握手叫做XModerm:件传输协议。这个协议在Modenil信中非常通用。尽管它通常使用在Modenil信中,XModei议能够直接在其他遵循这个协议的设备通信中使用。在LabWindows中,实际的XModenSZ用对用户隐藏了。只要PC和其他设备使用XModem、议,在文件传输中就使用LabWindows的XMod
13、enB数。函数是XModemConfigXModemSend和XModemReceiveXModemiS用介于如下参数的协议:start_of_data、end_of_data、neg_ack、wait_delay、start_delay、max_tries、packet_size。这些参数需要通信双方认定,标准的XModemt一个标准的定义:然而,可以通过XModemConfigi1数修改,以满足具体需要。这些参数的使用方法由接收方发送的字符neg_ack确定。这通知发送方其准备接收数据。它开始尝试发送,有一个超时参数start_delay;当超时的尝试超过max_ties次数,或者收到接收
14、方发送的start_of_data,发送方停止尝试。如果从发送方收到start_of_data)接收方将读取后继信息数据包。包中含有包的数目、包数目的补码作为错误校验、packet_size字节大小的实际数据包,和进一步错误检查的求和校验值。在读取数据后,接收方会调用wait_delay,然后想发送方发送响应。如果发送方没有收到响应,它会重新发送数据包,直到收到响应或者超过重发次数的最大值max_tries。如果一直没有收到响应,发送方通知用户传输数据失败。由于数据必须以pack_size个字节按包发送,当最后一个数据包发送时,如果数据不够放满一个数据包,后面会填充ASCII码NULL(0)字
15、节。这导致接收的数据比原数据多。在XModer#况下一定不要使用XON/XOFF因为XModemt送方发出包的数目很可能增加到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
16、是基于RS-422的一种改进,在工业中更普遍。所有NI的RS-485板卡都支持RS-422标准。项目必233RS-422RJM85工作方式单端羞乐度分单线上的呢动器和接收器的总数位总始$网赛一次一个驱动船有效)1个嘱动器1个畏惊器1个躯动特1。个接收器纪个胆动器12个接收器电燃最长长度50英尺(2500pF)英尺4000英K最大传输速率(对RAHCRS书540英尺T00C英尺)20WB(特定情况下可以更匐1。hib品耳10Mbits/占问题:串行通讯的基本架构是什么?解答:串口通讯架构每一个异步串行系统的核心都是一个UART(通用异步接收机/发送机)。UART不仅控制传输的数据,相应的电平,同
17、时也控制通讯的速度。UART能够存储足够的信息,所以保证了在电脑忙得时候,数据流也能连续传输。这对于同时处理大量任务的操作系统非常有帮助。下面附图是理想串行通讯的示意。我们大部分的串行卡都有一个输入输出的FIFO(查看目录了解详细信息)。FIFO的数据可以通过串行驱动获取。串行驱动会自动地把FIFO的数据传输到软件的缓存,这个缓存是可以在应用软件由用户配置的(比如,在LabVIEW您可以使用SerialPortInitVI来设置缓存去大小)。读接口的数据实际上包含从软件缓存读的过程。确认硬件操作的回路测试有三种方式确认串口的操作:LabVIEW,超级终端和LabWindows/CVI。这三种方
18、式进行回路测试是把串口的发送和接受引脚短接。第一步描述短接引脚的过程。LabVIEW的处理写在下面,而超级终端和LabWindows/CVI的过程在本文后面的链接里。对于LabVIEW建议使用如下步骤:a,连接一根电缆到串口。最常用的RS-232电缆是9针或者25针(DB-9或者DB-25)。在电缆端把2、3引脚短接。这会把计算机发送数据的线连接到接收数据的线。一旦短接,BD-9的上一排变成12=345对于RS-485端口,电压是差分的。因此,你必须短接TXD+和RXD+、TXD-和RXD-(对于DB-9电缆,连接pin4到pin8和pin5到pin9;对于模块化接口,连接pin2到pin6和
19、pin3到pin7;对于Combicon接头,连接pin1到pin5和pin2到pin4。)确保你的软件配置为4线模式。在LabVIEW中应用串口第一部分使用LabVIEW系统VI、串口VI介绍LabVIEW的串口通讯VI位于InstrumentI/OPlatte的Serial中,包括:VI名称VI功能VISAConfigureSerialPort初始化VISAresourcename指定的串口通讯参数VISAWrite将输出缓冲区中的数据发送到VISAresourcename指定的串口VISARead将VISAresourcename指定的串口接收缓冲区中的数据读取指定字节数的数据到计算机内
20、存中VISASerialBreak向VISAresourcename指定的串口发送一个暂停信号VISABytesatSerialPort查询VISAresourcename指定的串口接收缓冲区中的数据字节数VISAClose结束与VISAresourcename指定的串口资源之间的会话VISASetI/OBufferSize设置VISAresourcename指定的串口的输入输出缓冲区大小VISAFlushI/OBuffer清空VISAresourcename指定的串口的输入输出缓冲区二、使用说明在LabVIEW环境中使用串口与在其它开发环境中开发过程类似,基本的流程框图如下图1、串口操作数据
21、流图首先需要调用VISAConfigureSerialPort完成串口参数的设置,包括串口资源分配、波特率、数据位、停止位、校验位和流控等等Resource波特率duplicateVISAresourcen9电ISEfclALHM图2、初始化串口如果初始化没有问题,就可以使用这个串口进行数据收发。发送数据使用VISAWrite,接收数据使用VISARead。在接收数据之前需要使用VISABytesatSerialPort查询当前串口接收缓冲区中的数据字节数,如果VISARead要读取的字节数大于缓冲区中的数据字节数,VISARead操作将一直等待,直至Timeout或者缓冲区中的数据字节数达到
22、要求的字节数。当然也可以分批读取接收缓冲区或者只从中读取一定字节的数据。duplicateVISAresourcenameduplicateVISAresourcen如w图3、从串口发送数据图4、从串口接收数据在某些特殊情况下,需要设置串口接收/发送缓冲区的大小,此时可以使用VISASetI/OBufferSize;而使用VISAFlushI/OBuffer则可以清空接收与发送缓冲区。在串口使用结束后,使用VISAClose结束与VISAresourcename指定的串口之间的会话。dlujiliC由七自VISAresiSiurc'ehamw图5、设置缓冲区大小liuplicateVI
23、SAresourc&riaineP7E3-*图6、清空缓冲区VISAresourcen断电11Ai第图7、结束会话/线程具体的例子可以参考:examplesinstrsmplserl.llb索取第二部分使用MSCOMM控件在LabVIEW中使用MSCOMM控件,与在VC、VB中使用一样。同样可以使用中断方式进行接收。具体的例子可以发图8、使用控件的串口收发程序MSCcmmm-HR-SlNSCcmm®卜CwmFort卜Settings卜PortOp«n卜EThreshcld卜ThresholdfflY工MSCegPortOpen图9、程序数据流图首先通过LabVIEW
24、的工具菜单Tools>>Advanced>>ImportActiveXControls”将Microsoft的串口控件-“MicroCommunicationsControl,version6.0”添加到LabVIEW环境中,存放在缺省路径即可,这样在UserControlsPalette里面工找到这个控件。南IhrWwSlEJ2:;岂黑F?4HEil士EditQper4t*IQinM*。立母&kutontatiaikExplerera.umeiitsLtioilCompareSourceCodeCoiLtrolVIRevi33口ItHlStQt"
25、163;UserN例%BuildAfpli?rShurtdLitruryQ)LL).,VILibraryManager.EditWUlrary.Fin.dVison.Disk.二wmcitePanelCormectioilHana_g电r.WebPublisk.ineTqoL.CtrlH0Bgdrm*d“liqg.一hlhifE区50version6.0FileEd分Cantrol5CJT9ScrosMieras&ftMicrocoftMicrosoftKicrowoftMiCT。oft肌Micros»£t3BikeCoapila.HHetrics.ProfileV
26、I$EiiiErrorCodes.Eiilfklstt47i4WS.EpcirLStrings.L.LmportStrinigs.ImportActi-reKCqmt1rioLs,.ActiveXFrojertyBrowser,.,1JEI已mblyReferences.图10、添加ActiveX控件菜单Selectoneormorectivelcontrolsfronkthelist.TluseControlswillbeimportedgCustomControlFilas.AniftitianCu.trolC.0(SF4)AnimalioaControl,ufertioa5.0(5P2)
27、BarCodeCojitrol9.11ChartControl6,0妣4)(OLEDB)CkartCon.trolj,vereioilCommonDial口苓Con.trol.WicTasaftCmnhuxLies.tiotleC&ntr&l,v&rEiftn6.0CoolbarCwitrod,rersiqr6.DFCombQContral.version6,D3L:stCgntrol.vsrsi;tt5.QDIS图11、选择添加用户控件图12、用户控件将串口控件圜放置在FrontPanel上,在框图程序中用控件属性对其进行编程,实现所需要的功能注意:一个串口资源要有一
28、个MSCOMM控件与之相对应。第三部分注意事项、串口通讯的波特率设置要精确,比如要求9600的波特率,则晶振应选择11.0593MHz或其倍数。二、由于通常情况下LabVIEW串口VI接收或发送的都是字符串(Normal),所以如果需要发送或接收十六进制数值(Hex),请在2或接收之前进行必要的转换。2.1、 数值型数据的处理方法:2.1.1、 1、如果这些数据是静态的,也就说在程序设计阶段要传输的数据就已经确定了,在这种情况下,首先设置VISAWrite的writebu的显示属性为HexDisplay,然后直接输入要发送的16进制字符串就可以了。串口设备的控制命令通常是由一个或多个16进制字
29、符势的,当我们需要对其进行控制时经常会采用这种方法发送控制命令。2.1.2、 数据是动态的;即要传输的数值型数据是动态产生和变化的,在发送之前首先要将其转换成对应的16进制字符串,才能赋给Write发送。将这些数据构成一个数组,用ByteArrayToString进行转换,转换的结果就是对应数组数值的字符串,可以提交VISAW发送。或者使用TypeCast也可以实现同样的功能。串口发送数据字符串If./C:,2:323452967B3字符串2(Hex)字符串1、2均是HexDisplay模式.Ji"串口接收数据()上面星串口发送数据界面|234?296T03下面是串口接收数据界面串口发送数据jT字将串字符串2(Hex)数组1HexDi±play显示数犯之图13、串口数据转换界面图14、串口数据转换数据流图LlLilli1图15、操作界面2.2、字符串型数据的处理方法:图16、单
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 毕业实习生自我鉴定
- 银行安全生产会议
- 在医院的实习报告范文集合七篇
- 感恩主题演讲稿锦集5篇
- 幼儿园防空防灾安全教育
- 防止金融诈骗讲座
- 学生会成员工作总结
- 2022年大学生积极分子思想汇报
- 教学设计方案范文集锦7篇
- 捐资助学倡议书范文汇编10篇
- Rexroth (博世力士乐)VFC 3610系列变频器使用说明书
- 黑龙江龙江森工集团招聘笔试题
- 大班美术教案:拉手小人教案及教学反思
- 《Python Web 企业级项目开发教程(Django 版)》课后答案
- 铜及铜合金物理冶金基础-相图、紫铜
- 智慧酒店无人酒店综合服务解决方案
- 考研英语一新题型历年真题(2005-2012)
- 健身房会籍顾问基础培训资料
- 9脊柱与四肢、神经系统检查总结
- 秀场内外-走进服装表演艺术智慧树知到答案章节测试2023年武汉纺织大学
- 【高分复习笔记】王建《现代自然地理学》(第2版)笔记和课后习题详解
评论
0/150
提交评论