百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

虚实结合、安全高效——SIMIT在流程行业的应用

csdh11 2025-01-21 16:38 23 浏览

SIMIT Simulation Framework,简称SIMIT。它是西门子推出的一个仿真平台,主要有两个应用方向:虚拟调试和操作员培训。在流程行业的虚拟调试方面,SIMIT不仅可以做信号级仿真(即我们平时说的DI、DO、AI、AO),也支持设备级仿真(如:电机、阀门和控制器等),甚至能够实现一些简单的过程级仿真(如:反应釜及一些工艺反应过程等)。如下图所示:

本文主要介绍SIMIT在流程行业的应用场景。文中所使用的软件为:PCS 7 V9.1 ASIA和SIMIT V10.3 Upd1。

信号级仿真

Couplings是自动化系统与仿真模型之间的接口。SIMIT包含所有必要的Couplings以适应不同的通信仿真和自动化环境的要求。支持与自动化系统实际硬件的通信(硬件在环)和仿真控制器的通信(软件在环)。SIMIT支持的Couplings如下图所示。

具体应用中可分为组态PLCSIM仿真组态Virtual Controller仿真和模拟信号的标准化三类。下面是实现方法的详细介绍。

组态PLCSIM仿真

首先是实现SIMIT和PLCSIM仿真软件的耦合,这部分仅需三步即可实现:

  1. 1.将AS程序中地址相关的符号表导出(按地址排序后,选择地址相关的符号,执行导出操作。此时仅导出选中部分的符号)。如下图所示。


2. SIMIT项目中新建Couplings,选择PLCSIM,然后在SIMIT中打开该Couplings,按照下图中的步骤导入第一步中导出的符号表。


3. 最后,先运行PLCSIM,然后点击SIMIT工具栏的运行按钮开始仿真。仿真结果如下图所示。

组态Virtual Controller仿真

与Virtual Controller的耦合只需在新建耦合时,选择Virtual Controller,然后在弹出对话框中选择对应的项目及所需的AS站即可。如下图所示。

启动Virtual Controller仿真,就可以像使用真实CPU一样下载硬件组态和程序。仿真界面如下图所示。

模拟信号的标准化

对于模拟量,PCS 7与SIMIT之间通过编程接口实现数据的转换,即原始值仍以16位(2Byte)读取或写入,SIMIT中提供两种方式将原始值转换位对应的物理值。

1. 标准控件比例(如下图所示)

2. Coupling编辑器比例(如下图所示)

设备级的仿真

设备级的仿真

在实际的工业自动化现场,AS系统负责发送控制信号到设备层级的执行设备(如电机、阀门等),同时这些执行设备将现场的实际状态反馈回AS。在SIMIT仿真系统中,使用图形化的编程方式,将上述设备的仿真模型程序以Component(组件)的形式呈现。在SIMIT Basic Components中涵盖了用于设备层仿真的大部分Components,如阀门、泵、电机、驱动、Simocode等。参考下图。

此外如果基本组件无法满足要求,也支持用户自定义Component实现定制化的功能,还可以使用CTE进行开发。

下面就以电磁阀为例说明SIMIT中如何手动搭建仿真模型。在SIMIT中可以按照PCS 7项目中的层级结构创建相同层级结构的Chart文件夹。如下图所示。

在SIMIT对应图表文件夹下新建Chart。此处以NK111电磁阀为例。在SIMIT Basic Components中拖拽如下组件到图表:DriveV1(阀门仿真模型)、Connector(全局连接)、Input(输入信号)、OutPut(输出信号)、MUL(模拟量乘法)、XOR(异或运算)。然后为输入和输出信号分配对应的AS中的I/O符号地址。参考下图的布局进行各个组件之间的互连。

在该仿真模型中,阀门可以理解为现场设备,所以开命令DO信号给到DriveV1的输入即Open开命令,DriveV1的输出即实际位置信号反馈给AS,所以开到位和关到位信号分别连接到DriveV1的100和0的输出管脚。对于DriveV1的反馈时间是指仿真模型收到命令后多久开或关到位,并不是修改PCS 7 中Valve的监视时间。

完成仿真模型搭建后,下载程序至Virtual Controller或PLCSIM,激活SIMIT和OS,能够实现整个系统的测试。NK111的仿真过程如下图所示。

同理,其他设备的仿真也可以参考上述步骤进行模型搭建。

使用Template和CMT批量导入

实际应用中为了提高模型搭建的效率。SIMIT提供多种批量导入的方式来简化工作。比如:Table导入、CMT导入、IEA导入以及Automated导入等。如果上述例子中有多个和NK111相同类型的阀门,我们就可以通过批量的方式创建设备。以提高工作效率。

此处为大家介绍如何通过CMT批量导入来创建NK113和NK114的仿真模型。前面已经创建了NK111的仿真模型,NK113与NK114模型结构与之一致,只是所连接的信号或参数不同。因此,我们首先使用NK111仿真模型创建Templates。如下图所示。

打开所创建的GS_ValveLean的模板,因为Templates中并非实际仿真模型,所以在实际的参数位置需使用占位符+固定书写格式。这样在导入XML时,占位符位置会被PCS7 CMT导出的XML信息进行替代。如下图所示。

接着便可以将PCS 7的当前项目导出成XML。支持完整导出也可以选择部分导出。如下图所示。

最后参考下图,在SIMIT侧导入PCS 7项目中导出的XML文件即可批量创建CM示例对应的仿真模型。

SIMIT导入XML后的结果如下图所示。已经自动生成了NK113和NK114的仿真模型,而且占位符也已经替换为对应CM实例的实际参数。

过程级的仿真

对于过程级仿真需要工程师对工业过程有一定的认识。在此基础上能够使用数学语言把模型建立出来,并通过SIMIT来创建和仿真该模型,从而与自动化系统形成闭环。

一些简单的模型可以直接通过预置的组件完成创建和仿真工作,但是过程级的仿真可能会很复杂,预置的组件不一定能完成所有的过程建模和仿真。SIMIT还提供了用于不同行业的扩展库,如下表所示。

此外,SIMIT还可以根据需求与第三方专业平台通信进行联合仿真,比如:MATLAB/SIMULINK、PSE-gPROMS、Aspen HYSYS等。

以前面章节的项目为例,此处介绍如何创建该项目物料传输模型和原料罐的液位模型。在创建过程级仿真模型之前需要具备如下条件:

  • 必须清楚要模拟过程的物理关系或简化模型
  • 已在SIMIT中完成设备级仿真的搭建

在该项目中仿真如下过程:

  • 原料罐进料(原料罐液位范围为:0-500L)
  • 反应釜进料(两个反应釜的液位均为:0-1000L)
  • 原料罐到两个反应釜的流量模拟(流量范围为:0-3L/s)

根据要仿真过程中原料罐到两个反应斧的流量范围均为0-3L/s,可以创建如下图所示的物料传输模型:

此处设计原料罐液位低于80L时自动以15L/s的流量补料,当液位高于420L时停止补料(防止只出不进,原料罐彻底排空后无法仿真液位变化)。结合前面物料传输模型换算出的出口流量可以创建原料罐液位控制的模型。如下图所示。

模型中设计反应釜液位高于900L时自动以15L/s的流量排料,当液位低于100L时停止排料(防止只进不出,反应釜加满后无法仿真液位变化)。结合前面物料传输模型换算出的反应釜入口流量,可以创建反应釜液位控制的模型。如下图所示。

过程级的仿真在PCS 7项目中的体现如下图所示,原料罐和反应釜的液位可以根据设备状态自动调节。

总结

借助于SIMIT在信号级、设备级以及工艺级的仿真实现自动化系统虚拟调试,能够在提高生产效率的同时显著降低调试的风险;能够在提高项目灵活性的同时保证很高的安全性。

猜你喜欢:

PLC 工程师需要了解的几个 SCL 实用小技巧

有型有范——如何实现 S7-1200/S7-1500 程序的规范化?

相关推荐

探索Java项目中日志系统最佳实践:从入门到精通

探索Java项目中日志系统最佳实践:从入门到精通在现代软件开发中,日志系统如同一位默默无闻却至关重要的管家,它记录了程序运行中的各种事件,为我们排查问题、监控性能和优化系统提供了宝贵的依据。在Java...

用了这么多年的java日志框架,你真的弄懂了吗?

在项目开发过程中,有一个必不可少的环节就是记录日志,相信只要是个程序员都用过,可是咱们自问下,用了这么多年的日志框架,你确定自己真弄懂了日志框架的来龙去脉嘛?下面笔者就详细聊聊java中常用日志框架的...

物理老师教你学Java语言(中篇)(物理专业学编程)

第四章物质的基本结构——类与对象...

一文搞定!Spring Boot3 定时任务操作全攻略

各位互联网大厂的后端开发小伙伴们,在使用SpringBoot3开发项目时,你是否遇到过定时任务实现的难题呢?比如任务调度时间不准确,代码报错却找不到方向,是不是特别头疼?如今,随着互联网业务规模...

你还不懂java的日志系统吗 ?(java的日志类)

一、背景在java的开发中,使用最多也绕不过去的一个话题就是日志,在程序中除了业务代码外,使用最多的就是打印日志。经常听到的这样一句话就是“打个日志调试下”,没错在日常的开发、调试过程中打印日志是常干...

谈谈枚举的新用法--java(java枚举的作用与好处)

问题的由来前段时间改游戏buff功能,干了一件愚蠢的事情,那就是把枚举和运算集合在一起,然后运行一段时间后buff就出现各种问题,我当时懵逼了!事情是这样的,做过游戏的都知道,buff,需要分类型,且...

你还不懂java的日志系统吗(javaw 日志)

一、背景在java的开发中,使用最多也绕不过去的一个话题就是日志,在程序中除了业务代码外,使用最多的就是打印日志。经常听到的这样一句话就是“打个日志调试下”,没错在日常的开发、调试过程中打印日志是常干...

Java 8之后的那些新特性(三):Java System Logger

去年12月份log4j日志框架的一个漏洞,给Java整个行业造成了非常大的影响。这个事情也顺带把log4j这个日志框架推到了争议的最前线。在Java领域,log4j可能相对比较流行。而在log4j之外...

Java开发中的日志管理:让程序“开口说话”

Java开发中的日志管理:让程序“开口说话”日志是程序员的朋友,也是程序的“嘴巴”。它能让程序在运行过程中“开口说话”,告诉我们它的状态、行为以及遇到的问题。在Java开发中,良好的日志管理不仅能帮助...

吊打面试官(十二)--Java语言中ArrayList类一文全掌握

导读...

OS X 效率启动器 Alfred 详解与使用技巧

问:为什么要在Mac上使用效率启动器类应用?答:在非特殊专业用户的环境下,(每天)用户一般可以在系统中进行上百次操作,可以是点击,也可以是拖拽,但这些只是过程,而我们的真正目的是想获得结果,也就是...

Java中 高级的异常处理(java中异常处理的两种方式)

介绍异常处理是软件开发的一个关键方面,尤其是在Java中,这种语言以其稳健性和平台独立性而闻名。正确的异常处理不仅可以防止应用程序崩溃,还有助于调试并向用户提供有意义的反馈。...

【性能调优】全方位教你定位慢SQL,方法介绍下!

1.使用数据库自带工具...

全面了解mysql锁机制(InnoDB)与问题排查

MySQL/InnoDB的加锁,一直是一个常见的话题。例如,数据库如果有高并发请求,如何保证数据完整性?产生死锁问题如何排查并解决?下面是不同锁等级的区别表级锁:开销小,加锁快;不会出现死锁;锁定粒度...

看懂这篇文章,你就懂了数据库死锁产生的场景和解决方法

一、什么是死锁加锁(Locking)是数据库在并发访问时保证数据一致性和完整性的主要机制。任何事务都需要获得相应对象上的锁才能访问数据,读取数据的事务通常只需要获得读锁(共享锁),修改数据的事务需要获...