西门子PLC编程的数据类型、FB快、FC块、DB块如何使用?
背景数据块
背景DB块与FB块相关联。在创建背景DB块时,必须指定它所属的FB块,而且该FB块必须已经存在,如图1所示。
在调用一个FB块时,既可以为之分配一个已经创建的背景DB块(比如数据块_1),也可以直接定义一个新的DB块(比如平均值_DB),该DB将自动生成并作为背景数据块,如图2所示。背景DB块与全局DB块相比,只存储与FB块接口数据区(临时变量除外)相关的数据。数据块格式随接口数据区的变化而变化。数据块中不能插人用户自定义的变量,其访问方式(优化或非优化)、保持性、默认值均由函数块中的设置决定。
背景DB块与全局DB块都是全局变量,所以访问方式相同。
全局DB。又称共享DB,是一种在某一个PLC站点下任何程序块都可以对其进行读写操作的数据块。
函数块FB的背景数据块。背景数据块是FB的专用数据块,即仅允许调用该背景数据块的FB程序对其进行读写操作,其他程序对该背景数据块仅能进行读操作。

图1 创建背景数据块

图2 主程序调用FB
系统数据类型作为全局数据块的模板
对于有些固定格式的数据块,有可能包含很多的数据,不便于用户自己创建,如用于开放式用户通信的参数DB。TIA博途软件提供了一个含有固定数据格式的模板,用户使用这个模板可创建具有该格式的数据块,比如可以使用“TCON_Param”系统数据类型创建与之对应的DB。
创建基于数据类型的数据块时,必须指定它所属的数据类型,如图3所示,定义定时器类型数据。尤其是采用线圈类型的定时器时,需要我们定义定时器数据类型的数据块。

图3 利用系统数据类型定义数据块
与背景DB块相同,基于系统数据类型的DB块只存储与系统数据类型相关的数据,不能插入用户自定义的变量。可以使用相同的系统数据类型生成多个数据块。以IEC定时器为例,可以首先创建“IEC_TIMER”系统数据类型的数据块。当在程序中使用IEC定时器时,可以使用预先创建的“IEC_TIMER”数据类型的数据块作为其背景数据块(如图中的-数据块2_定时器类型),也可以在生成定时器时自动生成数据块(如图中的-IEC_Timer_0_DB类型),如图4,5所示。

图4 定时器类型数据块

图5 背景数据块的生成或者选用
通过PLC数据类型创建DB
PLC数据类型是一个用户自定义数据类型模板,可以由不同的数据类型组成,提供一个固定格式的数据结构,便于用户使用。PLC数据类型的变量在程序中作为一个整体变量使用。
(1).创建PLC数据类型
在“PLC数据类型”文件夹中,单击“添加新数据类型”后,会创建和打开一个PLC数据类型的声明表。选择该PLC数据类型,并在快捷菜单中选择“重命名”命令,就可以给这个PLC数据类型重新命名。然后在声明表中声明变量及数据类型,完成PLC数据类型的创建。比如创建一个名称为“PLC_DT_1”的PLC数据类型,在这个数据类型中包含3个变量,如图6 所示。

图6 创建PLC数据类型
(2)创建固定数据结构的DB块
单击“添加新块”命令,选择数据块,并在类型的下拉列表中选择所创建的PLC数据类型“PLC_DT_1”,如图7所示。然后单击“确定”,生成与“PLC_DT_1”相同数据结构的DB块。类似于用定时器类型的数据生成定时器背景数据块。

图7 创建固定格式的数据块
(3)作为一种数据结构使用,类似bool,int变量来使用
也可以将PLC数据类型作为一个整体的变量在数据块中多次使用。该使用方法类似复杂数据类型-UDT,(参考一网打尽PLC中常用的数据类型)。
首先创建一个全局DB块,然后在这个DB中输入变量名,并在数据类型中的下拉列表中选择已创建好的PLC数据类型,例如“PLC_DT_1”。根据需要可以多次生成同一数据结构的变量,如图8所示。
对PLC数据类型的任何更改都会造成使用这个数据类型的数据块不一致。出现不一致的变量被标记为红色,如图9所示。要解决不一致的问题,必须更新数据块。

图8 以PLC数据类型多次定义不同变量

图9 不一致的数据块
更新数据块有三种方式:
1)出现不一致变量时,鼠标右键单击该变量,在弹出的菜单中选择“更新界面”即可;
2)可以单击数据块工具栏中的“更新接口”

按钮进行更新;
3)对整个程序块文件夹进行编译,数据块自动更新;也可以右键,对单个块进行编译。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
