S7-300/400PLC秒脉冲实现方法 点击:1109 | 回复:1



李东泽

    
  • [版主]
  • 精华:7帖
  • 求助:25帖
  • 帖子:1209帖 | 6375回
  • 年度积分:216
  • 历史总积分:44409
  • 注册:2010年3月25日
发表于:2018-12-27 08:42:30
楼主

方法一:CPU 用时钟存储器
    硬件组态中CPU属性"Cycle/Clock Memory"中"Clock Memory"设定的Memory Byte,可以看下帮助,每一位都有固定频率在"Propreties"窗口中点击"Cycle/Clock Memory"(循环/时钟存储器)选项卡,可以设置"Scan cycle monitoring time"(以ms为单位的扫描循环监视时间),默认值为150ms.如果实际的循环扫描时间超过设定值.CPU将进入STOP模式."Scan cycle Load from Communication "用来限制通信处理占扫描周期的百分比,默认值为20%
时钟脉冲是一些可供用户程序使用的占空比为1:1的方波信号,一个字节的时钟存储器的每一位对应的一个脉冲如下:


字节位   Bit7  Bit6  Bit5  Bit4  Bit3  Bit2  Bit1  Bit0
频率(Hz)  0.5  0.62   1    1.25    2    2.5   5     10
周期(秒)   2    1.6   1     0.8   0.5   0.4   0.2   0.1


    如果要使用时钟脉冲,首先要选中"Clock Memory'(时钟存储器)选项,然后设置时钟存储器(M)的字节地址.假设设置的地址为100(即MB100),有上表可知,M100.7周期为2s,如果用M100.7的常开的触点来控制Q0.0的线圈,Q0.0将以2s的周期闪烁(亮1s,熄灭1s).
    "OB85-Call up at I/O access error"用来预设置CPU对系统修改过程映像时发生的I/O访问错误的响应.如果希望在出现错误时调用OB85,建议选择"Only for incoming and out going error"(仅在错误产生和消失),相对于"On each individual access"(每次单独的访问),不会增加扫描循环时间.


方法二:自己编写延时程序,并设定好延时时间,当时间到后便执行存储程序块调用,该方法受程序循环时间的影响,不是特别精确,如果是要求不太严格的情况下可以使用本方法。


方法三:利用等时中断组织块来实现等时中断,如在OB35中调用存储程序块,实现等时存储,该方法较精确。


方法四:可以利用SFC1读取CPU时钟,通过时钟值的差额计算可以实现等时间隔存储。(此方法与我介绍的S7-200 的第三种方法相似在此就不具体写编程方法了)


方法五:如果用外部等时间间隔触发信号的话,利用硬件中断实现也是可以的。


1分不嫌少!


楼主最近还看过



yuanle

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 10210回
  • 年度积分:2747
  • 历史总积分:48332
  • 注册:2005年4月22日
发表于:2018-12-27 08:52:31
1楼

竟然没有OB35,时钟脉冲也有一定的定时误差。


HAVE FUN!


热门招聘
相关主题

官方公众号

智造工程师