我們做程序庫封裝的基本要義是高內(nèi)聚低耦合, 而評(píng)價(jià)低耦合的終極體現(xiàn)則是使用實(shí)現(xiàn)過程的優(yōu)雅程度。
換大白話說便是,即便一個(gè)啥都不懂的小白,經(jīng)過簡單的輔導(dǎo),就可以實(shí)現(xiàn)應(yīng)用。具備應(yīng)用到工程現(xiàn)場中的能力。而至于原理不懂, 無所謂。能獨(dú)立先把工作任務(wù)完成了最重要。這就是優(yōu)雅。
我曾經(jīng)發(fā)布了《0601 【萬泉河】優(yōu)雅的80個(gè)MODBUS通訊的變頻器例子》,并將例子有償或無償分發(fā)給了部分感興趣的學(xué)員。
然而發(fā)現(xiàn),其實(shí)MODBUS通訊的技能, 并不是工控行業(yè)必備。有一些做非標(biāo)設(shè)備的學(xué)員,各種軸類,張力控制應(yīng)用等非常嫻熟,然而十幾年工作經(jīng)驗(yàn),都有可能沒用過MODBUS通訊。因?yàn)閷?shí)在用不到。
而有用過的學(xué)員, 經(jīng)驗(yàn)也非常少。可能也就有過一次兩次跟MODBUS儀表的通訊經(jīng)驗(yàn),所帶的站點(diǎn)也不過是1-2臺(tái)。所以80的例子就對(duì)他們來說有些上頭。有學(xué)員來參加會(huì)議從飛機(jī)場見面后,就開始反復(fù)問我程序塊中的SUBNET接口是什么。反復(fù)解釋都不能理解。主要是他們的工程應(yīng)用中沒有機(jī)會(huì)遇到我們一個(gè)CPU下動(dòng)輒幾百臺(tái)RTU需要控制的情況。
所以, 直到做相關(guān)行業(yè)的學(xué)員,在會(huì)上做了應(yīng)用分享之后,疑惑才稍微打消。
然后,我在會(huì)上就許諾大家,我會(huì)做一個(gè)小白教程,帶大家學(xué)會(huì)使用這套GML庫的方法。所以本文另一個(gè)題目可以叫做: GML 庫函數(shù)使用方法。
需要的設(shè)備:
1,一臺(tái)CPU1214。
2,一臺(tái)電腦。
即,我們可以在只有一臺(tái)電腦+一臺(tái)CPU的情況下,就完成MODBUS通訊實(shí)驗(yàn)學(xué)習(xí)。當(dāng)然,也有可能不使用實(shí)體的CPU硬件,只用一臺(tái)電腦,電腦上用PLCSIM的某個(gè)版本也可以實(shí)現(xiàn)。但我因?yàn)橛羞@個(gè)CPU硬件,而電腦上跑不起來更高性能的PLCSIM,所以就沒做這方面的測試驗(yàn)證。歡迎有讀者參照本文做完實(shí)驗(yàn)后,可以再嘗試在PLCSIM中驗(yàn)證實(shí)現(xiàn)。然后把是否可行的結(jié)果告訴我。
電腦上需要的軟件:
1,TIA PORTAL V17
2,MODSCAN
3,MODSIM
以下是實(shí)驗(yàn)的具體步驟:
步驟1:
PORTAL軟件中打開80變頻器程序,檢查CPU的IP:169.254.1.100
則設(shè)置電腦的網(wǎng)卡的IP為同網(wǎng)段,比如169.254.1.13。
步驟2:
打開程序中的NM_ACS500 (FB32),看到程序中讀取變頻器的頻率和電流分別在4005和4006 。那么我們知道了,如果相應(yīng)的地址有數(shù)據(jù)了,并且通訊成功了,PLC程序監(jiān)控中就會(huì)有數(shù)值。
當(dāng)然,這部分工作是倒敘的,是在已經(jīng)有現(xiàn)成的設(shè)備塊的情況下。而實(shí)際應(yīng)用中,你應(yīng)該根據(jù)所要通訊的設(shè)備的數(shù)據(jù)表來編寫相應(yīng)設(shè)備的控制程序。
步驟3:
運(yùn)行MODSIM,打開MODBUS TCP通訊,并將40005和40006設(shè)置為數(shù)值自動(dòng)增長。這里的device ID為1, 代表站地址為1,也可以再新開一個(gè)窗口,地址為2,則模擬了地址=2的站。
步驟4:
運(yùn)行MODSCAN來檢查從站通訊,設(shè)置通訊目標(biāo)的IP為本機(jī)IP,或者127.0.0.1
然后可以讀取到數(shù)值。然后MODSCAN可以關(guān)閉不再運(yùn)行。
步驟5:
PLC程序中打開FB36:MTCP_X7v4
程序段3中IP4=13,即電腦的IP。這里是SUBNET=101,如果有更多的網(wǎng)絡(luò)總線,可以為102,103等等。這個(gè)塊里最多做了7條線。每條線對(duì)應(yīng)了不同的IP。而工程應(yīng)用中,同事們已經(jīng)最多做到了10條,都是在這里簡單復(fù)制增加。
步驟6
設(shè)備塊(變頻器)的實(shí)例化調(diào)用中,檢查調(diào)用的SUBNET和站地址對(duì)應(yīng)正確。
我前面給的例子的版本中,忘記了這里的MODBUS TCP通訊的SUBNET是從101開始的,因?yàn)樵咀龅氖荕ODBUS RTU,定義在100以下,是另外一個(gè)程序塊中實(shí)現(xiàn)的。那個(gè)時(shí)候大量使用的CP ptp模塊來實(shí)現(xiàn)和RTU的通訊,后來增加了MODBUS TCP網(wǎng)關(guān)的方式,庫函數(shù)中就做了2種方式兼容,再后來基本不再使用PTP模塊,而是統(tǒng)一都用網(wǎng)關(guān)來轉(zhuǎn)換,就把舊的模塊刪掉了,而SUBNET的定義還沒變。
程序修改下載之后,CPU切換到運(yùn)行,自動(dòng)就通訊上了,ABB01站的頻率和電流的數(shù)據(jù)已經(jīng)有數(shù)值了。
而再M(fèi)ODSIM中增加站號(hào)2和3的數(shù)據(jù)模擬,相應(yīng)的站的數(shù)據(jù)也會(huì)通訊成功讀上來。
更進(jìn)一步,如果增加一臺(tái)電腦,比如運(yùn)行虛擬機(jī),通過不同的IP中運(yùn)行MODSIM的數(shù)據(jù)仿真,也可以實(shí)現(xiàn)更多SUBNET總線的數(shù)據(jù)通訊。
這些都是可以直接通過組態(tài)和簡單設(shè)置數(shù)據(jù)實(shí)現(xiàn)的。
而實(shí)現(xiàn)之后發(fā)現(xiàn),對(duì)MODBUS通訊的機(jī)理特別是輪詢部分絲毫沒有涉及,有多少個(gè)站就平行調(diào)用多少個(gè)站的實(shí)例。就像PROFINET 的PN站點(diǎn)一樣簡單。
對(duì)MODBUS通訊需要做輪詢這一點(diǎn), 其實(shí)只有西門子和三菱等老牌PLC系統(tǒng)里面才需要做。而對(duì)于新的CODESYE等環(huán)境的平臺(tái), 子站都是組態(tài)之后就可以直接通訊的,與ETHERCAT, PROFINET并沒有多少區(qū)別。這應(yīng)該也是一大半同行對(duì)輪詢不太感興趣的原因。因?yàn)樗麄兏居貌坏桨。?/p>
所以倒過來看, 掌握所謂的輪詢的技能也并不是行業(yè)必備的必殺技。你完全可以不選用這些產(chǎn)品, 以繞過這些難點(diǎn)嘛!比如頂多可以花點(diǎn)錢買個(gè)貴一點(diǎn)的PN/MODBUS網(wǎng)關(guān),也可以省掉這些工作量。而實(shí)際上,我們開發(fā)這一套庫函數(shù),也只是因?yàn)橐郧暗姆桨高x用的專用的網(wǎng)關(guān)產(chǎn)品太貴,工程中反復(fù)用到,花費(fèi)有點(diǎn)多,出于要省一點(diǎn)成本的目的,而另外花出了幾個(gè)月的時(shí)間做的庫。
最后對(duì)那些白嫖不到卻強(qiáng)烈要求開源的同行說一下, 所謂的開源,是建立在各方水平級(jí)別相等的基礎(chǔ)上的。至少對(duì)方開放源代碼的代碼,自己要能看得懂,理念方法要能認(rèn)同,要有共同的價(jià)值觀。最好還要能對(duì)方開源的內(nèi)容有改進(jìn)有貢獻(xiàn),這種開源才有意義。否則都算不上真正意義的開源。開源從來不是單向輸出,也更不是什么道德楷模。
我近幾年專門制作了不少例子的源代碼供同行學(xué)習(xí)提高。比如80系列的一些例子,80模擬量的標(biāo)準(zhǔn)答案等,然而收效并不太好,大多數(shù)的同行表示從中學(xué)到了技能。然而也有不少的聲音認(rèn)為我做的太簡單而借此反而嘲笑攻擊我。甚至有人在我的帖子下面回復(fù):看到有人罵你我就放心了。
我不知道他放的什么心。我唯一可以讓他, 以及讓所有同行放心一點(diǎn)的是,只要有一個(gè)這樣謾罵的聲音在,我就不會(huì)免費(fèi)開源。毫無價(jià)值,毫無意義。我沒有必要去討好這樣的價(jià)值觀的同行。
審核編輯:湯梓紅
-
cpu
+關(guān)注
關(guān)注
68文章
10898瀏覽量
212528 -
接口
+關(guān)注
關(guān)注
33文章
8682瀏覽量
151602 -
變頻器
+關(guān)注
關(guān)注
251文章
6579瀏覽量
145474 -
MODBUS
+關(guān)注
關(guān)注
28文章
1819瀏覽量
77191 -
通訊
+關(guān)注
關(guān)注
9文章
911瀏覽量
35006
原文標(biāo)題:0806 【萬泉河】手把手帶小白做MODBUS通訊實(shí)驗(yàn)
文章出處:【微信號(hào):PLC標(biāo)準(zhǔn)化編程,微信公眾號(hào):PLC標(biāo)準(zhǔn)化編程】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論