1、UDT数据类型实质上就是一个多种数据类型的组合体。使用UDT对数据有分类作用,便于调用及管理。 2、UDT数据类型可在程序中统一更改和重复使用,一旦UDT类型的结构或内容发生修改,执行软件全部编译可以自动更新所有使用该数据类型的变量。 3、UDT的作用是方便编程人员的,对于程序的运行而言不是必需的从数据类型的角度来说,UDT甚至不会被PLC直接接受。例如将一个带有UDT的程序下载到PLC中,然后新建一个PLC,上传程序,在传上来的程序中你是找不到UDT的,UDT更像是对DB结构的注释。 1、定义为UDT类型的变量在程序中可作为一个变量整体使用,也可单独使用组成该变量的元素。 2、对于某个程序功能的多次调用,且程序内部由多个相同或不同的数据类型来组成,我们均可以使用UDT的形式来进行结构化的编程,如对5个温度传感器进行数据处理、PN通讯时的数据交互处理等等。 四、应用举例 目的:实现对5个传感器数据的抽象与处理 工具:1.UDT数据类型;2.FB块; 实现: 1、创建一个传感器数据类型,Sensor数据类型中定义4个变量: R_Sensor_Value: 传感器实时值(输出值) R_Edit: 数值修订(默认为0) R_Max: 仪表物理最大值(设置值) R_Min: 仪表物理最小值(设置值) I_Channal: AI输入通道值 ![]() 2、创建一个传感器数据处理FB块(SFB_传感器) <1>.FB块的输入输出接口分别包含: Input: I_ChannelValue:数据类型为int I_ChanneMax:数据类型为int I_ChanneMin:数据类型为int InOut: Sensor:数据类型为自定义数据类型"Sensor" <2>. 创建传感器数据处理SCL程序代码如下: REGION _通道值处理_ IF #I_ChannelValue > #I_ChanneMax THEN #Sensor.R_Sensor_Value := #Sensor.R_Max; ELSIF #I_ChannelValue < #I_ChanneMin THEN #Sensor.R_Sensor_Value := #Sensor.R_Min; ELSE #Sensor.R_Sensor_Value := INT_TO_REAL(#I_ChannelValue) * (#Sensor.R_Max - #Sensor.R_Min) / INT_TO_REAL(#I_ChanneMax - #I_ChanneMin) + #Sensor.R_Min + #Sensor.R_Edit; END_IF;END_REGION 即可得到SFB_传感器FB块 ![]() 3、创建一个传感器数据DB块,建立5个传感器 <1>.创建“传感器”DB块: ![]() <2>.创建一个温度“传感器”实例 ![]() <3>.创建5个温度“传感器”实例 ![]() ![]() ![]() 以上是用户数据类型(User Data Type)介绍与应用。希望能帮助到大家。 |
|