0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

博图中的IEC定时器

opkgjew 来源:PLC标准化编程 作者:PLC标准化编程 2022-12-21 14:00 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

定时器的应用在PLC应用中算是最基础的高级算法。就好比在传统的继电器控制柜中,简单逻辑用继电器就可以搭成。然而如果有延时的需求,就需要加上几个时间继电器,然后整个柜子瞬间就显得高大上了。

而在PLC中,定时器的实现通常有两种方法,一种是系统提供了一种软的时间继电器通常叫做TIMER,通常也还会有数量限制。比如S7-200会有256个(T0 到 T255),而S7-300根据具体的CPU型号不同会有256512乃至更多。等等。

另一种方法则是系统提供了一种专用的功能块FB,专门用于定时器功能。而其实这是IEC61131-3标准所规定的。所以各PLC厂家只不过是实现了标准的要求而已。而对于S7-200这样的没有IEC定时器的系统,也只是因为其没有完全支持IEC标准。可见IEC标准对PLC厂家虽然有一定的约束力,但极小。

我在几年前就提出的,好的PLC程序,以及标准化的程序设计不要使用全局变量的M和T,前者M的话题后来又延伸讨论过多次,这回不涉及。这回主要探讨定时器。我在讲不用T的时候,指的是上面的TIMER定时器,即编号T0-T255这种。而有一些人脑回路可能有些多,看到我说T就理解为TIMER,理解为定时器,理解为写程序中不用任何的延时功能,就跟我哭诉,不用延时功能都无法编程了。

我说T不能用的时候可以用IEC定时器啊!那个没有编号,就不需要做编号规划,就不会有编号冲突。而在没有IEC定时器的PLC中怎么办?那就需要自己设计自定义的定时器。到现在同行已经普遍认识到了这一点。比如在SMART 200中,包括官方的1847平台中, 也都有自定义定时器实现的案例讲座。

而到了博图系统中,其实反而只有IEC定时器,而不再有时间继电器TIMER了。我因为自从升级到PORTAL系统之后就没再用过T, 所以反而很久之后才发现这一点。

PORTAL中将传统的时间继电器T取消了以后,其所提供的IEC定时器IEC_TIMER,其实机制原理与IEC标准的定时器还有一些差别,相当于把两者的功能给融合了。你如果仔细去研读官方的文档资料,会发现这一点。然而通常大多数人并没有仔细贯通研读官方文档的习惯(也没这个必要去浪费太多的时间),有的时候就会掉到坑里被绊倒一下。

这是本文要探讨的重点。

IEC定时器的好处在于,如果同一段程序用的是同样的语言,比如SCL, 那么在不同厂家的PLC平台之间是可以无缝移植的。这也是IEC标准设立的出发点。比如我在做西门子之外的其它品牌和平台的标准化,ROCKWELL, CODESYS , MITSUBISH, OMRON, SCHNEIDER, B+R等等时,程序都是直接从PORTAL中移植到对方的平台的。移植过程中对原有程序做了些语法适应处理,但问题主要出在西门子这一侧功能太多,可以纵容不严谨的语法导致的。而那些程序如果倒过来要移植到PORTAL平台,则会轻松许多。大部分程序块都是直接复制过来就可以使用。

而有网友就抱怨,原本在其他某平台中可以正常运行的逻辑,移植(复制)到PORTAL中就不灵了,功能不能运行了。

这个SCL程序脚本大致是:

#TON1(IN:=NOT #TON1.Q,PT:=T#1s);

IF #TON1.Q THEN

#AAAA:= #AAAA + 1;

END_IF;

或者:

#TON2.TON(IN := #TON2.Q,

PT:= T#1S);

IF #TON2.Q THEN

#BBBB:= #BBBB + 1;

END_IF;

其中TON1定义为TON_TIME类型, 而TON2定义为IEC_TIMER类型,只不过是定义方法不同,然而运行结果是相同的。

dfc18358-80ea-11ed-8abf-dac502259ad0.png

程序的初衷是,设定1S的周期,每到1S时间到,产生一个输出,使用这个输出进行计数加1,然而当定时器被再次调用时,又再次触发定时器计时。

这个逻辑本身是正确没有问题的。在大部分的PLC平台如CODESYS中执行也可以得到正确的结果。

然而偏偏在TIA PORTAL中是不能正确运行的。

其中的原因便是PORTAL中对这个定时器做了特别的处理。按照对官方资料的个人解读, 程序的所有位置,只要对定时器的Q管脚执行读取, 系统都会在后台默默执行一次定时器逻辑,并刷新计算结果。

所以即便某一次Q为1,但在调用NOT Q的时候执行一次,使得Q值从1刷新变为了0,就导致IN管脚永远为1,没有为0的机会,那么定时器就再也不会被重新触发计时了。那么后面的计数值就不会有变化了。

所以,不可以把PORTAL中的IEC定时器简单当做一个FB/SFB来看待。尽管它们在FB中都是同样的多重背景存在。

上述逻辑,且不说CODSYS中可以正常运行,即便在STEP7 V5中,也是可以正常的。

看我在STEP7中用梯形图搭出来的逻辑以及运行结果:

dfe8d016-80ea-11ed-8abf-dac502259ad0.png

在STEP7中, TON是一个SFB, 编号为SFB4,把其当做一个普通的多重背景的FB来调用,即可实现定时器功能。这里用梯形图演示了同样的逻辑。对于看不懂前面的SCL语言的读者,可以通过这里的LAD理解。

注意到,在定时器的前面的IN管脚我连续使用了2次Q输出,效果是相同的。原因是如果只用一次,会报红色错误。说明STEP7中很警惕这样的用法。

由此,我们可以想到,如果在博图中我们自定义一个自己的定时器TON FB,应该就可以避免上述的错误。

即:

e017c2ea-80ea-11ed-8abf-dac502259ad0.png

建立FB:TON_W, 管脚如TON完全一致,程序中也只是简单调用一次TON

然后正式的程序中,参数定义部分原本TON1的类型为TON_TIME,全部更改为TON_W,即可。

然后上述的从CODESYS移植过来的程序就都可以正常运行了。

技能很简单,原理也很简单。

然而却是一项基础的工作,补上了从CODESYS等其它平台向PORTAL平台程序移植的坑。

所以,总的来说,我是在积累记录平台之间程序移植的各种坑,并提前找到填坑的解决方案。那么,在做正式的项目的时候,因为有这些积累的提前量,就会顺利得多。短时间内实现程序的跨平台移植,才成为可能。

不知道有多少同行认同这样的做法。

审核编辑 :李倩


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 算法
    +关注

    关注

    23

    文章

    4760

    浏览量

    97136
  • 定时器
    +关注

    关注

    23

    文章

    3360

    浏览量

    121728
  • IEC
    IEC
    +关注

    关注

    2

    文章

    228

    浏览量

    30231

原文标题:1220 【万泉河】博图中的IEC定时器

文章出处:【微信号:PLC标准化编程,微信公众号:PLC标准化编程】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    CW32定时器及中断介绍

    以CW32L083为例,其定时器分为6种: 基本定时器:CW32L083 内部集成 3 个基本定时器 (BTIM),每个 BTIM 完全独立且功能完全相同,各包含一个 16bit 自动重装
    发表于 12-01 07:08

    单片机定时器中断

    51单片机内部共有两个16位可编程的定时器/计数,即定时器T0和定时器T1。它们既有定时功能又有计数功能。
    发表于 11-24 06:22

    PWM、定时器、SysTick 区别及应用场景

    在单片机和嵌入式开发中,经常会遇到PWM(脉宽调制)、定时器、SysTick(系统滴答定时器)这几个词。很多初学者容易把它们混为一谈,以为都是“定时相关的东西”。其实,它们在本质和应用上有明显差别
    的头像 发表于 11-17 10:53 219次阅读
    PWM、<b class='flag-5'>定时器</b>、SysTick 区别及应用场景

    看门狗定时器、复位源、异常处理机制科普

    的作用、原理与应用。一、看门狗定时器(WatchdogTimer)1.原理看门狗定时器本质上是一个独立定时器,持续倒计时:软件在规定时间内“喂狗”(重置看门狗计数
    的头像 发表于 11-17 10:53 703次阅读
    看门狗<b class='flag-5'>定时器</b>、复位源、异常处理机制科普

    ‌TLC551 LinCMOS™ 定时器芯片技术文档总结

    TLC551 是使用 TI LinCMOS 制造的单片定时电路^TM的^过程。这定时器与 CMOS、TTL 和 MOS 逻辑完全兼容,工作频率高达 2 MHz。与 NE555 定时器相比,该器件由于输入阻抗高,因此使用更小的
    的头像 发表于 09-24 09:16 636次阅读
    ‌TLC551 LinCMOS™ <b class='flag-5'>定时器</b>芯片技术文档总结

    SysTick系统滴答定时器简介

    SysTick—系统定时器是属于CM33内核中的一个外设,内嵌在NVIC中。系统定时器是一个24bit的向下递减的计数,计数每计数一次的时间为 1/SYSCLK,一般我们设置系统时
    的头像 发表于 09-23 09:50 1327次阅读
    SysTick系统滴答<b class='flag-5'>定时器</b>简介

    ‌TPL5010-Q1 纳米功耗系统定时器(带看门狗功能)技术文档摘要

    TPL5010-Q1 Nano 定时器是一款低功耗、符合 AEC-Q100 标准的定时器,带有看门狗 该功能非常适合占空比或电池供电应用中的系统唤醒。在这样的系统中 微控制定时器可用
    的头像 发表于 09-13 10:01 1255次阅读
    ‌TPL5010-Q1 纳米功耗系统<b class='flag-5'>定时器</b>(带看门狗功能)技术文档摘要

    大彩讲堂:VisualHMI-LUA教程-定时器的使用指南

    定时器的使用
    的头像 发表于 08-31 16:59 844次阅读
    大彩讲堂:VisualHMI-LUA教程-<b class='flag-5'>定时器</b>的使用指南

    TPS3435 Nano IQ精密超时看门狗定时器技术解析与应用指南

    Texas Instruments TPS3435/TPS3435-Q1 Nano I~Q~ 精确超时看门狗定时器是一款250nA(典型值)超低功耗器件,具有可编程超时看门狗定时器。该看门狗定时器
    的头像 发表于 08-26 16:20 712次阅读
    TPS3435 Nano IQ精密超时看门狗<b class='flag-5'>定时器</b>技术解析与应用指南

    基于 AS32X601 微控制定时器模块(TIM)技术研究与应用实践

    摘要: 本文全面介绍了国科安芯推出的AS32X601系列微控制定时器模块(TIM),包括其系统架构、功能特性、应用场景以及工程实践要点。通过对芯片的详细分析,揭示了其高性能运行的基础。本文详细
    的头像 发表于 08-19 16:44 595次阅读

    高电流、高效率电荷泵,具有自动定时器 skyworksinc

    电子发烧友网为你提供()高电流、高效率电荷泵,具有自动定时器相关产品参数、数据手册,更有高电流、高效率电荷泵,具有自动定时器的引脚图、接线图、封装手册、中文资料、英文资料,高电流、高效率电荷泵,具有自动定时器真值表,高电流、高效
    发表于 07-29 18:32
    高电流、高效率电荷泵,具有自动<b class='flag-5'>定时器</b> skyworksinc

    第二十章 TIM——基本定时器

    本章介绍了W55H32基本定时器TIM6、TIM7,16位向上计数,含时钟源、预分频等,讲解定时计算及初始化结构体。
    的头像 发表于 06-20 13:51 896次阅读
    第二十章 TIM——基本<b class='flag-5'>定时器</b>

    第十二章 SysTick——系统定时器

    本章介绍了W55MH32的SysTick系统定时器,它是24位递减计数,含4个寄存,可配置定时、中断,用于产生时基 等。
    的头像 发表于 05-22 17:16 827次阅读
    第十二章 SysTick——系统<b class='flag-5'>定时器</b>

    MCU定时器/计数

    RISC-V核低功耗MCU通过灵活的定时器架构、低功耗模式适配及硬件级中断优化,在工业控制、智能家居等场景中实现高精度计时与能耗控制的协同设计,满足复杂任务调度与实时响应的双重需求‌。 一、‌硬件
    的头像 发表于 04-27 13:54 588次阅读