一、引言
PLC(可編程序控制器)在工業現場因其編程方便,抗干擾能力強,獲得了廣泛的應用。但受到內部硬件電路的限制,在運算速度、數據處理能力等方面和PC機相比,要遜色很多。因此在工業現場對復雜模型進行控制時,可以借助上位機PC來建立生產模型,通過構建 SCC監督式控制系統,讓下位機PC為一DCC直接數字控制系統,實現復雜系統的控制。另外,還可通過上位機PC和下位機PC組建監控系統,達到對工業現場實時監控的目的。其中關鍵技術為PC機和PC之間的通訊。本文首先介紹PC機與PLC的通訊種類和機制,然后就采用高級語言VB和組態軟件MCGS,對完成以上二者通訊進行介紹、比較。
二、PC機和PLC通訊的種類和機制
(1)硬件配置
本實驗所用PLC型號為OMRON系列CPM1A,屬小型機。在機體上沒有RS232串口,只有一個編程口。在和PC機進行數據傳輸的時候,首先應該在PLC的編程口處接一適配器,實現編程口到RS232口的轉換,CQM1-CIF01電纜可以完成上述功能,電纜的兩端分別與PC機串口1或2及PLC編程口相連。實驗時PC機采用的是486PIII300。具體連接見圖1所示。
圖1 硬件通訊連接
PC機和PLC有兩種通訊方式,一種是PC機作主動者,即主局,PLC為從動者,即子局。另一種是PLC為主局,而PC機為子局。無論工作在哪種方式,數據一般都采用串行方式來傳輸,即可通過RS232、RE422或RS485電纜線來進行信息傳遞。
在進行通訊時,首先將PC機和PLC傳遞信息的波特率設置一致。另外還要對奇偶校驗位、傳輸數據位數和停止位進行設置。
在PC機和PLC進行通訊時,要使用命令幀和響應幀的形式來進行信息傳遞。
(2)幀的發送接收
每次通信送出的一組數據稱作“幀”。幀可以從持有發送權的一方傳出。每送出一幀,上位機或PLC就將發送權交給另一方。當接收方收到終端(命令或響應的終字符)或分界符(分割幀的字符)信息后,就將發送權轉到另一方。
在上位鏈接通信中,開始由上位PC機持有發送權并開始通信。響應由PLC自動返回。如圖2所示:
圖2 幀的發送和響應形式
(3)命令/響應格式
用上位鏈接通信發送接收的命令/響應格式如下所示:
(1) 命令格式 從上位機PC發送命令時,程序中編寫下列格式的命令數據并開始發送。
(2) 相應格式 對應命令PLC的相應返回如下的格式。編寫返回相應數據。
三、通訊的具體實現
實現上位機PC和下位機PLC通訊一般可采用兩種方法:可以通過Windows或高級語言編程,實現二者通訊;還可借助現在普遍使用的工業控制組態軟件。使用前者,編程比較繁瑣,需要了解具體的通訊機制,另外還要掌握某種高級語言,并對所編程序花費一定調試時間,但是軟件的成本得到降低。使用后者則可以迅速掌握簡化的編程語言,在較短的時間內編制出控制功能復雜的程序,而且調試時間也相對較短,但是需花費很高的價格購買正版軟件。下面分別就以上兩種實現方式進行簡要介紹和比較。
(1)通過高級語言的程序編制
這種通訊編程又可大致分為兩種,一種是基于Windows語言編程,它可調用Windows的API函數,直接對串口進行操作,但是需要掌握Windows語言,比較繁瑣,上手較慢。另一種就是基于高級語言,例如Visual Basic或Visual C++等。在Visual Basic中提供了一個串行通訊控件Microsoft Comm Control,簡稱MSComm控件。編程者只需要設置和監視MSComm空間的屬性和事件,然后按照相應的通訊規約就可以實現串行通訊。
下面就筆者利用VB中的MSComm控件完成PC機和PLC的通訊程序編制,簡要進行一下介紹。
1. 首先在VB環境中加入控件MSComm,然后把它放在窗口中,就可以對其一些參數進行設置,比方說通訊的波特率、奇偶校驗位、數據位和停止位。
初始化程序如下:
2. PC機發送數據給PLC
3. PC機接受PLC傳來數據
4. PC機和PLC之間傳遞數據時,采用FCS校驗碼,來保證傳遞信息的正確性。算法可見參考文獻,具體程序在此省略。
(2)通過組態軟件來實現通訊
組態軟件是一個專為工控開發的工具軟件。它為用戶提供了多種通用工具模塊,用戶不需要掌握太多的編程語言技術,就能很好的完成一個復雜工程所要求的幾乎所有功能。MCGS軟件是其中的一種。在此以MCGS為例,來對程序編制進行介紹。軟件系統包括組態環境和運行環境兩個部分。組態環境,用來設計和構造自己的應用系統。運行環境則按照組態環境中構造的組態工程,以用戶指定的方式運行,并進行各種處理,完成用戶組態設計的目標和功能。如圖3所示。
圖3 組臺軟件組成部分
設備窗口是MCGS系統的重要組成部分,負責建立系統與外部硬件設備的連接,根據具體外部硬件,可以在設備窗口配置不同類型的設備構件,這樣使MCGS能從外部設備讀取數據并控制外部設備的工作狀態。
MCGS的這種結構形式使其成為一個與設備無關的系統,對于不同的硬件設備,只需定制相應的設備構件,放置到設備窗口中,并設置相關的屬性,系統就可對這一設備進行操作。
在建立對PLC設備的通信連接時,首先單擊“設備窗口”選項卡,進入“設備窗口”頁,雙擊“設備窗口”,進入“設備組態”,選中“串口通訊父設備”,單擊“增加”,然后雙擊“PLC設備”,在其下拉菜單中選中 “歐姆龍”,型號:Omron-HostLink。單擊“增加”,“Omron-HostLink”被增加到了右側方框中。如圖4。
圖4 設備管理窗口
最后雙擊“串口通訊父設備”,在彈出的窗口中進行下列參數的設置:
最小采樣周期(ms):1
串口端口號:1-COM2
通訊波特率:6―9600
數據校驗方式:偶校驗
數據位位數:2-7
停止位位數:1
以上基本設置完成后,就可以將監控程序和外部PLC的變量建立起聯系,從而在上位機運行的監控程序中反映出下位機的運行狀況,也可以把上位監控中的一些工作參數傳輸到下位機PLC。
四、總結
作者通過兩種方法都實現了計算機和PLC之間的通訊,從兩種通訊實現方法來看,使用組態軟件可以不必了解具體的通訊過程,調用相應的驅動程序即可。如果采用高級語言,則需要了解確切的通訊機制,還要熟練的掌握一種高級語言。因此在組建大型工程的監控系統時,常常會使用成熟的組態軟件,從而大大縮短軟件開發的周期。任何事物都一分為二,使用組態軟件固然省事,但需要支付軟件的高昂費用,并且軟件的二次開發受到一定限制。如采用高級語言編程,則能夠節約成本,并根據需要隨時對程序進行升級,但需要自己完成程序編制和花費一定調試時間。