本文著重介紹西門子 S7-200 SMART PLC控制變頻器的啟停,主要通過MODBUS RTU進行通訊,以及設定變頻器頻率和讀取變頻器頻率。
一.添加西門子PLC庫指令
PLC和變頻器Modbus RTU通訊,PLC做主站,變頻器做從站,我們首先要找到PLC中的Modbus RTU Master庫,我們將對應庫中的指令添加到主程序中。
二.首先添加MBUS_CTRL/MB_CTRL2 指令(初始化主站)指令
我們可以通過如上圖片,找到該指令中不同引腳的含義。在該項目中,通訊參數設置位波特率9600,偶校驗,端口port設為1,因為我們用的是信號板上的RS-485,如果使用CPU集成的端口,該值就設為0。MODE是一直為1,表示我們啟用了MODBUS協議。超時我們設置的1000ms,可以根據實際設置超時時間。
DONE是完成位,Error是存儲錯誤代碼的,當初始化錯誤,ERROR會顯示出錯誤對應的代碼,以便我們查找故障原因。
變頻器地址位1,slave設置為1。RW等于1表示寫,等于0表示讀,該指令是控制變頻器的啟停,所以我們RW設置為1,要寫數據到變頻器。40100表示變頻器控制字,當這個值為16#047E,變頻器為停止狀態,當這個值為16#047F,變頻器為運行狀態,我們通過改變VW1310的值,就實現了變頻器的啟停。
變頻器地址位1,slave設置為1。RW等于1表示寫,等于0表示讀,該指令是設定變頻器的頻率,所以我們RW設置為1,要寫數據到變頻器。40101表示主設定值,我們通過改變VW1312的值實現了對變頻器頻率的控制。
但是我們的頻率對應關系是-16384~+16384表示頻率是-50HZ~+50HZ,我們的VW1312應該是設置成16384這樣的數字量,觸摸屏設置HZ,對應轉換成范圍內的數字,這就用到了一個轉換的指令,VD776表示0-50之間浮點數,根據VD776的值,VW1312會被轉換成0-16384之間的數,這就實現了轉換。
變頻器地址位1,slave設置為1。RW等于1表示寫,等于0表示讀,該指令是讀取變頻器的頻率,所以我們RW設置為0,要讀數據到PLC。40111表示速度實際值,-16384~+16384表示頻率是-50HZ~+50HZ,我們通過監控VW1314的值實現了對變頻器頻率的讀取。
我們的VW1314應該是一個0-16384這樣的數字量,我們要將這個數字量轉換成0-50HZ之間的數,轉換指令如下所示:
上電我們通過SM0.1將通訊相關的位都復位,然后將停止信號給到控制字VW1310中,等待1S,我們啟動通訊,這樣就實現了上電復位通訊程序。
Modbus RTU是半雙工,所以每一個掃描周期我們只能執行一個讀或者寫的程序,當我們有多個讀多個寫,我們就需要寫輪詢程序,也就是依次循環啟動讀寫程序。
我給大家舉一個例子,每一個指令都有一個完成位,有一個觸發位,我們就通過指令的完成位去復位當前指令的觸發位,同時去置位下一條指令的觸發位,這樣就實現了依次執行,當然,我們不能忘了把該指令的完成位也要復位。