实训25 共享数据块和系统功能的调用
Posted bailongwei654321
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实训25 共享数据块和系统功能的调用相关的知识,希望对你有一定的参考价值。
实训25 共享数据块与系统功能的调用
关键字:共享数据块和符号表中的变量 为全局变量。可供所有逻辑块使用
注意符号表中的变量 描述 。 功能块中的变量 成为变量声明表,与符号表区别开来。
变量声明表里面的额变量是局部变量,符号表里的是全局变量。
关键字: 实际参数 "P#DB1.DBX0.0 INT 4"表示的是 共享数据表里面 的4个 数组元素的地址 。
在声明视图里查看 共享数据表的声明表 地址 0.0 对应数组的第一个地址。
数据块(DB)用来分类存储设备或者生产线中变量的值。
数据块分为 共享数据块 (DB) 和 背景数据块 (DI)
共享数据块 和符号表中的变量为全局变量,可供所有逻辑块使用。
CPU使用OPN指令分别打开一个共享数据块和一个背景数据块 。
打开新的数据块时,原来被打开的数据块将会自动关闭。
快递定义数据块的大小
然后单击 数据块 DB2 打开 只有一个 临时占位符变量 DB_VAR
将DB_VAR 变量名称改为 press 然后类型 选择 数组 ARRAY
下表中 建立了一个数组 ,array (数据类型是 int )
一个int 变量 voltage
一个int 变量 current
这个数据块 放在 C语言中 一个类似于结构体 的数据块
+0.0 表示 数组的起始地址为0 ,
*2 表示数元素的大小是2B
+8.0 表示改行上面的四个元素是8B
最左边地址列 的内容是自动添加的。
注意第一行 最左边的 0.0 类型 struct
最后一行 =12.0 类型 END_STRUCT
这个像C语言中的结构体
DB1.BUFFER[2] 是该数组中下标为2 的元素 。
部分2 调用系统功能。
调用的功能显示 如下 :
实现的功能 是把 MW2 的内容 通过 系统功能SFC21
SF21 用源存储区 BVAL的数值 初始化 目标存储区 BLK
假设在PLCSIM中 令MW2 的值 等于 520 十进制 dec
然后 付给DB1 里面的 数组的 4个元素。 注意 DB1 是共享数据块 存放的是全局变量。如果是功能块FB1 的背景数据块 名称应该是 DI1
在PLCSIM中设置 MW2 的步骤
直接打开 共享数据块 DB1 用 数据视图 模式 进行监控
说明 SFC21 FILL功能块 已经 将 MW2
分别写进了 数组prsee 的 元素1 元素2 元素3 元素 4
调用了系统功能块 SFC20 "blockMOV" 指令。将源存储区数据SRSBLK的内容复制到 目标存储区 DSTBLK
在sumatic 管理器下 选中"块",然后新建 变量表。 生成变量表 VAT_1
在变量表 VAT_1 中查看 "P#M10.0 INT 4" 即
MW10 MW12 MW14 MW16 MW18 的值的变化 。
将共享数据块 和 系统功能的调用 重头到位录制成 视频 。
注意视频中的数据共享块DB1 是全局变量 。
另外 系统功能 SFC21 和系统功能 SFC20 的形式参数都是什么类型的变量?
答:上述的两个SFC的参数 BVAL BLK SRCBLK 和DSTBLK 的数据类型 均为 参数类型 。
参数类型 用 ANY 表示 。
ANY主要用来表示一连串的数据区
例如 P#M10.0 INT 4 表示的是MW10 MW12 MW14 MW16
此外 ANY 的实参也可以是一个任意的数据类型的地址。 例如下图中的MW2
以上是关于实训25 共享数据块和系统功能的调用的主要内容,如果未能解决你的问题,请参考以下文章
实训24 功能块的生成与调用 注意功能块的背景数据块 变量表最左侧的地址是系统自动生成的。前面讲 功能块与功能的区别是 功能块不能一个扫描周期完成,本功能块例子 确实不是一个扫描周期能完成,例如判