一、FC函数
注意:如果FC函数需要重复调用时就不能直接使用全局DB,M寄存器之类的数据,只能使用外部针脚填入的实参。
创建FC函数,选择使用的语言和名称。
创建调用该函数所需要用到的形参(名称,数据类型,默认值等)和基本起跑停梯形图。
从左侧拖拽出刚创建的FC函数并填入所对应数据类型的实参
开启仿真,接通 启动(M3.0),FC函数快中的梯形图就会进入自锁状态,保持接通 运行(M3.2) 常开触点后接通 M4.0线圈
在接通 M3.1(停止) 后中断自锁电路,运行(M3.2) 断开。
二、FB函数块
创建FB函数块,选择使用的语言和名称。
向刚创建的FB函数块中拖入一个定时器。
不同实例模式之间的区别:
1、单个实例
2、多重实例
3、参数实例
这里使用多重实例演示
创建后,在Static(静态) 一栏下面创建了PT生成脉冲定时器所需要的形参。
编写出简易的梯形图并创建好所对应的形参。
将左侧FB函数块拖入主程序Main中并创建一个数据DB。
创建两个T0_FB函数块定时器并分开启动。
注意:在FB函数块中创建定时器使用单个实例的话,主程序若是重复调用该FB函数块就会导致所有使用单个实例的定时器同时启动。
三、DB数据块
注意:在 “添加新块” 处添加的DB数据块为全局DB数据块,计数器、定时器等创建时关联的是背景DB数据块。
创建起、跑、停所需要的变量,数据类型设置为布尔(Bool),起始值都设为False。
如果不勾选此处“优化的块访问”,那么勾选保持就会所有数据都进行保持,想要单个/某些数据进行保持的话必须勾选该选项。
四、数组的创建、读取、写入
1、数组的创建
在创建好的DB数据块中点击 新增 输入数组名。
数据类型 一栏选择 Array[0…1] of。
选择好数组后,点击下图箭头处选择数组的数据类型。
这里使用 USInt(无符号短整型) 数组举例。
单击下图箭头处可以更改数组的数据类型,长度。
2、数组中单个元素写入
通过MOVE移动指令传递数值
DB数据块中写好的数组
IN处填入需要写入的数值,OUT处填写需要被写入的元素。上图是将常数 99 写入 DB1数据块中的 采集保存数组中的第四位
3、数组中多个元素合并写入
在右侧的 基本指令 -> 移动操作 -> 原有 -> FieldWrite。
MEMBER为读取值的起始位,INDEX为需要读取的位的个数,VALUE为保存读出数据的元素。
注意: MEMBER 和 VALUE 的数据类型要保持一致。
接通后从 采集器[0] 开始的 2 位( 采集器[0],采集器[1] )之和传递给了 采集保存[2] 中。
4、移动块
从 采集器[0] 开始 一共 4 个位,移动到 采集保存[0] 开始往后 4 个位中。
执行后: