运动控制是 plc 重要的应用领域,本文以一个简化版的跑步机为例,介绍一下在 awplc 中使用运动控制块的基本方法。
背景
awtk 全称 toolkit anywhere,是 zlg 开发的开源 gui 引擎,旨在为嵌入式系统、web、各种小程序、手机和 pc 打造的通用 gui 引擎,为用户提供一个功能强大、高效可靠、简单易用、可轻松做出炫酷效果的 gui 引擎。
awplc 是 zlg 自主研发的 plc 系统(兼容 iec61131-3),其中 awplc 的运行时库 (runtime) 基于 zlg tkc 开发,可以移植到到任何主流 rtos 和 嵌入式系统。awplc 的集成开发环境 (ide) 基于 awtk 开发,可以运行在 windows、macos 和 linux 系统之上。awplc 的主要目标之一是把 plc 中低代码开发方法引入到嵌入式软件,从而提高嵌入式软件的开发效率和可靠性。
简介
运动控制是 plc 重要的应用领域,本文以一个简化版的跑步机为例,介绍一下在 awplc 中,使用运动控制块的基本方法。
对于单轴运动控制,从控制的方法来说,可以分为 3 类:
位置控制。让轴转动指定的位置;
速度控制。让轴以指定的速度转动;
力矩控制。让轴以指定的力矩转动。
在 plcopen 的运动控制功能块中,对以上控制方法都有支持。跑步机是一个典型的速度控制类应用,常见速度类控制应用也很多,比如抽油烟机、洗衣机、扶手电梯和传送带等。速度控制是最简单的控制方式,使用 mc_movevelocity 这个功能块就可以了,它让轴以指定的速度转动,其图形表示如下:
* 这是一个标准的功能块,具体用法可以参考 plcopen 的文档,网上也有很多文章介绍。
1. 系统组成该系统包括:
6 个按钮。● 启动按钮。● 停止按钮。● 增加速度按钮。● 减小速度按钮。● 1 档按钮。● 2 档按钮。数码管。用来显示当前的速度。伺服电机。因为没有真实硬件,找了一个二手伺服电机,看起来比较 low,反正能转起来吧,下一步会支持 zlg 专业的运动控制器。运动控制算法用的一个开源的库(实现不太完整),以后会集成 zlg 算法专家提供的运动控制库(也可以集成第三方商业运动控制算法)。
程序界面如下所示(为了方便理解,我们把功能块图也放到了界面上):
2. 软件模拟
按钮和 数码管 都用软件模拟。
plc 程序
运动控制的功能块,参数通常比较多,占地比较大,一个屏幕放不下几个。在这个例子中,我们把它放到两个程序中:
主程序程序负责运动控制和开关机。
速度调节和档位切换。
* 注意:实际速度与硬件选型有关,需要对电机控制器的参数进行配置,这里为了简化,把速度设置到 0-100 之间。
1. 主程序程序开机过程:
点击 start 按钮。将状态 running 设置为 true。running 为 true 会激活功能块 mc_power 启动电机。电机启动完成,mc_power 的 status 输出 true,mc_movevelocity 开始执行,设置初始速度。关机过程:
点击 stop 按钮,mc_stop 开始执行。停机完成,mc_stop 的 done 输出 true,此时将状态 running 设置为 false,并将速度清零。注意事项:
mc_power 的参数 enable_negative 设置为 false,禁止反转。
mc_movevelocity 的 continouseupdate 设置为 true,否则速度调节无效。2. 速度调节和档位切换
增加速度:
点击 inc 按钮。将速度增加 5,如果速度大于 100,取 100,设置到速度变量 velocity。
减小速度:
点击 dec 按钮。将速度减小 5,如果速度小于 0,取 0,设置到速度变量 velocity。
切换到 1 档:
将 40 设置到速度变量 velocity。
切换到 2 档:
将 80 设置到速度变量 velocity。
用户界面
应用程序不需要编程,用 awtk designer 设计好界面,将控件与模型进行绑定即可。下面介绍一下控件与模型的绑定方法。这里用的是 awtk-mvvm,数据绑定规则与 awtk-mvvm 是完全一样的。
模型可以用 io、plc 或者 io+plc。io 可以用来绑定 io 变量,plc 可以用来绑定程序 plc 内部变量。
示例:
由于符号 % 在程序里具有特殊功能,所以在绑定 io 变量时,把 % 换成 _ 。比如:将 %qx0.0 写作 _qx0.0 。
速度 velocity 是全局变量,可以加 global. 前缀访问。
运行效果:启动电机后,在界面上修改速度或切换档位,可以观察到电机速度相应变化。
* 由此可见,在 awplc 功能块图的帮助下,我们不要写 c 代码或脚本,即可完成应用程序的开发。awplc 用低代码降低了开发的门槛,提高了开发的效率。awplc 等您来玩!
awplc 目前还处于开发阶段的早期,写这个系列文章的目的,除了用来验证目前所做的工作外,还希望得到大家的指点和反馈。如果您有任何疑问和建议,请在评论区留言。
可视化工厂实现生产智能管理解决方案
接地电阻要小于4Ω,你知道是为什么吗?
快插助力下的储能连接器高功率连接
串联线性稳压电路的工作原理分析
仪器使用电源规则和环境要求
【产品应用】用 AWTK 和 AWPLC 快速开发嵌入式应用程序 (10)- 简易跑步机
华为荣耀Note9什么时候上市?荣耀Note9最新消息:价格、外观、配置汇总,华为首款全面屏
MWC大会魅族又大出风头布全新快充技术Super mCharge 最高55W!
【福利来袭】汽车照明和 ADAS 系统的大电流 SEPIC方案
VGA接口和DVI接口的区别是什么
自动驾驶的必要技术和等级
指纹识别开箱配送机器人——智能楼宇工厂医院配送机器人介绍
高通与FTC要求推迟初步裁决 或展开和解谈判
你不可错过的物联网市场7大真相
如何自制18650充电器
专业舞台音响设备使用介绍
nepcon china展会简介
现代的云端型智能助理将有更多进展,隐形智能助理无所不在的第三波发展
联网物和物联网你确定分得清楚吗
如何选择一款合适的交流电源?