1. 我用RS485转232的转接头将压力表接到了计算机的串口上,然后用java写了一个串口通信的程序,测试过可以正常通信,能够正常读取寄存器中的水压值;
2. 由于施工条件的限制,在具体应用时无法将水压表直接连接到电脑的串口上,所以后来我把数字压力表连接到UT-6720串口服务器上(支持TCP/IP到RS-232/485/422转换),希望设备联网,选用的工作模式为虚拟串口模式,java程序中的串口改为了映射的虚拟串口,其余的地方没有做任何修改,结果通信就没反应了,使用第三方的串口调试助手也无法进行通信。
相关的虚拟串口设置如下图,使用的是串口服务器自带的配置软件,点击连接后显示连接成功,其中远程主机IP和端口写的是串口服务器的IP和端口。
因为是第一次做这种东西,所以很多东西都不太了解,串口通信的程序没有问题,但是连接串口服务器后就有问题了,不知道是不是我设置上出错了,希望大家不吝赐教,谢谢。
3 个解决方案
#1
把RX,TX调换下试试
#2
用了另外一台电脑,将串口服务器的输出端,看看数据能不能经过串口服务器正确转发,如果不能,需要设置串口服务器或更换串口服务器
如果能,最有可能的是时序问题,因为标准Modubus-RTU区分一帧是根据时间来的,如果超过3.5个字节传输时间没有收到数据,则认为是一帧结束.另外字节和字节之间的延时也不能超过1.5个字节传输时间,这要跟传感器厂商咨询这些时间的
如果是时序问题,尝试降低波特率,串口服务器关闭缓存(收到一帧数据立即转发)等措施
如果能,最有可能的是时序问题,因为标准Modubus-RTU区分一帧是根据时间来的,如果超过3.5个字节传输时间没有收到数据,则认为是一帧结束.另外字节和字节之间的延时也不能超过1.5个字节传输时间,这要跟传感器厂商咨询这些时间的
如果是时序问题,尝试降低波特率,串口服务器关闭缓存(收到一帧数据立即转发)等措施
#3
#1
把RX,TX调换下试试
#2
用了另外一台电脑,将串口服务器的输出端,看看数据能不能经过串口服务器正确转发,如果不能,需要设置串口服务器或更换串口服务器
如果能,最有可能的是时序问题,因为标准Modubus-RTU区分一帧是根据时间来的,如果超过3.5个字节传输时间没有收到数据,则认为是一帧结束.另外字节和字节之间的延时也不能超过1.5个字节传输时间,这要跟传感器厂商咨询这些时间的
如果是时序问题,尝试降低波特率,串口服务器关闭缓存(收到一帧数据立即转发)等措施
如果能,最有可能的是时序问题,因为标准Modubus-RTU区分一帧是根据时间来的,如果超过3.5个字节传输时间没有收到数据,则认为是一帧结束.另外字节和字节之间的延时也不能超过1.5个字节传输时间,这要跟传感器厂商咨询这些时间的
如果是时序问题,尝试降低波特率,串口服务器关闭缓存(收到一帧数据立即转发)等措施