不請(qǐng)自來
1 首先,你這個(gè)說法是錯(cuò)誤的,485是不能直接控制交流電機(jī)的,一般是通過控制伺服驅(qū)動(dòng)器或是變頻器實(shí)現(xiàn)的。
悟空規(guī)矩,先要來一些廢話
2 485通訊簡(jiǎn)介
3 交流電機(jī)簡(jiǎn)介
4 變頻器簡(jiǎn)介
以上廢話共計(jì)一萬字,大家可以自行查找
通過通訊來實(shí)現(xiàn)控制電機(jī),一般有兩種方式,一種是通過端子控制啟停,通過通訊給定速度。另外一種全部通過通訊實(shí)現(xiàn)。如果使用485控制,建議使用前一種。
一般來說,485是一種通訊接口,但是在工控行業(yè),它既可以指通訊接口,也可以指通訊線路,也可以指通訊協(xié)議,含義是廣泛的。MODBUS是一種非常廣泛的通訊協(xié)議,最初它是在RS485接口上實(shí)現(xiàn)的,所以,現(xiàn)在說到485和MODBUS,意思是一樣的。但還是有些許區(qū)別的。所有的變頻器的485接口都是支持MODBUS協(xié)議的,所以,現(xiàn)在說到485一般都是指MODBUS協(xié)議。
MODBUS協(xié)議,是由美國(guó)莫迪康公司提出的一個(gè)通信協(xié)議,是第一個(gè)用于工業(yè)現(xiàn)場(chǎng)的通訊協(xié)議,它的出現(xiàn)標(biāo)志著工業(yè)控制從模擬量時(shí)代向通訊時(shí)代邁進(jìn)。經(jīng)過幾十年的發(fā)展,MODBUS已經(jīng)成為事實(shí)上的RS485 通訊標(biāo)準(zhǔn),廣泛應(yīng)用于DCS,PLC儀器儀表等等,打敗眾多敵人的正是它的可靠,簡(jiǎn)單,免費(fèi)。MODBUS廣泛用于對(duì)實(shí)時(shí)性要求不高,傳輸距離不太遠(yuǎn),數(shù)據(jù)量不太大的場(chǎng)合。你可以盡情的使用,而不用去問為什么,因?yàn)樗峭耆赓M(fèi)的,沒人會(huì)問你要錢。而它的開發(fā)也同樣簡(jiǎn)單,你可以輕易開發(fā)出符合MODBUS規(guī)范的元器件,和其他廠商的設(shè)備交換數(shù)據(jù)。
正所謂青山依舊在,幾度夕陽紅。MODBUS就像步兵用的迫擊炮一樣,雖然簡(jiǎn)單便宜,甚至那么LOW,但卻不動(dòng)如山的在自動(dòng)化領(lǐng)域穩(wěn)如泰山,而開發(fā)它的美國(guó)莫迪康公司確命途多舛,幾易其主,最后歸于法國(guó)施耐德電氣旗下。值得一提的是,莫迪康公司的創(chuàng)始人,正是由PLC之父稱呼的迪克莫利先生,而他已經(jīng)在2017年10月19日去世,是的,有的人死了,他永遠(yuǎn)活著。
通訊的用途是交互信息,因此,通訊只是手段,能交互信息才是目的,怎樣理解MODBUS,我們不妨舉個(gè)例子,比如你有個(gè)朋友住在中央大街1號(hào)樓的12號(hào)房間,你要告訴他你們晚上20點(diǎn)見面,那么這一串信息就是
01 01 12 20
01 是地址 01 是告訴 12 是房間號(hào) 20 是地址。如果換成專業(yè)術(shù)語,可以表示,往01變頻器的12地址 寫入12??聪聢D,這就是MODBUS通訊的標(biāo)準(zhǔn)幀。
1號(hào)樓是地址域 告訴 是功能碼 也就是寫入。數(shù)據(jù)有兩部分組成 房間號(hào)和內(nèi)容,就是往告訴12號(hào)房間20點(diǎn)。差錯(cuò)校驗(yàn)是為了防止數(shù)據(jù)幀在傳輸過程中出錯(cuò)而設(shè)定的,也就是我們常說的偶校驗(yàn) 奇校驗(yàn) 停止位。
MODBUS常用的功能碼如下,但用的最多的是03 和16 也就是每次讀取或?qū)懭胍粋€(gè)WORD 也就是16位的數(shù)據(jù)。
由于MODBUS只定義了應(yīng)用層,因此可以在多種電氣接口上應(yīng)用,用于網(wǎng)絡(luò)的MODBUS/TCP 已經(jīng)成為事實(shí)上的工業(yè)以太網(wǎng)標(biāo)準(zhǔn)。
隨著目前OEM市場(chǎng)競(jìng)爭(zhēng)的激烈,在不降低設(shè)備可靠性的情況下降低成本,已經(jīng)成為提高競(jìng)爭(zhēng)力 的關(guān)鍵,而MODBUS就是最好的選擇,因?yàn)樗扔媚M量模塊便宜多了
而使用MODBUS通訊,一般是在PLC中編寫程序,不同的PLC實(shí)現(xiàn)方法是不一樣的,需要自行查看手冊(cè)
各個(gè)PLC對(duì)MODBUS 的處理不盡相同,但還是有些套路可尋的,今天就一邊給大家講解通訊,一邊介紹一下MODBUS通信的套路。
施耐德PLC通訊的套路就是三個(gè)功能塊,ADDM ,READ_VAR,WRITE_VAR,下面分別介紹
1 ADDM
ADDM功能塊是地址轉(zhuǎn)換,就是把PLC 的物理地址轉(zhuǎn)換成PLC可識(shí)別的地址類型,這句話比較拗口,通俗講,就是把字符串型變量,轉(zhuǎn)換成ADDRESS 型變量,我們還是看例子
圖一 ADDM功能塊
如圖一,圖中紅色圓圈內(nèi)就是一個(gè)字符串型變量 '2,1' 第一個(gè)數(shù)字2表示PLC 的串口2,第二個(gè)數(shù)字1 表示讀取的從站地址,也就是變頻器的地址,而此功能塊就是把此地址轉(zhuǎn)換成ADDRESS型變量 A1_Add。也許你會(huì)有疑問,為什么這么做?我也不知道,此款PLC就是這樣,這就是它的套路,對(duì)于此種套路,我們只能牢記。在其他PLC特別是日系,一般是通過設(shè)置參數(shù)的方式實(shí)現(xiàn),也有使用指令的。
還有一點(diǎn),黃色熒光筆部分的三個(gè)黑點(diǎn),是表示電路相通,而它正是把轉(zhuǎn)換好的地址賦值給下面我們要介紹的功能塊。也就是說,讀寫功能塊讀取或?qū)懭胱兞康膹恼镜刂肪褪鞘褂米兞緼1_Add。
2 WRITE_VAR
此功能塊是用于往從站寫數(shù)據(jù),也就是寫入變頻器的運(yùn)行頻率。
圖二 WRITE_VAR 功能塊
這個(gè)功能塊的信息量就很大了,我們一點(diǎn)點(diǎn)分析
1 看黃色熒光筆部分 Addr,這個(gè)就是從站的地址,也就是變頻器的地址,它是一個(gè)ADDRESS型變量,就是我們?cè)贏DDM功能塊中轉(zhuǎn)化的,就是圖一的那三個(gè)黑點(diǎn),就是連接到此處的,這也是CFC的優(yōu)點(diǎn),要用的變量輕松一連,而在FBD或是LD 中,我們就要建立一個(gè)中間變量傳遞一下了。
2 下面三處用熒光筆表示的 就是此功能塊的精髓了,它表示往變頻器的地址0002開始寫入一個(gè)WORD型變量,而寫的這個(gè)數(shù)值放在PLC變量Fre里,這就是這個(gè)功能塊的目的,也是此次通信的目的,執(zhí)行結(jié)果,就是把PLC變量Fre的值,寫到了變頻器的0002里面。當(dāng)然,此處我們只寫入了一個(gè)WORD,其實(shí)此功能塊是支持一次寫入125個(gè)的,因?yàn)镼uantity是一個(gè)SINT型變量。Fre是一個(gè)數(shù)組型變量通訊,當(dāng)我們要一次寫入很多數(shù)值的時(shí)候,用數(shù)組就很方便了。
此處有個(gè)知識(shí)點(diǎn),通信只能讀取或是寫入WORD型變量,而WORD型變量的值只能是正數(shù),當(dāng)我們要讀取或是寫入負(fù)數(shù)的時(shí)候,該怎么辦呢?大家可以思考一下。
3 右邊紅色圓圈是功能塊的輸出,它表示了功能塊執(zhí)行的各種狀態(tài),它是標(biāo)準(zhǔn)的PLCopen信號(hào)(關(guān)于PLCopen以后會(huì)詳細(xì)介紹,今天只介紹與此功能塊有關(guān)的)
Done 表示功能塊執(zhí)行正常后置為TRUE,此處,我們?nèi)∷姆葱盘?hào)來監(jiān)控通信狀態(tài),如果超過3S沒有Done信號(hào),我們可以認(rèn)為此次寫入失敗,那么就代表通信失敗。
Busy表示功能塊執(zhí)行情況的輸出,如果為高電平,表示功能塊正在執(zhí)行。我們讀取它的下降沿,來觸發(fā)下一次操作。
Error是功能塊的錯(cuò)誤,可能你會(huì)有疑問,為什么通信錯(cuò)誤不用這個(gè)信號(hào)呢?其實(shí)這個(gè)錯(cuò)誤表示的范圍更廣,它表示功能塊檢測(cè)到錯(cuò)誤就報(bào)警,有時(shí)候,我們通信正常,但是當(dāng)我們讀取的數(shù)據(jù)有問題,或是參數(shù)設(shè)置不正確時(shí),也會(huì)報(bào)錯(cuò),而我在程序中的錯(cuò)誤僅僅是通信不上的錯(cuò)誤,也就是,這個(gè)Error表示的范圍更廣泛,它更適合我們調(diào)試的時(shí)候監(jiān)控。而我在程序中取的通信錯(cuò)誤,是在上位機(jī)做監(jiān)控用的。
3 READ_VAR
讀取和寫入的功能塊完全一樣,大家可以嘗試自己分析一下。
圖三 READ_VAR功能塊
4 數(shù)據(jù)的處理
圖四 數(shù)據(jù)的處理
這段是程序中和我們直接相關(guān)的,寫入的頻率,讀取的頻率和電流都是用MOVE指令處理,放到指定的變量中,方便我們使用,畢竟通信的最終目的就是交互數(shù)據(jù)。
總結(jié):這就是施耐德PLC,MODBUS/RTU通信程序的三個(gè)功能塊,其實(shí)本文還有一個(gè)目的,那就是我在前面文章指出,初學(xué)PLC有一個(gè)很大的誤區(qū),就是喜歡對(duì)著視頻或是書本一條條學(xué)指令,其實(shí)這是錯(cuò)誤的,正確的方式是在程序中學(xué)習(xí)指令,試想,如果你不知道MODBUS通信,沒有這個(gè)通信例子,干巴巴的學(xué)這三個(gè)功能塊,是很枯燥的,是毫無意義的,你也許心里會(huì)有一萬匹草泥馬奔騰而過,這都是些什么玩意,但是當(dāng)你根據(jù)這個(gè)實(shí)例,當(dāng)你面對(duì)一個(gè)變頻器要用通信控制的時(shí)候,再去學(xué)習(xí)這三個(gè)指令,是不是很輕松呢?至少,心里有了目的。
設(shè)置通訊參數(shù)(主要是波特率,校驗(yàn),地址),并確保PLC和變頻器側(cè)參數(shù)一致,讀取或?qū)懭胱兞康牡刂罚瑐€(gè)數(shù)以及數(shù)據(jù)類型(日系PLC不需要這一步,因?yàn)樗欢x變量),是使用MODBUS基本套路。當(dāng)你使用不同的PLC時(shí),你的任務(wù)就是在軟件中找到實(shí)現(xiàn)這些功能的地方,就可以完成通信。還有一點(diǎn)注意,不同的廠家,MODBUS接口是不一樣的,常見的有DB9 RJ45,還有最簡(jiǎn)單的螺釘接線。
圖五DB9
圖六RJ45
如 圖五 圖六 所示,是常用的MODBUS接線端子,使用時(shí),務(wù)必仔細(xì)閱讀手冊(cè),確定 正 負(fù) 端子。
在大量使用功能塊,而且功能塊之間聯(lián)系比較緊密的場(chǎng)合,使用CFC語言時(shí)最佳選擇,比如串口通信,運(yùn)動(dòng)控制,高速計(jì)數(shù)等等。而這些場(chǎng)合用梯形圖,那酸爽,用過日系PLC 的朋友應(yīng)該很清楚,寫了幾個(gè)屏幕的程序,還沒有進(jìn)入主題。當(dāng)然,也可以用ST語言來寫,那樣逼格簡(jiǎn)直就是沒法形容了,不過對(duì)于后期維護(hù)很不方便,因?yàn)檫@么多變量,ST語言的可讀性會(huì)很差,不過,對(duì)保護(hù)自己的知識(shí)產(chǎn)權(quán),到是很不多。因?yàn)?,要想看懂ST寫的這種程序,確實(shí)很費(fèi)勁。