给S7-300 中DB块清零

各位大侠好!
我现有一个DB块(DB31,如图),里面有200个Byte,现在需要做一个给这个DB块内所有Byte清零的程序,有没有可以不像我截图里面那么老土的方式能够快速清零的先进办法,最好一次性到位?
抛砖引玉:比如利用某个系统功能块如SFC20,指针传送(对这俩种方式都不曾使过,如碰巧真是其中一种,请详细指点!)……
请不吝赐教,不胜感激!

问题补充:
非常感谢“火麒麟”,你的回答非常清晰而有针对性,对我帮助很大!
对于第1种方法,请确认是使用SFC20还是SFC21??
       
我也浏览了西门子论坛,发现也有很多网友提了和我类似的问题,大侠们最推荐的也正是此法:建立一个和DB31结构完全一样的DB块(如DB21),然后通过如下程序来实现:
CALL  "SFC20"
SRCBLK :=P#DB21.DBX 0.0 BYTE200
RET_VAL:=MW100
DSTBLK :=P#DB31.DBX 0.0 BYTE 200

同时也感谢和欢迎其他大侠们的指点~~

图片说明:

给S7-300 中DB块清零   

最佳答案

呵呵,是有3个办法:
1:不用SFC20,可以使用SFC21"FILL",使用一个值为0的字然后填充到目标区域即可。
2:就是指针,循环传送了。
简单写个程序,你试试:
OPN DB31
L P#0.0
T MD0
L 200
NEXT:T MB4
L  0
T DBB[MD0]
L MD0
+  8
T MD0
L MB4
LOOP NEXT

3:就算是传送,也不要一个字节字节的传啊,直接把0 move给DB31.DBD0,不就一下赋值了4个字节么,嘿嘿。

关于问题补充:
是的,当然也可以使用SFC20,具体就如你所说。但是用SFC21是否更简单呢,你只需找一个等于0的值填充到目标区域中即可了,这样不就省了建立一个数据块了么。

提问者对于答案的评价:
非常感谢两位的精彩点评!

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2018年12月1日
下一篇 2018年12月1日

相关推荐