一種用于伺服驅(qū)動器中的 精簡可編程邏輯腳本

文:施耐德電氣(中國)有限公司2021年第四期

  1 前言

  伺服驅(qū)動器作為一個位置跟隨控制設備,往往只有控制電機跟隨運動指令的功能,因此常常與PLC或運動控制器一起構(gòu)成一個運動控制系統(tǒng),完成期望的運動。

  某些伺服驅(qū)動器具有運動序列表(Motion Sequence)功能。用戶可以通過配置運動序列表在伺服里定義一系列需要的運動動作,并通過一些條件來連接這些運動動作。但是通過運動序列表只能完成相對簡單的系統(tǒng)定義過的邏輯功能,因此只能在一些很簡單的邏輯運動場合下替代PLC或運動控制器。

  在很多行業(yè)應用中,出于壓縮成本的考慮,很多客戶希望在伺服驅(qū)動器中實現(xiàn)部分PLC邏輯功能和運動控制功能,使得在系統(tǒng)方案設計中可以不需要PLC或者使用僅有簡單邏輯控制的價格便宜的PLC來代替帶有運動控制功能的價格高的PLC,

  以此來降低系統(tǒng)設計復雜度和減低成本。因此,帶有邏輯控制功能的伺服驅(qū)動器將大有用武之地。

  2 系統(tǒng)方案設計

  2.1設計方案選擇

  在伺服控制器中實現(xiàn)邏輯控制,主要有兩種方法:

  (1)將PLC設計到伺服控制器中,使用PLC軟件來編寫梯形圖,下載到伺服控制器中運行。

  (2)在伺服控制器中設計一個腳本解釋器,來解釋用戶編寫的腳本邏輯。

  方法1需要在伺服控制器中增加相應PLC的硬件來執(zhí)行PLC的固件系統(tǒng),因此伺服控制器硬件成本會增加,不符合用戶降

  低成本的初衷。

  方法2是一種純軟件的方案,可以在伺服控制器的處理器中實現(xiàn)腳本解釋執(zhí)行的功能,因此不需要增加成本,符合用戶需求。

  因此在本方案中選擇方法2作為解決方案。用戶可以在PC上編寫腳本邏輯,并通過USB線纜下載到伺服控制器中。如圖1所示。

伺服驅(qū)動器

圖 1

  2.2腳本的組成結(jié)構(gòu)

  腳本整體由兩大部分組成:

  ? PC端的腳本邏輯編寫及翻譯

  ? 伺服驅(qū)動器端的腳本邏輯解釋器

伺服驅(qū)動器

圖 2

  3 腳本的設計實現(xiàn)

  3.1腳本語言的設計

  腳本語言的設計需要完成:

  ? 指令集的設計

  ? 語法的設計

  ? 指令及語法的錯誤檢查

  3.1.1指令集的設計

  根據(jù)設備需要完成的基本邏輯行為,設計相應的指令集。

  對于伺服驅(qū)動器來說,基本邏輯行為主要有以下幾點:

  (1)邏輯運算相關指令

  ? 內(nèi)存讀寫指令

  ? 加減乘除取模指令

  ? 與或非指令

  ? 比較指令

  ? 跳轉(zhuǎn)指令

  ? 循環(huán)指令

  (2)運動相關

  ? 速度值設置指令

  ? 加減速度值設置指令

  ? 位置值設置指令

  ? 速度運動指令

  ? 相對位置運動指令

  ? 絕對位置運動指令

  ? 點動指令

  ? 尋原點指令

  ? 速度/位置/電流讀取指令

  (3)外設

  ? 定時器時間設置指令

  ? 定時器計時完成讀取指令

  3.1.2語法的設計

  所有語句以 “S::” 開頭,以”;”結(jié)束。

  整個程序結(jié)構(gòu)由下面3種功能塊組成:

  ? Param block

  ? Init block

  ? Motion block

  Param Block用于用戶參數(shù)配置。腳本為用戶提供16個32位的可配置參數(shù)空間,用戶可工藝所需的速度位置信息等。例如:

思思好漂亮

  nit Block用于初始化腳本所需變量和配置系統(tǒng)參數(shù)。腳本為用戶提供50個32位的內(nèi)存空間(MD),用戶可以用于存儲腳本邏輯編程中的中間變量。比如讀取到的速度位置值,或者計算的中間結(jié)果等。

思思好漂亮

  Motion Block是用于腳本邏輯編寫。其中每個Motion Block由1個或多個Event組成。每個event包括一個IF條件語句和一個THEN執(zhí)行語句。例如:

思思好漂亮

  一個motion block就是一個死循環(huán)(圖3中紅色箭頭),跳轉(zhuǎn)指令NextMotionID就是這個死循環(huán)的出口。而在motion block內(nèi),腳本語句按event號順序執(zhí)行。如圖3所示。

思思好漂亮

圖 3

  3.2腳本編譯器的設計

  腳本編譯器的設計需要完成:

  ? 編譯方法的選擇

  ? 腳本語法的解析

  ? 編譯目標的結(jié)構(gòu)設計

  3.2.1編譯方法的選擇

  程序文本的編譯執(zhí)行通常有兩種方法:

  ? 把文本整體編譯成CPU可執(zhí)行的二進制文件,如PLC等;

  ? 由解釋器直接來解釋源代碼執(zhí)行,如EXCEL VBA等。

  伺服驅(qū)動器是一個沒有操作系統(tǒng)或微多任務操作系統(tǒng)的嵌入式系統(tǒng),因此如果采取方式一,先編譯器整體編譯再執(zhí)行的方式,伺服自身的代碼與腳本編譯的代碼之間的鏈接難度較大,而且腳本源碼的調(diào)試會面臨很大的問題。

  伺服驅(qū)動器是CPU和內(nèi)存資源都比較少的嵌入式系統(tǒng),因此如果采取方式二,邊解釋邊執(zhí)行的方式,直接對腳本文本代碼的字符串處理會消耗大量的CPU資源,所以也并不適用。

  結(jié)合以上分析,我們采取了折中的方式,在PC端先進行一次編譯,將腳本文本代碼邏輯編譯成一種特定的數(shù)據(jù)結(jié)構(gòu),并將數(shù)據(jù)結(jié)構(gòu)下載到伺服驅(qū)動器中。在伺服驅(qū)動器里的解釋器再來解釋執(zhí)行數(shù)據(jù)結(jié)構(gòu)里的內(nèi)容。

  根據(jù)腳本代碼的特點,數(shù)據(jù)結(jié)構(gòu)分為Motion和Event兩種,并有各自的數(shù)據(jù)結(jié)構(gòu)池,每個數(shù)據(jù)結(jié)構(gòu)池里包含一個對應的數(shù)據(jù)結(jié)構(gòu)數(shù)組,如圖4所示。

思思好漂亮

圖 4

  Motion和Event 數(shù)據(jù)結(jié)構(gòu)池的本質(zhì)是結(jié)構(gòu)體數(shù)組,也是整個腳本功能承上啟下的核心。

  3.2.2腳本語法的解析

  在PC上的編譯下載小工具中,通過字符串解析來處理出所需信息,步驟如下:

  (1)讀取腳本文件中一行信息,摘取”S::”到”;”之間的字符串

  (2)判斷該行是MotionID/EventID/IF/THEN行

  (3)以 “AND”和”O(jiān)R”關鍵字把拆分該行字符串拆解成n份

  (4)將每一份信息填寫到對應Motion和Event數(shù)據(jù)結(jié)構(gòu)池的目標結(jié)構(gòu)體中相應的IF/THEN位置

  (5)將目標結(jié)構(gòu)體通過USB線纜下載到伺服驅(qū)動器中。

  3.2.3編譯目標的結(jié)構(gòu)設計

  目標數(shù)據(jù)結(jié)構(gòu)分為Motion和Event兩種,并有各自的數(shù)據(jù)結(jié)構(gòu)池,每個數(shù)據(jù)結(jié)構(gòu)池里包含一個對應的數(shù)據(jù)結(jié)構(gòu)數(shù)組。例如有一個腳本邏輯,用到了3個Motion。第一個Motion里包含5個Event,第二個里也包含5個Event,第三個里包含3個Event。則總共用到了13個Event。

  MotionPool 與Event Pool之間的聯(lián)系如圖5所示。

伺服驅(qū)動器

圖 5

伺服驅(qū)動器

  Motion Pool由多個Motion結(jié)構(gòu)組成,結(jié)構(gòu)體大致如下:

  Event Pool由多個Event結(jié)構(gòu)組成,一個Event結(jié)構(gòu)體由一個條件結(jié)構(gòu)體和一個行為結(jié)構(gòu)體兩部分組成。

伺服驅(qū)動器

  條件結(jié)構(gòu)體

伺服驅(qū)動器

  一個條件結(jié)構(gòu)體就相當于腳本代碼中一個IF語句拆分后的條件表格,比如:

  行為結(jié)構(gòu)體

伺服驅(qū)動器

  一個行為結(jié)構(gòu)體就相當于腳本代碼中一個THEN語句拆分后的行為表格。

  編譯結(jié)束后,我們將得到MotionPool和EventPool兩個記錄有腳本邏輯信息的結(jié)構(gòu)體數(shù)組。通過USB電纜,將這兩個結(jié)構(gòu)體數(shù)組下載到伺服驅(qū)動器中,由伺服驅(qū)動器中的腳本解釋器來解釋執(zhí)行結(jié)構(gòu)體中記錄的腳本邏輯信息。

  3.3腳本解釋器的設計

  腳本解釋器的設計需要完成:

  ? 解釋器的執(zhí)行流程設計

  ? 對編譯目標結(jié)構(gòu)體中條件的判斷

  ? 對編譯目標結(jié)構(gòu)體中行為的執(zhí)行

  3.3.1解釋器的執(zhí)行流程設計

  解釋器默認從Motion0開始執(zhí)行,從 Motion0中Event0開始順序執(zhí)行每個Event,執(zhí)行到motion0中的最后一個Event后回到Event0循環(huán)執(zhí)行。如果執(zhí)行到某個Event中的行為表(THEN)中的NextMotionID指令,則直接跳轉(zhuǎn)到下一個Motion,并從Event0開始循環(huán)執(zhí)行。流程圖如圖6所示。

伺服驅(qū)動器

圖 6

  3.3.2對編譯目標結(jié)構(gòu)體中條件的判斷

  在每個Motion循環(huán)周期的開始,都要先讀取伺服驅(qū)動器的所有有關變量,包括當前位置,當前速度,當前電流值, 當前時鐘狀態(tài),當前數(shù)字量輸入值,和當前運動狀態(tài)等信息。這些信息會在條件判斷時使用。

  在目前的LXM16產(chǎn)品中,為了簡單起見,邏輯條件中只有“與”,而沒有“或”和“非”兩個條件。因此,對條件的判斷得到了大大的簡化。解釋器只需要對Event結(jié)構(gòu)體中的條件結(jié)構(gòu)體中的每一個條件進行判斷,只有所有條件都為“TRUE”,才算條件成立。

  3.3.3對編譯目標結(jié)構(gòu)體中行為的執(zhí)行

  當Event結(jié)構(gòu)體中相應的Event條件滿足時,解釋器開始執(zhí)行該Event結(jié)構(gòu)體中對應的行為結(jié)構(gòu)體的內(nèi)容。在行為結(jié)構(gòu)體中,會記錄每一個語句的執(zhí)行順序,解釋器會按照執(zhí)行順序號,按順序執(zhí)行。執(zhí)行時,解釋器會先按照順序號讀取行為結(jié)構(gòu)體中的相應數(shù)據(jù),并調(diào)用伺服驅(qū)動器內(nèi)部的命令函數(shù)來完成執(zhí)行。

  比如對于指令:

  S:: THEN DO_0=HIGH ANDRelativeTarget Position=10000;

  解釋器會順序執(zhí)行:

  ? 調(diào)用伺服內(nèi)部DO強制輸出函數(shù),并將1作為參數(shù)傳給該函數(shù),使DO_0輸出高

  ? 調(diào)用伺服內(nèi)部相對運動函數(shù),并將10000作為參數(shù)傳給該函數(shù),使電機向正方向運行10000個脈沖。

  3.4 腳本調(diào)試器的設計

  3.4.1調(diào)試器界面

伺服驅(qū)動器

圖 7

  斷點設置區(qū):用來設置斷點在腳本代碼中的位置

  當前狀態(tài)區(qū):用來顯示當前腳本運行狀態(tài)

  變量選擇區(qū):用來選擇需要寫或監(jiān)視的變量

  變量監(jiān)視區(qū):用來實時顯示監(jiān)視變量的值

  變量賦值區(qū):用來給所選變量寫入一個值

  調(diào)試操作區(qū):設置斷點/全速/單步/暫停/退出

  3.4.2斷點列表

  在LXM16D中,最多同時可以設置4個斷點,另外還有一個為單步調(diào)試服務的臨時斷點,因此斷點列表能記錄5個斷點位置。

  用戶設置的斷點位置信息存放在斷點列表中。斷點列表中每個斷點位置信息包含以下幾點:

  ? Motion號

  ? Event號

  ? 斷點位置(IF或THEN的前面)

  ? 該斷點是否使能

  例如:

伺服驅(qū)動器

圖 8

  其中有一個為單步執(zhí)行服務的臨時斷點。當使用單步調(diào)試時,表中臨時斷點行記錄的是當前斷點位置的下一個位置。腳本解釋器一邊執(zhí)行腳本邏輯一邊檢查當前位置是否在斷點列表中,如果當前位置在列表中,則停止執(zhí)行腳本邏輯。

  斷點列表的大小可根據(jù)系統(tǒng)內(nèi)存情況裁剪。如果系統(tǒng)內(nèi)存允許,可以設置更多的斷點。

  3.4.3調(diào)試器流程設計

  與其他代碼調(diào)試器一樣,腳本調(diào)試器的設計也必須要滿足以下兩點:

  ? 在斷點處停下后,整個腳本不再執(zhí)行;

  ? 在斷點處停下后,再執(zhí)行全速或單步,腳本要從斷點處開始執(zhí)行。

  腳本功能為一個獨立的功能塊,該功能塊在伺服驅(qū)動器固件中的主循環(huán)中被調(diào)用,每個主循環(huán)周期調(diào)用一次。圖9為調(diào)試器流程圖,從“開始”到“結(jié)束”為腳本功能塊執(zhí)行 一次。

伺服驅(qū)動器

伺服驅(qū)動器

圖9

  4 小結(jié)

  終端設備的智能化是一個發(fā)展趨勢,它可以讓系統(tǒng)終端設備處理局部數(shù)據(jù),從而大大降低整個系統(tǒng)核心設計的復雜度,從而更好地控制系統(tǒng)成本。帶有腳本功能的伺服驅(qū)動器LXM16D,在機床刀庫、物流分揀、碼垛機械臂等領域都得到了成功應用。

中傳動網(wǎng)版權(quán)與免責聲明:

凡本網(wǎng)注明[來源:中國傳動網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國傳動網(wǎng)(m.u63ivq3.com)獨家所有。如需轉(zhuǎn)載請與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個人轉(zhuǎn)載使用時須注明來源“中國傳動網(wǎng)”,違反者本網(wǎng)將追究其法律責任。

本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請保留稿件來源及作者,禁止擅自篡改,違者自負版權(quán)法律責任。

如涉及作品內(nèi)容、版權(quán)等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關權(quán)利。

伺服與運動控制

關注伺服與運動控制公眾號獲取更多資訊

直驅(qū)與傳動

關注直驅(qū)與傳動公眾號獲取更多資訊

中國傳動網(wǎng)

關注中國傳動網(wǎng)公眾號獲取更多資訊

2021年第四期

2021年第四期

圖片閱讀

掃碼關注小程序

時刻關注行業(yè)動態(tài)

雜志訂閱

填寫郵件地址,訂閱更多資訊:

撥打電話咨詢:13751143319 余女士
郵箱:chuandong@chuandong.cn

熱搜詞
  • 運動控制
  • 伺服系統(tǒng)
  • 機器視覺
  • 機械傳動
  • 編碼器
  • 直驅(qū)系統(tǒng)
  • 工業(yè)電源
  • 電力電子
  • 工業(yè)互聯(lián)
  • 高壓變頻器
  • 中低壓變頻器
  • 傳感器
  • 人機界面
  • PLC
  • 電氣聯(lián)接
  • 工業(yè)機器人
  • 低壓電器
  • 機柜
回頂部
點贊 0
取消 0
往期雜志
  • 2024年第四期

    2024年第四期

    伺服與運動控制

    2024年第四期

  • 2024年第三期

    2024年第三期

    伺服與運動控制

    2024年第三期

  • 2024年第二期

    2024年第二期

    伺服與運動控制

    2024年第二期

  • 2024年第一期

    2024年第一期

    伺服與運動控制

    2024年第一期

  • 2023年第六期

    2023年第六期

    伺服與運動控制

    2023年第六期