在一个大型的项目中可能会需要控制几十个阀门或者十几个电机类,这些阀门或者电机控制方式都是相同的。如果我们为每一个阀门或者电机都制作一个控制面板来控制,也是可以的只是工作过程要繁琐些。下面介绍2种控制方法,第一种是为每一个阀门或者电机配置一个控制画面,第二种是制作一个通用的控制画面,然后在主画面中通过C脚本调用这个画面。这个方法都可以实现控制,各有优缺点,第一种控制方法优点:在主画面上可以同时调出几个不同水泵或者阀门的控制面板。缺点:需要制作大量的控制面板。第二种控制方法优点:只要需要制作一个控制面板即可。缺点:制作过程有一定的复杂性。根据自己的兴趣爱好采取适合自己控制方式,下面详细介绍这2种控制过程的制作。
第一种方法:每一个控制对象配置一个控制面板
1、 先写好自己的控制程序,此处以简单的启保停为例,首先
建立一个通用的FC块。如下图所示:
FC块建好之后在OB1里面调用,并为每个管脚赋予合适地址,如下图所示:
M0.0为1#设备的启动 M1.0为2#设备的启动 M0.1为1#设备的停止 M1.1为2#设备的停止 M0.2为1#设备的输出 M1.2为2#设备的输出 至此一个简单的实验程序就建立完毕了,下面开始组态wincc信息。
首先建立一个项目,然后建立一个主画面和N个控制面板画面(N=你的控制对象的个数)。画面建立好后,开始建立变量,我实用的连接方式是MPI连接,需要进行简单参数设置后即可建立变量,此处不做演示。
变量建立后就可以与画面做关联。
如上图所示为1#、2#电机的启停及运行信号作变量连接。变量作好关联后,在主画面中组态你想要的控制对像,在主画面中需要调用画面窗口控件,具体操作方法如下图:
点击画面窗口控件后,在主面上用鼠标拖出合适大小即可。 为画面窗口关联1#、2#控制面板。具体操作方法如下图:
对准画面窗口后鼠标右击选择属性,即可弹出如图对话框,在这个对话框里可以设置一些必要的属性。根据自己的需要进行相关的设置,1#、2#配置方法相同。 设置完毕后点击运行效果如下图:
第一方法配置到此就结束了。
第二种方法配置
第二种方法需要用到脚本,这对于初学者可能有一定难度。变量建立和第一种方法就有所不同了,第一种方法是在变量管理器里面一个一个建立的变量,第二种方法就需要用到结构变量了。不知道有没有细心的,有没有发现刚才的程序地址问题?第一个控制对象实用的地址范围为:M0.0到M0.2,第二个控制对象实用的地址范围却从M1.0到M1.2。第二控制对象的地址为什么要从M1.0开始呢?为什么不是从M0.3到M0.6呢?最开始我也是不理解,不明白为什么要这样做,后来到wincc里面建立结构变量时我就明白这是为什么了,原来wincc建立结构变量时会一个结构变量最少占据一个字节。据个例子:本例中,一共需要建立三个变量,启动、停止、输出,再建变量时,数据类型选择你刚才建立的结构变量类型,设置好其他参数,点击确实我们会看到自己生成了带有前缀的三个变量,然后你再建立第2个变量时,填号名称,选择好你刚才
建立的结构变量,如果你上一个变量是从MB0这个字节开始的,那么你的第2个变量就必须从MB1字节开始,那么第1个变量就占用了MB0中的其中1个位,第二个变量也要从MB1或者其他字节开始。这就是为什么程序里面的第2个控制对象的地址为什么从M1.0开始的原因的,上面这段文字可能说的不是怎么清楚,自己可以动手试试,建立几个结构变量看看就知道怎么回事了。
1、 建立结构变量
建立结构变量时注意变量类型,开关量改为BOOL型,其他数据格式就改为其他数据格式。
2、 建立变量
名称填写你需要的名称,数据类型选择你刚才建立的结构变量的名称,地址一定要填写一定要和程序对应起来。建立结构变量时,建立的顺序也需要和程序里面用到的顺序对应起来。
如上图所示变量就建立完毕了。 3、 建立通用控制面板
通用控制面板组态完毕后,需要再操作按钮后面连接变量,在填写变量时,只需要填写变量的后面部分即可比如:“1#电机.启动”我们填写“启动”就可以了,前面的前缀不用填写,确定时会提醒你
变量没有建立,问你是否建立,无须理会直接忽略。如下图所示
按照上述方法建立其他变量连接。
4、 主画面组态
这个方法需要用到大量的脚本,具体脚本附在最后。
1#、2#电机建立好连接后,点击保存运行查看效果。静态没有运行时效果如下图:
运行后效果如下:
到此第2种方法也介绍完毕了,第二种方法好处是不用建立太多的控制面板,不好就是过程太过于复杂,凡事都是有利有弊看自己适合那种就采用那种吧!
本人也是刚用wincc不久,对于wincc更多的高级技巧也是一头雾水,希望结交wincc这方面高手(收费的算了)。知识固然重要,但
共享更重要,也许你的一句简单提醒可以让其他人少走不少冤枉路,有的时候一个人对于一个问题可能苦思几天也无结果,他人一句简单提醒也许就豁然开朗。工业自动化界朋友们,把知识共享起来,为中国的工业发展尽一份力量! 附:
程序中所用到的C脚本代码
#define TagText \"反应塔破碎机2\"//窗口标题 #define TagPrefix \"109M.\"//变量前缀 #define ObjectName \"画面窗口3\"//窗口名称
long int Hoehe, Breite, xCursor, yCursor;//窗口位置变量 xCursor=x+25; //Return-Type: long int 水平位置偏移 yCursor=y+10; //Return-Type: long int 垂直位置偏移 Breite=GetWidth(lpszPictureName,ObjectName);//获取画面高度 Hoehe=GetHeight(lpszPictureName,ObjectName);//获取画面宽度 if (xCursor>(1920-Breite))
SetLeft(lpszPictureName,ObjectName,1280-Breite); else
SetLeft(lpszPictureName,ObjectName,xCursor); if (yCursor>(1080-Hoehe))
SetTop(lpszPictureName,ObjectName,800-Hoehe); else
SetTop(lpszPictureName,ObjectName,yCursor);
SetVisible(lpszPictureName,\"画面窗口2\BOOL 关闭画面
SetVisible(lpszPictureName,\"画面窗口4\BOOL 关闭画面
SetVisible(lpszPictureName,\"画面窗口1\BOOL 关闭画面
SetVisible(lpszPictureName,\"画面窗口5\BOOL 关闭画面
SetVisible(lpszPictureName,\"画面窗口6\BOOL 关闭画面
SetVisible(lpszPictureName,\"画面窗口7\BOOL 关闭画面
SetVisible(lpszPictureName,\"画面窗口8\BOOL 关闭画面
SetVisible(lpszPictureName,\"画面窗口9\BOOL 关闭画面
SetVisible(lpszPictureName,\"画面窗口10\BOOL 关闭画面
SetPictureName(\"lpszPictureName\SetTagPrefix(lpszPictureName,ObjectName,TagPrefix); //Return-Type: BOOL 传递变量前缀
SetPropChar(lpszPictureName,ObjectName,\"CaptionText\
t );//传递窗口标题
SetVisible(lpszPictureName,ObjectName,1); //Return-Type: BOOL 打开画面
2014
能力有限,文章中有错的地方欢迎指正,以便于我改正。2714424(感悟人生)
写于:安徽 合肥 年8月4日星期一工控小子闯天下 QQ:
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- igat.cn 版权所有 赣ICP备2024042791号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务