運(yùn)動(dòng)控制是 PLC 重要的應(yīng)用領(lǐng)域,本文以一個(gè)簡(jiǎn)化版的跑步機(jī)為例,介紹一下在 AWPLC 中使用運(yùn)動(dòng)控制塊的基本方法。
?背景
AWTK全稱(chēng) Toolkit AnyWhere,是 ZLG 開(kāi)發(fā)的開(kāi)源 GUI 引擎,旨在為嵌入式系統(tǒng)、WEB、各種小程序、手機(jī)和 PC 打造的通用 GUI 引擎,為用戶(hù)提供一個(gè)功能強(qiáng)大、高效可靠、簡(jiǎn)單易用、可輕松做出炫酷效果的 GUI 引擎。
AWPLC是 ZLG 自主研發(fā)的 PLC 系統(tǒng)(兼容 IEC61131-3),其中 AWPLC 的運(yùn)行時(shí)庫(kù)(Runtime)基于 ZLG TKC 開(kāi)發(fā),可以移植到到任何主流 RTOS 和嵌入式系統(tǒng)。AWPLC 的集成開(kāi)發(fā)環(huán)境(IDE)基于 AWTK 開(kāi)發(fā),可以運(yùn)行在 Windows、MacOS 和 Linux 系統(tǒng)之上。AWPLC 的主要目標(biāo)之一是把 PLC 中低代碼開(kāi)發(fā)方法引入到嵌入式軟件,從而提高嵌入式軟件的開(kāi)發(fā)效率和可靠性。
簡(jiǎn)介
運(yùn)動(dòng)控制是 PLC 重要的應(yīng)用領(lǐng)域,本文以一個(gè)簡(jiǎn)化版的跑步機(jī)為例,介紹一下在 AWPLC 中,使用運(yùn)動(dòng)控制塊的基本方法。
對(duì)于單軸運(yùn)動(dòng)控制,從控制的方法來(lái)說(shuō),可以分為 3 類(lèi):
位置控制。讓軸轉(zhuǎn)動(dòng)指定的位置;
速度控制。讓軸以指定的速度轉(zhuǎn)動(dòng);
力矩控制。讓軸以指定的力矩轉(zhuǎn)動(dòng)。
在 PLCOpen 的運(yùn)動(dòng)控制功能塊中,對(duì)以上控制方法都有支持。跑步機(jī)是一個(gè)典型的速度控制類(lèi)應(yīng)用,常見(jiàn)速度類(lèi)控制應(yīng)用也很多,比如抽油煙機(jī)、洗衣機(jī)、扶手電梯和傳送帶等。速度控制是最簡(jiǎn)單的控制方式,使用 MC_MoveVelocity 這個(gè)功能塊就可以了,它讓軸以指定的速度轉(zhuǎn)動(dòng),其圖形表示如下:
*這是一個(gè)標(biāo)準(zhǔn)的功能塊,具體用法可以參考 PLCOpen 的文檔,網(wǎng)上也有很多文章介紹。
1. 系統(tǒng)組成該系統(tǒng)包括:
- 6 個(gè)按鈕。● 啟動(dòng)按鈕。●停止按鈕。●增加速度按鈕。●減小速度按鈕。●1 檔按鈕。●2 檔按鈕。
- 數(shù)碼管。用來(lái)顯示當(dāng)前的速度。
- 伺服電機(jī)。因?yàn)闆](méi)有真實(shí)硬件,找了一個(gè)二手伺服電機(jī),看起來(lái)比較 Low,反正能轉(zhuǎn)起來(lái)吧,下一步會(huì)支持 ZLG 專(zhuān)業(yè)的運(yùn)動(dòng)控制器。運(yùn)動(dòng)控制算法用的一個(gè)開(kāi)源的庫(kù)(實(shí)現(xiàn)不太完整),以后會(huì)集成 ZLG 算法專(zhuān)家提供的運(yùn)動(dòng)控制庫(kù)(也可以集成第三方商業(yè)運(yùn)動(dòng)控制算法)。
程序界面如下所示(為了方便理解,我們把功能塊圖也放到了界面上):
2. 軟件模擬
按鈕和數(shù)碼管都用軟件模擬。
PLC程序
運(yùn)動(dòng)控制的功能塊,參數(shù)通常比較多,占地比較大,一個(gè)屏幕放不下幾個(gè)。在這個(gè)例子中,我們把它放到兩個(gè)程序中:
主程序程序負(fù)責(zé)運(yùn)動(dòng)控制和開(kāi)關(guān)機(jī)。
速度調(diào)節(jié)和檔位切換。
* 注意:實(shí)際速度與硬件選型有關(guān),需要對(duì)電機(jī)控制器的參數(shù)進(jìn)行配置,這里為了簡(jiǎn)化,把速度設(shè)置到0-100之間。
1. 主程序程序開(kāi)機(jī)過(guò)程:
- 點(diǎn)擊 START 按鈕。將狀態(tài) RUNNING 設(shè)置為 TRUE。
- RUNNING 為 TRUE 會(huì)激活功能塊 MC_Power 啟動(dòng)電機(jī)。
- 電機(jī)啟動(dòng)完成,MC_Power 的 Status 輸出 TRUE,MC_MoveVelocity 開(kāi)始執(zhí)行,設(shè)置初始速度。
關(guān)機(jī)過(guò)程:
- 點(diǎn)擊 STOP 按鈕,MC_Stop 開(kāi)始執(zhí)行。
- 停機(jī)完成,MC_Stop 的 Done 輸出 TRUE,此時(shí)將狀態(tài) RUNNING 設(shè)置為 FALSE,并將速度清零。
注意事項(xiàng):
MC_Power 的參數(shù) Enable_Negative 設(shè)置為 false,禁止反轉(zhuǎn)。
- MC_MoveVelocity 的 ContinouseUpdate 設(shè)置為 true,否則速度調(diào)節(jié)無(wú)效。
2.速度調(diào)節(jié)和檔位切換
增加速度:
點(diǎn)擊 INC 按鈕。將速度增加 5,如果速度大于 100,取 100,設(shè)置到速度變量 VELOCITY。
減小速度:
點(diǎn)擊 DEC 按鈕。將速度減小 5,如果速度小于0,取0,設(shè)置到速度變量 VELOCITY。
切換到 1 檔:
將 40設(shè)置到速度變量 VELOCITY。
切換到 2 檔:
將 80設(shè)置到速度變量 VELOCITY。
用戶(hù)界面
應(yīng)用程序不需要編程,用 AWTK Designer 設(shè)計(jì)好界面,將控件與模型進(jìn)行綁定即可。下面介紹一下控件與模型的綁定方法。這里用的是 AWTK-MVVM,數(shù)據(jù)綁定規(guī)則與 AWTK-MVVM 是完全一樣的。
模型可以用 io、plc 或者 io+plc。io 可以用來(lái)綁定 IO 變量,plc 可以用來(lái)綁定程序 PLC 內(nèi)部變量。
示例:
由于符號(hào)%在程序里具有特殊功能,所以在綁定 IO 變量時(shí),把%換成_。比如:將%QX0.0寫(xiě)作_QX0.0。
速度 VELOCITY 是全局變量,可以加 global. 前綴訪問(wèn)。
運(yùn)行效果:?jiǎn)?dòng)電機(jī)后,在界面上修改速度或切換檔位,可以觀察到電機(jī)速度相應(yīng)變化。
*由此可見(jiàn),在 AWPLC 功能塊圖的幫助下,我們不要寫(xiě) C 代碼或腳本,即可完成應(yīng)用程序的開(kāi)發(fā)。AWPLC 用低代碼降低了開(kāi)發(fā)的門(mén)檻,提高了開(kāi)發(fā)的效率。AWPLC 等您來(lái)玩!
AWPLC 目前還處于開(kāi)發(fā)階段的早期,寫(xiě)這個(gè)系列文章的目的,除了用來(lái)驗(yàn)證目前所做的工作外,還希望得到大家的指點(diǎn)和反饋。如果您有任何疑問(wèn)和建議,請(qǐng)?jiān)谠u(píng)論區(qū)留言。
-
嵌入式
+關(guān)注
關(guān)注
5094文章
19178瀏覽量
307733
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
AWTK-WEB 快速入門(mén)(4) - JS Http 應(yīng)用程序
![<b class='flag-5'>AWTK</b>-WEB <b class='flag-5'>快速</b>入門(mén)(4) - JS Http <b class='flag-5'>應(yīng)用程序</b>](https://file.elecfans.com/web2/M00/50/DA/pYYBAGLH6TyAB71EAAAPQ7KgtYA038.png)
AWTK-WEB 快速入門(mén)(2) - JS 應(yīng)用程序
![<b class='flag-5'>AWTK</b>-WEB <b class='flag-5'>快速</b>入門(mén)(2) - JS <b class='flag-5'>應(yīng)用程序</b>](https://file.elecfans.com/web2/M00/50/DA/pYYBAGLH6TyAB71EAAAPQ7KgtYA038.png)
霍爾傳感器的應(yīng)用——跑步機(jī)
![霍爾傳感器的應(yīng)用——<b class='flag-5'>跑步機(jī)</b>](https://file1.elecfans.com/web3/M00/00/E0/wKgZO2dOpvyASw_CAAC-Q0TLMhI611.png)
霍爾元件DH220在跑步機(jī)中的應(yīng)用
AWTK-WEB 快速入門(mén)(1) - C 語(yǔ)言應(yīng)用程序
![<b class='flag-5'>AWTK</b>-WEB <b class='flag-5'>快速</b>入門(mén)(1) - C 語(yǔ)言<b class='flag-5'>應(yīng)用程序</b>](https://file.elecfans.com/web2/M00/50/DA/pYYBAGLH6TyAB71EAAAPQ7KgtYA038.png)
【AWTK使用經(jīng)驗(yàn)】如何使用系統(tǒng)輸入法與開(kāi)啟最大化窗口功能
![【<b class='flag-5'>AWTK</b>使用經(jīng)驗(yàn)】如何使用系統(tǒng)輸入法與開(kāi)啟最大化窗口功能](https://file.elecfans.com/web2/M00/50/DA/pYYBAGLH6TyAB71EAAAPQ7KgtYA038.png)
霍爾開(kāi)關(guān)給跑步機(jī)帶來(lái)精準(zhǔn)感應(yīng)
![霍爾開(kāi)關(guān)給<b class='flag-5'>跑步機(jī)</b>帶來(lái)精準(zhǔn)感應(yīng)](https://file1.elecfans.com/web1/M00/F4/6A/wKgZoWcrHquAElU3AAJXEBgeewU586.png)
跑步機(jī)的心聲——N8900藍(lán)牙音頻芯片賦予智能健身新維度
![<b class='flag-5'>跑步機(jī)</b>的心聲——N8900藍(lán)牙音頻芯片賦予智能健身新維度](https://file.elecfans.com/web2/M00/42/BC/pYYBAGJ6JAOAWhY7AAAjPnDlpp8975.jpg)
七大嵌入式GUI盤(pán)點(diǎn)
嵌入式linux開(kāi)發(fā)的基本步驟有哪些?
【AWTK最新動(dòng)態(tài)】AWTK 1.8版本發(fā)布
![【<b class='flag-5'>AWTK</b>最新動(dòng)態(tài)】<b class='flag-5'>AWTK</b> 1.8版本發(fā)布](https://file.elecfans.com/web2/M00/50/DA/pYYBAGLH6TyAB71EAAAPQ7KgtYA038.png)
大小鼠也需要跑步機(jī)——ZL-013小動(dòng)物實(shí)驗(yàn)跑步機(jī)
深度詳解嵌入式系統(tǒng)專(zhuān)用輕量級(jí)框架設(shè)計(jì)
![深度詳解<b class='flag-5'>嵌入式</b>系統(tǒng)專(zhuān)用輕量級(jí)框架設(shè)計(jì)](https://file1.elecfans.com/web2/M00/D2/87/wKgaomYjRd2APDxTAAAtWrrRF18443.png)
【插針機(jī)HMI開(kāi)發(fā)】用AWTK開(kāi)發(fā)人機(jī)界面
![【插針<b class='flag-5'>機(jī)</b>HMI<b class='flag-5'>開(kāi)發(fā)</b>】<b class='flag-5'>用</b><b class='flag-5'>AWTK</b><b class='flag-5'>開(kāi)發(fā)</b>人機(jī)界面](https://file.elecfans.com/web2/M00/50/DA/pYYBAGLH6TyAB71EAAAPQ7KgtYA038.png)
【從0開(kāi)始創(chuàng)建AWTK應(yīng)用程序】編譯應(yīng)用到RTOS平臺(tái)
![【從0開(kāi)始創(chuàng)建<b class='flag-5'>AWTK</b><b class='flag-5'>應(yīng)用程序</b>】編譯應(yīng)用到RTOS平臺(tái)](https://file.elecfans.com/web2/M00/50/DA/pYYBAGLH6TyAB71EAAAPQ7KgtYA038.png)
評(píng)論