实训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

视频存放在百度网盘的地址 。

原文地址:https://www.cnblogs.com/bailongwei654321/p/12268939.html

时间: 2024-08-01 08:02:43

实训25 共享数据块和系统功能的调用的相关文章

实训24 功能块的生成与调用 注意功能块的背景数据块 变量表最左侧的地址是系统自动生成的。前面讲 功能块与功能的区别是 功能块不能一个扫描周期完成,本功能块例子 确实不是一个扫描周期能完成,例如判断转速超速 可能过了好多扫描周期

实训24 功能块的生成与调用 一定要注意 功能块的背景数据块中 最左侧的地址 是自动生成的. 我只需要在功能块的程序中输入 符号 名称 例如 start stop tof …….等等. 如下图 功能块 是用户编写的有自己存储区(背景数据块)的逻辑块. 功能块主要用于执行在一个扫描周期内不能结束的操作. TOF是timer 数据类型 属于输入局部变量. 本例程的输入参数TOF的数据类型为Timer(定时器),TOF的实参应该为定时器的编号 例如T1 PRESPEED 是静止变量 STAT 初始值是

西门子PLC学习笔记二十-(多重背景数据块的使用)

设某发动机组由1台汽油发动机和1台柴油机发动机组成,现要求用PLC控制发动机组,使各台发动机的转速稳定在设定的速度上,并控制散热风扇的起动和延时关闭.每台发动机均设置一个起动按钮和一个停止按钮. 程序设计如下: 1.程序模块 2.符号表 3.风扇控制程序 4.启动机控制 5.启动机组 注:1)在变量声明表内完成FB1类型的局部实例,"gasline_engine"."diesel_engine"的声明. 2)调用FB1局部实例时,不需要设置背景数据块,FB1的实例数

西门子PLC学习笔记十五-(数据块及数据访问方式)

一.数据块 数据块是在S7 CPU的存储器中定义的,用户可以定义多了数据块,但是CPU对数据块数量及数据总量是有限制的. 数据块与临时数据不同,当逻辑块执行结束或数据块关闭,数据块中的数据是会保留住的. 数据块分共享数据块.背景数据块.用户自定义数据块,下面分别介绍. 1.共享数据块(全局数据块) 其用于存储全局数据,所有逻辑块(OB.FC.FB)都可以访问共享数据块中的数据. 2.背景数据块(私有存储区) 其用做功能块(FB)的"存储器".FB的参数和静态变量安排在它的背景数据块中.

安卓实训第十四天---使用ContentProvider共享数据,并且利用ContentResolver监听共享数据

ContentProvider: 一.当应用继承ContentProvider类,并重写该类用于提供数据和存储数据的方法,就可以向其他应用共享其数据.虽然使用其他方法也可以对外共享数据,但数据访问方式会因数据存储的方式而不同,如:采用文件方式对外共享数据,需要进行文件操作读写数据:采用sharedpreferences共享数据,需要使用sharedpreferences API读写数据.而使用ContentProvider共享数据的好处是统一了数据访问方式. 第二步需要在AndroidManif

实训26 多重背景的应用 (假设功能块1与功能块2 的背景专用存储区变量类型一样,不需要两个背景专用数据块,节省空间)

实训26 多重背景的应用 应用场景 新建 功能块 FB10 激活 多重背景功能 功能块1 FB1 也应该激活 多重背景功能 实现多重背景的关键 在功能块FB10 的变量声明表中.声明了名为"Motor1"和"Motor2"的两个静态变量 (STAT), 两个静态变量的数据类型为 FB1, 功能块FB1也可以做为数据类型? 多重背景实际训练 建立 工程的步骤 试验目的: 假设需要控制两台电机 程序在 OB1 中. OB1中两个控制功能块. 电机控制功能块1 FB1 电

安卓实训第四天--基于HttpClient来完成数据在服务器和设备间的交互。

上午:老师首先回顾了昨天作业. 首先在安卓工程中的TOOLS文件中,解析字节流那里,不用改变,而是把服务器端的编码方式变为UTF-8,然后将在安卓工程的LoginActivity类中的USERNAME给他强制转换下. 总结一句话:如果一个字符通过某个编码转换成字节码之后,那你在转换的时候必须拿到转换之前的字节码 补充:如何改变mysql连接工具的编码方式: jdbc:mysql://localhost:3306/databasename?useUnicode=true&characterEnco

安卓实训第十天:利用SharedPreferences来实现数据的保存和读取,以及实现手机电话备份,XMLserializer

一.利用SharedPreferences来实现数据的保存和读取: 1.Mainactivity: package com.example.sharedpreferencesdemo; import com.example.sharedpreferencesdemo.util.SharedPreferencesUtil; import android.app.Activity; import android.app.AlertDialog; import android.content.Cont

实训28 时间中断组织块的仿真试验

实训28 时间中断组织块的仿真试验 ? 问题1:"D_TOD_TD"是什么东西? 见书本107 答:D_TOD_TD 是IEC功能 FC IN1定义开始产生中断的日期和时间, TOD#8:0:0.000 分别表示 时 分钟 秒 毫秒 ? ? 问题2 "QRY_TINT"里面的状态字是怎样定义的 ? 因为后面我我要用MB9 的第 4位 和 第2位 来在PLCSIM里面监控 在帮助里查看 ? ? 问题 3 已经生成的组织块 OB1 的20个字节 的局部变量怎么样查看?

Android应用程序组件Content Provider在应用程序之间共享数据的原理分析

文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6967204 在Android系统中,不同的应用程序是不能直接读写对方的数据文件的,如果它们想共享数据的话,只能通过 Content Provider组件来实现.那么,Content Provider组件又是如何突破应用程序边界权限控制来实现在不同的应用程序之间共享数据的呢?在前面的文章中,我们已经简要介绍过它是通过 Binder进程间通信机制以