Q编程基础
Q驱动器中的Q来自单词queue。这是因为Q驱动器执行的命令是排入栈,或缓存器,储存在驱动器控制部分。 定义:栈是条目的列表或序列,条目从栈的一边进入,从另一边出。对于我们的驱动器,栈中的条目就是指令, 当指令到达栈的底部的时候控制器就会执行该指令。栈存在于控制器不稳定的存储部分中,当电源关闭后留在栈中还没有执行的指令就会丢失。
Q驱动器中的程序
现在,虽然62条指令可以组合提供很多功能,但是在应用上还是有更多的需求。这里我们设计非易失性存储单元来存储更多的指令,然后把单元分解成和栈一样的大小。每个驱动器中有12个非易失性存储单元,都可以用来存储指令,表现在Q-Program中就是有12个部分(segment),每个部分有62行,即一个栈的长度。每个部分中的指令可以马上调入到栈中。例如,我们开始程序先执行segment 1,在最后有个指令是调segment 2到栈中。这个调用过程仅需要125微秒,基本上可以忽略。12个部分相互调用,每个部分有62行指令,所以现在可以有744个指令,可以实现更多功能的组合。
指令结构
Q驱动器中所有的指令由3个可能的部分构成:指令本身和俩个参数。
一些指令没有参数,一些指令一定需要配参数,还有一些指令的功能取决于是否有参数。
一个指令由2个或3个ASC码字符(只有字母是代表命令本身)构成。一些指令在初始的2或3个ASC码字符后面还跟有其他参数(字母,数字, 其他的ASCII字符)。这里有俩中基本的指令:立即和缓存。一个立即指令会被马上执行,不管目前栈中在它之前的指令的指令是什么。一个缓存指令会在栈中 等到其他在栈中存贮的缓存指令执行完以后才会执行。
提示:栈中最多可以存储62条指令
结构如下:
指令(参数1 )(参数2 )
指令一般由2个字母构成(有的是3个),参数一般由ASCII字符构成-字母,数字,其他的ASCII字符。例如:
FL
Feed to length指令 没有参数 立即执行
SO1L
Set Output 指令 参数1="1",参数2="L" 设置驱动器输出1为低电平
RL91000
寄存器Load指令 参数1="9",参数2="1000" 用户定义的数据寄存器9写入值1000。
缓存指令和立即指令
两种类型的指令:缓存和立即。缓存指令在栈中按顺序存储,按存储的顺序执行。如果您向栈中写入两个缓存指令, 那么第二个指令只有在第一个指令结束后才会执行。(在多任务处理部分有例外)立即指令是立即被执行的, 不管栈中其他执行的指令,就是说可以和缓存指令并行执行。
所有的指令都是这两种类型。
只有缓存指令可以用来编写程序。原因很简单,在驻留的程序中,指令是根据外部事件同时处理的。立即指令不需要外部事件的触发。当使用主机控制器写入指令到Q驱动器中,立即和缓存指令都可以使用,这取决于功能是否复杂,需要何种控制。在一些应用中,立即指令和缓存指令都可以达到目的,这样您就需要做出最佳的选择。
Q编程程序分类
例如:
报警:AR(立即)AX(缓存)
停止:ST(立即)SM(缓存)
清除栈:SK(立即)QK(缓存)
寄存器装载:RL(立即)RX(缓存)
缓存指令类别,接下来是7个缓存指令的描述。
1、运行指令
2、伺服指令
3、配置指令
4、I/O指令
5、通讯指令
6、Q 程序指令
7、寄存器指令