提供一个完整的VB6的代码:
Option Explicit
Dim PLC As New WinS7_PPI.PlcCom
Dim Linked As Boolean
Private Sub Form_Load()
Dim i As Integer
Me.Top = Screen.Height / 2 - Me.Height / 2
Me.Left = Screen.Width / 2 - Me.Width / 2
'
cmbRdMemory.Clear
cmbRdMemory.AddItem "I"
cmbRdMemory.AddItem "Q"
cmbRdMemory.AddItem "M"
cmbRdMemory.AddItem "V"
cmbRdMemory.ListIndex = 2
cmbWtMemory.Clear
cmbWtMemory.AddItem "I"
cmbWtMemory.AddItem "Q"
cmbWtMemory.AddItem "M"
cmbWtMemory.AddItem "V"
cmbWtMemory.ListIndex = 2
'
cmbRdDataType.Clear
cmbRdDataType.AddItem "W_INT16"
cmbRdDataType.AddItem "W_UINT16"
cmbRdDataType.AddItem "D_DINT32"
cmbRdDataType.AddItem "D_HEX32"
cmbRdDataType.AddItem "D_REAL32"
cmbRdDataType.AddItem "W_BIN16"
cmbRdDataType.AddItem "B_CHAR8"
cmbRdDataType.AddItem "B_BYTE8"
cmbRdDataType.ListIndex = 0
cmbWtDataType.Clear
cmbWtDataType.AddItem "W_INT16"
cmbWtDataType.AddItem "W_UINT16"
cmbWtDataType.AddItem "D_DINT32"
cmbWtDataType.AddItem "D_HEX32"
cmbWtDataType.AddItem "D_REAL32"
cmbWtDataType.AddItem "W_BIN16"
cmbWtDataType.AddItem "B_CHAR8"
cmbWtDataType.AddItem "B_BYTE8"
cmbWtDataType.ListIndex = 0
'
cmbBitMemory.Clear
cmbBitMemory.AddItem "I"
cmbBitMemory.AddItem "Q"
cmbBitMemory.AddItem "M"
cmbBitMemory.AddItem "V"
cmbBitMemory.ListIndex = 2
For i = 0 To 7 Step 1
cmbBitNum.AddItem i
Next i
cmbBitNum.ListIndex = 0
End Sub
Private Sub Online_Click()
Dim re As Integer
Dim port As Integer
port = Val(txtPort.Text)
re = PLC.ComLink(port, 9600, Val(txtNode.Text), "DEMO")
txtState.Text = re
Linked = CBool(re = 0)
End Sub
Private Sub Offline_Click()
Dim re As Integer
re = PLC.DeLink()
txtState.Text = re
Linked = False
End Sub
Private Sub R_CIO_Click()
Dim i As Integer
Dim Node As Integer
Dim Memory As PlcMemory
Dim dtype As DataType
Dim add As Integer
Dim Count As Integer
Dim rd() As String
Dim re As Integer
Dim tstr As String
If Not Linked Then Exit Sub
Node = Val(txtNode.Text)
Select Case cmbRdMemory.ListIndex
Case 0: Memory = PlcMemory.DI
Case 1: Memory = PlcMemory.DQ
Case 2: Memory = PlcMemory.MR
Case 3: Memory = PlcMemory.DR
End Select
Select Case cmbRdDataType.ListIndex
Case 0: dtype = DataType.tINT16
Case 1: dtype = DataType.tUINT16
Case 2: dtype = DataType.tDINT32
Case 3: dtype = DataType.tHEX32
Case 4: dtype = DataType.tREAL32
Case 5: dtype = DataType.tBIN16
Case 6: dtype = DataType.tCHAR8
Case 7: dtype = DataType.tBYTE8
End Select
add = Val(txtRdAddress.Text)
Count = Val(txtRdCount.Text)
re = PLC.CmdRead(Node, Memory, dtype, add, Count, rd())
txtRdState.Text = re
tstr = ""
If re = 0 Then
For i = 0 To UBound(rd)
tstr = tstr & rd(i) & vbCrLf
Next i
End If
txtRead.Text = tstr
End Sub
Private Sub W_CIO_Click()
Dim i As Integer
Dim Node As Integer
Dim Memory As PlcMemory
Dim dtype As DataType
Dim add As Integer
Dim Count As Integer
Dim wt() As String
Dim re As Integer
Dim tstr() As String
'
If Not Linked Then Exit Sub
Node = Val(txtNode.Text)
Select Case cmbWtMemory.ListIndex
Case 0: Memory = PlcMemory.DI
Case 1: Memory = PlcMemory.DQ
Case 2: Memory = PlcMemory.MR
Case 3: Memory = PlcMemory.DR
End Select
Select Case cmbWtDataType.ListIndex
Case 0: dtype = DataType.tINT16
Case 1: dtype = DataType.tUINT16
Case 2: dtype = DataType.tDINT32
Case 3: dtype = DataType.tHEX32
Case 4: dtype = DataType.tREAL32
Case 5: dtype = DataType.tBIN16
Case 6: dtype = DataType.tCHAR8
Case 7: dtype = DataType.tBYTE8
End Select
add = Val(txtWtAddress.Text)
Count = Val(txtWtCount.Text)
ReDim wt(Count - 1) As String
tstr = Split(Trim(txtWrite.Text), vbCrLf)
For i = 0 To UBound(wt)
wt(i) = Trim(tstr(i))
Next i
re = PLC.CmdWrite(Node, Memory, dtype, add, Count, wt())
txtWtState.Text = re
End Sub
Private Sub T_BIT_Click()
Dim Node As Integer
Dim Memory As PlcMemory
Dim add As Integer
Dim bitnum As Integer
Dim re As Integer
Dim tb As Boolean
'
If Not Linked Then Exit Sub
Node = Val(txtNode.Text)
Select Case cmbBitMemory.ListIndex
Case 0: Memory = PlcMemory.DI
Case 1: Memory = PlcMemory.DQ
Case 2: Memory = PlcMemory.MR
Case 3: Memory = PlcMemory.DR
End Select
add = Val(txtBitAddress.Text)
bitnum = cmbBitNum.ListIndex
re = PLC.Bit_Test(Node, Memory, add, bitnum, tb)
txtBitState.Text = re
txtReBit.Text = IIf(tb, "ON", "OFF")
Linked = CBool(re = 0)
End Sub
Private Sub S_BIT_Click()
Dim Node As Integer
Dim Memory As PlcMemory
Dim add As Integer
Dim bitnum As Integer
Dim re As Integer
Dim tb As Boolean
'
If Not Linked Then Exit Sub
Node = Val(txtNode.Text)
Select Case cmbBitMemory.ListIndex
Case 0: Memory = PlcMemory.DI
Case 1: Memory = PlcMemory.DQ
Case 2: Memory = PlcMemory.MR
Case 3: Memory = PlcMemory.DR
End Select
add = Val(txtBitAddress.Text)
bitnum = cmbBitNum.ListIndex
re = PLC.Bit_Set(Node, Memory, add, bitnum)
txtBitState.Text = re
Linked = CBool(re = 0)
End Sub
Private Sub R_BIT_Click()
Dim Node As Integer
Dim Memory As PlcMemory
Dim add As Integer
Dim bitnum As Integer
Dim re As Integer
Dim tb As Boolean
If Not Linked Then Exit Sub
Node = Val(txtNode.Text)
Select Case cmbBitMemory.ListIndex
Case 0: Memory = PlcMemory.DI
Case 1: Memory = PlcMemory.DQ
Case 2: Memory = PlcMemory.MR
Case 3: Memory = PlcMemory.DR
End Select
add = Val(txtBitAddress.Text)
bitnum = cmbBitNum.ListIndex
re = PLC.Bit_Reset(Node, Memory, add, bitnum)
txtBitState.Text = re
Linked = CBool(re = 0)
End Sub