Q编程介绍及例程
Q编程介绍
SCL指令的使用已经有很多年的历史。Q程序是建立在SCL指令基础之上的一个新的平台,扩展了SCL命令的使用,允许用户创建与存储SCL指令。这些程序可以保存在驱动器的非易失性存储器中,驱动可以脱离主机独立运行这些程序。Q程序为系统设计提供了高度的灵活性和强大的功能。主要特点如下:• 运动控制(例如FL、FP、SH等)
• 执行驻留程序
• 多任务处理(请参阅MT指令)
• 条件判断(例如OI、TI等指令)
• 数学运算(例如R+、R-、R*、R/、R|、R&等指令)
• 寄存器操作(例如RX、RM等指令)
1个Q程序支持多达12个程序段,每个程序段最多可以编写62条指令。
Q Programmer 软件下载
参考例程
  以下内容给出了Q编程的参考例程,并对这些指令逐条进行了解释,Q编程中所有指令均为缓存指令(Buffered Commands)点到点相对运动(Feed to Length)
FL(Feed to Length)指令用来完成点到点相对位置运动,当执行该指令时,电机将按照设定的加速度(AC),减速度(DE)及运行速度(VE),完成一段固定的相对位置距离(DI)。电机转动的方向由DI指令的正负极性决定。比如,DI32000 代表电机顺时针转动32000步(或微步),而DI-32000代表电机逆时针转动32000步(或微步)。上图中列出了一个参考例程,Q程序通过WI指令首先等待输入口3接收一个下降沿触发信号,如果条件满足,电机将按照20 转/秒的转速,转动4圈;如果条件不满足,程序将一直停留在WI指令处等待输入口3接收正确的触发信号为止 点到点绝对运动(Feed to Position)
FP(Feed to Position)指令用来完成点到点绝对位置运动,当执行该指令时,电机将按照设定的加速度(AC),减速度(DE)及运行速度(VE),完成一段绝对位置距离(DI)。DI指令代表目标绝对位置,电机转动方向不由其正负极性决定,而由电机当前绝对位置与目标绝对位置来决定。上图中列出了一个参考例程,Q程序通过WI指令首先等待输入口3接收一个下降沿触发信号,如果条件满足,电机将按照20 转/秒的转速,转动4圈,然后等待1秒(WT指令),然后电机以20 转/秒的转速回到绝对位置0点;如果条件不满足,程序将一直停留在WI指令处等待输入口3接收正确的触发信号为止。 SP(Set Position)指令用来设置电机当前的绝对位置,如发送“SP0”指令,将电机当前位置设为绝对位置零点。注意,SP指令设置的参数是以编码器Encoder Counts作为基本单位的,比如一个装有500线编码器的电机,一圈有2000个Encoder Counts,如发送“SP5000”指令,将电机当前位置设为以绝对位置零点顺时针方向2.5圈的位置。 运动到传感器位置(Feed to Sensor)
 FS(Feed to Sensor)指令使电机以一个固定速度转动,直到一个输入口的电平状态满足触发条件,电机减速,运动停止。运动参数由AC,DE,VE及DI指令决定,注意DI指令在FS指令执行时代表输入口电平状态满足触发条件后,电机减速到0的运动距离,注意DI设定的减速具体必须大于最小减速距离Dm,最小减速距离由DE,VE,EG指令决定,计算公式如下,其中V代表VE设定值,R代表EG设定值,D代表DE设定值:
注意:当DI设定值大于最小减速距离Dm时,电机接收到输入口触发电平状态(找到传感器)后,会继续以当前速度向前运动(DI-Dm)的距离,然后以DE设定的减速度减速,直到完成Dm的减速距离。同时,DI指令也决定了电机刚开始运动的方向,比如,DI8000 代表执行FS指令后,电机顺时针转动,而DI-8000代表执行FS指令后,电机逆时针转动。输入口电平状态分为H(高电平),L(低电平),R(上升沿),F(下降沿)这几种状态。  上图中列出了一个参考例程,Q程序通过WI指令首先等待输入口3接收一个下降沿触发信号,如果条件满足,取消限位功能,电机以5转/秒的转速顺时针方向转动,直到输入口7接收到一个高电平触发状态,驱动器找到了传感器,于是以DE设定的减速度,DI设定的减速距离完成减速到0。然后电机等待1秒钟,随后以20转/秒的速度运行到绝对位置零点处,打开限位功能。 循环(Looping)
用户可以通过两种方式来实现程序的循环。第一种使用QG(Queue Goto)指令,设置QG参数使程序回到设定的行数。下图中列出了一个参考例程,在FL指令后等待时间0.5秒(WT0.5),然后使用QG指令,使程序回到第一行重新执行,实现不断循环。
第二种方法是使用QR(Queue Repeat)指令,QR指令指明跳转到哪一行和循环次数。下图中列出了一个参考例程,QR指令表示跳转到第二行,参数为3,即循环次数由用户自定义寄存器3中的值决定,在这里RX指令写入数值5到自定义寄存器3, 所以程序循环执行5次。
跳转(Jumping)
程序跳转由QJ(Queue Jump)指令实现,跳转和循环不同,跳转主要判断条件是否满足,即跳转指令通常和TI(输入检测),TR(寄存器检测),CR(寄存器比较)指令配合使用。下图中列出了一个参考例程,有两种可能的运动,顺时针旋转,当输入信号5有效时(低电平有效)电机开始逆时针旋转,加速度300,减速度450,速度18.5,两种运动间有0.25秒的等待时间。然后,检测X5信号的状态,当 X5信号有效时(True),程序跳转到第10行,开始逆时针旋转,如果X5信号为高时程序直接到第7行进行顺时针旋转,执行完后回到第一行进行循环。

