串口通讯MSComm1控件写对读的干扰

liucongjun88 2013-01-31 11:00:57
我用VB编写对西门子PLC的控制程序,我在定时器里面定时读取开关的状态,现在有一个问题就是在读取数据的时候如果我我有发了一个写的指令,读数据就会有干扰,开关状态会乱显示一两秒然后又恢复正常了,如果不发写指令读取数据就是正常,请问这个问题该怎么解决,我的接收程序是这样的
Private Sub Command25_Click()
Dim bytInput() As Byte
Dim intInputLen As Integer
Dim a
Select Case MSComm1.CommEvent
Case comEvReceive
MSComm1.InputMode = 1 '0:文本方式,1:二进制方式
intInputLen = MSComm1.InBufferCount
If intInputLen = 28 Then
bytInput = MSComm1.Input
a = bytInput(25)

Text5.Text = a
End If
End Select
End Sub
定时读的程序如下:
Private Sub Timer1_Timer()
Dim a
n = n + 1
Select Case n
Case 1
Command24_Click’读指令
Case 2
Command25_Click‘取出数据

End Select
If n = 2 Then
n = 0
End If
我没有在MSComm1_OnComm事件里面写取出数据的程序,请大家给我指出问题的所在
...全文
1166 4 打赏 收藏 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
贝隆 2013-02-01
  • 打赏
  • 举报
回复
引用 3 楼 xuli0451392 的回复:
使用MSComm1_OnComm有档机情况``````
那是你的程序问题,有Bug
xuli0451392 2013-02-01
  • 打赏
  • 举报
回复
使用MSComm1_OnComm有档机情况``````
贝隆 2013-02-01
  • 打赏
  • 举报
回复
如果单单是读写DI、DO的指令,应该是不会的。就是不知道,你的写指令是否设计到有干扰源的产生的情况? 比如你的写指令打开了一个变频器?中高频率电源?要知道这些器件都是一个干扰源,尤其是前者对DI的干扰比较大。
worldy 2013-01-31
  • 打赏
  • 举报
回复
你使用的是232连接线?还是通过了485 前者应该不会互相干扰,或者是半双工,即收发要分开进行 我用的PLC是其通信使用modbus协议,该协议使用 请求-相应的对话形式进行通信,我不知道你的PLC在接收的同时是否能发送,估计你的问题出在这里

1,453

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧