一个关于vb和三菱plc的通讯问题-PLC技术网(www.plcjs.com)-可编程控制器技术门户


一个关于vb和三菱plc的通讯问题

(点击题目可以在互联网中搜索该题目的相关内容)
日期:2006-4-4 0:31:33     来源:   作者: 点击:
点击【】,可以选择字体的大小,以便你阅读.

一个关于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上,我是学生,没有经验,不知哪位高手能帮助一下,不盛感激! 共

上一篇: 工作站的WINCC
下一: 提高RS-485总线可靠性的几种方法及常见故障处理(转载)