全国服务热线: 15821971992

西门子触摸屏|模块总代理

发布日期 :2023-07-19 17:06发布IP:114.95.101.251编号:11978027
品牌:
西门子
型号:
模块
产地:
德国
分 类
负荷开关
单 价
电议
有效期至
长期有效
咨询电话
15821971992
手机
15821971992
Email
2724917714@qq.com
让卖家联系我
详细介绍

 除盐水站作为莱钢银山型钢公司25MW发电工程的主要设施,担负着供应三台130t锅炉和四台150t除氧器用水的重要任务。从现场除盐水生产来看,自动化监控程度低,绝大部分的水泵是人工操作控制,在新的改造项目中需要在原先生产工艺上增加多介质、活性炭过滤器以及阴阳离子置换器等高新技术生产设备,所以更加需要对整个除盐水站进行自动化控制的改造,从而可以节约能源,降低工人劳动强度,大大提高生产水平。

  2除盐水生产工艺简介

  除盐水改造后的生产线主要设备有6个多介质和6个活性炭过滤器,超滤装置,反渗透装置,脱碳风机,阴离子和阳离子交换器,以及生水泵3台(1台变频),高压泵6台,4台除盐水泵(1台变频),反渗透出水泵3台(1台变频)等。生产工艺图见图1:




  3 系统组成及软件设计

  根据工艺的要求,莱钢银山型钢公司25MW发电工程除盐水站PLC控制系统采用一套西门子的SIMATIC的S7-4007-400挂ET200结构,由一个主站、三个从站和两个PC站(上位机)组成。用S7-400系列模块做主站,S7-300系列模块作从站,主站通过PROFIBUS总线电缆和接口模块与从站通讯,这样的构架既保证了PLC系统的先进性又为用户节省了成本。主站是由一个支持冗余的底板和S7-400系列电源模块、CPU模块、CP模块组成,模块支持热插拔。从站是ET200M分布式系统,是在工业现场经常使用的PROFIBUS DP现场总线上的从站,用于连接工业控制系统中的各种现场装置。


  3.1 硬件配置

  本系统是建立在S7-400控制器、DELL 的Pentium工控机平台之上的分布式系统。S7-400是模块化PLC系统,采用标准的以太网通讯,每个控制器可以控制64个回路,大的可处理131072个I/O点,其中模拟量I/O点数为168个,逻辑扫描率为1.25MB/S。S7-400与上位机采用工业以太网,通讯速率为100Mbps。系统主要硬件配置和I/O点数统计见表1和表2,系统配置结构见图2:










  除盐水生产线自动化控制系统设计由两级网络组成,一级是过程控制级,二级是基础控制级。

  级——过程控制。以S7-400PLC系统作为主要控制核心,由两台上位机、PLC控制单元加以太网卡等组成工业以太网,监控站利用组态软件WinCC实现对工作现场进行监督控制,中央处理器采用CPU416,I/O系统采用ET200M,通过ET200分布I/O通讯对流量、液位、pH值、出口压力等参数进行采集,上位机将实时数据库的数据送到服务器的关系数据库中,进行保存和数据处理。过程控制级通过工业以太网将上位机系统和现场监测与控制点紧密的结合为一个整体,从而实现对整个控制系统的计算机在线远程诊断功能。

  第二级——基础自动化。PROFIBUS-DP网络是网络集成的底层,主要是连接现场设备。主站S7-400 PLC通过PROFIBUS-DP网与从站通信,一方面主站将控制数据电机速度设定、温度、压力设定、接触器吸合及断开等发送到传动装置;另一方面传动装置的电机转速、传感器流量、温度、压力、接触器触点的通断等数据通过通信传送到主站PLC指定的寄存器地址。Profibus-DP主要用于工业自动化系统的高速数据传送,实现调节和控制功能,是一种高速低成本通讯,用于设备级控制系统与分散式I/O的通讯,是计算机网络通讯向现场级的延伸。


  3.2 软件设计

  计算机操作系统采用bbbbbbs 2000 Professional 中文版本,上位机监控软件采用Wincc 6.0组态软件来实现。

  3.2.1 操作系统软件bbbbbbs 2000 Professional中文版提供了一个快速、高效的多用户、多任务操作系统环境,是目前使用广泛的工控系统。

  3.2.2 Wincc 6.0监控软件实现了对整个系统的开关量、模拟量的采集和处理,并显示在监控画面上,在对多台重要水泵的控制中的物理量如电流、主回路运行、频率设定,有无故障等都实时显示在系统画面上,方便操作人员及时掌握系统的运行情况。

  3.2.3 采用Step7 对西门子可编程序控制器进行配置、编程,它可以利用IEC-1131标准中八种编程语言中的六种(STL、LAD、FBD、CFC、SFC、SCL)进行编程。


  4 系统功能实现

  根据除盐水生产工艺,监控系统的功能主要是实现对工业新水的加药、过滤、超滤、反渗透技术、阴阳离子置换、酸碱作用等控制工序,大致可分为过滤系统、超滤系统、反渗透系统、阴阳离子置换系统、与酸或碱结合系统5个子系统,系统监控主画面及分系统画面见图3、图4、图5:




10.jpg








  4.1 画面显示功能:该画面通过wincc 6.0软件组态编辑实现动态模拟显示整个除盐水制备的过程。利用数据链接技术使得画面上的元件实现实时动态、闪烁、变色等功能,让画面上的工艺参数以数字、棒图的形式实时显示,并对故障进行实时诊断。

  4.2 数据处理功能:对系统采集的各种类型信号,利用各种计算功能、数据变换功能等实现,模拟量信号有流量、压力、浓度及PH值,数字量信号有水泵的运行状态、故障和启/停信号.

  4.3 系统操作功能:有自动和手动两种工作方式,正常运行时采用自动方式,故障和调试时采用手动方式。它由PID控制回路实现对一些重要的模拟量数据的控制,以达到期望值。

  4.4报表功能与历史趋势功能:生产中的一些参数,需要及时打印,可形成报表。报表分为班报、日报、月报,可定时打印,也可手动任意时间打印。一些重要参数,我们对其进行历史数据存储,形成历史趋势,可以随时进行查看。

  4.5报警记录功能:实时地发出所有发生故障的参数的声光报警,提醒值班人员采取相应的措施

  5 主要生产设备的控制

  生产设备的主要控制方式为自动/远程手动/机旁手动三种方式。

  自动控制: 自动完成水泵变频启动的所有相关过程,压力传感器将水泵出口压力信号送至PLC,作为泵出口压力单闭环控制的反馈值(给定值根据实际工况设定),通过PLC对水泵出口压力信号变换和处理。为变频器提供频率给定,实现频率的自动调整.

  远程手动:操作人员可根据现场设备运转状况,通过监控站进行单机设备操作,实现除盐水生产的控制工序,作为联锁调试用。

  机旁手动:作为单机检修或现场调试用。


  5.1 水泵的控制与联锁

  因为除盐水的生产不是连续生产方式,并且其产水量经常根据锅炉系统的负荷调整进行调整,所以生产设备(水泵)的控制方式应该能够适应多种情况下的生产方式,如一用一备、两用一杯等不同工况。水泵控制程序流程图见图6:

78.webp.jpg



  以生水泵控制为例,生水泵组由三台泵及相应的出口阀门组成(其中的一个泵及阀作为备用),适合不同工况下的需要。控制方式分为机旁控制和远程控制两种。机旁控制是利用选择机旁的启动或停止按钮,通过PLC发出启动或停止信号运行或停止水泵;远程控制是操作人员在监控室根据画面上的启动或停止按钮进行点击操作,包括联动、单机、备用三种控制状态,三种状态可以任意的切换,不影响泵的运行状态。 在联锁状态下,当两台工作泵中的任意一台停运时,备用泵自动启动,停运的泵则作为备用泵。当生水泵出水管压力低于5.6 MPa时,进行次报警;当运行软水泵出口压力低于5.4 MPa时,进行第二次报警,同时备用泵及出口电动阀自动投入;泵事故跳闸后,泵出口电动阀自动关闭,当每台泵及泵出口电动阀均不能正常运行时,进行紧急报警。各控制及联锁可解列。


  5.2 超滤装置的控制


图7超滤装置运行简图




  超滤装置的运行主要是对5个电磁阀控制的阀门进行控制:进水阀、产水阀、反洗进水阀、正冲排水阀、反洗排水阀。这5个阀门的状态决定了超滤装置的工作状态:运行、备用、反洗。

  运行:超滤在运行状态下,首先进行正冲操作,正冲完成后超滤装置的进口和出口电磁阀得电,进、出口阀门打开,超滤装置投入运行;

  备用:超滤装置在备用状态下,超滤装置的进口和出口电磁阀失电,进、出口阀门关闭,超滤装置投入备用;

  反洗:超滤反洗有两种方式,定时反洗和定压反洗。定时反洗是根据超滤运行的时间进行固定时间间隔的反洗,定压反洗是根据超滤装置的进出口压差进行反洗,当进出口压差达到一定数值则超滤装置也进行反洗。现在的超滤反洗一般采用定时反洗。


  5.3反渗透装置的控制

  反渗透工艺是一种在压力驱动下,借助半透膜的选择截留作用,将溶液中的溶质与溶剂分闪的分离方法。在水处理工艺运用中,将水中无机离子、细菌、病毒、有机物及胶质等杂质去除,以获得高质量的水。系统对反渗透装置的控制有三种工作状态:运行、备用、冲洗。反渗透装置有3个由电磁阀控制的阀门,反洗进口阀、产水排放阀、浓水排放自动阀。

   西门子S7-300plc有V存储区吗?听到这个问题,绝大多数人都会笑起来,V存储区不就是S7-200的变量存储区吗?S7-300哪里有什么V区?有没有搞错?近有个网友在网上询问这个问题:“我的疑问也是这个V区,被一堆人鄙视的说是200的吧。另外我有个疑问没见有谁用这个区域编程,麻烦有类似的例子给露露脸啊”,显出了几分急切和无奈。
    我也曾经被这个问题困扰过,下面向大家介绍我寻找答案的过程。
    首先在STEP 7的帮助中搜索“V区”,在参数类型ANY和POINTER的帮助中有个存储区编码表,其中就有V区,其代码为16#87,对V区的描述为“先前的本地数据”。这几个字像天书一样,可能很难有人能看懂。
    为了确认翻译的准确性,我将STEP 7切换到英语,“先前的本地数据”的英文为“Previous local data”。local data一般翻译为“局部数据”,看来翻译没有问题。德国人的英语水平很高,德国大学图书馆的书籍和杂志大多数都是英语的,不用怀疑德语翻译为英语时失真。
    V区与参数类型ANY和POINTER有关,打开STEP 7的帮助目录中的附录,选中其中的“\数据类型和参数类型\参数类型\参数类型POINTER的格式”,可以看到参数类型由6个字节组成,0号和1号字节是DB块的编号,不是数据块内的地址时为0。2~5号字节的格式与寄存器间接寻址的格式相同。下面是寄存器间接寻址的32位指针格式:
                               x000 0rrr 0000 0bbb bbbb bbbb bbbb bxxx
    其中第0~2位(xxx,低位为第0位)为被寻址地址中位的编号(0~7),第3~18位(16个b)为被寻址地址的字节的编号。第24~26位(rrr)为被寻址地址的区域标识号,指针的高位x 为0时,为区域内的间接寻址,高位x 为1时,为区域间(交叉区域)间接寻址。
    参数类型ANY可以用来传递一片连续的地址区,由10个字节组成。ANY和POINTER用于在块调用时传递输入、输出参数。为了揭开V区之谜,编写了FC1,将地址区中相邻的若干个字累加。地址区的起始地址由参数类型为POINTER的输入参数Start_Addr提供。P# DB2.DBX0.0也可以改写为DB2.DBX0.0。在OB1中调用FC1:
      CALL  FC     1
       Start_Addr :=P#DB2.DBX0.0    //数据区起始地址
       Number   :=5                //需要累加的字数
       Result     :=DB2.DBD10      //保存运算结果的双整数
    图1是运行时监控FC1的结果,累加器1(STANDARD)中的数据为十六进制显示格式,AR1是地址寄存器1。终于看到了AR1中的V区地址了!


    图1中条指令的P#表示指针,第2个#号表示局部变量。P##Start_Addr就是调用FC1时,用输入参数Start_Addr传送给FC1的指针P#DB2.DBX0.0(16#0002 8400 0000)存放的地址。P##Start_Addr(16#8700 00a8)低字节16#a8对应的二进制数为2#10101000,其字节部分为2#10101,即十进制数21,高字节16#87(2#1000 0111)表示存储区为V区。
    条指令将P##Start_Addr送给累加器1,第二条指令将累加器1中的数据传送到AR1,传送后AR1中的地址为V21.0(即16#8700 00a8)。
    那么V区到底是什么呢?根据帮助中的解释“先前的本地数据”(Previous local data),猜想与局部数据堆栈有关。执行每个块时,它都有自己的临时局部数据。在OB1调用FC1时,OB1的临时局部数据被保存到局部数据堆栈,FC1则使用它自己的临时局部数据区,OB1的局部数据成为“Previous local data”(以前的局部变量)。根据上述分析,V区很有可能是调用FC1的OB1的局部数据区。
    怎样才能证实这个猜想呢?好能看到AR1中的地址为V21.0时,OB1的局部数据。好在STEP 7的监控功能可以查看块调用时保存在堆栈中的数据。为了能看到某条指令执行后OB1的局部数据,在FC1的第2条指令处设置一个断点。执行完第2条指令后,CPU进入HOLD模式,此时打开CPU模块信息对话框的“堆栈”选项卡,选中B堆栈中的OB1,点击“L堆栈”按钮,打开L堆栈对话框,OB1的局部数据堆栈如图2所示。

 

由图1可知,因为指针常数P#V21.0(16#8700 00a8)被送给AR1,监控区中的AR1列显示V21.0。此时OB1调用FC1的POINTER格式的实参P#DB2.DBX0.0(16#0002 8400 0000),存放在从OB1的局部变量LB21开始的6个字节中(见图2)。因此AR1中的P#V21.0表示指针常数P#DB2.DBX0.0的值存放在OB1的局部变量区中的地址,换句话说,V区就是调用FC1时OB1的局部数据区。
    难怪“没见有谁用这个区域编程”,V区用于监控,在编程时没有使用它。
    后我们来总结一下块调用时的参数传递过程。如果输入参数为简单数据类型,例如字节、字、整数和双整数,可以通过32位(4个字节)的累加器1直接传递参数。而ANY和POINTER分别为10个和6个字节,不能用累加器1直接传递。因此将这些参数的实参(例如16#0002 8400 0000)暂时保存在OB1从V21.0开始的局部变量中。在被调用的FC1中, P##Start_Addr提供了保存参数Start_Addr的实参的地址V21.0,在FC1中用寄存器间接寻址指令“L  W [AR1,P#0.0]”来读取POINTER实参的个字(数据块编号),用指令“L  D [AR1,P#2.0]”来读取POINTER实参的2~5号字节(数据块内的变量地址P# DBX0.0)。间接寻址的操作数地址等于方括号中AR1的地址值加上逗号后面的地址偏移量。
    说到这里,我们可以看到传递POINTER参数类型的思路是非常清晰的,“Previous local data”用词是准确的,只不过所用的笔墨太少,背后的复杂过程需要我们猜想和验证。
    解决了这个问题后,有一些感触:
    1.由于语言和思维方式的差异,老外写的用户手册有的地方很难理解,这并不奇怪。奇怪的是网上有一些高手的“用户手册论”。用户手册肯定不是的,不可能回答所有的问题,有的问题还需要我们设法去探索和发现,包括用程序来验证我们的假设。
    2.这个问题的解决使我惊叹STEP 7强大的功能,如果没有断点和监控堆栈的功能,是不可能搞清楚这个问题的。还有别的PLC有这些功能吗?



相关分类
推荐产品
信息搜索
 
智能科技新闻
浔之漫智控技术(上海)有限公司
  • 地址:上海市松江区石湖荡镇塔汇路755弄29号1幢一层A区213室
  • 电话:15821971992
  • 邮件:2724917714@qq.com
  • 手机:15821971992
  • 联系人:聂聪
西门子新闻
西门子相关搜索