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