NI LabVIEW,CVI,数据采集等产品讨论区

取消
显示结果 
搜索替代 
您的意思是: 

labview与现场总线设备通讯问题

现在做的一个项目需要labview与modbus控制器通讯,通过串口发送控制指令和读取控制器返回的数据。控制命令发送和数据接收放在一个while循环中,采用顺序控制,分3步

 

 1,用serial write发送控制命令1。当modbus控制器接收到命令1并校验,正确的话会返回一个状态信息,是一串相应的16进制字符串。

如发送: 01 10 00 00 00 02 04 F7 FF 1F FF B9 9B

              返回     01 10 00 00 00 02 41 C8


2,采用serial write发送控制命令2。该命令采集modbus的相关寄存器中的数值,用于在lv程序中进行显示和计算。modbus控制器接收到命令2并校验正确的话返回相关寄存器的数值。


     如:  发送     0103 0065 0008 5413
             返回     01 03 10 1C CB 07 37 00 0E 00 97 00 05 02 2D 01 91 00 8F 7C 38 

3.采用serial read来接收命令2发出后modbus控制器返回的数值。

     现在存在的问题是,我的程序运行的时候,接收到的数值经常会受到很多杂乱的数据,好像是会接收到命令1中返回的数据。我想问问怎么才能保证我的程序只接收到2中返回的数据。即保证程序每循环一次只接收到字符串01 03 10 1C CB 07 37 00 0E 00 97 00 05 02 2D 01 91 00 8F 7C 38 这样的信息帧

0 项奖励
1 条消息(共 3 条)
4,068 次查看
通讯是一个交互的过程,如果你不需要返回的数据,你可以读出后将有用的信息保留,无用的信息抛弃。
这个通过读取串口,然后判断读取的内容,作简单的取舍就可以很容易实现了。
0 项奖励
2 条消息(共 3 条)
4,055 次查看
发送命令1>>接收8bytes数据,并丢弃>>发送命令2>>接收命令2返回的数据
0 项奖励
3 条消息(共 3 条)
4,052 次查看