XPLC006E功能簡(jiǎn)介
XPLC006E是正運(yùn)動(dòng)運(yùn)動(dòng)控制器推出的一款多軸經(jīng)濟(jì)型EtherCAT總線(xiàn)運(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軸直線(xiàn)插補(bǔ)、電子凸輪、電子齒輪、同步跟隨、虛擬軸設(shè)置等功能。
XPLC006E支持多任務(wù)同時(shí)運(yùn)行,同時(shí)可以在PC上直接仿真運(yùn)行,編程方式多種可選,支持ZDevelop軟件的Basic/PLC梯形圖/HMI組態(tài)和常用上位機(jī)軟件編程。
XPLC006E只支持EtherCAT總線(xiàn)軸,不支持脈沖軸和編碼器軸。采用EtherCAT總線(xiàn)與驅(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功能簡(jiǎn)介
?
XPLC864E在XPLC006E的功能基礎(chǔ)上做了升級(jí)(即上節(jié)介紹的XPLC006E的功能都支持),部分資源空間優(yōu)于XPLC006E,使用方法基本一致,不同之處在于XPLC864E,硬件支持32點(diǎn)輸入、32點(diǎn)輸出、2個(gè)ADC、2個(gè)DAC,支持脈沖軸和總線(xiàn)軸混合使用,總實(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總線(xiàn)運(yùn)動(dòng)控制器支持多種編程方式,支持使用正運(yùn)動(dòng)技術(shù)自主研發(fā)的ZDevelop開(kāi)發(fā)環(huán)境的Basic語(yǔ)言和PLC梯形圖,上一節(jié)講解了ModbusRTU或ModbusTcp與觸摸屏通訊,本節(jié)內(nèi)容主要講解控制器多任務(wù)運(yùn)行的優(yōu)勢(shì)。
? 一多任務(wù)概念
1.什么是任務(wù)
任務(wù)是執(zhí)行I/O刷新和用戶(hù)程序等一系列指令處理的功能,控制器內(nèi)的程序均以任務(wù)的方式運(yùn)行,一個(gè)任務(wù)是指一個(gè)正在運(yùn)行的程序。
2.任務(wù)編號(hào)的作用
任務(wù)編號(hào)用于區(qū)分任務(wù),沒(méi)有特殊的含義,任務(wù)編號(hào)的范圍在控制器支持的任務(wù)數(shù)量?jī)?nèi)選取。
3.任務(wù)類(lèi)型
任務(wù)的類(lèi)型無(wú)需指定,用戶(hù)可用的任務(wù)分兩類(lèi),自定義的任務(wù)和中斷任務(wù)。自定義任務(wù)由用戶(hù)自行開(kāi)啟,指定任務(wù)編號(hào),并編寫(xiě)任務(wù)內(nèi)的代碼;中斷任務(wù)在觸發(fā)了控制器支持的中斷后才會(huì)被使用,中斷程序執(zhí)行完成中斷任務(wù)便停止,中斷任務(wù)無(wú)需指定任務(wù)號(hào),按系統(tǒng)默認(rèn)的任務(wù)號(hào)運(yùn)行。
4.任務(wù)優(yōu)先級(jí)
任務(wù)默認(rèn)是無(wú)優(yōu)先級(jí)的,需要優(yōu)先執(zhí)行的任務(wù)支持PROC_PRIORITY設(shè)置優(yōu)先級(jí),任務(wù)的優(yōu)先級(jí)高表現(xiàn)在一個(gè)系統(tǒng)周期中優(yōu)先執(zhí)行,再執(zhí)行其他的任務(wù)。
5.多任務(wù)
多任務(wù)即多個(gè)程序模塊同時(shí)執(zhí)行,并且能夠互不干擾的同時(shí)運(yùn)行,任務(wù)的使用由用戶(hù)自行分配,但不能超過(guò)控制器支持的最大任務(wù)數(shù)。
6.任務(wù)數(shù)量查詢(xún)
XPLC006E支持多任務(wù),不同的控制器支持的任務(wù)數(shù)量不同,支持的具體任務(wù)數(shù)量,可連接控制器之后,在ZDevelop軟件菜單欄“控制器狀態(tài)”查看或在線(xiàn)命令發(fā)送?*max指令查看,如下圖,表示該控制器用戶(hù)可自定義的任務(wù)有10個(gè),任務(wù)編號(hào)范圍為0-9。

二多任務(wù)作用
?
多任務(wù)可以將復(fù)雜的程序分成幾個(gè)部分,分別開(kāi)任務(wù)來(lái)同時(shí)執(zhí)行,每個(gè)部分的任務(wù)是獨(dú)立的,這樣就可以使設(shè)備的復(fù)雜運(yùn)動(dòng)過(guò)程變得簡(jiǎn)單明了,編程更靈活,例如參數(shù)更新、加工、急停、IO掃描等可以劃分不同的任務(wù)模塊,沒(méi)有多任務(wù)的場(chǎng)合程序只能順序執(zhí)行,使得程序的執(zhí)行效率十分低下。
在一個(gè)控制周期內(nèi),不同的任務(wù)根據(jù)當(dāng)前執(zhí)行的指令的差異,任務(wù)占用的時(shí)間也會(huì)有差異,并不完全相同,任務(wù)在默認(rèn)情形下不存在優(yōu)先級(jí),可通過(guò)PROC_PRIORITY指令去設(shè)置某個(gè)任務(wù)的優(yōu)先級(jí)。
如下圖所示,設(shè)置任務(wù)5優(yōu)先級(jí)為3,優(yōu)先級(jí)范圍1-10,10最高。

?
三多任務(wù)運(yùn)行特點(diǎn)
1.運(yùn)動(dòng)控制器每個(gè)運(yùn)動(dòng)控制周期(SERVO PERIOD)包含MC、SS、以及用戶(hù)多任務(wù)程序的運(yùn)行,如下圖所示。
?

(1)Motion Control:運(yùn)動(dòng)控制、EtherCAT通訊、中斷的實(shí)現(xiàn)。
(2)運(yùn)動(dòng)控制包含:?jiǎn)屋S運(yùn)動(dòng)控制、多軸插補(bǔ)運(yùn)動(dòng)、機(jī)械手正反解算法等;EtherCAT通訊包含PDO通訊與SDO通訊。
(3)System Service:包含RS232串口通訊、RS485串口通訊、CAN通訊、EtherNET通訊(MODBUS RTU主從通訊以及ZDevelop相關(guān)軟件服務(wù))
(4)TASK0、…、TASK21:對(duì)應(yīng)于各個(gè)任務(wù)的運(yùn)行,任務(wù)編號(hào)從0開(kāi)始,第0個(gè)任務(wù)到第21個(gè)任務(wù)。
2.不同類(lèi)型文件的任務(wù)執(zhí)行規(guī)則。
Basic的所有任務(wù)只掃描運(yùn)行一次便停止(除非程序內(nèi)有WHILE死循環(huán)才會(huì)一直運(yùn)行)。一個(gè)工程項(xiàng)目下Basic文件支持同時(shí)存在多個(gè)自動(dòng)運(yùn)行任務(wù),自動(dòng)運(yùn)行任務(wù)是上電后同時(shí)開(kāi)啟的,無(wú)先后順序。
由于PLC程序是自行循環(huán)掃描的,故在一個(gè)工程項(xiàng)目下建議PLC只設(shè)置一個(gè)主任務(wù)循環(huán),PLC子程序若以任務(wù)開(kāi)啟,只運(yùn)行一次。設(shè)置方法為給PLC文件只一個(gè)自動(dòng)運(yùn)行任務(wù)號(hào)或者在其他任務(wù)中開(kāi)啟一個(gè)PLC任務(wù),那么這個(gè)PLC任務(wù)便為PLC的主任務(wù)。
HMI程序必須要以一個(gè)任務(wù)去啟動(dòng),否則下載程序后無(wú)法運(yùn)行HMI,初始化函數(shù)只掃描執(zhí)行一次,周期函數(shù)循環(huán)掃描。一個(gè)工程項(xiàng)目下HMI文件僅支持一個(gè),組態(tài)程序要運(yùn)行只能通過(guò)給HMI文件設(shè)置自動(dòng)運(yùn)行任務(wù)號(hào)。

控制器同時(shí)處理四個(gè)任務(wù),如上圖,任務(wù)0123之間是并行的,互不干擾,控制器下載程序之后這四個(gè)文件任務(wù)同時(shí)啟動(dòng),同時(shí)還能在文件任務(wù)執(zhí)行的時(shí)候,使用任務(wù)指令開(kāi)啟SUB子程序任務(wù)或標(biāo)記任務(wù),SUB子程序任務(wù)或標(biāo)記任務(wù)一旦開(kāi)啟,便與主程序無(wú)關(guān),任務(wù)運(yùn)行停止后可重復(fù)觸發(fā)任務(wù)執(zhí)行。
?
3.控制器多任務(wù)的優(yōu)勢(shì)。
?
(1)程序模塊化:用戶(hù)可以將程序編寫(xiě)成多個(gè)較小的、特定的程序,來(lái)實(shí)現(xiàn)客戶(hù)設(shè)備指定的功能。
(2)并發(fā)性:每個(gè)任務(wù)可以獨(dú)立運(yùn)行,任務(wù)開(kāi)啟后,不受其他任務(wù)的影響。
(3)簡(jiǎn)化錯(cuò)誤處理:劃分多任務(wù)運(yùn)行后錯(cuò)誤處理變得簡(jiǎn)單,只需處理出錯(cuò)的任務(wù)。
(4)命令交互:程序處于運(yùn)行狀態(tài)時(shí),用戶(hù)也可以隨時(shí)進(jìn)行命令交互,如在線(xiàn)修改運(yùn)動(dòng)參數(shù),在線(xiàn)命令欄發(fā)送指令等,其他程序不受影響。
?
四多任務(wù)狀態(tài)查看
?
任務(wù)狀態(tài)有三種,正在運(yùn)行、停止和暫停,任務(wù)狀態(tài)查看有如下3種方式。
1.任務(wù)指令查看。
PROC_STATUS:任務(wù)狀態(tài)查看,只讀參數(shù)。返回值:0-任務(wù)停止,1-任務(wù)正在運(yùn)行,3-任務(wù)暫停中。
示例:
?
PRINT PROC_STATUS(0)? ? ? ? ?'打印任務(wù)0狀態(tài)
?*PROC_STATUS '打印控制器支持的所有任務(wù)的狀態(tài)
如下圖 4-7,Basic任務(wù)0和1已運(yùn)行完停止,PLC任務(wù)2正在運(yùn)行。

2.任務(wù)窗口查看。
在菜單欄“調(diào)試”→“啟動(dòng)/停止調(diào)試”打開(kāi)任務(wù)窗口(如下圖所示),任務(wù)窗口可以查看已經(jīng)開(kāi)啟的任務(wù)的任務(wù)編號(hào)、運(yùn)行狀態(tài)、當(dāng)前文件和運(yùn)行行號(hào),看不到未開(kāi)啟的任務(wù)。

Basic的任務(wù)在程序掃描完成后,任務(wù)變?yōu)镾topped狀態(tài),PLC主任務(wù)由于會(huì)循環(huán)掃描,所以一直處于Running狀態(tài)。
3.打開(kāi)菜單欄“調(diào)試”→“故障診斷”窗口。
可查看控制器的支持的所有任務(wù)編號(hào)的狀態(tài)、所處的文件和運(yùn)行的行號(hào)。窗口也可以顯示各任務(wù)報(bào)錯(cuò)的故障信息,如下圖所示。

?
五多任務(wù)啟動(dòng)與停止
?
1.多任務(wù)操作指令
多任務(wù)主要操作指令如下:
(1)END:當(dāng)前任務(wù)正常結(jié)束
(2)STOP:停止指定文件運(yùn)行的任務(wù)
(3)STOPTASK :停止指定任務(wù)
(4)HALT :停止所有任務(wù)
(5)RUN :?jiǎn)?dòng)新任務(wù)運(yùn)行一個(gè)文件
(6)RUNTASK:?jiǎn)?dòng)新任務(wù)運(yùn)行一個(gè)SUB或者運(yùn)行一個(gè)帶標(biāo)簽的程序
(7)PAUSETASK:暫停指定任務(wù)
(8)RESUMETASK:恢復(fù)指定任務(wù),恢復(fù)后任務(wù)從停止處繼續(xù)往下執(zhí)行
Basic和PLC的任務(wù)操作均是使用以上指令。
?
2.多任務(wù)啟動(dòng)
?
任務(wù)啟動(dòng)有三種方式,分別是自動(dòng)運(yùn)行任務(wù)號(hào)設(shè)置、RUN指令和RUNTASK指令,使用指令開(kāi)啟任務(wù)時(shí),程序掃描執(zhí)行到該指令后再開(kāi)啟任務(wù)。(開(kāi)啟任務(wù)時(shí)注意任務(wù)編號(hào)的填寫(xiě),任務(wù)不能重復(fù)開(kāi)啟)
(1)自動(dòng)運(yùn)行任務(wù)號(hào):在“文件視圖”窗口設(shè)置自動(dòng)運(yùn)動(dòng)任務(wù)號(hào)??刂破魃想姾笫紫葓?zhí)行帶自動(dòng)運(yùn)行任務(wù)號(hào)的文件,自動(dòng)運(yùn)行任務(wù)號(hào)Basic文件可設(shè)置多個(gè),PLC文件和HMI文件僅支持一個(gè)。自動(dòng)運(yùn)行文件為并行運(yùn)行,上電后同時(shí)開(kāi)啟。

(2)RUN指令將文件作為一個(gè)任務(wù)啟動(dòng)。
示例:RUN "TuXing_001.bas",2 '將TuXing_001.bas文件作為任務(wù)2啟動(dòng)
(3)RUNTASK指令將SUB子程序或帶標(biāo)簽程序作為一個(gè)任務(wù)啟動(dòng)??煽缥募_(kāi)啟全局定義的SUB子程序,要開(kāi)啟任務(wù)的標(biāo)簽程序只能存在本文件內(nèi)。
示例:RUNTASK 1,task_home '以任務(wù)1啟動(dòng)task_home子程序
?
3.多任務(wù)停止
?
停止任務(wù)指令有STOPTASK,STOP,HALT三種。(任務(wù)停止再啟動(dòng)就會(huì)從頭執(zhí)行任務(wù))
開(kāi)啟任務(wù)時(shí),一般先使用STOPTASK停止任務(wù),再RUNTASK開(kāi)啟,避免任務(wù)出現(xiàn)重復(fù)開(kāi)啟報(bào)錯(cuò)。
(1)STOPTASK支持停止文件任務(wù)、SUB子程序任務(wù)和帶標(biāo)簽的任務(wù)。
示例:STOPTASK 2?'停止任務(wù)2
(2)STOP指令支持停止Basic文件任務(wù),推薦使用STOPTASK指令,操作更簡(jiǎn)單。
(3)HALT指令停止所有任務(wù)
示例:HALT?'停止項(xiàng)目?jī)?nèi)的所有任務(wù)
→快速停止所有任務(wù)還可以使用軟件菜單欄的“緊急停止”按鈕、如下圖,項(xiàng)目?jī)?nèi)有兩個(gè)任務(wù),下載運(yùn)行后,任務(wù)0和任務(wù)1正在運(yùn)行中。

→發(fā)送在線(xiàn)命令:STOPTASK 0

→發(fā)送在線(xiàn)命令STOPTASK后停止任務(wù)0。

→再次啟動(dòng)任務(wù)可以再次下載程序。
上方程序不能使用RUN指令開(kāi)啟自動(dòng)運(yùn)行文件任務(wù)0,因?yàn)槿蝿?wù)0中自動(dòng)開(kāi)啟的任務(wù)1仍在運(yùn)行,若使用指令再次開(kāi)啟任務(wù)0,會(huì)導(dǎo)致任務(wù)1重復(fù)開(kāi)啟。若停止的任務(wù)1,則可以使用RUNTASK指令單獨(dú)開(kāi)啟任務(wù)1。
?
4.任務(wù)暫停與恢復(fù)
?
暫停任務(wù)使用PAUSETASK指令,恢復(fù)任務(wù)使用RESUMETASK指令?;謴?fù)后任務(wù)從暫停處繼續(xù)向下執(zhí)行。暫停的任務(wù)支持停止。
(1)PAUSETASK:暫停指定任務(wù)
示例:PAUSETASK 1?'暫停任務(wù)1
(2)RESUMETASK:恢復(fù)指定任務(wù)
示例:RESUMETASK 1?'繼續(xù)運(yùn)行任務(wù)1
→如下圖,項(xiàng)目?jī)?nèi)有兩個(gè)任務(wù),下載運(yùn)行后,任務(wù)0和任務(wù)1正在運(yùn)行中。

→發(fā)送在線(xiàn)命令控制任務(wù)的暫停或恢復(fù)。

→在線(xiàn)命令發(fā)送:PAUSETASK 0 '任務(wù)0被暫停

→在線(xiàn)命令發(fā)送:RESUMETASK 0?'任務(wù)0恢復(fù)運(yùn)行狀態(tài)

?
六多Basic和PLC任務(wù)相互調(diào)用
?
1.Basic調(diào)用PLC任務(wù)
?
(1)Basic文件內(nèi)使用RUN指令調(diào)用PLC文件,如下圖所示。

(2)Basic文件內(nèi)使用RUNTASK指令調(diào)用PLC內(nèi)LBL指令定義的子程序,如下圖。

2.PLC調(diào)用Basic任務(wù)
?
PLC內(nèi)使用EXE或EXEP(脈沖執(zhí)行)指令,調(diào)用Basic的任務(wù)指令,從而調(diào)用Basic文件任務(wù)或子程序任務(wù),如下圖所示。

?
?
七多任務(wù)調(diào)用示例
?
由于XPLC864E控制器ZDevelop的三種編程方式都支持,同時(shí)還支持多種插補(bǔ)功能,給出下面兩個(gè)不同的多任務(wù)程序案例參考。
程序下載運(yùn)行,首先啟動(dòng)帶自動(dòng)運(yùn)行任務(wù)號(hào)的文件,自動(dòng)運(yùn)行任務(wù)號(hào)可設(shè)置多個(gè),也可以只設(shè)置一個(gè),其他的文件任務(wù)采用RUN指令開(kāi)啟。
之后根據(jù)要調(diào)用的程序所處位置,在自動(dòng)運(yùn)行的文件中加入RUN或RUNTASK指令調(diào)用其他任務(wù)執(zhí)行。
最后在編程時(shí)按功能進(jìn)行模塊劃分,每個(gè)模塊指定一個(gè)任務(wù)號(hào)運(yùn)行,模塊程序塊在需要時(shí)才調(diào)用任務(wù)執(zhí)行,減少程序掃描時(shí)間,提高控制器的執(zhí)行效率。
?
1.Basic多任務(wù)編程
?
示例程序分為兩個(gè)Basic文件,Main文件上電自動(dòng)以任務(wù)0運(yùn)行,其他任務(wù)在任務(wù)0中使用指令開(kāi)啟,如下圖所示。

→示例程序多任務(wù)調(diào)用的框架如下圖所示。

?
(1)文件一:Main.bas
?
RAPIDSTOP(2)
WAIT IDLE
GlobalInit? ? ?'參數(shù)定義
AxesInit? ? ? ?'軸參數(shù)初始化
WHILE 1
? ?IF? SCAN_EVENT(IN(0))> 0 THEN? ? ?'啟動(dòng)主運(yùn)動(dòng)? ??
? ? ? STOPTASK 2??
? ? ? 'Basic開(kāi)啟任務(wù)調(diào)用Basic文件
? ? ? RUN "TuXing_001.bas",2? ?'以任務(wù)2運(yùn)行主運(yùn)動(dòng)程序? ??
? ?ENDIF
? ?IF? SCAN_EVENT(IN(1))> 0 THEN? ? ? '停止
? ? ? sub_stop
? ?ENDIF
? ?IF? SCAN_EVENT(IN(2))> 0 THEN? ? ? '回零
? ? ? RUNTASK 1,task_home? '以任務(wù)1啟動(dòng)回零
? ?ENDIF
WEND
END '主程序結(jié)束
?
'''參數(shù)定義
GLOBAL SUB GlobalInit()??
? ?'主程序
? ?GLOBAL CONST AXISNUM = 3? ? '總軸數(shù)
? ?GLOBAL g_state'控制器狀態(tài)
? ?g_state = 0? ?'0--初始狀態(tài);1--待機(jī);2--回零;3--運(yùn)行
? ?GLOBAL deal_home? '回零標(biāo)志
? ?deal_home = 0? ??
END SUB
?
''' 軸參數(shù)以及IO的定義
GLOBAL SUB AxesInit()
? ?BASE(0,1,2)
? ?DPOS=0,0,0
? ?MPOS=0,0,0
? ?UNITS = 100,100,100? '脈沖當(dāng)量
? ?ATYPE = 1,1,1? '步進(jìn)方式
? ?SPEED=100,100,100
? ?LSPEED=0,0,0? '起始速度
? ?CREEP=10,10,10? '回零反找速度
? ?ACCEL=1000,1000,1000
? ?DECEL=1000,1000,1000
? ?SRAMP = 20,20,20? 'S曲線(xiàn)時(shí)間設(shè)置?
? ?DATUM_IN=8,9,10? '原點(diǎn)輸入配置
? ?REV_IN=-1,-1,-1? '負(fù)向限位,與原點(diǎn)連到一起
? ?FWD_IN=-1,-1,-1? ? '正向限位
? ?ALM_IN = -1,-1,-1
? ?'特殊IO反轉(zhuǎn)改為常開(kāi)輸入
? ?INVERT_IN(8,ON)
? ?INVERT_IN(9,ON)
? ?INVERT_IN(10,ON)
? ?MERGE = ON? '缺省配置以主軸0進(jìn)行的為連續(xù)插補(bǔ)
? ?CORNER_MODE = 2'啟動(dòng)拐角減速
? ?DECEL_ANGLE = 15 * (PI/180)'開(kāi)始減速的角度 15度
? ?STOP_ANGLE = 45 * (PI/180)'降到最低速度的角度45度
END SUB
?
GLOBAL SUB task_home()
? ?g_state = 2? ?'回零中?
? ?FOR i = 0 TO AXISNUM - 1
? ? ? BASE (i)? '選擇參與運(yùn)動(dòng)的軸
? ? ? CANCEL(2)? '停止
? ? ? WAIT IDLE
? ?NEXT? ??
? ?FOR i=0 TO AXISNUM-1
? ? ? SPEED(i)=50? ? ? '回零速度
? ? ? HOMEWAIT(i)=100? ? '反找等待時(shí)間
? ? ? DATUM(3) AXIS(i)? '回零方式
? ?NEXT?
? ?WAIT UNTIL IDLE(0) AND IDLE(1) AND IDLE(2)
? ?WA 10
? ?PRINT "回零完成..."? ??
? ?BASE(0,1,2)? ??
? ?DPOS=0,0,0
? ?MPOS=0,0,0? ??
? ?g_state = 1? ? '回零完成,回到待機(jī)狀態(tài)?
? ?deal_home = 1? ?'回零完成標(biāo)志
END SUB
?
GLOBAL SUB sub_stop()? ? '停止
? ?STOPTASK 2? ? ? ?'停止運(yùn)動(dòng)主程序
? ?STOPTASK 1? ? '
? ?RAPIDSTOP(2)
? ?WAIT IDLE
? ?g_state = 1? ? '軸停止,回到待機(jī)狀態(tài)? ?
END SUB
?
(2)文件二:TuXing_001.bas
?
IF deal_home = 1 THEN? ? ? ? '判斷回零是否完成,執(zhí)行主程序模塊
? ?g_state = 3? ? ?'運(yùn)動(dòng)中
? ?PRINT "開(kāi)始運(yùn)動(dòng)..."
? ?TRIGGER
? ?BASE(0,1,2)
? ?MOVEABS(0,0,0)
? ?MOVE(100) AXIS(2)
? ?MOVECIRC(200,0,100,0,1)? ? '半徑100順時(shí)針畫(huà)半圓
? ?MOVE(0,-200)
? ?MOVECIRC(-200,0,-100,0,1)
? ?MOVE(0,200)
? ?WAIT IDLE(0)??
? ?WAIT IDLE(2)
? ?PRINT "結(jié)束運(yùn)動(dòng)..."
? ?g_state = 1? ? ?'運(yùn)動(dòng)完成?
ELSE
? ?PRINT "軸未回零,請(qǐng)先回零..."
ENDIF
END
?
示波器采樣各軸位置曲線(xiàn)和XY模式下的合成軌跡。

位置曲線(xiàn)

XY模式下的合成軌跡
2.Basic和PLC多任務(wù)混合編程
?
PLC文件任務(wù)建議只設(shè)置一個(gè),若同時(shí)運(yùn)行兩個(gè)PLC文件任務(wù),會(huì)提示告警信息:Warn file:"PLC2.PLC" line:1 task:2, can not set PLC main task, task:1 already be set.
含義是PLC已經(jīng)有一個(gè)主任務(wù)1了,但任務(wù)2仍能正常運(yùn)行,如下所示。

PLC文件或Basic文件內(nèi)使用RUNTASK指令開(kāi)啟的PLC子程序任務(wù)只能運(yùn)行一次,與PLC內(nèi)開(kāi)啟PLC子程序效果一致。
→Basic文件內(nèi)使用RUNTASK指令開(kāi)啟的PLC子程序任務(wù),如下圖:

→PLC文件內(nèi)使用RUNTASK指令開(kāi)啟的PLC子程序任務(wù),如下圖:

示例:如下圖所示,Basic文件用于參數(shù)初始化,PLC文件用于條件控制軸運(yùn)行。Basic文件由自動(dòng)運(yùn)行任務(wù)號(hào)0開(kāi)啟,PLC文件由Basic文件內(nèi)的RUN指令開(kāi)啟,開(kāi)啟之后循環(huán)掃描。
?

示例程序:
?
(1)Basic文件程序
?
RAPIDSTOP(2)
WAIT IDLE(0)
WAIT IDLE(1)
'參數(shù)初始化
BASE(0,1)? ? ? ? ? '選擇XY
DPOS = 0,0
MPOS = 0,0
ATYPE=1,1? ? ? ? ? '脈沖方式步進(jìn)或伺服
UNITS = 100,100? ? '脈沖當(dāng)量
SPEED = 100,100
ACCEL = 500,500
DECEL = 500,500
FASTDEC=2000,2000
SRAMP=100,100? ? ? 'S曲線(xiàn)
MERGE = ON? ? ? ? ?'啟動(dòng)連續(xù)插補(bǔ)
RUN "PLC1.PLC" ,1? '調(diào)用PLC文件任務(wù)
?
(2)PLC文件梯形圖程序,上方Basic程序用PLC梯形圖實(shí)現(xiàn)如下圖。

(3)PLC梯形圖對(duì)應(yīng)語(yǔ)句表程序。(注意:PLC梯形圖和語(yǔ)句表之間支持互相轉(zhuǎn)換)
?
//直線(xiàn)插補(bǔ)運(yùn)動(dòng)
LD M8002
ZRST M0 M10
LDP X0
DEMOV K300 D0
DEMOV K400? D2
// IN1上升沿啟動(dòng)運(yùn)行,IN2按下運(yùn)動(dòng)快速停止
LDP X1
OR? M0
ANI? M1
ANI? X2
OUT M0
EXEP? ? @TRIGGER
MOVE D0 D2
LD M8100
PLS M1
END
?
(4)直線(xiàn)插補(bǔ)運(yùn)動(dòng)效果圖。位置曲線(xiàn),XY模式下的合成軌跡。
?

位置曲線(xiàn)

XY模式下的合成軌跡
?本次,正運(yùn)動(dòng)技術(shù)經(jīng)濟(jì)型EtherCAT運(yùn)動(dòng)控制器(五):多任務(wù)運(yùn)行,就分享到這里。
?
評(píng)論