[西门子] 西门子PLC 博图(TIA Portal) 变长数组你会吗?

[复制链接]
查看5673 | 回复0 | 前天 08:36 | 显示全部楼层 |阅读模式
前序

你是否也遇到遇到以下问题,例如创建不同长度数组运算FB/FC功能块,就需要建立不同长度引脚变量的FB/FC功能块,保证输入的数组与功能块引脚参数一致。
通过变长数组 Array of 数据类型,使用它可以让程序更加灵活,极大的可以缩减一些不必要的工作,下面让我们一起学习下。

一、可变数组与不可变数组对比

1.传统数组_功能块变量
功能块输入/输出变量必须与DB数据块变量保持一致。功能块1变量:


功能块2变量:

DB数据块变量:


传统的不可变数组运算,不同长度数组,必须新建独立FB/FC功能块,例如两个不同长度的数组运算就必须创建两个不同长度的功能块。

2.变长数组_功能块变量
功能块输入/输出变量无需与DB数据块变量一致,DB数据块指定长度即可
功能块1/2变量,因此两个长度运算的功能块不需要传统方式创建两个功能块,通过可变数组方式一个功能块即可实现以上功能。


DB数据块变量:


可变数组运算,不同长度数组,无需新建独立FB/FC功能块。
二、可变数组讲解

1.新建FC功能块

2.FC功能块插入以下变量

3.FC功能块插入以下程序


//获取数组下限#数组下限 := LOWER_BOUND(ARR := #输入数组, DIM := 1);//获取数组上限#数组上限 := UPPER_BOUND(ARR := #输入数组, DIM := 1);//赋值前清零#输出和_Temp := 0;//数组求和FOR #Temp_1 := #数组下限 TO #数组上限 BY 1 DO// Statement section FOR    #输出和_Temp += #输入数组[#Temp_1];END_FOR;//数组求和值中转#输出和 := #输出和_Temp;4.新建DB数据块


5.DB数据块插入以下变量


6.OB1功能块中插入两次可变数组FC功能块

三、程序演示






延伸小知识:PLC-Recorder专业数据采集与分析软件可以高速采集西门子PLC里的数据,速度也有20ms、8ms、2ms不同周期。




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则