用VB编的工控软件,上位机(电脑)可以设定每隔多少秒发送一次读数据命令,然后下位机上传1帧数据,问题如下:
1.可能是下位机控制的电机有干扰,经常导致程序假死,但是通讯还在继续,只是程序不响应
2.可能是数据发送频繁导致计算机资源占用过多(当读取3个数据时,CPU快50%占用率)
请教下怎么找出问题,谢谢!
1.可能是下位机控制的电机有干扰,经常导致程序假死,但是通讯还在继续,只是程序不响应
2.可能是数据发送频繁导致计算机资源占用过多(当读取3个数据时,CPU快50%占用率)
请教下怎么找出问题,谢谢!
如果是干扰,则应该考虑排除干扰.
依据通信协议对接收数据帧进行判断,符合要求读取,不符合要求舍去.
下位机时钟不准,导致通信出错.
适当必要的定时强制关闭COM口.瞬间打开COM口.
DoEvents
Loop Until MSComm1.InBufferCount = 8
Inbyte = MSComm1.Input程序还在发数据,但是界面按钮不响应了,难道是信号出错了,导致循环停不下来?我是在Timer里发送读取命令的
Do
DoEvents
Loop Until MSComm1.InBufferCount = 8
Inbyte = MSComm1.Input
是用查询方法来读取数据的啊,oncomm事件只是用来读取数据的,阈值设为8,不做发送用啊,你定时发送指令,如果下位机有数据返回达到8个会自动触发oncomm事件,你在事件里面读取数据啊,这样就不用一直循环,可能导致假死的现象。
对于干扰,你可以把232换成485试试,这样抗干扰能力会增强很多的!
1.电缆线焊接牢固。
2.屏蔽线接直流地。(9芯插头---5 25芯 ----7 是0v)
3.再找两台电脑 (就叫C 机 D 机吧)
4.pc和plc连接一般可以采用软件通讯协议,即三根线。 c机 d机
2| |2
| |
pc | | plc
2 ---+-------|----------- 3
3 -----------+----------- 2
5 ----------------------- 5利用c机、d机串口第二脚(接收端)按照上图连上。
利用c机 和 d 机的两个接收端,捕获两端的数据通讯内容。你会发现问题出在哪里的。6.串口的通讯电平(笔记本电脑+ - 8v。台式机 + -11 V 左右)eia stardard is +-3 to +- 15v
我们经常在车间长期使用串口通讯,哪里除了有电机、吊车、电焊机。估计是你的软件编的有毛病。
有事联系我www.cncb3h.com contact
1.我提供的方法是通过c、d、电脑去采集实际的通讯过程。
查看你面是否有无效数据就可以知道是有有乱码了。
2.串口如果收到严重干扰,他的数据格式会出错,mscomm会报警的。不可能还在工作。我的建议:当出现问题时
1.用头脑里的掌握的基本原理去分析
2.设计到硬件的问题,要经过测试、实验。
3.不能只想、只说、不干。
4.举例:可以做个实验:
1.将两台电脑串口相连,放到车间里干扰最严重的设备旁边。电焊机、高频电炉。看看通讯会不会乱。
2.我们常做电脑通过串口连接数控机床,有时一个零件边加工、边传送要连续加工一周。想一下,一台机床上 有多少电机?
如果干扰机床早就撞坏了。总之:要通过实验来分析问题、通过原理来分析问题。如果用嘴说可以说出一百个理由来!
一个简单的方法试一下:
1.用串口精灵、xtalk、procomm、等软件的一款将你的命令传发送给下位机。
2.按照你的发送周期人工去发。看看乱不乱注:首先要保证你发的数据格式是正确的。一般的plc在通讯数据包中的尾部带累加和检查的!
你可以设个断点试试