[西门子] 【200SMART编程】你一定要会用的6张表——交叉引用表

[复制链接]
查看162 | 回复0 | 2024-8-25 22:26:25 | 显示全部楼层 |阅读模式



交叉引用表
在交叉引用表单中可精确定位各变量或存储器在程序中的使用位置,找到相应的存储器,然后双击即可跳转至使用该存储器的程序位置。
打开方式
可以通以下几种方式打开交叉引用表。



交叉引用表只有在编译程序后才能生成,如果已经生成了交叉引用表,当你修改了程序后,系统会提示你再编译,这样可以确保你查看到的交叉引用表是最新的有效表。

如果程序有错误,无法通过编译,交叉引用表也不会生成,必须修正程序中的错误再重新编译通过后才可生成交叉引用表。



交叉引用表的列名
交叉引用表有四列:元素,块,位置,上下文。

  • 元素

元素指在程序中使用过的符号名或绝对地址。



该元素出现在的程序块位置(主程序Main,某个子程序或库子程序)。

  • 位置

该元素出现在块中的具体程序段。

  • 上下文

引用该元素的具体指令。
元素显示方式
元素显示方式分为:仅绝对,仅符号,符号:绝对三种,同《符号表》中讲解的显示方式区别。未定义的地址即使选择为“仅符号”,也还是显示为绝对地址。





排序方式
先按存储器类型排序,再按存储器寻址方式排序。即总体是按照ID,IW,IB,Ix.x,QD,QW,QB,Qx.x,&VBxx,VD,VW,VB,Vx.x,AIW,AQW,MD,MW,MB,Mx.x,SMD,SMW,SMB,SMx.x,LD,LW,LB,Lx.x,子程序符号排序的。(存储器和寻址方式可回顾【PLC基础知识】SMART200的数据类型和变量寻址方式)



查看方式
交叉引用表第144行显示,存储器绝对地址VD286被使用在子程序"数据变化SBR7"的程序段1中,关联的程序指令是“不等于实数”。

交叉引用表第149行显示,符号“电池容量1”被使用在主程序“MAIN(OB1)”的程序段127中,关联的程序指令是调用的子程序"剩余电量"。



双击相应的行即可跳转至元素在程序中的使用位置,对应关系如下图。



用法举例
交叉引用表可定位符号或绝对地址在程序的使用位置,即某个变量符号或地址在程序中的所有使用位置。如果我们在编程时用重了变量或者将变量用错了位置,相同程序复制粘贴后为完全求改为新地址而导致程序执行错误,这时候我们就可以通过交叉引用表来分析查找,找到错误位置并修改变量。

  • 变量以地址重叠的形式被使用

例如在某个程序段使用了VD280,在另一个程序段使用了VW282。首先在符号表中会出现地址重叠使用的提示(可以回顾【200SMART编程】你一定要会用的6张表——符号表),这时我们可以在交叉引用表的VD排序中可以看到VD280的引用条目,在VW排序中看到了VW282的引用条目,如果不是正确的重叠使用,那就可以通过交叉引用表排查出地址被错误重叠使用的位置从而改正错误。

地址重叠使用可能是VD,VW,VB,Vx.x,&VBxx这几种寻址方式,因此在排查时最好都排查一下以便彻底解决问题。

  • 变量被使用在错误的位置

同样是VD280,被使用在了错误的程序段中,此种情况一般出现在复制粘贴使用相同逻辑结构的程序而未完全修改变量地址或符号。此时我们可以找到程序中未修改而出错的地方,将变量的引用改正过来。

此外如果我们需要替换某个变量,除了使用查找替换功能,还可以通过交叉引用表挨个跳转到使用位置查看确认并修改,但每次修改后都需要重新编译才能查看到新的交叉引用表。

地址使用表
地址使用表分为字节使用表和位使用表,他们的区别如下:

字节使用表可以查看V,M,AIW,AQW,C,T,SM存储器按字节细分的使用情况;位使用表可以查看I,Q,M存储器按位细分的使用情况。
地址使用表的行和列

  • 字节使用

每10个字节分为1组,排在1行中,这10个字节中的每个字节占用1个列。例如第一行表示VB0-VB9的这10个字节的使用情况。可以通过行序号+列序号确定出具体字节。

  • 位使用

每8个位即1个字节分为1组,排在1行中,8个位的每个位占用1个列。



存储器被使用的标记方式
系统会按照b,B,W,D的优先级对存储器的使用情况进行标记,b的优先级最高,D的优先级最低。

  • b表示按位使用。

  • B表示按字节使用。

  • W表示按字使用。

  • D表示按双字使用。

  • X表示定时器和计数器被使用。





用法举例
如果我们要增加一段程序,而需要避免重复使用之前的存储器,定时器,计数器时,就可以到字节使用和位使用中查看寄存器的使用情况,从表中找出未被使用的存储器,定时器,计数器使用即可。
注意

  • 以间接寻址的方式使用的存储器,会以D的形式连续标记4个字节。




  • 由于标记是分优先级的,所以在地址使用表中是无法确定地址是以何种方式被使用的,具体还需要查看交叉引用表确定。

  • 未被标记的存储器通常情况下都可以放心使用,除非你使用移动指针的方式间接使用了该地址,此种情况下即使在交叉引用表中也无法查到间接使用的地址。例如下图中MBUS_MSG块实际使用了VB2200-VB2271共72个字节的存储器(蓝框所示),如果程序中再无该范围存储器的使用,地址使用表中仅会标记出间接寻址的4个字节(红框中的VB2200-VB2203)。




  • 在运行模式下编辑时,地址使用表中还会出现沿使用情况表。


总结
交叉引用表主要用于查看变量符号或地址在程序中的每个使用位置,主要用于排查错误,查找重叠使用的寄存器;地址使用表则主要用于查看未被使用的地址,方便添加程序使用存储地址时避免与之前使用过的地址发生重叠。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则