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

產品分類

當前位置: 首頁 > 工業電子產品 > 半導體產品 > 微控制器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在航

推薦產品

更多
主站蜘蛛池模板: 富森高压水枪-柴油驱动-养殖场高压清洗机-山东龙腾环保科技有限公司 | 二次元影像仪|二次元测量仪|拉力机|全自动影像测量仪厂家_苏州牧象仪器 | 便携式XPDM露点仪-在线式防爆露点仪-增强型烟气分析仪-约克仪器 冰雕-冰雪世界-大型冰雕展制作公司-赛北冰雕官网 | 西安耀程造价培训机构_工程预算实训_广联达实作实操培训 | 佛山市钱丰金属不锈钢蜂窝板定制厂家|不锈钢装饰线条|不锈钢屏风| 电梯装饰板|不锈钢蜂窝板不锈钢工艺板材厂家佛山市钱丰金属制品有限公司 | 胶水,胶粘剂,AB胶,环氧胶,UV胶水,高温胶,快干胶,密封胶,结构胶,电子胶,厌氧胶,高温胶水,电子胶水-东莞聚力-聚厉胶粘 | 防爆大气采样器-防爆粉尘采样器-金属粉尘及其化合物采样器-首页|盐城银河科技有限公司 | AR开发公司_AR增强现实_AR工业_AR巡检|上海集英科技 | 自动气象站_农业气象站_超声波气象站_防爆气象站-山东万象环境科技有限公司 | 罗茨真空机组,立式无油往复真空泵,2BV水环真空泵-力侨真空科技 | 伸缩器_伸缩接头_传力接头-巩义市润达管道设备制造有限公司 | 全国国际化学校_国际高中招生_一站式升学择校服务-国际学校网 | 杭州公司变更法人-代理记账收费价格-公司注销代办_杭州福道财务管理咨询有限公司 | 新疆十佳旅行社_新疆旅游报价_新疆自驾跟团游-新疆中西部国际旅行社 | 钢结构厂房造价_钢结构厂房预算_轻钢结构厂房_山东三维钢结构公司 | 电缆接头_防水接头_电缆防水接头 - 乐清市新豪电气有限公司 | 海水晶,海水素,海水晶价格-潍坊滨海经济开发区强隆海水晶厂 | 软瓷_柔性面砖_软瓷砖_柔性石材_MCM软瓷厂家_湖北博悦佳软瓷 | 青岛侦探_青岛侦探事务所_青岛劝退小三_青岛婚外情取证-青岛王军侦探事务所 | 防潮防水通风密闭门源头实力厂家 - 北京酷思帝克门窗 | 直齿驱动-新型回转驱动和回转支承解决方案提供商-不二传动 | 乐之康护 - 专业护工服务平台,提供医院陪护-居家照护-居家康复 | 巨野月嫂-家政公司-巨野县红墙安康母婴护理中心 | 铝扣板-铝方通-铝格栅-铝条扣板-铝单板幕墙-佳得利吊顶天花厂家 elisa试剂盒价格-酶联免疫试剂盒-猪elisa试剂盒-上海恒远生物科技有限公司 | 旗杆生产厂家_不锈钢锥形旗杆价格_铝合金电动旗杆-上海锥升金属科技有限公司 | 中天寰创-内蒙古钢结构厂家|门式刚架|钢结构桁架|钢结构框架|包头钢结构煤棚 | 衬氟旋塞阀-卡套旋塞阀-中升阀门首页 | 北京康百特科技有限公司-分子蒸馏-短程分子蒸馏设备-实验室分子蒸馏设备 | 专业的压球机生产线及解决方案厂家-河南腾达机械厂 | 在线悬浮物浓度计-多参数水质在线检测仪-上海沃懋仪表科技有限公司 | 小型气象站_车载气象站_便携气象站-山东风途物联网 | pbt头梳丝_牙刷丝_尼龙毛刷丝_PP塑料纤维合成毛丝定制厂_广州明旺 | 工业CT-无锡璟能智能仪器有限公司 | 商用绞肉机-熟肉切片机-冻肉切丁机-猪肉开条机 - 广州市正盈机械设备有限公司 | 步进驱动器「一体化」步进电机品牌厂家-一体式步进驱动 | 日本SMC气缸接头-速度控制阀-日本三菱伺服电机-苏州禾力自动化科技有限公司 | 搪瓷搅拌器,搪玻璃搅拌器,搪玻璃冷凝器_厂家-淄博越宏化工设备 | ★店家乐|服装销售管理软件|服装店收银系统|内衣店鞋店进销存软件|连锁店管理软件|收银软件手机版|会员管理系统-手机版,云版,App | 安全,主动,被动,柔性,山体滑坡,sns,钢丝绳,边坡,防护网,护栏网,围栏,栏杆,栅栏,厂家 - 护栏网防护网生产厂家 | 工业机械三维动画制作 环保设备原理三维演示动画 自动化装配产线三维动画制作公司-南京燃动数字 聚合氯化铝_喷雾聚氯化铝_聚合氯化铝铁厂家_郑州亿升化工有限公司 | 济南保安公司加盟挂靠-亮剑国际安保服务集团总部-山东保安公司|济南保安培训学校 |