问题: WWW.PLCJS.COM——可编程控制器技术门户 在 STEP 7 中如何使用间接寻址编写循环程序?WWW_PLCJS@_COM%-PLC-技.术_网
解答: plcjs.技.术_网 间接寻址允许寻址那些在程序运行期间才可以确定其地址的操作数。这意味着,程序的某些部分可以重复执行。循环程序在每次运行时为所使用的操作数分配一个不同的地址。P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
在所附的下载程序“LoopAddr”中,编写了一段循环程序,使用输入变量“Input_1”和“Input_2”的值为 100 个连续的存储单元赋值。该程序包含了一个功能 FC10,该功能的输入 IN 变量为“Input_1”、“Input_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_1”和“Input_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-技.术_网(可编※程控※制器技术门户)
|