CODOSYS之结构化文本(ST)——中级篇(一)计时器的应用

news2024/10/6 18:27:59

标准库中常用的计时器有如下四个(部分环境还支持高精度计时器如LTON等等):

.RTC

.TON

.TOF

.TP

本文将对将对上述四个计时器进行简单的讲解。

.RTC: 

RunTime 时钟定时器,返回启动时间,当前时间和日期。

Inputs:

EN : BOOL; 一个上升沿启动 CDT 中时间统计。

PDT : DATE_AND_TIME; 计数将要启动的时间和日期。

Outputs:

Q : BOOL; 当 CDT 开始计数输出为 TRUE 。

CDT : DATE_AND_TIME; 当前计数时间和日期的状态

VarBOOL2:=RTC(EN, PDT, Q, CDT) 表示:当EN为 FALS,输出变量 Q 以及 CDT 为 FALSE 相关时间为 DT#1970-01-01-00:00:00。

一旦 EN 为 TRUE (上升沿),PDT给予的时间将会被设置,并且将会以秒进行计数一旦 EN 为TRUE 将返回 CDT 。一旦 EN 被复位为 FALSE, CDT 将会被复位为初始值 DT#1970-01-01-00:00:00。

Example:

Variable definition

VAR  
  My_RTC:     RTC;            (* instance of FB RTC *)
  My_EN:      BOOL;           (* PDT will be loaded, if EN
                                 gets a rising edge *)
  My_PDT:     DATE_AND_TIME;  (* date and time preset *)
  My_Result:  BOOL;           (* copy of EN *)
  My_CDT:     DATE_AND_TIME;  (* present time and date,
                                 valid: EN = 1 *)
END_VAR

 

Function call ST

My_RTC(EN  := My_EN, PDT := My_PDT); 
My_Result  := My_RTC.Q;
My_CDT     := My_RTC.CDT;

.TON

定时器功能块,实现一个定时。当输入为 TRUE,将会启动一个定时器知道输出为 TRUE。

Inputs:

IN : BOOL; 上升沿启动 ET 端定时。

PT : TIME; 定时 ET (延迟时间) 的上限。

Outputs:

Q : BOOL; 一旦 ET 到达显示时间 PV 输出将会变为 TRUE (定时时间结束)。

ET : 定时时间的当前状态

TON(IN, PT, Q, ET) 表示: 如果 IN 为 FALSE, Q 将会为 FALSE 并且 ET 为 0。

一旦 IN 为 TRUE,时间将会在 ET 端以毫秒进行计时知道等于 PT值。然后将会保持一个常量。

当 IN 为 TRUE 并且 ET 等于 PT 时 Q 为TRUE,否则为 FALSE。

因此,当定义时间 PT 按照毫秒运行结束时 Q 将会得到一个上升沿。

Example:

VAR  
  My_TON:   TON;    (* instance of FB TON *)
  My_IN:    BOOL;   (* starts timer with a rising edge,
                       resets timer with a falling edge *)
  My_PT:    TIME;   (* time that must elapse, before Q
                       is set *)
  My_Puls:  BOOL;   (* pulse TRUE, as soon as delay has
                       elapsed *)
  My_Time:  TIME;   (* elapsed duration of the delay
                       (between 0 and PT) *)
END_VAR

 

Function call ST

My_TON(IN := My_IN, PT := My_PT);
My_Puls   := My_TON.Q;
My_Time   := My_TON.ET;

.TOF

 定时器功能块,用于一个关闭延时。当输入从 TRUE 到 FALSE (下降沿),在一段时间滞后输出将会被置为 FALSE。

Inputs:

IN : BOOL; 下降沿启动 ET 端计时。

PT : TIME; ET端计时上限值 (延迟时间)。

Outputs:

Q : BOOL; 一旦 ET 到达上限值 PV 那么将会得到一个下降沿(延时时间结束)。

ET : 当前延时定时器状态。

TOF(IN, PT, Q, ET) 表示:如果 IN 为 TRUE,输出将会为 TRUE 。

一旦 IN 为 FALSE,在 ET 端时间将按照毫秒的形式开始计时直到 ET 的值等于 PT 的值。然后将保持一个常量。

当 IN 为 FALSE 并且 ET 等于 PT Q 为 FALSE 。否则为 TRUE。

因此,当 PT 以毫秒到达指定时间后 Q 将会得到一个下降沿。

Example:

VAR  
  My_TOF:   TOF;    (* instance of FB TOF *)
  My_IN:    BOOL;   (* starts timer with a falling edge,
                       resets timer with a rising edge *)
  My_PT:    TIME;   (* time that must elapse, before Q
                       is set *)
  My_Puls:  BOOL;   (* pulse FALSE, as soon as delay has
                       elapsed *)
  My_Time:  TIME;   (* elapsed duration of the delay
                       (between 0 and PT) *)
END_VAR

 

Function call ST

My_TOF(IN := My_IN, PT := My_PT); 
My_Puls   := My_TOF.Q;
My_Time   := My_TOF.ET;

 .TP

定时器功能块,作为一个触发器。时间将会增加知道到达指定时间。在计时过程中为 TRUE 其他时候为 FALSE。

Inputs:

IN : BOOL; 一个上升沿将启动 ET 端计时器。

PT : TIME; 定时时间

Outputs:

Q : BOOL; 时间计时到 ET 输出为 TRUE。

ET : TIME; 当前时间状态

TP(IN, PT, Q, ET) 表示:如果 IN 为 FALSE, Q 将会变为 FALSE 并且 ET将为 0

一旦输入 IN 变为 TRUE,时间将按照毫秒开始从 ET 端进行计时知道时间值到达 PT。然后将保持一个常量。

IN 为 TRUE 并且ET 小于 PT 时 Q 为 TRUE 。否则为 FALSE。

Q 返回到达时间 PT 的信号。

 

Example:

Variable definition

VAR  
  My_TP:    TP;     (* instance of FB TP is created *)
  My_IN:    BOOL;   (* trigger for the start signal *)
  My_PT:    TIME;   (* length of the high signal in 10 ms *)
  My_Puls:  BOOL;   (* pulse TRUE, as long as timer is
                       running *)
  My_Time:  TIME;   (* elapsed time (between 0 and PT) *)
END_VAR

 

Function call ST

My_TP(IN := My_IN, PT := My_PT);
My_Puls  := My_TP.Q;
My_Time  := My_TP.ET;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/420431.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

别搞了 软件测试真卷不动了...

内卷可以说是 2022年最火的一个词了。2023 年刚开始,在很多网站看到很多 软件测试的 2022 年度总结都是:软件测试 越来越卷了(手动狗头),2022 年是被卷的一年。前有几百万毕业生虎视眈眈,后有在职人员带头“…

L2-042 老板的作息表(极短代码)

题目: 新浪微博上有人发了某老板的作息时间表,表示其每天 4:30 就起床了。但立刻有眼尖的网友问:这时间表不完整啊,早上九点到下午一点干啥了? 本题就请你编写程序,检查任意一张时间表,找出其中…

企业推广常用的网络推广方法有哪些?

网络推广是指通过互联网向目标用户推广产品、服务或品牌的过程,其主要目的是为了扩大业务范围,提高企业知名度,增加销售额。在当今的数字化时代,网络推广已经成为了企业不可或缺的一部分。本文将介绍一些常见的网络推广方法和途径…

Linux安装中文字体

前言 Lunix默认没有中文字库,很容易导致项目开发时出现中文字符乱码的情况。 1 查看linux已安装字体 fc-list如出现-bash: fc-list: command not found 说明Linux中没有安装字体库,需要先安装字体库 2 Linux安装字体 yum -y install fontconfig执行…

不平衡电网电压下虚拟同步发电机VSG控制策略-实现不平衡电压下控制三相电流平衡

资源地址: 不平衡电网电压下虚拟同步发电机VSG控制策略-实现不平衡电压下控制三相电流平衡-电子商务文档类资源-CSDN文库 主体模型: VSG控制;正负序分离;正负序控制;电压电流双环控制!!&…

[LCA]最近公共祖先(倍增)

概念引入 祖先 祖先其实很好理解,一个节点的 **父节点 以及 父节点的父节点 以及 父节点的父节点的父……**都是这个节点的祖先 比如说上面的 ddd 节点, bbb 节点和 aaa 节点都是它的祖先 kkk 级祖先 称节点 𝑥 的父节点为 𝑥 …

带你走进Flutter 3.7

期待已久的新教程上线啦!解锁Flutter开发新姿势,一网打尽Flutter最新与最热技术,点我Get!!! 新年伊始,由 Flutter 3.7 正式版来「打头阵」!我们与整个 Flutter 社区们继续在 Flutter 3.7 中优化了框架,包括…

(一)Linux:自由、开放、灵活的操作系统内核

目录 一、Linux的发展史 二、linux的开源 三、目前的现状 四、企业应用现状 五、发行的版本 六、安装与使用 七、利用云服务器配置Linux环境 一、Linux的发展史 Linux是一款由林纳斯托瓦兹(Linus Torvalds)开发的操作系统内核,它的发布…

用 logging 模块将信息输出到日志文件

当你要用到一些信息去统计画图, 或者你的输出太长了,出现了那种“折叠”,就是说“内容超过1000行”,结果等下一次进入环境,你只能看到结尾的输出,却看不到开头的输出了, 那么你可以使用 Pytho…

【NLP实战】基于Bert和双向LSTM的情感分类【上篇】

文章目录前言简介数据获取与提取数据清洗读取数据,查看数据清洗训练集观察数据分布去除空数据去除重复数据关于去除停用词关于特殊符号储存清洗后的数据集清洗测试集观察数据分布去除空数据去除重复数据(并储存)清洗验证集观察数据分布去除空行去除重复数据(并储存)…

Go分布式爬虫(二十四)

文章目录24 存储引擎爬取结构化数据step1 从首页获取热门标签信息step2 获取图书列表step3 获取图书详情完整规则存储到MySQL数据抽象数据存储存储引擎实现存储引擎验证dockerdocker-compose使用Navicat查看使用DataGrip查看24 存储引擎 爬虫项目的一个重要的环节就是把最终的…

Mysql逻辑架构和语句执行流程

文章目录1. 逻辑架构剖析1.1 连接管理--连接层1.2 解析与优化--服务层1.3 存储引擎2. SQL语句的执行流程2.1 执行原理2.2 语法顺序1. 逻辑架构剖析 当一个客户端连接mysql服务器执行一条查询语句时,会发生以下处理过程: 1.1 连接管理–连接层 客户端想…

1.半导体基础知识

1.半导体基础知识本征半导体什么是半导体?什么是本征半导体?本征半导体的结构本征半导体中的两种载流子为什么将自然界导电性能中等的半导体材料制成本征半导体杂质半导体N型半导体P型半导体PN结PN结中的扩散运动漂移运动和PN结的形成PN结的单向导电性PN…

Spring中Bean对象的作用域和生命周期详解

Spring作为一个具有众多工具方法的IoC容器,其核心功能就是Bean对象的存储和取出,那么学习Bean对象的作用域和生命周期能让我们更清楚地了解Bean对象在Spring容器中的整个加载过程! 一,案例演示(Bean对象的修改&#xf…

4.搜索辅助功能

ES 既有基本的搜索功能、又有字段类型的精确搜索、分词匹配、范围搜索、坐标搜索、分页查询等等。 4.1 搜索辅助功能 俗话说“工欲善其事,必先利其器”。在介绍ES提供的各种搜索匹配功能之前,我们先介绍ES提供的各种搜索辅助功能。例如,为优化…

【让你的灵感立刻落地】在线代码运行平台InsCode

文章目录官网地址详解1. 导入项目2. 在线演示、在线修改3. 发布作品参考InsCode 是一个在线代码运行平台,可以在线上运行代码,并且支持多种语言,同时还可以在线修改和提交代码,支持发布和分享项目。InsCode 平台在编写博客、演示项…

二叉树练习题(递归展开图详解哦)

全文目录引言单值二叉树题目描述及思路实现二叉树的最大深度题目描述及思路实现翻转二叉树题目描述及思路实现相同的树题目描述及思路实现总结引言 前面我们介绍了二叉树的相关基础知识,并且了解到二叉树的表示有两种结构:顺序结构与链式结构。即&#…

手把手教您注册/使用Claude

文章目录注册slack注意事项最近几天出现了一个很火的AI聊天项目——Claude,据说可以媲美ChatGPT,最主要的就是可以很好的解决我们国内的使用痛点,可以完全免费无限制的使用,下面就和大家分享一下正确的注册和使用Claude的流程&…

想成为一名【黑客】,你该如何快速的入门?

假设你有一台个人电脑,或者可以访问一台电脑,那么你就可以着手【黑客】技能的学习了。【黑客】文化演化而来的的时候,电脑是很昂贵的,个人不能拥有他们。所以最重要的一个步骤就是新手可以拥有一台属于自己的电脑,新手…

【Cisco Packet Tracer| 一.交换机配置模式与基本参数配置】

文章目录一.交换机的多种模式以及切换1.如何进入到交换机配置的命令行用户界面(Command Line Interface)2.普通模式模式3.特权用户模式4.全局配置模式5.模式切换图二.交换机名称,口令等设置1.全局模式下-交换机改名2.接口模式下-配置端口速度和工作模式2.1配置端口速…