| 作者 | 主题 |
|---|---|
|
0917 游侠 经验值:516 发帖数:86 精华帖:0 |
楼主
主题:关于时钟存储器的应用程序
最近在看一个项目的程序,发现一个关于时钟存储器的程序不太明了。时钟存储器设定为MB28,
L MB 28 L MB 29 INVI AW T MB 27 L MB 28 T MB 29 问题是其他程序用到了M27.5,我想问一下M27.5到底是怎么回事,使得程序按秒加减计数 当然我对这段程序也不是太明白。希望各位大侠能帮忙看看,谢谢1
学习快乐 快乐学习
|
|
n次看你的背影 奇侠 经验值:7975 发帖数:2321 精华帖:73 |
1楼
主题:回复:关于时钟存储器的应用程序
楼主:看了你的代码,代码执行的过程我描述一下,你有时间可以测试、验证一下。
L MB 28 //装载时钟存储器本周期8个位当前的状态到ACCU1 L MB 29 //装载时钟存储器上周期8个位的状态到ACCU1,MB28的内容装载到ACCU2 INVI //时钟存储器上周期8个位的状态(ACCU1的内容)取反 AW //当前时钟存储器8个位的状态(ACCU2)&上周期时钟存储器8个位(ACCU1)取反的状态, //&的结果存储在ACCU1内 T MB 27 //将ACCU1的内容存储到MB27(只存储了低8位) L MB 28 //装载时钟存储器本周期8个位当前的状态 T MB 29 //将本周期时钟存储器8个位当前的状态存储到MB29 此段代码主要表达的意思就是:当时钟存储器8个位,任何一个位状态由0变化到1,8个位的上升沿将对应地存储到MB27,M27.5就是1Hz时钟脉冲的上升沿。此段代码简短朴素,效率却非常之高。 题外话:此段代码稍加修改,可以同时判断16个位的上升沿,如果做成一个FC,用起来还是很方便的。
佛对我说:“你的痛苦来自于你的欲望,没有欲望也就没有痛苦!”
|
|
老学童 奇侠 经验值:8233 发帖数:767 精华帖:32 |
8楼
主题:回复:关于时钟存储器的应用程序
这位坛友,你写的程序是得不到上升沿或下降沿信号的,MB28是(8位)信号源,MB29是(8位)中间变量,MB27是(8位)上升沿信号,
即MB29用于保存信号源(MB28)前一个周期的状态,因此,你写的程序脱离了上升沿或下降沿的原理,无法得到上升沿或下降沿信号。 将楼主的程序分解,例如: M28.0, 按西门子标准指令为: 上升沿 A M 28.0 //源信号 FP M 29.0 //中间变量 = M 27.0 //源信号的上升沿 下降沿 A M 28.0 //源信号 FN M 29.0 //中间变量 = M 27.0 //源信号的下降沿 如果不用西门子的标准指令,也可以得到上升沿和下降沿 信号: 上升沿 A M 28.0 //源信号 AN M 29.0 //中间变量 = M 27.0 //源信号的上升沿 A M 28.0 //源信号 = M 29.0 //中间变量(保存前一周期源信号) 下降沿 AN M 28.0 //源信号 A M 29.0 //中间变量 = M 27.0 //源信号的下降沿 A M 28.0 //源信号 = M 29.0 //中间变量(保存前一周期源信号)
人的生命似洪水在奔流,不遇着岛屿、暗礁,难以激起美丽的浪花。
|