首页 > 编程语言 >一种基于 Python 的 Pscad 仿真数据处理方案

一种基于 Python 的 Pscad 仿真数据处理方案

时间:2023-01-18 22:45:02浏览次数:68  
标签:仿真 文件 数据文件 Python PsCad 数据处理 inf Pscad out

起因

在使用 PsCad 进行仿真的过程中,常常需要记录数据。PsCad 会默认将仿真数据存储为 .out 文件和 .inf 文件。然而,这样的数据文件并不能直接导入到 Python 或者 Matlab 中,这就对进一步的数据分析处理造成困难。

虽然在 PsCad 中也有一些数学处理的方法,但是终究不能使人满意。因此,尝试通过 Python 脚本将数据文件进行转换。以下介绍一种基于 Python 的 PsCad 仿真数据处理方法。

处理思路

准备工作

本脚本依赖 PsCad 官方推出的自动化库 mhrc.automation ,这个自动化库可以实现 Python 脚本自动控制 PsCad 进行仿真的功能。(在本文中对该库的应用只是冰山一角,其余功能有待探究)

安装此库的方法,如果有时间,会再写一篇文章。这里只给出官方介绍,不做过多阐述。官方文档

PsCad 数据文件的特点

PsCad 如何设置数据的输出,不是本文重点内容,假设已经得到了 out 和 inf 文件

打开一份 out 文件 Constant_source_short_circuit_01.out,如下:

image-20230118203333570

其中第一列数据为时间,其余列数为数据,对应仿真中的 channel 。需要注意,一个 out 文件最多只能存储10列数据,如果记录的 channel 较多,将会分成几个文件,并在文件名中以 _01, _02 等进行区分。这一点是编程的关键,将在下面进行更为系统的叙述。

显然,我们并不知道每一列数据代表的是哪一个 channel ,这就需要 inf 文件。打开对应的 Constant_source_short_circuit.inf 文件,如下:

image-20230118203922233

其中,PGB(1) 指的是第一列数据(考虑到时间,准确的说是第2列),它代表Ik:1 这项数据,其他内容是关于这项数据的单位等其他信息。

这样,我们只要从 inf 中读入数据,利用正则提取相关信息,再匹配到 out 文件中,即可实现数据识别,最后写入 csv 文件即可。

这里需要指出,最初我尝试了自己编写程序进行匹配,并最终实现了这一功能,但是了解到已有 PsCad 提供的自动化接口后,还是感觉悔恨不已,这充分说明深入搜集信息对避免重复造轮子是多么的重要~

PsCad数据文件的命名规则

在进行正式处理前,了解 PsCad 数据文件的命名规则是有必要的。由于仿真时可能是单次仿真,也有可能是采用 “Multiple Run” 组件进行多次仿真,因此输出的文件命名是不同的。分为如下几种情况:

  1. 单次仿真且记录 Channel 数较少

    <basename>_01.out <basename>.inf

  2. 单次仿真且记录 Channel 数较多

    <basename>_0#.out <basename>.inf,其中,# 代表第几个数据文件,一个数据文件最多存储 10 个 channel。

  3. 多次仿真

    <basename>_r0000?_0#.out <basename>_0000?.inf,其中,?表示第几次仿真,# 表示第几个数据文件。

请注意,上面的 <basename> 通常是仿真项目名,这一点可以在 PsCad 的设置中进行设定。

同时,本程序是基于这样的命名规则进行处理的,鉴于本人水平有限,不排除出现其他可能性,如有,欢迎对程序进行完善~ GitHub 地址将在文末给出。

程序使用

在编程时,考虑到如下事实:不可能在每个仿真文件夹内都 copy 一份 Python 脚本。因此,利用命令行工具,只提供路径等必要参数就能实现功能,显得十分必要。

因此,使用程序时,打开 cmd 命令行或 Anaconda Prompt(如果你进行了环境管理,推荐使用后者)输入:

python < PyOut.py 文件绝对路径> -i=……    -o=……     -b=……

其中,各项参数说明如下:

  1. -i--input :仿真数据文件存储路径,例如:D:\Constant_source_short_circuit\Constant_source_short_circuit.gf42, 其注意,务必是以 .gf42.gf46 等结尾的文件夹。
  2. -o--output :转换后的目标路径,请务必确保这一路径不存在(这是由于 PsCad 的自动库中采用函数无法更改,所以导致的不便)
  3. b--basename :仿真的项目名,其值在“PsCad数据文件的命名规则”中已有涉及。

运行实例如下图所示:

image-20230118220315824

出现 csv文件已转换至…… ,即说明文件处理完成。

事实上,推荐大家采用环境管理将 mhrc.automation 库隔离,因为在实际使用中发现其与一些常用库的版本较难匹配,使用 conda 是一个不错的选择。

源码链接

附上代码 GitHub 地址:GitHub

在这里,有必要说明一点:鉴于个人水平以及仿真经验,给出的程序未必能够普适,如果大家在应用中发现有无法使用的情况,请联系我或自行修改,欢迎大家的 fork 与 commit~ 以及关于程序的建议,也希望有大佬指出,不甚感激~

标签:仿真,文件,数据文件,Python,PsCad,数据处理,inf,Pscad,out
From: https://www.cnblogs.com/VicoZhang/p/17060788.html

相关文章

  • python基础: 垃圾回收机制、字符编码、文件操作
    目录垃圾回收机制引用计数标记清除分代回收字符编码简介发展史字符编码的实操文件操作垃圾回收机制说明:我们在编写代码的时候涉及到存储空间的申请和存储空间的释放的操......
  • python基础: 文件操作
    目录文件操作简介文件操作:什么是文件:打开文件的俩种方式文件读写模式r-----只读模式(默认模式):w----只写模式:a----只追加模式:文件操作模式拷贝功能文件的诸多操作方法文件操......
  • 【Python学习】cannot write mode rgba as jpg解决
    从网上下载图片作为数据集,想以jpg格式保存,但因为原图片的格式不同,保存时出现了报错在CSDN看到给出的一种解决办法img.convert('RGB')但是依旧会报错,鲜红的报错啊后......
  • # yyds干货盘点 # 使用Python批量实现某一Excel文件中每3行数据存一个Excel文件
    大家好,我是Python进阶者。一、前言前几天在帮助粉丝解决问题的时候,遇到一个简单的小需求,这里拿出来跟大家一起分享,后面再次遇到的时候,可以从这里得到灵感。二、需求澄清粉丝......
  • 15个python小例子助你快速回忆python
    #-*-coding:utf-8-*-"""====================================@FileName:20个小知识.py@Time:2023/1/1717:59@ProgramIDE:PyCharm@CreatebyAuthor:一一......
  • Python基础之函数
    目录Python基础之函数一、函数相关的基础知识1.函数的语法结构2.函数的定义与调用3.函数的分类4.函数的返回值5.函数的参数6.名称空间7.名字的查找顺序以及实际案例8.globa......
  • python os模块总结
    os(operatingsystem)是python标准库中的操作系统接口,提供了很多与操作系统进行交互的函数。下面我将在C:\Users\Administrator\try这一路径下执行test.py来详细说明os的......
  • python pathlib.Path 路径拼接
    frompathlibimportPatha=Path(r'E:\python_apps\bk-pipline\x52_merge_workspace\time_flush\client\3droom\A-1.17.0.xml')b=Path(r'E:\python_apps\bk-pipline\x......
  • python的assert和raise的用法
    一、raise用法在程序运行的过程当中,除了python自动触发的异常外,python也允许我们在程序中手动设置异常,使用raise语句即可,为什么还要手动设置异常呢?首先要分清楚程序发......
  • Python文件操作基础方法
    importosimportshutil#创建文件defCreateFile(filename):f=open(filename,mode='a',encoding='utf-8')f.close()print("-------文件创建成功------......