如何将DB块中的实际值恢复为初始值? 点击:5984 | 回复:8



努力学习者

    
  • 精华:2帖
  • 求助:337帖
  • 帖子:367帖 | 395回
  • 年度积分:1
  • 历史总积分:3608
  • 注册:2007年7月30日
发表于:2012-08-08 15:36:08
楼主
有没有办法通过程序直接将多遍调用后DB块中的实际值恢复为初始值?比如某个FB运行了一遍之后自动将背景DB中的·实际值恢复为初始值?



阿水--王者之师

  • 精华:23帖
  • 求助:347帖
  • 帖子:1611帖 | 22281回
  • 年度积分:37
  • 历史总积分:98482
  • 注册:2007年3月22日
发表于:2012-08-08 19:58:25
1楼
    那你就做一个 MOVE 块吧,将 DB 块中所有的值 改为你想要的参数就行 !

EBN战略军团-小刘

  • 精华:0帖
  • 求助:1帖
  • 帖子:4帖 | 97回
  • 年度积分:2
  • 历史总积分:830
  • 注册:2008年9月20日
发表于:2012-08-08 20:29:40
2楼

打开DB块

在“视图”菜单下选择:数据视图

在“编辑”菜单下选择:将数据块初始化

保存DB块,下载DB块,选择覆盖。

GAME  over!

miy_gongkong

  • 精华:0帖
  • 求助:2帖
  • 帖子:23帖 | 3065回
  • 年度积分:0
  • 历史总积分:12421
  • 注册:2008年9月18日
发表于:2012-08-09 10:22:48
3楼
引用 EBN战略军团-小刘 的回复内容:打开DB块在“视图”菜单下选择:数据视图在“编辑”菜单下选择:将数据块初始化保存DB块,下载DB块,选择覆盖。GAME  over!



楼主是说 在程序的任意地方, 动态初始化  ,这个就只能用 MOVE 块 了!

努力学习者

  • 精华:2帖
  • 求助:337帖
  • 帖子:367帖 | 395回
  • 年度积分:1
  • 历史总积分:3608
  • 注册:2007年7月30日
发表于:2012-08-10 16:04:35
4楼
引用 miy_gongkong 的回复内容:引用 EBN战略军团-小刘 的回复内容:打开DB块在“视图”菜单下选择:数据视图在“编辑”菜单下选择:将数据块初始化保存DB块,下载DB块,选择覆盖。GAME  over!楼主是说 在程序的任意地方, 动态初始化  ,这个就只能用 MOVE 块 了!


对,就是这意思,我程序好长的,设计参数相当多,用MOVE那岂不是又要拉大好大一串,可以用STL么,直接L 0 然后T 给其它的参数?

老盖

  • 精华:0帖
  • 求助:1帖
  • 帖子:11帖 | 281回
  • 年度积分:0
  • 历史总积分:664
  • 注册:2004年10月14日
发表于:2012-08-10 17:39:10
5楼

弄个块,专门存放原始数据,然后需要时用指针、blkmove fill或者自个写,传递给需要初始化的块

EBN战略军团-小刘

  • 精华:0帖
  • 求助:1帖
  • 帖子:4帖 | 97回
  • 年度积分:2
  • 历史总积分:830
  • 注册:2008年9月20日
发表于:2012-08-10 17:42:17
6楼
考虑SFC20吧,这个能满足你的要求

miy_gongkong

  • 精华:0帖
  • 求助:2帖
  • 帖子:23帖 | 3065回
  • 年度积分:0
  • 历史总积分:12421
  • 注册:2008年9月18日
发表于:2012-08-12 11:57:44
7楼

引用 努力学习者 的回复内容:引用 miy_gongkong 的回复内容:引用 EBN战略军团-小刘 的回复内容:打开DB块在“视图”菜单下选择:数据视图在“编辑”菜单下选择:将数据块初始化保存DB块,下载DB块,选择覆盖。GAME  over!楼主是说 在程序的任意地方, 动态初始化  ,这个就只能用 MOVE 块 了! 对,就是这意思,我程序好长的,设计参数相当多,用MOVE那岂不是又要拉大好大一串,可以用STL么,直接L 0 然后T 给其它的参数?



其实楼主 可以再FB块内部 做一段初始化程序, 假设 做一个 输入变量 init , 当init 为1 时,就给变量赋值为0,其他程序不执行,当 init 为 0 时,不进行初始化,其他程序正常执行, 也就是说 外部参数 控制 init 变量进行初始化,在一个扫描周期内完成;

 

我原来做的 程序(SCL)示例 如下:

 

VAR_INPUT
     Init:BOOL;
END_VAR

 

  VAR_IN_OUT
    bInit:BOOL;             // temp

END_VAR

 

BEGIN

(*初始化段*)
 IF Init=TRUE THEN

       IF bInit=FALSE THEN

            bInit:=TRUE;        (* 确保 每次初始化程序 只执行 一个扫描周期  *);

            LastOFFValue:=0;
            dReg:=0;
            dReg2:=0;
            dReg3:=0;
            EncodeOut:=0;
            dResetValue:=0;

         END_IF;
ELSE

(*    程序处理段*)
.............

.................

END_IF;

 

 

siyuan3222

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 170回
  • 年度积分:0
  • 历史总积分:627
  • 注册:2007年10月23日
发表于:2012-08-12 20:17:49
8楼

如果是简单的用MOVE酒可以了吧,SFC20没用过,去看看去


热门招聘
相关主题

官方公众号

智造工程师