恭喜,你发布的帖子
发布于 2015-10-20 10:41:33
27楼
其实AT还有一个非常好用的地方, 几乎是非用不可.
我使用ET200S的步进模块, 它的控制字首个双字(偏移量为0)有两种情况:一种是在位置模式下用DINT类型表示目标位置. 另一种是在速度模式下用REAL类型表示目标速度.
而我又需要建立一个用户数据类型(UDT) , 在这个UDT里我必须要事先指定数据类型, 比如我的项目要经常用到位置模式, 那么我将数据类型设为DINT.
然后现在突然有个项目来了, 我即需要用位置模式,又要速度模式.
当我使用位置模式时, 可以直接将一个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; //速度给定(正转)
精华帖版主置评:经典!
推荐帖推荐理由:真心赞一个。一个FB多用途。模式转换。(推荐人:yming)
请填写推广理由:
分享
只看
楼主