鸣志驱动器Q编程基础知识 点击:1475 | 回复:0



猪肉平

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 0回
  • 年度积分:0
  • 历史总积分:33
  • 注册:2016年3月18日
发表于:2020-05-07 16:03:57
楼主

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驱动器中,立即和缓存指令都可以使用,这取决于功能是否复杂,需要何种控制。在一些应用中,立即指令和缓存指令都可以达到目的,这样您就需要做出最佳的选择。

0i4095048-1.jpg

Q编程程序分类

例如:
报警:AR(立即)AX(缓存)
停止:ST(立即)SM(缓存)
清除栈:SK(立即)QK(缓存)
寄存器装载:RL(立即)RX(缓存)

缓存指令类别,接下来是7个缓存指令的描述。
1、运行指令
2、伺服指令
3、配置指令
4、I/O指令
5、通讯指令
6、Q 程序指令
7、寄存器指令





楼主最近还看过


热门招聘
相关主题

官方公众号

智造工程师