点击【 大 中 小 】,可以选择字体的大小,以便你阅读.
一个关于vb和三菱plc的通讯问题
做了一个vb和三菱的通讯程序
大部分是好的
其中有一部分是每隔0.5秒做一次针对大概几十个点的读出(这些点有
字也有位),但有时候会出现不能读出也就是显示的数字不随着plc
内点的改变而改变,这种现象有时出现有时不出现
这种方法的实现是用timer来实现的
如果把几十个点的个数减少为一半左右这种现象就不会出现
请问怎么解决
非常感谢
以下是对《一个关于vb和三菱plc的通讯问题》的回复:
匿名回复:
使用通讯控件返回的串口的状态,检测串口存储区的大小,作一下改写。
匿名回复:
可以说详细一点吗
我也想到可能是串口存储区的问题
可是怎么检测,怎么改写我不太明白
非常感谢
匿名回复:
是不是妳0.5秒的循環周期太快,改成0.8或1秒看一下,如果還是不行就肯是緩沖沒清空.
匿名回复:
是这样
由于有很多个点要扫描
我是每一个开始扫描的时候都先对缓冲清零了
1秒也试过
还是这样
不然把程序拿上来看一下,很简单的
Private Sub Timer1_Timer()
Dim pc_read11 As String
Dim timwr11 As Single
Dim A As String
Dim B As String
Dim C As String
MSComm1.InBufferCount = 0
MSComm1.OutBufferCount = 0
MSComm1.Output = Chr(5) + "00FFWR0D0120022E"
timwr11 = Timer
Do
If Timer > timwr11 + 0.1 Then: GoTo err_check11
Loop Until MSComm1.InBufferCount = 16
pc_read11 = MSComm1.Input
If Mid(pc_read11, 1, 5) = Chr(2) + "00FF" Then
A = Mid(pc_read11, 8, 2)
B = "&h" + A
C = Val(B)
Text5.Text = C
Else
MsgBox "传输错误!"
End If
err_check11:
pc_read11 = MSComm1.Input
然后还有若干个类似的通讯命令
在每个开始的时候都有
MSComm1.InBufferCount = 0
MSComm1.OutBufferCount = 0
来清零呀
匿名回复:
//----------------
如果把几十个点的个数减少为一半左右这种现象就不会出现
//---------------
給你一個簡單方法,分兩次讀,一次讀一半,看看是否可行.
匿名回复:
我现在用vb实现计算机和LG的PLC的串口通信,但是不知道为什么一点反映都没有,我考虑了半天,怎么也查不出毛病在什么地方,是不是在PLC上还要进行一番设置,我现在只是用VB编了个小程序,然后就接到PLC上,我是学生,没有经验,不知哪位高手能帮助一下,不盛感激! 共