如何基于工业库在PCS 7中集成S7-300 CPU
1、工业库简介
SIMATIC PCS 7工业库(SIMATIC PCS 7 Industry Library,以下简称IL)为PCS 7 V8.0以上版本提供了全新的控制功能库,是对PCS 7高级过程库(APL)的扩展,集成了非标准PCS 7 系统的工厂组件,包括S7-300控制器或者WinCC Flexible操作员面板。此外,IL中还集成了多个行业库,例如,水、废水处理行业库和楼宇自动化行业库。PCS 7 IL与PCS 7 APL一起使用,可对不同领域内的控制任务实现协调一致的总体解决方案。
如何基于工业库在PCS 7中集成S7-300 CPU
图1-1 PCS 7工业库 在多数PCS 7应用场合中,除了和过程控制直接相关的核心组件之外,工厂中还广泛存在需要独立控制的机器和设备,这些所谓的“成套设备”都是可以实现特定生产任务的控制子单元。由于点数规模较小、控制任务相对单一、逻辑运算为主等特点,所以,部分“成套设备”的控制都采用S7-300配合操作员面板使用。 为了实现在PCS 7中集成S7-300 CPU,在PCS 7 V8.0中工业库提供了两个子库:IL for PCS 7和IL for S7,其中的“IL for S7”主要就是面向S7-300 CPU环境下的应用需求。而在PCS 7中集成S7-300 CPU主要有两个方式,一个是以S7-400 CPU为主,S7-300 CPU作为类似RTU的角色与S7-400 CPU通讯,提供相应的数据;另一个方式则是S7-300 CPU独立组态,包含OS或操作员面板等,无须额外的作为主控的S7-400 CPU站。
本文分别按照两个不同方式介绍具体的实现步骤,并在此过程中重点介绍“IL for S7”中功能块调用、与S7-400 CPU的通讯以及分层操作等三个方面。
2、S7-300 CPU组态工业库
在集成S7-300 CPU的PCS 7系统项目中,S7-300 CPU及其对应的操作员面板是一相对独立的单项目,该项目可以在PCS 7项目中创建生成,也可以来自成套设备提供商。同时,相关的功能块还需要在OS上产生图标和操作面板,实现类似于APL功能块一样的操作。为此,集成的S7-300 CPU的程序需要基于IL S7库来组态。具体组态过程如下:
2.1 创建多项目框架
由于PCS 7的创建项目向导中没有集成S7-300 CPU的选项,所以需要按照手动的方式床架如下图所示框架的多项目。其中的“300_IL_St”单项目就是包含了S7-300 CPU站和操作员面板组态项目。
示例项目采用CPU 317-2DP和MP370,只见通过IE完成通讯连接。具体S7-300 CPU站点的组态与常规项目组态一致。
如何基于工业库在PCS 7中集成S7-300 CPU
图2-1 基本项目框架 在PCS 7软件环境中组态S7-300 CPU,还需要为其创建工厂层级,一方面可以和多项目中的其他项目结构保持一致,另一方面也可以实现跨单项目的OS分配等功能。更多关于多项目的功能使用可以参考: 2.2 用户程序组态
针对S7-300 CPU进行编程,所使用的功能块必须要从“Industry Lib S7 V80”库中拖拽。在库中提供了通讯、控制、监控等常用功能,还包含了与操作员面板的接口功能块(“PANEL”)。
需要注意的是,由于PCS 7软件中不能提供基于S7-300 CPU的模块驱动,所以该库中无APL库类似的“Channel”功能块。
如何基于工业库在PCS 7中集成S7-300 CPU
图2-2 Industry Lib PCS 7 V80 2.2.1 电机控制
在层级文件夹下创建CFC,双击打开,从“Industry Lib S7 V80”库中分别拖拽“S7Mot”(来自DRIVES)和“S7PMot”(来自PANEL),并按照如下图所示连接:
图2-3 S7PMot与S7Mot连接 CFC中功能块之间的连线过程较为简单,只需要将S7PMot的输出管脚“QOP_ACTIVE”、“QOP_RESET”“QOP_AUT_ON”、“QOP_MAN_ON”和“MSG_FILTER”分别连接到S7Mot块的同名输入管脚即可。
需要注意的是,为了实现在操作员面板上的指针连接,在S7程序Blocks文件夹中要新建一个自定义共享DB块,其中创建数据类型为INT的参数“Motor”,用于连接S7PMot接口功能块。对于需要操作员面板上显示的对象,据需要在该共享DB块中定义一个INT类型的变量。将“S7PMot”功能块的输出“IDBNR”连接到共享DB的“Motor”即可。
如何基于工业库在PCS 7中集成S7-300 CPU
图2-4 创建共享DB 2.2.2 阀门控制
与电机控制一样,分别从库中拖放“S7Vlv”和“S7PVlv”两个功能块到CFC中,完成连线即可:
如何基于工业库在PCS 7中集成S7-300 CPU
图2-5 S7Vlv和S7PVlv之间的连接 阀门的其他过程输入输出与常规编程一致,只是不再使用驱动功能块而已。 2.2.2 PID控制
“IL for S7”库中还提供了PID控制功能块“S7PIDCon”,同时也提供了在操作员面板上使用的“S7PPID”接口功能块。具体连接更为简单:
如何基于工业库在PCS 7中集成S7-300 CPU
图2-6 S7PIDCon和S7PPID之间的连接 “S7PPID”功能块要获取PID功能块的状态,只需要将“BlockCon”管脚与PID的任何一输出相连接即可,这一点与其他类型的功能块连接略有不同。 2.3 操作员面板组态
“IL for S7”成功安装完成之后,会在WinCCFlexible中集成一个“IL_S7_Flex_80”库文件(\Program files \SIEMENS\STEP7\S7LIBS),其中包含了针对各类对象的块图标和面板,当在画面中添加面板和块图标时会自动创建变量、连接、文本列表等,用户只需要根据项目情况做适当调整即可。
如何基于工业库在PCS 7中集成S7-300 CPU
图2-7 S7PIDCon和S7PPID之间的连接 在WinCCFlexible中的具体组态过程可以参考《如何基于工业库在PCS 7中集成Panel》应用文档。
3、S7-300 CPU作为RTU组态
在多数情况下,S7-300 CPU控制的设备需要集成到现有的PCS 7整体体系中。而对于一个典型的PCS 7系统而言,OS服务器/单站都是和S7-400 CPU的AS站通讯获取数据,不会直接和S7-300 CPU这样的RTU通讯。为此,S7-300 CPU站点作为RTU角色,除了基本控制程序组态之外,还需要考虑和S7-400 CPU的AS站点的通讯问题。
在S7-400 CPU配合S7-300 CPU完成控制的架构中,需要对S7-400 CPU和S7-300 CPU的角色和功能有明确的定义。一般而言,S7-300 CPU控制器负责具体控制实现,而S7-400 CPU作为OS获取S7-300数据的渠道——当然,如果有需要,也可以在S7-400中完成一些在设备控制之上的连锁、复杂算法等等。
更具体实现过程而言,S7-300 CPU中的编程方式与上一章节的描述无异,但在S7-400 CPU中,如何利用S7-300 CPU通讯传输过来的数据,并采用和其他功能块类似的ICON/操作面板风格在OS上体现,则是需要重点考虑的。针对这个需求通常有两个方案:
- 自定义功能块/ICON/操作面板
创建一个新的功能块,定义相应的管脚连接通讯过来的数据。同时定义功能块及相关管脚的属性,同时在其中可以调用SFB35(“Alarm_8P”)产生相应的消息。在OS上,可以参照系统集成的ICON和面板来制作针对新功能块的图标和操作面板。
更多关于自定义功能块/图标/面板的信息可以参考:
《PCS 7 - Programming Instructions for Blocks》
PCS 7安装目录\STEP7\S7MANUAL\pcs7library\s7jpa70b.pdf - 利用现有的控制功能块
在S7-400 CPU的编程中,可以利用PCS 7中现有的功能块,例如标准库下的Motor/Valve等。将S7-300 CPU中的相关数据与功能块连接即可。
这种方案无需人为定义程序、面板等,而且由于可以采用和其他程序一样的功能块,所以编程、OS操作方式等都较为方便。但是,利用这种方法需要注意上下两层控制的协调问题,典型情形就是OS和S7-300 CPU站本身的操作员面板之间的协调问题,为此,IL中还提供了相应的功能块来解决分层操作的问题。
另外,由于S7-300 CPU和S7-400 CPU中的功能块不同,可能存在数据无法完全对应的问题。更为重要的是,OS上的信息并不能全部通过输出管脚传送到S7-300 CPU中。例如S7-400 CPU中采用标准块Motor,而S7-300 CPU站点中采用S7Mot,而Motor块操作面板上的“Reset”就无法通过输出管脚下达到S7Mot中。
这两个方案可以根据实际情况选择使用,在此就不赘述。以下就重点介绍如何实现S7-300 CPU和S7-400 CPU站点的通讯。
3.1 与单S7-400 CPU通讯 3.1.1 组态S7连接
在S7-400 CPU的AS所在的单项目中点击工具栏上的按钮 ,打开网络组态NetPro。在CPU上右键菜单中选择“Insert New Connection”创建新的连接:
如何基于工业库在PCS 7中集成S7-300 CPU
图3-1 打开NetPro 在弹出的新窗口中选择连接伙伴方。如果S7-300 CPU和S7-400 CPU处在同一个项目中,则可以直接选择;如果处在不同的项目中,则需要选择一个“Unspecified”(未指定),点击“Apply”应用即可。
如何基于工业库在PCS 7中集成S7-300 CPU
图3-2 选择通讯伙伴方 在如下所示的S7连接属性设置窗口中填写通讯伙伴方的IP地址,然后点击“Address Details…”按钮:
如何基于工业库在PCS 7中集成S7-300 CPU
图3-3 配置连接参数一 在详细信息中修改伙伴方的槽位为2,点击OK确认。
如何基于工业库在PCS 7中集成S7-300 CPU
图3-4 配置连接参数二 将建立好的连接下载到S7-400站即可。 3.1.2 通讯程序调用
在通讯功能块调用之前,需要在S7-300 CPU中准备和S7-400 CPU通讯用的共享DB块。示例中创建DB50和DB51,分别对应“输出”和“输入”数据。
在S7-400 CPU侧调用“S7Put”完成向S7-300 CPU写入数据,调用“S7Get”从S7-300 CPU侧读出数据:
如何基于工业库在PCS 7中集成S7-300 CPU
图3-5 功能块调用 在上图左侧“S7Get”的功能块中,S7-300 CPU站侧的DB50里从DBB0开始的10个字节会被读取到S7-400 CPU侧的DB10里DBB18开始的10个字节区域中;
在上图右侧“S7Put”的功能块中,S7-400 CPU站侧的DB11里从DBB52开始的10个字节会写入到S7-300 CPU侧的DB51里从DBB0开始的10个字节区域中。 3.2 与S7-400 HCPU通讯 3.1.1 组态S7连接
由于S7-300 CPU和S7-400H CPU之间无法建立S7容错连接,所以在连接创建的时候,需要分别从S7-400H CPU的两个CPU分别建立到S7-300 CPU(或者Unspecified)的连接:
如何基于工业库在PCS 7中集成S7-300 CPU
图3-6 HCPU中0机架上的连接
如何基于工业库在PCS 7中集成S7-300 CPU
图3-7 HCPU中1机架上的连接 从S7-400H CPU的两个CPU分别创建一个到“Unspecified”的S7连接,可以看到,这两个连接的ID号是不同的。参照前文所述修改连接参数之后将连接下载到S7-400 CPU中。
HCPU到S7-300 CPU站点的通讯链路由两个S7连接实现,如何基于这两个连接可靠地完成数据交换则是需要考虑的重点。具体的方案较多,可以采用两个连接同时工作,接受方通过判断连接状态来选择数据的方式,也可以采用“心跳信号”的方式判断出可用的连接之后再完成传输等。
基于“H_Status”提供的冗余状态来选择具体的通讯连接,具体编程如下:
如何基于工业库在PCS 7中集成S7-300 CPU
图3-8 HCPU下的通讯程序组态 上图中,“H_Status”功能块读取0机架和1机架上CPU的主备状态,通过管脚“R0_MSTR”/“R1_MSTR”输出。这两个输出连接到负责通讯读写的“S7Put”和“S7Get”功能块的使能管脚,这样,当机架0为主CPU时,“R0_MSTR”为1,其所连接的通讯功能块被使能,通讯从S7连接1中进行,反之亦然。
4、分层操作
PCS 7系统一般可以划分多个操作层级,如中央控制室、区域控制室、就地控制室、就地操作等等,每个层级都可以对同一现场设备进行操作。例如,现场控制站S7-300 CPU会配合一个操作员面板实现设备的就地监控,而控制室的PCS 7 OS负责整体的监控。有些情况,用户希望只是位于就地的操作员面板可以操作设备,而位于中控室的计算机禁止操作,或者要求不能同时操作设备,防止多点操作造成设备的误动作,保证人身安全、设备可靠稳定运行,因此分层操作控制是必不可少的。分层操作可以在工厂范围内协调各个层级的操作,提高工作效率、优化人员调配。
PCS 7 APL功能库OpStations可以实现基于操作站的分层控制,而操作员面板与操作站OS之间权限控制的功能,可以通过PCS 7工业库的S7UsrM功能块来实现。组态步骤如下:
关于APL库“OpStations”功能块的使用请参考下面文档:
《PCS 7 V7.1 SP2中OpStations功能块的应用》
下载中心文档编号: A0532 78822810 |
4.1 建立枚举变量
为了能够在程序块图标上显示现场设备所属的操作层级,需要创建枚举变量“OP_Conf1”。如下图所示,新建“Shared Declarations”,在“Shared Declarations”—“Enumerations”中新建枚举变量,命名为“OP_Conf1”。
在其中创建需要的操作层级,对应的值依次从1到8,例如本地OS为1,控制室为2,第一块操作员界面为3等等。同时还定义数值0为“NoOperation”,以表示当前操作层级。
如何基于工业库在PCS 7中集成S7-300 CPU
图4-1 创建“OP_Conf1” 4.2 组态S7UsrM
将功能块“S7UsrM”添加至新的或者先前的CFC中。“OPDEAV_1~8”指定8个层级是否可用。“KeySwitch”定义操作层级是否可以在OS中手动选择,或当KeySwitch为1时通过程序设置KS_Device值来指定操作层级。“MaxLevel”定义在OS中显示的最大操作层级数量。连接S7UsrM至S7Mot和S7PMot,将输出“QPERMIS”分别连接到两个功能块的“PERMIS”管脚,如下图所示。
如何基于工业库在PCS 7中集成S7-300 CPU
图4-2 S7UsrM连接 为了让S7Mot能够从操作员面板上控制,可以将S7PMot的输出管脚“QOP_ACTIVE”和“OP_ACTIVE”相连接。这样在操作员面板获得操作权限之后,可以对S7Mot块进行手自动切换、复位等操作。 4.3 操作层级权限组态 4.3.1 OS组态
在WinCC Explorer打开操作站的OS项目,在Tag Management ® Internal tags ® Split Screen Manager中找到内部变量@Permission,其属性StartValue定义为操作层级的起始值。若S7Mot参数“PERMIS”值与@Permission相等,则表示可以在OS中对设备进行操作。
如何基于工业库在PCS 7中集成S7-300 CPU
图4-3 @Permission默认值设置 4.3.2 操作员面板组态
在接口功能块“S7PMot”中设置参数“PanelPerm”,用于操作面板指定的操作层级。只有当PanelPerm值等于S7PMot功能块的OP_PERMIS参数值时才可能在操作员面板中对设备进行操作。
如何基于工业库在PCS 7中集成S7-300 CPU
图4-4 S7PMot的操作层级设置 当WinCC Flexible中添加面板时,会自动创建文本列表,用于面板操作层级的显示。修改“Permission_S7”文本列表,使其与枚举变量“OP_Conf1”一致。
如何基于工业库在PCS 7中集成S7-300 CPU
图4-5 WinCC Flexible文本列表 4.4 操作运行
通过S7UsrM选择LocalOS控制(因为@Permission设置为1),OS操作站上可以实现对电机的操作,而操作员面板不可操作,但显示设备当前的操作层级。切换到Panel1,操作员面板上即可使能操作。
如何基于工业库在PCS 7中集成S7-300 CPU如何基于工业库在PCS 7中集成S7-300 CPU
图4-6 S7UsrM操作运行效果
|