一種用于伺服驅(qū)動(dòng)器中的 精簡(jiǎn)可編程邏輯腳本
文:施耐德電氣(中國(guó))有限公司2021年第四期
1 前言
伺服驅(qū)動(dòng)器作為一個(gè)位置跟隨控制設(shè)備,往往只有控制電機(jī)跟隨運(yùn)動(dòng)指令的功能,因此常常與PLC或運(yùn)動(dòng)控制器一起構(gòu)成一個(gè)運(yùn)動(dòng)控制系統(tǒng),完成期望的運(yùn)動(dòng)。
某些伺服驅(qū)動(dòng)器具有運(yùn)動(dòng)序列表(Motion Sequence)功能。用戶可以通過(guò)配置運(yùn)動(dòng)序列表在伺服里定義一系列需要的運(yùn)動(dòng)動(dòng)作,并通過(guò)一些條件來(lái)連接這些運(yùn)動(dòng)動(dòng)作。但是通過(guò)運(yùn)動(dòng)序列表只能完成相對(duì)簡(jiǎn)單的系統(tǒng)定義過(guò)的邏輯功能,因此只能在一些很簡(jiǎn)單的邏輯運(yùn)動(dòng)場(chǎng)合下替代PLC或運(yùn)動(dòng)控制器。
在很多行業(yè)應(yīng)用中,出于壓縮成本的考慮,很多客戶希望在伺服驅(qū)動(dòng)器中實(shí)現(xiàn)部分PLC邏輯功能和運(yùn)動(dòng)控制功能,使得在系統(tǒng)方案設(shè)計(jì)中可以不需要PLC或者使用僅有簡(jiǎn)單邏輯控制的價(jià)格便宜的PLC來(lái)代替帶有運(yùn)動(dòng)控制功能的價(jià)格高的PLC,
以此來(lái)降低系統(tǒng)設(shè)計(jì)復(fù)雜度和減低成本。因此,帶有邏輯控制功能的伺服驅(qū)動(dòng)器將大有用武之地。
2 系統(tǒng)方案設(shè)計(jì)
2.1設(shè)計(jì)方案選擇
在伺服控制器中實(shí)現(xiàn)邏輯控制,主要有兩種方法:
(1)將PLC設(shè)計(jì)到伺服控制器中,使用PLC軟件來(lái)編寫(xiě)梯形圖,下載到伺服控制器中運(yùn)行。
(2)在伺服控制器中設(shè)計(jì)一個(gè)腳本解釋器,來(lái)解釋用戶編寫(xiě)的腳本邏輯。
方法1需要在伺服控制器中增加相應(yīng)PLC的硬件來(lái)執(zhí)行PLC的固件系統(tǒng),因此伺服控制器硬件成本會(huì)增加,不符合用戶降
低成本的初衷。
方法2是一種純軟件的方案,可以在伺服控制器的處理器中實(shí)現(xiàn)腳本解釋執(zhí)行的功能,因此不需要增加成本,符合用戶需求。
因此在本方案中選擇方法2作為解決方案。用戶可以在PC上編寫(xiě)腳本邏輯,并通過(guò)USB線纜下載到伺服控制器中。如圖1所示。
圖 1
2.2腳本的組成結(jié)構(gòu)
腳本整體由兩大部分組成:
? PC端的腳本邏輯編寫(xiě)及翻譯
? 伺服驅(qū)動(dòng)器端的腳本邏輯解釋器
圖 2
3 腳本的設(shè)計(jì)實(shí)現(xiàn)
3.1腳本語(yǔ)言的設(shè)計(jì)
腳本語(yǔ)言的設(shè)計(jì)需要完成:
? 指令集的設(shè)計(jì)
? 語(yǔ)法的設(shè)計(jì)
? 指令及語(yǔ)法的錯(cuò)誤檢查
3.1.1指令集的設(shè)計(jì)
根據(jù)設(shè)備需要完成的基本邏輯行為,設(shè)計(jì)相應(yīng)的指令集。
對(duì)于伺服驅(qū)動(dòng)器來(lái)說(shuō),基本邏輯行為主要有以下幾點(diǎn):
(1)邏輯運(yùn)算相關(guān)指令
? 內(nèi)存讀寫(xiě)指令
? 加減乘除取模指令
? 與或非指令
? 比較指令
? 跳轉(zhuǎn)指令
? 循環(huán)指令
(2)運(yùn)動(dòng)相關(guān)
? 速度值設(shè)置指令
? 加減速度值設(shè)置指令
? 位置值設(shè)置指令
? 速度運(yùn)動(dòng)指令
? 相對(duì)位置運(yùn)動(dòng)指令
? 絕對(duì)位置運(yùn)動(dòng)指令
? 點(diǎn)動(dòng)指令
? 尋原點(diǎn)指令
? 速度/位置/電流讀取指令
(3)外設(shè)
? 定時(shí)器時(shí)間設(shè)置指令
? 定時(shí)器計(jì)時(shí)完成讀取指令
3.1.2語(yǔ)法的設(shè)計(jì)
所有語(yǔ)句以 “S::” 開(kāi)頭,以”;”結(jié)束。
整個(gè)程序結(jié)構(gòu)由下面3種功能塊組成:
? Param block
? Init block
? Motion block
Param Block用于用戶參數(shù)配置。腳本為用戶提供16個(gè)32位的可配置參數(shù)空間,用戶可工藝所需的速度位置信息等。例如:
nit Block用于初始化腳本所需變量和配置系統(tǒng)參數(shù)。腳本為用戶提供50個(gè)32位的內(nèi)存空間(MD),用戶可以用于存儲(chǔ)腳本邏輯編程中的中間變量。比如讀取到的速度位置值,或者計(jì)算的中間結(jié)果等。
Motion Block是用于腳本邏輯編寫(xiě)。其中每個(gè)Motion Block由1個(gè)或多個(gè)Event組成。每個(gè)event包括一個(gè)IF條件語(yǔ)句和一個(gè)THEN執(zhí)行語(yǔ)句。例如:
一個(gè)motion block就是一個(gè)死循環(huán)(圖3中紅色箭頭),跳轉(zhuǎn)指令NextMotionID就是這個(gè)死循環(huán)的出口。而在motion block內(nèi),腳本語(yǔ)句按event號(hào)順序執(zhí)行。如圖3所示。
圖 3
3.2腳本編譯器的設(shè)計(jì)
腳本編譯器的設(shè)計(jì)需要完成:
? 編譯方法的選擇
? 腳本語(yǔ)法的解析
? 編譯目標(biāo)的結(jié)構(gòu)設(shè)計(jì)
3.2.1編譯方法的選擇
程序文本的編譯執(zhí)行通常有兩種方法:
? 把文本整體編譯成CPU可執(zhí)行的二進(jìn)制文件,如PLC等;
? 由解釋器直接來(lái)解釋源代碼執(zhí)行,如EXCEL VBA等。
伺服驅(qū)動(dòng)器是一個(gè)沒(méi)有操作系統(tǒng)或微多任務(wù)操作系統(tǒng)的嵌入式系統(tǒng),因此如果采取方式一,先編譯器整體編譯再執(zhí)行的方式,伺服自身的代碼與腳本編譯的代碼之間的鏈接難度較大,而且腳本源碼的調(diào)試會(huì)面臨很大的問(wèn)題。
伺服驅(qū)動(dòng)器是CPU和內(nèi)存資源都比較少的嵌入式系統(tǒng),因此如果采取方式二,邊解釋邊執(zhí)行的方式,直接對(duì)腳本文本代碼的字符串處理會(huì)消耗大量的CPU資源,所以也并不適用。
結(jié)合以上分析,我們采取了折中的方式,在PC端先進(jìn)行一次編譯,將腳本文本代碼邏輯編譯成一種特定的數(shù)據(jù)結(jié)構(gòu),并將數(shù)據(jù)結(jié)構(gòu)下載到伺服驅(qū)動(dòng)器中。在伺服驅(qū)動(dòng)器里的解釋器再來(lái)解釋執(zhí)行數(shù)據(jù)結(jié)構(gòu)里的內(nèi)容。
根據(jù)腳本代碼的特點(diǎn),數(shù)據(jù)結(jié)構(gòu)分為Motion和Event兩種,并有各自的數(shù)據(jù)結(jié)構(gòu)池,每個(gè)數(shù)據(jù)結(jié)構(gòu)池里包含一個(gè)對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu)數(shù)組,如圖4所示。
圖 4
Motion和Event 數(shù)據(jù)結(jié)構(gòu)池的本質(zhì)是結(jié)構(gòu)體數(shù)組,也是整個(gè)腳本功能承上啟下的核心。
3.2.2腳本語(yǔ)法的解析
在PC上的編譯下載小工具中,通過(guò)字符串解析來(lái)處理出所需信息,步驟如下:
(1)讀取腳本文件中一行信息,摘取”S::”到”;”之間的字符串
(2)判斷該行是MotionID/EventID/IF/THEN行
(3)以 “AND”和”O(jiān)R”關(guān)鍵字把拆分該行字符串拆解成n份
(4)將每一份信息填寫(xiě)到對(duì)應(yīng)Motion和Event數(shù)據(jù)結(jié)構(gòu)池的目標(biāo)結(jié)構(gòu)體中相應(yīng)的IF/THEN位置
(5)將目標(biāo)結(jié)構(gòu)體通過(guò)USB線纜下載到伺服驅(qū)動(dòng)器中。
3.2.3編譯目標(biāo)的結(jié)構(gòu)設(shè)計(jì)
目標(biāo)數(shù)據(jù)結(jié)構(gòu)分為Motion和Event兩種,并有各自的數(shù)據(jù)結(jié)構(gòu)池,每個(gè)數(shù)據(jù)結(jié)構(gòu)池里包含一個(gè)對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu)數(shù)組。例如有一個(gè)腳本邏輯,用到了3個(gè)Motion。第一個(gè)Motion里包含5個(gè)Event,第二個(gè)里也包含5個(gè)Event,第三個(gè)里包含3個(gè)Event。則總共用到了13個(gè)Event。
MotionPool 與Event Pool之間的聯(lián)系如圖5所示。
圖 5
Motion Pool由多個(gè)Motion結(jié)構(gòu)組成,結(jié)構(gòu)體大致如下:
Event Pool由多個(gè)Event結(jié)構(gòu)組成,一個(gè)Event結(jié)構(gòu)體由一個(gè)條件結(jié)構(gòu)體和一個(gè)行為結(jié)構(gòu)體兩部分組成。
條件結(jié)構(gòu)體
一個(gè)條件結(jié)構(gòu)體就相當(dāng)于腳本代碼中一個(gè)IF語(yǔ)句拆分后的條件表格,比如:
行為結(jié)構(gòu)體
一個(gè)行為結(jié)構(gòu)體就相當(dāng)于腳本代碼中一個(gè)THEN語(yǔ)句拆分后的行為表格。
編譯結(jié)束后,我們將得到MotionPool和EventPool兩個(gè)記錄有腳本邏輯信息的結(jié)構(gòu)體數(shù)組。通過(guò)USB電纜,將這兩個(gè)結(jié)構(gòu)體數(shù)組下載到伺服驅(qū)動(dòng)器中,由伺服驅(qū)動(dòng)器中的腳本解釋器來(lái)解釋執(zhí)行結(jié)構(gòu)體中記錄的腳本邏輯信息。
3.3腳本解釋器的設(shè)計(jì)
腳本解釋器的設(shè)計(jì)需要完成:
? 解釋器的執(zhí)行流程設(shè)計(jì)
? 對(duì)編譯目標(biāo)結(jié)構(gòu)體中條件的判斷
? 對(duì)編譯目標(biāo)結(jié)構(gòu)體中行為的執(zhí)行
3.3.1解釋器的執(zhí)行流程設(shè)計(jì)
解釋器默認(rèn)從Motion0開(kāi)始執(zhí)行,從 Motion0中Event0開(kāi)始順序執(zhí)行每個(gè)Event,執(zhí)行到motion0中的最后一個(gè)Event后回到Event0循環(huán)執(zhí)行。如果執(zhí)行到某個(gè)Event中的行為表(THEN)中的NextMotionID指令,則直接跳轉(zhuǎn)到下一個(gè)Motion,并從Event0開(kāi)始循環(huán)執(zhí)行。流程圖如圖6所示。
圖 6
3.3.2對(duì)編譯目標(biāo)結(jié)構(gòu)體中條件的判斷
在每個(gè)Motion循環(huán)周期的開(kāi)始,都要先讀取伺服驅(qū)動(dòng)器的所有有關(guān)變量,包括當(dāng)前位置,當(dāng)前速度,當(dāng)前電流值, 當(dāng)前時(shí)鐘狀態(tài),當(dāng)前數(shù)字量輸入值,和當(dāng)前運(yùn)動(dòng)狀態(tài)等信息。這些信息會(huì)在條件判斷時(shí)使用。
在目前的LXM16產(chǎn)品中,為了簡(jiǎn)單起見(jiàn),邏輯條件中只有“與”,而沒(méi)有“或”和“非”兩個(gè)條件。因此,對(duì)條件的判斷得到了大大的簡(jiǎn)化。解釋器只需要對(duì)Event結(jié)構(gòu)體中的條件結(jié)構(gòu)體中的每一個(gè)條件進(jìn)行判斷,只有所有條件都為“TRUE”,才算條件成立。
3.3.3對(duì)編譯目標(biāo)結(jié)構(gòu)體中行為的執(zhí)行
當(dāng)Event結(jié)構(gòu)體中相應(yīng)的Event條件滿足時(shí),解釋器開(kāi)始執(zhí)行該Event結(jié)構(gòu)體中對(duì)應(yīng)的行為結(jié)構(gòu)體的內(nèi)容。在行為結(jié)構(gòu)體中,會(huì)記錄每一個(gè)語(yǔ)句的執(zhí)行順序,解釋器會(huì)按照?qǐng)?zhí)行順序號(hào),按順序執(zhí)行。執(zhí)行時(shí),解釋器會(huì)先按照順序號(hào)讀取行為結(jié)構(gòu)體中的相應(yīng)數(shù)據(jù),并調(diào)用伺服驅(qū)動(dòng)器內(nèi)部的命令函數(shù)來(lái)完成執(zhí)行。
比如對(duì)于指令:
S:: THEN DO_0=HIGH ANDRelativeTarget Position=10000;
解釋器會(huì)順序執(zhí)行:
? 調(diào)用伺服內(nèi)部DO強(qiáng)制輸出函數(shù),并將1作為參數(shù)傳給該函數(shù),使DO_0輸出高
? 調(diào)用伺服內(nèi)部相對(duì)運(yùn)動(dòng)函數(shù),并將10000作為參數(shù)傳給該函數(shù),使電機(jī)向正方向運(yùn)行10000個(gè)脈沖。
3.4 腳本調(diào)試器的設(shè)計(jì)
3.4.1調(diào)試器界面
圖 7
斷點(diǎn)設(shè)置區(qū):用來(lái)設(shè)置斷點(diǎn)在腳本代碼中的位置
當(dāng)前狀態(tài)區(qū):用來(lái)顯示當(dāng)前腳本運(yùn)行狀態(tài)
變量選擇區(qū):用來(lái)選擇需要寫(xiě)或監(jiān)視的變量
變量監(jiān)視區(qū):用來(lái)實(shí)時(shí)顯示監(jiān)視變量的值
變量賦值區(qū):用來(lái)給所選變量寫(xiě)入一個(gè)值
調(diào)試操作區(qū):設(shè)置斷點(diǎn)/全速/單步/暫停/退出
3.4.2斷點(diǎn)列表
在LXM16D中,最多同時(shí)可以設(shè)置4個(gè)斷點(diǎn),另外還有一個(gè)為單步調(diào)試服務(wù)的臨時(shí)斷點(diǎn),因此斷點(diǎn)列表能記錄5個(gè)斷點(diǎn)位置。
用戶設(shè)置的斷點(diǎn)位置信息存放在斷點(diǎn)列表中。斷點(diǎn)列表中每個(gè)斷點(diǎn)位置信息包含以下幾點(diǎn):
? Motion號(hào)
? Event號(hào)
? 斷點(diǎn)位置(IF或THEN的前面)
? 該斷點(diǎn)是否使能
例如:
圖 8
其中有一個(gè)為單步執(zhí)行服務(wù)的臨時(shí)斷點(diǎn)。當(dāng)使用單步調(diào)試時(shí),表中臨時(shí)斷點(diǎn)行記錄的是當(dāng)前斷點(diǎn)位置的下一個(gè)位置。腳本解釋器一邊執(zhí)行腳本邏輯一邊檢查當(dāng)前位置是否在斷點(diǎn)列表中,如果當(dāng)前位置在列表中,則停止執(zhí)行腳本邏輯。
斷點(diǎn)列表的大小可根據(jù)系統(tǒng)內(nèi)存情況裁剪。如果系統(tǒng)內(nèi)存允許,可以設(shè)置更多的斷點(diǎn)。
3.4.3調(diào)試器流程設(shè)計(jì)
與其他代碼調(diào)試器一樣,腳本調(diào)試器的設(shè)計(jì)也必須要滿足以下兩點(diǎn):
? 在斷點(diǎn)處停下后,整個(gè)腳本不再執(zhí)行;
? 在斷點(diǎn)處停下后,再執(zhí)行全速或單步,腳本要從斷點(diǎn)處開(kāi)始執(zhí)行。
腳本功能為一個(gè)獨(dú)立的功能塊,該功能塊在伺服驅(qū)動(dòng)器固件中的主循環(huán)中被調(diào)用,每個(gè)主循環(huán)周期調(diào)用一次。圖9為調(diào)試器流程圖,從“開(kāi)始”到“結(jié)束”為腳本功能塊執(zhí)行 一次。
圖9
4 小結(jié)
終端設(shè)備的智能化是一個(gè)發(fā)展趨勢(shì),它可以讓系統(tǒng)終端設(shè)備處理局部數(shù)據(jù),從而大大降低整個(gè)系統(tǒng)核心設(shè)計(jì)的復(fù)雜度,從而更好地控制系統(tǒng)成本。帶有腳本功能的伺服驅(qū)動(dòng)器LXM16D,在機(jī)床刀庫(kù)、物流分揀、碼垛機(jī)械臂等領(lǐng)域都得到了成功應(yīng)用。
中傳動(dòng)網(wǎng)版權(quán)與免責(zé)聲明:
凡本網(wǎng)注明[來(lái)源:中國(guó)傳動(dòng)網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國(guó)傳動(dòng)網(wǎng)(www.wangxinlc.cn)獨(dú)家所有。如需轉(zhuǎn)載請(qǐng)與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個(gè)人轉(zhuǎn)載使用時(shí)須注明來(lái)源“中國(guó)傳動(dòng)網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明其他來(lái)源的稿件,均來(lái)自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請(qǐng)保留稿件來(lái)源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。
如涉及作品內(nèi)容、版權(quán)等問(wèn)題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。

關(guān)注伺服與運(yùn)動(dòng)控制公眾號(hào)獲取更多資訊

關(guān)注直驅(qū)與傳動(dòng)公眾號(hào)獲取更多資訊

關(guān)注中國(guó)傳動(dòng)網(wǎng)公眾號(hào)獲取更多資訊

掃碼關(guān)注小程序
時(shí)刻關(guān)注行業(yè)動(dòng)態(tài)



填寫(xiě)郵件地址,訂閱更多資訊:
撥打電話咨詢:13751143319 余女士
郵箱:chuandong@chuandong.cn
- 運(yùn)動(dòng)控制
- 伺服系統(tǒng)
- 機(jī)器視覺(jué)
- 機(jī)械傳動(dòng)
- 編碼器
- 直驅(qū)系統(tǒng)
- 工業(yè)電源
- 電力電子
- 工業(yè)互聯(lián)
- 高壓變頻器
- 中低壓變頻器
- 傳感器
- 人機(jī)界面
- PLC
- 電氣聯(lián)接
- 工業(yè)機(jī)器人
- 低壓電器
- 機(jī)柜