一、組態(tài)PLC: 打開博圖V15軟件,新建項目,進行PLC的硬件組態(tài),在CPU的左側(cè)添加CM1241 modbusRTU通訊模塊。 二、組態(tài)通訊端口 雙擊CM1241 modbusRTU通訊模塊,在下方“RS422/485接口”選項下,點擊“端口組態(tài)”,右側(cè)設置如下:協(xié)議---自由口;操作模式--半雙工(RS485)2線制模式;接收線路初始狀態(tài)--無;波特率--9600、奇偶校驗--無、數(shù)據(jù)位--8位/字符、停止位--1;其余默認;如圖1、圖2所示:
三、設置CPU系統(tǒng)和時鐘存儲器 雙擊CPU,點擊“系統(tǒng)和時鐘存儲器”,點擊右側(cè)“啟用系統(tǒng)存儲器字節(jié)”和“啟用時鐘存儲器字節(jié)”,用于編程時使用首次掃描位和時鐘脈沖;如圖3
四、新建讀寫數(shù)據(jù)塊 新建讀寫全局數(shù)據(jù)塊DB3、DB5,數(shù)據(jù)塊里新建數(shù)據(jù)類型為UINT的數(shù)組;如圖4
五、編寫modbusRTU初始化程序 在OB1里,編寫modbusRTU初始化程序,點擊右側(cè)“通信”--“通信處理器”--“MODBUS(RTU)”--“Modbus_Comm_Load”,拖拽到程序段1中,自動生成背景數(shù)據(jù)塊; Modbus_Comm_Load模塊的引腳說明: EN--使能端,一直使能; REQ--只在第一次掃描周期為1,且必須是上升沿觸發(fā); PORT--指定CM1241模塊的硬件標識符(標注方法:如圖7) BAUD--指定通訊波特率(9600); PARITY--指定奇偶校驗位(0--無校驗) MB_DB--指向主站生成的背景數(shù)據(jù)塊的MB_DB參數(shù); 輸出引腳指定地址即可,如圖6 注意:在左側(cè)“程序塊”--“系統(tǒng)塊”--“程序資源”下拉列表中,雙擊Modbus_Comm_Load的背景數(shù)據(jù)塊,Modbus_Comm_Load_DB,修改第19行MODE的數(shù)值,由默認值修改為16#04;如圖8 0=全雙工(RS232); 1=全雙工(RS422)四線制模式(點對點); 2=全全雙工(RS422)四線制模式(多點主站,CM PtP(ET200SP)); 3=全全雙工(RS422)四線制模式(多點從站,CM PtP(ET200SP)); 4=半雙工(RS485)二線制模式;
六、編寫主站程序(讀指令) 在OB1里,編寫modbusRTU主站程序,點擊右側(cè)“通信”--“通信處理器”--“MODBUS(RTU)”--“Modbus_Master”,拖拽到程序段2中,自動生成背景數(shù)據(jù)塊; Modbus_Master模塊的引腳說明: EN--使能端,一直使能; REQ--上升沿觸發(fā); MB_ADDR--從站地址; MODE--讀或?qū)懼噶睿?span>0是讀指令,1是寫指令); DATA_ADDR--從站的起始地址(需將從站的地址由16進制轉(zhuǎn)換為10進制,轉(zhuǎn)換成10進制后,數(shù)據(jù)加1(因為從站地址是從0開始的,而PLC的地址是從1開始的,所以要加1)); DATA_LAN--指定讀取的數(shù)據(jù)長度(即一下讀取幾個數(shù)據(jù)); DATA_PTR--指定讀取的數(shù)據(jù)存放到此數(shù)組中; 輸出引腳指定地址即可,如圖9
圖9程序解析: 從站地址: 1000--頻率給定(只寫); 1001--運行頻率(只讀); 1002--母線電壓(只讀); 1003--輸出電壓(只讀); 1004--輸出電流(只讀); 1001H轉(zhuǎn)成10進制是4097,4097+1=4098; 所以此程序就是用4號功能碼讀取從站地址為1的從4098(從站從4097)開始的4個數(shù)據(jù)(運行頻率、母線電壓、輸出電壓、輸出電流),存放到數(shù)據(jù)塊_1(DB3)的第一個變量的數(shù)組里(對應關系是一一對應的,即DB3.DBW0是運行頻率,DB3.DBW2是母線電壓,DB3.DBW4是輸出電壓,DB3.DBW6是輸出電流),也就是說在上位機或監(jiān)控里監(jiān)控時,只要寫DB3.DBW0、DB3.DBW2、DB3.DBW4、DB3.DBW6即可; 七、編寫主站程序(寫指令) 同第六項讀指令一樣,只是將MODE改為1即可;如圖10
圖10程序解析: 從站地址: 2000--變頻啟動停止指令(只寫); 2000地址=1:正轉(zhuǎn)運行; 2000地址=2:反轉(zhuǎn)運行; 2000地址=3:正轉(zhuǎn)點動; 2000地址=4:反轉(zhuǎn)點動; 2000地址=5:自由停機; 2000地址=6:減速停機; 2000地址=7:故障復位; 2000H轉(zhuǎn)成10進制是8192,8192+1=8193; 所以此程序就是用4號功能碼向從站地址為1的從8193(從站從48192)開始的1個數(shù)據(jù)寫數(shù)據(jù)(變頻器啟停控制),存放到數(shù)據(jù)塊_2(DB5)的第一個變量的數(shù)組里(對應關系是一一對應的,即DB5.DBW0是啟停信號,即DB5.DBW0=1時變頻器正轉(zhuǎn),DB5.DBW0=6時變頻器減速停機),也就是說在上位機或監(jiān)控里寫命令時,只要將DB5.DBW0數(shù)值寫成0~7即可; 八、輪詢 當一個CM 1241帶很多從站時,或者帶一個從站,但是一個從站里需要多次用到讀或?qū)懼噶顣r,就需要用輪詢的方式來讀寫,不能同時對多個Modbus_Master模塊進行讀寫; 輪詢程序如圖11~圖16
九、運行監(jiān)控畫面: 給定頻率32.6Hz
十、停機監(jiān)控畫面 給定頻率32.6Hz,停機指令6(減速停機)
歡迎給作者打賞
|
|
來自: 阿明哥哥資料區(qū) > 《69.PLC 自動化》