回复:关于时钟存储器的应用程序

TRIVER

  • 帖子

    275
  • 精华

    0
  • 被关注

    85

论坛等级:侠圣

注册时间:2011-03-03

钻石 钻石 如何晋级?

发布于 2015-02-16 10:00:18

26楼

展开查看
以下是引用老学童在2015-01-19 14:38:46的发言 >5楼:背影大侠点石成金,这么模糊的一段程序居然一眼洞穿乾坤,哈哈,佩服!
前段时间‘无敌’坛友发给我一段SCL写的程序,向我求解,我觉得这段程序写的相当好,功能与楼主的程序类似,贴出来供对SCL编程有兴趣的坛友分享一下:
FUNCTION SYS_SYSTEM : VOID (* FC1 *)
BEGIN
IF SYS.Reset
THEN
SYS.Prev_Clock100ms := FALSE;
SYS.Prev_Clock200ms := FALSE;
SYS.Prev_Clock500ms := FALSE;
SYS.Prev_Clock1sec := FALSE;
SYS.Prev_Clock1min := FALSE;
SYS.Prev_Clock10min := FALSE;
SYS.Prev_Clock1hour := FALSE;
SYS.PrevReset := FALSE;
SYS.TickCounter := 0;
END_IF;
SYS.FT_Reset := NOT SYS.Reset AND SYS.PrevReset;
SYS.PrevReset := SYS.Reset;
(* Clock signals are constructed using a timertick counter maintained by OB35.
* Clock signals are defined by 2x their period time and have a 50% duty cycle,
* e.g. the 100ms clock is 100ms high, and then goes low for another 100ms.
*)
SYS.Clock100ms := (DINT_TO_DWORD(SYS.TickCounter DIV 1) AND 16#0001) <> 0;
SYS.Clock200ms := (DINT_TO_DWORD(SYS.TickCounter DIV 2) AND 16#0001) <> 0;
SYS.Clock500ms := (DINT_TO_DWORD(SYS.TickCounter DIV 5) AND 16#0001) <> 0;
SYS.Clock1sec := (DINT_TO_DWORD(SYS.TickCounter DIV 10) AND 16#0001) <> 0;
SYS.Clock1min := (DINT_TO_DWORD(SYS.TickCounter DIV 600) AND 16#0001) <> 0;
SYS.Clock10min := (DINT_TO_DWORD(SYS.TickCounter DIV 6000) AND 16#0001) <> 0;
SYS.Clock1hour := (DINT_TO_DWORD(SYS.TickCounter DIV 36000) AND 16#0001) <> 0;
SYS.Blinking := SYS.Clock1sec;
(* Create Oneshots *)
SYS.ClockPulse100ms := SYS.Clock100ms <> SYS.Prev_Clock100ms;
SYS.ClockPulse200ms := SYS.Clock200ms <> SYS.Prev_Clock200ms;
SYS.ClockPulse500ms := SYS.Clock500ms <> SYS.Prev_Clock500ms;
SYS.ClockPulse1sec := SYS.Clock1sec <> SYS.Prev_Clock1sec;
SYS.ClockPulse1min := SYS.Clock1min <> SYS.Prev_Clock1min;
SYS.ClockPulse10min := SYS.Clock10min <> SYS.Prev_Clock10min;
SYS.ClockPulse1hour := SYS.Clock1hour <> SYS.Prev_Clock1hour;
SYS.Prev_Clock100ms := SYS.Clock100ms;
SYS.Prev_Clock200ms := SYS.Clock200ms;
SYS.Prev_Clock500ms := SYS.Clock500ms;
SYS.Prev_Clock1sec := SYS.Clock1sec;
SYS.Prev_Clock1min := SYS.Clock1min;
SYS.Prev_Clock10min := SYS.Clock10min;
SYS.Prev_Clock1hour := SYS.Clock1hour;
END_FUNCTION
这程序有问题吧??
脚踏实地的走下去!
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54625条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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