之前我曾发布过一个使用西门子SCL编程语言编写翻转触发器的视频(本文末可观看),有网友留言能否对代码进行优化改进,我考虑并测试了新代码,较之前更为简练,写篇文章与大家分享下。
函数块FB102_FlipFlop实现翻转触发器功能,其参数含义如下面的表格和图片所示:
名称 | 类别 | 数据类型 | 说明 |
---|---|---|---|
trigger | 输入 | Bool | 触发信号 |
Q | 输出 | Bool | 触发器输 |
statTriggerUp | 静态变量 | Bool | 触发信号上升沿 |
statTriggerUpHelpFlag | 静态变量 | Bool | 触发信号上升沿辅助变量 |
statOut | 静态变量 | Bool | 输出信号静态变量 |
优化之前的代码如下图所示:
大家注意看信号翻转的这一段代码;
//信号翻转
IF #statTriggerUp AND NOT #statOut THEN
#statOut := TRUE; //输出1
ELSIF #statTriggerUp AND #statOut THEN
#statOut := FALSE;//输出0
END_IF;
感觉还是比较繁琐,因此可以这样优化:
//信号翻转IF #statTriggerUp THEN
#statOut :=NOT #statOut; //信号翻转
END_IF;
整个函数块优化后的代码如下图所示:
这样优化后的代码简洁了很多,感兴趣的小伙伴可以自己测试下。之前发布的视频如下:
发表评论
厉害?知乎也经常看到您