测试过程是软件开发周期的重要组成部分。应尽快发现问题陈述、建筑设计和程序代码编写方面的错误,直至导致未能在时限内保留或产生其他负面后果。 办公环境中自动化过程控制系统开发的核心问题是,测试完全缺乏自动化对象。此外,由于安全、成本等原因,有些情况无法在真实对象上进行模拟。 问题的一个解决方案是开发具有足够保真度水平的自动过程模拟器,即所谓的"工厂验收测试(FAT)模拟器"。 建议的模拟器的三层架构可以 分开:
- 用户界面是专门为执行测试的专家准备的。此图层旨在模拟器参数控制,以模拟各种情况。
- 模拟逻辑- 根据测试仪设置的参数、测试系统的输出信号和模拟器中设置的逻辑,模拟对象的行为进行主结构模拟。此层的运行结果由用户界面显示,并以输入信号的形式传输到测试系统。
- 通信-该层负责模拟器和测试系统之间的信息传输。
实现较低架构层的两个主要变种:硬件模拟器和软件模拟器。 测试系统的硬件模拟器物理通道以"输入通道到输出通道"为原则连接到模拟器,反之亦然。 作为实现模拟逻辑的一个变种 - PLC,作为用户界面 - SCADA 系统的合适 HMI 包可以使用。
优势:
- 测试系统的软件和硬件部分(包括输入/输出信号通道)同时进行测试。
弊:
- 需要足够的免费硬件基础,按信号数量与测试的系统尺寸成正比。
- 应考虑模拟器和测试系统之间连接的时间。
据认为,硬件模拟器适合测试小型(根据输入/输出信号的数量)自动化系统或由小型独立子系统组成的系统。 测试系统和模拟器信号的软件模拟器连接由软件执行。 在最简单的情况下,模拟逻辑可以在测试系统的PLC中实现。在测试过程中,PLC 忽略物理通道的输入信号,并利用系统输出信号的辅助逻辑来模仿此信息。
优势:
- 未观察到硬件模拟器的两个缺点。
弊:
- 系统输入/输出信号的通道需要单独测试。
- PLC 程序代码很复杂 - 具有与测试系统任务无关的功能,需要额外资源(CPU、内存)。
如果仅将信息替换任务留在PLC中,则该方法的缺点之一可能会部分消除,例如,取决于软件交换机的状态。在这种情况下,应在其他方法的帮助下实现模拟逻辑,网络接口 (OPC, Modbus) 可用于数据通信。
«Process Simulator»-是工厂验收测试模拟器快速发展的通用平台。 模拟器可用于自动过程控制系统软件的调试和测试,以及技术操作员的培训,他们将在以后操作该系统。 模拟器项目以 XML 文件的形式保存,允许手动编辑并使用模板代码生成和版本控制系统。 插件架构允许功能无限扩展。API 是开放的,用于创建与与项目、转换器和模拟对象的连接。
"Process Simulator"架构集成在一个应用程序中,有三个独立的层:
- 通信
- 模拟逻辑
- 用户界面
通信
通信层由连接、项目和转换器组成。有"通信管理器"窗口来管理所有这些元素(工具- 通信)。
连接定义数据的来源和目的地点,例如 OPC 服务器或 S7-PLCSim 实例。项目为下一层提供数据值。如果需要,转换器用于转换数据值。
用户可以随时手动连接和断开连接。如果出现错误,可能会自动断开连接。
内置 OPC DA 服务器允许使用外部 OPC 客户端访问所有项目。每个应用程序实例注册新的 OPC 服务器,其名称为"进程模拟器 3.1"。其中 3 是唯一的数字,可在主窗口的标题(过程模拟器 [3])上找到。
模拟逻辑
模拟逻辑层基于仿真对象。有"模拟管理器"窗口来管理它们(工具- 模拟)。
模拟对象实现模拟逻辑,并使用项目进行通信。在模拟过程中,将执行活动对象的逻辑。用户可以随时手动激活和停用对象。如果出现错误,可能会自动停用。
用户可以使用"选项"窗口调节模拟刷新率。还有一些对象停用的项目读取和写错的设置。
用户界面
用户界面是使用页面和面板创建的。模拟对象或项目可以以无限数量的面板的形式显示在一个或多个页面上。还有一些面板未连接到对象,例如文本标签、组框、矢量图像等。"添加面板"窗口用于创建任何类型的面板(工具- 可视化-添加面板)。
在设计模式下,如果支持,可以移动面板并更改其大小。也可以在此模式下重新排列页面。
面板设置可从主(工具-可视化-设置面板)或上下文菜单调用。小组的上下文菜单中有一些其他项目。
主窗口的状态行显示最后一条错误消息。"日志"窗口可以通过双击状态行或从主菜单(工具- 日志)调用。应用程序安装文件夹的"日志"目录中存在当前日志文件 (rtf)。
可用链接:
- Internal
- ModbusN
- MQTT
- OPC
- OPC UA
- S7IsoTCP
- S7PLCSim
- S7PLCSimAdv2
内部
内部连接用于应用程序内各种对象之间的通信。例如,一个模拟对象的输出可以传输到另一个对象的输入。
连接/断开连接状态和项目访问状态仅用于仿制目的。
内部项目可能包含布尔类型、字节、SByte、Int16、Int32、Int64、UInt16、UInt32、UInt64、单、双、十进制、字符串、字符串、日期时间和这些类型的一维阵列的值。
ModbusN
ModbusN 连接旨在通过以太网或串行端口使用 modbus 协议进行通信。连接基于 Nmodbus 库 (https://github.com/NModbus/NModbus)。
"断开连接前的错误"属性可调节在自动断开连接之前将传递多少读/写错误。如果值为零-禁用。
MQTT
MQTT 连接旨在与 MQTT 经纪人 (IoT) 进行通信。连接基于 M2Mqtt 库 - MQTT 客户端的开源实现(https://m2mqtt.wordpress.com/)。
OPC 连接允许与 OPC DA 服务器进行数据通信。
某些 OPC 服务器无法保持高负载。选项"使用同步写入"有时有助于避免此限制。请注意,此选项使模拟周期更长。
OPC服务器不希望客户端解决OPC项目的标准方法。选项"使用访问路径"、"分离器"和"忽略根"旨在根据具体服务器的要求简化项目创建。
OPC UA 连接允许与 OPC UA 服务器进行数据通信。
S7IsoTCP 连接旨在与西门子 PLC 进行通信:S7-300 和 S7-400(1200/1500 也部分支持)。连接基于 Snap7 库 - S7 协议(http://snap7.sourceforge.net)的开源实现。
"断开连接前的错误"属性可调节在自动断开连接之前将传递多少读/写错误。如果值为零-禁用。
"减速"值用于调节 CPU 负载,与 CPU 负载成反比。
S7PLCSim
S7PLCSim 连接旨在与西门子 S7PLCSim V5.4 进行通信。支持 DB 和М记忆、I 的写作和 Q 的阅读。
"减速"值用于调节 CPU 负载,与 CPU 负载成反比。
如果连接出现问题,请尝试以管理员身份运行 TIAPortal/Step7。
如果 Q 读取出现问题,当通信与其他内存区域配合良好时,请尝试将硬件配置加载到 S7-PLCSim。
S7PLCSimAdv2
S7PLCSimAdv2连接旨在与西门子西门子S7PLCSim高级v2通信。
其他功能
模拟对象
- 动画.图像移动- 移动和旋转图像。
- 二进制.计数- 计算布尔值的正负正面。
- 二进制.延迟-延迟布尔值的正负正面。
- 二进制逻辑-逻辑操作:和,或,XOR,不是,南德,诺尔,NXOR。
- 二进制.触发-触发逻辑。
- 项.排列器- 按索引将项目与数组拆分到不同的项目。
- 项目.位分散器-按索引将项目位拆分为不同的项目。
- 项目.延迟-以可调延迟将一个项目值复制到命令中的另一个项目值。
- 项目.时间线-每隔一段时间将值写入项目。
- 项目.写到文件-写值到CSV文件。
- 管道.泵-泵模拟。
- 管道.阀门执行器模拟。
- Real.计算器- 算术操作:添加、减去、乘法、分项、莫杜洛、电源、日志、日志(自然)、日志(基数 10)、指数、方根、正弦、合成、切线、绝对、圆形、截断。
- 真实.比较器-两个值的比较。
- 真实.发电机-信号生成:正弦,广场,锯牙,随机。
- 真实。拉格-第一顺序滞后。
- 真实。一二-一个值从两个布尔开关。
- 实际.缩放- 使用配置范围的缩放值。
- 真实.XY 依赖性- 将函数 Y=F (X) 定义为点阵列。
- 机器人.输送机-传送器模拟。
- 机器人.六轴机器人模拟。可连接到 RoKiSim 1.7 进行可视化(http://www.parallemic.org/RoKiSim.html)。
- 脚本.CSharp - C# 语言中的简单脚本。
- 脚本.C夏普FSM - C#语言中的有限状态机器。
- 传感器.模拟- 显示和更改模拟信号与缩放和阈值。
- 传感器.离散- 显示和更改离散信号。
- 语音.命令- 识别预先定义的短语并编写相应的值。