线性化编程与结构化编程+数据块技术讲义.docx
《线性化编程与结构化编程+数据块技术讲义.docx》由会员分享,可在线阅读,更多相关《线性化编程与结构化编程+数据块技术讲义.docx(8页珍藏版)》请在冰豆网上搜索。
线性化编程与结构化编程+数据块技术讲义
6.1.3线性化编程与结构化编程
1.线性化编程:
整个用户程序放在循环控制组织块OB1(主程序)中。
2.模块化编程:
程序被分为不同的逻辑块,每个块包含完成某些任务的逻辑指令。
3.结构化编程:
将复杂的自动化任务分解为小任务,这些任务由相应的逻辑块来表示,程序运行时所需的大量数据和变量存储在数据块中。
调用时将“实参”赋值给形参。
创建顺序:
FC1→FB1及其背景数据块→OB1,被调用的块应该是已经存在的。
6.2.1发动机控制系统的用户程序结构
3.局域变量的类型
(1)IN(输入变量):
由调用它的块提供的输入参数。
(2)OUT(输出变量):
返回给调用它的块的输出参数。
(3)IN_OUT:
初值由调用它的块提供,被子程序修改后返回给调用它的块。
(4)TEMP(临时变量):
暂时保存在局域数据区中的变量。
(5)STAT(静态变量):
在功能块的背景数据块中使用。
关闭功能块后,其静态数据保持不变。
功能(FC)没有静态变量。
表6-3FB1的变量声明表
Name
DataType
Address
Declare
InitialValue
Comment
Switch_On
Bool
0.0
IN
FALSE
起动按钮
Switch_Off
Bool
0.1
IN
FALSE
停车按钮
Failure
Bool
0.2
IN
FALSE
故障信号
Actual_Speed
Int
2.0
IN
0
实际转速
Engine_On
Bool
4.0
OUT
FALSE
控制发动机的输出信号
Preset_Speed_Reached
Bool
4.1
OUT
FALSE
达到预置转速
Preset_Speed
Int
6.0
STAT
1500
预置转速
5.程序库
6.2.3功能块与功能
表6-4FC1的变量声明表
Name
DataType
Declare
Comment
Engine_On
Bool
IN
输入信号,发动机运行
Timer_Function
Timer
IN
停机延时的定时器功能
Fan_On
Bool
OUT
控制风扇的输出信号
6.2.4功能块与功能的调用
为了能全部转换为图6-10中的梯形图,下面的语句表还需要增加一些语句。
Network1:
自动手动切换
A"自动"
S"自动模式"
A"手动"
R"自动模式"
Network2:
汽油机控制
CALL"发动机控制","汽油机数据"
Switch_On:
="起动汽油机"
Switch_Off:
="关闭汽油机"
Failure:
="汽油机故障"
Actual_Speed:
="汽油机转速"
Engine_On:
="汽油机运行"
Preset_Speed_Reached:
="汽油机到达设置转速"
Network3:
汽油机风扇控制
CALL"风扇控制"
Engine_On:
="汽油机运行"
Timer_Function:
="汽油机风扇延时"
Fan_On:
="汽油机风扇运行"
6.3数据块
6.3.1数据块中的数据类型
1.基本数据类型
基本数据类型包括位(Bool),字节(Byte)、字(Word)、双字(Dword)、整数(INT)、双整数(DINT)和浮点数(Float,或称实数Real)等。
2.复合数据类型
日期和时间用8个字节的BCD码来存储。
第0~5号字节分别存储年、月、日、时、分和秒,毫秒存储在字节6和字节7的高4位,星期存放在字节7的低4位。
例如2004年7月27日12点30分25.123秒可以表示为DT#04-07-27-12:
30:
25.123。
字符串(STRING)由最多254个字符(CHAR)和2字节的头部组成。
字符串的默认长度为254,通过定义字符串的长度可以减少它占用的存储空间。
3.数组
数组(ARRAY)是同一类型的数据组合而成的一个单元。
ARRAY[1..2,1..3]是一个二维数组,共有6个整数元素。
最多为6维。
数组元素”TANK”.PRESS[2,1]:
TANK是数据块的符号名,PRESS是数组的名称。
方括号中是数组元素的下标。
如果在块的变量声明表中声明形参的类型为ARRAY,可以将整个数组而不是某些元素作为参数来传递。
4.结构
结构(STRUCT)是不同类型的数据的组合。
可以用基本数据类型、复杂数据类型,和,UDT作为结构中的元素,可以嵌套8层。
数据块TANK内结构STACK的元素AMOUNT应表示为”TANK”.STACK.AMOUNT。
将结构作为参数传递时,作为形参和实参的两个结构必须有相同的数据结构,即相同数据类型的结构元素和相同的排列顺序。
5.用户定义数据类型
用户定义数据类型(UDT)是一种特殊的数据结构,由用户自己生成,定义好后可以在用户程序中多次使用。
例如可以生成用于颜料混合配方的UDT,然后用它生成用于不同颜色配方的数据组合。
6.3.2数据块的生成与使用
菜单命令“View→DeclarationView”和“View→DataView”分别指定声明表显示方式和数据显示方式。
声明表显示状态用于定义和修改共享数据块中的变量。
6.4多重背景
6.4.1多重背景功能块
生成FB10时应激活“MultipleInstanceFB”(多重背景功能块)选项。
应首先生成FB1。
为调用FB1,在FB10的变量声明表中声明了两个名为“Petrol_Engine(汽油机)”和“Diesel_Engine(柴油机)”的静态变量(STAT),其数据类型为FB1。
生成FB10后,“Petrol_Engine”和“Diesel_Engine”将出现在管理器编程元件目录的“MultipleInstances(多重背景)”文件夹内。
可以将它们“拖放”到FB10中,然后指定它们的输入参数和输出参数。
6.4.2多重背景数据块其中的数据自动产生。
6.4.3在OB1中调用多重背景
图6-21中调用FB10(符号名为“发动机”)的语句表为:
Network4:
调用多重背景
CALL"发动机","多重背景数据块"
Preset_Speed_Reached:
="两台都达到设置转速"
图6-17FB10的变量声明表
图6-18多重背景功能块FB10
使用多重背景时应注意以下问题:
(1)首先应生成需要多次调用的功能块(例如上例中的FB1)。
(2)管理多重背景的功能块(例如上例中的FB10)必须设置为有多重背景功能。
(3)在管理多重背景的功能块的变量声明表中,为被调用的功能块的每一次调用定义一个静态(STAT)变量,以被调用的功能块的名称(例如FB1)作为静态变量的数据类型。
(4)必须有一个背景数据块(例如上例中的DB10)分配给管理多重背景的功能块。
背景数据块中的数据是自动生成的。
(5)多重背景只能声明为静态变量(声明类型为“STAT”)。