回复:欢迎拍砖。再论沿指令,实例还原真相

yanxiao

版主

  • 帖子

    12318
  • 精华

    49
  • 被关注

    193

论坛等级:至圣

注册时间:2003-06-06

钻石 钻石 如何晋级?

发布于 2018-01-30 23:51:50

39楼

六、实例6:沿指令在主程序,但被间隔跳过,不是每周期都扫到


尽管沿指令在主程序,但是被有条件地跳过了,没有每周期扫到,还能正常工作吗?

答案当然是肯定的,可以正常工作。(为什么不可以呢?)


还是由于LAD程序要分很多的网络,不方便贴。

只贴一个STL的。



观察VD0和VD4,两者时刻相等,不差分毫。


问题来了:

如果不是8次扫一次,改为100次才扫一次,1000分之一呢,10000分之一呢?

沿指令还能坚挺吗?


记得有一年的春晚,有一个科普节目,讲的是手机锂电池会不会充电时爆炸。充电用的是一个台式稳压电源,可调电压、大电流,不是正常给手机充电的小充电器。

充了一会电,电池没爆,主持人有点失望,让实验助手加大电压电流,再充,过一会儿,还是没爆,再加大电压电流。

如此循环数次,电池终于服软,爆炸了。



附上源程序:

实例6:沿指令在主程序但被间隔跳过.rar



再贴一遍文字版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


评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200 SMART

共有9379条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。