您现在所在的是:

台达论坛

回帖:3个,阅读:827 [上一页] [1] [下一页]
1405
rgbest
文章数:94
年度积分:50
历史总积分:1405
品牌积分(台达):0
注册时间:2013/9/26
发站内信
发表于:2014/7/20 9:56:25
#0楼
无论PLC还是VB6.0,我都是菜鸟。开始学PLC已经半年,结合手边的模型,写的PLC已经能够正常运行,进一步把PLC的运行数据记录到PC数据库的数据表中,成了逾越不去的坎。根据中达电通王乃全公布的程序架构,完全能够对PLC进行启动停止控制。主要是读不出寄存器中的数据,也不发出“传输错误”的提醒。请高手帮忙看看下面的读取程序错在什么地方:
'读取PLC数据
Private Sub read_Click()
RThreshold = 0项目
SThreshold = 0
Dim q1 As String
Dim q2 As String
Dim q22
Dim q3 As String
Dim q4 As String
Dim q9Len As Integer
MSComm1.InBufferCount = 0
MSComm1.OutBufferCount = 0
q2 = "010310190004"     '01--PLC站号;03--读取寄存器命令;1019--DVP PLC始读寄存器D25地址;0004--连续读取4位寄存器至 D28
q22 = LRC(q2)
q1 = ":" + q2 + q22 + Chr$(13) + Chr$(10)
MSComm1.Output = q1
Timer5.Enabled = False '关闭定时器
q3 = MSComm1.Input
q4 = Mid(q3, 1, 5)
  If q4 = ":" & "0103" Then
  q5$ = Mid(q3, 8, 4)
  q6$ = Mid(q3, 12, 4)
  q7$ = Mid(q3, 16, 4)
  q8$ = Mid(q3, 20, 4)
  q15$ = "&h" + q5$
  q16$ = "&h" + q6$
  q17$ = "&h" + q7$
  q18$ = "&h" + q8$
  q25! = Val(q15$)
  q26! = Val(q16$)
  q27! = Val(q17$)
  q28! = Val(q18$)
    Text3.Text = q25!
    Text4.Text = q26!
    Text5.Text = q27!
    Text6.Text = q28!
   Else
   MsgBox "传输错误"
  End If
Timer5.Enabled = True   '打开定时器
End Sub
[此贴子已经被作者于2014/7/20 14:13:53编辑过]
25270
ytleaderplc
文章数:10636
年度积分:1696
历史总积分:25270
品牌积分(台达):26
注册时间:2008/6/7
发站内信
发表于:2014/7/20 10:04:39
#1楼
参考vb vc和plc通讯的例子程序
PLC 文本显示器 触摸屏 变频 伺服 编程电缆 plc触摸屏编程 维修等
email:  ytleader@126.com
11767
gzg_00
文章数:8996
年度积分:56
历史总积分:11767
品牌积分(台达):0
注册时间:2009/10/1
发站内信
发表于:2014/7/20 10:09:28
#2楼
台达的不明白,估计应该和三菱的差不多,你找一下三菱的吧
1405
rgbest
文章数:94
年度积分:50
历史总积分:1405
品牌积分(台达):0
注册时间:2013/9/26
发站内信
发表于:2014/7/24 20:55:12
#3楼
初步能够采集数据了,主要是在取出串口输出缓冲区 MSComm1.Input数据之前,添加DoEvents语句。

'读取PLC数据
Private Sub read_Click()
RThreshold = 0
SThreshold = 0
Dim q1 As String
Dim q2 As String
Dim q22
Dim q3 As String
Dim q4 As String
Dim q9Len As Integer
MSComm1.InBufferCount = 0
MSComm1.OutBufferCount = 0
q2 = "010310190004"     '01--PLC站号;03--读取寄存器命令;1019--DVP PLC始读寄存器D25地址;0004--连续读取4位寄存器至 D28
q22 = LRC(q2)
q1 = ":" + q2 + q22 + Chr$(13) + Chr$(10)
MSComm1.Output = q1
 If Timer5.Enabled = True Then
   Timer5.Enabled = False '关闭定时器
   Do
   DoEvents
   Loop Until MSComm1.InBufferCount >= 24
 End If
q3 = MSComm1.Input
q4 = Mid(q3, 1, 5)
  If q4 = ":" & "0103" Then
  q5$ = Mid(q3, 8, 4)
  q6$ = Mid(q3, 12, 4)
  q7$ = Mid(q3, 16, 4)
  q8$ = Mid(q3, 20, 4)
  q15$ = "&h" + q5$
  q16$ = "&h" + q6$
  q17$ = "&h" + q7$
  q18$ = "&h" + q8$
  q25! = Val(q15$)
  q26! = Val(q16$)
  q27! = Val(q17$)
  q28! = Val(q18$)
    Text3.Text = q25!
    Text4.Text = q26!
    Text5.Text = q27!
    Text6.Text = q28!
   Else
   MsgBox "传输错误"
  End If
Timer5.Enabled = True   '打开定时器
End Sub

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

46.8003