在某試驗(yàn)臺(tái)的開(kāi)發(fā)研制過(guò)程中,為了實(shí)現(xiàn)遠(yuǎn)程計(jì)算機(jī)控制,系統(tǒng)采用上。下位機(jī)分級(jí)控制方案。上位機(jī)采用臺(tái)灣研華公司的工控機(jī),下位機(jī)采用德國(guó)西門(mén)子公司的s7-300plc可編程控制器,中央處理單元為cpu312ifm.上位機(jī)主要完成監(jiān)視控制設(shè)備的狀態(tài)。實(shí)時(shí)地修改下位機(jī)的控制參數(shù),對(duì)故障進(jìn)行報(bào)警并作歷史紀(jì)錄。
下位機(jī)則負(fù)責(zé)現(xiàn)場(chǎng)控制和現(xiàn)場(chǎng)數(shù)據(jù)采集,plc帶有數(shù)字i/o和模擬i/o專用模塊1用來(lái)下傳和接收數(shù)字以及模擬信號(hào)。下傳信號(hào)用來(lái)控制工業(yè)現(xiàn)場(chǎng)的各被控對(duì)象,而通過(guò)傳感器從現(xiàn)場(chǎng)采集的信號(hào)再反饋到plc中。整個(gè)閉環(huán)控制的實(shí)現(xiàn)依賴于plc與上位機(jī)之間準(zhǔn)確。及時(shí)的數(shù)據(jù)通信。在s7-300plc控制系統(tǒng)中可用以下兩種通信方式:以專用的siemenss7-300通信接口模塊cp342-5dp作為聯(lián)系上位機(jī)和plc的橋梁組成profibus網(wǎng)絡(luò),往往使用在節(jié)點(diǎn)較多的系統(tǒng)中;通過(guò)多點(diǎn)接口(mpi)組成mpi網(wǎng)絡(luò),通常組成小型網(wǎng)絡(luò)。由于本系統(tǒng)節(jié)點(diǎn)較少,所以采用mpi網(wǎng)絡(luò)形式,mpi采用全局?jǐn)?shù)據(jù)通信模式,可在plc和工控機(jī)之間進(jìn)行數(shù)據(jù)交換。它不需要額外的硬件和軟件,不但成本低,而且用法簡(jiǎn)便,因此本系統(tǒng)采用mpi接口實(shí)現(xiàn)plc與工控機(jī)之間的通信。
2plc與工控機(jī)之間的通信軟硬件關(guān)系bookmark3用于連接plc中央處理單元的接口稱為多點(diǎn)接口(mpi),因?yàn)槎鄠€(gè)設(shè)備能通過(guò)此接口訪問(wèn)cpu,所以帶多點(diǎn)接口的cpu不需要附加模塊就能網(wǎng)絡(luò)化。系統(tǒng)中的每一個(gè)mpi節(jié)點(diǎn)都應(yīng)有不同地址,以便它們能與網(wǎng)絡(luò)中其他節(jié)點(diǎn)相互通信,同時(shí)每個(gè)節(jié)點(diǎn)都應(yīng)提供最高地址。表1給出了mpi子網(wǎng)中能接入的節(jié)點(diǎn),表2給出各節(jié)點(diǎn)缺省的mpi地址。
系統(tǒng)硬件包括工控機(jī)。plc.cp5611通信卡以及一條通信編程電纜。軟件包括利用vc++6.0編制的控制系統(tǒng)程序。西門(mén)子prdave軟件包以及plc的語(yǔ)句表程序。是本系統(tǒng)中工控機(jī)與plc進(jìn)行通信的軟硬件結(jié)構(gòu)示意圖。
操作員面板表2節(jié)點(diǎn)缺省的mpi地址bookmark4節(jié)點(diǎn)(設(shè)備)編程器(pg/工控機(jī))缺省的mpi地址缺省的最高mp1地址硬件中cp5611mpi通信卡插在工控機(jī)的pci槽內(nèi),通信編程電纜將cp5611和plc的mpi相連接,這樣就構(gòu)成了一個(gè)基本的mpi網(wǎng)絡(luò)。軟件中plc語(yǔ)句表程序與vc++程序之間通過(guò)prodave提供的動(dòng)態(tài)連接庫(kù)(dll)進(jìn)行通信cp5611模塊是一塊熱插拔(pnp)網(wǎng)卡,為s7-300plc與工控機(jī)的通信提供服務(wù)??砂惭b在32bit的pci總線接口上。通過(guò)cp5611模塊編程器(pg)和工控機(jī)可以與s7-300plc相聯(lián)。根據(jù)網(wǎng)絡(luò)配置在mpi網(wǎng)絡(luò)中可實(shí)現(xiàn)9.6kbps或1.5mbps的傳輸率。
plc帶有西門(mén)子公司的數(shù)字1/0和模擬i/o模塊。sm321為數(shù)字量輸入模塊,可以將現(xiàn)場(chǎng)過(guò)程送來(lái)的數(shù)字信號(hào)電平轉(zhuǎn)換成s7-300內(nèi)部信號(hào)電平。sm332數(shù)字量輸出模塊將s7-300內(nèi)部信號(hào)電平轉(zhuǎn)換成過(guò)程所要求的外部信號(hào)電平,可直接用于驅(qū)動(dòng)電磁閥。接觸器。小型電動(dòng)機(jī)。燈和電動(dòng)機(jī)啟動(dòng)器等。本系統(tǒng)采用8x12位模擬量輸入模塊sm331,該模塊有8個(gè)輸入通道。模擬輸出模塊采用4x12位的sm332,該模塊帶有4個(gè)輸出通道。
列的cpu和操作員面板0p以及工控機(jī)。圖中各網(wǎng)絡(luò)節(jié)點(diǎn)下方的數(shù)字是對(duì)應(yīng)節(jié)點(diǎn)的mpi地址。利用西門(mén)子step7組態(tài)軟件包中configuration功能兒ine2003產(chǎn)品應(yīng)用可為每個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)設(shè)定其mpi地址和最高地址。
當(dāng)工控機(jī)與某節(jié)點(diǎn)通信時(shí),首先要利用入口設(shè)定函數(shù)寫(xiě)入其mpi地址,然后才能進(jìn)行數(shù)據(jù)交互。
3工控機(jī)與plc通信流程分析控制平臺(tái)以bbbbbbs98作為其操作系統(tǒng),開(kāi)發(fā)語(yǔ)言采用visualc++.vc++不僅僅是c++語(yǔ)言的集成開(kāi)發(fā)環(huán)境,而且與win32緊密相連,其功能非常強(qiáng)大,幾乎包括了bbbbbbs應(yīng)用的各個(gè)方面本試驗(yàn)臺(tái)控制系統(tǒng)軟件采用vc++6.0版本編制而成。該應(yīng)用程序承擔(dān)以下的任務(wù):從plc指定的存儲(chǔ)區(qū)讀取數(shù)據(jù)經(jīng)過(guò)轉(zhuǎn)換顯示在計(jì)算機(jī)上:把需要設(shè)定的參數(shù)寫(xiě)入plc特定的存儲(chǔ)區(qū)中;實(shí)現(xiàn)閉環(huán)控制算法;把從plc中讀出的數(shù)據(jù)繪制成曲線和圖表并實(shí)現(xiàn)打印功能;實(shí)現(xiàn)數(shù)據(jù)入庫(kù)與檢索。其中最基本也是最重要的任務(wù)就是完成plc與工控機(jī)之間的數(shù)據(jù)傳輸是建立通信的流程。
西門(mén)子提供的軟件包prodaves7中包含有用來(lái)建立通信的動(dòng)態(tài)連接庫(kù)(dll)文件和庫(kù)文件(lib)(見(jiàn)表3),這些文件可以為用戶提供可靠的工具函數(shù)。
在安裝西門(mén)子plc組態(tài)軟件sttep7時(shí),系統(tǒng)會(huì)自動(dòng)把動(dòng)態(tài)連接庫(kù)文件拷貝到bbbbbbs系統(tǒng)目錄system和system32下,只要確保w95s7.dll.komfort.dll在系統(tǒng)目錄下,這兩個(gè)文件就可工作。要使vc++程序與plc程序之間通信,還要把上表中的頭文件和庫(kù)文件添加到vc++應(yīng)用程序的頭文件夾中。下面的工作就是在vc++中編程實(shí)現(xiàn)通信。
入口設(shè)定。首先為連接提供地址表,其形式如下:其中一維數(shù)組中是地址表結(jié)束標(biāo)志,其余元素代表了對(duì)應(yīng)plc的入口地址。各元素四位數(shù)字分別表示站。段、槽。架的位置號(hào)。
如上所示丨2,0,2,0中第一位表示s7-300cpu的mpi地址,與缺省的相同;第二位表示只有一個(gè)mpi網(wǎng)段,沒(méi)有rs485中繼器;第三位表示s7- 300cpu位于當(dāng)前架的第二槽;最后一位表示當(dāng)前plc位于第0號(hào)架。有了以上的地址表,程序就可以找到對(duì)應(yīng)的目標(biāo)進(jìn)行通信。
利用以下loadool函數(shù)初始化適配器,這里的適配器是指cp5611通信卡。該函數(shù)原型為:其中第一個(gè)參數(shù)指明建立連接的節(jié)點(diǎn)個(gè)數(shù)第二個(gè)參數(shù)是mpi適配卡驅(qū)動(dòng)名稱,mpi驅(qū)動(dòng)為"s70nline"或0;第三個(gè)參數(shù)指明地址表入口。
以上面提供的地址表為例,該函數(shù)應(yīng)為:在進(jìn)行數(shù)據(jù)交換之前函數(shù)newss啟動(dòng)各個(gè)節(jié)點(diǎn)與工控機(jī)之間的連接。
假設(shè)啟動(dòng)第二個(gè)連接則應(yīng)用函數(shù)newss(2),以上面的地址表為例,因?yàn)橹挥幸粋€(gè)plc要和工控機(jī)相連,所以啟動(dòng)函數(shù)為newss(l)。
利用各個(gè)函數(shù)進(jìn)行通信,表4給出了各個(gè)通信函數(shù),及對(duì)應(yīng)的plc中被讀寫(xiě)的存儲(chǔ)單元。
表4通信函數(shù)表函數(shù):被讀/寫(xiě)的plc單元plc存儲(chǔ)區(qū)縮寫(xiě)說(shuō)明afleldread輸出過(guò)程暫存區(qū)q讀出afieidwrite輸出過(guò)程皙存區(qū)qv::::寫(xiě)入efleldread輸入過(guò)程暫存區(qū)1讀出dleldread數(shù)據(jù)炔dbx、dix讀出dfieldwrite數(shù)據(jù)塊d巳x、dix寫(xiě)入mfieidread位存區(qū)m讀出mieid―writeo位存儲(chǔ)區(qū)m寫(xiě)入tfieldreacl.定時(shí)器t卜讀出z一f丨eld「ead計(jì)數(shù)器c讀出fleldwrite計(jì)數(shù)器c:寫(xiě)入mixread混合數(shù)據(jù)的讀出mix,wr1te::混臺(tái)數(shù)據(jù)的寫(xiě)入表4中的各個(gè)函數(shù)可以實(shí)現(xiàn)工控機(jī)中應(yīng)用程序與plc各種存儲(chǔ)單元的通信。
下面給出系統(tǒng)的一小段plc程序,其邏輯意在系統(tǒng)控制界面上為m5.3、m5.4、m7.7賦化適配器‘










