摘要:Modbus-TCP是運行在TCP/IP上的Modbus傳輸協(xié)議。通過此協(xié)議,控制器相互之間或控制器經(jīng)由網(wǎng)絡(luò)(如以太網(wǎng))可以和其它設(shè)備之間進(jìn)行通信。應(yīng)用Modbus-TCP構(gòu)建的工業(yè)以太網(wǎng)絡(luò)具有組網(wǎng)簡單,通信高效、穩(wěn)定的特點,因而在工業(yè)工程中得到了較多的應(yīng)用。該文以Modebus-TCP通信在全國工業(yè)機(jī)器人技術(shù)大賽中的具體應(yīng)用為例,詳細(xì)闡述了西門子S7-1200 Modebus-TCP在TIA Portal V13中創(chuàng)建PLC與匯博機(jī)器人通信的使用方法。
關(guān)鍵詞:Modbus-TCP;PLC;機(jī)器人;通信
0 ?引言
Modbus-TCP是運行在TCP/IP上的Modbus傳輸協(xié)議。通過此協(xié)議,控制器相互之間、或控制器經(jīng)由網(wǎng)絡(luò)(如以太網(wǎng))可以和其它設(shè)備之間進(jìn)行通信。應(yīng)用Modbus-TCP構(gòu)建的工業(yè)以太網(wǎng)絡(luò)具有組網(wǎng)簡單,通信高效、穩(wěn)定的特點,因而在工業(yè)工程中得到了較多的應(yīng)用。該文以Modebus-TCP通信在全國工業(yè)機(jī)器人技術(shù)大賽中的具體應(yīng)用為例,詳細(xì)闡述了Modebus-TCP在TIA Portal V13中創(chuàng)建PLC與機(jī)器人通信的使用方法。
1 ?硬件組態(tài)
打開TIA Portal V13軟件,創(chuàng)建新項目,項目命名為“Communication”,更改保存位置(自定),點擊【創(chuàng)建】。新項目創(chuàng)建成功后,對硬件進(jìn)行組態(tài)。
1.1 添加PLC控制器
在【項目樹】、【設(shè)備】、【Communication】下雙擊【添加新設(shè)備】,出現(xiàn)添加新設(shè)備對話框,點擊對話框左側(cè)【控制器】。在控制器選擇框里,依次選擇SIMATIC S7-1200,CPU 1215C DC/DC/DC,6ES7 215-1 AG40-0XB0。在對話框右側(cè)【設(shè)備】下,版本選擇V4.0。點擊【確定】。
在PLC屬性里設(shè)置PLC以太網(wǎng)網(wǎng)址:192.168.8.101。
1.2 添加通信模塊
在【硬件目錄】下,依次選擇【通信模塊】、【點到點】、【CM1241(RS422/485)】,雙擊【6ES7 241-1CH32-0XB0】,完成通信模塊的添加。
1.3 添加IO模塊
在【硬件目錄】下,依次選擇【DI/DQ】、【DI 16/DQ 16x24VDC】,雙擊【6ES7 223-1BL32-0XB0】,完成IO模塊的添加。
點擊【編輯】下來菜單,點擊【編譯】,將以上模塊進(jìn)行編譯,完成PLC的硬件組態(tài),如圖1所示。
2 創(chuàng)建PLC與機(jī)器人通信模塊
2.1 添加全局?jǐn)?shù)據(jù)塊
在PLC_1程序塊添加新塊,名稱為“DBPubulic”,類型為數(shù)據(jù)塊(DB)。在DBPubulic數(shù)據(jù)塊中寫入靜態(tài)變量(static):
新增變量【PLC-機(jī)器人信息】,數(shù)據(jù)類型設(shè)為【struct】。點擊【PLC-機(jī)器人信息】左側(cè)的三角標(biāo)記,在其下新增【機(jī)器人啟動】,數(shù)據(jù)類型設(shè)為【int】;新增【通道】,數(shù)據(jù)類型設(shè)為【int】;新增【通道_1】、【通道_2】…【通道_14】,數(shù)據(jù)類型均設(shè)為【int】。
新增變量【機(jī)器人信息-PLC】,數(shù)據(jù)類型設(shè)為【struct】。點擊【機(jī)器人信息-PLC】左側(cè)的三角標(biāo)記,在其下新增【機(jī)器人狀態(tài)】,數(shù)據(jù)類型設(shè)為【int】;新增【通道】,數(shù)據(jù)類型設(shè)為【int】;新增【通道_1】、【通道_2】…【通道_14】,數(shù)據(jù)類型均設(shè)為【int】。
右擊【DBPubulic】數(shù)據(jù)塊,點擊【屬性】,將優(yōu)化的塊訪問前面的“√”去掉。
2.2 創(chuàng)建FB數(shù)據(jù)塊
2.2.1 定義FB數(shù)據(jù)塊
在PLC_1程序塊添加新塊,名稱為“通信模塊”,類型為函數(shù)塊(FB),語言選擇“LAD”。在通信模塊數(shù)據(jù)塊中寫入靜態(tài)變量(static),如圖2所示。
2.2.2 添加通信指令
在程序段1中添加PLC通信指令“MB_CLIENT”,并設(shè)置各個輸入輸出,如圖3所示。
選擇“#MB_CLIENT_Instance”,單擊右鍵轉(zhuǎn)至定義,修改靜態(tài)變量中“MB_UNIT_ID”的默認(rèn)值為1。
2.2.3 完成通訊程序
打開MAIN主程序,將通訊模塊拖動到程序段1中,完成PLC與機(jī)器人的通訊,并對新內(nèi)容編譯。
3 ?創(chuàng)建PLC控制機(jī)器人流程模塊
3.1 定義FB數(shù)據(jù)塊
在PLC_1程序塊添加新塊,名稱為“流程控制”,類型為函數(shù)塊(FB),語言選擇“LAD”。在通信模塊數(shù)據(jù)塊中寫入靜態(tài)變量(static),如圖4所示。
名稱:步啟動;數(shù)據(jù)類型:int
3.2 添加PLC變量
在PLC_1的PLC變量內(nèi)的默認(rèn)變量表里添加PLC變量,如圖5所示。
3.3 添加流程控制指令
在程序段中添加流程控制指令,并設(shè)置各個輸入輸出,如圖6所示。
3.4 完成流程控制程序
打開MAIN主程序,將流程控制拖動到程序段2中,完成PLC控制機(jī)器人的流程,并對新內(nèi)容編譯。
4 ?機(jī)器人程序
機(jī)器人編寫一個主程序和兩個子程序。要求主程序一直循環(huán)。如果接收到PLC發(fā)送的“11”信號,執(zhí)行第一個子程序;如果接收到PLC發(fā)送的“22”信號,執(zhí)行第二個子程序。機(jī)器人在原點的時候給PLC發(fā)送“100”信號,機(jī)器人在工作過程中給PLC發(fā)送“200”信號。
主程序:
Main()
WHILE TRUE DO
sendingSignal.val := 100;
IF recieptSignal.val = 11 THEN
CALL rPick1();
END_IF
IF recieptSignal.val = 12 THEN
? ? ?CALL rPick();
END_IF
END_WHILE
子程序1:
rPick()
sendingSignal.val := 200;
PTP(apHome);
Lin(pickSafe);
Lin(pickOver);
Lin(pick);
WaitIsFinished();
doubleXp.Set(TRUE);
WaitIsFinished();
Lin(pickOver);
Lin(pickSafe);
Lin(putSafe);
Lin(putOver);
Lin(put);
WaitIsFinished();
doubleXp.Set(FALSE);
WaitIsFinished();
Lin(putOver);
Lin(putSafe)
子程序2:
rPick1()
sendingSignal.val := 200;
PTP(apHome1);
Lin(pickSafe1);
Lin(pickOver1);
Lin(pick1);
WaitIsFinished();
jiaZhua.Set(TRUE);
WaitIsFinished();
Lin(pickOver1);
Lin(pickSafe1);
Lin(putSafe1);
Lin(putOver1);
Lin(put1);
WaitIsFinished();
jiaZhua.Set(FALSE);
WaitIsFinished();
Lin(putOver1);
Lin(putSafe1);
PTP(apHome1);
程序中變量sendingSignal.val為機(jī)器人狀態(tài),是機(jī)器人發(fā)送給PLC的;變量recieptSignal.val為賦值數(shù)據(jù),是PLC發(fā)送給機(jī)器人的。
5 ?程序調(diào)試
將TIA Portal V13中“Communication”項目下載到S7-1200設(shè)備里。將機(jī)器人的主程序及子程序拷貝到匯博機(jī)器人的示教器里,并對機(jī)器人的輸入輸出信號進(jìn)行設(shè)置。最后進(jìn)行PLC與機(jī)器人的聯(lián)機(jī)調(diào)試并對程序進(jìn)行修正,以符合設(shè)計要求。
6 ?小結(jié)
本文主要介紹了西門子S7-1200 Modbus-TCP與機(jī)器人的通信,本案例中用到了PLC的“MB_CLIENT”指令,實現(xiàn)了PLC與機(jī)器人的相互訪問。由于篇幅所限,本文未到之處,敬請諒解。
作者簡介:陳邦璽(1980-),河南信陽人,信陽高級技工學(xué)校一級實習(xí)指導(dǎo)教師,從事機(jī)電一體化專業(yè)理論與實踐教學(xué)。