你现在位置:首页>技术论文>经验技巧>西门子PLC>正文
使用间接寻址编写循环程序
日期:2008-6-12 19:05:40 来源:本站整理  
点击: 作者:
点击【】放大字体.
fanxt 发表于 2008-5-26 12:26:57
标签(TAG):指针  loop  
WWW_P※LCJS_CO※M-PLC-技-.术_网

问题:

WWW.PLCJS.COM——可编程控制器技术门户

在 STEP 7 中如何使用间接寻址编写循环程序?
WWW_PLCJS@_COM%-PLC-技.术_网

解答:  

plcjs.技.术_网

间接寻址允许寻址那些在程序运行期间才可以确定其地址的操作数。这意味着,程序的某些部分可以重复执行。循环程序在每次运行时为所使用的操作数分配一个不同的地址。
P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户

在所附的下载程序LoopAddr中,编写了一段循环程序,使用输入变量Input_1Input_2的值为 100 个连续的存储单元赋值。该程序包含了一个功能 FC10,该功能的输入 IN 变量为Input_1Input_2(数据类型为 DWORD) 和DB_No(数据类型为 WORD) ,以及一个通过语句:Value:  ARRAY[1..100] of REAL声明的数据块 DB10。

W1WW_P4LCJS_COM-PLC-技.术_网

在该循环程序每次运行的过程中,将Input_2的值累加到Input_1的初始值上,或者将Input_2的值累加到上次的累加和上,并将结果保存在数据块中计算出来的地址内。例如,如果将数值 0.5 赋予Input_1并将 1.5 赋予Input_2,则第一个值保存在地址 0.0 中,计算结果 (0.5+1.5=2.0) 保存于下面的地址 (4.0) 中,下一个计算和 (2.0+1.5=3.5) 保存于接下来的地址 (8.0) 中,以此类推。

WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)

 

Input_1 = 0.5;Input_2 = 1.5

WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)

Input_1 = 0;Input_2 = 5.5

P.L.C.技.术.网——可编程控制器技术门户

地址:

WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)

名称:

P.L.C.技.术.网——可编程控制器技术门户

数值:

WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)

地址:

WWW_P※LCJS_CO※M-PLC-技-.术_网

名称:

WW.W_PLC※JS_C,OM-PL,C-技.术_网

数值:

P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户

0.0

P.L.C.技.术.网——可编程控制器技术门户

Value[1]

WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)

0.5

WW.W_PLCJS_COM-PLC-技.术_网

0.0

WWW.PLCJS.COM——可编程控制器技术门户

Value[1]

WWW_P※LCJS_COM-PLC-)技.术_网

0.0

P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户

4.0

W1WW_P4LCJS_COM-PLC-技.术_网

Value[2]

WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)

2.0

WWW_PLCJS@_COM%-PLC-技.术_网

4.0

WWW_PLCJS_COM-PLC-技.术_网

Value[2]

WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)

5.5

plcjs.技.术_网

8.0

WWW_PLCJS@_COM%-PLC-技.术_网

Value[3]

WWW_PLCJS@_COM%-PLC-技.术_网

3.5

WWW_PLCJS_COM-PLC-技.术_网

8.0

WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)

Value[3]

WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)

11.0

WWW_PL※CJS_COM-PLC-技.术_网

12.0

WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)

Value[4]

P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户

5.0

WWcW_PLCJS_COM-PLC-技.术_网

12.0

WWW_P※LCJS_CO※M-PLC-技-.术_网

Value[4]

WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)

16.5

W1WW_P4LCJS_COM-PLC-技.术_网

16.0

plcjs.技.术_网

Value[5]

WW.W_PLC※JS_C,OM-PL,C-技.术_网

6.5

WW.W_PLC※JS_C,OM-PL,C-技.术_网

16.0

WW.W_PLCJS_COM-PLC-技.术_网

Value[5]

WWW_PLC※JS_COM-PmLC-技.术_网

22.0

P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户

20.0

WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)

Value[6]

plcjs.技.术_网

8.0

WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)

20.0

WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)

Value[6]

WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)

27.7

WWW.PLCJS.COM——可编程控制器技术门户

24.0

WW.W_PLC※JS_C,OM-PL,C-技.术_网

Value[7]

WWW_PLC※JS_COM-PmLC-技.术_网

9.5

——可——编——程——控-制-器-技——术——门——户

24.0

WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)

Value[7]

WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)

33.0

WWW_P※LCJS_CO※M-PLC-技-.术_网

28.0

W1WW_P4LCJS_COM-PLC-技.术_网

Value[8]

——可——编——程——控-制-器-技——术——门——户

11.0

WWW.PLCJS.COM——可编程控制器技术门户

28.0

WWW_P※LCJS_COM-PLC-)技.术_网

Value[8]

——可——编——程——控-制-器-技——术——门——户

38.5

WWW.PLCJS.COM——可编程控制器技术门户

32.0

W1WW_P4LCJS_COM-PLC-技.术_网

Value[9]

WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)

12.5

plcjs.技.术_网

32.0

WWW_PLC※JS_COM-PmLC-技.术_网

Value[9]

plcjs.技.术_网

44.0

WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)

...

WWW_PLC※JS_COM-PmLC-技.术_网

...

WWW_P※LCJS_CO※M-PLC-技-.术_网

...

WWW_PLCJS_COM-PLC-技.术_网

...

WW.W_PLC※JS_C,OM-PL,C-技.术_网

...

WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)

...

WW.W_PLC※JS_C,OM-PL,C-技.术_网

P.L.C.技.术.网——可编程控制器技术门户

表 1:将Input_1Input_2的相加结果保存在 DB 10 中计算出来的地址 内的两个实例。

plcjs.技.术_网

在 FC10 的第一部分中,调用系统功能 SFC24“TEST_DB”,然后评估参数“RET_VAL”。SFC24 提供了数据块在 CPU 工作存储器中的位置信息。评估所选 DB 的数据类型的数据块编号并检查 DB 是否为写保护。如果“RET_VAL”的错误代码不为零,则程序通过一个跳转指令终止。“RET_VAL”可能返回下列错误编号:

WWW_P※LCJS_COM-PLC-)技.术_网

  • 0000:没有发生错误。
  • 80A1:数据块的编号为零,或者大于该 CPU 所允许的最大编号。
  • 80B1:CPU 中不存在指定的数据块。
  • 80B2:通过关键字 UNLINKED 生成数据块。

通过存储器间接寻址打开选定的数据块:

plcjs.技.术_网

  • L  #DB_No                    //所选择的数据块的编号 (10 表示 DB10) 。
  • T  #Init_DB                    //类型为 WORD 的临时变量。
  • AUF  DB[#Init_DB]      //打开 DB10 (<=> AUF DB10) 。

将指定的数据块编号 (通过参数DB_No) 装载到 Accu1 并将其复制到临时变量Init_DB”中临时保存。然后通过该临时变量打开该数据块。

WW.W_PLC※JS_C,OM-PL,C-技.术_网

Input_1的值复制到一个临时变量Init中,然后经过一个循环,将Init的值累加到Input_2上。循环程序使用 LOOP 指令,而循环计数器则被保存在临时变量Count中。通过临时变量Point_to(类型为 DWORD) 将各次累加的和传送到数据块的各个双字 (类型:REAL) 数据中。 

WW.W_PLCJS_COM-PLC-技.术_网

在进入循环之前,装载一个指针,该指针指向数值的第一个单元的地址,并将该指针传送到变量“Point_to”。因为数值是以双字 (类型:REAL) 形式传送的,所以循环程序每执行一次,“Point_to”的访问地址就增加 P#4.0。
WWW.PLCJS.COM——可编程控制器技术门户

在 OB1 中调用 FC10,并将参数“Input_1”和“Input_2”分别赋值为 MD10 和 MD20。将参数“DB_No”赋值为“W#16#A” (A 表示 DB10) 。

WWW_PLCJS@_COM%-PLC-技.术_网

500)this.width=500>

W1WW_P4LCJS_COM-PLC-技.术_网

图 1:使用间接寻址设计循环程序 

WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)

下载:

plcjs.技.术_网

所附的下载程序中包含使用了上述块的 STEP 7 项目,用于实现一个使用间接寻址的程序。 
WWW_PLC※JS_COM-PmLC-技.术_网

500)this.width=500>LoopAddr.exe ( 524 KB )  

WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)

将文件“LoopAddr.exe”复制到一个单独的目录中,然后双击执行该文件。该 STEP 7 V5.3 项目和它的所有子目录将自动解压缩。然后您可以使用 SIMATIC 管理器打开并编辑解压缩后的项目。

WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)

可运行性和测试环境

WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)

该实例可以运行在 SIMATIC S7-300、S7-400、C 7 和 WinAC 中所有型号的 CPU 上。
——可——编——程——控-制-器-技——术——门——户

下表列出了创建本页内容和验证上述功能所用的组件:
WWW_PLC※JS_COM-PmLC-技.术_网

 

测试环境

WWW_P※LCJS_COM-PLC-)技.术_网

版本

WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)

PC 系统

——可——编——程——控-制-器-技——术——门——户

SIMATIC Intel (R)  Pentium (R)  M 处理器

WWcW_PLCJS_COM-PLC-技.术_网

PC 操作系统

WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)

Windows XP SP2

WWW_P※LCJS_COM-PLC-)技.术_网

STEP 7

WWW_P※LCJS_CO※M-PLC-技-.术_网

V5.4

WW.W_PLCJS_COM-PLC-技.术_网

S7-PLCSIM

——可——编——程——控-制-器-技——术——门——户

V5.3

WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)

WWW_PLCJS_COM-PLC-技.术_网

表 2:所附下载文件的测试环境

WWW_PL※CJS_COM-PLC-技.术_网

重要事项:

P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户

附件程序是免费软件。每个用户都可以免费使用、复制或转发该程序。程序的作者和合法拥有者对于该软件的功能性和兼容性不负任何责任。使用该软件的风险完全由用户自行承担。由于它是免费的,所以不提供任何担保错误纠正热线支持
WWW_PLCJS_COM-PLC-技.术_网

关键词:

P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户

指针
WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)

评论内容
载入中...
载入中...
P
L
C



|










|


P
L
C









·最新招聘信息
·最新求职信息
·推荐产品
·推荐厂商
·栏目热门排行
·站内热门排行