LabVIEW论坛
直播中

世荣

1年用户 72经验值
擅长:模拟技术 测量仪表 控制/MCU
私信 关注
[问答]

LabVIEW写一个visa串口助手,下位机数据通过一个485转USB的转接器上传。半双工工作如何控制上下位机的数据接受与发送

下位机数据通过一个9针485转USB的转接器上传,只接了RX,TX。下位机用示波器看,数据是2.5ms一帧帧上传的。但是串口读出来是挤在一起的一大堆。下位机数据报多了之后,上位机的指令还发不出去。怎么控制两个的通信呢?
我看官方文档,visa串口配置wire属性有485两线的通
信配置。也看了有关流控制的资料。但现在的情况就是只接了RX,TX两个线,软件流控制和硬件流控制都做不到。visa配置了485两线工作也是没有起到作用。这种情况下,有什么好的方法解决两者通信交互呢?请教各位,大家也一起学习

已退回10积分

回帖(3)

许奕

2023-11-28 09:49:37
按照通用的串口去控制,其他都不要改动,一次不成功,就多发几次。几次不行换方案。
485上半双工通讯,一般情况都是主设备去问从设备数据。你这从设备自动发送,主设备也需要随时发送,根本不适合485,改用422,问题解决。
举报

卓侨汉

2023-11-29 11:10:51
在这种情况下,可以考虑使用软件方法实现半双工通信。下面是一种可能的解决方案:

1. 在上位机上使用一个循环来读取串口接收缓冲区中的数据,并将其按照帧的方式进行解析。根据数据的起始标志和帧长度进行帧的切割和解析。

2. 使用一个FIFO(First In First Out)队列来存储上位机发送的指令。在需要发送指令时,从队列中取出并发送。

3. 在上位机中,使用定时器来控制指令的发送间隔,确保上位机发送指令的速度不会超过下位机的处理速度。

4. 在下位机上,使用一个循环来读取串口接收缓冲区中的数据,并将其解析为帧数据。

5. 下位机使用一个标志位来表示是否有新的数据需要发送给上位机。如果有新的数据,则将其放入一个发送缓冲区中。

6. 在下位机中,使用一个定时器来控制数据的发送间隔。在定时器超时时,将发送缓冲区中的数据发送给上位机。

通过这种方式,可以实现上位机和下位机之间的半双工通信。上位机可以及时发送指令,并读取下位机发送的数据,而下位机也可以根据需要将数据发送给上位机。请注意,由于没有使用硬件流控制信号,数据的发送和接收速度需要进行合理的控制,以避免数据产生丢失或溢出的情况。
举报

wRed_maple

2023-11-30 10:00:28
改成422四线,发送与接收是分开的
举报

更多回帖

发帖
×
20
完善资料,
赚取积分