485通訊控制交流電機應該如何實現?

君莫笑了吧


不請自來

1 首先,你這個說法是錯誤的,485是不能直接控制交流電機的,一般是通過控制伺服驅動器或是變頻器實現的。

悟空規矩,先要來一些廢話

2 485通訊簡介

3 交流電機簡介

4 變頻器簡介

以上廢話共計一萬字,大家可以自行查找

通過通訊來實現控制電機,一般有兩種方式,一種是通過端子控制啟停,通過通訊給定速度。另外一種全部通過通訊實現。如果使用485控制,建議使用前一種。

一般來說,485是一種通訊接口,但是在工控行業,它既可以指通訊接口,也可以指通訊線路,也可以指通訊協議,含義是廣泛的。MODBUS是一種非常廣泛的通訊協議,最初它是在RS485接口上實現的,所以,現在說到485和MODBUS,意思是一樣的。但還是有些許區別的。所有的變頻器的485接口都是支持MODBUS協議的,所以,現在說到485一般都是指MODBUS協議。

MODBUS協議,是由美國莫迪康公司提出的一個通信協議,是第一個用於工業現場的通訊協議,它的出現標誌著工業控制從模擬量時代向通訊時代邁進。經過幾十年的發展,MODBUS已經成為事實上的RS485 通訊標準,廣泛應用於DCS,PLC儀器儀表等等,打敗眾多敵人的正是它的可靠,簡單,免費。MODBUS廣泛用於對實時性要求不高,傳輸距離不太遠,數據量不太大的場合。你可以盡情的使用,而不用去問為什麼,因為它是完全免費的,沒人會問你要錢。而它的開發也同樣簡單,你可以輕易開發出符合MODBUS規範的元器件,和其他廠商的設備交換數據。

正所謂青山依舊在,幾度夕陽紅。MODBUS就像步兵用的迫擊炮一樣,雖然簡單便宜,甚至那麼LOW,但卻不動如山的在自動化領域穩如泰山,而開發它的美國莫迪康公司確命途多舛,幾易其主,最後歸於法國施耐德電氣旗下。值得一提的是,莫迪康公司的創始人,正是由PLC之父稱呼的迪克莫利先生,而他已經在2017年10月19日去世,是的,有的人死了,他永遠活著。

通訊的用途是交互信息,因此,通訊只是手段,能交互信息才是目的,怎樣理解MODBUS,我們不妨舉個例子,比如你有個朋友住在中央大街1號樓的12號房間,你要告訴他你們晚上20點見面,那麼這一串信息就是

01 01 12 20

01 是地址 01 是告訴 12 是房間號 20 是地址。如果換成專業術語,可以表示,往01變頻器的12地址 寫入12。看下圖,這就是MODBUS通訊的標準幀。

1號樓是地址域 告訴 是功能碼 也就是寫入。數據有兩部分組成 房間號和內容,就是往告訴12號房間20點。差錯校驗是為了防止數據幀在傳輸過程中出錯而設定的,也就是我們常說的偶校驗 奇校驗 停止位。

MODBUS常用的功能碼如下,但用的最多的是03 和16 也就是每次讀取或寫入一個WORD 也就是16位的數據。

由於MODBUS只定義了應用層,因此可以在多種電氣接口上應用,用於網絡的MODBUS/TCP 已經成為事實上的工業以太網標準。

隨著目前OEM市場競爭的激烈,在不降低設備可靠性的情況下降低成本,已經成為提高競爭力 的關鍵,而MODBUS就是最好的選擇,因為它比用模擬量模塊便宜多了

而使用MODBUS通訊,一般是在PLC中編寫程序,不同的PLC實現方法是不一樣的,需要自行查看手冊

各個PLC對MODBUS 的處理不盡相同,但還是有些套路可尋的,今天就一邊給大家講解,一邊介紹一下MODBUS通信的套路。

施耐德PLC通訊的套路就是三個功能塊,ADDM ,READ_VAR,WRITE_VAR,下面分別介紹

1 ADDM

ADDM功能塊是地址轉換,就是把PLC 的物理地址轉換成PLC可識別的地址類型,這句話比較拗口,通俗講,就是把字符串型變量,轉換成ADDRESS 型變量,我們還是看例子

圖一 ADDM功能塊

如圖一,圖中紅色圓圈內就是一個字符串型變量 '2,1' 第一個數字2表示PLC 的串口2,第二個數字1 表示讀取的從站地址,也就是變頻器的地址,而此功能塊就是把此地址轉換成ADDRESS型變量 A1_Add。也許你會有疑問,為什麼這麼做?我也不知道,此款PLC就是這樣,這就是它的套路,對於此種套路,我們只能牢記。在其他PLC特別是日系,一般是通過設置參數的方式實現,也有使用指令的。

還有一點,黃色熒光筆部分的三個黑點,是表示電路相通,而它正是把轉換好的地址賦值給下面我們要介紹的功能塊。也就是說,讀寫功能塊讀取或寫入變量的從站地址就是使用變量A1_Add。

2 WRITE_VAR

此功能塊是用於往從站寫數據,也就是寫入變頻器的運行頻率。

圖二 WRITE_VAR 功能塊

這個功能塊的信息量就很大了,我們一點點分析

1 看黃色熒光筆部分 Addr,這個就是從站的地址,也就是變頻器的地址,它是一個ADDRESS型變量,就是我們在ADDM功能塊中轉化的,就是圖一的那三個黑點,就是連接到此處的,這也是CFC的優點,要用的變量輕鬆一連,而在FBD或是LD 中,我們就要建立一箇中間變量傳遞一下了。

2 下面三處用熒光筆表示的 就是此功能塊的精髓了,它表示往變頻器的地址0002開始寫入一個WORD型變量,而寫的這個數值放在PLC變量Fre裡,這就是這個功能塊的目的,也是此次通信的目的,執行結果,就是把PLC變量Fre的值,寫到了變頻器的0002裡面。當然,此處我們只寫入了一個WORD,其實此功能塊是支持一次寫入125個的,因為Quantity是一個SINT型變量。Fre是一個數組型變量,當我們要一次寫入很多數值的時候,用數組就很方便了。

此處有個知識點,通信只能讀取或是寫入WORD型變量,而WORD型變量的值只能是正數,當我們要讀取或是寫入負數的時候,該怎麼辦呢?大家可以思考一下。

3 右邊紅色圓圈是功能塊的輸出,它表示了功能塊執行的各種狀態,它是標準的PLCopen信號(關於PLCopen以後會詳細介紹,今天只介紹與此功能塊有關的)

Done 表示功能塊執行正常後置為TRUE,此處,我們取它的反信號來監控通信狀態,如果超過3S沒有Done信號,我們可以認為此次寫入失敗,那麼就代表通信失敗。

Busy表示功能塊執行情況的輸出,如果為高電平,表示功能塊正在執行。我們讀取它的下降沿,來觸發下一次操作。

Error是功能塊的錯誤,可能你會有疑問,為什麼通信錯誤不用這個信號呢?其實這個錯誤表示的範圍更廣,它表示功能塊檢測到錯誤就報警,有時候,我們通信正常,但是當我們讀取的數據有問題,或是參數設置不正確時,也會報錯,而我在程序中的錯誤僅僅是通信不上的錯誤,也就是,這個Error表示的範圍更廣泛,它更適合我們調試的時候監控。而我在程序中取的通信錯誤,是在上位機做監控用的。

3 READ_VAR

讀取和寫入的功能塊完全一樣,大家可以嘗試自己分析一下。

圖三 READ_VAR功能塊

4 數據的處理

圖四 數據的處理

這段是程序中和我們直接相關的,寫入的頻率,讀取的頻率和電流都是用MOVE指令處理,放到指定的變量中,方便我們使用,畢竟通信的最終目的就是交互數據。

總結:這就是施耐德PLC,MODBUS/RTU通信程序的三個功能塊,其實本文還有一個目的,那就是我在前面文章指出,初學PLC有一個很大的誤區,就是喜歡對著視頻或是書本一條條學指令,其實這是錯誤的,正確的方式是在程序中學習指令,試想,如果你不知道MODBUS通信,沒有這個通信例子,乾巴巴的學這三個功能塊,是很枯燥的,是毫無意義的,你也許心裡會有一萬匹草泥馬奔騰而過,這都是些什麼玩意,但是當你根據這個實例,當你面對一個變頻器要用通信控制的時候,再去學習這三個指令,是不是很輕鬆呢?至少,心裡有了目的。

設置通訊參數(主要是波特率,校驗,地址),並確保PLC和變頻器側參數一致,讀取或寫入變量的地址,個數以及數據類型(日系PLC不需要這一步,因為它不定義變量),是使用MODBUS基本套路。當你使用不同的PLC時,你的任務就是在軟件中找到實現這些功能的地方,就可以完成通信。還有一點注意,不同的廠家,MODBUS接口是不一樣的,常見的有DB9 RJ45,還有最簡單的螺釘接線。

圖五DB9

圖六RJ45

如 圖五 圖六 所示,是常用的MODBUS接線端子,使用時,務必仔細閱讀手冊,確定 正 負 端子。

在大量使用功能塊,而且功能塊之間聯繫比較緊密的場合,使用CFC語言時最佳選擇,比如串口通信,運動控制,高速計數等等。而這些場合用梯形圖,那酸爽,用過日系PLC 的朋友應該很清楚,寫了幾個屏幕的程序,還沒有進入主題。當然,也可以用ST語言來寫,那樣逼格簡直就是沒法形容了,不過對於後期維護很不方便,因為這麼多變量,ST語言的可讀性會很差,不過,對保護自己的知識產權,到是很不多。因為,要想看懂ST寫的這種程序,確實很費勁。


分享到:


相關文章: