| AT指令和Slice 访问有啥不同AT指令和Slice 访问有啥不同?粗略用了一下,感觉很类似。 应用的变量类型有啥区别么
 
 
 ------看起来都是可以访问一个变量的一部分。
 -----AT: 将两个变量符号定义在同一地址,只能用于标准访问的块(有绝对地址),必须预定义
 Slice: 访问变量的某些子单元数据, 优化访问的标准块都能用
 
 
 -------就是在优化的背景数据块里,定义一个变量假设为D0
  Word, 然后将该变量的“保持性”设置为“在IDB中设置”,那么接下来新建一个变量就可以AT以上的D0了 
 
 -------AT指令(应该是个方法吧)。还是Z版的办法好。先定义一个变量结构。然后在使用AT指令时,就直接使用这个变量结构,这样它的可读性就很好了,一目了然。
 传递一个参数就可以包含字、字节、位。这对于那些状态字的位操作、控制很方便,在接口处就转换成“位”变量了。
 
 -------我试了一下,一直有问题,在数据格式中没有AT。
 
 具体起因是我想用临时变量LW 0中的某一位,但是在接口处in_out定义临时变量之后,紧接着,下一行想使用AT,但是格式中没有这个。 我下载了一个实例程序,在里面试着操作的时候,就没有这样的问题。 
 -------我觉得AT指令只用在块的接口。 如果你的程序结构都是用控制字,状态字来传递(分层控制),使用AT指令就会感到好处了。 其它用法还真没有看出来 
 ------其实AT还有一个非常好用的地方, 几乎是非用不可. 
 我使用ET200S的步进模块, 它的控制字首个双字(偏移量为0)有两种情况:一种是在位置模式下用DINT类型表示目标位置.  另一种是在速度模式下用REAL类型表示目标速度.  而我又需要建立一个用户数据类型(UDT) ,   在这个UDT里我必须要事先指定数据类型, 比如我的项目要经常用到位置模式, 那么我将数据类型设为DINT.     
AT指令和Slice 访问有啥不同   然后现在突然有个项目来了, 我即需要用位置模式,又要速度模式.   
AT指令和Slice    当我使用位置模式时, 可以直接将一个DINT类型的变量赋值给该控制字 "yRW_EP".ControlData := DINT_TO_DWORD(#PulseTarget_EP);  //位置给定 
 而当我使用速度模式时, 我需要将一个REAL类型赋值给"yRW_EP".ControlData.   可是"yRW_EP".ControlData的数据类型为 DINT.    肿么办?   这个时候AT就能救命了! #RealData0 := INT_TO_REAL(#ManSpd_EP)*5.0E+3/5/10; "yRW_EP".ControlData := #DWatReal0;  //速度给定(正转) 
 |