PLC 與 變頻器 RS485通訊
時間很快,都工作一個月了,想想運氣不錯,剛進公司馬上就被分配了一個做關(guān)于RS485通訊的工作。
變頻器雖然在學(xué)校有學(xué)過,但資料很少很淺,變頻器的RS485通訊更是從零開始,所以從理論的通過到實踐的通過期間
遇到很多問題。上網(wǎng)收索可以看到很多人問,但很少有人給以回答。所以想了想就把我整理的資料給喜歡PLC的人分享一
下,我認(rèn)為對于剛接觸RS485的人來說會有很大幫助。(高手見笑了,有不足的地方請指出)
我使用的是匯川H2U plc ,其基本的功能和編程環(huán)境和三菱PLC是一樣的。變頻器使用的是三基變頻器。
1.搭建架構(gòu),要確定PLC和變頻器的完好性,將匯川plc和變頻器的RS485接口用雙絞線連接起來,在此建議大家再并聯(lián)
出兩根線,再下載一個串口調(diào)試軟件,用于變頻器命令的確定。(稍后再詳細說明)
2.雙方的參數(shù)調(diào)整,對著變頻器的使用手冊,將變頻器的調(diào)成RS485界面,RS485模式。還有調(diào)整它的通訊參數(shù)
我調(diào)整為 波特率 9600 數(shù)據(jù)位 8位 停止位 1 無校驗。 PLC里的參數(shù)是通過D8120這個存儲器來調(diào)整的,通過調(diào)整
D8140內(nèi)的位能改變參數(shù),(具體見D8140詳解)注意PLC和變頻器的通訊參數(shù)一定要一樣,因此將D8120調(diào)為81H。在通訊
方面匯川和三菱方面有一點很大的區(qū)別是要匯川還要確定 D8126這個參數(shù),作為主站有3種模式,兩種是MODBUS協(xié)議,還
有一種是自由無協(xié)議通訊模式。(這一點一定要注意,這個地方弄了我很久) 我們此次先用自由協(xié)議,將D8126調(diào)整為
H10.還有就是將M8161置位,這樣使用的8位數(shù)據(jù)處理模式。
3.命令確定,其實RS485其實就是一種串口通信模式,說白話一點就是我發(fā)送一串1,0組成的數(shù)據(jù),然后這串命令正好
符合你的要求的話,我就能控制你做相應(yīng)的事情了(我是這樣理解的)。我用具體的代碼來解釋一下三基的通訊模式,
控制變頻器停止3A 30 31 30 36 32 30 30 30 30 30 30 31 44 38 0D 0A 。3A是一個握手代碼,相當(dāng)于聲明“我要開始
傳數(shù)據(jù)啦” 3031其實就是01H的ASCI碼,簡單來說就是減去一個30H(三菱里有專門的轉(zhuǎn)換成ASCI碼的指令,你也可以直
接加30H)代表變頻器的站號,3036為06的ASCI碼,代表“寫”的意思,32 30 30 30是2000H ASCI碼,代表寫入得地址
,30 30 30 31 為0001H的ASCI碼,是寫入得“內(nèi)容”。44 38 是校驗碼,是01+06+20+00+00+01加起來然后反補加一(
我想是起一個放錯的功能吧),然后0D 0A是結(jié)束碼相當(dāng)于聲明“我傳送完啦”總結(jié)起來就是 我要往01號變頻器的2000
地址里寫入01H這個數(shù),而這個地址的這個數(shù)代表的正是前面所說的“停止”。
新手的話可以利用前面并出來的線和串口調(diào)試軟件,將你需要的命令確定出來,看看你的代碼是不是對的,能不能
起作用,然后再編制程序,如果直接編譯程序下載調(diào)試,如果沒有效果的話,你不知道問題出在哪里了。
4.然后是根據(jù)編譯程序,就三菱來說的話用到RS指令,RS A B C D ,A 代表發(fā)送起始地址,B代表從A開始后發(fā)送的
數(shù)據(jù)個數(shù),C是存儲起始地址,D代表存儲個數(shù)。因此你可以把3A 30 31 30 36 32 30 30 30 30 30 30 31 44 38 0D 0A
放到從D100到D116中,然后再 RS D100 K17 D200 0 指令, 再觸發(fā)M8122(發(fā)送命令)。就能把這條代碼發(fā)出去了,然后就能起到
控制效果。
匯川還有MODBUS標(biāo)準(zhǔn)協(xié)議,比自由協(xié)議要簡單很多,把握手,校驗,停止,都做到一條指令里去了,但是知道了自由
協(xié)議的話MODBUS就好做了,所以這里就不介紹啦。
理論同的話實踐是會碰到許多問題,一定要注意很多細節(jié)的調(diào)整,我最近要弄一個LG的RS485通訊,又碰到了新的一
些問題,所以理論和實踐還是有很大區(qū)別的,在此要感謝王工程師和網(wǎng)上認(rèn)識的李工程師,對我進行了很多指導(dǎo)。