WINCC7.0内部变量如何掉电保持?

试过"项目范围内更新","计算机本地更新","运行系统保持"这些选项,都不行.
是不是只能使用脚本把变量值写到硬盘文件,在启动时读取,希望提供代码,谢谢!!!

问题补充:
手动取消激活时可以保存吗?
我打算给工控机增加UPS电源,不会突然掉电了.
因为系统运行一段时间,会暴露出BUG,需要停机维护(例如:结构变量在运行状态似乎不能更改),系统某些设置保存在内部变量里比较方便,但停机后再启动,这些设置都无效了,重新设置比较麻烦.

最佳答案

C脚本比较普遍:
  退出是保存
#include "apdefap.h"
void Click(char* lpszPictureName, char* lpszObjectName )
{
// WINCC:TAGNAME_SECTION_START
// syntax: #define TagNameInAction "DMTagName"
// next TagID : 1
// WINCC:TAGNAME_SECTION_END
int abc;
char* Message = (char*) malloc(512);
struct tiaojie
  {
      int zishoukg;
      float shousheding;
      float zisheding;
    };
 struct shoudong
  {  
      int zishoukg;
      float shousheding;
   };
struct baojing
   {
         float gaobaoj;
         float dibaoj;
         float zisheding;
         int zishoukg;
     };
struct tiaojie pic[4];
struct baojing yewei[2];
struct shoudong pinglv[6];
FILE *fp1,*fp2, *fp3;
strcpy(Message,"\r\n确定退出吗?\r\n");

abc=MessageBox(NULL,Message,"MessageBox",1|MB_SYSTEMMODAL);
if (abc==1)
{
   pic[0].zisheding=GetTagFloat("sd_pic201a"); //tiaojie start
   pic[0].shousheding=GetTagFloat("sd_pic201ak"); 
  if((GetTagWord("WCword5IN"))&&1)
       {  pic[0].zishoukg=1;}
   else
      { pic[0].zishoukg=0;}

   pic[1].zisheding=GetTagFloat("sd_pic201b"); 
   pic[1].shousheding=GetTagFloat("sd_pic201bk"); 
  if((GetTagWord("WCword5IN"))&&4) 
       {  pic[1].zishoukg=1;}
   else
      { pic[1].zishoukg=0;}

   pic[2].zisheding=GetTagFloat("sd_pic205a"); 
   pic[2].shousheding=GetTagFloat("sd_pic205ak"); 
  if((GetTagWord("WCword5IN"))&&2)
       {  pic[2].zishoukg=1;}
   else
      { pic[2].zishoukg=0;}

   pic[3].zisheding=GetTagFloat("sd_pic205b"); 
   pic[3].shousheding=GetTagFloat("sd_pic205bk"); 
  if((GetTagWord("WCword5IN"))&&8) 
       {  pic[3].zishoukg=1;}
   else
      { pic[3].zishoukg=0;}
   fp1=fopen("D:\\DATA\\tiaoj.txt","wb+");
   if(fp1!=NULL)
    {  
    fwrite(pic,sizeof(struct tiaojie),4,fp1);                           //tiaojie  end
     }
    yewei[0].zisheding=GetTagFloat("sd_v0103a");
    yewei[0].gaobaoj=GetTagFloat("gb_v0103a");
    yewei[0].dibaoj=GetTagFloat("db_v0103a");
  if((GetTagWord("WCword5IN"))&&40)
     { yewei[0].zishoukg=1;}
   else
     {yewei[0].zishoukg=0;}

    yewei[1].zisheding=GetTagFloat("sd_v0104a");
    yewei[1].gaobaoj=GetTagFloat("gb_v0104a");
    yewei[1].dibaoj=GetTagFloat("db_v0104a");
  if((GetTagWord("WCword5IN"))&&100)
     { yewei[1].zishoukg=1;}
   else
     {yewei[1].zishoukg=0;}
   fp2=fopen("D:\\DATA\\baoj.txt","wb+");
   if(fp2!=NULL)
    {  
    fwrite(yewei,sizeof(struct baojing),2,fp2);         //yewei end
     }
  pinglv[0].shousheding=GetTagFloat("sdpl_p0100");     //shoudong start
  pinglv[0].zishoukg=0;
  pinglv[1].shousheding=GetTagFloat("sdpl_p0102a");
  pinglv[1].zishoukg=0;
  pinglv[2].shousheding=GetTagFloat("sdpl_p0103a");
  pinglv[2].zishoukg=0;
  pinglv[3].shousheding=GetTagFloat("sdpl_p0103b");
  pinglv[3].zishoukg=0;
  pinglv[4].shousheding=GetTagFloat("sdpl_m201a");
  pinglv[4].zishoukg=0;
  pinglv[5].shousheding=GetTagFloat("sdpl_m201b");
  pinglv[5].zishoukg=0;
  fp3=fopen("D:\\DATA\\shoud.txt","wb+");
   if(fp3!=NULL)
    {  
    fwrite(pinglv,sizeof(struct shoudong),6,fp3);           //shoudong end
     }   
   fclose(fp3);
   fclose(fp2);
   fclose(fp1);
SetTagBit("Exit_Flag",0); 
ExitWinCC();
}

// WINCC:PICNAME_SECTION_START
// syntax: #define PicNameInAction "PictureName"
// next PicID : 1
// WINCC:PICNAME_SECTION_END
}
读取时结构基本一样,只是命令不一样FREAD(),取数据处理

提问者对于答案的评价:
谢谢

专家置评

对于 WinCC V7.0 可以参考 文静东东 的方法。

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2019年6月11日
下一篇 2019年6月11日

相关推荐

  • WINCC如何弹出画面

    我用的WINCC6.2中文,想用里面的菜单和工具栏,实现下拉选项弹出画面编辑器里做的画面?应该如做做,还需要第三方控件吗? 最佳答案 给个程序,希望对你有用 #inclu…

    SIMATIC WinCC 2019年6月11日
  • wincc用户归档无法写入

    想使用用户归档建立一个配方,编辑好配方后下载到对应的变量里,为啥提示无法写入呢? 图片说明:    最佳答案 WinCC V7.3用户归档入门指南ht…

    2020年11月1日
  • 关于wincc打开时显示“未找到有效的许可证密钥”

    这是怎么回事?以前用着没有问题啊!有段时间不用了,昨天打开的时候就出现了这种情况! 最佳答案 你安装授权没有,如果没安装,以前可以是用的15天的试用授权. 如果你安装了,…

    SIMATIC WinCC 2019年6月11日
  • 关于WINCC 6.0 SP1问题

    我装的是XP系统。WINCC是6.0 SP1版本请问:为什么每次取消激活退出WINCC时候 总出现 RedundancyControl.exe呢。另外…

    SIMATIC WinCC 2019年6月11日
  • HMI数据输入键盘怎样调整大小?

    HMI数据输入键盘怎样调整大小?谢谢 最佳答案 这个应该是不可以调整的,当点击输入框时就会自动跳出的。如果操作不便就配个触摸笔吧。 提问者对于答案的评价:影响不是很大,先这样吧

    SIMATIC WinCC 2019年6月11日
  • wincc项目移到自己电脑,并更改电脑名称后,无法连接数据库

    如题 问题补充:我是将原来的西门子服务器GHOST后还原到一台新电脑上,可以正常运行,但将WINCC及电脑名称更新后,就不能连接数据了,麻烦各位高手了! 最佳答案 更改电脑名称?还…

    SIMATIC WinCC 2019年6月11日
  • 关于wincc脚本指令的问题

    那位大牛有wincc中c语言脚本的命令含义的汇总手册,麻烦发我一份,最好带有指令后面参数的详细解析,谢谢1287751010@qq.com 最佳答案 参考资料:http://wen…

    SIMATIC WinCC 2021年7月5日
  • 如何用C#读取wincc数据

    大家好!请问如何用如何用C#读取wincc数据(我们用的1500PLC):1.有哪几种方式?2.哪种比价好?2.有相关资料和案例吗? 最佳答案 http://www.ad.siem…

    SIMATIC WinCC 2021年7月5日
  • WINCC一个简单C脚本,控制图片显示的问题

    想做一个火苗简单循环显示,如图,共4个图片,做了个C脚本,让4个图片由变量“a”控制图片显示,C脚本功能为“a”从0-3循环,4个图片从左向右,分别为"a"是0…

    2017年8月15日
  • wincc数据查询问题

    请问wincc数据查询功能是怎样实现,即要实现以下功能: 用s7-300的PLC读取客户的用电量,在wincc上做一个查询窗口,输入查询时间段,即可以查出某一个时间段内的…

    SIMATIC WinCC 2019年6月11日