既然有組態(tài)軟件,為什么還要學(xué)C#上位機(jī)?(組態(tài)軟件好學(xué)嗎)
前言
最近在某平臺(tái)直播,被問的最多的一個(gè)話題就是,已經(jīng)有組態(tài)軟件了,為什么還要學(xué)C#來開發(fā)上位機(jī)?
今天就這個(gè)話題跟大家聊一下,組態(tài)軟件與C#上位機(jī)的區(qū)別與聯(lián)系。
什么是上位機(jī)
百度百科是這么定義上位機(jī)的:
上位機(jī)是指可以直接發(fā)出操控命令的計(jì)算機(jī),英文名一般是PC/Host Computer/Master Computer/Upper Computer。
我們可以通過上位機(jī)運(yùn)行一些特定的軟件來顯示各種信號(hào)變化(液壓,水位,溫度等),上位機(jī)發(fā)出的命令首先給下位機(jī),下位機(jī)再根據(jù)此命令解釋成相應(yīng)時(shí)序信號(hào)直接控制相應(yīng)設(shè)備。
通常情況下,工控機(jī),工作站,觸摸屏作為上位機(jī),通信控制PLC,單片機(jī)等作為下位機(jī),從而控制相關(guān)設(shè)備元件和驅(qū)動(dòng)裝置。
因此上位機(jī)本質(zhì)是一臺(tái)電腦,實(shí)際運(yùn)行著一個(gè)可供用戶操作監(jiān)控的軟件,這個(gè)軟件稱之為上位機(jī)軟件,所以我們學(xué)習(xí)上位機(jī)開發(fā),其實(shí)是學(xué)習(xí)怎么開發(fā)上位機(jī)軟件,更具體的是指如何使用高級(jí)語言來開發(fā)上位機(jī)軟件。
什么是組態(tài)軟件
組態(tài)軟件,又稱組態(tài)監(jiān)控系統(tǒng)軟件,英文名是Scada(Supervisory Control And Data Acquisition),是指數(shù)據(jù)采集與過程控制的專用軟件,也是指在自動(dòng)控制系統(tǒng)監(jiān)控層一級(jí)的軟件平臺(tái)和開發(fā)環(huán)境。這些軟件實(shí)際上也是一種通過靈活的組態(tài)方式,為用戶提供快速構(gòu)建工業(yè)自動(dòng)控制系統(tǒng)監(jiān)控功能的、通用層次的軟件工具。
所以組態(tài)軟件本身也是屬于上位機(jī)軟件。
為什么選擇C#
能夠開發(fā)上位機(jī)的語言不止C#一種,比如Java、C /QT、Python、LabVIW等,在工控領(lǐng)域,C#的地位,就像Windows在操作系統(tǒng)中的地位一樣,我們?yōu)槭裁催x擇C#,主要是一種綜合考慮,也許C#在各個(gè)方面都不突出,但是它的綜合能力是非常強(qiáng)的,主要是以下幾個(gè)方面:
? 學(xué)習(xí)成本,說白了,就是難易程度
? 資源成本,說白了,就是網(wǎng)上資料多不多
? 人員基數(shù),說白了,就是使用的人多不多
? 可持續(xù)性,說白了,就是能用多久
? 應(yīng)用范圍,說白了,就是應(yīng)用是否單一化
所以并不是我們培訓(xùn)C#,大家也要跟著學(xué)C#,而是因?yàn)镃#足夠好,我們才選擇培訓(xùn)C#。
如果哪一天我們發(fā)現(xiàn)有更好的語言,我們也會(huì)改變賽道。
組態(tài)軟件與C#上位機(jī)
組態(tài)軟件與C#上位機(jī)同樣都可以開發(fā)上位機(jī)軟件,所以很多人會(huì)將兩者做對(duì)比,其實(shí)我覺得兩者不是同一個(gè)競(jìng)品,使用組態(tài)軟件,我們只是一個(gè)使用者的角色,C#開發(fā)上位機(jī),我們更多的是一個(gè)開發(fā)者的角色。
就拿日常的汽車來打比方,組態(tài)軟件就是給駕駛員使用的,我們只管開車就行了,但是C#上位機(jī)是給汽車制造工程師使用的,需要去研究汽車,改造汽車。
我們使用組態(tài)軟件,看重的是它的穩(wěn)定及便捷,但是我們選擇C#上位機(jī),無非就是兩個(gè)原因:
1、不愿意花組態(tài)授權(quán)的費(fèi)用,組態(tài)軟件是按照項(xiàng)目和點(diǎn)數(shù)收費(fèi)的,如果公司每年的項(xiàng)目達(dá)到幾百上千,這是一筆很大的開支。
2、有很多項(xiàng)目和功能,組態(tài)軟件是實(shí)現(xiàn)不了的,這是一個(gè)客觀事實(shí)。
如果排除這兩個(gè)原因,組態(tài)軟件可以免費(fèi)使用,而且能夠滿足我們所有的功能需求,那么學(xué)習(xí)C#上位機(jī)將沒有任何意義。
但恰恰有這兩方面的原因,所以越來越多的人開始來學(xué)習(xí)上位機(jī),能夠解決公司的難題,就是變相地給自己漲薪開道。
C#上位機(jī)應(yīng)用場(chǎng)景
首先可以明確的是,基本上組態(tài)軟件可以實(shí)現(xiàn)的功能,C#上位機(jī)都可以實(shí)現(xiàn)。反之,卻不一樣,即使我們排除金錢的因素,也會(huì)有一些場(chǎng)景是組態(tài)軟件實(shí)現(xiàn)不了,必須要高級(jí)語言開發(fā)的。
- 業(yè)務(wù)非常復(fù)雜的項(xiàng)目,這個(gè)一般在特定的行業(yè)應(yīng)用比較多。
- 系統(tǒng)對(duì)接復(fù)雜的項(xiàng)目,需要同時(shí)對(duì)接掃碼、相機(jī)、機(jī)器人、MES等多個(gè)系統(tǒng)。
- 涉及到運(yùn)動(dòng)控制卡、運(yùn)動(dòng)控制器的項(xiàng)目。
- 機(jī)器視覺OCR、抓取、識(shí)別、測(cè)量等的項(xiàng)目。
- 實(shí)驗(yàn)室項(xiàng)目,更側(cè)重于數(shù)據(jù)分析的項(xiàng)目。
- 三維動(dòng)畫或數(shù)字孿生的項(xiàng)目。
- 客戶定制化需要比較多的項(xiàng)目。
C#上位機(jī)開發(fā)時(shí)間
很多人會(huì)認(rèn)為上位機(jī)開發(fā)成本很高、難度很大、時(shí)間很長。
對(duì)于新手來說,相對(duì)于組態(tài)軟件,C#開發(fā)上位機(jī)確實(shí)時(shí)間也會(huì)更久,甚至?xí)涣肆酥?/span>
但是隨著項(xiàng)目的增多,開發(fā)越來越熟練,項(xiàng)目積累到一定量之后,會(huì)形成一個(gè)量變到質(zhì)變,會(huì)有很成熟的開發(fā)框架,很靈活的開發(fā)技巧,很完善的系統(tǒng)架構(gòu),而且這種積累會(huì)持續(xù)存在。
寫在最后
有小伙伴想了解什么是智能工控上位機(jī),可以在下方評(píng)論區(qū)留言,或者私信我