原创 labview中的串口通信协议示例与分析

2008-6-28 13:10 6418 11 13 分类: 测试测量
变频器与个人电脑使用RS-232/RS-485 串行总线连接,如下所示:

    efc13f02-5fd1-4d94-a56d-5c2cd6c5a2d0.jpg


    在通讯操作中,通过个人电脑以命令方式控制仪器。


    通讯数据格式:
    l  起始位: 1 位
    l  数据位: 8 位
    l  奇偶位: 无
    l  停止位: 1 位


    应答及命令格式:
    l  命令模式
点击看大图


    ::- 数据头,只有以::开头的数据包才认为有效。
    AD  - 设备号,当前通讯的设备ID。
     ? - 指明该数据是PC发出的指令。 
    RI  - 响应时间,从PC发出命令到仪器应答的时间。
    SC  - 和检验码,等于图中“和校验范围”所示各位相加。


    l  应答模式
点击开大图


    #  - 指明该数据是仪器发回的应答数据。
    其它同上。


    l  故障模式
点击看大图


    %  - 指明该数据是仪器发回的故障数据。
    其它同上。


    协议说明:
    无论是控制仪器还是查看仪器数据都需要PC发出相应的命令;只要PC发出命令(前提是与仪器正常通讯),仪器都会返回数据(应答或故障)。


    使用LabVIEW编写通信模块:
    1. 主要节点:Functions->Instrument I/O->VISA Resource Name Constant, Functions->Instrument I/O->Serial->VISA Config Serail Port, VISA Read, VISA Write, VISA Close


    2. 串口设置:根据仪器说明设置如波特率等等串口参数。超时设置根据上述RI。


    3. 写串口指令:根据上述“命令模式”的格式包装命令数据,和校验由“和校验范围”中数位相加而得,所以之前应该写一子VI用来计算和校验。建议使用以下变量来包装数据:


    l  prefix:前缀,这里是::
    l  devID:设备号
    l  type:通讯类型(这里是?),可以与RI合并
    l  cmdNum:命令号
    l  cmdValue:命令号对应的命令值
    l  sumVerify:和校验码
    l  end:结束字符


    注意:一般协议要求“命令内容”满足一定的位数,所以应该做一个子VI,专门在那些数位不够的命令前补足空格或0。


    4. 读串口数据:系统为串口开辟了一定大小的缓冲队列空间,仪器应答数据首先发送到这个缓冲空间(空间数据堆满时自动移除最早的数据),然后程序从中一次读取指定的数位并将其从中移除。


       建议读取方式:


      (1) 读1 byte,判断是否 :(3A),是则继续;否则返回步骤(1),重新开始。
      (2) 再次读1 byte,判断是否 :(3A),是则继续;否则返回步骤(1),重新开始。
      (3) 读应答模式中除去 ::剩余的字节,循环读取,每次读一个字节,当读到的字节数达到数量,继续;若读取超时,返回步骤(1),重新开始。
      (4)  分析读到的bytes,判断和校验码是否正确。若正确,继续;否则,返回步骤(1),重新开始。
      (5) 取第三个byte,如果是#,说明“应答模式”;如果是%,说明“故障模式”。
      (6)  按照应答或者故障模式,分离出相应的命令号和命令值。
      (7)  一些类型转换。至此,一次读取过程结束。


    5. 由于一次通讯包含一次写命令和一次读数据,所以最好把写和读模块封装成一个子VI。

PARTNER CONTENT

文章评论2条评论)

登录后参与讨论

用户233116 2009-9-20 16:09

非常好,但还是有几个问题,请帮忙解答? 如何确定设备的ID? 响应时间是有自己设置吗? 命令内容是以通讯数据格式写入吗? 能否给个简单的实例? 谢谢!

用户156437 2008-7-2 17:50

很好
相关推荐阅读
用户131105 2008-07-05 23:57
全新RIGOL VS5000系列虚拟示波器推动MSO混合测试实践应用
日前,北京普源精电科技有限公司(RIGOL)宣布,全新的VS5000系列虚拟数字示波器进入市场后,受到用户的普遍关注。RIGOL VS5000系列虚拟数字示波实时采样率高达400 MSa/s, 等 效...
用户131105 2008-07-05 23:55
虚拟数字示波器的设计与实现
虚拟数字示波器的设计与实现2008-3-20摘 要: 结合一个虚拟数字示波器的设计开发,介绍了虚拟仪器的基本组成,并重点介绍了基于图形化编程语言LabVIEW的虚拟仪器编程方法与实现技术。    关键...
用户131105 2008-07-05 23:53
使用TDS3000系列数字荧光示波器观察波形的频率成分 (2)
这时一篇PDF的文档,用泰克的TDS3000系列数字荧光示波器在分析时就可以用FFT图来观察波形的频率成分,希望对大家能有帮助,喜欢的可以下载看看 转自:www.kingcable.com.cn ...
用户131105 2008-06-28 13:07
用示波器的第三维发现信号异常
用示波器的第三维发现信号异常引言  示波器的显示质量极大影响能否有效进行设计查错。如果您的示波器只有低质量的显示,您就不可能看到关键的信号异常。能示出信号亮度等级的示波器也能展示重要的波形细节,包括揭...
用户131105 2008-06-28 13:05
当今仪器仪表的特点与设计方法
1 当今仪器仪表的特点     1.1 硬件功能软件化  随着微电子技术的发展,微处理器的速度越来越快,价格越来越低,已被广泛应用于仪器仪表中,使得一些实时性要求很高,原本由硬件完成的功能,可以通过软...
EE直播间
更多
我要评论
2
11
关闭 站长推荐上一条 /1 下一条