恭喜,你发布的帖子
发布于 2018-01-30 23:51:50
39楼
六、实例6:沿指令在主程序,但被间隔跳过,不是每周期都扫到
尽管沿指令在主程序,但是被有条件地跳过了,没有每周期扫到,还能正常工作吗?
答案当然是肯定的,可以正常工作。(为什么不可以呢?)
还是由于LAD程序要分很多的网络,不方便贴。
只贴一个STL的。
观察VD0和VD4,两者时刻相等,不差分毫。
问题来了:
如果不是8次扫一次,改为100次才扫一次,1000分之一呢,10000分之一呢?
沿指令还能坚挺吗?
记得有一年的春晚,有一个科普节目,讲的是手机锂电池会不会充电时爆炸。充电用的是一个台式稳压电源,可调电压、大电流,不是正常给手机充电的小充电器。
充了一会电,电池没爆,主持人有点失望,让实验助手加大电压电流,再充,过一会儿,还是没爆,再加大电压电流。
如此循环数次,电池终于服软,爆炸了。
附上源程序:
再贴一遍文字版STL程序
TITLE=六、实例6:沿指令在主程序,但被间隔跳过,不是每周期能扫到
//
// 1、使用SMB34定时产生50ms中断,对M0.0取反,模拟一个10Hz的信号源
//
// 2、在主程序,每周期扫一次,取M0.0上升沿对VD0加1
//
// 3、在主程序,再做一个沿指令,同样对M0.0的上升沿,对VD4加1
// 但是,这个沿指令会被间隔跳过。
//
Network 1
// 初始化:计数器清0
LD SM0.1 // 第一扫描周期
MOVD 0, VD0 // 清0
MOVD 0, VD4 // 清0
MOVB 0, VB100 // 清0
MOVB 50, SMB34 // 定时中断,50ms
ATCH INT0, 10 // 启用中断
ENI // 开中
Network 2
// 每周期扫一次
LD M0.0 // 10Hz信号
EU // 上升沿
INCD VD0 // 在上升沿增1
Network 3
// 但一个0-7的计数器
LD SM0.0
INCB VB100
ANDB 16#07, VB100
Network 4
// 只有当VB100==1时,才往下执行沿指令
LDB<> 1, VB100
JMP 10
Network 5
// 会被间隔跳过的沿指令
LD M0.0
EU
INCD VD4 // 同样对沿进行记录
Network 6
// 被跳过
LBL 10
请填写推广理由:
分享
只看
楼主