技术论坛

 [博途]+实用功能块推荐

返回主题列表
作者 主题
刚刚入门
至圣

经验值: 12687
发帖数: 2083
精华帖: 23
楼主    2018-11-08 11:22:35
主题:[博途]+实用功能块推荐 精华帖 

  博途工程组态平台推出已经超过10年,10年也让大家都熟悉并喜欢上了它的软件风格,同时也累积了大量的标准功能块,既有官方提供下载的,也有大家自己写的。下面以自己工作中常使用的几个功能块为例,从出处和使用心得角度与大家一起分享互勉,不对之处请大家指点下正好改正。

1.时间定时器功能块

 时间和定时功能是编写应用程序中经常使用到的,比如计算设备运行时间,时间以日时分秒形式显示等。官网也提供的相关时间定时器使用功能块,常用下面几个:

(1)计算设备运行时间

  如果需要精确计算设备的运行时间,官网提供了"Timedifferent"功能块,用SCL语言编辑,原理其实就是利用两个扩展指令"RD_SYS_T" (读取时间) 和 "T_DIFF" (时间差),计算设备启动前后所读取的系统时间数据之间的差值,也就是设备的运行时间。这个方法计算的时间还是比较精确的,具体说明和下载可到全球技术资源搜索条目号52258130的文档。

                图1:计算设备运行时间功能块

(2)将毫秒转为需要的日、小时、分钟、秒

 定时器时基无论预设还是实时都是毫秒,有时需要将实时毫秒转化为日、小时、分钟、秒到HMI上显示,这样更直观。官网提供了三个功能块:分别是用于S7-1200的“ChangeMilliSec_S7-1200”(FB65)、用于S7-1500的“ChangeMilliSec_S7-1500”(FB60)、用于S7-300的“ChangeMilliSec_S7-300”(FB61)。功能块是用FBD编辑的,原理其实就是将当前毫秒值与86400000(天)、3600000(小时)、60000(分钟)逐一相减,相减值超过各时基标准值该时基值自加一,否则转下一时基判断。该资源条目号:42637538。

              图2:毫秒转为日小时分钟秒

(3)日、小时、分钟、秒转为毫秒

有了上面的转换,反过来我们需要在HMI上以日、小时、分钟、秒的形式进行时间设定。跟上面一样,官网提供了三个FC (S7-1200/1500/300)比如"Time-in-MS_S7-1200"供大家使用。也是用FBD编辑的,资源条目号:43184859

              图3:日小时分钟秒转毫秒

(4)定时器循环执行

  利用定时器循环执行可以很方便的扩展定时器的计时范围,因为单个定时器的计时时间是有限的(DINT数据类型的范围限制)。官网也提供了一个基于S5定时器的实例,用SCL编辑的,有STEP7V5.5和博途两个版本,大家可以自行修改基于IEC定时器来使用,该资源条目号:77870587

 

       图4:定时器循环执行

2.模拟量输入输出及滤波

  博途提供的标准化(NORM_X)和缩放(SCALE_X)指令让模拟量输出的处理变得更简单方便,但我们也可以自己用SCL写模拟量输入输出以及滤波功能(就不上图了)。

(1)模拟量输入FC

CASE #index OF

    1:

        #K1 := 0;

        #K2 := 27648;

    2:

        #K1 := -27648;

        #K2 := 27648;

    3:

        #K1 := 5530;

        #K2 := 27648;

    ELSE;

 END_CASE;

IF #IN < #K1

THEN

    #Temp1 := #K1;

    #overflow := 1;

ELSIF #IN > #K2

THEN

    #Temp1 := #K2;

    #overflow := 1;

ELSE

    #Temp1 := #IN;

    #overflow := 0;

END_IF;

#Value := (#HI_LIM - #LO_LIM) * ((#Temp1 - #K1) / (#K2 - #K1)) + #LO_LIM;

(2)模拟量输出FC

CASE #index OF

    1:

        #K1 := 0;

        #K2 := 27648;

    2:

        #K1 := -27648;

        #K2 := 27648;

    3:

        #K1 := 5530;

        #K2 := 27648;

    ELSE;

END_CASE;

IF #IN < #LO_LIM

THEN

    #Temp1 := #LO_LIM;

    #overflow := 1;

ELSIF #IN > #HI_LIM

THEN

    #Temp1 := #HI_LIM;

    #overflow := 1;

ELSE

    #Temp1 := #IN;

    #overflow := 0;

END_IF;

#Temp2 := ((#Temp1 - #LO_LIM) * (#K2 - #K1)) / (#HI_LIM - #LO_LIM) + #K1;

#Value := REAL_TO_INT(#Temp2);

(3)模拟量滤波

采集10个值数据,去掉最大最小值求平均值,可以放到循环中断OB里执行。

#MAX := #AR[0];//初始化

    #MIN := #AR[0];

    #TOTAL := 0.0;

    #TOTAL_FILTERD := 0.0;

    FOR #INDEX := 0 TO 8 BY 1 DO//FIFO堆栈

        #AR[#INDEX] := #AR[#INDEX + 1];

    END_FOR;

    #AR[9] := #IND;//加入新检测值

    FOR #INDEX := 0 TO 9 BY 1 DO

        //查找最大值

        IF #MAX < #AR[#INDEX] THEN

            #MAX := #AR[#INDEX] ;

        END_IF;

        //查找最小值

        IF #MIN > #AR[#INDEX] THEN

            #MIN := #AR[#INDEX];

        END_IF;

        //计算累加和

        #TOTAL := #TOTAL + #AR[#INDEX];

    END_FOR;

    //计算滤波后累加和

    #TOTAL_FILTERD := #TOTAL - #MIN - #MAX;

    #D_FILTERD := #TOTAL_FILTERD / 8.0;

3.流量累积/定积分/微分

(1)在测量流量和线速度时有时需要对瞬时流量和速度进行累积,推荐官方例程“Totalizer”,资源条目号:48799854,其实就是循环时间内的数值累加。

 图8:流量累积

(2)定积分和微分

 积分是对给定函数曲线的面积进行数学计算。但是实际曲线往往没有明确的数学关系,而是随时间变化的模拟量。积分计算就是把所有由两个过程值与时间所围成的梯形区域面积相加,梯形面积等于两个过程值的平均值乘以时间间隔,像用编码器测量旋转角度可以使用到,资源条目号:42469594。

          图9:定积分

微分与之相反,原理就不多说了,可用于计算速度和加速度之类。直接上链接资源条目号:48816209

                 图10:微分

 写在最后:西门子提供了大量的基本功能块给大家,最终博途应用编程向“傻瓜”式编程进阶,也许再过几年行业标准库都给大家提供了,所谓编程变成熟悉工艺+调用功能块这个套路了。


黑猫警长W
至圣

经验值: 18377
发帖数: 2409
精华帖: 1
1楼    2018-11-08 12:56:18
主题:回复:[博途]+实用功能块推荐

速度挺快的

愁容骑士
侠圣

经验值: 2484
发帖数: 368
精华帖: 1
2楼    2018-11-08 13:10:06
主题:回复:[博途]+实用功能块推荐

设备运行时间

刚刚入门
至圣

经验值: 12687
发帖数: 2083
精华帖: 23
3楼    2018-11-08 19:44:47
主题:回复:[博途]+实用功能块推荐

应用示例这块西家这点做得很好,大家多上全球技术资源看看,应有尽有。

CoolCool的猪
至圣

经验值: 16713
发帖数: 1307
精华帖: 2
4楼    2018-11-08 20:16:20
主题:回复:[博途]+实用功能块推荐

厉害了我的神啊 阿门

同一个问题ID下,已经先回答此问题的人,如再参考我答案而修改自己答案的,就是王八蛋!
CoolCool的猪
至圣

经验值: 16713
发帖数: 1307
精华帖: 2
5楼    2018-11-08 20:55:44
主题:回复:[博途]+实用功能块推荐


多多益善 大神

同一个问题ID下,已经先回答此问题的人,如再参考我答案而修改自己答案的,就是王八蛋!
西103班
侠圣

经验值: 3244
发帖数: 239
精华帖: 2
6楼    2018-11-08 21:07:07
主题:回复:[博途]+实用功能块推荐
收藏了,有最近也用了这个功能块,太方便了
诚心想各位学习,先谢谢各位高手,大神的指导。
CoolCool的猪
至圣

经验值: 16713
发帖数: 1307
精华帖: 2
7楼    2018-11-08 21:30:15
主题:回复:[博途]+实用功能块推荐

在 STEP 7 (TIA 博途) 中,如何将一组单位是日,小时,分钟和秒的数据转换成毫秒

库文件下载不了啊 

同一个问题ID下,已经先回答此问题的人,如再参考我答案而修改自己答案的,就是王八蛋!
AISHUISHUI
奇侠

经验值: 8998
发帖数: 375
精华帖: 0
8楼    2018-11-09 10:28:33
主题:回复:[博途]+实用功能块推荐


谢谢分享!

随心所欲
holdkcsxyz
至圣

经验值: 13010
发帖数: 1814
精华帖: 22
9楼    2018-11-09 11:40:32
主题:回复:[博途]+实用功能块推荐


谢谢分享!

yacado
侠圣

经验值: 3804
发帖数: 500
精华帖: 3
10楼    2018-11-09 15:45:34
主题:回复:[博途]+实用功能块推荐


谢谢分享。

Haohaobb
至圣

经验值: 15845
发帖数: 1645
精华帖: 39
11楼    2018-11-09 15:57:16
主题:回复:[博途]+实用功能块推荐


,之前都是自己写程序了,做个标记,备用后需。

天道酬勤
电动机保护器
侠圣

经验值: 4484
发帖数: 186
精华帖: 0
12楼    2018-11-10 09:49:10
主题:回复:[博途]+实用功能块推荐


谢谢分享,学习

涛声依旧2024
侠圣

经验值: 2910
发帖数: 275
精华帖: 0
13楼    2018-11-10 14:18:19
主题:回复:[博途]+实用功能块推荐

基本功能做的比较多,大家可以上全球资源网看看。

没有不可能!
华山松柏
奇侠

经验值: 5622
发帖数: 541
精华帖: 3
14楼    2018-11-12 09:24:32
主题:回复:[博途]+实用功能块推荐


谢谢楼主分享。

学无止境
阿祥技术
侠士

经验值: 1263
发帖数: 44
精华帖: 0
15楼    2018-11-12 16:00:14
主题:回复:[博途]+实用功能块推荐


谢谢分享!

不明白啊
侠士

经验值: 1156
发帖数: 30
精华帖: 0
16楼    2018-11-12 16:15:24
主题:回复:[博途]+实用功能块推荐


学习了,谢谢分享

手机用户20181103567678
新手

经验值: 25
发帖数: 1
精华帖: 0
17楼    2018-11-12 16:32:00
主题:回复:[博途]+实用功能块推荐
大神??????
v_wind
侠圣

经验值: 2551
发帖数: 299
精华帖: 3
18楼    2018-11-13 09:38:08
主题:回复:[博途]+实用功能块推荐

去英文版下载吧,我不是崇洋媚外,汉版的照着抄都能给弄错了,而且英版的都升级到V15了,汉版的更新都懒得更新!

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