使用 PLC 数据类型(UDT) (S7-1200, S7-1500) 使用 PLC 数据类型 PLC 数据类型 (UDT)是可自行定义且在程序中可以多次使用的数据结构。 此结构可包含不同 数据类型的多个元素。 声明 PLC数据类型期间,可以定义各个元素的数据类型。 如果需要各种数据类型的组装数据记录,则会频繁使用 PLC 数据类型,并且将从程序中的不同点处理这些数据。 例如,这些数据可以是: • 用于物料跟踪的数据记录 • 用于电机设置的参数集 • 配方 使用 PLC数据类型有以下优点: • PLC 数据类型元素也可以间接寻址,这意味着地址可变,并且到运行时才会计算。 • 基于 PLC数据类型的变量继承 PLC 数据类型的所有属性。 如果对 PLC 数据类型进行了更 改,所有基于此 PLC数据类型的变量都会自动修改。 • 使用统一的符号表示可以提高程序可读性,这是因为 PLC 数据类型各个元素的名称都显 示在程序中。 •可以对 S7-1500 CPU 高性能进行zuijia利用。 • PLC 数据类型可以作为块调用的完整结构进行传送。 •由于需要提供的参数更少,简化了调用接口。 STEP 7 V5.x 中的操作步骤 STEP 7 V5.x 已经允许用户使用STRUCT 数据类型或 PLC 数据类型(UDT)将数据记录创建为 一个结构化变量。但由于使用了符号寻址,会给性能带来些许影响。 数据块中的声明大多数以匿名结构来实现。 随后块本身经过编程将该结构的值作为实参进行传送,而计算出的值被复制回该结构。 这样就可以传送数据块编号,并在块中使用juedui寻址。需要提供的参数数量通常较大。实际数据存储在数据块中,计算出的值传送到其它块。但在传送数据块变量时,没有可用的符号表示。输入相应的起始值:要制造特定的金属板部件,例如控制柜的侧面板,则将必需的几何形状加载到冲孔机。为此 需要创建另一个包含数据块列表的数据块。创建数据块“DB_OrderList”: 1. 双击“添加新块”(Add new block) 命令。 “添加新块”(Add newblock) 对话框随即打开。 2. 单击“数据块 (DB)”(Data block (DB)) 按钮。 3.指定名称“DB_OrderList”。 4. 选择“全局数据块”(Global DB) 作为该数据块的类型。 5.单击“确定”(OK)。在数据块中创建以下作业列表: 操作步骤 - 创建程序代码为每个作业类型,创建一个单独的函数。在此,将冲孔作业细分为具体的各个冲孔操作,并 包含在 ARRAY 中。 1. 创建 PLC数据类型“UDT_Punch”。 2. 双击“PLC 数据类型”(PLC data types) 下方的命令“添加新数据类型”(Addnew data type)。 将创建一个名为“UserDataType_x”的新 PLC 数据类型。 3. 将 PLC数据类型重命名为“UDT_Punch”。 4. 在 PLC 数据类型中声明以下行: Tool > DINT x >REAL y > REAL w > REAL 5. 创建 ARRAY数据块“DB_PunchList”。要为一个窗口准备冲孔作业,则需通过一个函数将四个冲孔操作序列组合到一个冲孔作业中。 创建一个SCL 函数并命名为“FC_PrepareWindowStatic”。 1. 声明该块接口,如下所示: 2.编写以下程序代码:要为一个可变矩形准备冲孔作业,则需通过一个函数将四个冲孔操作序列组合到一个冲孔作 业中。创建一个 SCL函数并命名为“FC_PrepareWindowFlexible”。 1.声明该块接口,如下所示:冲孔机现在应该会开始处理作业。如果它已经在处理作业,则应从作业列表中获取下一个作 业并进行准备。 1.创建一个 SCL 函数块。 2. 双击“添加新块”(Add new block) 命令。 “添加新块”(Add new block)对话框随即打开。 3. 单击“函数块 (FB)”(Function block (FB)) 按钮。 4.指定名称“FB_PrepareNextOrder”。 5. 声明该块接口,如下所示:6. 声明全局变量“AllOrdersDone”:7. 编写以下程序代码: 通过将当前冲孔作业细分成几个冲孔操作,为列表中的下一个作业做好了准备。冲孔机必须能够识别当前正在处理哪个冲孔作业。 1. 创建一个 SCL 函数。 2. 双击“添加新块”(Add new block) 命令。“添加新块”(Add new block) 对话框随即打开。 3. 单击“函数 (FC)”(Function (FC)) 按钮。 4.指定名称“FC_PrepareOrder”。
除了上述的操作方式之外,还通过在预定义作业中使用数据块“DB_OrderList”将作业加载到冲孔设备中,动态生成作业列表。也可选择不同的作业列表。在执行一个作业列表后,再将新的作业列表加载到冲孔设备中。为此,需额外编写以下代码: 为函数块“FB_PrepareNextOrder”创建一个背景数据块。1. 双击“程序块”(Program blocks) 文件夹下方的命令“添加新块”(Add new block)。“添加新块”(Add new block) 对话框随即打开。 2. 单击“数据块 (DB)”(Data block (DB)) 按钮。3. 指定名称“DB_FB_PrepareNextOrder”。 4. 选择数据块“FB_PrepareNextOrder”作为类型。5. 单击“确定”(OK)。如需交换作业列表,则需额外创建一个 SCL 函数: 1. 创建 STL函数“FC_SwapOrderList”。 2. 声明该块接口,如下所示:1. 双击“程序块”(Program blocks)文件夹下方的命令“添加新块”(Add new block)。 “添加新块”(Add new block) 对话框随即打开。 2.单击“数据块 (DB)”(Data block (DB)) 按钮。 3. 指定名称“DB_OrderRepository”。 4.选择“全局数据块”(Global DB) 作为该数据块的类型。 5. 单击“确定”(OK)。 之后,在 OB1中调用“FC_SwapOrderList”:STEP 7 TIA Portal 中的编程示例 可以将形参和实参分配给 PLC数据类型。 这意味着无需声明每个单独的参数。 如果块具有 PLC 数据类型的输入参数,则必须传送具有相同 PLC数据类型的变量作为实参。 以下示例说明了使用两个形参的函数块 (FB) 的调用和参数分配: 1. 要创建 PLC数据类型,请在项目树中双击“PLC 数据类型”(PLC data types) 文件夹中的命令“新 增数据类型”(Add newdata type)。 这样,将创建并打开一个用于创建 PLC 数据类型的新声明表。 2. 将 PLC数据类型重命名为“UDT_Material”。 3. 在 PLC 数据类型中声明以下行: ArticleNumber >数据类型: DINT ArticleName > 数据类型: STRING Amount > 数据类型: REALUnit > 数据类型: STRING在全局数据块中,使用 PLC 数据类型。 可以将 PLC数据类型直接指定为数据块的数据类型 或在数据块中作为变量的数据类型。 要为此创建全局数据块,请按以下步骤操作: 1.双击“添加新块”(Add new block) 命令。 这样会打开“添加新块”(Add new block) 对话框。 2.单击“数据块 (DB)”(Data block (DB)) 按钮。 3. 指定名称“DB_MaterialBuffer”。 4.选择数据块类型“ARRAY DB”。 5. 选择 PLC 数据类型“UDT_Material”作为 ARRAY 数据类型。6.指定“1000”作为 ARRAY 上限。 7. 单击“确定”(OK)。在函数块调用中,将形参与全局数据块“DB_MaterialBuffer”中的变量互连。 1. 创建一个 SCL函数块并将其命名为“FB_Material”。 2. 按如下方式声明块接口:使用 STL 中的 MOVE 指令 (S7-1500)应用场合 现在,在 S7-1500 CPU 上可使用 STL 中的 MOVE 指令进行编程。采用这种方式具有以下优势: •程序结构的创建更为简单便捷。 • CPU 的性能显著提高。 STEP 7 V5.x 中的编程方式 在 STEP 7 V5.x中,使用“BLKMOV:块移动“和”UBLKMOV:不可中断的存储区移动”系统 函数,实现 MOVE 功能。 STEP 7 TIAPortal 中的操作步骤 在 STEP 7 TIA Portal 中,提供了以下新 MOVE 指令: • MOVE:移动值 •MOVE_BLK:块移动 • MOVE_BLK_VARIANT:块移动 • UMOVE_BLK:不可中断的存储区移动编程示例以下示例说明了“MOVE_BLK 指令的工作原理:块移动”。将一个 ARRAY 块复制到另一个 ARRAY 块中: 使用MOVE_BLK 指令,将“Data_DB”数据块中“Array_1”的十个元素复制到相同数据块的 “Array_2”中。使用 IEC定时器和计数器 (S7-1200, S7-1500) IEC 定时器和计数器的优势 IEC定时器和计数器的统一应用,可显著提高程序代码的运行效率。 采用这种方式具有以下优势: • 通过新生成的背景数据块,可对块进行多次调用。• IEC 计数器的计数范围更大。 • 与 S5 定时器相比,IEC 定时器性能更佳,且计时更为准确。 STEP 7 V5.x中的编程方式 在 STEP 7 V5.x 中,S5 定时器和计数器通过一个数字进行juedui寻址。由于这种寻址方式与具体数字相关,S5 定时器和计数器无法对程序块进行重用。 定时器值的范围限制为 9990 秒,而计数器的Zui大编号限值为 999。STEP 7 TIA Portal 中的操作步骤 在调用或需使用时,需要在程序块中对该 IEC 定时器和计数器进行声明。IEC定时器是一种 数据类型为 IEC_TIMER、IEC_LTIMER 或 TON_TIME 和 TON_LTIME的结构,也可声明为块中 的局部变量。IEC 计数器是一种数据类型为 IEC_SCOUNTER、IEC_USCOUNTER之类的结构。