发表于:2011/4/3 17:36:05
#0楼
S7-300/400只有32位的循环移位指令,和32位加CC1的循环移位指令。下面是我编的程序,MD10和MD14组成64位数据,MD10在高32位。
在I0.0的上升沿,分别将MD10和MD14循环左移1位,然后交换它们的最低位M13.0和M17.0的值,就能实现64位数据的循环左移1位。
A I 0.0
FN M 1.0
JCN _001 //不是I0.0的上升沿则跳转
L MD 10
RLD 1 //双字左移一位
T MD 10
L MD 14
RLD 1 //双字左移一位
T MD 14
A M 13.0
= M 1.1 //暂存M13.0
A M 17.0
S M 13.0 //以下程序交换M13.0和M17.0的值
AN M 17.0
R M 13.0
A M 1.1
S M 17.0
AN M 1.1
R M 17.0
_001: NOP 0
此程序已用仿真验证,下图中的修改数值是移位之前MD10和MD14的值,状态值是循环左移4位后的值。
我是廖常初,是一个高校的老师,曾在企业从事机械、电气技术工作,长期从事工业控制和PLC应用的教学、科研和工程应用工作。博客中的日志除注明外均为原创。愿意在此与大家探讨工控的问题!
廖常初工控博客地址:http://blog.gkong.com/blog.asp?name=liaochangchu
我曾写过几本小书: 《PLC编程及应用》第3版(S7-200)、《S7-300/400 PLC应用技术》第3版、《FX系列PLC编程及应用》第2版、《S7-200 PLC编程及应用》、《PLC基础及应用》第2版(FX系列大专教材)、《西门子人机界面(触摸屏)组态与应用技术》、《西门子工业通信网络组态编程与故障诊断》、《S7-1200 PLC编程及应用》第2版、《跟我动手学S7-300/400 PLC》、《跟我动手学FX系列PLC》
机械工业出版社廖常初图书专题:http://www.gkong.com/zt/liaochangchu/
廖常初工控博客地址:http://blog.gkong.com/blog.asp?name=liaochangchu
我曾写过几本小书: 《PLC编程及应用》第3版(S7-200)、《S7-300/400 PLC应用技术》第3版、《FX系列PLC编程及应用》第2版、《S7-200 PLC编程及应用》、《PLC基础及应用》第2版(FX系列大专教材)、《西门子人机界面(触摸屏)组态与应用技术》、《西门子工业通信网络组态编程与故障诊断》、《S7-1200 PLC编程及应用》第2版、《跟我动手学S7-300/400 PLC》、《跟我动手学FX系列PLC》
机械工业出版社廖常初图书专题:http://www.gkong.com/zt/liaochangchu/