0601 【萬泉河】優雅的80臺MODBUS通訊的變頻器例子
為什么是80?80是我做的一系列PLC編程的例子,前面做過80個雙聯開關,80個模擬量的處理。現在把這個80系列繼續做下去,準備控制80臺MODBUS通訊的變頻器。
有人會罵:胡鬧!MODBUS通訊怎么可能帶那么多站點!
沒錯,一條RS485總線肯定帶不了這么多。所以我們打算使用MODBUS TCP轉MODBUS RTU的網關來實現。一個網關轉換出來一條485總線,可以帶10臺RTU(大約),那么8個網關就可以帶80臺了。當然也可以直接買那種一臺網關帶8路485輸出的網關。
總之,就不在PLC上擴展RS485口了,反正數量也不夠,價格也沒有優勢。所以,對PLC來說,做的只是MODBUS TCP通訊,當然原理和RTU是完全相同的。
都需要輪詢。即, 每條總線上根據其掛載的RTU的數量以及需要的讀寫數據區進行循環讀取,而各條總線之間互相不干擾,各自循環。
很多品牌的變頻器原生支持MODBUS RTU通訊接口,所以這種通訊方案成本造價比較低廉,在工程項目中應用比較廣泛。
我們這里控制的是ABB ACS系列的變頻器。演示了針對ABB變頻器所制作的專用的FB模塊。然而后續也會有插曲,比如實際施工時,因為供應商原因或者采購周期原因, 其中的個別幾臺ABB變頻器被替代成了DANFOSS變頻器,然而我們如何不受干擾,如何通過模塊化的手段,適應了這種現場的變更,而沒有被折騰到崩潰。相信有一定工程經驗的同行都或多或少會有過這樣的經歷。
實現的過程
按照我在宇宙觀的文章里的觀點, 在運行邏輯固定的情況下,一個控制對象完全可以實現模塊化封裝。那么要控制一臺ABB變頻器,我們需要送給它的參數只有2個:子網號和MODBUS站地址。
然后它就該能夠自動完成數據的輪詢讀寫。而至于它的數據區的地址,需要的數據的數量,都在這個塊里面了。只需要根據產品說明書的通訊部分,查閱后設計好這個FB塊即可。 外圍原本也不需要知道。
而至于485總線的通訊參數以及網關的IP地址等,都是在網關的相關參數部分實現,具體的設備對象是不需要每個都錄入的。
在完成通訊功能的基礎上, 控制的其他內容, 按照行業特點和需求,比如有的行業習慣于用通訊只讀取狀態和電流頻率等數值,而對變頻器啟停控制仍然需要通過端子實現, 那么上述封裝還可以增加IO管腳,這里不再演示。
我這里講到的當然不是暢想,而是已經完成的歷史。
程序的具體調用情況:
程序中有屏蔽的部分,代表實際應用中,如果有設備減少, 也只需要屏蔽相應的調用,不再需要修改邏輯,數據區的排列,循環次數等等。全都不需要。需要的只是將調用這一行屏蔽。
而在聲明區
看到第5臺設備竟然詭異地變成了DANFOSS, 原因也是現場臨時改動了變頻器的型號,那么我們也只需要簡單修改調用的FB的數據類型。其他的都不需要再動了。
當然,為DANFOSS又設計了專用的FB塊。因為它的控制字,狀態字地址與ABB都不同,所以當然需要專門再定制。
我曾經寫過文章計劃將所完成的這套GML MODBUS庫的方法推廣到西門子之外的其它品牌的PLC。然而響應者寥寥。可想而知我還是走的太超前了,同行們還都停留在原有的每個項目都去做程序做輪詢,通過讀取數據到一個大的數據塊,然后控制邏輯中使用的模式。也是我自己曾經所采取的方式。
現在計劃逐步放開分享這部分的程序源代碼。包括所有品牌型號的標準化的學員,以及用量大于等于3臺的WANQ的用戶都可以免費得到。看到文章后可以私下向我索要。各位得到后在此基礎上再發展研發的其它產品的模塊,請務必再回饋我一份。完整的內容應當是一個FB以及這個通訊單元的應用說明書。
程序是V17下做的。原本是庫函數在更低的環境下做的,調試也完全沒有問題。只不過我現在電腦上只有V17,所以就用V17演示了。你如果要在低版本下實現,需要逐個塊的內容逐個復制遷移到低版本中。大部分程序塊是用SCL寫的, 應該還算方便。
西門子之外的其它品牌的標準化的學員,你也只能得到V17的這個程序版本參考后可以在其它品牌中實現。那些品牌的MODBUS通訊我都沒做過,所以我自己做不了。這些方面的拓展,有勞各位了。SMART 200的GML庫函數我做過了,但控制對象不是變頻器,這部分的學員可以私信我獲取,但你需要做個ABB或者其它品牌的變頻器的應用回饋我。
除此之外,如果有人要移植到其他品牌中,做的過程中可以咨詢我,我可以給予一些幫助。
而對于用戶之外的更多的同行,如果對這個框架結構感興趣,可以分享一個刪減版,我會把MODBUS 通訊部分的功能塊刪除后再打包后分享。獲取方式我會分享到80系列的QQ群文件中,2個群都已經滿員,然而游客也可以直接下載群文件,所以不會再擴展新群。群號到歷史文章中得到。或者微信私信我獲取。
雖然這個分享是有刪減的, 但仍然是有價值的,刪除的只是MODBUS通訊部分的6個功能塊而已。而其他的模塊化的封裝,包括ABB變頻器, DANFOSS變頻器的控制塊,以及我以前提到過的中央報警指示燈HA2的塊,想了想也都保留在里面了,有愛好學習的可以參考。
咱們行業的習慣,大家還是更習慣自己的功能塊自己用,用著放心。所以大家可以在參考我提出的思想的基礎上自己補齊并調試實現。
RS485網絡中不同子網的MODBUS站號是可以有重復的,當然也可以不重復。 這些都是隨現場調試人員而定,只需要對應正確就可以。
另外,同一個子網上,也有可能不僅僅掛變頻器,還會掛其他的儀表等設備,只需要在一個子網內不與現有設備的MODBUS站號沖突即可。但在程序的編寫方面,則是在另外的環節,比如我有可能再寫一個80臺電能表的例子。然而與變頻器毫無關系。即便同處一個485網絡,也不需要再去協調輪詢周期。
即, 那些把循環指令當核心算法的同行們可以知道了,循環只是在通訊邏輯內部實現的,不需要時刻掛在腦門上。
審核編輯:湯梓紅
-
plc
+關注
關注
5016文章
13387瀏覽量
465374 -
變頻器
+關注
關注
251文章
6584瀏覽量
145806 -
MODBUS
+關注
關注
28文章
1820瀏覽量
77308 -
通訊
+關注
關注
9文章
911瀏覽量
35079 -
編程
+關注
關注
88文章
3637瀏覽量
93980
原文標題:0601 【萬泉河】優雅的80個MODBUS通訊的變頻器例子
文章出處:【微信號:PLC標準化編程,微信公眾號:PLC標準化編程】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論