快速入门 | 运动控制器多任务运行特点

2025-04-05 16:42:35

1、材料准备与控制器接线参考

材料准备:

1)电脑1台,安装ZDevelop3.01以上版本软件

2)控制器1个

3)24V直流电源1个

4)总线驱动器+电机(或步进驱动器+电机)若干

5)控制器接线端子若干

6)网线若干

7)连接线若干

8)输入输出设备、扩展模块、人机界面等根据实际需求选择

控制器接线参考:

快速入门 | 运动控制器多任务运行特点

2、多任务概念

任务是执行I/O刷新和用户程序等一系列指令处理的功能,一个任务是指一个正在运行的程序。

如果多个程序模块能够互不干扰的同时运行,则称为多任务。

多任务可以将复杂的程序分成几个部分,分别开任务来同时执行,每个部分的任务是独立的,这样就可以使程序的复杂运动过程变得简单明了。

ZMC运动控制器支持多任务编程,每个任务都有自己唯一的编号,此编号没有优先级意义,只是标识当前程序属于哪一个任务。

不同型号支持的任务数有所不同,支持的具体任务数量,可在连接控制器之后,在ZDevelop软件菜单栏“控制器状态”查看或在线命令发送?*max指令查看,如下图,表示该控制器支持22个任务,任务编号范围为0-21。

快速入门 | 运动控制器多任务运行特点
快速入门 | 运动控制器多任务运行特点

3、多任务优势

1)程序模块化:用户可以将程序编写成多个较小的、特定的程序,来实现客户设备指定的功能。

2)并发性:每个任务可以独立运行,任务开启后,不受其他任务的影响。

3)简化错误处理:划分多任务运行后错误处理变得简单,只需处理出错的任务。

4)命令交互:程序处于运行状态时,用户也可以随时进行命令交互,如在线修改运动参数,在线命令栏发送指令等,其他程序不受影响。

同一项目下的文件或SUB子程序可使用指令相互调用,只需将要调用任务的文件设为主任务,即给该文件设置自动运行任务号,被调用的文件不设置自动运行即可。

控制器支持多个文件任务同时运行,一个文件里面可以启动多个任务,也可以跨文件启动任务。

4、多任务状态查看

多任务状态有三种:正在运行、停止和暂停,任务状态查看有如下3种方式。

1)任务指令查看

PROC_STATUS:任务状态查看,只读参数,一次读取一个任务的状态。

返回值:0-任务停止,1-任务正在运行,3-任务暂停中。

示例:PRINT   PROC_STATUS(0)  '打印任务0状态

2)任务窗口查看

在菜单栏“调试”-“启动/停止调试”打开任务窗口,如下图。

快速入门 | 运动控制器多任务运行特点

任务窗口可以查看已经开启的任务的任务编号、任务运行状态、任务所在的文件和运行行号。

任务窗口看不到未使用的任务。

3)打开菜单栏“调试”-“故障诊断”窗口。

可查看控制器的支持的所有任务编号的状态、任务所处的文件和运行的行号。

此窗口也可以显示各任务报错的故障信息。

快速入门 | 运动控制器多任务运行特点

5、多任务指令

多任务操作指令有:

END:当前任务正常结束

STOP:停止指定文件运行的任务

STOPTASK :停止指定任务

HALT :停止所有任务

RUN :启动新任务运行一个文件

RUNTASK:启动新任务运行一个SUB或者运行一个带标签的程序

PAUSETASK:暂停指定任务

RESUMETASK:恢复指定任务,恢复后任务从停止处继续往下执行。

?*MAX:可以查看控制器支持的文件总数与任务总数。

快速入门 | 运动控制器多任务运行特点

开启任务时注意任务编号的填写,任务不能重复开启。

6、任务启动

任务启动有三种方式,分别是自动运行任务号设置、RUN指令和RUNTASK指令。

1、自动运行任务号:控制器上电后首先执行带自动运行任务号的文件,自动运行任务号Basic文件可设置多个,PLC文件和HMI文件仅支持一个。自动运行文件为并行运行,上电后同时开启。

2、RUN指令将文件作为一个任务启动。

示例:RUN "TuXing_001.bas",2  '将TuXing_001.bas文件作为任务2启动

3、RUNTASK指令将SUB子程序或带标签程序作为一个任务启动。可跨文件开启全局定义的SUB子程序,要开启任务的标签程序只能存在本文件内。

示例:RUNTASK 1,task_home  '以任务1启动task_home子程序

使用指令开启任务时,程序扫描执行到该指令后再开启任务。

7、任务停止

停止任务指令有STOPTASK,STOP,HALT三种。

任务停止再启动就会从头执行任务。

开启任务时,一般先使用STOPTASK停止任务,再RUNTASK开启,避免任务出现重复开启报错。

1、STOPTASK支持停止文件任务、SUB子程序任务和带标签的任务。

示例:STOPTASK  2  '停止任务2

2、STOP指令支持停止Basic文件任务,推荐使用STOPTASK指令,操作更简单。

3、HALT指令停止所有任务

示例:HALT  '停止项目内的所有任务

快速停止所有任务还可以使用软件菜单栏的“紧急停止”按钮。

8、任务暂停与恢复

暂停任务使用PAUSETASK指令,恢复任务使用RESUMETASK指令。恢复后任务从暂停处继续向下执行。

暂停的任务支持停止。

1、PAUSETASK:暂停指定任务

示例:PAUSETASK  1  '暂停任务1

2、RESUMETASK:恢复指定任务

示例:RESUMETASK  1  '继续运行任务1

9、任务调用框架

程序下载运行,首先启动带自动运行任务号的文件,自动运行任务号可设置多个,也可以只设置一个,其他的文件任务采用RUN指令开启。

快速入门 | 运动控制器多任务运行特点

根据要调用的程序所处位置,在自动运行的文件中加入RUN或RUNTASK指令调用其他任务执行。

多任务调用的框架如图下所示。

10、程序模块化

程序编程参考框架:

快速入门 | 运动控制器多任务运行特点

编程时进行模块划分,部分程序块在需要时才调用执行,减少程序扫描时间,提高控制器的执行效率。

程序下载运行,启动带自动运行任务号的文件,自动运行的程序一般称为主程序,执行程序初始化、参数定义、逻辑处理和启动其他任务。

在自动运行的文件中加入RUN或RUNTASK指令启动其他任务执行。

11、Basic和PLC任务相互调用

1)Basic调用PLC任务

RUN指令调用PLC文件。

快速入门 | 运动控制器多任务运行特点

RUNTASK指令调用PLC内LBL指令定义的子程序。

快速入门 | 运动控制器多任务运行特点

2)PLC调用Basic任务

PLC内使用EXE或EXEP(脉冲执行)指令,调用Basic的任务指令,从而调用Basic文件任务或子程序任务。

12、多任务演示例程

例程包括两个文件,主任务TASK0由文件自动任务号启动。

回零任务TASK1和运动任务TASK2由主任务TASK0里的任务指令启动。

SUB子程序的调用也在主任务中开启。

快速入门 | 运动控制器多任务运行特点

文件一:Main.bas


RAPIDSTOP(2)

WAIT IDLE

GlobalInit '参数定义

AxesInit '轴参数初始化

WHILE 1

IF SCAN_EVENT(IN(0))> 0 THEN '启动主运动

STOPTASK 2

'Basic开启任务调用basic文件

RUN "TuXing_001.bas",2 '以任务2运行主运动程序

ENDIF

IF SCAN_EVENT(IN(1))> 0 THEN '停止

sub_stop

ENDIF

IF SCAN_EVENT(IN(2))> 0 THEN '回零

RUNTASK 1,task_home '以任务1启动回零

ENDIF

WEND

END '主程序结束

'''参数定义

GLOBAL SUB GlobalInit()

'主程序

GLOBAL CONST AXISNUM = 3 '总轴数

GLOBAL g_state'控制器状态

g_state = 0 '0--初始状态;1--待机;2--回零;3--运行

GLOBAL deal_home '回零标志

deal_home = 0

END SUB

''' 轴参数以及IO的定义

GLOBAL SUB AxesInit()

BASE(0,1,2)

DPOS=0,0,0

MPOS=0,0,0

UNITS=100,100,100 '脉冲当量

ATYPE=1,1,1 '步进方式

SPEED=100,100,100

LSPEED=0,0,0 '起始速度

CREEP=10,10,10 '回零反找速度

ACCEL=1000,1000,1000

DECEL=1000,1000,1000

SRAMP = 20,20,20 'S曲线时间设置

DATUM_IN=8,9,10 '原点输入配置

REV_IN=-1,-1,-1 '负向限位,与原点连到一起

FWD_IN=-1,-1,-1 '正向限位

ALM_IN = -1,-1,-1

'特殊IO反转改为常开输入

INVERT_IN(8,ON)

INVERT_IN(9,ON)

INVERT_IN(10,ON)

MERGE = ON '缺省配置以主轴0进行的为连续插补

CORNER_MODE = 2 '启动拐角减速

DECEL_ANGLE = 15 * (PI/180)'开始减速的角度 15度

STOP_ANGLE = 45 * (PI/180)'降到最低速度的角度45度

END SUB

GLOBAL SUB task_home()

g_state = 2 '回零中

FOR i = 0 TO AXISNUM - 1

BASE (i) '选择参与运动的轴

CANCEL(2) '停止

WAIT IDLE

NEXT

FOR i=0 TO AXISNUM-1

SPEED(i)=50 '回零速度

HOMEWAIT(i)=100 '反找等待时间

DATUM(3) AXIS(i) '回零方式

NEXT

WAIT UNTIL IDLE(0) AND IDLE(1) AND IDLE(2)

WA 10

PRINT "回零完成..."

BASE(0,1,2)

DPOS=0,0,0

MPOS=0,0,0

g_state = 1 '回零完成,回到待机状态

deal_home = 1 '回零完成标志

END SUB

GLOBAL SUB sub_stop() '停止

STOPTASK 2 '停止运动主程序

STOPTASK 1

RAPIDSTOP(2)

WAIT IDLE

g_state = 1 '轴停止,回到待机状态

END SUB


文件二:TuXing_001.bas


'主运动程序模块,任务2

IF deal_home = 1 THEN '判断回零是否完成

g_state = 3 '运动中

PRINT "开始运动..."

TRIGGER

BASE(0,1,2)

MOVEABS(0,0,0)

MOVE(100) AXIS(2)

MOVECIRC(200,0,100,0,1) '半径100顺时针画半圆,终点坐标(300,100)

MOVE(0,-200)

MOVECIRC(-200,0,-100,0,1)

WAIT IDLE(0)

WAIT IDLE(2)

PRINT "结束运动..."

g_state = 1 '运动完成

ELSE

PRINT "轴未回零,请先回零..."

ENDIF

END


正运动技术运动控制器多任务运行特点就分享到这里,更多精彩内容,请关注我们的公众号“正运动小助手”。

欢迎大家转载,共同学习,一起提高中国智能制造水平。文章版权归正运动技术所有,如有转载请注明文章来源。

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢