关于wincc 趋势,C脚本的问题请教。

问题1:想做历史趋势画面,加了2个控件,随意控制曲线名称,以后可以重复利用的。
 以下是自己参考论坛里的资料的写的,觉得不怎么好,想改进一下:
 请问:1.我手动对曲线的属性修改,如曲线颜色,时间宽度,起始时间等等,其实我想知道这些属性、参数值的写法(最好把常用的属性及其参数值说多点)
       2.麻烦把对下面的代码写法完善一点。现在只是简单的实现功能,如果设置时间什么的,还要到里面设置,比较繁琐。
       3.查归档时,发现无法查询前天的数据,这是为什么啊?是不是我的归档设置里的数据库设置小了啊?我想查询半月或更长的应该怎么设置。

 这是一条曲线的代码
 Sub OnClick(Byval Item)                          
 Dim trendObj1,trendObj2
 Set trendObj1=ScreenItems("Control1")
 Set trendObj2=ScreenItems("Control2")
 trendObj1.Visible = True
 trendObj2.Visible = False

 trendObj1.Caption ="Ractor/Level_PID1.PV_IN"
 trendObj1.TagName ="AS08_server::SystemArchive\Ractor/Level_PID1.PV_IN"

 End Sub

 这是三条曲线的代码
 Sub OnClick(ByVal Item)                        
 Dim trendObj1,trendObj2
 Set trendObj1=ScreenItems("Control1")
 Set trendObj2=ScreenItems("Control2")
 trendObj1.Visible = False
 trendObj2.Visible = True
 trendObj2.Caption ="PID"
 trendObj2.Index = 0
 trendObj2.TagName ="AS08_server::SystemArchive\Ractor/Level_PID1.PV_IN"
 trendObj2.Index = 1
 trendObj2.TagName ="AS08_server::SystemArchive\Ractor/Level_PID1.SP"
 trendObj2.Index = 2
 trendObj2.TagName ="AS08_server::SystemArchive\Ractor/Level_PID1.LMN"
 End Sub

 问题2
 参考:http://www.ad.siemens.com.cn/service/answer/solution.asp?Q_id=26590&cid=1032 我对块的SMC属性修改后(对某一阀门块FB73进行了修改),pcs7编译发现所有的块都不能上传了,编译后出现一警告,意思是对变量作了比较,不一致什么的。后来我恢复原样后,又好了。(有些属性我知道是不能取消的,所以我选了不重要的变量) 请问这是什么原因啊?

 问题3
 请教一段c脚本函数 function(bool a,bool b,bool c),返回真假就可以啦,想在变量的动态对话框中直接调用全局C函数,就是求几个bool量的或值。

问题补充:
dcount107 你好,我在全局库中改了后,复制后拷贝到AS项目块中,发现还是不行,编译后记录中有:
  列出过程标签的参数:
  BA_EN BA_ID BA_NA HYS MO_PVHR MO_PVLR MSG_LOCK M_SUP_AH M_SUP_AL M_SUP_WH M_SUP_WL OCCUPIED OOS QERR QMSG_SUP STEP_NO U U_AH U_AL U_WH U_WL VSTATUS 

  操作员控制连接列表:
  BA_EN BA_ID BA_NA HYS MO_PVHR MO_PVLR MSG_LOCK M_SUP_AH M_SUP_AL M_SUP_WH M_SUP_WL          OOS QERR QMSG_SUP STEP_NO U U_AH U_AL U_WH U_WL VSTATUS 

  *** 出错 ***: 结构化 DM 变量 Ractor/Level_PID1_PV(类型 MEAS_MON)的 参数数量与操作员控制的连接数量不匹配。 是否要显示日志?
  请问这怎么解决?是不是更新的方法不对。顺便问下,全局库中修改了后,怎么更新所有子项目中的块。
 找到了,在blocks/options/charts/update 吧?对所有的AS进行统一的更新。
 

最佳答案

你的问题还真多啊,呵呵。
  问题1:
  1.VBS支持自动列出对象属性的,常用的有Color(曲线颜色,和Index配合使用),BeginTime(起始时间,格式yyyy-mm-dd HH:MM:SS),EndTime(结束时间,格式yyyy-mm-dd HH:MM:SS),这些在帮助中都有。
  2.我印象中VBS做不到动态设置OnlineTrend的时间段。C脚本倒是没有问题。如果你用VBS实现了请别忘了告诉我,^_^!
   SetPropDouble(lpszPictureName,"OnlineTrend1","Online",0); '停止更新
   SetPropDouble(lpszPictureName,"OnlineTrend1","Timerange",0); 
   SetPropChar(lpszPictureName,"OnlineTrend1","BeginTime","2008-9-11 22:10:0"); ’设置起始时间
   SetPropChar(lpszPictureName,"OnlineTrend1","EndTime","2008-9-11 22:11:00");  '设置终止时间
   SetPropDouble(lpszPictureName,"OnlineTrend1","Activate",0);  '
   SetPropDouble(lpszPictureName,"OnlineTrend1","Activate",1);  '更新数据,VBS中的Activate与此意义不同,我想这可能是VBS无法实现的原因吧。

  3.应该是你设置的太小了。到变量记录中,选择归档名称,选择快速归档,查看单个/所有分段的时间段设置。

  问题2:你可能没改好。修改FBxx块应当是在"项目_Lib"中修改,然后统一更新。

  问题3:你要的是这个吗?
  BOOL TestFunc(BOOL a,BOOL b,BOOL c)
  {
   return (a||b||c); 
  }
  其实这个根本用不着编写函数,动态对话框中直接写就可以,'TagA'||'TagB'||'TagC' 。

 补充:修改Lib中的FB_xx后,再拖一个到CFC中,根据系统提示替换现有块,最后完全编译一次。但我没有用过Ractor块,不知道WinCC的面板是否引用了哪些变量,因此我建议你还是不要随意修改的好。

提问者对于答案的评价:
问题基本上搞清楚了。谢谢您。ractor块是西门子的仿真块,培训的时候拷过来的,不是系统带的。

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

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

相关推荐