如何对DB块中一部分数据进行数据初始化

我需要对DB中的一部分数据进行清零运算,如何做,有没有高手指点一下

最佳答案

来自sunnic的回答,我保存下来的:
1200的FILL_BLK, RESET_BF的对象都要必需是array数组结构。如果要复位的数据区域是数组,那么直接用FILL_BLK, RESET_BF就可以了。
如果DB块内需要清零的数据不是数组结构的,那么只有使用类似指针的方式对数据进行清零。
1200本身没有指针,只能使用SCL语言里的PEEK,POKE指令达到指针的效果。

比如我写的下面这段程序:
IF #Clr_Error = TRUE THEN    (*  Clr_Error 是我设置的一个启动变量  *)
    "Blank" = 0         (*  "Blank":MW2 *)
    POKE_BLK(area_src:= 16#83,         
 (*  源数据类型:16#81:I,16#82:Q,16#83:M,16#84:DB  *)
         dbNumber_src:= 0,              (* 源数据块, 非DB=0  *)
         byteOffset_src:= 2,            (*  源数据起始位号  *)
         area_dest:= 16#84,             (*  目标类型:16#81:I,16#82:Q,16#83:M,16#84:DB  *)
         dbNumber_dest:= 11,             (*  目标数据块:非DB=0  *)
         byteOffset_dest:= 0,           (*  目标起始位号:位号  *)
         count:= 10);                   (*  长度  *)
END_IF;
这段程序的意思是,将MW2清零,然后把MW2复制到DB11.DBW0 开始的10个字节

提问者对于答案的评价:
解决问题

专家置评

已阅,最佳答案正确。

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

(1)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2017年6月8日
下一篇 2017年6月8日

相关推荐