基于多點(diǎn)網(wǎng)絡(luò)的水廠自動(dòng)監(jiān)控系統(tǒng)設(shè)計(jì)Design of MPI Based Automatic Monitoring and Control System in Water Works劉 美 俊(湖南工程學(xué)院,湘潭411101)摘要針對(duì)水廠工作水泵多、現(xiàn)場(chǎng)離控制站距離遠(yuǎn)的特點(diǎn),提出了一種基于MPI多點(diǎn)網(wǎng)絡(luò)的自動(dòng)監(jiān)控系統(tǒng)的設(shè)計(jì)方法,分析了系統(tǒng)的工作原理,介紹了系統(tǒng)中數(shù)據(jù)的采集與處理、主站與從站的通信原理以及系統(tǒng)軟件的設(shè)計(jì)。由于這種系統(tǒng)的主、從站PLC之間采用MPI網(wǎng)絡(luò)通信,具有運(yùn)行可靠、性能價(jià)格比高的特點(diǎn),所以適用于中小規(guī)模水廠的分布式監(jiān)控場(chǎng)合。關(guān)鍵詞多點(diǎn)網(wǎng)絡(luò)主站從站監(jiān)控系統(tǒng)Abstract Ina ccordancew ithth efe atuersof w aterw orks,i. e. ,manyp umpsin o perationa ndth ep umps, farfor mt hec ontrolst ation,th em ethodo fdesigninga na utomati(〕monitoringa ndc ontorlsy stemb asedo nM PIis p resented.Th eo perationalpr incipleo fth esy stemi san alyzed,th ed atac olection,data processing; communication between master station and slave station as wel as design and system software are discussed. Because MPI network communicationis used among master station, slave stations and PLC, the system is reliable and high cost-efective. It is, suitable for smal and mediumsized water works for distrbuted monitoring and control.Keywords MPI Masterst ation Slaves tation Monitoringa ndc ontorlsy stem
自來(lái) 水 廠 的自動(dòng)控制系統(tǒng)一般分為兩大部分,一對(duì)組態(tài)硬件要求較高,投資較大。相對(duì)而言,MPI網(wǎng)是水源地深水泵的工作控制,一是水廠區(qū)變頻恒壓供絡(luò)速度可達(dá)187.5 M bps,通過(guò)一級(jí)中繼器傳輸距離可水控制,兩部分的實(shí)際距離通常都比較遠(yuǎn)。某廠水源達(dá)Ikm 。根據(jù)水廠的具體情況,確定以MPI方式組地有3臺(tái)深井泵給水廠區(qū)的蓄水池供水。水廠區(qū)的成網(wǎng)絡(luò),主站PLC為S7-300系列的CPU3121FM,從任務(wù)是對(duì)水池的水進(jìn)行消毒處理后,通過(guò)加壓泵向管站為S7-200系列的CPU222。這樣既滿足了系統(tǒng)要路恒壓供水。選用Siemens公司的S7系列可編程控求,又相對(duì)于Profibus網(wǎng)絡(luò)節(jié)省了三分之一的成本,制器(PLC)和上位機(jī)組成實(shí)時(shí)數(shù)據(jù)采集和監(jiān)控系統(tǒng), 這種分布式監(jiān)控系統(tǒng)具有較高的性能價(jià)格比。系統(tǒng)對(duì)深水泵進(jìn)行遠(yuǎn)程控制,對(duì)供水泵采用變頻器進(jìn)行恒中PLC的物理層采用RS - 485接口,網(wǎng)絡(luò)延伸選用壓控制以保證整個(gè)水廠的電機(jī)設(shè)備安全、可靠地運(yùn)帶防雷保護(hù)的中繼器,使系統(tǒng)的安全運(yùn)行得到了保行。證。MPI網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)如圖1所示。1 多點(diǎn)網(wǎng)絡(luò)(NWI)監(jiān)控系統(tǒng)的組成Sie me ns 公司S7系列PLC通常有MP」多點(diǎn)網(wǎng)絡(luò)與Profibus現(xiàn)場(chǎng)總線網(wǎng)絡(luò)兩種組網(wǎng)方式。Profibus現(xiàn)場(chǎng)總線的應(yīng)用目前較為普遍,通用性較好,它由Profibus一DP, Profibus一FMS, Profibus一PA組成。Profibus - DP型用于分散外設(shè)間的數(shù)據(jù)傳輸,傳輸速率為9.6kbps一12Mbps,主要用于現(xiàn)場(chǎng)控制器與分散1/0之間的通信,可滿足交直流調(diào)速系統(tǒng)快速響應(yīng)的時(shí)間要求,特別適合于加工自動(dòng)化領(lǐng)域的應(yīng)用;Profibus - FMS主要解決車間級(jí)通信問(wèn)題,完成中等傳輸速度的循環(huán)或非循環(huán)數(shù)據(jù)交換任務(wù),適用于紡織、樓宇自動(dòng)化、可編程控制器、低壓開(kāi)關(guān)等;Profibus - PA型采用了OSI模型的物理層和數(shù)據(jù)鏈路層,適用于過(guò)程自動(dòng)化的總線類型。
C++完美演繹 經(jīng)典算法 如 /* 頭文件:my_Include.h */ #include <stdio.h> /* 展開(kāi)C語(yǔ)言的內(nèi)建函數(shù)指令 */ #define PI 3.1415926 /* 宏常量,在稍后章節(jié)再詳解 */ #define circle(radius) (PI*radius*radius) /* 宏函數(shù),圓的面積 */ /* 將比較數(shù)值大小的函數(shù)寫(xiě)在自編include文件內(nèi) */ int show_big_or_small (int a,int b,int c) { int tmp if (a>b) { tmp = a a = b b = tmp } if (b>c) { tmp = b b = c c = tmp } if (a>b) { tmp = a a = b b = tmp } printf("由小至大排序之后的結(jié)果:%d %d %d\n", a, b, c) } 程序執(zhí)行結(jié)果: 由小至大排序之后的結(jié)果:1 2 3 可將內(nèi)建函數(shù)的include文件展開(kāi)在自編的include文件中 圓圈的面積是=201.0619264
魔王語(yǔ)言解釋
[問(wèn)題描述]
有一個(gè)魔王總是使用自己的一種非常精練而又抽象的語(yǔ)言講話,沒(méi)有人能聽(tīng)得懂,但他的語(yǔ)言是可以逐步解釋成人能聽(tīng)懂的語(yǔ)言,因?yàn)樗恼Z(yǔ)言是由以下兩種形式的規(guī)則由人的語(yǔ)言逐步抽象上去的:
(1) α 轉(zhuǎn)換為 β1β2…βm
(2) (θδ1δ2…δn) 轉(zhuǎn)換為 θδnθδn-1… θδ1θ
在這兩種形式重,從左到右均表示解釋。試寫(xiě)一個(gè)魔王語(yǔ)言的解釋兄,把他的話解釋成人能聽(tīng)得懂的話。
[基本要求]
用下述兩條具體規(guī)則和上述規(guī)則形式(2)實(shí)現(xiàn)。設(shè)大寫(xiě)字母表示魔王語(yǔ)言的詞匯;小寫(xiě)字母表示人的語(yǔ)言詞匯;希臘字母表示可以用大寫(xiě)字母或小寫(xiě)字母代換的變量。魔王語(yǔ)言可含人的詞匯。
(1)B 轉(zhuǎn)換為 tAdA
(2)A 轉(zhuǎn)換為 sae
[測(cè)試數(shù)據(jù)]
B(exnxgz)B解釋成tsaedsaeezegexenehetsaedsae
若將小寫(xiě)字母與漢字建立下表所示的對(duì)應(yīng)關(guān)系,則魔王說(shuō)的話是:“天上一只鵝地上一只鵝鵝追鵝趕鵝下鵝蛋鵝恨鵝天上一直鵝地上一只鵝”。
t d s a e z g x n h
天 地 上 一只 鵝 追 趕 下 蛋 恨
/*
* EULER S ALGORITHM 5.1
*
* TO APPROXIMATE THE SOLUTION OF THE INITIAL VALUE PROBLEM:
* Y = F(T,Y), A<=T<=B, Y(A) = ALPHA,
* AT N+1 EQUALLY SPACED POINTS IN THE INTERVAL [A,B].
*
* INPUT: ENDPOINTS A,B INITIAL CONDITION ALPHA INTEGER N.
*
* OUTPUT: APPROXIMATION W TO Y AT THE (N+1) VALUES OF T.
*/
[輸入]
圖的頂點(diǎn)個(gè)數(shù)N,圖中頂點(diǎn)之間的關(guān)系及起點(diǎn)A和終點(diǎn)B
[輸出]
若A到B無(wú)路徑,則輸出“There is no path” 否則輸出A到B路徑上個(gè)頂點(diǎn)
[存儲(chǔ)結(jié)構(gòu)]
圖采用鄰接矩陣的方式存儲(chǔ)。
[算法的基本思想]
采用廣度優(yōu)先搜索的方法,從頂點(diǎn)A開(kāi)始,依次訪問(wèn)與A鄰接的頂點(diǎn)VA1,VA2,...,VAK, 訪問(wèn)遍之后,若沒(méi)有訪問(wèn)B,則繼續(xù)訪問(wèn)與VA1鄰接的頂點(diǎn)VA11,VA12,...,VA1M,再訪問(wèn)與VA2鄰接頂點(diǎn)...,如此下去,直至找到B,最先到達(dá)B點(diǎn)的路徑,一定是邊數(shù)最少的路徑。實(shí)現(xiàn)時(shí)采用隊(duì)列記錄被訪問(wèn)過(guò)的頂點(diǎn)。每次訪問(wèn)與隊(duì)頭頂點(diǎn)相鄰接的頂點(diǎn),然后將隊(duì)頭頂點(diǎn)從隊(duì)列中刪去。若隊(duì)空,則說(shuō)明到不存在通路。在訪問(wèn)頂點(diǎn)過(guò)程中,每次把當(dāng)前頂點(diǎn)的序號(hào)作為與其鄰接的未訪問(wèn)的頂點(diǎn)的前驅(qū)頂點(diǎn)記錄下來(lái),以便輸出時(shí)回溯。
#include<stdio.h>
int number //隊(duì)列類型
typedef struct{
int q[20]