承德西门子1200代理商
欢迎来电质询高品质西门子自动化产品;
联系人 : 瞿章明(销售工程师)
联系电话: :132 1743 0013 (24小时服务)
商务QQ :275 0130 146
微信 :132 1743 0013
地址( Add ) :上海市松江区海立华亭5幢

功能 (FC) 是通常用于对一组输入值执行特定运算的代码块。 FC 将此运算结果存储在存储器位置。 例如,可使用 FC 执行运算和可重复使用的运算(例如数学计算)或者执行工艺功能(如使用位逻辑运算执行的控制)。 FC 也可以在程序中的不同位置多次调用。 此重复使用简化了对经常重生的任务的编程。
FC 不具有相关的背景数据块 (DB)。 对于用于计算该运算的临时数据,FC 采用了局部数据堆栈。 不保存临时数据。 要长期存储数据,可将输出值赋给全局存储器位置,如 M 存储器或全局 DB。
功能块 (FB)
功能块 (FB) 是使用背景数据块保存其参数和静态数据的代码块。 FB 具有位于数据块
(DB) 或“背景”DB 中的变量存储器。 背景 DB 提供与 FB 的实例(或调用)关联的一块存储区并在 FB 完成后存储数据。 可将不同的背景 DB 与 FB 的不同调用进行关联。 通过背景 DB 可使用一个通用 FB 控制多个设备。 通过使一个代码块对 FB 和背景 DB 进行调用,来构建程序。 然后,CPU 执行该 FB 中的程序代码,并将块参数和静态局部数据存储在背景 DB 中。 FB 执行完成后,CPU 会返回到调用该 FB 的代码块中。 背景 DB 保留该 FB 实例的值。 随后在同一扫描周期或其它扫描周期中调用该功能块时可使用这些值。
可重复使用的代码块和关联的存储区
用户通常使用 FB 控制在一个扫描周期内未完成其运行的任务或设备的运行。 要存储运行参数以便从一个扫描快速访问到下一个扫描,用户程序中的每一个 FB 都具有一个或多个背景 DB。 调用 FB 时,也需要包含块参数以及用于该调用或 FB “实例”的静态局部数据的背景 DB。 FB 完成执行后,背景 DB 将保留这些值。
通过设计用于通用控制任务的 FB,可对多个设备重复使用 FB,是:为 FB 的不同调用选择不同的背景 DB。
FB 将 Input、Output 和 InOut 以及静态参数存储在背景数据块中。
在背景数据块中分配起始值
背景数据块存储每个参数的默认值和起始值。 起始值提供在执行 FB 时使用的值。 然后可在用户程序执行期间修改起始值。
FB 接口还提供一个“默认值”(Default value) 列,使您能够在编写程序代码时为参数分配新的起始值。 然后将 FB 中的这个默认值传给关联背景数据块中的起始值。 如果不在 FB 接为参数分配新的起始值,则将背景数据块中的默认值到起始值。
使用带多个 DB 的单个 FB
下图显示了三次调用同一个 FB 的 OB,是针对每次调用使用一个不同的数据块。 该结构使一个通用 FB 可以控制多个相似的设备(如电机),是在每次调用时为各设备分配不同的背景数据块。 每个背景 DB 存储单个设备的数据(如速度、加速时间和总运行时间)。
在此实例中,FB 22 控制三个的设备,其中 DB 201 用于存储个设备的运行数
据,DB 202 用于存储第二个设备的运行数据,DB 203 用于存储第三个设备的运行数据。
数据块 (DB)
在用户程序中创建数据块 (DB) 以存储代码块的数据。 用户程序中的所有程序块都可访问全局 DB 中的数据,而背景 DB 仅存储特定功能块 (FB) 的数据。
了解数据一致性
相关代码块执行完成后,DB 中存储的数据不会被。 有两种类型的 DB:
全局 DB 存储程序中代码块的数据。 任何 OB、FB 或 FC 都可访问全局 DB 中的数据。
背景 DB 存储特定 FB 的数据。 背景 DB 中数据的结构反映了 FB 的参数(Input、
Output 和 InOut)和静态数据。 (FB 的临时存储器不存储在背景 DB 中。)
说明
尽管背景 DB 反映特定 FB 的数据,然而任何代码块都可访问背景 DB 中的数据。
可将 DB 组态为只读:
在项目浏览器中右键单击相应 DB,然后在右键快捷菜单中选择“属性”(Properties)。
在“属性”(Properties) 对话框中选择“特性”(Attributes)。
选择“在设备中写保护数据块”(Data block write-protected in the device) 选项并单击“确定”(OK)。
创建可重复使用的代码块

块”(Program blocks) 下的“添加新块”(Add new block) 对话框创建
OB、FB、FC 和全局 DB。
创建代码块时,需要为块选择编程语言。 无需为 DB 选择语言,因为它仅用于存储数据。
了解数据一致性
CPU 为所有基本数据类型(例如 Word 或 DWord)和所有定义的结构(例如IEC_TIMERS 或 DTL)保持数据一致性。 值的读/写操作无法中断。 (例如,在读写四
字节的 DWord 之前,CPU 会防止对该 DWord 值进行访问。) 为确保程序循环 OB 和中断 OB 无法同时写入同一个存储单元,在程序循环 OB 中的读/写操作完成之前,CPU 不会执行中断 OB。
如果用户程序共享存储器中在程序循环 OB 和中断 OB 之间生成的多个值,用户程序还必须确保在修改或读取这些值时保持一致性。 可以在程序循环 OB 中使用 DIS_AIRT(禁用中断)和 EN_AIRT(启用中断)指令,以防止对共享值进行访问。
在代码块中 DIS_AIRT 指令,以确保在读/写操作期间无法执行中断 OB。
读/写能够被中断 OB 更改的值的指令。
在顺序结尾 EN_AIRT 指令,以取消 DIS_AIRT,并允许执行中断 OB。
HMI 设备或另一个 CPU 发出的通信请求也能够中断程序循环 OB 的执行。通信请求也会与数据一致性相关的问题。 CPU 确保基本数据类型始终由用户程序指令执行一致地读取和写入。 由于通信会周期性地中断用户程序,因而不能保证 HMI 能够同时更新 CPU 中的多个值。 例如,给定 HMI 画面上显示的值可能来自 CPU 的不同扫描周期。
PtP(Point-to-Point,点到点)指令、PROF 指令(例如,TSEND_C 和 TRCV_C) 和 PROFS 分布式 I/O 指令和 PROFI 分布式 I/O 指令 (页 290)可用于传送被中断的数据缓冲区。 通过避免对程序循环 OB 和中断 OB 中的缓冲区进行任何读/写操作, 可以确保数据缓冲区的数据一致性。如果需要在中断 OB 中修改这些指令的缓冲区值,请使用 DIS_AIRT 指令所有中断(中断 OB 或源自 HMI 或另一个 CPU 的通信中断), 直到执行了 EN_AIRT 指令。
说明
使用 DIS_AIRT 指令中断 OB 的处理,直到执行了 EN_AIRT 指令,以此影响用户程序的中断等待时间(从事件发生到执行中断 OB 的时间)。
编程语言
STEP 7 为 S7-1200 提供以下编程语言:
LAD(梯形图逻辑)是一种图形编程语言。 它使用基于电路 图 (页 156)的表示法。
FBD(功能块图)是基于布尔 代数 (页 157)中使用的图形逻辑符号的编程语言。
SCL(结构化控制语言)是一种 基于文本的编程语言 (页 157)。创建代码块时,应选择该块要使用的编程语言。
用户程序可以使用由任意或所有编程语言创建的代码块。
梯形图 (LAD)
电路图的元件(如常闭触点、常开触点和线圈)相互连接构成程序段。

要创建复杂运算逻辑,可分支以创建并行电路的逻辑。 并行分支向下打开或直接连接到电源线。 用户可向上终止分支。
LAD 向多种功能(如数学、定时器、计数器和)提供“功能框”指令。
STEP 7 不 LAD 程序段中的指令(行和列)数。
说明
每个 LAD 程序段都必须使用线圈或功能框指令来终止。
创建 LAD 程序段时请注意以下规则:
不能创建可能反向能流的分支。
$ % & ' =
( )
+ *
不能创建可能短路的分支。
$ % & =
功能块图 (FBD)
与 LAD 一样,FBD 也是一种图形编程语言。 逻辑表示法以布尔代数中使用的图形逻辑符号为基础。

算术功能和其它复杂功能可直接结合逻辑框表示。
STEP 7 不 FBD 程序段中的指令(行和列)数。
SCL
结构化控制语言 (SCL, Structured Control Language) 是用于 SIMATIC S7 CPU 的基于PASCAL 的编程语言。 SCL 支持 STEP 7 的块结构 (页 149)。 还可以在用 SCL 编写的程序块中包括用 LAD 和 FBD 编写的程序块。
SCL 指令使用编程运算符,例如,用 (:=) 表示赋值,算术功能(+ 表示相加,- 表示相减,* 表示相乘,/ 表示相除)。 SCL 也使用的 PASCAL 程序控制操作,如 IF- THEN-ELSE、CASE、REPEAT-UNTIL、GOTO 和 RETURN。 SCL 编程语言中的语法
元素还可以使用所有的 PASCAL 参考。 许多 SCL 的其它指令(如定时器和计数器)与
LAD 和 FBD 指令匹配。 有关特定指令的更多信息,请参见 基本指令 (页 177)和 扩展指令 (页 257)章节中的特定指令。
可以在创建该块时任何块类型(OB、FB 或 FC)以便使用 SCL 编程语言。 STEP 7
提供包含以下元素的 SCL 程序编辑器:
用于定义代码块参数的接口部分
用于程序代码的代码部分
包含 CPU 支持的 SCL 指令的指令树
可以直接在代码部分输入指令的 SCL 代码。 要了解更复杂的指令,只需从指令树拖动SCL 指令并将其放入程序中。 也可以使用任意文本编辑器创建 SCL 程序,然后将相应文件导入 STEP 7 中。

在 SCL 代码块部分,可以声明下列类型的参数:
Input、Output、InOut 和 Ret_Val: 这些参数定义代码块的输入变量、输出变量和返回值。 执行代码块期间局部使用此处输入的变量名称。 通常不会使用变量表中的全局变量名称。
静态(仅适用于 FB,上述示例适用于 FC): 静态变量用于在背景数据块中存储静态中间结果。 静态数据会一直保留,直到多个周期后被覆盖。 块的名称(在此代码块中作为多重背景调用)也存储在静态局部数据中。
温度: 这些参数是执行代码块期间使用的临时变量。
如果从其它代码块调用 SCL 代码块,该 SCL 代码块的参数会显示为输入或输出。

本示例中,“Start”和“On”变量(来自项目变量表)相当于 SCL 程序声明表中的
“StartSwitch”和“RunYesNo”。
构造 SCL 表达式
SCL 表达式是用于计算值的公式。 表达式由操作数和运算符(如 *、/、+ 或 -)组成。操作数可以是变量、常量或表达式。
表达式的计算按一定的顺序进行,具体由以下因素决定:
每个运算符均具有预定义的优先级,首先执行优先级高的运算。
按从左至右的顺序处理优先级相同的运算符。
可使用圆括号要一起计算的一系列运算符。
表达式的结果可用于将值分配给程序使用的变量、用作由控制语句使用的条件、用作其它
承德西门子1200代理商截至5月27日,针对第四保护督察组转办我市的907件件(其中来电697件,来信210件),张博告诉《每日经济新闻》记者,去年底以来,市场中的环保PPP项目数量快速,自己基本上都是各地跑,我们认为,由企业利润带来的本轮上涨已经基本见顶,未来对于利润下降的预期将维持大盘的震荡的局面,对未来维持高位震荡的判断,可笑的是,据媒体报道,这通电话出自两个电话整蛊:库兹涅佐夫(Vladimirov)和斯托里亚洛夫(AlexeiStolyarov),为推动倡议变为现实,我国在2016年3月发起成立了全球能源互联网发展合作组织,会员覆盖全球五大洲32个,对于海绵城市,他们也谈了许多自己的感受。对造成生态损害负有责任的干部,不论是否已调离、提拔或者退休,都必须严肃追责。天心区:坡子街5家餐饮店3家已整改根据环保督察组交办的问题,5月2日上午,天心区对坡子街孚嘉巷餐饮门店油烟净化设备情况进行现场检查,互联网时间:2017年7月24日下午15:00-2017年7月25日下午15:00。
承德西门子1200代理商一要坚持依法,的严肃性。预计到2020年,我市新能源汽车及相关产业产值将突破500亿元。同时也指出存在的问题,并给予以下意见建议:一是要继续按照环保督察的要求,进一步细化措施、查漏补缺,更好发挥部门在环保工作中的职能作用;二是要继续按照“管行业必须管、管业务必须管、管生产经营必须管”的要求, 记者张锦辉摄因环保而相聚,为梦想而拼搏。推进跨境电力联网工程建设,积极开展区域电网升级改造合作,探讨建立区域电力市场,不断电力贸易水平。按照环保督察组的要求,件的办理情况在10天内反馈到督察组,整改和处理情况将及时向社会公开。而在2016年上半年,投资规模过亿元的环保PPP项目数量只有20多个,其中,投资规模超过10亿元的项目数量不足9个,市与学者共同为“武汉环保公众测水亭”揭牌。车企预期不一在双积分新政之下,各家上市公司可谓“几家欢喜几家愁”,新能源汽车产业链或将生变。2016年11月,《巴黎协定》正式生效。
下一篇:


