手機(jī): 18012683177
手機(jī): 15995687013
熱線: 400-816-0035
地址: 江蘇省蘇州市昆山市富士康路1388號(hào)
上位機(jī)軟件的主要功能是采集各儀器的數(shù)據(jù),然后存儲(chǔ)起來,并傳送到環(huán)保局平臺(tái)。
剛開始使用的是組態(tài)軟件(用以顯示流程圖),然后再開發(fā)了報(bào)表軟件、數(shù)據(jù)上傳軟件。因?yàn)榻M態(tài)軟件使用的是標(biāo)準(zhǔn)Modbus協(xié)議,而很多儀器使用的協(xié)議根本就是自定義的,所以還要加一個(gè)協(xié)議轉(zhuǎn)換軟件,把各種各樣的協(xié)議轉(zhuǎn)換成Modbus協(xié)議,讓組態(tài)軟件去讀。除此之外,我們還希望軟件能夠開機(jī)啟動(dòng),就增加了延遲啟動(dòng)的第三方軟件。
這樣一來,每個(gè)站點(diǎn)要安裝和部署的軟件非常多和雜亂。加上每個(gè)站點(diǎn)都有自己的特點(diǎn),軟件出現(xiàn)了大量的版本。有上位機(jī)的版本管理、升級(jí)維護(hù)時(shí),出現(xiàn)了極大的麻煩,管理成本極高。很多時(shí)候會(huì)有這樣一種情況,前面開發(fā)的人走了,后面就沒有人能維護(hù)他的軟件了。
基于上面的情況,我和團(tuán)隊(duì)重新設(shè)計(jì)和開發(fā)了上位機(jī)軟件,具有以下特點(diǎn):
(1)軟件集組態(tài)、采集、傳輸、報(bào)表、自動(dòng)啟動(dòng)等功能于一體,一臺(tái)工控機(jī)只有一個(gè)上位機(jī)軟件。
(2)上位機(jī)只有一個(gè)版本,所有站點(diǎn)都一樣。站點(diǎn)的不同特點(diǎn)通過配置文件來實(shí)現(xiàn),而這個(gè)配置文件不隨更新而變化。
(3)儀器五花八門,但我們把它們歸于一體,用同一個(gè)模型去表現(xiàn)。
(4)在對(duì)儀器的支持和界面功能上,具有強(qiáng)大的擴(kuò)展特性和靈活性。
以下是部分軟件界面截圖:
儀器歸一化設(shè)計(jì)
這是具體內(nèi)容的第一篇,我們先來講述儀器的歸一化設(shè)計(jì)。
儀器是各種功能都有的,我只舉我們?cè)诃h(huán)境監(jiān)測(cè)這方面所用到的儀器。我們要測(cè)試水是不是有污染物質(zhì),污染到什么程度,我們要測(cè)試水體的高錳酸鹽指數(shù)、氨氮、總磷、總氮等值。我們的站房有一個(gè)后備電源,我們要知道市電是否斷電了,是否在用備用電源。我們的站房是有空調(diào)的,我希望知道站房的溫度和濕度,于是就有了一個(gè)溫濕度計(jì)。我們可能還會(huì)有流量計(jì)、DTU、數(shù)字儀等儀器。這些儀器跟工控機(jī)的連接也不盡相同,有的使用串行線,有的使用網(wǎng)線。用網(wǎng)線的儀器,有的作為客戶端,有的作為服務(wù)端,有的使用UDP??傊?,這些儀器的通訊協(xié)議是五花八門的,通信鏈路也是有區(qū)別的。
但我們需要對(duì)儀器做出歸一化設(shè)計(jì)。
其實(shí)無論儀器有什么功能,工控機(jī)對(duì)儀器的操作無非就兩個(gè):讀和寫。讀的話,可能是讀到測(cè)量的值、儀器的狀態(tài)等;寫的話,就是啟動(dòng)儀器測(cè)量、修改儀器的參數(shù)等。而讀和寫的操作,都是通過發(fā)送和接收完成的。雖然通信協(xié)議各不相同,但我們總是可以把發(fā)送和接收的內(nèi)容轉(zhuǎn)化為最基礎(chǔ)的字節(jié)流。要發(fā)送怎樣的字節(jié)流,接收到的字節(jié)流如何解釋,就要根據(jù)儀器的特性去定義了。
根據(jù)這樣的特點(diǎn),我們?yōu)樗袃x器定義了一個(gè)基類,它包含了發(fā)送字節(jié)流和接收字節(jié)流兩個(gè)方法。而所有儀器類,都繼承自這個(gè)基類。
每個(gè)儀器特定的類,只需要完成拼裝發(fā)送的字節(jié)流,和解析接收的字節(jié)流即可,它不需要理會(huì)如何發(fā)送和接收。而實(shí)際上的發(fā)送和接收,我們知道鏈路是有多種的,如上面提到的串行線和網(wǎng)線。使用哪種方式去傳輸,我們需要根據(jù)儀器的屬性去判斷。如下圖所示的方法,在基類里實(shí)現(xiàn)。
解決了上面儀器類的結(jié)構(gòu)設(shè)計(jì)以后,我們需要考慮儀器的屬性如何表示和存儲(chǔ)。我們把所有儀器都稱為設(shè)備,設(shè)備包含以下內(nèi)容:
(1)名稱。
(2)傳輸方式,以及傳輸?shù)膮?shù)。例如用串口,那應(yīng)該有串口號(hào)、波特率等。如果用網(wǎng)線,應(yīng)該有IP、端口等。
(3)使用的通信協(xié)議。選定之后,上位機(jī)能夠找到相應(yīng)的通信協(xié)議類,對(duì)字節(jié)流進(jìn)行操作。順便一說,我們把通信協(xié)議類用反射的方法去做,每個(gè)協(xié)議是一個(gè)dll,選擇不同的協(xié)議即會(huì)執(zhí)行不同的代碼。
(4)因子列表。
沒錯(cuò),說到這里,我們就發(fā)現(xiàn),工控機(jī)設(shè)備里有一個(gè)因子的概念。因子是什么?這個(gè)比較難解釋。從最原始的因子來看,因子就是儀器的測(cè)量值。例如我們有一臺(tái)溫濕度計(jì),它的測(cè)量值會(huì)有兩個(gè),分別是溫度和濕度。我們就把溫度和濕度作為兩個(gè)因子。我們對(duì)因子的概念進(jìn)行擴(kuò)展,把狀態(tài)也作為因子。例如儀器的工作狀態(tài)、故障狀態(tài),都可以看作是一個(gè)個(gè)的因子。甚至,我們把控制儀器的命令,也看成是因子。例如是啟動(dòng)測(cè)量、更換運(yùn)行模式,每一個(gè)動(dòng)作都看成是一個(gè)因子。這樣下來之后,儀器的所有功能,都變成了因子的列表。因子有很多屬性,但不是所有因子都一樣的。名稱是我們想到的唯一一個(gè)共性屬性。我們?cè)趯?shí)際的開發(fā)過程中,定義了幾種因子:
(1)實(shí)際因子:就是測(cè)量值。它應(yīng)該有單位、超標(biāo)限制、因子地址(Modbus協(xié)議)等屬性。
(2)計(jì)算因子:跟實(shí)際因子類似,只是它不是直接讀取儀器值得到的,而是根據(jù)實(shí)際因子計(jì)算出來的。這樣的話,計(jì)算因子就要有一個(gè)表達(dá)式的屬性,例如是:溫度*9/5+32
(3)狀態(tài)因子:儀器的狀態(tài)。它的值不一定是數(shù),可能是一個(gè)字符串。
(4)反控因子:對(duì)儀器的控制命令??梢杂靡粋€(gè)數(shù)字去表示控制的類型,工控機(jī)只需要在協(xié)議類里面解釋清楚即可。
通過上面的方法,我們把所有儀器都?xì)w一成統(tǒng)一的類了。
Ennoconn產(chǎn)業(yè)園 地 址:江蘇省昆山市南淞路299號(hào) (富士康昆山城南廠區(qū)A3棟) | 華東總經(jīng)銷 地 址:江蘇省蘇州市昆山市富士康路1388號(hào) 3號(hào)樓2L 電 話:400-816-0035 0512-36803195 | 富士康樺漢科技總部 地 址:江蘇省昆山市登云路288號(hào) ?。?nbsp;海創(chuàng)大廈C座20樓 ) |
Copyright @ Ennoconn 蘇州索騰工控科技有限公司 All Rights Reserved,備案號(hào):蘇ICP備16032780號(hào)-2 / 技術(shù)支持:富士康工控