快速入门 | 运动控制器多任务运行特点
1、材料准备与控制器接线参考
材料准备:
1)电脑1台,安装ZDevelop3.01以上版本软件
2)控制器1个
3)24V直流电源1个
4)总线驱动器+电机(或步进驱动器+电机)若干
5)控制器接线端子若干
6)网线若干
7)连接线若干
8)输入输出设备、扩展模块、人机界面等根据实际需求选择
控制器接线参考:


任务窗口可以查看已经开启的任务的任务编号、任务运行状态、任务所在的文件和运行行号。
任务窗口看不到未使用的任务。
3)打开菜单栏“调试”-“故障诊断”窗口。
可查看控制器的支持的所有任务编号的状态、任务所处的文件和运行的行号。
此窗口也可以显示各任务报错的故障信息。

开启任务时注意任务编号的填写,任务不能重复开启。
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指令启动其他任务执行。
11、Basic和PLC任务相互调用
1)Basic调用PLC任务
RUN指令调用PLC文件。

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
正运动技术运动控制器多任务运行特点就分享到这里,更多精彩内容,请关注我们的公众号“正运动小助手”。
欢迎大家转载,共同学习,一起提高中国智能制造水平。文章版权归正运动技术所有,如有转载请注明文章来源。