如何在OB100中编写程序,在启动时将DB块中的数据全部清零 点击:4416 | 回复:15



浪子828

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 6回
  • 年度积分:0
  • 历史总积分:37
  • 注册:2005年1月14日
发表于:2008-05-31 22:26:13
楼主
如何在OB100中编写程序,在启动时将DB块中的数据全部清零

编写程序用了大量的DB块(包括共享和背景DB),在PLC运行中以外掉电时DB块中的数据保持,在PLC重新上电时,程序仍按掉电前DB块中数据的状态值运行,导致系统运行混乱,并且具有一定的危险。本人希望在DB100中编写一段程序,实现PLC启动时将所有DB块中的数据清零,包括位和字、实数之类的。本人考虑过用CLR位清零指令,无奈程序量太大,有没有其他的方法?
谢谢大家了,小弟学习中。



举一反三

  • 精华:0帖
  • 求助:0帖
  • 帖子:15帖 | 201回
  • 年度积分:0
  • 历史总积分:501
  • 注册:2005年1月11日
发表于:2008-06-02 08:04:09
1楼

用传送指令将0传送到字节,字,双字中就OK。

liu xianghou

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 195回
  • 年度积分:0
  • 历史总积分:179
  • 注册:2007年8月17日
发表于:2008-06-02 13:44:22
2楼
只要将不想保持的DB块设置成“不保持”就可以了,PLC就不会保持它的数据,启动后是初值

little king

  • 精华:0帖
  • 求助:0帖
  • 帖子:16帖 | 26回
  • 年度积分:0
  • 历史总积分:81
  • 注册:2007年10月13日
发表于:2008-06-02 20:43:25
3楼

DB块还有这个功能啊?我也正为这个问题想办法呢,哈哈 太谢谢了!

千山独步

  • 精华:0帖
  • 求助:0帖
  • 帖子:159帖 | 3098回
  • 年度积分:4
  • 历史总积分:21261
  • 注册:2007年2月02日
发表于:2008-06-03 02:10:52
4楼

当CPU进行一次冷启动后,才会将所设置的DB块中的数据"不保持",而楼主所说的在PLC重新上电的过程实际是暖启动呀,除非更改CPU属性.

yuanle

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 10208回
  • 年度积分:2747
  • 历史总积分:48332
  • 注册:2005年4月22日
发表于:2008-06-03 05:57:46
5楼

如果是300系列的PLC,那麽就無法更改DB塊的屬性,請在使用FC編寫一個對DB清零的程式,方法很簡單,使用STL進行間接尋址,加上循環,重復給DB填寫0,而將DB的長度作爲循環次數。在OB100中調用該FC就可以了。

 

以上!

RANL4256

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 2810回
  • 年度积分:0
  • 历史总积分:4414
  • 注册:2004年9月30日
发表于:2008-06-03 07:30:11
6楼
帮顶                       

疯狂的石头2

  • 精华:3帖
  • 求助:0帖
  • 帖子:113帖 | 3966回
  • 年度积分:0
  • 历史总积分:9364
  • 注册:2006年7月15日
发表于:2008-06-03 08:15:15
7楼
楼上的方法不错哈!!!!

知秋

  • 精华:0帖
  • 求助:0帖
  • 帖子:28帖 | 738回
  • 年度积分:0
  • 历史总积分:4952
  • 注册:2004年1月04日
发表于:2008-06-03 09:11:16
8楼
不错,的确是个好办法!

金粟兰看法

  • 精华:0帖
  • 求助:0帖
  • 帖子:18帖 | 479回
  • 年度积分:0
  • 历史总积分:975
  • 注册:2006年8月23日
发表于:2008-06-03 10:04:00
9楼
yuanle,高手.正解!!!!

小洋人

  • 精华:0帖
  • 求助:3帖
  • 帖子:18帖 | 88回
  • 年度积分:0
  • 历史总积分:375
  • 注册:2006年3月22日
发表于:2008-06-03 17:21:06
10楼

按照5楼的方法做吧,我认为这是最好的方法。

little king

  • 精华:0帖
  • 求助:0帖
  • 帖子:16帖 | 26回
  • 年度积分:0
  • 历史总积分:81
  • 注册:2007年10月13日
发表于:2008-06-05 22:06:43
11楼
这样啊,真是太好了,我晓得了!

huangyoufu

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 1083回
  • 年度积分:0
  • 历史总积分:1224
  • 注册:2006年9月23日
发表于:2008-06-06 21:33:33
12楼
真是太好了,我晓得了!

VIP用户

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 59回
  • 年度积分:0
  • 历史总积分:165
  • 注册:2006年10月02日
发表于:2008-06-14 22:07:42
13楼
引用yuanle 的回复内容:

如果是300系列的PLC,那麽就無法更改DB塊的屬性,請在使用FC編寫一個對DB清零的程式,方法很簡單,使用STL進行間接尋址,加上循環,重復給DB填寫0,而將DB的長度作爲循環次數。在OB100中調用該FC就可以了。以上


这个方法看似有道理,但DB的数据一般来说不是清零,而是要初始化,不一定都是零。而且我特别理解不了的就是为什么要清除DB中保留的数据啊?S7设计DB就是想让CPU在热启动后能将之前的一些数据进行保留,而你又非得清除它,实在难以理解。要想完成你说的功能其实很简单,你何必用DB啊?!! 直接使用 M 不就好了吗?

chenjin27

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 3回
  • 年度积分:0
  • 历史总积分:23
  • 注册:2012年2月25日
发表于:2012-04-23 19:51:18
14楼
求高手指教如何打开ob100,新手请教

miy_gongkong

  • 精华:0帖
  • 求助:2帖
  • 帖子:23帖 | 3065回
  • 年度积分:0
  • 历史总积分:12421
  • 注册:2008年9月18日
发表于:2012-04-24 08:44:38
15楼
呵呵呵, 还是对 300 的PLC 不熟悉,  熟悉了就 好了;

热门招聘
相关主题

官方公众号

智造工程师