什么是上位機?

首先看上面這張圖,這是一個非常典型的工業(yè)控制系統(tǒng)模型,可能大家的工作大多數(shù)是處于現(xiàn)場設(shè)備層或者現(xiàn)場控制層,因為這兩塊都是工業(yè)控制的基礎(chǔ)。
如果我們往上看,發(fā)現(xiàn)還有三層,分別是過程監(jiān)控層、生產(chǎn)管理層和企業(yè)決策層,這三層,就是我們說的上位機。
如果你們的系統(tǒng)并沒有這三層,也是可能的,因為上位機功能主要在于監(jiān)控管理,并不是最終的執(zhí)行者。
所以,從廣義上來說,上位機指的就是SCADA/MES/ERP,從狹義上來說,上位機指的就是SCADA。
總而言之,上位機就是基于PC(PC-Based)開發(fā)的監(jiān)控管理系統(tǒng)。
上位機用什么語言?
上位機是一種系統(tǒng)概念,與開發(fā)語言無關(guān),所以,大部分的編程語言都可以開發(fā)上位機,只是適不適合而已。
看語言適不適合,主要看幾個方面:
◆學(xué)習(xí)成本,說白了,就是難易程度
◆資源成本,說白了,就是網(wǎng)上資料多不多
◆人員基數(shù),說白了,就是使用的人多不多
◆可持續(xù)性,說白了,就是能用多久
◆應(yīng)用范圍,說白了,就是應(yīng)用是否單一化
所以,我們常說的LabView/C++/Java/Python,它們可能在某一方面比較突出,而C#在任一方面都不突出,但是綜合來說,認(rèn)為語言沒有好壞之分,只有適不適合,昌暉儀表工程師認(rèn)為C#最合適,才建議大家學(xué)習(xí)C#。
上位機與下位機有何關(guān)系?
從廣義上來說,上位機和下位機是一個相對的概念,比如SCADA對于PLC來說,SCADA是上位機,PLC是下位機,但是如果MES相對于SCADA來說呢,可能SCADA又成了下位機的角色。
從狹義上來說,目前儀表工程師做的上位機主要是對接PLC、儀表、運動控制卡、視覺等,通信方式包括通信協(xié)議、OPC、API或SDK,如下圖所示:

通信協(xié)議與通信API
1、通信協(xié)議
上位機和下位機之間的通信協(xié)議有很多,只要能完成通信的協(xié)議都可以用在上位機與下位機之間。比如:通信協(xié)議(通信方式):RS232/RS485串行通信、USB、藍(lán)牙、網(wǎng)絡(luò)UDP/TCP 這個通信協(xié)議(通信方式)是實現(xiàn)上位機與下位機之間數(shù)據(jù)交換的基本通道。

2、通信API
很多時候,我們會把數(shù)據(jù)做好封裝,提供接口給外部應(yīng)用,這就涉及到API。
API全稱為Application Programming Interface。 API的命令格式,是自定義的一種固定的數(shù)據(jù)組合格式,不受任何通信方式和通信平臺的限制,我們常用的API方式包括WebApi和WebService。
怎么學(xué)上位機?
這個問題其實不太好回答,上位機要學(xué)好,有兩個階段,第一階段是從0到1的過程,第二階段是從1到∞的過程。
很多人困就困在一直處于零的階段,無法突破,想要快速突破,有這么幾個點,要逐個突破:
◆編程基礎(chǔ)
◆通信方式
◆項目經(jīng)驗
這個過程,到底要多久,是要看個人的,有的人2個月,有的人可能要2年。
對于學(xué)習(xí)上位機知識及其他儀表知識,其實學(xué)歷、英語、年齡這些都不是問題,問題就在于夠不夠勤奮。
也許我們的資質(zhì)不夠聰穎,我們的起點沒有別人高,我們的精力已經(jīng)不再充沛,越是如此,學(xué)習(xí)上位機相關(guān)知識越應(yīng)該用后天努力去彌補。世界上最可怕的事就是比你優(yōu)秀的人,比你還努力。這不是雞湯,這是事實!
相關(guān)閱讀
安裝WINCC的上位機應(yīng)使用規(guī)范名字
從簡單案例了解PLC編程與上位機程序開發(fā)調(diào)試
如何通過HART協(xié)議將流量計實時數(shù)據(jù)讀取到上位機
工控人如何抵御針對PLC、上位機和交換機的網(wǎng)絡(luò)攻擊
