求助,VB与S7-200 PPI通信时PLC没返回数据 点击:307 | 回复:3



linjh86

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 15回
  • 年度积分:0
  • 历史总积分:143
  • 注册:2010年9月08日
发表于:2010-10-12 17:26:30
楼主

程序如下,是不是Mscomm控件没有设置好?向大家请教了

Dim Ok(5) As Byte
Private Sub Form_Load()

MSComm1.CommPort = 1

MSComm1.Settings = "9600,e,8,1"

MSComm1.InputMode = comInputModeBinary
MSComm1.RThreshold = 1

Ok(0) = &H10
Ok(1) = &H2
Ok(2) = &H0
Ok(3) = &H5C
Ok(4) = &H5E
Ok(5) = &H16
End Sub

Private Sub MSComm1_OnComm()
Dim Rcv_Data() As Byte

Se1ect Case MSComm1.CommEvent

Case comEvReceive

Rcv_Data = MSComm1.Input

Text1.Text = Rcv_Data

If Rcv_Data(0) = &HE5 Then

MSComm1.Output = Ok

End If

End Se1ect
End Sub

Private Sub OpenCom_Click()
If Not MSComm1.PortOpen Then

MSComm1.PortOpen = True

OpenCom.Caption = "关闭串口"
Else
MSComm1.PortOpen = False

OpenCom.Caption = "打开串口"
End If
End Sub
Private Sub Send_Click()

Dim Send() As Byte

Dim i As Integer

Dim Temp() As String

Const Temp_Str = "68 21 21 68 02 00 7C 32 01 00 00 00 00 00 0E 00 05 05 01 12 0A 10 01 00 01 00 00 83 00 00 00 00 03 00 01 01 00 80 16"

MSComm1.RThreshold = 1

Temp = Split(Temp_Str, " ")

ReDim Send(UBound(Temp))

For i = 0 To UBound(Temp)

Send(i) = Val("&H" & Temp(i))

Next i


MSComm1.Output = Send

Text1.Text = Rcv_Data + Text1.Text

If Len(Text1.Text) = 0 Then

Text1.Text = "empty"
End if
End Sub




sun723

  • 精华:1帖
  • 求助:0帖
  • 帖子:7帖 | 22回
  • 年度积分:0
  • 历史总积分:162
  • 注册:2009年3月19日
发表于:2010-10-12 18:24:04
1楼

可以试着捕获一下数据,看看是哪一边的问题

 

sovish521

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 122回
  • 年度积分:0
  • 历史总积分:551
  • 注册:2008年12月11日
发表于:2010-10-12 19:30:31
2楼
建议:与西门子的plc通信就别用MScomm了,麻烦不说也不可靠,建议用S7-200 OPC Server,再编程与opc服务器通信。

linjh86

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 15回
  • 年度积分:0
  • 历史总积分:143
  • 注册:2010年9月08日
发表于:2010-10-12 20:36:56
3楼
引用sun723 的回复内容:

可以试着捕获一下数据,看看是哪一边的问题

mscomm1.input  好像没有数据输入

 






热门招聘
相关主题

官方公众号

智造工程师