在 STEP 7(TIA 博途)中,如何初始化 S7-1500 的优化存储区的结构体?

在优化块中,临时结构变量在PLC初始化时接收初始值。

描述

在非优化块中,临时变量不进行初始化,换句话说,如果在使用之前没有被初始化,临时变量将被赋予一个随机值,临时存储区的变量仅在一个周期内有效。

  • 例如,Bool类型变量被赋值“False”
  • PLC数据类型中的元素被预设为默认值,这些默认值在声明PLC数据类型(UDT)时被定义,图1显示了PLC数据类型的定义。

https://support.industry.siemens.com/cs/images/78678760/78678760_STEP7_TIA_Portal_Init_Strukturen_in_opt_Speicherbereichen_1_en.png
图.1

  • 数组类型的元素被预设为对应数据类型的初始值
  • 字符串或者宽字符串类型的变量被自动创建,最大长度为16382个字符和实际长度为0

“typeMotorData”数据类型中定义的默认值被DB中定义的变量用作起始值,例如在本例中定义的数据类型“Array[1..10]of typeMotorData”。

图.2显示了一个数据块结构体,DB中“motorField”为变量,数据类型为“Array[1..10]oftypeMotorData”

https://support.industry.siemens.com/cs/images/78678760/78678760_STEP7_TIA_Portal_Init_Strukturen_in_opt_Speicherbereichen_2_en.png
图.2

在本例中,使用FOR指令来初始化DB中的变量“motorField”。应用SCL语言中的FOR指令,一直循环执行到“tempCount”到达设定值。由于数据类型是“Array[1..10]oftypeMotorData”的数组类型,必需循环10次(“1 TO 10DO”)来初始化结构变量中的所有数组元素。

https://support.industry.siemens.com/cs/images/78678760/78678760_STEP7_TIA_Portal_Init_Strukturen_in_opt_Speicherbereichen_3_en.png
图. 3


注意:
在已经声明的PLC数据类型中可以定义初始值,每一个基于PLC数据类型的变量都以此为起始值。如果你想对一个运行的设备进行程序复位,只需要初始化结构变量,在从STOP到RUN的上电过程中,从装载存储区中调用初始值响应复位操作。

系统函数“READ_DBL”

使用扩展指令“READ_DBL”,同样可以初始化一个数据块的单个的变量。从装载存储区(MMC卡)的DB中拷贝数据到数据存储区的目标DB中,这一方法在下面的情形中也是特别有用的:

  • 如果变量值起始值不是0但需要复位到初始值时
  • 不想创建临时变量
  • 不用频繁或者周期的读取变量值

更多信息

更多信息可以参考条目“1500中字符串类型临时变量初始化”

创建环境

本FAQ的截屏由STEP7 (博途)V14创建。

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc327348.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月5日 下午12:03
下一篇 2021年4月12日 上午12:00

相关推荐

发表回复

登录后才能评论