工控编程吧

标题: 循环移位的取值判断用STI/SCL实现 [打印本页]

作者: baikhgmv    时间: 2016-10-2 10:50
标题: 循环移位的取值判断用STI/SCL实现
循环移位的取值判断用STI/SCL实现

各位大师傅:

我想用STL或者SCL语言实现一个功能,我不想用梯形图做,想学习一下别的方式,所以想用语句实现,还请各位赐教:

行程开关检测开关:I0.0

工件光电检测开关:I0.1

当光电检测开关为1时,同时检测行程开关的状态,若行程开关的状态也为1,则将这个结果1保存起来,若

光电检测开关为0时且行程开关的状态为1,则将这个结果0也保存起来,如此反复判断工位上的工件有无,就是左移(0000000000000000----0000000000000001),我需要将这些结果保留16次,存放于一个字MW0中,再去取这个字MW0中的位的状态来使用,

例如我想每次用这个字中的BIT3位为1时触发我的一个外部输出

用STL或SCL如何写程序?对于你们来说可能太简单了吧,呵呵


--------行程开关信号和光电信号相与,做上升沿和下降沿,在上升沿和下降沿都移位MW0,再把行程开关和光电的逻辑结果写入MW0最后一位


AI0.0

AI0.1

=L0.0

FP M10.0

JCN M001

L MW0

SLW 1

A L0.0

= M0.0


M001: NOP 0

A L0.0

FN M10.1

JCN M002

L MW0

SLW 1

A L0.0

= M0.0

M002: NOP 0




------I0.1是工件光电检测开关,有无工件在于它,而I0.0只是周期性的料位检测位,如将I0.0和I0.1相与,用其上升沿和下降沿来控制字的移位,恐怕会达不到楼主的要求吧?


-------感觉楼主用循环判断,然后再根据每个位的状态执行相应的字逻辑运算应该还是可以的


---------用200试了试:

LD     I0.0

EU

S      M1.0, 1

LD     I0.1

EU

A      M1.0

S      M1.1, 1

LD     I0.0

ED

SHRB   M1.1, V100.0, +16

LD     I0.0

ED

R      M1.0, 2

要的位输出在VW100中。


--------先弄明白算法,再输出代码。


---------虽然不知道楼主是什么处理工艺,感觉用字逻辑运算好点吧


----------程序修改了一下,之前没有测试过。至于I0.0与I0.1之间的逻辑怎么配合,楼主可以自己根据实际情况而定,我只是给出了移位方法

      A     I      0.0

      A     I      0.1

      =     L      0.0

      FP    M     10.0

      JCN   M001


      L     MW     0

      SLW   1
      T     MW     0
      A     L      0.0

      =     M      1.0

M001: NOP   0

      A     L      0.0
      FN    M     10.1
      JCN   M002
      L     MW     0
      SLW   1
      T     MW     0
      A     L      0.0
      =     M      1.0
M002: NOP   0










欢迎光临 工控编程吧 (https://www.gkbc8.com/) Powered by Discuz! X3.4