环球电气之家-午夜精彩视频-中国专业电气电子产品行业服务网站!

產品分類

當前位置: 首頁 > 工業電子產品 > 半導體產品 > 微控制器MCU

類型分類:
科普知識
數據分類:
微控制器MCU

關于正運動控制器嵌入式實時系統的優勢和常見問題

發布日期:2022-04-22 點擊率:79

  • 關鍵詞:                                                                正運動控制器                                                                嵌入式

  • 摘要:本文檔介紹如下內容: 一、嵌入式實時系統架構簡介和優勢 二、Basic程序簡單介紹 三、和PC程序的互動方式 四、Basic程序的掃描頻率和如何實現恒定頻率掃描


嵌入式實時系統架構簡介和優勢

正運動的ZMC系列控制器全部是獨立式控制器,可以脫離上位機像PLC一樣獨立工作的。自帶嵌入式實時系統,可以像PLC一樣實現高速的邏輯響應和IO響應,這樣的架構是進口運動控制器的標準架構。

進口控制器這么設計是因為這樣的架構有多種好處:

1)任務調度更簡單,實時性更好

Windows是屬于GPOS(General Purpose OS),考慮多種用戶需求,調度策略(dispatch algorithm)非常復雜,既要考慮前臺響應速度又要顧及后臺響應能力,既要考慮復雜任務的計算效率,又要考慮簡單任務的響應速度,所以盡管Windows非常強大,可以運行復雜的算法,可以運行復雜的語言和函數,但很多時候不適合用來處理需要實時響應的任務(打開任務管理器,看看Windows上有多少進程、多少線程,就可以想象Windows調度有多么復雜了)。所以在高實時性場合一般會使用實時系統(RTOS),而不用GPOS。(IOS和Android都屬于RTOS,并且嚴格限制后臺進程,來保證和用戶交互的響應速度。Windows CE也屬于RTOS)。

正運動控制器通過使用更簡單的調度策略(分時調度,犧牲一些計算效率),使用精簡指令(不使用復雜的帶類的面向對象的語言),實時性能就比Windows好很多,而且很容易實現多任務(Task)并行處理,所以,在需要實時響應的場合就不再需要運動控制器+PLC的組合方式,一個控制器搞定全部,沒有數據通訊的麻煩,簡單高效。

2)減輕PC計算壓力,在消耗大量計算資源的應用例如缺陷檢測中優勢更明顯。

把邏輯控制和運動控制全部使用Basic語言下載入控制器內,視覺處理留在PC,最大化減輕PC計算壓力。

3)開發調試更簡便。

Basic指令更簡潔、更清晰,開發速度更快。

即使不使用Basic寫程序,在PC上寫程序,通過Zdevelop開發調試工具也可以通過“軸參數”或者“在線命令”方便的查看當前各個參數狀態;可以通過“在線命令”實時修改參數;可以通過“示波器”查看速度曲線.......

(關于Zdevelop的詳細內容可以參考光盤資料中的入門文檔或者教學視頻。)

Basic程序簡單介紹

正運動控制器內部運行的程序主要是Basic程序,語法和VB一致,但比VB更簡單,對于軟件工程師來說非常友好。并且為了讓客戶使用更簡單,不需要定義數據類型,任意賦值自動判斷。甚至文件內變量和局部變量都不需要定義(只有全局變量需要),編譯器自動判斷,最終的結果是,非常容易上手,開發更快,不容易出錯。

Zdevelop開發工具可以進入調試模式,單步運行,觀察任務狀態、全局變量和局部變量。程序中可以方便的插入Print(等同于?操作符)指令把字符串或者變量輸出到終端方便Debug(相當于C語言中的printf)。

正運動控制器支持多任務(多線程),但創建多線程要比Windows程序簡單的多,可以非常方便的實現多任務并行運行。

可以通過ticks或者timer等方式實現恒定頻率掃描程序。

(更多詳細內容請參考ZBasic幫助手冊。)

這樣的架構,使正運動控制器不僅支持像其他國產控制器一樣完全在PC上調用函數來控制,也支持完全把運動控制和邏輯控制用Basic寫在控制器里,也支持部分程序寫在控制器里,部分程序寫在PC上,充分發揮各自的優勢,非常消耗CPU計算能力的復雜算法放在PC上,簡單的對響應速度要求很高的放在控制器上,兩者可以通過全局變量、Table、VR變量等方式來交換數據,Basic程序也可以向PC程序主動上報信息(PC程序中需要部署回調函數,不熟悉GC回收的話不建議這樣使用)。

和PC程序的互動方式

下面就是因為使用這種獨特架構帶來的其他國產控制器廠商所沒有的交互方式和獨有的函數:

控制器上的Basic程序可以通過指定一個自動運行號,讓這個任務上電自動運行,并且適當的時候調用其它任務(調用其他程序文件或者sub子程序)。也可以在合適的時機由PC程序發送Basic字符串指令來運行某個任務,例如控制器上有一個文件叫“BasicInit.bas ”,那么可以調用ZAux_Execute函數發送字符串(run “BasicInit ”)來運行起來這個文件,讓它以一個任務(線程)的方式運行起來。

Table是控制器上的超大一維數組,VR也是一維數組,但VR變量是掉電保存的,是存在電池備份內存上的,訪問速度又快,用不用擔心掉電丟失。具體的介紹可以參考ZBasic幫助文檔的第一章。

一方面不論控制器上Basic還是PC上的函數(如ZAux_Direct_SetTable)都可以共同訪問修改Table和VR變量,把table等作為控制器和PC共享buffer,實現大量數據異步交換,實現最大計算效率。另一方面PC還同時可以訪問用戶在Basic中定義的全局變量(例如global UsrVar),例如使用ZAux_Direct_GetVariableInt,但如果想要修改自定義全局變量的話就需要調用函數ZAux_DirectCommand發送(”UsrVar= 0 ”)這樣的字符串。

Basic程序運行完畢后,如果想要主動通知PC程序,而不是等待PC查詢,可以在PC程序中部署回調函數,PC不再需要輪詢查詢(如果不熟悉GC回收,不建議使用回調函數)。

目前PC上的函數已經很豐富了,但如果還是想要訪問控制器Basic支持的,而PC函數暫時不支持的軸參數(例如AXIS_STOPREASON)可以ZAux_Direct_SetParam和ZAux_Direct_GetParam來訪問。

如果想要一次讀取或者設置大量的IO變量、大量的位置狀態,可以使用輸入輸出函數中帶modbus前綴的函數,如GetModbusIn,這樣命名是因為在控制器內部有些modbus寄存器映射到這些地址上了(GetModbusIn只反應IO的真實狀態,反轉指令無效。如果需要反轉之后的狀態,需要使用ZAux_Direct_GetInMulti)。

備注1, 具體某個型號的控制器有多少Table和VR變量,支持多少任務(Task),都可以使用ZDevelop在“在線命令”中輸入?*max來查看。)

備注2, PC函數中DirectCommand和Execute的用法一致,都是通過PC發送一個控制器支持的Basic字符串指令,但DirectCommand運行速度更快,盡量使用DirectCommand,經測試,DirectCommand大多沒有返回字符串,所以參數中的最后一個返回的字符串長度可以設置為0,Execute發送的指令出錯后,第三個參數可以返回錯誤信息,想要顯示的話可以用System.Text.Encoding.ASCII.GetString把byte數組轉化為字符串(可以參考C#例程“例程8-功能測試”)。DirectCommand和Execute函數本身返回數值,正常運行則為0,不正常則返回非零值,所以在多數場合可能只要判斷返回值就可以了,不需要去查看返回字符串。


Basic程序的掃描頻率和如何實現恒定頻率掃描

用過PLC的客戶往往對正運動控制器嵌入式系統的掃描頻率有疑問,正運動控制器和PLC不一樣的地方是沒有標準的任務可供客戶使用來實現恒定頻率掃描,但可以自己寫程序使用多種方式讓控制器內的Basic任務實現恒定頻率掃描。

正運動控制器自帶的嵌入式實時系統運行方式和Windows程序比較相似的是如果沒有人為約束,沒有恒定的掃描頻率,CPU有空閑就去運行用戶程序,最大化利用CPU資源,所以除去固件運行所占用的時間和EtherCAT主站計算所占用的時間,剩下的全是用戶程序的運行時間。用戶的程序越短,掃描頻率越高。所以,雖然系統的中斷周期一般為1ms或者0.5ms,但如果程序足夠短,它在一個中斷周期內會運行很多次(具體數量取決于客戶程序),可能超過大多數客戶的需求(不同系列控制器CPU速度不一樣)。

當一個任務需要很高的實時性時,推薦把這部分任務單獨放入一個Task內,代碼行數盡量短,那么它的掃描頻率就非常高。對實時性要求不高的就和其它一起合并放入一個大的任務(Task)。

如何計算當前任務的掃描時間?

使用Ticks,賦予Ticks一個初始化值,每過1ms系統就會減一,可以用于計算掃描時間,例如:

(注意,ticks是屬于單個任務的變量,不是全局變量)

如何以恒定頻率掃描程序?

1)使用Ticks:

2)使用硬件時鐘Timer:

需要注意的是所有硬件時鐘中斷任務的處理任務(Task)只有1個,所以如果使用了多個硬件時鐘中斷,并且執行時間比較長,推薦把相關代碼放入另外一個程序文件里,run這個程序文件,不要讓中斷程序獨占當前task。

備注:

1)關于程序(Program)和任務(Task),任務和PC上的線程比較相似,并行運行,可以共享全局變量。一個程序文件(Program)可以被run起來多個Task(多個instance),所以在上面的示例注釋中寫著要小心不要run起來多個Task,把Timer_Start放入中斷程序結尾。(可以在調試模式下觀察現在有幾個task在運行)

2)因為控制器使用了實時系統,所以要使用循環掃描,可以很安全的使用while 1,這個Task的時間片用完后就會切換任務,不用擔心控制器資源都被鎖死在當前任務。




下一篇: PLC、DCS、FCS三大控

上一篇: MATLAB和Simulink在航

推薦產品

更多
主站蜘蛛池模板: 岩石钻裂机-液压凿岩机-劈裂机-挖改钻_湖南烈岩科技有限公司 | 万濠投影仪_瑞士TRIMOS高度仪_尼康投影仪V12BDC|量子仪器 | 清水混凝土修复_混凝土色差修复剂_混凝土色差调整剂_清水混凝土色差修复_河南天工 | 恒压供水控制柜|无负压|一体化泵站控制柜|PLC远程调试|MCGS触摸屏|自动控制方案-联致自控设备 | HYDAC过滤器,HYDAC滤芯,现货ATOS油泵,ATOS比例阀-东莞市广联自动化科技有限公司 | 电动手术床,医用护理床,led手术无影灯-曲阜明辉医疗设备有限公司 | 气体热式流量计-定量控制流量计(空气流量计厂家)-湖北南控仪表科技有限公司 | 识禅_对禅的了解,从这里开始 | 郑州水质检测中心_井水检测_河南废气检测_河南中环嘉创检测 | 广州二手电缆线回收,旧电缆回收,广州铜线回收-广东益福电缆线回收公司 | BESWICK球阀,BESWICK接头,BURKERT膜片阀,美国SEL继电器-东莞市广联自动化科技有限公司 | 艺术涂料_进口艺术涂料_艺术涂料加盟_艺术涂料十大品牌 -英国蒙太奇艺术涂料 | 国产液相色谱仪-超高效液相色谱仪厂家-上海伍丰科学仪器有限公司 | 昆明挖掘机修理厂_挖掘机翻新再制造-昆明聚力工程机械维修有限公司 | 安德建奇火花机-阿奇夏米尔慢走丝|高维|发那科-北京杰森柏汇 | 手持式线材张力计-套帽式风量罩-深圳市欧亚精密仪器有限公司 | 湖南印刷厂|长沙印刷公司|画册印刷|挂历印刷|台历印刷|杂志印刷-乐成印刷 | pos机办理,智能/扫码/二维码/微信支付宝pos机-北京万汇通宝商贸有限公司 | 上海诺狮景观规划设计有限公司 | 冰雕-冰雪世界-大型冰雕展制作公司-赛北冰雕官网 | 干洗店加盟_洗衣店加盟_干洗店设备-伊蔻干洗「武汉总部」 | 高低温试验房-深圳高低温湿热箱-小型高低温冲击试验箱-爱佩试验设备 | 成都治疗尖锐湿疣比较好的医院-成都治疗尖锐湿疣那家医院好-成都西南皮肤病医院 | 步进_伺服_行星减速机,微型直流电机,大功率直流电机-淄博冠意传动机械 | 沟盖板_复合沟盖板厂_电力盖板_树脂雨水篦子-淄博拜斯特 | 振动时效_振动时效仪_超声波冲击设备-济南驰奥机电设备有限公司 北京宣传片拍摄_产品宣传片拍摄_宣传片制作公司-现像传媒 | 高压油管,液压接头,液压附件-烟台市正诚液压附件 | 托利多电子平台秤-高精度接线盒-托利多高精度电子秤|百科 | 广州番禺搬家公司_天河黄埔搬家公司_企业工厂搬迁_日式搬家_广州搬家公司_厚道搬迁搬家公司 | 上海盐水喷雾试验机_两厢式冷热冲击试验箱-巨怡环试 | 齿轮减速马达一体式_蜗轮蜗杆减速机配电机-德国BOSERL齿轮减速电动机生产厂家 | 镀锌角钢_槽钢_扁钢_圆钢_方矩管厂家_镀锌花纹板-海邦钢铁(天津)有限公司 | 航拍_专业的无人机航拍摄影门户社区网站_航拍网 | 水冷散热器_水冷电子散热器_大功率散热器_水冷板散热器厂家-河源市恒光辉散热器有限公司 | 上海平衡机-单面卧式动平衡机-万向节动平衡机-圈带动平衡机厂家-上海申岢动平衡机制造有限公司 | ASA膜,ASA共挤料,篷布色母料-青岛未来化学有限公司 | TPM咨询,精益生产管理,5S,6S现场管理培训_华谋咨询公司 | 防火门|抗爆门|超大门|医疗门|隔声门-上海加汇门业生产厂家 | 深圳市超时尚职业培训学校,培训:月嫂,育婴,养老,家政;化妆,美容,美发,美甲. | 山东太阳能路灯厂家-庭院灯生产厂家-济南晟启灯饰有限公司 | 防渗土工膜|污水处理防渗膜|垃圾填埋场防渗膜-泰安佳路通工程材料有限公司 |