吉孟蘭, 何俊強(qiáng)
(1.礦山采掘裝備及智能制造國(guó)家重點(diǎn)實(shí)驗(yàn)室;2.太原重工股份有限公司技術(shù)中心, 山西 太原 030024;3.太原科技大學(xué), 山西 太原 030024)
太原重工股份有限公司的WK系列礦用挖掘機(jī)從最初的發(fā)電機(jī)—電動(dòng)機(jī)系統(tǒng),已經(jīng)發(fā)展到如今第三代的變頻電控系統(tǒng),其控制核心是西門子S7-300 PLC,具有極高的可靠性和自診斷功能,通過信息化手段采集到監(jiān)控系統(tǒng)后,能夠連續(xù)智能的檢測(cè)系統(tǒng)是否有故障并記錄系統(tǒng)運(yùn)行中的錯(cuò)誤,應(yīng)用于礦用挖掘機(jī)后已經(jīng)發(fā)揮出極大的優(yōu)勢(shì)。下面將介紹PLC如何與上位機(jī)結(jié)合使用,并通過VC++6.0對(duì)軟件系統(tǒng)進(jìn)行開發(fā),從而滿足對(duì)大型礦用挖掘機(jī)各類信號(hào)的實(shí)時(shí)監(jiān)控,提高設(shè)備的整體性能。
通過建立一工程師站將PLC與PC之間通過通訊接口連接起來,用PC作為上位機(jī),通過對(duì)PLC數(shù)據(jù)存儲(chǔ)器中的IO點(diǎn)以及數(shù)據(jù)塊等區(qū)域的讀取與寫入,將PLC采集的各類狀態(tài)信息及時(shí)反饋給維護(hù)人員,從而實(shí)現(xiàn)控制系統(tǒng)的監(jiān)控,使PLC及PC機(jī)二者優(yōu)勢(shì)互補(bǔ),充分利用PLC強(qiáng)大控制性能以及PC強(qiáng)大的友好界面組成一個(gè)功能強(qiáng)大、可靠性高、成本低的控制監(jiān)測(cè)系統(tǒng),最大限度地合理利用資源。
Prodave 6.0是西門子為用戶提供對(duì)S7-300進(jìn)行數(shù)據(jù)通訊的動(dòng)態(tài)鏈接庫,此鏈接庫為西門子專門為用戶進(jìn)行上位機(jī)軟件二次開發(fā)而設(shè)計(jì)[1]。Prodave 6.0是基于MPI通訊協(xié)議的軟件包,利用此軟件包能夠方便地實(shí)現(xiàn)上位機(jī)(PC)與PLC之間的數(shù)據(jù)通信,且其通訊速度滿足一般監(jiān)控要求。
Prodave軟件包中提供了大量基于Windows的函數(shù),方便在上位機(jī)中進(jìn)行軟件開發(fā),支持MPI協(xié)議,能夠解決PLC與PC之間的數(shù)據(jù)交換和數(shù)據(jù)處理。設(shè)計(jì)基于Prodave的上位機(jī)監(jiān)控軟件具有如下的特點(diǎn)[2]:
1)使用簡(jiǎn)單方便。調(diào)試、編程開發(fā)人員不需要熟悉極其復(fù)雜的通信協(xié)議,只需通過簡(jiǎn)單調(diào)用Prodave提供的動(dòng)態(tài)鏈接庫(DLL)中的內(nèi)置函數(shù)即可實(shí)現(xiàn)軟件開發(fā)。
2)用戶不用編寫PLC側(cè)的通信程序,在上位機(jī)中只需通信函數(shù)便可直接讀寫PLC中的數(shù)據(jù),極大的提高了開發(fā)效率。
通訊系統(tǒng)的設(shè)計(jì)包括軟硬件兩部分。
1.2.1 系統(tǒng)的硬件設(shè)計(jì)
PLC與上位機(jī)之間的通訊需要MPI適配器(PC Adaper)或者通訊板卡進(jìn)行硬線連接。采用MPI適配器連接需要占用PLC的MPI通信接口,在實(shí)際應(yīng)用中可以選擇使用通訊板卡代替MPI適配器以節(jié)省MPI接口,從而使得系統(tǒng)更加簡(jiǎn)潔。注意在PLC硬件組態(tài)中,通訊速率的設(shè)置速率需要進(jìn)行預(yù)估然后進(jìn)行設(shè)置。上位機(jī)的PC/PG接口設(shè)置為“PC Adapter(MPI)”。
1.2.2 VC++常用庫函數(shù)調(diào)用及調(diào)用DLL的方法
該軟件的開發(fā)是基于VC++6.0開發(fā)環(huán)境,采用該編程軟件加載Prodave中的動(dòng)態(tài)鏈接庫一般有兩種方式:顯式鏈接方式和隱式鏈接[3]方式。其中隱式鏈接方式實(shí)現(xiàn)起來比較簡(jiǎn)單,是較常用的方式,本軟件也是基于隱式鏈接進(jìn)行設(shè)計(jì)。隱式鏈接方式是指在編寫代碼時(shí)事先要作好鏈接工作,然后在程序運(yùn)行中就能夠隨時(shí)調(diào)用DLL導(dǎo)出的函數(shù),其具體軟件開發(fā)步驟如下:
1)安裝Prodave軟件包,并在Prodave的安裝目錄下找到下面三個(gè)文件:Prodave6.dll、Prodave6.h和Prodave6.lib。
2)將Prodave6.dll拷貝到自己所建立目標(biāo)工程的Debug目錄。
3)將Prodave6.h和Prodave6.lib拷貝到自己所建立目標(biāo)工程目錄下,使得其與目標(biāo)工程軟件同目錄。
4)在自己所建立目標(biāo)工程程序中,選擇Project/Settings下拉菜單,點(diǎn)選link選項(xiàng)卡,在Object/library modules選項(xiàng)的編輯框中輸入Prodave6.Lib。
5)在自己所建立目標(biāo)工程頭文件Head Files中添加Prodave6.h文件。
6)最后在自己所建立目標(biāo)工程源程序.cpp(此時(shí)需要調(diào)用DLL中庫函數(shù)的程序)中加入引導(dǎo)語句#include"Prodave6.h"來聲明包含Prodave6的頭文件。
常用的VC++調(diào)用Prodave函數(shù)庫包括以下一些基本函數(shù):能與PLC建立通訊連接的初始化函數(shù)load_tool(),激活通訊連接函數(shù)new_ss(),以及斷開連接函數(shù)unload_tool()。
實(shí)際使用中,在調(diào)用其它函數(shù)前首先需要調(diào)用load_tool(),它的主要作用是初始化適配器,并檢查是否已經(jīng)加載驅(qū)動(dòng),再初始化連接地址和激活選定界面。下面就軟件編寫過程中常用基本函數(shù)的功能及用法做簡(jiǎn)要介紹:
load_tool():檢查通信、對(duì)通信參數(shù)進(jìn)行初始化、激活連接。其中所含參數(shù)依次為要激活的連接數(shù)、用戶驅(qū)動(dòng)設(shè)備的名稱(對(duì)于本文中MPI驅(qū)動(dòng)器為“S7ONLINE”),以及連接的地址列表。
unload_tool():用來斷開上位機(jī)和PLC的連接。
db_read(int,int,int*,void*);//用來讀取 PLC 中的數(shù)據(jù)。所含參數(shù)分別代表:要讀取的數(shù)據(jù)塊號(hào)、要讀取的起始字節(jié)數(shù)、要讀取的字節(jié)個(gè)數(shù),以及要讀取的數(shù)據(jù)在PC中的存儲(chǔ)區(qū)。
db_write(int,int,int*,void*);//用來向 PLC 寫入數(shù)據(jù)。所含參數(shù)分別代表:要寫入的數(shù)據(jù)塊號(hào)、要寫入的起始字節(jié)位置、要寫入字節(jié)的個(gè)數(shù),以及要寫入的數(shù)在PC中的存儲(chǔ)區(qū)。
d_field_read(int,int,int,void*);//的字節(jié)個(gè)數(shù),以及要讀取的數(shù)據(jù)在PC中的存儲(chǔ)區(qū)。
db_write (int,int,int*,void*);//用 來 讀 取 PLC某一存儲(chǔ)區(qū)的數(shù)據(jù)。
d_field_write(int,int,int,void*);//的字節(jié)個(gè)數(shù),以及要讀取的數(shù)據(jù)在PC中的存儲(chǔ)區(qū)。
db_write(int,int,int*,void *);//用來向 PLC 某一存儲(chǔ)區(qū)寫入數(shù)據(jù)。
1.2.3 基于Prodave的監(jiān)控軟件設(shè)計(jì)
在軟件設(shè)計(jì)過程中,要充分考慮軟件應(yīng)實(shí)現(xiàn)的功能效果以及PC機(jī)友好的人機(jī)界面,將人機(jī)界面以及功能融為一體是軟件設(shè)計(jì)的目標(biāo)。具體步驟基于前面的章節(jié)進(jìn)行:
在Microsoft Virtual C++6.0編程環(huán)境下,首先要建立上位機(jī)與PLC系統(tǒng)的通訊連接并顯示通訊結(jié)果,采用load_tool()和unload_tool()函數(shù)來實(shí)現(xiàn)。如果通訊失敗還需要提供故障號(hào)以便監(jiān)控人員進(jìn)行簡(jiǎn)單初步的診斷。然后要實(shí)現(xiàn)PLC數(shù)據(jù)的讀取,此部分為關(guān)鍵部分也是軟件的核心。多次調(diào)用db_read(int,int,int*,void*)、d_field_read (int,int,int,void*)等函數(shù)對(duì)數(shù)據(jù)塊以及IO進(jìn)行讀取,此步需要經(jīng)過反復(fù)調(diào)試才能最終運(yùn)行。由于通訊數(shù)據(jù)量較大,在設(shè)計(jì)中必須選擇合理的通訊速率,使得既要保證數(shù)據(jù)量能夠及時(shí)的上傳到上位機(jī),又要減少錯(cuò)誤數(shù)據(jù)包以提高通訊質(zhì)量。本軟件采集的數(shù)據(jù)總量約為2 kB,上位機(jī)的數(shù)據(jù)刷新周期為5 s,綜合比較下最終選擇的通訊速率為187.5 kbit/s。
在VC++6.0編程環(huán)境下,設(shè)計(jì)了基于Prodave的監(jiān)控軟件測(cè)試版本。進(jìn)入軟件后,點(diǎn)擊加載按鈕,軟件能夠在10 s內(nèi)與PLC建立通信連接。通信成功后便可讀取PLC的數(shù)據(jù)塊以及IO狀態(tài);如果出現(xiàn)通信故障,狀態(tài)區(qū)會(huì)顯示相應(yīng)的故障信息。數(shù)據(jù)區(qū)可以對(duì)PLC的數(shù)據(jù)進(jìn)行讀取,保存按鈕可以將加載的數(shù)據(jù)保存到指定位置。整個(gè)系統(tǒng)的通信速率大約為100 kbit/s,數(shù)據(jù)的刷新周期設(shè)置為5 s,最高刷新周期能達(dá)到1 s,很好的滿足了監(jiān)控?cái)?shù)據(jù)的要求。
最終實(shí)驗(yàn)結(jié)果表明,測(cè)試軟件能夠很好的完成通訊任務(wù),滿足挖掘機(jī)數(shù)據(jù)監(jiān)控的要求。將開發(fā)的軟件應(yīng)用于WK系列礦用挖掘機(jī)監(jiān)控系統(tǒng)后,設(shè)備維護(hù)人員能夠?qū)ΦV用挖掘機(jī)進(jìn)行實(shí)時(shí)監(jiān)控,掌握機(jī)械設(shè)備的最新運(yùn)行狀態(tài),從而及時(shí)了解機(jī)械設(shè)備的健康狀態(tài),對(duì)設(shè)備進(jìn)行合理的檢修維護(hù),降低設(shè)備故障造成的停機(jī)甚至損失。