目录
一 软件安装说明
说明,若计算机名错误,也可直接更改,不用重新恢复系统
参考以下链接
- 先更改计算机名
- 开始-->启动SQL Server Management Studio,断开连接,更改要连接的计算机名
- 更改WinCC项目中“计算机”名
二 设置PG/PC接口
进入控制面板,SET PG/PC,选择”Add/Delete”,新建访问点名,之后关联相应网卡。
三 变量管理
新建S7-1200/1500驱动,之后新建连接,并设置连接参数,参考如下
说明,WinCC 7.2只支持绝对地址寻址,这样即要求再TIA博图软件中,将相应DB块属性中“优化的块访问”取消勾选。
设置变量当前值显示方式,按下图方式,选择”值”,则在WinCC启动时会看到值
四 报警相关设置
报警列添加,可根据厂区、产线、设备进行报警位置划分,便于快速排查问题
如下图,在报警记录-->消息块-->用户文本块中添加块3,块4
更名为产线和单元,见下图
在图形画面中添加报警控件
右键打开报警控件属性,在“消息列表”一项中,将”产线”和”单元”添加到选定消息块中,确认后,效果如下图所示
之后在报警列表里会出现所设置的“列表”选型
注意要在WinCC中,右键,计算机属性,”启动”项中勾选相应选项
或运行报警有错,按下面方法排除
报警消息过滤
- 固定过滤条件
即根据需要创建多个报警窗口,每个窗口在消息列表à固定选择à编辑,中单独选择,并设定选择条件,如下图所示
- 动态过滤条件
即只创建一个报警窗口,但在”选择”-->编辑,中创建不同的选择条件,这样在实际应用中,再根据需要,在组态动画框中选择需要查看的选项
不同设置方法,测试效果图,如下
读取PLC系统报警,待测试
读取PLC报警,待测试
五 WinCC配方创建方法
采用WinCC User Archive控件(用户归档)
控制变量用于WinCC用户归档数据用户归档数据的增加,修改和删除
- 用户自定义数据表格和视图à记录字符串
- 在数据库和自动化系统传送数据记录(配方)à保证数据记录的一致性
创建变量,本例由于未连接PLC,故在WinCC中创建变量,参考如下
WinCC中“用户归档”,新建归档,输入名称
选择创建,之后系统会自动生成4个变量
之后会提示添加域,选择是,进行添加
创建域名 Product,类型为字符串,关联变量
设置域 Temperature,这里可设置起始值,即默认值
再创建域 Pressure
之后保存,并点击“运行系统数据”
在画面中,创建如下画面,并添加“WinCC UserArchiveControl”控制,并在“用户归档”中选择UA5,如下
WinCC 计算机启动列表中,勾选图形运行系统和用户归档
测试效果如下图
六 使用“状态显示”对象创建动画
使用WinCC的“状态显示”,通过关联一系列的图片,生成动画。
主要相当于通过一个变量中不同值,调取不同的图片
http://www.ad.siemens.com.cn/service/elearning/cn/VideoBig.aspx?CourseID=683
创建两个变量,一个数据类型为位,另一个为数值
将相关图片考入到项目GraCS文件夹中
在页面中,新建“状态显示”,将变量链接为“PhotoNum”,修改更新周期
在“状态显示”属性中,属性,状态,基本画面中,按值顺序添加相应图片
全部添加完成后,效果如下图
之后在本画面,右键调出属性,对 事件à其它à打开画面,右键选择C动作,之后添加代码,编译并确定,如下
SetTagBit("PhotoStart",1);
SetTagWord("PhotoNum",0);
之后在”属性”,其它,显示部分添加C代码
int a,b;
a=GetTagBit("PhotoStart");
if (a==1)
{b=GetTagWord("PhotoNum");
if (b>5) b=0;
SetTagWord("PhotoNum",b+1);
}
else
SetTagBit("Photo",0);
return 0;
之后在画面中,创建“开始”和“停止”按钮,并分别在按钮属性-->事件-->鼠标-->按左键,部分添加C代码
SetTagBit("PhotoStart",1);
SetTagBit("PhotoStart",0);
七 WinCC中组合框、复选框、选项组的应用
创建组合框à属性à其它à之后设定“选定框”的值和“选定文本”的内容,之后将选定框值关联到变量,并设定更新周期,如本例中”SetNum1”
注意:在左侧属性à几何à行数中可设定组合框的行数
创建复选框-->属性-->输出/输入-->设定关联变量,设置更新周期
之后在 字体-->索引,和文本项设置相应值
创建选项框-->参考复选框创建方法即可
八 画面制作
画中画制作
创建两个画面,其中小画面设置画面宽度和高度
小画面中创建一个按钮,用于隐藏小画面,设置如下,表示当点击该按钮时子画面隐藏
子画面其它内容自行添加
大画面中创建一个按钮和一个“画面窗口”,设置如下,表示当点击该按钮时,子画面显示
之后设置“画面窗口”的几何属性,即宽度和高度,之后,在属性à其它à画面名称中选择要显示的子画面名,并可对其它属性进行设置,如是否可移动,大小是否可调整,是否含标题及标题内容等进行设置。
例子效果如下图
用模板的方式做相同的画面
九 WINCC用户权限管理
制作两个按钮,一个“登录”,一个“注销”
登录按钮
“鼠标左键”,添加C代码
#pragma code("useadmin.dll")
#include "PWRT_api.h"
#pragma code()
PWRTLogin('c');
注销按钮
“鼠标左键”,添加C代码
#pragma code("useadmin.dll")
#include "PWRT_api.h"
#pragma code()
PWRTLogout();
制作一个IO输入输出域,利用wincc自带的系统变量 @CurrentUserName (已登录用户名),用来表示已登录用户名;
在WinCC左侧树形图中,“用户管理器”,创建相应的用户名和密码;
若要实现WINCC运行当中添加或删除用户及更改密码,可通过添加Wincc UserAdminControl控件进行实现。
参考网站:
http://blog.sina.com.cn/s/blog_1359616830102uztk.html
其它
退出WinCC画面,C代码
DeactivateRTProject();
输入输出域,通过更改数据格式,可选择不同的输入方式,及也可以输入字母
设置WinCC项目开机自启动
按钮制作
用C程序
SetTagBit("PhotoStart",1);
SetTagBit("PhotoStart",0);
按左键时,设变量为1
释放左键时,设变量为0
注意事项:
需将按钮或状态的属性中,效果,全局颜色方案选择为“否”,否则看不出自定义的颜色效果
其它:用C语言实现单按钮启停功能
SetTagBit("Start6",1-GetTagBit("Start6"));
西门子官网关于C脚本应用案例
WinCC 使用C脚本写变量
WinCC所提供的C脚本中,使用函数来写变量的值,例如按钮动作中同时給2个变量赋值,就只能使用脚本,C脚本是一个不错的选择,函数使用简单。
以下是写函数名称,以及对应的数据类型,双引号中Tag_Name替换成所要写的变量名称,value替换成所要写的值。
SetTagBit(“Tag_Name”, value) 二进制变量
SetTagByte(“Tag_Name”, value) 无符号8位值
SetTagWord(“Tag_Name”, value) 无符号16位值
SetTagSWord(“Tag_Name”, value) 有符号16位值
SetTagDWord(“Tag_Name”, value) 无符号32位值
SetTagFloat(“Tag_Name”, value) 32位浮点数
问题记录
问题1:超过16位的字符集如何输入到WinCC中
答:该问题已找出,不是超过16位的不能显示,可以显示,而是由于扫码枪扫出来的数据是分行的,所以只显示了最后一行。
问题2:如果通过组合框,给相应变量赋值(或赋字符串)
目前实现的方法比较笨拙,用两个变量,一个存值,另外一个存想要的变量
SetTagChar("SelectType_4","");
if (GetTagDWord("SelectNum_4")==1) {SetTagChar("SelectType_4","16X5.5"); //Return-Type: BOOL }
if (GetTagDWord("SelectNum_4")==2) {SetTagChar("SelectType_4","17.5X6.0"); //Return-Type: BOOL }
if (GetTagDWord("SelectNum_4")==3) {SetTagChar("SelectType_4","19.5X7.5"); //Return-Type: BOOL }
if (GetTagDWord("SelectNum_4")==4) {SetTagChar("SelectType_4","22.5X7.5"); //Return-Type: BOOL }
if (GetTagDWord("SelectNum_4")==5) {SetTagChar("SelectType_4","22.5X8.25"); //Return-Type: BOOL }
if (GetTagDWord("SelectNum_4")==6) {SetTagChar("SelectType_4","22.5X9.00"); //Return-Type: BOOL }
if (GetTagDWord("SelectNum_4")==7) {SetTagChar("SelectType_4","22.5X11.75"); //Return-Type: BOOL }
if (GetTagDWord("SelectNum_4")==8) {SetTagChar("SelectType_4","22.5X14.00"); //Return-Type: BOOL }
if (GetTagDWord("SelectNum_4")==9) {SetTagChar("SelectType_4","24.5X8.25"); //Return-Type: BOOL }
问题3 字符串如何合并
char buffer[256]="";
strcat(buffer,GetTagChar("Char1"));
strcat(buffer,GetTagChar("Char2"));
SetTagChar("Char3",buffer);