【Labview】通过串口通信从上位机读取和写入数据

最近博主需要通过Labview的上位机控制一个温控仪表,主要实现在上位机读取实时温度和设定的目标温度,以及通过上位机设定目标温度。这里将其中遇到的问题和心得分享给大家,博主自己也做一个记录。

由于温控仪表采用的485通讯,modbus RTU协议,因此这里相当于分享的是在Labview中如何通过modbus RTU协议,实现读数据和写数据。

1、读取过程温度与设定的目标温度。

这里先说一下,从GUI面板跳转到程序框图的快捷键是“Ctrl+E”。原始的Labview程序框图如下图:

这里重点要注意写入的时候,一定要定义写入值的模式,比如“十六进制显示”(Hex Display),而不是普通(Normal display)。

写入值Modbus RTU协议的数据结构是:设备地址(如01)+RTU功能码(如03,表示读取单一寄存器)+寄存器地址(如0002,可以在设备通讯说明上看到)+读取的字节数(如0002,是两个字节)+CRC校验码(可以用在线CRC校验码在线计算器得到)。CRC校验码在线计算器的网址如下:16进制(CRC16)(MODBUS RTU通讯)校验码在线计算器 (23bei.com),在空白处输入数据中除CRC校验码的部分,然后点击计算,会在CRC-16 Modbus中看到自动生成的CRC校验码,将其复制到Labview中即可。

然后强制转换的格式一定要是U16的,如果不缺定是哪种数据类型,可以多尝试几种。

温度显示的时候,也一定要注意设定显示数据的格式,比如DBL双浮点。

2、写入设定的温度。

这里和上述读取数据不同的地方在于,数据结构中modbus RTU功能码改为了06,即写入寄存器,因为是十六进制数据,因此要将十进制数据转化为十六进制的,这里为手动提前将十进制的温度转为十六进制后,直接复制到Labview中。

设备ID是01,功能码是06,寄存器地址是0002,写入值的十六进制是0078,CRC校验码是2828,所以整条modbus通讯数据的形式就是“0106 0002 0078 2828”。

例子框图程序中,设定目标温度为120℃,因此120的十六进制数是78,即0078;然后末尾的2828CRC校验码,为通过上面在线计算器求得的。这里一定要注意,输入数值的形式要选择Hex Display;

相关推荐

  1. C51--DHT11数据读取通过串口传--LCD显示

    2024-06-10 20:24:07       29 阅读
  2. linux下,PC串口通信开发

    2024-06-10 20:24:07       38 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-10 20:24:07       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-10 20:24:07       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-10 20:24:07       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-10 20:24:07       18 阅读

热门阅读

  1. 每日一题38:数据分组之订单最多的客户

    2024-06-10 20:24:07       8 阅读
  2. Ubuntu中安装MySQL root 密码修改

    2024-06-10 20:24:07       7 阅读
  3. 心灵清闲

    2024-06-10 20:24:07       10 阅读
  4. 深入解析分布式链路追踪:原理、技术及应用

    2024-06-10 20:24:07       11 阅读
  5. electron录制工具-desktopCapturer录屏

    2024-06-10 20:24:07       10 阅读
  6. multisim仿真电路图

    2024-06-10 20:24:07       11 阅读
  7. 公式面试题总结(三)

    2024-06-10 20:24:07       8 阅读
  8. 【设计模式】基本名词

    2024-06-10 20:24:07       11 阅读
  9. leetcode290:单词规律

    2024-06-10 20:24:07       13 阅读