西門子plc S7-200SMART提供了免費的MODBUS-RTU庫程序,還要知道變頻器的啟動,停止,頻率和電流對應的寄存器地址就可以編寫梯形圖程序了。
首先必須保證接線正確,PLC的端口3為+,8為-,如下圖為PLC和V20的接線
然后是對變頻器的參數進行設置,如:
P0700[0] 選擇命令源
P2023[0]RS485 協議選擇
P2010[0]USS/MODBUS 波特率
P2021[0]MODBUS 地址
P2022[0]MODBUS 應答超時
下面就要編程實現對變頻器的控制:
1,調用Modbus RTU的主站程序,初始化Modbus Master端口:
EN:使能位,必須用SM0.0一直接通
Mode:為1 = Modbus, 0 = PPI (stop Modbus),用SM0.0一直接通
Baud:波特率,一般為9600
Parity:效驗方式,0=無效驗,1=奇效驗,2=偶效驗
Port:0=CPU集成的端口,1=通過擴展SB信號板的端口
Timeout:從站響應時間,超時時間,單位:ms毫秒
Done:完成標志位
Error:錯誤代碼
2,控制變頻器啟動,讀或寫從站數據指令,變頻器寄存器地址40100對應了變頻器的啟動。
EN:使能位,必須用SM0.0一直接通
First:讀寫請求,必須使用脈沖觸發,加沿指令
Slave:從站地址(0-247)
RW:讀寫命令,1=寫,0=讀,此處要控制啟動需要使用1
Addr:從站通信數據起始地址,要寫Modbus地址
Count: 通信數據區地址的數量
DataPtr:主站通信數據區地址
Done:完成標志位
Error:錯誤代碼
上圖指令寫入到VW0,可以控制變頻器的正反轉,每個變頻器的對應的寫入值不同。
3,讀取變頻器的相關參數,由上面的描述,RW為0,則為讀取數據,此處為讀取寄存器地址為40111的頻率值,并進行轉換,是否需要轉換,需要看變頻器的要求,其他品牌的變頻器不一定需要。
需要特別注意的一邊就是RS485為半雙工通訊方式,每次對變頻器的讀寫只能有一個指令在執行,所以需要進行輪詢程序的編寫。一般可以使用Done和Error做為下一個讀寫指令的啟動指令。