scl语言用plc脉冲做定时器_scl语言用plc脉冲做定时器_西门子PLC SCL语言开发学习笔记(二)...
今天来讲下scl两个关键的点
一、按键事件
比如地址I0.0是某个按钮的状态,他只有True和False两个状态,所以我们要获得按下事件需要我们自己模拟。
#KeyPress := "Btn1" AND NOT #LastKey;
#LastKey := "Btn1";
这样通过对#KeyPress判断是否为True即可获得一次点击事件,相当于 |P|
把上一次的存起来,然后判断按下,如果你想把按键放在松开时也可以。
因为大多数事情都是用按键触发的,掌握这一点才能开始跑代码。
二、定时器
PLC在梯形图中使用定时器很困难,比如TON 5秒,需要输入一直保持True,持续5s后输出变为True,TOF则需要输入从True变成False,然后持续5秒后输出False,自带各种逻辑,一旦碰到复杂的条件判断头都晕了,我是只能做到间隔时间打开几个灯,但要做另一个按钮还能间隔关上就不会了。
我们写程序的只需要一个计时器就好了,不需要你带这么多乱七八糟的逻辑,我们自己决定到时间了干嘛就好了。
1) 使用TON TORN
使用TON很简单,让一个变量保持True,然后判断输出是否时间到了,时间到了既可以做事情了,同时让输入变为False。
TORN则还含有Reset功能,他能累计计时,同时能取到计时了多久,下面这个程序展示了一开始就给TimerStart设置为True,开始计时并变灯的情况。
下面是代码块,不要忘了这是被循环不断执行的,大概功能是第五秒打开一个灯,第10秒再打开一个,到15秒重置, 为了代码简单理解就不加各种为了严谨的判断了
#TimerStart := TRUE; //随便打开一下,就不写事件了
"IEC_Timer_0_DB".TONR(IN :=#TimerStart,
PT := T#15S, //计时15秒
Q=> #TmpOut, //计时完毕,我们不去用这个
R:=#Reset,
ET=> #Time1);//ET为取出计时了多久
IF #Reset THEN
#Reset :=FALSE;
END_IF;
IF #Time1>=T#5s THEN
"Light1" :=TRUE;
END_IF;
IF #Time1>=T#10s THEN
"Light2" :=TRUE;
END_IF;
IF #TmpOut THEN
"Light1" :=FALSE;
"Light2" :=FALSE;
#Reset :=TRUE;
END_IF;
2)时钟存储器位
首先右键PLC进入属性
找到时钟存储器位
我们把地址放到100那里去,这样子这几个存储器里,就会有震荡,不断在True False之间来回变化,比图1HZ会在一秒的开始变为True,到一半变为False,再下一秒开始变True,通过他的变化就能计时了
下面这个程序,再按下按钮1后亮一个灯,过5秒再亮一个,再过5秒再亮一个,关闭时也是间隔灭灯,不考虑打开过程中关闭等情况。
IF #TT <> "Clock_1Hz" THEN //一个不断根据震荡时间增加的Count 计数器
#Count+= 1;
END_IF;
#TT :="Clock_1Hz";
#KeyPress :="Btn1" AND NOT #LastKey;
#LastKey :="Btn1";
IF #KeyPress AND NOT "Light1" THEN//开灯事件
#TurnOn :=TRUE;
#TurnOff :=FALSE;
#Count := 0; //重置计数器
END_IF;
IF #KeyPress AND "Light1" THEN//关灯事件
#TurnOn :=FALSE;
#TurnOff :=TRUE;
#Count := 0;
END_IF;
IF #TurnOn THEN//持续处理开灯
"Light1" :=TRUE;
IF #Count>= 5 * 2THEN
"Light2" :=TRUE;
ELSIF #Count>= 20THEN
"Light3" :=TRUE;
END_IF;
END_IF;
IF #TurnOff THEN
"Light1" :=FALSE;
IF #Count>= 10THEN
"Light2" :=FALSE;
ELSIF #Count>= 20THEN
"Light3" :=FALSE;
END_IF;
END_IF;
3) 时间函数
其实PLC里面本来也有很多时间函数,比如获取当前机器时间,比较时间差等,我们完全可以很灵活的去使用这些方法,变得和编程无异,这里就不介绍了
结语:我们可以识别按钮事件,然后获得了好用的计时器后,scl的逻辑处理剩下的就都是写代码了和调方法了,没有什么能难倒我们程序员了
SCL逻辑比梯形图更严谨明白,复杂逻辑控制更简单,是我们程序员的好帮手。
以后会继续挖掘SCL的写法,教大家SCL能代替梯形图的写法,做到是个程序员就无门槛
暂时告一段落
scl语言用plc脉冲做定时器_scl语言用plc脉冲做定时器_西门子PLC SCL语言开发学习笔记(二)...相关推荐
- 嵌入式开发学习笔记6-了解单片机中的特殊功能寄存器(定时器/计数器)
嵌入式开发学习笔记6-了解单片机中的特殊功能寄存器(定时器/计数器) 定时器/计数器简介 TH与TL TMOD工作模式寄存器 TCON定时器控制寄存器 定时器操作实例 定时器/计数器简介 在单片机中, ...
- Go语言开发学习笔记(持续更新中)
Go语言开发学习笔记(持续更新中) 仅供自我学习 更好的文档请选择下方 https://studygolang.com/pkgdoc https://www.topgoer.com/go%E5%9F% ...
- 打印机通讯 tspl指令_西门子PLC四种核心通讯方式汇总学习
西门子作为最早进入中国市场的工控厂家,其市场占有率一直非常高. 西门子PLC的品质非常好,其网络稳定性.开放性深受工控人员的喜爱,而且编程软件分类多,使用方便.在国内工控界具有显著地位.虽然大家对西门 ...
- 嵌入式系统设计师学习笔记二十八:嵌入式程序设计③——高级程序设计语言
嵌入式系统设计师学习笔记二十八:嵌入式程序设计③--高级程序设计语言 解释程序和编译程序 编译器的工作阶段示意图 语法错误:非法字符,关键字或标识符拼写错误 语法错误:语法结构出错,if--endif ...
- 游戏开发学习笔记——lua脚本语言——安装、汉化与小测试(解决lua运行代码乱码问题)
游戏开发学习笔记--lua脚本语言--安装.汉化与小测试 FOR THE SIGMA FOR THE GTINDER FOR THE ROBOMASTER 简介: Lua 是一种轻量小巧的脚本语言,用 ...
- GEE(Google Earth Engine) 最基础代码学习笔记二 —— JavaScript 语言
GEE(Google Earth Engine) 学习笔记二 Javascript 语言 1. 注释 print('Hello World!'); 如果要注释,则在代码前面加//,比如: // pri ...
- scl语言用plc脉冲做定时器_西门子PLC中使用SCL语言编程的技巧
中使用 SCL 语言编程的技巧 前言:两年半前我就在工控网上发表了有关 SCL 编程的知识 << 在 S7300400 型 PLC 中使用高级语言编程 >>, 但发表完 后,即 ...
- ab st语言编程手册_西门子PLC编程SCL和LAD谁才是王者?一起讨论一下
现在很多大品牌的中高级 PLC 都支持国际电工委员会 IEC61131 标准中规范的五种编程语言的混合编程,即梯形图(LD).结构化文本(ST).流程图(SFC).指令表(IL)和功能块(FB).在这 ...
- 西门子PLC-1200 SCL语言开发学习笔记 (一)
一.简介和背景 PLC一般使用梯形图开发,但是梯形图适合电工使用而不是程序员使用,对我们来说开发困难,门槛高,幸好PLC的开发标准还带了类pascal的高级语言,在西门子这里叫SCL语言,这对于我们程 ...
- 博图sodt定时器的用法_西门子plc定时器指令 西门子S7-1200系列PLC定时器指令
定时器指令是在PLC程序设计中非常常见的一种指令,S7-1200系列PLC的定时器的指令格式及使用方式都不同于S7-200系列PLC. S7-1200系列PLC的采用的是IEC标准的定时器指令,用户程 ...
最新文章
- nemanja AJAX,通过AJAX发送空值 - ASP.NET MVC
- linux c sysconf函数 得到系统配置
- Benelux Algorithm Programming Contest 2016 Preliminary 题解
- idea pom依赖失败_IDEA中Maven依赖下载失败的完美解决方案
- 734. [网络流24题] 方格取数问题 二分图点权最大独立集/最小割/最大流
- assubclass_Java类class asSubclass()方法及示例
- 腾讯视频怎么打开个人直播后台播放功能
- 天线发射功率计算公式_增加发射功率,提高接收灵敏度就能提高通信距离吗?...
- 安全使用操作系统(Windows)
- 令人深思的文章:也许你这辈子都只是个小人物
- 华为西安工业大学鸿蒙,培养百位将领、19位院士,这所211大学被誉为“华为人的母校”...
- 关于严格模式的简单介绍
- 重磅!上海出落户新政:双一流应届硕士可直接落户!
- [转]人生就像一张茶几,摆满了各种杯具洗具餐具
- java毕业设计大众点评管理系统Mybatis+系统+数据库+调试部署
- linux 下的程序格式,linux 下软件安装包的格式有哪些?
- 弹性公网IP(EIP)
- cglib中Enhancer介绍
- python翻译成中文_图像处理入门 100 题,有人把它翻译成了中文版!
- 寻找中国最好百名产品经理:豆瓣阿北360周鸿祎
热门文章
- 移动智能终端之国产操作系统(笔记三)
- 洋洋背古诗——寒假版
- 恢复手机HTML文件,easyrecovery恢复手机误删文件方法
- SSM+高校学生综合评测系统 毕业设计-附源码200851
- 为什么女程序员很孤独?
- 用计算机信息术语感恩老师,感恩老师的祝福语(精选50句)
- 鸿蒙系统安全模式,菜鸟必看 如何在安全模式下使用光驱
- IDO-SBC3019-V1B:PX30 超强 CPU 搭载 Android/Linux 系统(Android8.1)
- Quartus 实现D触发器及时序仿真
- exe文件修复,关于logo1_exe“威金”变种病毒的探讨