• IIANews微官网
    扫描二维码 进入微官网
    IIANews微信
    扫描二维码 关注微信
    移动客户端
  • English
2025全景工博会
PLC

在S7-1500中,为什么将某一个字中的单一地址定义为PLC数据类型会造成整个字被覆盖?

  2016年11月23日  

  描述

  在STEP 7 (TIA 博途)中为使程序结构更加清晰,您可以把多个输入输出地址定义在一组更高一级的PLC变量中。 那么,可能会发生这种情况,即使您只是访问了定义为PLC数据类型的单个位地址,但整个输出Word都会被覆盖。

  在下面的例子中,在一个S7-1500cpu中定义了2个输出字节Q0和Q1,用户程序中定义了PLC数据类型 "TypeMotor",包括4个元素,即"powerOn", "powerOff", "speedMin" and "speedMax"(都是Bool数据类型)。

  图1

 

  图1 数据块"DB" 的"setFalse"变量和OB 主程序的Network 1 。

  输入变量 "init" 将输出字节 "QB1" 初始化为255。

  DB变量 "se" 被声明为 PLC 数据类型 "TypeMotor" 并预设值为"False"。

  输出变量 "set" [Q0.0] 也被声明为 PLC 数据类型 "TypeMotor"。

  用"MOVE" 指令将DB变量 "se" 覆盖输出变量 "set" [Q0.0]。

  这样输出点 Q0.0 到 Q0.3将为"False"。

  情形1: 数据块 "DB" 没有设置优化访问

  图2

 

  PLC 数据类型以Word 结束。拷贝数据结构时, 在系统中填充位会被插入到数据传输中,因为UDT在系统中总是以16位存在。这会导致当您在程序中使用非优化访问的块时整个输出字将会被覆盖。输入和输出区域没有被优化。 在情形1中 ,输出字节"QB1" 也被写入了 "0"。

  情形2: 数据块 "DB" 设置了优化访问

  图3

 

  输出字节 "QB1" 没有被覆盖为 "0" 并且先前初始化的值被保留 。

  注意

  如果您用PLC数据类型定义了输出字节QB0, 如例子中所示,但没有在设备组态中定义输出字节QB1或者说QB1不存在的话,那么就会有上面的错误提示信息。

  补救措施

  如果您只是访问数据结构中的单个数据元素,那么如上所描述的填充比特位对数据传输没有影响。如果您传送如图1所示的整个数据结构,那么您应该使用优化的块访问。

  S7-1200/S7-1500 新生成的DB块会默认设置为优化访问。 S7-300/S7-400 数据块为“标准“的块访问属性 ,如果您将这些块用于 S7-1200/S7-1500,建议您更改为优化访问以确保更好的性能。 为此,您打开块的属性,并在“属性”选项卡中启用“优化的块访问”功能。

标签:西门子  S7  1500  我要反馈
最新视频
图尔克亮相2025上海工博会精彩花絮   
探馆 | 深化“双元本地化”战略,博世力士乐以全球首发新品兑现承诺   
研祥金码
重新定义可靠传动,共同创造美好未来!
专题报道
《我们的回答》ABB电气客户故事
《我们的回答》ABB电气客户故事 ABB以电气问题解决专家之志,回答未来之问。讲述与中国用户携手开拓创新、引领行业发展、推动绿色转型的合作故事,共同谱写安全、智慧和可持续的电气化未来。
企业通讯
研祥金码R-6000系列读码器调研活动
研祥金码R-6000系列读码器调研活动

Regem Marr研祥金码R-6000H智能读码器,拥有高精度AI算法,精准读取各类条码,在多个行业内帮助企业降本增效

立刻注册,赢取好礼!西门子2025工博会系列直播活动
立刻注册,赢取好礼!西门子2025工博会系列直播活动

步入9月,即将迎来工业人一年一度的相聚时刻,9月23-25日,第五届西门子工业论坛 如约而至!通过三日全天候直播,我们将

在线会议
热门标签

社区