









FC1 变量声明中定义了“ Timer” 类型的变量“ Time_1” ,在 FC2 中调用 FC1,将定时器“T8”传递给变量“ Time_1”。如图 02 所示程序代码中数值 8 表示“T8”。
图 02 FC中确定定时器编号
“BLOCK_DB”类型参数在调用 FC 时不可以直接传送给 FC 。如果在调用功能时试图使用此参数类型,将产生如下的错误消息: “非法的参数传输
相关详细信息可参考 STEP7 在线帮助中“合法的传输参数类型”。
如果希望将 BLOCK_DB 参数类型传送给 FC, DB 块的编号可以通过基本数据类型(例如 WORD)传送。 在下面的例子中,FB100 拥有一个“BLOCK_DB” 的输入参数类型。为了在调用 FC101 时将参数传送给它,“BLOCK_DB”中的 DB 块编号被传送给 WORD 临时变量(DB_No)。当 FC 被调用,数据块序号以一个 WORD 参数类型替代 BLOCK_DB 参数类型。
图 03 FB中确定Block_DB编号
如果 FB 的接口参数能被定义成 WORD 参数类型来传送 DB 块编号,当 FC 被调用时,此参数可以被直接传送给 FC。
图 04 FC中确定DB编号
1.7 参数传递有何限制?
当分配实际参数给形式参数时,可以地址、符号名称或常数。STEP 7 限制不同参数的分配。例如,输出和输入/输出参数不能被分配常数值(因为输出或输入/输出参数的目的是改变其值)。这些限定尤其适用于具有复杂数据类型的参数,这些参数既不能分配地址也不能分配常数。下表关明涉及分配给形式参数的实际参数数据类型的限制(--)和允许的分配(由 符号显示)。
图 05 允许的参数传递
详细信息请参考手册中附录27.3.4.8节内容:45531107
1.8 如何传递any参数到其他程序块的参数中?
下面的例子将说明如何为系统功能 SFC50 “RD_LGADR” (读取模块逻辑地址)参数化 ANY 指针。例如对于功能块 FB1,按下述步骤编程:
1. 声明一个输入变量“test”和一个临时变量“test2”为 ANY 类型(图05)。
2. 例如,把 SFC50 的参数“PEADDR”传递给变量“test2”(图06)。
3. 通过判断 ANY 指针“test”,能够传递临时变量“test2”的数据。
图 06 any的临时变量传递
语句 L P##test 先把地址加载到 Accu1,通过语句 LAR1 把地址加载到地址寄存器 AR1 (可简写为:LAR1 P##test)。每次读取地址寄存器 AR1 并存储数据(例如 T LW0)到临时变量“test2”(ANY 指针)中。Network 1 中的语句复制数据传送到功能块 FB1 的 ANY 数据到临时变量“test2”。
图 07 临时变量的建立
1.9 如何通过UC或CC指令调用FB?
当使用UC,CC指令调用不带参数的FB可以通过手动修改DI值的方式进行背景数据块的动态分配,此操作相当于模仿系统调用FB的过程。
| 成立日期 | 2022年11月17日 | ||
| 注册资本 | 1000 | ||
| 主营产品 | 西门子变频器,西门子PLC\西门子模块、西门子触摸屏、西门子伺服电机、西门子工控机、西门子集成系统、西门子低压、西门子控制单元、西门子CPU,广东省西门子授权代理商,等 | ||
| 经营范围 | 一般项目:技术服务、技术开发、技术咨询、技术交流、技术转让、技术推广;机械设备销售;智能机器人的研发;机械电气设备销售;电气设备修理;信息系统集成服务;阀门和旋塞销售;泵及真空设备销售;工业机器人销售;工业机器人安装、维修;仪器仪表销售;配电开关控制设备销售;软件开发;工业自动控制系统装置销售;电子、机械设备维护(不含特种设备);专用设备修理;计算机软硬件及辅助设备批发;工业工程设计服务;机械设备研发;货物进出口;技术进出口;国内贸易代理。(除依法须经批准的项目外,凭营业执照依法自主开展经营活动) | ||
| 公司简介 | 广东湘恒智能科技有限公司主要从事工业自动化产品的集成,销售与维修。致力于为您提供在机械、化工、水泥、电力、环保等领域的电气及自动化技术的完整解决方案,包括自动化产品及系统、工程项目执行及管理、主要过程控制领域技术支持,以及专业的售后服务、培训等。公司本着“以人矢志创新、追求卓越”的工作方针,致力于工业自动化控制领域的产品开发、工程配套和系统集成、销售,拥有丰富的自动为本、科技先导、化产品的应用和实 ... | ||









