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