時間:2012-12-31 來源:合肥網hfw.cc 作者:hfw.cc 我要糾錯
摘要本文先容了VB 進行一個串口通信地各種基礎方法和3菱可編程控制器之間地通信地程序設計,重中之重介紹了利用MSCOMM.OCX開展串行通信地設計辦法。關鍵詞串行通訊, PLC, Visual Basic 6.0 Abstract: Describes all kinds of basic serial port communication methods using Visual Basic 6.0 and design of free port communication program of MITSUBISH PLC, furthermore set focus on the designing method of serial port communication through dynamic linked library in Visual Basic 6.0 Key Words: Serial port communication, PLC, Visual Basic 6.0 1、引言 在產業生產中,人們經常面臨著數據采集與治理。視為工廠自動化地3大支柱可編程控制器PLC(Programmable Logic Controller),因為這個保險牢靠,普遍地用于數據采集與控制。生產過程中,要監督PLC內部地數據與運行狀態,選用市場上地人機界面或組態軟件,固然功能豐盛,但大都價錢昂貴,在一部分中小范圍地出產場所,人們盼望能本人用高等語言開發1個簡易適用地通信程序。微軟企業推出地Visual Basic 6.0,開發串行通信程序時,有兩種方式,1種是用Windows API函數,另1種是用VB支撐地通信控件MSCOMM.OCX。應用Windows API函數是通過調用讀寫等函數來操作串口。兩種比擬,應用MSCOMM.OCX控件編程便利,存在更完美地發送跟接受功效。這里采取了MSCOMM.OCX控件。本文依據杭州某包裝資料企業原料配料掌握系統為背景,簡述實現計算機與3菱FX系列PLC通信地實現進程。 2、硬件與選型日本3菱企業是國際有名地工廠主動化裝備制作商,工業可編程節制器在海內市場占領率始終堅持前列。名目選用3菱FX2N-64MR型PLC,SC-09電纜當作計算機與PLC通信地連線。連接電纜地9針端銜接在計算機串口上,另1端連接在PLC地RS-422編程口。 3、軟件編程 軟件設計重要包含PLC梯形圖設計和計算機VB程序、數據庫設計。盤算機操作體系為Windows98,編程語言用Visual Basic 6.0,數據庫選用Access97,梯形圖程序在3菱PLC編程軟件GPPWIN 軟件環境設計。上位機軟件實現計算機對于PLC內部數據讀取、寫入參數和保留數據到數據庫。 3菱FX2N型PLC編程口通信協定像下
命令 命令字 把持元件 備注 讀元件 0 X,Y,M,S,T,C,D 讀字/位元件狀態 寫元件 1 X,Y,M,S,T,C,D 寫字/位元件狀況 置位 7 X,Y,M,S,T,C 位元件置位 復位 8 X,Y,M,S,T,C 位元件復位
通信格局
起始符 命令字 首地址 數據區 結束符 和校驗
波特率9600,偶校驗,8位數據位,1位結束位。 在新建工程地表單上增加MSCOMM.OCX控件,初始化程序 Private Sub Form_Load() MSComm1.CommPort = 1 '抉擇COM1口 MSComm1.Settings = "9600,e,7,1" End Sub 系統參數主畫面像下圖所示 圖2 數據讀取子程序 Public Function GetData(ByVal StartAddress As String, ByVal GetBytes As Integer, ByVal Hex_Bytes As String) As String MSComm1.InputLen = GetBytes * 2 + 4 MSComm1.Output = STX + CMD_Read + StartAddress + Hex_Bytes + ETX + GetSumChk(CMD_Read + StartAddress + Hex_Bytes + ETX) ‘傳遞數據組成起始符+命令+首地址+數據位+停止符+和測驗碼 GetData = MSComm1.Input MSComm1.InBufferCount = 0 MSComm1.InputLen = 0 End Function 類似這樣需讀取數據,通過調用GetData子程序。 參數設置程序可參考讀取子程序,只是轉變命令罷了。 Access97數據庫中包括3個表單,包括參數表、記錄表、報警記載表。通過類似這樣下子程序是將實際稱量值(記載表)更新到數據庫 Private Sub SaveData() Dim i As Integer Dim valid As Boolean On Error Resume Next valid = True Data1,三菱伺服電機.Recordset.AddNew Data1.Recordset.Fields("dtime") = TimeSerial(OnHour, OnMinute, OnSecond) Data1.Recordset.Fields("systime") = Time ‘系統時光 Data1.Recordset,三菱PLC.Fields("get_xl") = LF(1) ‘小料當前稱量值 Data1.Recordset.Fields("get_fjs") = LF(2) ‘方解石當前稱量值 Data1,三菱伺服驅動器.Recordset.Fields("get_cs") = LF(3) ‘長石當前稱量值 Data1.Recordset.Fields("get_sys") = LF(4) ‘石英砂當前稱量值 Data1.Recordset.Fields("get_cj") = LF(5) ‘純堿當前稱量值 On Error Resume Next Data1.Recordset.Update ‘更新數據庫記錄 Data1.Recordset.MovePrevious End Sub 程序中,LF(i)變量對于應為圖2系統參數表單中實稱值,三菱。保存參數子程序只是對于數據庫操作,程序構造可參考以上子程序。上位機與PLC通信品質地好壞,對于系統地平安可靠運行影響極大,因而,編寫程序時,除了在兩者之間地通信協議上保持相對1致和采用相應地容錯技術外,還要斟酌系統地整體容錯技術,避免系統地不畸形。 4、結束語 串行通信是現在計算機與其余設備之間通信廣泛采用地方式其一,傳送數據正確,程序穩固運行是系統開發地主要目標。本設計中充足利用計算機和PLC地資源,在簡直不增添設備開銷地情形下勝利地實現上位機與PLC之間地通信。 參考文獻 1、美國 ·Microsoft Visal Basic 6.0 Controls reference 控件參考手冊 2、舒繼武·Visual Basic 中通信及應用·微型機與利用,1996; 3、陳小歐·Windows環境下串口異步通信程序設計·電子技巧運用
本文章由:http://www.lk30*** 整理發布!