Professional Documents
Culture Documents
Với bộ điều khiển là PLC S7-200 siemens, phần mềm lập trình Microwin 4.0, bộ
OPC Access sẽ truyền dữ liệu giữa PLC và máy tính . Thông qua OPC, chúng ta có thể
kết nối các phần mềm ứng dụng khác như Matlab, Visual Basic …..
Với ngôn ngữ lập trình đơn giản và tốc độ xử lý nhanh . OPC VB và Visual Basic
sẽ được chọn thiết kế bộ điều khiển và máy tính trong đề tài này .
Để thực hiện được đề tài bằng phương pháp này ta cần sử dụng thêm hai phần
mềm là OPC VB, PC Access không kể Visual Basic , Microwin 4.0
Cách kết nối OPC VB và PC Access
Bước 4 : Viết chương trình và tạo giao diện trên Visual Basic
LabelNORMAL.Caption= FastOPCControll.GetValue(‘S7200.OPCSever\
MicroWin.PLC.START)
Vậy là ta đã hoàn thành bước đầu kết nối PLC và máy tính phần còn
lại là thao tác trên VB
''''''''
'<><><><><><><><><><><><><><><><><>
Private db As ADODB.Connection
Unload Me
End Sub
sql = "DELETE *" & vbCrLf & "FROM ITEMS" & vbCrLf & "WHERE(((ITEMS.PLC_add) = " &
Me.lst_item.SelectedItem.SubItems(1) & ") and ((ITEMS.Item) = " & Chr(34) &
Me.lst_item.SelectedItem.SubItems(2) & Chr(34) & "));"
db.Execute sql
Call dpl_Item
End Sub
End Sub
''' mo CSDL
db.Open ' mo DL
''
w_err:
If Err.Number = -2147467259 Then MsgBox "khong thay FILE ITEM.mdb trong " &
App.Path: Exit Sub
Call Cmd_RemoveItem_
sql = "INSERT INTO ITEMS(PLC_add,Item,Type)" & vbCrLf & "VALUES (" & 2 & "," &
Chr(34) & "M0.0" & Chr(34) & "," & Chr(34) & "BOOL" & Chr(34) & ");"
db.Execute (sql)
Call dpl_Item
sql = "INSERT INTO ITEMS(PLC_add,Item,Type)" & vbCrLf & "VALUES (" & 2 & "," &
Chr(34) & "M0.1" & Chr(34) & "," & Chr(34) & "BOOL" & Chr(34) & ");"
db.Execute (sql)
Call dpl_Item
sql = "INSERT INTO ITEMS(PLC_add,Item,Type)" & vbCrLf & "VALUES (" & 2 & "," &
Chr(34) & "M0.2" & Chr(34) & "," & Chr(34) & "BOOL" & Chr(34) & ");"
db.Execute (sql)
Call dpl_Item
sql = "INSERT INTO ITEMS(PLC_add,Item,Type)" & vbCrLf & "VALUES (" & 2 & "," &
Chr(34) & "Q0.0" & Chr(34) & "," & Chr(34) & "BOOL" & Chr(34) & ");"
db.Execute (sql)
Call dpl_Item
sql = "INSERT INTO ITEMS(PLC_add,Item,Type)" & vbCrLf & "VALUES (" & 2 & "," &
Chr(34) & "Q0.1" & Chr(34) & "," & Chr(34) & "BOOL" & Chr(34) & ");"
db.Execute (sql)
Call dpl_Item
sql = "INSERT INTO ITEMS(PLC_add,Item,Type)" & vbCrLf & "VALUES (" & 2 & ","
& Chr(34) & "Q0.2" & Chr(34) & "," & Chr(34) & "BOOL" & Chr(34) & ");"
db.Execute (sql)
Call dpl_Item
sql = "INSERT INTO ITEMS(PLC_add,Item,Type)" & vbCrLf & "VALUES (" & 2 & ","
& Chr(34) & "Q0.3" & Chr(34) & "," & Chr(34) & "BOOL" & Chr(34) & ");"
db.Execute (sql)
Call dpl_Item
sql = "INSERT INTO ITEMS(PLC_add,Item,Type)" & vbCrLf & "VALUES (" & 2 & ","
& Chr(34) & "Q0.4" & Chr(34) & "," & Chr(34) & "BOOL" & Chr(34) & ");"
db.Execute (sql)
Call dpl_Item
sql = "INSERT INTO ITEMS(PLC_add,Item,Type)" & vbCrLf & "VALUES (" & 2 & ","
& Chr(34) & "Q0.5" & Chr(34) & "," & Chr(34) & "BOOL" & Chr(34) & ");"
db.Execute (sql)
Call dpl_Item
End Sub
Call Cmd_RemoveItem_
Call Cmd_RemoveItem_
Call Cmd_RemoveItem_
Call Cmd_RemoveItem_
Call Cmd_RemoveItem_
Call Cmd_RemoveItem_
Call Cmd_RemoveItem_
Call Cmd_RemoveItem_
Call Cmd_RemoveItem_
Set db = Nothing
End Sub
Me.lst_item.ListItems.Clear
Dim rs As ADODB.Recordset
Dim i As Integer
i=0
rs.Open sql, db
i=i+1
Me.lst_item.ListItems(i).SubItems(1) = rs!PLC_add
Me.lst_item.ListItems(i).SubItems(2) = rs!Item
Me.lst_item.ListItems(i).SubItems(3) = rs!Type
rs.MoveNext
Wend
Set rs = Nothing
Exit Sub
w_err:
Exit Sub
End Sub
muclogic = 1
CHON = 2
Call cmd_Write_CCC
muclogic = 0
CHON = 2
Call cmd_Write_CCC
End Sub
muclogic = 1
CHON = 1
Call cmd_Write_CCC
muclogic = 0
CHON = 1
Call cmd_Write_CCC
End Sub
muclogic = 1
CHON = 3
Call cmd_Write_CCC
muclogic = 0
CHON = 3
Call cmd_Write_CCC
End Sub
'''''''''''''''''''''''''''**************************''''''''''''''''''''''''''''''
Exit Sub
ErrorHandler:
End Sub
Exit Sub
ErrorHandler:
End Sub
' These Properties are used to set the Properies for new Groups
MyGroup.IsActive = True
Exit Sub
ErrorHandler:
End Sub
Exit Sub
ErrorHandler:
End Sub
Private Sub add_Items()
Dim i As Long
Dim Errors() As Long ' Array for returned Item related errors
ErrorFlag = False
' Initialize the [IN] parameters for the Add Items call
' ItemClientHandles -> Client defined handles for the Items. The Server sends these
handles in the Callbacks
'''ADD ITEMS
Next
''
ItemClientHandles(i) = i
Next
' ItemServerHandles -> Server defined handles for the Items. The client must use
these handles for all Read/Write calls
For i = 1 To Me.lst_item.ListItems.Count
MsgBox "Item " + Str$(i) + " FAILED. Error Code = " + Str$(Errors(i)), vbCritical
ErrorFlag = True
End If
Next
If ErrorFlag Then
For i = 1 To Me.lst_item.ListItems.Count
If Errors(i) = 0 Then
RemoveHandles(1) = MyItemServerHandles(i)
End If
Next
End If
Exit Sub
ErrorHandler:
End Sub
Dim Errors() As Long ' Array for returned Item related errors
For i = 1 To Me.lst_item.ListItems.Count
If Not Errors(i) = 0 Then MsgBox "Item " + Str$(i) + " FAILED. Error Code = " +
Str$(Errors(i)), vbCritical
Next
Exit Sub
ErrorHandler:
End Sub
Call connect_OPC
Call add_Group
Call add_Items
NOMAL.Enabled = True
MIDNIGHT.Enabled = True
STOPS.Enabled = True
Cmd_Exit.Enabled = False
Cmd_Connect.Enabled = False
Cmd_Disconnect.Enabled = True
End Sub
Call remove_Items
Call remove_Group
Call Disconnect_OPC
NOMAL.Enabled = False
MIDNIGHT.Enabled = False
STOPS.Enabled = False
Cmd_Exit.Enabled = True
Cmd_Connect.Enabled = True
Cmd_Disconnect.Enabled = False
End Sub
Dim i As Long
Dim Errors() As Long ' Array for returned Item related errors
' ItemServerHandles -> Server defined handles from the AddItems call
Exit Sub
ErrorHandler:
End Sub
Dim i As Long
For i = 1 To NumItems
Me.lst_item.ListItems(ClientHandles(i)).SubItems(4) = 1
Me.lst_item.ListItems(ClientHandles(i)).SubItems(4) = 0
Else
Me.lst_item.ListItems(ClientHandles(i)).SubItems(4) = ItemValues(i)
End If
Me.lst_item.ListItems(ClientHandles(i)).SubItems(5) =
GetQualityText(Qualities(i))
Else
MsgBox "DataChange Item " + Str$(i) + " has invalid Client Handle ", vbCritical
End If
Next
Exit Sub
ErrorHandler:
End Sub
End Select
End Function
If Val(Me.lst_item.ListItems(4).SubItems(4)) = 1 And
Val(Me.lst_item.ListItems(9).SubItems(4)) = 1 Then
do1.Visible = False
vang1.Visible = False
xanh1.Visible = True
do2.Visible = True
xanh2.Visible = False
vang2.Visible = False
do2.Visible = False
vang2.Visible = False
xanh2.Visible = True
do1.Visible = True
xanh1.Visible = False
vang1.Visible = False
do1.Visible = False
vang1.Visible = True
xanh1.Visible = False
do2.Visible = True
xanh2.Visible = False
vang2.Visible = False
ElseIf Val(Me.lst_item.ListItems(8).SubItems(4))=1And
Val(Me.lst_item.ListItems(6).SubItems(4)) = 1 Then
do2.Visible = False
vang2.Visible = True
xanh2.Visible = False
do1.Visible = True
xanh1.Visible = False
vang1.Visible = False
ElseIf Val(Me.lst_item.ListItems(5).SubItems(4)) = 1 And
Val(Me.lst_item.ListItems(8).SubItems(4)) = 1 Then
do2.Visible = False
vang2.Visible = True
xanh2.Visible = False
do1.Visible = False
xanh1.Visible = False
vang1.Visible = True
Else
do2.Visible = False
vang2.Visible = False
xanh2.Visible = False
do1.Visible = False
xanh1.Visible = False
vang1.Visible = False
End If
End Sub