wincc的n个经典问题解答之四 点击:4245 | 回复:9



如火

    
  • 精华:172帖
  • 求助:0帖
  • 帖子:803帖 | 5249回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2008-04-22 13:27:31
楼主

邹彤原创,整理在一起旨在给大家提供方便!

51:多Tag传送

当需要的工艺参数超过WinCC版本限制的Tag数目,可以用嵌入式C语言编程实现多个工艺参数打包成一个Tag传送。

笔者用C语言编程解决了这一问题,基本思想就是把多个参数在下位机内存中连续排列,然后在WinCC中定义一个Tag,它的长度是多个参数之和,取得这个Tag后编程将其分成多个参数。


例如:下位机有两个参数LTN44001和LTN44023,都是16位整数,分别存放在DD99.DW146和DD99.DW148。在WinCC中定义一个外部Tag,命名为PackageTag,类型为32位整数,并联地址为DD99.DBD146,再定义两个内部Tag,名为LTN44001和LTN44023,在 Global Script(全局脚本)中C语言编程如下:

Union

{

Long Dword;

Int Word[2];

}union;

Union.Dword=GetTagDword(“PackageTag”);

SetTagWord(“LTN44001”,Union.Word[0]);

SetTagWord(“LTN44023”,Union.Word[0]);

这样,两个参数LTN44001和LTN44023就通过一个Tag传送上来了。理论上只要下位机内存足够,可以传送任意数量的参数而不受WinCC版本外部Tag数目的限制。



52 弹出窗口

在WinCC中的Graphics Designer 不能制作弹出窗口,这一功能可以按下列步骤来实现:

第一步:制作好弹出窗口的画面。

第二步:在流程图中准备弹出窗口的位置插入一个与弹出窗口画面同样大小的 Picture Window。

第三步:将Picture Window的Miscellaneous Picture Name 设为弹出窗口画面。将其 Miscellaneous Display属性与一个Binary类型的InternalTag 相关联。



使这个 Binary Tag置1,弹出窗口;清0,弹出窗口消失。这样就实现了弹出窗口的功能。另外,在第二步,可以将Picture Window置于另一层(Layer),使它不至于遮盖住流程图。 



53 自动启动

为了实现WinCC监控系统的自动运行,保证安全性,笔者希望上位机一启动就进入组态的工艺画面,而这一功能可以按下面的步骤实现:

第一步:将WinCC软件的快捷方式放进WinNT StartProgram中的Startup菜单。

第二步:进入WinCC的Computer Properties设置窗口,点击Graphies-Runtime菜单条,将Start Picture设为自动进入的画面。

第三步:将WinCC置为Active状态,然后退出WinCC。

再重新启动,就可以自动进入工艺画面。



54 禁止Windows系统热键

WinCC是WinNT应用软件,而WinNT是一个多任务操作系统。在WinCC运行过程中,如果启动其它程序,可能对系统产生不良影响,所以必须禁止WinNT的系统热键,防止发生这种状况。



进入WinCC的Computer Properties设置窗口,点击Parameters菜单条,在Disable Keys栏将Ctrl+Alt+Del、Alt+Tab、Ctrl+Esc、Alt+ Esc前的方框打勾,就可以在WinCC中禁止这些热键,再结合前述的自动启动的方法,可以保证计算机只能运行WinCC。



55 在工艺画面中用I/O Field(域)来显示工艺参数,I/O Field与该工艺参数的Tag相关联属性设置

设置关联属性时,有一项Updatecycle(更新周期)非常关键。WinCC是通过MPI/DP通讯从下位机取得数据的,如果Updatecycle取得过小,通讯负担就很重,造成系统整体性能下降。所以,在满足需要的前提下,可针对不同的工艺参数Tag,设置适当的Updatecycle,比如温度取20秒,压力取5秒,流量取2秒等,以减轻通讯负荷。



56:C语言编程时,如用到用户编写的函数,那么在调用该函数的程序中必须增加一条语句。

//include “APDEFAP.H”

否则,编译时找不到该函数。

57:使用的为WINCC V6.0 ,将打WINCC项目用项目复制器拷到计算机后,打开WINCC的图形编辑器后,出现错误提示如下:StgOpenStorage hr+ 80030002 There are insufficient resources to open another shared file

打开注册表编辑器(运行regedit),在下面所所示的键
HKEY_LOCAL_MACHINE\SOFTWARE\SIEMENS\WinCC\GraphicsDesigner\DynamicWizard下新建字符串:
名称为database,
值为d:\ProgramFiles\Siemens\WinCC\WSCRIPTS\Dynwiz.dwd
说明:值不一定要为d:\ProgramFiles\Siemens\WinCC\WSCRIPTS\Dynwiz.dwd
要根据个人安装WINCC的路径而定。




yonggua

  • 精华:0帖
  • 求助:0帖
  • 帖子:26帖 | 649回
  • 年度积分:0
  • 历史总积分:2334
  • 注册:2001年12月14日
发表于:2008-04-22 16:28:51
1楼

真的是好东西,对实际工程很有帮助。

zhachengguang

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 9回
  • 年度积分:0
  • 历史总积分:112
  • 注册:2006年6月04日
发表于:2008-04-29 21:58:39
2楼

hao!对初学者是个很好的启蒙

 

qhq312

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 2回
  • 年度积分:0
  • 历史总积分:2
  • 注册:2008年6月04日
发表于:2008-06-04 18:32:01
3楼

厉害 大虾

 

ytsnwll_99

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 27回
  • 年度积分:0
  • 历史总积分:227
  • 注册:2006年4月08日
发表于:2008-06-07 14:42:43
4楼

真的是好东西.  谢谢

 

呆板吧

  • 精华:0帖
  • 求助:0帖
  • 帖子:16帖 | 220回
  • 年度积分:0
  • 历史总积分:340
  • 注册:2006年4月14日
发表于:2008-06-16 10:32:43
5楼
真的是好东西,对实际工程很有帮助

miao_lei

  • 精华:0帖
  • 求助:0帖
  • 帖子:14帖 | 177回
  • 年度积分:0
  • 历史总积分:1096
  • 注册:2008年6月02日
发表于:2008-07-13 16:42:42
6楼
好东西,怎么找不到一、二、三啊?

wingwf2000

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 455回
  • 年度积分:0
  • 历史总积分:1000
  • 注册:2008年1月09日
发表于:2008-07-22 23:44:42
7楼
多个变量打包传送,再通过C脚本解码,在什么情况下速度优于直接不打包传送?

wingwf2000

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 455回
  • 年度积分:0
  • 历史总积分:1000
  • 注册:2008年1月09日
发表于:2008-07-22 23:55:47
8楼

多变量打包时,只要有一个变量发生了改变,就要及时对打包的变量进行刷新;

另外如何将一个字节的打包变量(由下位机8位组成)快速的解码到8个位变量(指wincc中的位变量,在PLC中是可以自动实现)中去?

能否象C中的共用体,只要给字节赋值,就会自动的给8个位变量赋值?

jingtao

  • 精华:2帖
  • 求助:0帖
  • 帖子:94帖 | 3205回
  • 年度积分:0
  • 历史总积分:20573
  • 注册:2007年10月31日
发表于:2008-07-28 08:59:55
9楼

真的是好东西.  谢谢        


热门招聘
相关主题

官方公众号

智造工程师