用VB遠程控制可編程控制器
|
| Visual Basic關鍵字導航 |
| 報表 HTTP 控件 界面 多媒體 數據庫 網絡 API 文件 硬件 圖像 游戲 XML FSO模型 門禁 COM MTS 優化 |
摘要:本文介紹利用VB遠程控制三菱A系列可編程控制器的運行,主要包括可編程控制器的設置、可編程控制器控制命令以及VB應用程序,并給出了系統的實現方法與示例程序。
關鍵詞:三菱PC,串行通信,Visual Basic 6.0。
1. 引言
可編程控制器(Programmable Controller,簡稱PC)是一種數字運算操作的電子設備。它使用了可編程序的存儲器,用來在其內部存儲執行邏輯運算、順序控制、定時、計數和算術運算等操作指令,通過數字或模擬輸入/輸出組件控制各種類型的機械或生產過程。PC具有功能齊全、應用靈活、操作維修容易方便和穩定可靠等特點,因此廣泛用于工業現場控制。其典型應用方案是:采用PC作為下位機實現過程的自動控制,以微機為上位機,完成工業流程和工藝參數的顯示以及控制參數的修改等功能。但是在一些危險和惡劣環境下,需要用微機遠程控制PC系統的運行和停止。本文結合作者所開發的危險環境下控制系統,以三菱A2A 可編程控制器為例介紹VB遠程控制三菱A系列可編程控制器的運行,并給出系統實現方法與示例程序。
2. 系統設置與協議
為進行系統控制需進行硬件和軟件設置,這部分內容是系統實現的關鍵。系統利用RS232通訊接口線將PC(利用AJ71UC24通訊模塊,25針)與微機的串行通信口(COM1,9針)進行連接。
2.1AJ71UC24的通信控制協議
PC的通訊模式(mode)開關設置為1。以下是Melsec-A PC 格式1通信協議的格式:

其中:RR為控制PC啟動命令,RS為控制PC停止命令。
AJ71UC24通信模塊所使用的主要控制字以及含義

2.2 AJ71UC24設置:
AJ71UC24的通訊參數設置均通過其DIP開關設置,本例的參數設置如下:波特率:9600,數據位:8,停止位:1,有求和效驗,可以進行在線寫。DIP開關設置如下表:
| 開關 | 設置 | 開關 | 設置 | 開關 | 設置 | 開關 | 設置 | 開關 | 設置 | 開關 | 設置 |
| SW11 | OFF | SW12 | ON | SW13 | ON | SW14 | OFF | SW15 | ON | SW16 | ON |
| SW17 | OFF | SW18 | OFF | SW21 | ON | SW22 | ON | SW23 | ON | SW24 | OFF |
2.3 PC的運行開關設置
若實現利用VB程序進行PC控制,必須將PC的運行開關設置在ON的位置。運行開關設置與對應的控制結果如下表:

2.4 VB通信功能設計與實現
VB通過MSCOMM控件控制串行口,該控件屏蔽了通訊過程中的底層操作程序,用戶只需設置和監視控件的屬性和事件,就可很方便地實現串行異步通訊,它有事件驅動通信和查詢通信兩種方式,通過檢查InBufferCount屬性值來判斷輸入緩沖區中是否接受到相應數目的字符,為實現所述通信,應在窗體中加入一個通訊控件MSComm,控件的參數設置要與上述PC通訊模塊AJ71UC24的設置相同。控制命令的傳輸采用即時傳送方法。
3. 軟件編程與實現
監控微機主要供系統管理人員對PC進行系統運行的控制。下面主要列出微機對PC進行控制有關的程序。本例是以單個PC為例,PC站號為00H,PC號為FFH。:
該功能的實現必須將PC運行開關扳到RUN位置。通過在Form中加入兩個option按鈕實現:第一選項為啟動,命令為"RR";第二選項為停止,命令為"RS"。
| Private Sub Option1_Click(Index As Integer) Dim An_Msg, Kzh_Cmd ,rd, rdf, temp, temp1 As String Dim i, rdd As Long Select Case Index Case 0 Kzh_Cmd = "RR" '啟動PC系統 Case 1 Kzh_Cmd = "RS" '關閉PC系統 End Select Screen.MousePointer = 11 If MSComm1.PortOpen = False Then MSComm1.PortOpen = True End If MSComm1.InputLen = 0 rd = Chr$(5) + "00FF" + Trim(Kzh_Cmd) + "0" rd=rd + Xy_hj(rd) '其中Xj_hj字符串效驗求和函數 MSComm1.Output = rd Do dummy = DoEvents() Loop Until MSComm1.InBufferCount >= 5 rdf = MSComm1.Input temp = Mid(rdf, 1, 5) If temp<> Chr$(6) + "00FF" Then MsgBox "命令運行失敗!!!", 16 End If Screen.MousePointer = 0 End Sub |