关于正运动控制器嵌入式实时系统的优势和常见问题
进口控制器这么设计是因为这样的架构有多种好处:
1)任务调度更简单,实时性更好
Windows是属于GPOS(GeneralPurposeOS),考虑多种用户需求,调度策略(dispatchalgorithm)非常复杂,既要考虑前台响应速度又要顾及后台响应能力,既要考虑复杂任务的计算效率,又要考虑简单任务的响应速度,所以尽管Windows非常强大,可以运行复杂的算法,可以运行复杂的语言和函数,但很多时候不适合用来处理需要实时响应的任务(打开任务管理器,看看Windows上有多少进程、多少线程,就可以想象Windows调度有多么复杂了)。所以在高实时性场合一般会使用实时系统(RTOS),而不用GPOS。(IOS和Android都属于RTOS,并且严格限制后台进程,来保证和用户交互的响应速度。WindowsCE也属于RTOS)。
2)减轻PC计算压力,在消耗大量计算资源的应用例如缺陷检测中优势更明显。
把逻辑控制和运动控制全部使用Basic语言下载入控制器内,视觉处理留在PC,最大化减轻PC计算压力。
3)开发调试更简便。
Basic指令更简洁、更清晰,开发速度更快。
即使不使用Basic写程序,在PC上写程序,通过Zdevelop开发调试工具也可以通过“轴参数”或者“在线命令”方便的查看当前各个参数状态;可以通过“在线命令”实时修改参数;可以通过“示波器”查看速度曲线.......
(关于Zdevelop的详细内容可以参考光盘资料中的入门文档或者教学视频。)
正运动控制器内部运行的程序主要是Basic程序,语法和VB一致,但比VB更简单,对于软件工程师来说非常友好。并且为了让客户使用更简单,不需要定义数据类型,任意赋值自动判断。甚至文件内变量和局部变量都不需要定义(只有全局变量需要),编译器自动判断,最终的结果是,非常容易上手,开发更快,不容易出错。
Zdevelop开发工具可以进入调试模式,单步运行,观察任务状态、全局变量和局部变量。程序中可以方便的插入Print(等同于操作符)指令把字符串或者变量输出到终端方便Debug(相当于C语言中的printf)。
正运动控制器支持多任务(多线程),但创建多线程要比Windows程序简单的多,可以非常方便的实现多任务并行运行。
可以通过ticks或者timer等方式实现恒定频率扫描程序。
(更多详细内容请参考ZBasic帮助手册。)
和PC程序的互动方式
下面就是因为使用这种独特架构带来的其他国产控制器厂商所没有的交互方式和独有的函数:
Table是控制器上的超大一维数组,VR也是一维数组,但VR变量是掉电保存的,是存在电池备份内存上的,访问速度又快,用不用担心掉电丢失。具体的介绍可以参考ZBasic帮助文档的第一章。
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来查看。)
Basic程序的扫描频率和如何实现恒定频率扫描
用过PLC的客户往往对正运动控制器嵌入式系统的扫描频率有疑问,正运动控制器和PLC不一样的地方是没有标准的任务可供客户使用来实现恒定频率扫描,但可以自己写程序使用多种方式让控制器内的Basic任务实现恒定频率扫描。
当一个任务需要很高的实时性时,推荐把这部分任务单独放入一个Task内,代码行数尽量短,那么它的扫描频率就非常高。对实时性要求不高的就和其它一起合并放入一个大的任务(Task)。
(注意,ticks是属于单个任务的变量,不是全局变量)
如何以恒定频率扫描程序?
1)使用Ticks:
2)使用硬件时钟Timer:
备注:
1)关于程序(Program)和任务(Task),任务和PC上的线程比较相似,并行运行,可以共享全局变量。一个程序文件(Program)可以被run起来多个Task(多个instance),所以在上面的示例注释中写着要小心不要run起来多个Task,把Timer_Start放入中断程序结尾。(可以在调试模式下观察现在有几个task在运行)
提交
口碑
人气
正运动全国产EtherCAT运动控制器ZMC432H用户手册
正运动全国产EtherCAT运动控制器ZMC432H
正运动技术运动控制器如何快速实现单轴/多轴同步跟随功能?