故事作者:万泉河

最近创作

看看TA的故事

【万泉河】PORTAL中定时器的使用方法,及封装改造一个浮点数的定时器

已锁定

万泉河

  • 帖子

    10904
  • 精华

    132
  • 被关注

    1012

论坛等级:至圣

注册时间:2003-06-06

钻石 钻石 如何晋级?

【万泉河】PORTAL中定时器的使用方法,及封装改造一个浮点数的定时器

611

0

2020-03-29 11:48:55

【万泉河】PORTAL中定时器的使用方法,及封装改造一个浮点数的定时器

 

来篇基础性的文章,给PLC初学者补充点基本应用知识。

 

在技术论坛上一个帖子的探讨中,有人提出说,虽然学了很久了,一直对多重背景糊里糊涂的,搞不清楚原理和应用。我说,这是个非常好功能,使得PLC才更大程度上接近计算机,可以实现许多计算机中能实现的应用,使得PLC彻底摆脱了继电器逻辑控制的包袱。

 

所以,要想学好PLC编程,并能实现灵活运用,熟悉掌握多重背景的使用方法,就非常重要了。这是一项基本技能。

 

以最常见的定时器为例。

 

到PORTAL时代,过去传统意义上的作为一种特殊的寄存器的定时器TIMER,已经不存在了。即,现在编程已经不能使用T1,T2,T3这样的用法。取而代之的是IEC定时器。即相当于STEP7时代的SFB4。

 

SFB, system FB, 本意上来说, 是一种FB库函数。 如果简单使用, 每一次调用, 需要为这一次调用创建一个单独的DB块,即一个实例。 有许多新人就烦恼,一个定时器就消耗一个DB块资源,那一个项目,动辄几百个定时器,那项目中就要有几百个背景DB块,再加上系统正常使用的数据块,以及其他FB的实例的背景数据块,光管理动辄几百上千个数据块,就让人很烦。

 

所以,其实,正常的使用定时器不是那么用的。你从各种例程上面见到的让你直接建立个数据块的方法,只是权宜之计,只是为了演示功能和使用方法的,并不适合工程应用。真正工程应用中,就需要用多重背景方法来做。

 

定时器的时间格式,在STEP7里面, 西门子定义了一个专用的数据类型,叫做S5TIME, 是从S5系统沿用而来的. 而在IEC定时器里,则是TIME的通用格式。

 

在使用中,我对这两个格式都不满意。前者,S5TIME,是一个长度16位的字,其格式有严格的定义,有精度区,有数据区,精度区分10ms, 100ms, 1s,10s等等。而数据区则只能1-999,所以除了要对精度进行适应以外,可定时的最大长度为9990S,大约2.8小时。即如果需要设定定时时间超过3小时的场合,还不能用。

 

S5TIME的数据通常并不能直接传送到上位机, 所以比如要对延时时间作为一个设备的参数值的时候, 还需要复杂的转换工作,STEP7中提供了双向的转换函数可以直接使用,但仍然比较麻烦。

 

TIME的格式,是32位的DINT, 单位为ms, 所以其最大可定义时间是4,296,802,275ms, 大约为1193小时, 折合49天。 大多数情况下,是够用的。 数据也可以直接传到上位机, 但数据单位是ms,通常还要根据需要折算转换为秒,分,或者小时。Ms的单位实在是太小,所以你每次在上位都需要转换,而且,转换的比例还不一样,因而无法做到标准化。实在是相当讨厌。

 

所以一直以来,我有想法是,定时器的设定时间,何不使用浮点数的秒?往大了说,浮点数可以表达几乎无穷大的时间,往小里说,也可以表达几乎无数小的时间。多几个小数点而已。而且精度足够够用。

 

所以,这次借演示多重背景的机会,一并演示如何通过封装的方法,改造定时器,做一个自己满意的,浮点数计数的定时器。

 

PORTAL V15中, 创建一个FB: TON_REAL


管脚参照原本的TON的管脚,只不过其PT和ET数据类型改为了REAL。

 

程序中很简单,只需要对设定值和定时器的运行值做一个简单的数制转换

 

定时器的封装改造就完成了。

 

然后演示如何使用定时器:

控制逻辑程序,建立FB,而不是FC,这样可以有静态变量, STATIC,在静态变量中建立一个数组TON1[0..100]

 

然后程序逻辑中就可以排着用了:

 

 


 

方法是,调用FB, 弹出的调用选项窗口中:




选择多重实例,即可。

 

 

有更多的控制逻辑,建立更多的FB,同样建立TON数组。

 

上面的数组后面还建立了原始定时器的数组,在不需要更改接口的情况下,可以使用。

 

OB1中调用所编辑的逻辑程序FB, 按系统提示创建其背景数据块,即可。

 

打开背景数据块,可以看到定时器需要的DB数据,都在那一个DB里面了。这就是多重数据的意义。

 

总结:

本文其实同时演示实现了好几件事:

1,  多重背景的使用。

2,  改造封装FB的方法。

3,  IEC定时器的正确使用方法。 

希望对大家有所收获。

 

本文演示的例子程序,使用V15版本做的,如有需要,可以先关注公众号:万泉河知识共享,然后在后台中回复0328得到。


程序没有经过调试, 如有bug, 请自行修复后方可用于实际项目.


本文原发于公众号,附图复制不便, 也请在公众号中看到原图。 

https://mp.weixin.qq.com/s/e9nBYhGfodP0P3bs5z-cLg




 



【万泉河】PORTAL中定时器的使用方法,及封装改造一个浮点数的定时器 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

网友专栏

共有3367条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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