串口通讯的困惑。这个问题很奇怪,做工控高手们不妨来看看.........(50分)

  • 主题发起人 主题发起人 行素
  • 开始时间 开始时间

行素

Unregistered / Unconfirmed
GUEST, unregistred user!
PC机的RS232串口与西门子MICROMASTER420型的通讯问题。
西门子MICROMASTER420型变频器用485通过485与RS232的转接口与PC机的RS232通讯,RS232串口的设置变频器的通讯
设置都已经设对了,可以收发数据,控制变频器的运行。
问题在我对变频器进行实时控制的时候(基本上500ms通讯一次)在开始的阶段变频器运行正常,但
一段时间后,变频器忽然没有反应了,已经确定给它发出了指令。这时如果我把串口开关一次,通讯又
恢复正常,但一段时间后,又不行了。不行的时候仿佛整个通讯链路已经中断。且每次故障发生的时间或事件触发
都毫无规律可行。
我怀疑变频器的故障信号导致了问题的发生,但我每次都对故障进行了复位。另外,整个链路只有此变频器一个通讯
因此不存在和其他通讯设备有冲突的可能。
我使用的串口控件为SPCOMM,使用DELPHI编程。
请有相关经验的大哥大姐们指点迷津,不胜感激!(能提供思路就有分送)

 
用spcomm是有这样的情况发生的,当时我在调stulz空调通信时也是这样,但由于我只用spcomm编个程序来测试,主程序是用MS的Activex.故问题没花时间去解决。
但我看啦一下spcomm的源码,可能问题出现在Xorbit,NXorbit。其中XorByte := #11,NXorByte := #13.如果你的程序接收到#11,#13的数据,可能就有问题。如果你能发现解决方法,请于我联系.
或我们可以再讨论一下。aiirii@21cn.com
 
我觉得两点可能
1、你在每回发数据的时候清输入输出缓冲区了吗?
2、你的握手协议一定要和sim的匹配,好像一般的是xon/xoff
 
通讯过于频繁!变频器内部响应不过来!!!
因为变频器的通讯通常用于设置,而设置是不很频繁的操作。
 
楼上的三位说得都有道理。
TO Aiirii:我接受的数据里面可以确定没有#11和#13的数据。
TO mazhayang:因为我是对变频器实时控制,出错的时间不固定,有时一小时都没有错,有时
刚启动就发现错误,每次接受数据的长度都较少,初步确定不是缓冲溢出的错误,握手协议已经设过。
TO SupermanTm:变频器内部响应不过来,那出错就应该有一定的规律可寻,而且我修改了与之
通讯的频率,没有任何效果。
 
清输入输出缓冲区,并不是为了防止缓冲区溢出,而是为了防止缓冲区的一些垃圾
因为你重新关开串口就好了,所以这点非常有可能,或者你串口控制线的状态不对,用
clearcommerror 青青状态试试
建议你试试我的想法
 
看不到呀
 
不知道着不着边,我的设备在工地运行的时候也有类似问题出现。
有时候还会死机,或者是非法,更多的时候是毫无反应:(
后于高人联系,说是可能是硬件方面问题,如:线长问题(《 6米),
添加隔离器(485-232串口的),采用防静电设备等。后来设备就正常了。
不知道你那里是不是也存在这个问题。
 
BJ_QQ 兄的说法有道理,变频器的干扰很大的,如果是 232 电平比较容易出问题的。
 
串口是通过识别电压差来获得1或者0信号的。
串口在长时间工作的时候,容易因为静电问题,导致电压差失去,然后所有的数据都不能
接收。减少线长度和保证计算机和外设之间的良好接地,再不行就加个光电隔离器。
这些是我们公司的硬件工程师说的,因为最近我也遇到同样的问题,就是如此解决。
 
可能确实是干扰的问题。fshell说的方法不妨一试
 
干脆一不作二不休,搞成RS485的,平衡式传输安全性能好多了,如果波特率不十分高的话
(不高于9600bps)可以直接用运放把信号搞成双端的。
 
两方面入手:
硬件上,从PC串口到232to485转换器之间的电缆尽可能用屏蔽电缆
软件上,用串口监视软件对你的程序往232送出的数据进行监测(是否发送,发送的时间,
是否正确?)
另外,你对串口的访问方式可能也会是一个原因,在不同的操作系统下,当频繁操作串口时
不同的方式结果会不同(如MSCOMM、SPCOMM)
 
光耦隔离是肯定要的,
另外,流控制好像不需要
 
对SPCOMM控件的使用频度已经确认是没有问题的,因为我的另一路串口也使用SPCOMM控件,使用
频度一样,出错的频率相对低多了(接近不出错)。
fshell说的有道理,我会试一试。
多谢各位关照,小弟在此谢过。
 
多人接受答案了。
 
后退
顶部