XPLC006E功能介紹
?
?
?
XPLC006E是正運動運動控制器推出的一款多軸經濟型EtherCAT總線運動控制器,XPLC系列運動控制器可應用于各種需要脫機或聯機運行的場合。
![1.png](https://file.elecfans.com//web2/M00/46/10/poYBAGKQSn2AHQx5AAFeyxWV-hA671.png)
?
XPLC006E自帶6個電機軸,最多12軸運動控制(含虛擬軸數),支持12軸直線插補、電子凸輪、電子齒輪、同步跟隨、虛擬軸設置等功能。
XPLC006E支持多任務同時運行,同時可以在PC上直接仿真運行,編程方式多種可選,支持ZDevelop軟件的Basic/PLC梯形圖/HMI組態和常用上位機軟件編程。
XPLC006E只支持EtherCAT總線軸,不支持脈沖軸和編碼器軸。采用EtherCAT總線與驅動器通訊,1ms的刷新周期。
XPLC006E支持PLC、Basic、HMI組態三種編程方式。PC上位機API編程支持C#、C++、LabVIEW、VB、matlab、Qt、Linux、.Net、iMAC、Python、 ROS等接口。
![2.png](https://file.elecfans.com//web2/M00/46/10/poYBAGKQSn6AVtVaAAJuHwyF4Vk213.png)
→此款產品有XPLC004E、XPLC006E、XPLC008E三個不同軸數的型號可選。
?
?
XPLC864E功能介紹
?
XPLC864E在XPLC006E的功能基礎上做了升級(即上節介紹的XPLC006E的功能都支持),部分資源空間優于XPLC006E,使用方法基本一致,不同之處在于XPLC864E,硬件支持32點輸入、32點輸出、2個ADC、2個DAC,支持脈沖軸和總線軸混合使用,總實軸軸數為8,除了帶EtherCAT接口之外,輸出口硬件上可配置為8個軸的脈沖方向信號輸出,另帶兩路編碼器輸入,可由輸入口配置
XPLC864E支持PLC、Basic、HMI組態三種編程方式。PC上位機API編程支持C#、C++、LabVIEW、VB、matlab、Qt、Linux、.Net、iMAC、Python、 ROS等接口。
?
![3.png](https://file.elecfans.com//web2/M00/46/10/pYYBAGKQSn6ATCyaAAF7dcAXDNI690.png)
?
![4.png](https://file.elecfans.com//web2/M00/46/10/poYBAGKQSn6AXnGtAAKkcyMKR_o456.png)
XPLC系列經濟型EtherCAT總線運動控制器支持多種編程方式,支持使用正運動技術自主研發的ZDevelop開發環境的Basic語言和PLC梯形圖,上一節講解了PLC梯形圖的開發,本節內容主要講解ModbusRTU或ModbusTcp與觸摸屏通訊。
?
? 一?控制器與觸摸屏的通訊簡介
?
XPLC006E控制器的串口和網口采用MODBUS協議,只要支持MODBUS通訊協議的觸摸屏都可以與XPLC006E控制器連接使用。
?
控制器使用MODBUS協議與第三方觸摸屏通訊時,此時需要將數據放在MODBUS寄存器內進行傳遞,支持通過串口或網口連接到控制器,有位寄存器和字寄存器兩類可用。?
控制器的MODBUS地址與其他廠家的觸摸屏地址映射關系有所不同,編寫程序之前要理清控制器和觸摸屏的MODBUS寄存器地址對應關系,控制器與部分觸摸屏MODBUS寄存器地址關系如下。
1.控制器的MODBUS地址從0開始,在與威綸觸摸屏通訊時,地址都是從0開始,所以是一一對應。
控制器MODBUS_BIT(0)對應威綸觸摸屏MODBUS_0X_0,布爾型。
控制器MODBUS_REG(0)對應威綸觸摸屏MODBUS_4X_0,字寄存器。
2.在與昆侖通態觸摸屏通訊時,昆侖通態地址從1開始,沒有0地址,控制器地址從0開始,所以觸摸屏地址加1。
控制器MODBUS_BIT(0)對應昆侖通態觸摸屏MODBUS_0X_1,布爾型。
控制器MODBUS_REG(0)對應昆侖通態觸摸屏MODBUS_4X_1,字寄存器 。
?
![5.png](https://file.elecfans.com//web2/M00/46/10/pYYBAGKQSn-AJyOMAAPm1Cq-zq4690.png)
?
二觸摸屏與控制器的連接方式
?
根據觸摸屏和控制器上帶的通訊接口選擇通訊連接方式,可選串口連接或網口連接。觸摸屏和控制器建立通訊連接的時候,此時觸摸屏為主站,控制器為從站,主要在觸摸屏端操作連接,連接時對應的串口或網口參數要匹配,控制器端只需提供通訊的參數,以下為網口和串口的通訊參數說明。
?
1.?網口連接
?
控制器出廠默認IP地址為“192.168.0.11”,網口默認為MODBUS從端,IP地址可在軟件“控制器狀態”窗口查看。使用IP_ADDRESS指令修改IP地址或在修改IP地址窗口修改,修改一次永久生效。控制器至少包含2個網口通道,網口的端口號為502,支持觸摸屏的MODBUS-TCP協議連接。
網口通道數查看:不同型號控制器支持的串口通道數和網口通道數不同。使用在線命令欄發送“?*port”查看通道數,如下圖,通道數確定了控制器能同時連接的設備個數。
![6.png](https://file.elecfans.com//web2/M00/46/10/poYBAGKQSn-AbS5TAACtGsOOPvo000.png)
上圖中的Port:0-1為串口通道,2-9都是網口通道,10-15為自定義網口通訊通道,20為控制器互聯通道。
不同型號的控制器支持的通訊通道數不同。控制器至少有2個網口通道,所以可以通過網口同時連接2個設備,比如連接上位機程序的同時,再連接ZDevelop軟件在線監控。通過路由器連接兩個不同設備也是可以的。
在線命令欄發送“?*port_status”查看通訊端口是否已被使用。返回值為0表示沒有連接,返回值為1表示連接。
前兩個通道COM為串口通道,串口總是返回1,第三個通道為網口通道,用于連接ZDevelop。
![7.png](https://file.elecfans.com//web2/M00/46/10/pYYBAGKQSn-AAoB9AABZgW4iZmU926.png)
當前網口通道協議查看使用PROTOCOL 指令返回當前通道的通訊協議,根據下表返回值判斷。
VAR1 = PROTOCOL(port)
port:通道號
![8.png](https://file.elecfans.com//web2/M00/46/10/poYBAGKQSn-AdAOpAAAO5fYYKSw953.png)
2.串口連接
?
串口通常可選RS232串口或RS485串口,串口默認參數為:波特率38400,數據位8,停止位1,校驗位無,串口默認為MODBUS從端,與觸摸屏通訊時無需修改,采用SETCOM指令配置串口參數。
注意:串口參數時掉電不保存的,控制器重新上電后,SETCOM參數會還原成默認值,控制器的所有串口的MODBUS協議站號ADDRESS為 1- 127,缺省=1。
串口參數可通過“控制器狀態”窗口通訊配置查詢如下圖,或“?*SETCOM”打印查看。
![9.png](https://file.elecfans.com//web2/M00/46/10/pYYBAGKQSn-Afh5PAAGPB5V4dXk597.png)
?
三控制器連接觸摸屏使用
?
1.控制器與觸摸屏通訊的參考流程
?
(1)控制器端的程序使用ZDevelop軟件編寫完成下載到控制器內。
(2)觸摸屏端的程序使用對應的編程軟件編寫完成后下載到觸摸屏保存。
(3)程序下載完成之后,選擇串口或網口連接觸摸屏與控制器脫機運行。
通訊時可用寄存器類型有如下幾種:MODBUS_BIT(布爾型),MODBUS_REG(16位整型),MODBUS_LONG(32位整型),MODBUS_IEEE(32位浮點型),MODBUS_STRING(8位字節型)。
2.下載控制器程序
控制器端的程序使用ZDevelop軟件編寫完成并下載到控制器內。
![10.png](https://file.elecfans.com//web2/M00/46/10/poYBAGKQSn-Aao6rAAJtHQqWLNs360.png)
3.下載觸摸屏程序
威綸觸摸屏端的程序使用EasyBuilder編程軟件編寫,編程方法參見威綸提供手冊,程序編程完成后,打開“系統參數設置”窗口,如下圖。
?
![11.png](https://file.elecfans.com//web2/M00/46/10/pYYBAGKQSoCATHoVAABevHvy55w474.png)
(1)添加要與觸摸屏連接的設備
設備列表里會顯示本機觸摸屏和本機設備,若有本機設備雙擊該行,若是第一次建立連接,沒有本機設備,需要新建,點擊 “新建設備/服務器...”,彈出“設備屬性”窗口。
![12.png](https://file.elecfans.com//web2/M00/46/10/poYBAGKQSoCAYYwrAAG_zaLc0h0613.png)
(2)設置設備屬性
如下圖所示,選擇設備類型,先選MODBUS IDA通訊協議,再根據觸摸屏與控制器的實際連接方式選擇。
串口通訊和網口通訊所選的設備類型不同,詳見后續說明。
?
![13.png](https://file.elecfans.com//web2/M00/46/10/pYYBAGKQSoCAGj2gAAG1DLH2r-Q521.png)
?
A.若采用串口連接
設備類型:選擇模式MODBUS RTU(Zero-based Addressing);
接口類型:選擇串口類型(RS485或RS232);
COM:通訊端口設置匹配的波特率等參數,如下圖,此時參數必須與連接到控制器的端口參數一致,設置完成確認關閉系統參數設置窗口。
?
![14.png](https://file.elecfans.com//web2/M00/46/10/poYBAGKQSoCAEf1SAACcJvSuSEU981.png)
?
B.若采用網口連接
設備類型:選擇模式MODBUS TCP/IP(Zero-based Addressing),接口類型自動改為以太網;
IP:填入當前要連接的控制器的IP地址和端口號,如下圖;
設置完成確認關閉系統參數設置窗口。
?
![15.png](https://file.elecfans.com//web2/M00/46/10/pYYBAGKQSoCAaxqQAAB4HBJhH6Y887.png)
?
系統參數設置完成后,編譯寫好的組態程序,點擊“編譯”,打開如下圖編譯窗口。
?
![16.png](https://file.elecfans.com//web2/M00/46/10/poYBAGKQSoGAK6QJAADYUq0SFXg734.png)
?
點擊右下角“開始編譯”按鈕,編譯成功打印信息提示,“開始編譯”按鈕變成“編譯”按鈕,程序不正確編譯窗口會打印出錯誤提示信息,這時需要修改程序直至編譯成功。
?
![17.png](https://file.elecfans.com//web2/M00/46/10/pYYBAGKQSoGARxSdAADnEB81xLA159.png)
?
程序編譯成功,將觸摸屏連接到PC下載程序,下載程序入口如下圖。
?
![18.png](https://file.elecfans.com//web2/M00/46/10/poYBAGKQSoGAIqPWAADbkOxjd54848.png)
?
點擊下載按鈕,通過以太網將程序下載到觸摸屏,下載完成后,程序已寫入觸摸屏,可以斷開觸摸屏與PC的連接。
(3)觸摸屏和控制器通訊
在控制器端的程序成功下載到控制器后,和觸摸屏端的程序成功下載到觸摸屏之后,可與PC斷開連接,物理連接觸摸屏與控制器,此時觸摸屏與控制器就可以相互通信了,若無法通訊,則需要檢查上一步觸摸屏端的通訊參數的配置。
(4)控制器與觸摸屏脫機仿真
若沒有控制器或觸摸屏,可采用仿真器仿真,ZDevelop程序下載到仿真器內,只支持網口連接仿真,按照上面的步驟,EasyBuilder軟件的系統參數設置時選擇設備類型為MODBUS IDA—MODBUS TCP/IP(Zero-based Addressing),IP地址填入仿真器IP:127.0.0.1,如下圖選擇“在線模擬”即可連接控制器程序與組態程序進行仿真。
?
![19.png](https://file.elecfans.com//web2/M00/46/10/pYYBAGKQSoGAf1n9AADfYUOyTCc362.png)
?
點擊在線模擬之后自動開始編譯,編譯結果正確打開如下觸摸屏仿真界面,此時可以操作。編譯不成功會出現報錯錯誤信息。
?
觸摸屏仿真界面如下圖所示:
?
![20.png](https://file.elecfans.com//web2/M00/46/10/poYBAGKQSoGAPC39AADvbsAnBvY573.png)
?
?
四觸摸屏通訊例程
?
1.課程前期準備材料
?
(1)電腦1臺:用于程序開發;
(2)控制器1個:XPLC864E,完成直線和平面圓弧插補;
(4)總線驅動器+電機(或步進驅動器+電機)2套:數量根據軸數選定;
(5)威綸觸摸屏1個:人機交互;
(6)控制器接線端子若干;
(7)網線若干;
?
(8)連接線若干。
?
2.項目配置
寄存器地址分配如下表:
?
?
![21.png](https://file.elecfans.com//web2/M00/46/10/pYYBAGKQSoKAeyfQAAAmWgjSx_A474.png)
?
?
?
本項目使用的D寄存器均為MODBUS_IEEE。
任務資源配置如下圖:本實例占用三個任務。
任務0:主循環,循環掃描外部輸入信號來決定其他任務的啟動。
任務1:由任務0啟動,加工前先用任務1執行回零程序,回零完成后任務1用于加工程序。
任務2:由任務0啟動,用于手動運動。
?
![22.png](https://file.elecfans.com//web2/M00/46/10/poYBAGKQSoKAeT8UAAB4Zon1FPk884.png)
?
如下圖,在ZDevelop軟件上通過“寄存器”窗口批量查詢MODBUS寄存器的值。
?
![23.png](https://file.elecfans.com//web2/M00/46/10/pYYBAGKQSoKAVD4aAAChJcNjJQg044.png)
3.應用程序
?
(1)威綸觸摸屏端程序
使用觸摸屏廠商提供的組態編程軟件編寫,觸摸屏通過MODBUS與控制器通訊,元件屬性設置對應MODBUS寄存器地址,按下元件可以修改對應的MODBUS寄存器地址的值,傳遞給控制器處理,程序界面如下圖。
?
![24.png](https://file.elecfans.com//web2/M00/46/10/pYYBAGKQSoKAOqbjAAFOkiDpZm4984.png)
?
(2)控制器端程序
控制器的編程界面和程序如下圖:
?
![25.png](https://file.elecfans.com//web2/M00/46/10/poYBAGKQSoKAAE3yAAH6GiF70JI214.png)
?
控制器端通過WHILE不斷的掃描MODBUS寄存器值的變化來決定是否執行對應的程序。
?
?
'**********初始化模塊*********
SETCOM(38400,8,1,0,0,4,2,1000)? ? ?'出廠模式,MODBUS字寄存器和VR空間獨立
ERRSWITCH = 3? ? ? ? ? ? '全部信息輸出
RAPIDSTOP(2)
WAIT IDLE
BASE(0,1)? ? ? ? ? ? ? ? ?'選定 X Y軸
DPOS=0,0
ATYPE=1,1
UNITS = 100,100
SPEED = 100,100
ACCEL = 1000,1000
DECEL = 1000,1000
SRAMP = 100,100
DIM run_state? ? ? ? ? ? ? ? '運行狀態? ? ? ? ? ? ? ? ?
run_state = 0? ? ? ? ? ? ? ? ?'0 停止,1 運行,2 回零
MODBUS_REG(0) = run_state? ? '顯示運行狀態
DIM radius,length? ? ? ? ? ? '半徑,長度
radius = 100? ? ? ? ? ? ? ? ?'缺省半徑大小
length = 300? ? ? ? ? ? ? ? ?'缺省長度
'FLASH_READ 0,radius,length
MODBUS_IEEE(2) = radius? ? ?'顯示半徑大小
MODBUS_IEEE(4) = length? ? ?'顯示長度
DIM home_done '回零完成的標志位? 0 未回零,1 已回零
home_done = 0 '上電進入未回零狀態
MODBUS_BIT(0) = 0? ? ? ? ? ? '啟動 按鈕復歸
MODBUS_BIT(1) = 0? ? ? ? ? ? '停止 按鈕復歸
MODBUS_BIT(4) = 0? ? ? ? ? ? '回零 按鈕復歸
MODBUS_BIT(5) = 0? '保存數據 按鈕復歸
MODBUS_BIT(1000)=0? ? ? 'X軸 回零標志為0
MODBUS_BIT(1001)=0? ? ? 'Y軸 回零標志為0
STOPTASK 2
RUNTASK 2, guidetask? ? ? ?'啟動手動運行任務
?
'**********按鍵掃描模塊*********
WHILE 1? ? ? ? ? ? ? ? ? ? ? ? ? ? '掃描觸摸屏端按鈕輸入
? ? IF MODBUS_BIT(0)= 1 THEN? ? ?'啟動按鈕按下
? ? ? ? MODBUS_BIT(0) = 0? ? ? ? ? '按鈕復歸
? ? ? ? IF run_state = 0 THEN? ? '待機停止狀態
? ? ? ? ? ?IF home_done = 0 THEN'未回零時不啟動運動
? ? ? ? ? ? ? TRACE "before move need home"
? ? ? ? ? ?ELSEIF home_done = 1 THEN'已回零啟動任務運行
? ? ? ? ? ? ? TRACE "move start"
? ? ? ? ? ? ? STOPTASK 1? ? ? ? ? ? ? ? ?'軟件安全,停止任務0
? ? ? ? ? ? ? RUNTASK 1, movetask? ? ?'啟動運行加工任務1
? ? ? ? ? ?ENDIF
? ? ? ? ENDIF
? ? ELSEIF MODBUS_BIT(1) = 1 THEN? ? '停止按鈕按下
? ? ? ? TRACE "move stop"
? ? ? ? MODBUS_BIT(1) = 0? ? ? ? ? ? ?'按鈕復歸?
? ? ? ? RAPIDSTOP(2)
? ? ? ? STOPTASK 1
? ? ? ? RAPIDSTOP(2)
? ? ? ? WAIT IDLE(0)? ?
? ? ? ? run_state = 0? ? ? ? ? ? ? ? ?'停止標志
? ? ? ? MODBUS_REG(0) = run_state? ? '顯示狀態
? ? ENDIF? ?
? ? IF MODBUS_BIT(4) = 1 THEN? ?'回零按鈕按下
? ? ? ? MODBUS_BIT(4) = 0? ? ? ? ? '回零復歸? ?
? ? ? ? IF run_state= 0? THEN
? ? ? ? ? ?stoptask 1
? ? ? ? ? ?runtask 1,home_task? ? ?'啟動回零任務
? ? ? ? ENDIF
? ? ENDIF? ? ?
? ? '''保存數據處理
? ? IF MODBUS_BIT(5) = 1 THEN? ?'保存數據 按鈕按下
? ? ? ? MODBUS_BIT(5) = 0? ? ? ? ? '保存數據 按鈕復歸
? ? ? ? PRINT "寫入數據到FLASH"
? ? ? ? radius = MODBUS_IEEE(2)??
? ? ? ? length = MODBUS_IEEE(4)?
? ? ? ? FLASH_WRITE 0,radius,length'往扇區0寫入數據
? ? ENDIF
WEND
END
?
'**********加工運動模塊*********
movetask:? ? ? ? ? ? ? ? ? ? '運行畫圓弧+跑道的任務
? ? run_state =1 '進入運行狀態
? ? MODBUS_REG(0) = run_state
? ? radius = MODBUS_IEEE(2)? ? ? '讀取半徑
? ? length = MODBUS_IEEE(4)? ? ? '讀取長度
? ? TRIGGER
? ? BASE(0,1)? ? ? ? ? ? ? ? ? ? ?'選定 X Y軸
? ? MOVEABS(0,0)
? ? MOVE(length,0)? ? ? ? ? ? ? ? '從原點開始走跑道軌跡
? ? MOVECIRC(0,radius*2,0,radius,0)
? ? MOVE(-length,0)
? ? MOVECIRC(0,-radius*2,0,-radius,0)
? ? WAIT IDLE(0)
? ? run_state = 0'進入待機狀態
? ? MODBUS_REG(0) = run_state
END?
?
'**********回零任務*********
home_task:
? ? TRACE "enter home task"
? ? run_state = 2? ? ? ? ? ? ? '回零標志
? ? MODBUS_REG(0) = run_state? ?'顯示狀態
? ? TRIGGER?
? ? BASE(0,1)
? ? CANCEL(2) AXIS(0)'先軸0,軸1停止
? ? CANCEL(2) AXIS(1)
? ? WAIT IDLE(0)
? ? WAIT IDLE(1)
? ? MOVEABS(0) AXIS(0)'虛擬設備軸0的歸零,實際軸使用DATUM回零
? ? MOVEABS(0) AXIS(1)'虛擬設備軸1的歸零
? ? WAIT IDLE(0)
? ? MODBUS_BIT(1000)=1'設置軸0已歸零的標志
? ? WAIT IDLE(1)
? ? MODBUS_BIT(1001)=1'設置軸1已歸零的標志?
? ? home_done = 1
? ? TRACE "home task done"
? ? run_state = 0? ? '回到待機狀態
? ? MODBUS_REG(0) = run_state
END
?
'**********手動運動*********
guidetask:
? ? WHILE 1
? ? ? ?IF run_state = 0 THEN? ? ? ? ? ? ? '判斷是否處于停止狀態
? ? ? ? ? BASE(0)
? ? ? ? ? IF MODBUS_BIT(10) = 1 THEN? ? ? ?'左
? ? ? ? ? ? ?MODBUS_BIT(10) = 0
? ? ? ? ? ? ?VMOVE(-1)
? ? ? ? ? ELSEIF MODBUS_BIT(11) = 1 THEN? ? ? '右
? ? ? ? ? ? ?MODBUS_BIT(11) = 0
? ? ? ? ? ? ?VMOVE(1)
? ? ? ? ? ELSEIF MTYPE = 10 OR MTYPE = 11 THEN? '非VMOVE運動
? ? ? ? ? ? ?CANCEL(2)
? ? ? ? ? ENDIF
? ? ? ? ? BASE(1)
? ? ? ? ? IF MODBUS_BIT(20) = 1 THEN? ? ? ? '左
? ? ? ? ? ? ?MODBUS_BIT(20) = 0
? ? ? ? ? ? ?VMOVE(-1)
? ? ? ? ? ELSEIF MODBUS_BIT(21) = 1 THEN? ? ? '右
? ? ? ? ? ? ?MODBUS_BIT(21) = 0
? ? ? ? ? ? ?VMOVE(1)
? ? ? ? ? ELSEIF MTYPE = 10 OR MTYPE = 11 THEN? '非VMOVE運動
? ? ? ? ? ? ?CANCEL(2)
? ? ? ? ? ENDIF
? ? ? ?ENDIF
? ? ? ?DELAY(100)
? ? WEND
END
?
(3)應用程序運動效果
A.軸位置曲線XY模式下的合成插補軌跡
?
![26.png](https://file.elecfans.com//web2/M00/46/10/pYYBAGKQSoKAa5hNAACjON3reAM394.png)
?
B.XY模式下的合成插補軌跡
?
![27.png](https://file.elecfans.com//web2/M00/46/10/poYBAGKQSoKAFWOXAACG9Lcuwr0973.png)
?
?
?
本次,正運動技術經濟型EtherCAT運動控制器(四):ModbusRTU或ModbusTcp與觸摸屏通訊?,就分享到這里。
?
審核編輯:湯梓紅
?
評論