ImageVerifierCode 换一换
格式:DOCX , 页数:9 ,大小:146.03KB ,
资源ID:3112811      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3112811.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(非常好LabVIEW串口通信详解.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

非常好LabVIEW串口通信详解.docx

1、非常好LabVIEW串口通信详解LabVIEW串口通信详解串口可以说是我们最容易见到,也最容易接触到的一种总线,台式机上一般都有二个,而现在很多下位机、仪器等很多都还是使用串口通信的。论坛上很多朋友都经常会使用到串口,并遇到一些问题,这里有必要做一个详细的说明,以方便广大会员朋友,文章请勿转载到其它地方,谢谢。论坛上早先发布过一个贴子,叫串口WORD资料,里面有一些中英文的串口的资料,这个文章是对那个资料的补充,如果是初接触串口的朋友建议先看一下上一个贴子先。上一个贴子中提到过的内容这里不再进行补充。首先补充一个比较重要的问题,就是在LabVIEW中使用串口的话一定要先安装VISA这个驱动,然

2、后生成的EXE运行时也需要在目标机上安装VISA Runtime Engine,可以在打包时一起打包。VISA的驱动可以在NI网站上下载到:1.串口扩展的问题:先说一下串口的扩展问题,一般的台式机或工控机上都至少有二个串口,一般都是够用的,但是现在市场上已经很难找到带串口的笔记本了,而有时候在外出调试时需要在笔记本中使用到串口的,这时一般是使用USB-RS232的转接线,价格从十几到一百多都有,很多朋友反应在使用价格低的转接线时会出现乱七八糟的问题,而贵一点的线就很少听说有其它问题的,所以大家在使用便宜的USB-RS232转接线时要特别注意线的质量,遇到一些奇怪的问题时先考虑换一根好一点的线。

3、PCI-RS232扩展卡也同理,便宜的卡也容易出问题,尽量买好一点的,以免因小失大。PCI-RS232一般至少能扩展2个串口,有些BT一点的可以扩展到8-16个,一堆线和接头。转接线和扩展卡一般是要装驱动的。2.串口功能的确认: 在使用串口之前,最好先确认一下串口是否正常,特别是使用转换接或扩展卡的。检查的方法很简单,就是将串口的2、3脚短接起来,3脚是发送数据,2脚接收数据,就是这个串口自发自收。电脑上的串口软件一般是用串口调试助手,很出名的,也好用。如下图所示: 图1 串口调试助手打开软件,选择已经短接好的串口号,点击“手动发送”,如果串口是好的,2、3脚又短接起来了,马上就可以在上面的接

4、收框里看到接收的数据就是发送的数据。稍微要注意一下的是有些电脑的COM1和COM2的位置是反过来的,所以要确定好串口调试助手左上角的串口上择的是已经短接的那一个,如果COM1没接收到,可以再先COM2再发一次看一下。3.串口线的检查:检查好串口后,一般也要注意一下使用的串口线,标准的串口线是9根线都是用上的,但有一些是只使用了三根线的:2、3、5。第3个脚管是发送,第2个管脚接收,另一个5是地线,这里叫它简化的串口线,简化的串口线能用上的地方,标准的串口线也肯定能用上,因为标准线的9根线已经包括了简化串口线中的3根线,但标准串口线能用上的地方,简化串口线就不一定能用上,所以在使用串口线之间一定

5、要确定好串口线的类型,一般买的串口线都是标准线,但自制的串口线因为应用场合不同就要先确定一下。G串口线还有一个地方需要注意一下的,就是2、3脚的接法,标准接法中是2、3脚交叉的,即这边的2接另一边的3,这边的3接另一边的2,扭了一下,所以叫交叉线,因为正常使用时,这边第二脚是发送数据,另一边第三脚是接收数据,所以要将这二个管脚连接起来,这样才能正常使用。但是有些情况下,2、3是直连的,即这边的第2脚连接另一边的第2脚,第3脚连接第3脚,这种叫直连线,这种线一般是用于延长串口的,比如需要将工控机的串口接头引到机柜表面上时,就使用这种线,这样机柜表面的串口线的定义还是跟电脑接出来的一样,外面的那一

6、根串口线再使用交叉线。从电脑主板上将串口引到主机后面板上的线就是这样的直连线。购买串口线的时候一般也会问你买直连的还是交叉的,要区别对待。串口线还有一个要稍微注意一下的就是DB头,因为电脑上接出来的一般是公头(针),要跟电脑接的话要母头(孔),一般仪器的串口也是公头,所以二边都是母头的串口线比较常见。串口的接头一般是DB9的,也有DB25的,但比较少用,有些比较BT的仪器厂家居然用RJ11(水晶头那种)作为串口头,让人不爽! 总之,使用串口前一定要先确定好硬件没问题,不然很浪费时间的。4.串口参数设置:在LabVIEW中使用串口时,有几个参数比较重要,需要先说明一下的。一个是串口初始化这个节点

7、的“终止符”和“禁用终止符?”这二个输入端,这二个输入端是相互作用的,“终止符”默认值为10,它的十六进制是“0x0A”,这是一个ASCII码,是一个换行符,可以从LabVIEW中的字符串的不同显示形式看出来,如下图:图2 串口消息终止符左边是字符串的正常显示,中间是十六进制显示,右边是“代码显示”,这三个字符串的值都是一样的。终止符是10,表示在接收数据时,遇到ASCII码为10的字符(即换行符)时就停止接收数据,后面会有例子进行说明。而“禁用终止符?”的默认值是FALSE,即启用终止符,启用终止符会有什么效果呢?终止符的意思就是当程序接收到这个字符时,就认为已经到了所有数据的未端了,从而停

8、止接收,不管后面还有没有数据。终止符是10,表示在接收数据时,遇到ASCII码为10的字符(即换行符)时就停止接收数据。可以做一个很简单的试验,先短接串口2、3脚,然后将终止符设置为“0x33”,0x33是字符“3”的ASCII码,然后发送字符串可以看到接收回来的数据中只有“12”,即“3”被认为是字符串的未端了,它后面的数据就不再接收了。很多朋友就是因为这里设置错误,导致接收数据时有时候只收到一半就没有了,特别是在连续接收数据时,但又不是每次都只能收到一半,有时候也能接收齐全的,就是因为发送的数据中可能包含了终止符而使串口认为到了最后一个字符了。一般是将这个终止符禁用掉,即将“启用终止符?(

9、Enable terminator?)”这一端输入为False即可。另外还有一个比较重要的设置,就是VISA READ的“读取字节数”这个输入,由于在串口通信中,如果指定读取100个串口缓冲区的字节数,如果当前缓冲区的数据量不足100个时,程序会一直停在VISA READ这个节点上,如果在超时的时间(默认是10秒)内还没有凑足100个数据的话,程序就会报“Time out”的错误,如果超时时间设置得太长,有可能导致程序很长时间停止在VISA READ这个节点上。解决的办法是使用“Bytes at Port”这个串口的属性节点,在VISASerialadvance下,也可以在VISA资源线上右键

10、创建属性节点串口设置Bytes at Port,如下图: 图 3 Bytes at Port这个属性节点读取当前串口缓冲区有字节数,然后将它的输出连接到VISA READ的“读取字节数”这个输入端上即可,这样当前缓冲区中有多少个字节就读回多少个,不会有任何等待。图 4 使用Bytes at Port5.在LabVIEW中使用串口目前串口的应用一般有二种类型的(以我接触到的来分类,不严格),一种是仪器控制类型的,一般是上位机发送一个指令,然后下位机作出响应,返回数据给上位机,上位机再读取出来,完成一次通信,即一问一答;另一类是被动接收形的,即下位机会一直发送数据上来。这二种类型的串口通信在处理上

11、会不太一样。5.1 仪器控制类型由于在仪器控制时一般都是这种一问一答的方式,所以叫它仪器控制类型。以仪器控制为例来说一下需要注意的事项。首先是要确认仪器选择的通信模式是串口通信模式。现在的仪器一般都至少有二种通信模式,一种是RS232,一种是GPIB,如果仪器是设置为GPIB通信的话,RS232是不可能通信上的,所以要先确认一下,方法一般是在仪器面板上选择设置远程控制GPIB/RS232,各个仪器稍微不同,可以查仪器手册看一下。然后就是确认串口的通信参数的配置,包括波特率、数据长度、校验方法等,有些仪器的某些参数是固定的,比如校验方法固定为奇校验,不能修改,只能在电脑上跟仪器设置为一样的。波特

12、率一般是可以修改的。这些参数的配置一定要根据仪器手册上的来设置。如果参数设置不正确,也能收到一些数据,但一般是乱码,如果收到的数据都是乱码的话,就要先检查一下串口参数设置是否正确了。只有电脑和仪器边的串口参数完全一致时才能收到正确的数据。接着是要注意发送指令和读回数据之间要有一定的延时,即VISA WRITE和VISA READ之间要有一定的延时,一般200毫秒即可,因为串口是底层硬件,数据从软件到串口上要一点点时间,然后仪器对指令作出响应也要一点点时间,这些时间加起来肯定比软件运行二个节点的时间要短,所以延时是一定要加的。在调试时如果发现正常运行时不能收到数据,但高亮运行就能收到数据,就很有

13、可能是没有加延时的原因!或者是发一个查询指令,但返回的是上一条查询指令的结果,也可能是因为没有延时或延时不够。5.2被动接收类型被动接收形的串口通信稍微麻烦一点,由于上位机是被动接收的,上位机不知道什么时候开始下位机就已经有数据上来了,很有可能下位机发送到一半时,上位机刚好开始接收数据,这时只能接收到后面一半的数据了,所以对于这种通信,一般是采用数据帧的方式进行通信。这种数据帧的通信方式至少由三部分数据组成:帧头、数据、帧尾(如果数据是固定长度的话,似乎帧尾也可以省掉)。帧头是为了告诉上位机:从这以后的数据就是有用的数据了,相当于约定好的暗号,一般帧头至少会用二个以上字节,如果只用一个字节的话

14、,万一数据中的数据跟这个帧头一样了就会误以为这个数据是帧头从而导致解析数据出错,帧尾的作用也差不多,告诉上位机从这之前的数据才是有用的数据。但实际上一般的数据帧远不止这几个部分,还会加上一些校验字节、时间信息、帧计数器之类的东东在上面。其中校验字节是为了检查数据在传输过程中有没有出错的,跟串口的校验位要区分清楚,校验位也是检查数据传输时有没有出错的,但由底层硬件来实现,校验方法由标准规定好,但有几种可以选择,只有一个位(Bit,只能是0或1)。校验字节是由软件层来实现的,至少有一个字节(Byte,有8个位),而且校验方式由用户定义,非常灵活。 由于被动方式中串口的缓冲区中一直会有数据在,为了保

15、持数据的连续性,在读取数据时跟第一种仪器控制类型不一样。而是采取将读取的所有的串口数据都保存在移位寄存器中,在软件上处理完这些数据后再将它们从移位寄存器中删除。由于VISA READ的输出是字符串,所以一般使用“连接字符串”这个函数将它们连接起来,然后接到循环结构中的移位寄存器中进行保存,当移位寄存器中的数据量达到一定时或满足数据处理的条件时,才停止这个循环输出读取到的数据。一般如下图所示:图 5 被动接收类型中的数据接收在接收下位机发送的帧数据时,一定要先了解帧格式,这样才能正确解析出帧里面的数据来。下面以例子来说明数据帧格式的通信。设定通信数据帧每7个字节为一帧数据,其中以0xAC、0x9

16、6二个字节作为数据帧头,第三、四个帧头为帧计数器,最大值为0xFFFF,到达最大值后重新从0开始计数,第4、5、6三个字节是数据信息,分别代表数据的高中低位,第7位为状态标志字节,它的第一位为1时表示下位机出错,为0时表示功能正常。由于LabVIEW中接收到的数据都是以字符串的形式显示出来的,所以需要将字符串转换为ASCII码,一般可以直接使用“转换为U8数组”这个函数,如下图所示:图 5 字符串转换为U8字节转换为U8字节后,得到的是所传输字符的ASCII码,我们就很容易进行数据帧的判断了,现收到以下的字符串数据:, 图 6 实际接收到的字符串上图中下半部分显示的数组是使用“字符串转换为U8数组”的函数转换之后得到的数组,一个是十六进制显示,另一个为十进制显示。对照定义的数据帧格式,就很容易得到我们需要的数据了。首先是要看从哪

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1