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