11711800015巧用PCS7 的功能做STEP 7+WINCC的项目.docx
- 文档编号:29370663
- 上传时间:2023-07-22
- 格式:DOCX
- 页数:34
- 大小:1.13MB
11711800015巧用PCS7 的功能做STEP 7+WINCC的项目.docx
《11711800015巧用PCS7 的功能做STEP 7+WINCC的项目.docx》由会员分享,可在线阅读,更多相关《11711800015巧用PCS7 的功能做STEP 7+WINCC的项目.docx(34页珍藏版)》请在冰豆网上搜索。
11711800015巧用PCS7的功能做STEP7+WINCC的项目
巧用PCS7的功能做STEP7+WINCC的项目
(在天津站BAS系统中的应用)
李荣生
1.项目简介
天津站位于天津市河北区,通过海河东路、新广路、华兴路、新兆路与城市干道相连。
天津站为大型综合交通枢纽,站房工程主要包括新建北站房、新建地下进站厅、高架候车厅拆除及新建、既有南站房改造、新建东西侧出站地道、既有行包地道拆除及改建、无站台柱雨棚改造和站台改造等。
这个项目是采用Siemens400系列PLC通过STEP7梯形图进行编程
编成环境:
STEP7版本:
STEP7ProfessionalEdition2006SR3V5.4+SP3K5.4.3.0
WINCC版本:
WINCC6.0SP3a
2.做法简介
这个项目我们采取的做法是,下位机采用梯形图和SCL编程,上位机通过利用WINCC里面的AS-OS-Engineering工具,自动上传变量,然后利用Wincc里面的PictureTreeManager和OS-ProjectEditor工具做成PCS7的效果。
3.安装系统
安装顺序是
首先安装STEP7,如有需要可以安装S7-SCL
再安装WINCC,安装时选择手动安装AS-OS-Engineering(这个组建在WINCC安装盘内为可选安装)。
4.PLC的编程
这里列举马达块(FB2007)的编程方法
4.1FB块变量申明表的建立
变量的建立跟一般STEP7的做法相似,这里就不详细说明,不同点是要把需要的变量做成上传变量,具体做法如下:
右击需要上传的变量,点击ObjectProperties
打开Attributes在Attribute的下拉菜单里面选择S7_m_c,在Value选择true,点击OK之后在变量前出现小旗标志就可以上传了。
马达的变量声明表如下:
IN
OUT
IN_OUT
STAT
4.2FB块的编程
FB主要是利用梯形图+SCL,我们这个项目的马达块感觉还不错,跟大家分享下
这里面的计时器都是放在静态变量STAT里面
编静态变量TON时要注意,
点击EMPTYBOX,出来如下窗口
输入TON
确认
右键选择changetoMultipleInstanceCall
输入我们要定义的计时器的名称就OK了
其中马达的显示状态是通过SCL编程的,其程序如下
这里马达有16种不同的状态
其程序如下
FUNCTION_BLOCKSTATUS_MOTOR
{S7_m_c:
='true'}
TITLE='STATUS_MOTOR'
VERSION:
'1.0'
AUTHOR:
NAME:
FAMILY:
//***************************************************************************
//VARIABLEDECLARATION
//***************************************************************************
VAR_INPUT
ERROR:
BOOL;
QSTART:
BOOL;
QSTOP:
BOOL;
QFB_RUN:
BOOL;
QAUTO_MAN:
BOOL;
QLOCAL:
BOOL;
ACK{S7_m_c:
='true'}:
BOOL;
END_VAR
VAR_OUTPUT
STEP_NO{S7_m_c:
='true'}:
INT;
END_VAR
BEGIN
IFNOT(ERROR)ANDQFB_RUNANDNOT(QAUTO_MAN)ANDNOT(QLOCAL)ANDNOT(QSTART)ANDNOT(QSTOP)THEN
STEP_NO:
=1;//AUTO_RUN
ELSIFNOT(ERROR)ANDNOT(QFB_RUN)ANDNOT(QAUTO_MAN)ANDNOT(QLOCAL)ANDNOT(QSTART)ANDNOT(QSTOP)THEN
STEP_NO:
=2;//AUTO_STOP
ELSIFNOT(ERROR)ANDNOT(QFB_RUN)ANDNOT(QAUTO_MAN)ANDNOT(QLOCAL)ANDQSTARTANDNOT(QSTOP)THEN
STEP_NO:
=3;//AUTO_STOPTORUN
ELSIFNOT(ERROR)ANDQFB_RUNANDNOT(QAUTO_MAN)ANDNOT(QLOCAL)ANDNOT(QSTART)ANDQSTOPTHEN
STEP_NO:
=4;//AUTO_RUNTOSTOP
ELSIFERRORANDNOT(QAUTO_MAN)ANDNOT(QLOCAL)ANDACKTHEN
STEP_NO:
=5;//AUTO_ERRORWITHOUTRESET
ELSIFERRORANDNOT(QAUTO_MAN)ANDNOT(QLOCAL)ANDNOT(ACK)THEN
STEP_NO:
=6;//AUTO_ERRORWITHRESET
ELSIFNOT(ERROR)ANDQFB_RUNANDQAUTO_MANANDNOT(QLOCAL)ANDNOT(QSTART)ANDNOT(QSTOP)THEN
STEP_NO:
=7;//MAN_RUN
ELSIFNOT(ERROR)ANDNOT(QFB_RUN)ANDQAUTO_MANANDNOT(QLOCAL)ANDNOT(QSTART)ANDNOT(QSTOP)THEN
STEP_NO:
=8;//MAN_STOP
ELSIFNOT(ERROR)ANDNOT(QFB_RUN)ANDQAUTO_MANANDNOT(QLOCAL)ANDQSTARTANDNOT(QSTOP)THEN
STEP_NO:
=9;//MAN_STOPTORUN
ELSIFNOT(ERROR)ANDQFB_RUNANDQAUTO_MANANDNOT(QLOCAL)ANDNOT(QSTART)ANDQSTOPTHEN
STEP_NO:
=10;//MAN_RUNTOSTOP
ELSIFERRORANDQAUTO_MANANDNOT(QLOCAL)ANDACKTHEN
STEP_NO:
=11;//MAN_ERRORWITHOUTRESET
ELSIFERRORANDQAUTO_MANANDNOT(QLOCAL)ANDNOT(ACK)THEN
STEP_NO:
=12;//MAN_ERRORWITHRESET
ELSIFNOT(ERROR)ANDQFB_RUNANDQLOCALTHEN
STEP_NO:
=13;//LOCAL_RUN
ELSIFNOT(ERROR)ANDNOT(QFB_RUN)ANDQLOCALTHEN
STEP_NO:
=14;//LOCAL_STOP
ELSIFERRORANDQLOCALANDACKTHEN
STEP_NO:
=15;//LOCAL_ERRORWITHOUTRESET
ELSIFERRORANDQLOCALANDNOT(ACK)THEN
STEP_NO:
=16;//LOCAL_ERRORWITHRESET
ELSESTEP_NO:
=0;//OTHERSTATUS
END_IF;
END_FUNCTION_BLOCK
4.3FB块的管脚说明
4.3.1马达块的管脚说明
MOTOR_RUN
Input:
1、HOA——就地或远程(“0”就地,“1”远程)
2、AUTO_MAN——远程情况下手动或自动(“0”自动,“1”手动)
3、FB_RUN——运行反馈(“0”无反馈,“1”有反馈)
4、FB_FAULT——故障反馈(“0”无反馈,“1”有反馈)
5、START——远程手动启动(“0”无启动命令,“1”有启动命令)
6、STOP——远程手动停止(“0”无停止命令,“1”有停止命令)
7、AUTO_STA——自动启动命令(“0”自动停止命令,“1”自动启动命令)
RESET---确认故障
8、L_RESET——复位(“1”复位信号)
10、START_TIME——启动超时时间设置(格式为”T#30S”)
11、STOP_TIME——停机超时时间设置(格式为”T#30S”)
12、INTERLOCK
13、LMN_OUT频率输入值
14、F_HOA频率输入使能
15、SAMPLE_T——采样时间
16、TIME_RESET——时间复位(“1”复位)
Output:
1、QSTART——双点输出时的启动命令(“1”启动信号)脉冲输出,马达启动后自动变为0
2、QSTOP——双点输出时的停机命令(“1”停机命令)脉冲输出,马达停机后自动变为0
3、QFB_RUN——运行反馈(“1”运行)
4、ERROR——总故障报警(“1”故障)
5、START_FT——启动超时报警(“1”启动超时)
6、STOP_FT——停机超时报警(“1”停机超时)
7、FT——外部故障(“1”故障)
8、AVAILABLE
9、QSPEED
10、QAUTO_MAN——远程情况下手动或自动状态(“0”自动,“1”手动)
11、QLOCAL——就地或远程状态(“0”就地,“1”远程)
12、RUNTIME——运行时间
13、ACK——报警确认(“1”确认)
14、STEP_NO——马达状态字
15、CMD——单点输出时的启停命令(“0”停机,“1”启动)
IN_OUT:
1、SP_V
2、IN_OUT_1——BAS或FAS(“0”BAS控制,“1”FAS控制)
4.3.2测量块的管脚说明
MEASURES
Input:
1、PV_IN——AI获取值
2、OFFSET——偏差设定值
3、RANG_H——量程上限
4、RANG_L——量程下限
5、SET_HH——高高报警设定限
6、SET_H——高报警设定限
7、SET_LL——低低报警设定限
8、SET_L——低报警设定限
9、SP——死区设定值
10、RESET——报警复位
Output:
1、OUTPUT——实际测量值
2、A_HH——高高报警(“1”报警)
3、W_H——高报警(“1”报警)
4、A_LL——低低报警(“1”报警)
5、A_L——低报警(“1”报警)
6、STEP_NO——状态字
7、ERROR——错误报警(“1”触发)
8、ACK——报警确认(“1”确认)
4.3.3PID块的管脚说明
Input:
1、SP_INT——PID设定值
2、PV_IN——实际输入值
3、GAIN——比例系数
4、TI——积分时间
5、TD——微分时间
6、DEADB_W——死区
7、LMN_HLM——输出上限
8、LMN_LLM——输出下限
9、PV_FAC——实际输入因子(通常为“1”)
10、PV_OFF——实际输入补偿(通常不需要)
11、LMN_FAC——输出因子(通常为“1”)
12、LMN_OFF——输出补偿(通常不需要)
13、MAN——手动强制输出
IN_OUT:
1、LMN——PID输出
5.DB块的建立
在BLOCK的空白区域单击右键,在弹出的快捷菜单中选择InsertNewObject,插入一个DB,此时弹出的DB属性对话框,在这个对话框中输入DB的名称、符号名(这里定义为马达设备名称)和注释,DB属性对话框中还包括了DB的类型选择,在类型下拉列表框中选择InstanceDB,并指明对应的FB2007马达块。
建完DB后,右键objectproperties弹出的对话框Attributes里面的设置,看到DB块已经变成自动上传的DB块
右键刚才建立的DB块,点击开specialObjectProperties–--operatorControlandMontitoring
弹出对话框,在OperatorControlandMonitoring对话框中打勾,则DB块就可以上传了
6.WINCC面板的建立
6.1马达面板的制作
6.1.1基本图片的制作
选择你要制作的图片,导出
然后再导入刚才导出的图片
可以直接进行编辑,编辑成你需要的不同的颜色和符号然后再导出成emf文件。
这里我们编辑了马达16种不同的状态,做成16个emf图片
6.1.2马达块的制作
在画面中添加“statusdisplay”控件,组态对话框。
添加16种不同马达的状态
这样就制作了跟下位机对应的马达
鼠标按左键脚本如下
#include"apdefap.h"
voidOnLButtonDown(char*lpszPictureName,char*lpszObjectName,char*lpszPropertyName,UINTnFlags,intx,inty)
{
//WINCC:
TAGNAME_SECTION_START
//syntax:
#defineTagNameInAction"DMTagName"
//nextTagID:
1
//WINCC:
TAGNAME_SECTION_END
//WINCC:
PICNAME_SECTION_START
//syntax:
#definePicNameInAction"PictureName"
//nextPicID:
1
//WINCC:
PICNAME_SECTION_END
SetVisible(lpszPictureName,"TJ_MOTO",0);
SetTagPrefix(lpszPictureName,"TJ_MOTO","N/TJ_PUMP_RIGHT.");
SetLeft(lpszPictureName,"TJ_MOTO",x);
SetTop(lpszPictureName,"TJ_MOTO",y);
SetVisible(lpszPictureName,"TJ_MOTO",1);
SetText("TJ_MOTO.PDL","LOCALTION","LOC");
SetText("TJ_MOTO.PDL","SYSTEM","SYS");
SetText("TJ_MOTO.PDL","LOCALBOX","LOCALBOX");
SetPropChar(lpszPictureName,"TJ_MOTO","CaptionText","TJ_PUMP_RIGHT");//Return-Type:
BOOL
}
画面显示组态如下
这里你可以添加提示文本
通过SetTagPrefix()函数实现变量前缀的传递,这里的变量前缀就是我们下位机程序里的马达的设备号及DB块的命名。
通过SetText()函数,可以向指定画面中的指定对象写文字。
TJ_MOTO.PDL为操作弹出面板的Wincc画面名称。
6.1.3马达弹出面板的制作
弹出面板的部分脚本如下:
故障状态脚本
7.OS项目编译(Compile)
OS编译,将建立的数据变量上传至WinCC项目中。
8.图形树的手动添加
点击PictureTreeManager,编辑目录树,这个跟PCS7一样。
9.打开OSProjectEditor为项目设定一个图片布局
这样我们就可以生成跟PCS7一样的图型布局,报警画面等等,图形布局生成后,我们还可以修改自动生成的图形布局,增加或减少一些PCS7原有的功能,直到满足用户的需要
生成后的效果如下:
10.心得体会
用这个方法做STEP7+WINCC项目的优点是,我们可以充分利用PCS7的功能
1.我们可以节省不少时间,因为我们不需要再去做报警和画面的切换,这些都自动生成了,我们只要手动在报警记录里面添加我们需要的报警就可以了。
2.画面比较简洁,格式比较统一,一个马达对应一个DB块。
变量替换起来也很方便
3.我们不需要再去建WINCC的变量,因为一切变量都是自动上传。
4.下位程序比较清晰,每个DB对应一个马达,DB符号名跟WINCC的面板的名称一一对应,程序结构比较清晰
天津站BAS系统项目
项目工程师:
李荣生
项目指导:
杨柯
2008年7月4日星期五
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 11711800015巧用PCS7 的功能做STEP 7+WINCC的项目 11711800015 巧用 PCS7 功能 STEP WINCC 项目