找答案的高端用户(找答案钻石及双钻级别的用户)将尽可能从此问题下的所有回
答中,为您推荐最佳答案。届时您可以根据推荐数采纳答案。
如果自提问时间起7天内您仍无法选出最佳答案,您可以选择“无满意答案”关闭此问题。
A #iBackwards // set direction
JCN M003
L -1
*I
T #_PO2_Speed
M003: NOP 0
中程序是怎么执行的 ? 运行完 M001 后怎么执行呢 或执行完M002后呢 ?
3、L DW#16#8 它怎么会是指针呢 ?
T MD 2
L DBW [MD 2] 怎么会是执行 L DBW1 了呢
A DBX [MD 2] 怎么会是 A DBX1.0 了呢
4、LAR1 P##_PO1 其中 #P01 是input ,外部调用时管脚 输入是IW100
L LW [AR1,P#0.0]
T #oPO_1
我感觉还是有点迷糊 ,理解不透彻!
谢谢 指导!
小程序查看
手机扫码追踪该问题
手机扫码追踪该问题,
觉得实用,立即去分享!
点击复制链接
要理解 指令的L 4 和 L L#4之间的区别,有必要了解存储器的间接寻址的概念,其中L 4是将数字2#0000_0000_0000_0100装入累加器1(即16位整数常数);而后者涉及到存储器间接寻址的问题,L L#4 是将32位的整数常数4装入累加器1(为32位整数常数)。所以上述指令的含义是不同的。
由于UC是无条件调整指令,所以运行完 M001后继续执行M002后的指令,即如果有快慢信号,跳转到M001处执行,如果无快慢信号,则将暂态变量in11的数据装载到累加器1中。如果有快慢信号,将整数常数5与暂态变量in12的数据相乘,并保存到暂态变量_PO2_Speed中(位置2的速度)。如果有向后的信号指令,将整数常数-1与(整数常数5与暂态变量in12的数据)相乘(16位)的结果相乘,并保存到暂态变量_PO2_Speed中(位置2的速度值)
L DW#16#8 //将32位的十六进制常数8装入累加器1中,即2#0000 0000 0000 1000
T MD 2 //将32位的常数传送到MD2中
L DBW [MD 2] 中的MD2称为地址指针(参考存储器间接寻址内容),其里边的数值代表地址,即DBW2(数据块字),即将数据字DBW2装入累加器1中,按照存储器间接寻址,MD2=2#0000 0000 0000 1000,其中位0到2为被寻址中位的编号,即字节位的编号为2#000=0,位3-18位为被寻址字节的字节编号2#0000 0000 0000 1=1,即字节为1
A DBX [MD 2] //DBX为数据位,按照上述分析,DBX[DM2]=DBX1.0
4、LAR1 P##_PO1 其中 #P01 是input ,外部调用时管脚 输入是IW100,其中为指针寻址(输入过程映像寄存器字,区域标识符为IW),这里为100,将地址100写入AR1
L LW [AR1,P#0.0]//AR1=100=2#0000 0000 0110 0100,P#0.0为偏移量=2#0000 0000 0000 0 000(后3位为位号),AR1加偏移量为100.0,所以L LW [AR1,P#0.0]为L LW100.0
A #iBackwards // set direction后退标志位
JCN M003
L -1
*I
T #_PO2_Speed
M003: NOP 0
如果加减速标志位#iSlowFast=0,则临时速度#_PO2_Speed= #in11×5;
如果加减速标志位#iSlowFast=1,则临时速度#_PO2_Speed= #in11×#in2;
在判断是否后退:
如果后退标志位#iBackwards=0,则实际速度#_PO2_Speed=#_PO2_Speed;
如果后退标志位#iBackwards=1,则实际速度取反#_PO2_Speed=#_PO2_Speed×(-1)
理解程序的前提是对工艺或控制模型的理解,此处模型表现为电机的加减速和正反转,这就是模型!
<希望对你有帮助>
首次回答问题,获得
双倍西币积分!
立即成为技术知识分享的一员!
找答案微信小程序
提问
搜索
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!