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