SE间接访问FC和FB参数六_第1页
SE间接访问FC和FB参数六_第2页
SE间接访问FC和FB参数六_第3页
SE间接访问FC和FB参数六_第4页
SE间接访问FC和FB参数六_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

附录2:间接访问FC和FB参数Closed-loop

controllerOB1Motor1FB1Motor2FB1ValveislandFB2FB5Meas_Value ARRAY[1..20] REALSum REALMean_value REALL P##Meas_Value LAR1 L W[AR1,P#0.0] T #DB_Num OPN DB[DB_Num] L D[AR1,P#2.0] LAR1

....FC10.........DB5"Temperature"FC21参数的赋值只能通过符号地址程序段1:在FC21中,声明Meas_Val为一个数组。

CALLFC21 Meas_Val:="Temperature".sequence使用复杂数据类型的功能调用实例:向功能传递数组复杂数据类型的参数传递OB1功能FC10执行程序CALLFC10On :="Value".Field

Off :=Q8.0in On ARRAY[1..10]

INT

out Off BOOL......L#On[8]...=#Off

...OB1BLD 1

= L 20.0L 5T LW 21L P#DBX0.0T LD23UC FC 10 P#L21.0 P#Q 8.0BLD 2L堆栈(OB1)Field ARRAY[1..10]

INTLW21...12 复杂的实参:L堆栈数据块DB-No:5区域交叉

指针DB5:"Value"在L堆栈中建立指针间接访问复杂数据类型地址 声明 名称 类型 起始值

注释

0.0 in Meas_Val ARRAY[1..8] *4.0 REAL 32.0 out Sum REAL 36.0 out Mean_Val REAL in_out 0.0 temp DB_Num WORD网络1:确定DB-No.和起始地址 L P##Meas_Val //ACCU1读入指针地址 LAR1 //再加载到AR1; L W[AR1,P#0.0] //决定DB号 T #DB_Num //并加载到温度变量; OPN DB[DB_Num] //打开DB L D[AR1,P#2.0] //决定区域指针 LAR1 //并加载到AR1;网络2:计算和 L 0.000000e+000 //ACCU1清零(sum=0.0) L 8 //ACCU1读入计数值;ACCU2读入sum=0BEGN: TAK //ACCU1读入sum,ACCU2读入计数值 ENT //ACCU3读入计数值 L D[AR1,P#0.0] //ACCU1读入场分量 +R //ACCU1读入sum,ACCU2读入计数值 +AR1 P#4.0; //AR1增加4字节 TAK //ACCU1读入循环计数,ACCU2读入sum LOOP BEGN; //循环计数减少,必要时跳转 T #Sum //将sum传到#Sum指针的参数传递OB1功能FC10执行程序CALLFC10On :=P#I0.0INT10

Off :=Q8.0in On ANY

out Off BOOL......LP##On...=#Off

...OB1BLD 1

= L 20.0L W#16#1005T LW 21L 10T LW 23L 0T LW25L P#I0.0T LD27AC FC 10 P#L 21 P#Q 8.0BLD 2L堆栈(OB1)LW21...12

POINTER和

ANY参数10H数据类型:05重复:10DB号:0区域交叉

指针:P#I0.0...在L堆栈中

建立ANY指针

参数类型的参数传递OB1功能FC10程序执行CALLFC10On :=DB35

Off :=Q8.0in On BLOCK_DB

outOff BOOL......OPN#ON...=#Off

...BLD 1

= L 20.0AC FC 10 P#4.3 P#Q 8.0BLD 2 块参数:定时器,计数器BLOCK_xxOB1DB中的基本实参和常量的特点

OB1功能FC10程序执行CALLFC10On_1 :=I0.1

On_2 :=DB5.DBX2.2

Off :=DB5.DBX2.4in On_1 BOOL

in On_2 BOOL

out Off BOOl......A#On_1A#On_2=#Off

...OB1BLD 1

= L 20.0OPN DB 5A DBX 2.2= L 20.1AC FC 10 P#I 0.1 P#L 20.1 P#L 20.2A L 20.2OPN DB 5= DBX 2.4BLD 2L堆栈(OB1)DB5LB20..........01..00010100......123DBB2 基本实参:常量在数据块中0A2.1练习:在FC中计算Date-and-Time参数FC51ENENOIN_DTSecQB13MinQB12OB1_DATE_TIMEHourQB8使用复杂数据类型的FB调用实例:传递数组到功能块FB17复杂参数的赋值仅通过符号地址程序段

1:

CALLFB17,DB30 Meas_1 :="Temperature".Cylinder

Sum_1 :=MD20Sum_2 :=MD30 Meas_2 :="Temperature".ShaftDB2"Temperature"间接访问输入/输出参数Address Declaration Name Type Startvalue Comment

0.0 in Meas_1 ARRAY[1..10] *4.0 REAL 40.0 out Sum_1 REAL 0.000000e+000 44.0 out Sum_2 REAL 0.000000e+000 48.0 in_out Meas_2 ARRAY[1..15] *4.0 in_out REAL 54.0 stat DB_Num INT 0程序段1:决定Meas_1的起始地址 LAR1 P##Meas_1 //区域交叉指针加载到参数, //在AR1中无地址偏移(多重执行个体) TAR2 //载入ACCU1中的地址偏移量 +AR1 //把地址偏移量加到AR1; //AR1现在指向背景DB中的参数 //背景DB已经打开程序段2:访问Meas_1 L 0.000000e+000 //ACCU1清零(Summe=0.0) L 10 //ACCU1读入计数值;ACCU2读入Sum=0BEGN: TAK //Sum在ACCU1,计数值在ACCU2 ENT //ACCU3读入计数值 L D[AR1,P#0.0] //ACCU1中的域分量 +R //Sum在ACCU1,ACCU2读入计数值 +AR1 P#4.0; //AR1增加4字节 TAK //在ACCU1中循环计数,sum在ACCU2 LOOP BEGN; //减循环计数,必要时跳转 T #Sum_1 //将sum传递到#Sum_1间接访问输入/输出参数Address Declaration Name Type Startvalue Comment0.0 in Meas_1 ARRAY[1..10] *4.0 REAL 40.0 out Sum_1 REAL 0.000000e+000 44.0 out Sum_2 REAL 0.000000e+000 48.0 in_out Meas_2 ARRAY[1..15] *4.0 in_out REAL 54.0 stat DB_Num INT 0网络3:决定Meas_2的起始地址

LAR1 P##Messung_2 //POINTER读入区域交叉指针,不 TAR2 //读入ACCU1中地址偏移量,加到AR1; +AR1 //AR1现在指向背景DB中的POINTER LW[AR1,P#0.0] //ACCU1从POINTER读取DB号T#DB_Num //把DB号(或者0)设为静态变量

OPNDB[#DB_Num] //打开DBLD[AR1,P#2.0] //区域交叉指针加载到参数 LAR1 //AR1读入指针,AR1指向参数网络4:访问Meas_2 L 0.000000e+000 //ACCU1请零(Sum=0.0) L 15 //ACCU1读入计数值;ACCU2读入Sum=0BEGN: TAK //Sum在ACCU1中,计数值在ACCU2中 ENT //ACCU3读入计数值 L D[AR1,P#0.0] //域分量在ACCU1 +R //Sum在ACCU1中,ACCU2读入计数值 ... //...“嵌套传递”参数 嵌套深度:S7-300:最多8 S7-400:最多16

...

嵌套传递决定于块、数据和参数类型:

调用 FC调用FC FB调用FC FC调用FB FB调用FB数据类型 E C P E C P E C P E C P输入->输入 x - - x x - x - x x x x输出->输出 x - - x x - x - - x x -输入/输出->输入 x - - x - - x - - x - -输入/输出->输出 x - - x - - x - - x - -输入/输出->输入/输出 x - - x - - x - - x - -E:基本数据类型C: 复杂数据类型P: 参数类型(定时器,计数器,块_x)FBsFBsFCsOBA2抄.2练习大:在FB中计肾算Da幼te翠-a乎nd阿-T滴im顾e参数FB挥63ENEN链OIN汤_D贫TSe斤cQB重13Mi肤nQB瓣12OB拖1_浩DA旗TE刻_T垂IM捉EHo才urQB括8FB亿83IN演_D担T0.森0in普I扶N_拍DTDA侦TE哪_A射ND匪_T兵IM嗓E熔DT摸#9就0-机1-重1-发0:苏0:障0.剂0雨ou悦tin剂_o寺ut8.签0格st蜂at性D袋UM最MY死A宗RR拾AY隐[1娇..简10闹0]*2狸.0拆s示ta岭t外I抗NT20袖8.持0殊st研at鬼F岸B6森3_智DT毫F飞B6我3A2尾.3练习毙:在FB中计婶算In境/O晚ut参数FB宁64ENEN焦OIO蚊_D罪TSe牲cQB疯13Mi吴nQB拍12OB瞧1_筋DA必TE矛_T利IM慎EHo隙urQB代8FB坐84IN锤_D迈T0.周0in中I法N_派DTDA变TE撞_A扮ND颈_T菠IM织E炮DT姜#9贴0-傅1-逗1-驰0:寺0:利0.艺0康ou侨tin膜_o宣ut8.解0戴st碑at砍D敌UM胸MY楚A烈RR岗AY

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论