VB監控PLC(單點)
使用Microsoft Comm control 6.0元件,依三菱PLC的通訊格式,控制X輸入接點及監視Y接點
注意!寫程式前一定要將各元件都設定好再開始寫程式!
表單的配置
點圖可以放大
程式碼解說
Dim set_X0 As String '全域變數
Dim set_X1 As String
Dim read_Y As String
------------------------------------------------------
Private Sub Command1_Click() '將X0強制為ON
MSComm1.PortOpen = True
MSComm1.Output = set_X0
MSComm1.PortOpen = False
End Sub
------------------------------------------------------
Private Sub Command2_Click() '將X1強制為ON
MSComm1.PortOpen = True
MSComm1.Output = set_X1
MSComm1.PortOpen = False
End Sub
------------------------------------------------------
Private Sub Command3_Click() '程式結束
End
End Sub
------------------------------------------------------
Private Sub Form_Load() '啟動計時器
Timer1.Enabled = True
End Sub
------------------------------------------------------
Private Sub Form_Activate() '程式啟動時,即形成命令字串
set_X0 = Chr(2) + "70004" + Chr(3) + checksum("70004")
set_X1 = Chr(2) + "70104" + Chr(3) + checksum("70104")
read_Y = Chr(2) + "000A001" + Chr(3) + checksum("000A001")
End Sub
------------------------------------------------------
Private Sub Timer1_Timer() '每250ms讀取Y0的值
Dim strtmp As String 'PLC回應的字串暂存器
On Error Resume Next '程式發生錯誤時,繼續執行下一敘述
MSComm1.PortOpen = True '開啟通訊埠
MSComm1.Output = read_Y '送出讀取Y0~Y7之命令字串
Do While Len(strtmp) < 6 '假如PLC回應字串長度小於6就表示PLC還未完成回應
strtmp = strtmp + MSComm1.Input
Loop
Text2.Text = strtmp '顯示完整的回應字串
strtmp = Mid$(strtmp, 2, 2) '將回應字串由左向右數2個字元開始向右取2個字元
Text1.Text = strtmp '顯示strtmp(已取出Y的部份)
n = Val("&H" + strtmp) And 1 '將回應的Y字串轉成16進位之後保留最低位元
Select Case n '判斷n來做回應
Case 1
Shape1.FillColor = vbRed
Label4.Caption = "啟動"
Case 0
Shape1.FillColor = vbGreen
Label4.Caption = "停止"
End Select
MSComm1.PortOpen = False '關閉通訊埠
End Sub