Compare commits

..

89 Commits

Author SHA1 Message Date
Xuwznln
bcb1790897 v0.11.2 2026-05-14 18:21:43 +08:00
Xuwznln
916a6dfc60 env installation fix
fix pack install 2

fix pip install & git install failed

fix pack build 1

Update SKILL.md

Update Skills

Update registry for all param desc
2026-05-14 18:21:22 +08:00
Xuwznln
f71ea2a258 Support display_name & desc in new registry system 2026-04-27 20:28:18 +08:00
Xuwznln
f6b2bfaf8e upgrade to 0.11.1 2026-04-22 19:54:59 +08:00
Xuwznln
71107e9552 use gitee to install pylabrobot
fix virtual import
2026-04-22 19:54:57 +08:00
Xuwznln
1ad4766221 fix possible conversion error 2026-04-22 19:54:55 +08:00
Xuwznln
67a74172dc v0.11.0 2026-04-16 01:35:01 +08:00
Xuwznln
ccbf5378dd update workbench example
update aksk desc

print res query logs

Fix skills exec error with action type

Update Skills

Update Skills addr

Change uni-lab. to leap-lab.
Support unit in pylabrobot

Support async func.

change to leap-lab backend. Support feedback interval. Reduce cocurrent lags.

fix create_resource_with_slot

update unilabos_formulation & batch-submit-exp

scale multi exec thread up to 48

update handle creation api

fit cocurrent gap

add running status debounce

allow non @topic_config support

update skill

add placeholder keys

always free

提交实验技能

disable samples

correct sample demo ret value

新增试剂reagent

update registry

新增manual_confirm

add workstation creation skill

add virtual_sample_demo 样品追踪测试设备

add external devices param
fix registry upload missing type

fast registry load

minor fix on skill & registry

stripe ros2 schema desc
add create-device-skill

new registry system backwards to yaml

remove not exist resource

new registry sys
exp. support with add device

correct raise create resource error

ret info fix revert

ret info fix

fix prcxi check

add create_resource schema

re signal host ready event

add websocket connection timeout and improve reconnection logic

add open_timeout parameter to websocket connection
add TimeoutError and InvalidStatus exception handling
implement exponential backoff for reconnection attempts
simplify reconnection logic flow
2026-04-16 01:33:36 +08:00
Xuwznln
c001f6a151 v0.10.19
fast registry load

minor fix on skill & registry

stripe ros2 schema desc
add create-device-skill

new registry system backwards to yaml

remove not exist resource

new registry sys
exp. support with add device

add ai conventions

correct raise create resource error

ret info fix revert

ret info fix

fix prcxi check

add create_resource schema

re signal host ready event

add websocket connection timeout and improve reconnection logic

add open_timeout parameter to websocket connection
add TimeoutError and InvalidStatus exception handling
implement exponential backoff for reconnection attempts
simplify reconnection logic flow

add gzip

change pose extra to any

add isFlapY
2026-03-22 04:25:07 +08:00
Xuwznln
145fcaae65 support container as example
add z index
2026-03-03 18:03:53 +08:00
Xuwznln
a79c0a88bf fix container volume
update materials

更新prcxi deck & 新增 unilabos_resource_slot

new workflow & prcxi slot removal

fix size change
2026-03-03 17:20:06 +08:00
Xuwznln
06b6f0d804 v0.10.18 2026-02-28 09:53:31 +08:00
Xuwznln
b551e69f64 no opcua installation on macos
fix possible crash

fix deck & host_node

set liquid with tube

add test_resource_schema

fix test resource schema

registry update & workflow update

add test mode

support description & tags upload

fix config load

fix log

add registry name & add always free

correct config organic synthesis

Adapt to new scheduler, sampels, and edge upload format (#230)

* add sample_material

* adapt to new samples sys

* fix pump transfer. fix resource update when protocol & ros callback

* Adapt to new scheduler.

Feat/samples (#229)

* add sample_material

* adapt to new samples sys

adapt to new samples sys

adapt to new edge format

workflow upload & prcxi transfer liquid

lh liquid

speed up registry load

workflow upload & set liquid fix & add set liquid with plate

fix upload workflow json
2026-02-28 09:46:46 +08:00
Xuwznln
5179a7e48e workflow upload & set liquid fix & add set liquid with plate
fix upload workflow json

save class name when deserialize & protocol execute test

Support root node change pos

add unilabos_class

gather query
2026-02-02 18:26:41 +08:00
Xuwznln
3a2d9e9603 transfer liquid handles
add msg goal

Fix OT2 & ReAdd Virtual Devices
2026-01-28 11:46:54 +08:00
Xuwznln
a277bd2bed CI Check use production mode 2026-01-27 19:59:22 +08:00
Xuwznln
176de521b4 v0.10.17 2026-01-27 19:41:12 +08:00
dependabot[bot]
38c5c267af Fix Conda Build
ci(deps): bump actions/checkout from 4 to 6 (#223)

Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 6.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v6)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

ci(deps): bump actions/upload-pages-artifact from 3 to 4 (#225)

Bumps [actions/upload-pages-artifact](https://github.com/actions/upload-pages-artifact) from 3 to 4.
- [Release notes](https://github.com/actions/upload-pages-artifact/releases)
- [Commits](https://github.com/actions/upload-pages-artifact/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/upload-pages-artifact
  dependency-version: '4'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

ci(deps): bump actions/upload-artifact from 4 to 6 (#224)

Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 6.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v4...v6)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

ci(deps): bump actions/configure-pages from 4 to 5 (#222)

Bumps [actions/configure-pages](https://github.com/actions/configure-pages) from 4 to 5.
- [Release notes](https://github.com/actions/configure-pages/releases)
- [Commits](https://github.com/actions/configure-pages/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/configure-pages
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-27 19:39:42 +08:00
Xuwznln
2a5ddd611d Upgrade to py 3.11.14; ROS2 Humble 0.7; unilabos 0.10.16
Workbench example, adjust log level, and ci check (#220)

* TestLatency Return Value Example & gitignore update

* Adjust log level & Add workbench virtual example & Add not action decorator & Add check_mode &

* Add CI Check

Fix/workstation yb revision (#217)

* Revert log change & update registry

* Revert opcua client & move electrolyte node

Workstation yb merge dev ready 260113 (#216)

* feat(bioyond): 添加计算实验设计功能,支持化合物配比和滴定比例参数

* feat(bioyond): 添加测量小瓶功能,支持基本参数配置

* feat(bioyond): 添加测量小瓶配置,支持新设备参数

* feat(bioyond): 更新仓库布局和尺寸,支持竖向排列的测量小瓶和试剂存放堆栈

* feat(bioyond): 优化任务创建流程,确保无论成功与否都清理任务队列以避免重复累积

* feat(bioyond): 添加设置反应器温度功能,支持温度范围和异常处理

* feat(bioyond): 调整反应器位置配置,统一坐标格式

* feat(bioyond): 添加调度器启动功能,支持任务队列执行并处理异常

* feat(bioyond): 优化调度器启动功能,添加异常处理并更新相关配置

* feat(opcua): 增强节点ID解析兼容性和数据类型处理

改进节点ID解析逻辑以支持多种格式,包括字符串和数字标识符
添加数据类型转换处理,确保写入值时类型匹配
优化错误提示信息,便于调试节点连接问题

* feat(registry): 新增后处理站的设备配置文件

添加后处理站的YAML配置文件,包含动作映射、状态类型和设备描述

* 添加调度器启动功能,合并物料参数配置,优化物料参数处理逻辑

* 添加从 Bioyond 系统自动同步工作流序列的功能,并更新相关配置

* fix:兼容 BioyondReactionStation 中 workflow_sequence 被重写为 property

* fix:同步工作流序列

* feat: remove commented workflow synchronization from `reaction_station.py`.

* 添加时间约束功能及相关配置

* fix:自动更新物料缓存功能,添加物料时更新缓存并在删除时移除缓存项

* fix:在添加物料时处理字符串和字典返回值,确保正确更新缓存

* fix:更新奔曜错误处理报送为物料变更报送,调整日志记录和响应消息

* feat:添加实验报告简化功能,去除冗余信息并保留关键信息

* feat: 添加任务状态事件发布功能,监控并报告任务运行、超时、完成和错误状态

* fix: 修复添加物料时数据格式错误

* Refactor bioyond_dispensing_station and reaction_station_bioyond YAML configurations

- Removed redundant action value mappings from bioyond_dispensing_station.
- Updated goal properties in bioyond_dispensing_station to use enums for target_stack and other parameters.
- Changed data types for end_point and start_point in reaction_station_bioyond to use string enums (Start, End).
- Simplified descriptions and updated measurement units from μL to mL where applicable.
- Removed unused commands from reaction_station_bioyond to streamline the configuration.

* fix:Change the material unit from μL to mL

* fix:refresh_material_cache

* feat: 动态获取工作流步骤ID,优化工作流配置

* feat: 添加清空服务端所有非核心工作流功能

* fix:修复Bottle类的序列化和反序列化方法

* feat:增强材料缓存更新逻辑,支持处理返回数据中的详细信息

* Add debug log

* feat(workstation): update bioyond config migration and coin cell material search logic

- Migrate bioyond_cell config to JSON structure and remove global variable dependencies
- Implement material search confirmation dialog auto-handling
- Add documentation: 20260113_物料搜寻确认弹窗自动处理功能.md and 20260113_配置迁移修改总结.md

* Refactor module paths for Bioyond devices in YAML configuration files

- Updated the module path for BioyondDispensingStation in bioyond_dispensing_station.yaml to reflect the new directory structure.
- Updated the module path for BioyondReactionStation and BioyondReactor in reaction_station_bioyond.yaml to align with the revised organization of the codebase.

* fix: WareHouse 的不可哈希类型错误,优化父节点去重逻辑

* refactor: Move config from module to instance initialization

* fix: 修正 reaction_station 目录名拼写错误

* feat: Integrate material search logic and cleanup deprecated files

- Update coin_cell_assembly.py with material search dialog handling
- Update YB_warehouses.py with latest warehouse configurations
- Remove outdated documentation and test data files

* Refactor: Use instance attributes for action names and workflow step IDs

* refactor: Split tipbox storage into left and right warehouses

* refactor: Merge tipbox storage left and right into single warehouse

---------

Co-authored-by: ZiWei <131428629+ZiWei09@users.noreply.github.com>
Co-authored-by: Andy6M <xieqiming1132@qq.com>

fix: WareHouse 的不可哈希类型错误,优化父节点去重逻辑

fix parent_uuid fetch when bind_parent_id == node_name

物料更新也是用父节点进行报送

Add None conversion for tube rack etc.

Add set_liquid example.

Add create_resource and test_resource example.

Add restart.
Temp allow action message.

Add no_update_feedback option.

Create session_id by edge.

bump version to 0.10.15

temp cancel update req
2026-01-27 15:21:55 +08:00
Xuwznln
8580b84167 Fix update with different spot and same parent 2026-01-08 03:46:44 +08:00
Xuwznln
3f80349d7d Force update resource when adding new resource / transfer to another resource
location not passed to ItemizedCarrier when assign child resource

Fix size not pass through.
2026-01-08 03:08:01 +08:00
Xuwznln
024156848e Fix build on macos-intel 2026-01-07 21:11:33 +08:00
Xuwznln
8066c200b9 Update README.md
Modify resource_tracker file module path.
2026-01-07 20:54:20 +08:00
Xuwznln
266366cc25 Bump version to 0.10.4 2026-01-07 20:46:23 +08:00
Xuwznln
121c3985cc Update LICENSE 2026-01-07 20:46:23 +08:00
Xuwznln
6ca5c72fc6 Fix drag materials.
Fix and tested new create_resource.

Update create_resource to resource tree mode.
2026-01-07 20:46:23 +08:00
Xianwei Qi
bc8c49ddda test_transfer_liquid 2026-01-07 20:45:41 +08:00
Xuwznln
28f93737ac Close #208. Fix mock devices. 2025-12-28 23:22:50 +08:00
ZiWei
5dc81ec9be bump version to 0.10.3
update registry

do not modify axis globally

Prcix9320 (#207)

* 0.10.7 Update (#101)

* Cleanup registry to be easy-understanding (#76)

* delete deprecated mock devices

* rename categories

* combine chromatographic devices

* rename rviz simulation nodes

* organic virtual devices

* parse vessel_id

* run registry completion before merge

---------

Co-authored-by: Xuwznln <18435084+Xuwznln@users.noreply.github.com>

* fix: workstation handlers and vessel_id parsing

* fix: working dir error when input config path
feat: report publish topic when error

* modify default discovery_interval to 15s

* feat: add trace log level

* feat: 添加ChinWe设备控制类,支持串口通信和电机控制功能 (#79)

* fix: drop_tips not using auto resource select

* fix: discard_tips error

* fix: discard_tips

* fix: prcxi_res

* add: prcxi res
fix: startup slow

* feat: workstation example

* fix pumps and liquid_handler handle

* feat: 优化protocol node节点运行日志

* fix all protocol_compilers and remove deprecated devices

* feat: 新增use_remote_resource参数

* fix and remove redundant info

* bugfixes on organic protocols

* fix filter protocol

* fix protocol node

* 临时兼容错误的driver写法

* fix: prcxi import error

* use call_async in all service to avoid deadlock

* fix: figure_resource

* Update recipe.yaml

* add workstation template and battery example

* feat: add sk & ak

* update workstation base

* Create workstation_architecture.md

* refactor: workstation_base 重构为仅含业务逻辑,通信和子设备管理交给 ProtocolNode

* refactor: ProtocolNode→WorkstationNode

* Add:msgs.action (#83)

* update: Workstation dev 将版本号从 0.10.3 更新为 0.10.4 (#84)

* Add:msgs.action

* update: 将版本号从 0.10.3 更新为 0.10.4

* simplify resource system

* uncompleted refactor

* example for use WorkstationBase

* feat: websocket

* feat: websocket test

* feat: workstation example

* feat: action status

* fix: station自己的方法注册错误

* fix: 还原protocol node处理方法

* fix: build

* fix: missing job_id key

* ws test version 1

* ws test version 2

* ws protocol

* 增加物料关系上传日志

* 增加物料关系上传日志

* 修正物料关系上传

* 修复工站的tracker实例追踪失效问题

* 增加handle检测,增加material edge关系上传

* 修复event loop错误

* 修复edge上报错误

* 修复async错误

* 更新schema的title字段

* 主机节点信息等支持自动刷新

* 注册表编辑器

* 修复status密集发送时,消息出错

* 增加addr参数

* fix: addr param

* fix: addr param

* 取消labid 和 强制config输入

* Add action definitions for LiquidHandlerSetGroup and LiquidHandlerTransferGroup

- Created LiquidHandlerSetGroup.action with fields for group name, wells, and volumes.
- Created LiquidHandlerTransferGroup.action with fields for source and target group names and unit volume.
- Both actions include response fields for return information and success status.

* Add LiquidHandlerSetGroup and LiquidHandlerTransferGroup actions to CMakeLists

* Add set_group and transfer_group methods to PRCXI9300Handler and update liquid_handler.yaml

* result_info改为字典类型

* 新增uat的地址替换

* runze multiple pump support

(cherry picked from commit 49354fcf39)

* remove runze multiple software obtainer

(cherry picked from commit 8bcc92a394)

* support multiple backbone

(cherry picked from commit 4771ff2347)

* Update runze pump format

* Correct runze multiple backbone

* Update runze_multiple_backbone

* Correct runze pump multiple receive method.

* Correct runze pump multiple receive method.

* 对于PRCXI9320的transfer_group,一对多和多对多

* 移除MQTT,更新launch文档,提供注册表示例文件,更新到0.10.5

* fix import error

* fix dupe upload registry

* refactor ws client

* add server timeout

* Fix: run-column with correct vessel id (#86)

* fix run_column

* Update run_column_protocol.py

(cherry picked from commit e5aa4d940a)

* resource_update use resource_add

* 新增版位推荐功能

* 重新规定了版位推荐的入参

* update registry with nested obj

* fix protocol node log_message, added create_resource return value

* fix protocol node log_message, added create_resource return value

* try fix add protocol

* fix resource_add

* 修复移液站错误的aspirate注册表

* Feature/xprbalance-zhida (#80)

* feat(devices): add Zhida GC/MS pretreatment automation workstation

* feat(devices): add mettler_toledo xpr balance

* balance

* 重新补全zhida注册表

* PRCXI9320 json

* PRCXI9320 json

* PRCXI9320 json

* fix resource download

* remove class for resource

* bump version to 0.10.6

* 更新所有注册表

* 修复protocolnode的兼容性

* 修复protocolnode的兼容性

* Update install md

* Add Defaultlayout

* 更新物料接口

* fix dict to tree/nested-dict converter

* coin_cell_station draft

* refactor: rename "station_resource" to "deck"

* add standardized BIOYOND resources: bottle_carrier, bottle

* refactor and add BIOYOND resources tests

* add BIOYOND deck assignment and pass all tests

* fix: update resource with correct structure; remove deprecated liquid_handler set_group action

* feat: 将新威电池测试系统驱动与配置文件并入 workstation_dev_YB2 (#92)

* feat: 新威电池测试系统驱动与注册文件

* feat: bring neware driver & battery.json into workstation_dev_YB2

* add bioyond studio draft

* bioyond station with communication init and resource sync

* fix bioyond station and registry

* fix: update resource with correct structure; remove deprecated liquid_handler set_group action

* frontend_docs

* create/update resources with POST/PUT for big amount/ small amount data

* create/update resources with POST/PUT for big amount/ small amount data

* refactor: add itemized_carrier instead of carrier consists of ResourceHolder

* create warehouse by factory func

* update bioyond launch json

* add child_size for itemized_carrier

* fix bioyond resource io

* Workstation templates: Resources and its CRUD, and workstation tasks (#95)

* coin_cell_station draft

* refactor: rename "station_resource" to "deck"

* add standardized BIOYOND resources: bottle_carrier, bottle

* refactor and add BIOYOND resources tests

* add BIOYOND deck assignment and pass all tests

* fix: update resource with correct structure; remove deprecated liquid_handler set_group action

* feat: 将新威电池测试系统驱动与配置文件并入 workstation_dev_YB2 (#92)

* feat: 新威电池测试系统驱动与注册文件

* feat: bring neware driver & battery.json into workstation_dev_YB2

* add bioyond studio draft

* bioyond station with communication init and resource sync

* fix bioyond station and registry

* create/update resources with POST/PUT for big amount/ small amount data

* refactor: add itemized_carrier instead of carrier consists of ResourceHolder

* create warehouse by factory func

* update bioyond launch json

* add child_size for itemized_carrier

* fix bioyond resource io

---------

Co-authored-by: h840473807 <47357934+h840473807@users.noreply.github.com>
Co-authored-by: Xie Qiming <97236197+Andy6M@users.noreply.github.com>

* 更新物料接口

* Workstation dev yb2 (#100)

* Refactor and extend reaction station action messages

* Refactor dispensing station tasks to enhance parameter clarity and add batch processing capabilities

- Updated `create_90_10_vial_feeding_task` to include detailed parameters for 90%/10% vial feeding, improving clarity and usability.
- Introduced `create_batch_90_10_vial_feeding_task` for batch processing of 90%/10% vial feeding tasks with JSON formatted input.
- Added `create_batch_diamine_solution_task` for batch preparation of diamine solution, also utilizing JSON formatted input.
- Refined `create_diamine_solution_task` to include additional parameters for better task configuration.
- Enhanced schema descriptions and default values for improved user guidance.

* 修复to_plr_resources

* add update remove

* 支持选择器注册表自动生成
支持转运物料

* 修复资源添加

* 修复transfer_resource_to_another生成

* 更新transfer_resource_to_another参数,支持spot入参

* 新增test_resource动作

* fix host_node error

* fix host_node test_resource error

* fix host_node test_resource error

* 过滤本地动作

* 移动内部action以兼容host node

* 修复同步任务报错不显示的bug

* feat: 允许返回非本节点物料,后面可以通过decoration进行区分,就不进行warning了

* update todo

* modify bioyond/plr converter, bioyond resource registry, and tests

* pass the tests

* update todo

* add conda-pack-build.yml

* add auto install script for conda-pack-build.yml

(cherry picked from commit 172599adcf)

* update conda-pack-build.yml

* update conda-pack-build.yml

* update conda-pack-build.yml

* update conda-pack-build.yml

* update conda-pack-build.yml

* Add version in __init__.py
Update conda-pack-build.yml
Add create_zip_archive.py

* Update conda-pack-build.yml

* Update conda-pack-build.yml (with mamba)

* Update conda-pack-build.yml

* Fix FileNotFoundError

* Try fix 'charmap' codec can't encode characters in position 16-23: character maps to <undefined>

* Fix unilabos msgs search error

* Fix environment_check.py

* Update recipe.yaml

* Update registry. Update uuid loop figure method. Update install docs.

* Fix nested conda pack

* Fix one-key installation path error

* Bump version to 0.10.7

* Workshop bj (#99)

* Add LaiYu Liquid device integration and tests

Introduce LaiYu Liquid device implementation, including backend, controllers, drivers, configuration, and resource files. Add hardware connection, tip pickup, and simplified test scripts, as well as experiment and registry configuration for LaiYu Liquid. Documentation and .gitignore for the device are also included.

* feat(LaiYu_Liquid): 重构设备模块结构并添加硬件文档

refactor: 重新组织LaiYu_Liquid模块目录结构
docs: 添加SOPA移液器和步进电机控制指令文档
fix: 修正设备配置中的最大体积默认值
test: 新增工作台配置测试用例
chore: 删除过时的测试脚本和配置文件

* add

* 重构: 将 LaiYu_Liquid.py 重命名为 laiyu_liquid_main.py 并更新所有导入引用

- 使用 git mv 将 LaiYu_Liquid.py 重命名为 laiyu_liquid_main.py
- 更新所有相关文件中的导入引用
- 保持代码功能不变,仅改善命名一致性
- 测试确认所有导入正常工作

* 修复: 在 core/__init__.py 中添加 LaiYuLiquidBackend 导出

- 添加 LaiYuLiquidBackend 到导入列表
- 添加 LaiYuLiquidBackend 到 __all__ 导出列表
- 确保所有主要类都可以正确导入

* 修复大小写文件夹名字

* 电池装配工站二次开发教程(带目录)上传至dev (#94)

* 电池装配工站二次开发教程

* Update intro.md

* 物料教程

* 更新物料教程,json格式注释

* Update prcxi driver & fix transfer_liquid mix_times (#90)

* Update prcxi driver & fix transfer_liquid mix_times

* fix: correct mix_times type

* Update liquid_handler registry

* test: prcxi.py

* Update registry from pr

* fix ony-key script not exist

* clean files

---------

Co-authored-by: Junhan Chang <changjh@dp.tech>
Co-authored-by: ZiWei <131428629+ZiWei09@users.noreply.github.com>
Co-authored-by: Guangxin Zhang <guangxin.zhang.bio@gmail.com>
Co-authored-by: Xie Qiming <97236197+Andy6M@users.noreply.github.com>
Co-authored-by: h840473807 <47357934+h840473807@users.noreply.github.com>
Co-authored-by: LccLink <1951855008@qq.com>
Co-authored-by: lixinyu1011 <61094742+lixinyu1011@users.noreply.github.com>
Co-authored-by: shiyubo0410 <shiyubo@dp.tech>

* fix startup env check.
add auto install during one-key installation

* Try fix one-key build on linux

* Complete all one key installation

* fix: rename schema field to resource_schema with serialization and validation aliases (#104)

Co-authored-by: ZiWei <131428629+ZiWei09@users.noreply.github.com>

* Fix one-key installation build

Install conda-pack before pack command

Add conda-pack to base when building one-key installer

Fix param error when using mamba run

Try fix one-key build on linux

* Fix conda pack on windows

* add plr_to_bioyond, and refactor bioyond stations

* modify default config

* Fix one-key installation build for windows

* Fix workstation startup
Update registry

* Fix/resource UUID and doc fix (#109)

* Fix ResourceTreeSet load error

* Raise error when using unsupported type to create ResourceTreeSet

* Fix children key error

* Fix children key error

* Fix workstation resource not tracking

* Fix workstation deck & children resource dupe

* Fix workstation deck & children resource dupe

* Fix multiple resource error

* Fix resource tree update

* Fix resource tree update

* Force confirm uuid

* Tip more error log

* Refactor Bioyond workstation and experiment workflow (#105)

Refactored the Bioyond workstation classes to improve parameter handling and workflow management. Updated experiment.py to use BioyondReactionStation with deck and material mappings, and enhanced workflow step parameter mapping and execution logic. Adjusted JSON experiment configs, improved workflow sequence handling, and added UUID assignment to PLR materials. Removed unused station_config and material cache logic, and added detailed docstrings and debug output for workflow methods.

* Fix resource get.
Fix resource parent not found.
Mapping uuid for all resources.

* mount parent uuid

* Add logging configuration based on BasicConfig in main function

* fix workstation node error

* fix workstation node error

* Update boot example

* temp fix for resource get

* temp fix for resource get

* provide error info when cant find plr type

* pack repo info

* fix to plr type error

* fix to plr type error

* Update regular container method

* support no size init

* fix comprehensive_station.json

* fix comprehensive_station.json

* fix type conversion

* fix state loading for regular container

* Update deploy-docs.yml

* Update deploy-docs.yml

---------

Co-authored-by: ZiWei <131428629+ZiWei09@users.noreply.github.com>

* Close #107
Update doc url.

* Fix/update resource (#112)

* cancel upload_registry

* Refactor Bioyond workstation and experiment workflow -fix (#111)

* refactor(bioyond_studio): 优化材料缓存加载和参数验证逻辑

改进材料缓存加载逻辑以支持多种材料类型和详细材料处理
更新工作流参数验证中的字段名从key/value改为Key/DisplayValue
移除未使用的merge_workflow_with_parameters方法
添加get_station_info方法获取工作站基础信息
清理实验文件中的注释代码和更新导入路径

* fix: 修复资源移除时的父资源检查问题

在BaseROS2DeviceNode中,移除资源前添加对父资源是否为None的检查,避免空指针异常
同时更新Bottle和BottleCarrier类以支持**kwargs参数
修正测试文件中Liquid_feeding_beaker的大小写拼写错误

* correct return message

---------

Co-authored-by: ZiWei <131428629+ZiWei09@users.noreply.github.com>

* fix resource_get in action

* fix(reaction_station): 清空工作流序列和参数避免重复执行 (#113)

在创建任务后清空工作流序列和参数,防止下次执行时累积重复

* Update create_resource device_id

* Update ResourceTracker

add more enumeration in POSE

fix converter in resource_tracker

* Update graphio together with workstation design.

fix(reaction_station): 为步骤参数添加Value字段传个BY后端

fix(bioyond/warehouses): 修正仓库尺寸和物品排列参数

调整仓库的x轴和z轴物品数量以及物品尺寸参数,使其符合4x1x4的规格要求

fix warehouse serialize/deserialize

fix bioyond converter

fix itemized_carrier.unassign_child_resource

allow not-loaded MSG in registry

add layout serializer & converter

warehouseuse A1-D4; add warehouse layout

fix(graphio): 修正bioyond到plr资源转换中的坐标计算错误

Fix resource assignment and type mapping issues

Corrects resource assignment in ItemizedCarrier by using the correct spot key from _ordering. Updates graphio to use 'typeName' instead of 'name' for type mapping in resource_bioyond_to_plr. Renames DummyWorkstation to BioyondWorkstation in workstation_http_service for clarity.

* Update workstation & bioyond example

Refine descriptions in Bioyond reaction station YAML

Updated and clarified field and operation descriptions in the reaction_station_bioyond.yaml file for improved accuracy and consistency. Changes include more precise terminology, clearer parameter explanations, and standardized formatting for operation schemas.

refactor(workstation): 更新反应站参数描述并添加分液站配置文件

修正反应站方法参数描述,使其更准确清晰
添加bioyond_dispensing_station.yaml配置文件

add create_workflow script and test

add invisible_slots to carriers

fix(warehouses): 修正bioyond_warehouse_1x4x4仓库的尺寸参数

调整仓库的num_items_x和num_items_z值以匹配实际布局,并更新物品尺寸参数

save resource get data. allow empty value for layout and cross_section_type

More decks&plates support for bioyond (#115)

refactor(registry): 重构反应站设备配置,简化并更新操作命令

移除旧的自动操作命令,新增针对具体化学操作的命令配置
更新模块路径和配置结构,优化参数定义和描述

fix(dispensing_station): 修正物料信息查询方法调用

将直接调用material_id_query改为通过hardware_interface调用,以符合接口设计规范

* PRCXI Update

修改prcxi连线

prcxi样例图

Create example_prcxi.json

* Update resource extra & uuid.

use ordering to convert identifier to idx

convert identifier to site idx

correct extra key

update extra before transfer

fix multiple instance error

add resource_tree_transfer func

fox itemrized carrier assign child resource

support internal device material transfer

remove extra key

use same callback group

support material extra

support material extra
support update_resource_site in extra

* Update workstation.

modify workstation_architecture docs

bioyond_HR (#133)

* feat: Enhance Bioyond synchronization and resource management

- Implemented synchronization for all material types (consumables, samples, reagents) from Bioyond, logging detailed information for each type.
- Improved error handling and logging during synchronization processes.
- Added functionality to save Bioyond material IDs in UniLab resources for future updates.
- Enhanced the `sync_to_external` method to handle material movements correctly, including querying and creating materials in Bioyond.
- Updated warehouse configurations to support new storage types and improved layout for better resource management.
- Introduced new resource types such as reactors and tip boxes, with detailed specifications.
- Modified warehouse factory to support column offsets for naming conventions (e.g., A05-D08).
- Improved resource tracking by merging extra attributes instead of overwriting them.
- Added a new method for updating resources in Bioyond, ensuring better synchronization of resource changes.

* feat: 添加TipBox和Reactor的配置到bottles.yaml

* fix: 修复液体投料方法中的volume参数处理逻辑

修复solid_feeding_vials方法中的volume参数处理逻辑,优化solvents参数的使用条件

更新液体投料方法,支持通过溶剂信息自动计算体积,添加solvents参数并更新文档描述

Add batch creation methods for vial and solution tasks

添加批量创建90%10%小瓶投料任务和二胺溶液配置任务的功能,更新相关参数和默认值

* 封膜仪、撕膜仪、耗材站接口

* 添加Raman和xrd相关代码

* Resource update & asyncio fix

correct bioyond config

prcxi example

fix append_resource

fix regularcontainer

fix cancel error

fix resource_get param

fix json dumps

support name change during materials change

enable slave mode

change uuid logger to trace level

correct remove_resource stats

disable slave connect websocket

adjust with_children param

modify devices to use correct executor (sleep, create_task)

support sleep and create_task in node

fix run async execution error

* bump version to 0.10.9

update registry

* PRCXI Reset Error Correction (#166)

* change 9320 desk row number to 4

* Updated 9320 host address

* Updated 9320 host address

* Add **kwargs in classes: PRCXI9300Deck and PRCXI9300Container

* Removed all sample_id in prcxi_9320.json to avoid KeyError

* 9320 machine testing settings

* Typo

* Rewrite setup logic to clear error code

* 初始化 step_mode 属性

* 1114物料手册定义教程byxinyu (#165)

* 宜宾奔耀工站deck前端by_Xinyu

* 构建物料教程byxinyu

* 1114物料手册定义教程

* 3d sim (#97)

* 修改lh的json启动

* 修改lh的json启动

* 修改backend,做成sim的通用backend

* 修改yaml的地址,3D模型适配网页生产环境

* 添加laiyu硬件连接

* 修改移液枪的状态判断方法,

修改移液枪的状态判断方法,
添加三轴的表定点与零点之间的转换
添加三轴真实移动的backend

* 修改laiyu移液站

简化移动方法,
取消软件限制位置,
修改当值使用Z轴时也需要重新复位Z轴的问题

* 更新lh以及laiyu workshop

1,现在可以直接通过修改backend,适配其他的移液站,主类依旧使用LiquidHandler,不用重新编写

2,修改枪头判断标准,使用枪头自身判断而不是类的判断,

3,将归零参数用毫米计算,方便手动调整,

4,修改归零方式,上电使用机械归零,确定机械零点,手动归零设置工作区域零点方便计算,二者互不干涉

* 修改枪头动作

* 修改虚拟仿真方法

---------

Co-authored-by: zhangshixiang <@zhangshixiang>
Co-authored-by: Junhan Chang <changjh@dp.tech>

* 标准化opcua设备接入unilab (#78)

* 初始提交,只保留工作区当前状态

* remove redundant arm_slider meshes

---------

Co-authored-by: Junhan Chang <changjh@dp.tech>

* add new laiyu liquid driver, yaml and json files (#164)

* HR物料同步,前端展示位置修复 (#135)

* 更新Bioyond工作站配置,添加新的物料类型映射和载架定义,优化物料查询逻辑

* 添加Bioyond实验配置文件,定义物料类型映射和设备配置

* 更新bioyond_warehouse_reagent_stack方法,修正试剂堆栈尺寸和布局描述

* 更新Bioyond实验配置,修正物料类型映射,优化设备配置

* 更新Bioyond资源同步逻辑,优化物料入库流程,增强错误处理和日志记录

* 更新Bioyond资源,添加配液站和反应站专用载架,优化仓库工厂函数的排序方式

* 更新Bioyond资源,添加配液站和反应站相关载架,优化试剂瓶和样品瓶配置

* 更新Bioyond实验配置,修正试剂瓶载架ID,确保与设备匹配

* 更新Bioyond资源,移除反应站单烧杯载架,添加反应站单烧瓶载架分类

* Refactor Bioyond resource synchronization and update bottle carrier definitions

- Removed traceback printing in error handling for Bioyond synchronization.
- Enhanced logging for existing Bioyond material ID usage during synchronization.
- Added new bottle carrier definitions for single flask and updated existing ones.
- Refactored dispensing station and reaction station bottle definitions for clarity and consistency.
- Improved resource mapping and error handling in graphio for Bioyond resource conversion.
- Introduced layout parameter in warehouse factory for better warehouse configuration.

* 更新Bioyond仓库工厂,添加排序方式支持,优化坐标计算逻辑

* 更新Bioyond载架和甲板配置,调整样品板尺寸和仓库坐标

* 更新Bioyond资源同步,增强占用位置日志信息,修正坐标转换逻辑

* 更新Bioyond反应站和分配站配置,调整材料类型映射和ID,移除不必要的项

* support name change during materials change

* fix json dumps

* correct tip

* 优化调度器API路径,更新相关方法描述

* 更新 BIOYOND 载架相关文档,调整 API 以支持自带试剂瓶的载架类型,修复资源获取时的子物料处理逻辑

* 实现资源删除时的同步处理,优化出库操作逻辑

* 修复 ItemizedCarrier 中的可见性逻辑

* 保存 Bioyond 原始信息到 unilabos_extra,以便出库时查询

* 根据 resource.capacity 判断是试剂瓶(载架)还是多瓶载架,走不同的奔曜转换

* Fix bioyond bottle_carriers ordering

* 优化 Bioyond 物料同步逻辑,增强坐标解析和位置更新处理

* disable slave connect websocket

* correct remove_resource stats

* change uuid logger to trace level

* enable slave mode

* refactor(bioyond): 统一资源命名并优化物料同步逻辑

- 将DispensingStation和ReactionStation资源统一为PolymerStation命名
- 优化物料同步逻辑,支持耗材类型(typeMode=0)的查询
- 添加物料默认参数配置功能
- 调整仓库坐标布局
- 清理废弃资源定义

* feat(warehouses): 为仓库函数添加col_offset和layout参数

* refactor: 更新实验配置中的物料类型映射命名

将DispensingStation和ReactionStation的物料类型映射统一更名为PolymerStation,保持命名一致性

* fix: 更新实验配置中的载体名称从6VialCarrier到6StockCarrier

* feat(bioyond): 实现物料创建与入库分离逻辑

将物料同步流程拆分为两个独立阶段:transfer阶段只创建物料,add阶段执行入库
简化状态检查接口,仅返回连接状态

* fix(reaction_station): 修正液体进料烧杯体积单位并增强返回结果

将液体进料烧杯的体积单位从μL改为g以匹配实际使用场景
在返回结果中添加merged_workflow和order_params字段,提供更完整的工作流信息

* feat(dispensing_station): 在任务创建返回结果中添加order_params信息

在create_order方法返回结果中增加order_params字段,以便调用方获取完整的任务参数

* fix(dispensing_station): 修改90%物料分配逻辑从分成3份改为直接使用

原逻辑将主称固体平均分成3份作为90%物料,现改为直接使用main_portion

* feat(bioyond): 添加任务编码和任务ID的输出,支持批量任务创建后的状态监控

* refactor(registry): 简化设备配置中的任务结果处理逻辑

将多个单独的任务编码和ID字段合并为统一的return_info字段
更新相关描述以反映新的数据结构

* feat(工作站): 添加HTTP报送服务和任务完成状态跟踪

- 在graphio.py中添加API必需字段
- 实现工作站HTTP服务启动和停止逻辑
- 添加任务完成状态跟踪字典和等待方法
- 重写任务完成报送处理方法记录状态
- 支持批量任务完成等待和报告获取

* refactor(dispensing_station): 移除wait_for_order_completion_and_get_report功能

该功能已被wait_for_multiple_orders_and_get_reports替代,简化代码结构

* fix: 更新任务报告API错误

* fix(workstation_http_service): 修复状态查询中device_id获取逻辑

处理状态查询时安全获取device_id,避免因属性不存在导致的异常

* fix(bioyond_studio): 改进物料入库失败时的错误处理和日志记录

在物料入库API调用失败时,添加更详细的错误信息打印
同时修正station.py中对空响应和失败情况的判断逻辑

* refactor(bioyond): 优化瓶架载体的分配逻辑和注释说明

重构瓶架载体的分配逻辑,使用嵌套循环替代硬编码索引分配
添加更详细的坐标映射说明,明确PLR与Bioyond坐标的对应关系

* fix(bioyond_rpc): 修复物料入库成功时无data字段返回空的问题

当API返回成功但无data字段时,返回包含success标识的字典而非空字典

---------

Co-authored-by: Xuwznln <18435084+Xuwznln@users.noreply.github.com>
Co-authored-by: Junhan Chang <changjh@dp.tech>

* nmr

* Update devices

* bump version to 0.10.10

* Update repo files.

* Add get_resource_with_dir & get_resource method

* fix camera & workstation & warehouse & reaction station driver

* update docs, test examples
fix liquid_handler init bug

* bump version to 0.10.11

* Add startup_json_path, disable_browser, port config

* Update oss config

* feat(bioyond_studio): 添加项目API接口支持及优化物料管理功能

添加通用项目API接口方法(_post_project_api, _delete_project_api)用于与LIMS系统交互
实现compute_experiment_design方法用于实验设计计算
新增brief_step_parameters等订单相关接口方法
优化物料转移逻辑,增加异步任务处理
扩展BioyondV1RPC类,添加批量物料操作、订单状态管理等功能

* feat(bioyond): 添加测量小瓶仓库和更新仓库工厂函数参数

* Support unilabos_samples key

* add session_id and normal_exit

* Add result schema and add TypedDict conversion.

* Fix port error

* Add backend api and update doc

* Add get_regular_container func

* Add get_regular_container func

* Transfer_liquid (#176)

* change 9320 desk row number to 4

* Updated 9320 host address

* Updated 9320 host address

* Add **kwargs in classes: PRCXI9300Deck and PRCXI9300Container

* Removed all sample_id in prcxi_9320.json to avoid KeyError

* 9320 machine testing settings

* Typo

* Typo in base_device_node.py

* Enhance liquid handling functionality by adding support for multiple transfer modes (one-to-many, one-to-one, many-to-one) and improving parameter validation. Default channel usage is set when not specified. Adjusted mixing logic to ensure it only occurs when valid conditions are met. Updated documentation for clarity.

* Auto dump logs, fix workstation input schema

* Fix startup with remote resource error

Resource dict fully change to "pose" key

Update oss link

Reduce pylabrobot conversion warning & force enable log dump.

更新 logo 图片

* signal when host node is ready

* fix ros2 future

print all logs to file
fix resource dict dump error

* update version to 0.10.12

* 修改sample_uuid的返回值

* 修改pose标签设定机制

* 添加 aspiate函数返回值

* 返回dispense后的sample_uuid

* 添加self.pending_liquids_dict的重置方法

* 修改prcxi的json文件,解决trach错误问题

* 修改prcxijson,防止PlateT4的硬件错误

* 对laiyu移液站进行部分修改,取消多次初始化的问题

* 修改根据新的物料格式,修改可视化

* 添加切换枪头方法,添加mock振荡与加热方法

* 夹爪添加

* 删除多余的laiyu部分

* 云端可启动夹爪

* Delete __init__.py

* Enhance PRCXI9300 classes with new Container and TipRack implementations, improving state management and initialization logic. Update JSON configuration to reflect type changes for containers and plates.

* 修改上传数据

---------

Co-authored-by: Junhan Chang <changjh@dp.tech>
Co-authored-by: ZiWei <131428629+ZiWei09@users.noreply.github.com>
Co-authored-by: Guangxin Zhang <guangxin.zhang.bio@gmail.com>
Co-authored-by: Xie Qiming <97236197+Andy6M@users.noreply.github.com>
Co-authored-by: h840473807 <47357934+h840473807@users.noreply.github.com>
Co-authored-by: LccLink <1951855008@qq.com>
Co-authored-by: lixinyu1011 <61094742+lixinyu1011@users.noreply.github.com>
Co-authored-by: shiyubo0410 <shiyubo@dp.tech>
Co-authored-by: hh.(SII) <103566763+Mile-Away@users.noreply.github.com>
Co-authored-by: Xianwei Qi <qxw@stu.pku.edu.cn>
Co-authored-by: WenzheG <wenzheguo32@gmail.com>
Co-authored-by: Harry Liu <113173203+ALITTLELZ@users.noreply.github.com>
Co-authored-by: q434343 <73513873+q434343@users.noreply.github.com>
Co-authored-by: tt <166512503+tt11142023@users.noreply.github.com>
Co-authored-by: xyc <49015816+xiaoyu10031@users.noreply.github.com>
Co-authored-by: zhangshixiang <@zhangshixiang>
Co-authored-by: zhangshixiang <554662886@qq.com>
Co-authored-by: ALITTLELZ <l_LZlz@163.com>

Add topic config

add camera driver (#191)

* add camera driver

* add init.py file to cameraSII driver

增强新威电池测试系统 OSS 上传功能 / Enhanced Neware Battery Test System OSS Upload (#196)

* feat: neware-oss-upload-enhancement

* feat(neware): enhance OSS upload with metadata and workflow handles

Add post process station and related resources (#195)

* Add post process station and related resources

- Created JSON configuration for post_process_station and its child post_process_deck.
- Added YAML definitions for post_process_station, bottle carriers, bottles, and deck resources.
- Implemented Python classes for bottle carriers, bottles, decks, and warehouses to manage resources in the post process.
- Established a factory method for creating warehouses with customizable dimensions and layouts.
- Defined the structure and behavior of the post_process_deck and its associated warehouses.

* feat(post_process): add post_process_station and related warehouse functionality

- Introduced post_process_station.json to define the post-processing station structure.
- Implemented post_process_warehouse.py to create warehouse configurations with customizable layouts.
- Added warehouses.py for specific warehouse configurations (4x3x1).
- Updated post_process_station.yaml to reflect new module paths for OpcUaClient.
- Refactored bottle carriers and bottles YAML files to point to the new module paths.
- Adjusted deck.yaml to align with the new organizational structure for post_process_deck.

prcxi resource (#202)

* prcxi resource

* prcxi_resource

* Fix upload error not showing.
Support str type category.

---------

Co-authored-by: Xuwznln <18435084+Xuwznln@users.noreply.github.com>

Fix upload error not showing.
Support str type category.

feat: introduce `wait_time` command and configurable device communication timeout.

feat: Add `SyringePump` (SY-03B) driver with unified serial/TCP transport for `chinwe` device, including registry and test configurations.
2025-12-26 03:36:48 +08:00
Xuwznln
13a6795657 Update organic syn station. 2025-12-15 02:34:36 +08:00
Xianwei Qi
53219d8b04 Update docs
update "laiyu" missing init file.

fix "laiyu" missing init file.

fix "🐛 fix"

🐛 fix: config file is overwrited by default args even if not be set.

mix

修改了mix,仿真流程报错问题
2025-12-14 13:13:21 +08:00
Xuwznln
b1cdef9185 update version to 0.10.12 2025-12-04 18:47:16 +08:00
Xuwznln
9854ed8c9c fix ros2 future
print all logs to file
fix resource dict dump error
2025-12-04 18:46:37 +08:00
Xuwznln
52544a2c69 signal when host node is ready 2025-12-02 12:00:26 +08:00
ZiWei
5ce433e235 Fix startup with remote resource error
Resource dict fully change to "pose" key

Update oss link

Reduce pylabrobot conversion warning & force enable log dump.

更新 logo 图片
2025-12-02 11:51:01 +08:00
Xuwznln
c7c14d2332 Auto dump logs, fix workstation input schema 2025-11-27 14:24:40 +08:00
Harry Liu
6fdd482649 Transfer_liquid (#176)
* change 9320 desk row number to 4

* Updated 9320 host address

* Updated 9320 host address

* Add **kwargs in classes: PRCXI9300Deck and PRCXI9300Container

* Removed all sample_id in prcxi_9320.json to avoid KeyError

* 9320 machine testing settings

* Typo

* Typo in base_device_node.py

* Enhance liquid handling functionality by adding support for multiple transfer modes (one-to-many, one-to-one, many-to-one) and improving parameter validation. Default channel usage is set when not specified. Adjusted mixing logic to ensure it only occurs when valid conditions are met. Updated documentation for clarity.
2025-11-27 13:49:04 +08:00
Xuwznln
d390236318 Add get_regular_container func 2025-11-27 13:47:12 +08:00
Xuwznln
ed8ee29732 Add get_regular_container func 2025-11-27 13:46:40 +08:00
Xuwznln
ffc583e9d5 Add backend api and update doc 2025-11-26 19:17:46 +08:00
Xuwznln
f1ad0c9c96 Fix port error 2025-11-25 15:19:15 +08:00
Xuwznln
8fa3407649 Add result schema and add TypedDict conversion. 2025-11-25 15:16:27 +08:00
Xuwznln
d3282822fc add session_id and normal_exit 2025-11-20 22:43:24 +08:00
Xuwznln
554bcade24 Support unilabos_samples key 2025-11-19 15:53:59 +08:00
ZiWei
a662c75de1 feat(bioyond): 添加测量小瓶仓库和更新仓库工厂函数参数 2025-11-19 14:26:12 +08:00
ZiWei
931614fe64 feat(bioyond_studio): 添加项目API接口支持及优化物料管理功能
添加通用项目API接口方法(_post_project_api, _delete_project_api)用于与LIMS系统交互
实现compute_experiment_design方法用于实验设计计算
新增brief_step_parameters等订单相关接口方法
优化物料转移逻辑,增加异步任务处理
扩展BioyondV1RPC类,添加批量物料操作、订单状态管理等功能
2025-11-19 14:26:10 +08:00
Xuwznln
d39662f65f Update oss config 2025-11-19 14:22:03 +08:00
Xuwznln
acf5fdebf8 Add startup_json_path, disable_browser, port config 2025-11-18 18:59:39 +08:00
Xuwznln
7f7b1c13c0 bump version to 0.10.11 2025-11-18 18:47:26 +08:00
Xuwznln
75f09034ff update docs, test examples
fix liquid_handler init bug
2025-11-18 18:42:27 +08:00
ZiWei
549a50220b fix camera & workstation & warehouse & reaction station driver 2025-11-18 18:41:37 +08:00
Xuwznln
4189a2cfbe Add get_resource_with_dir & get_resource method 2025-11-15 22:50:30 +08:00
Xuwznln
48895a9bb1 Update repo files. 2025-11-15 03:15:44 +08:00
Xuwznln
891f126ed6 bump version to 0.10.10 2025-11-15 03:11:37 +08:00
Xuwznln
4d3475a849 Update devices 2025-11-15 03:11:36 +08:00
WenzheG
b475db66df nmr 2025-11-15 03:11:35 +08:00
ZiWei
a625a86e3e HR物料同步,前端展示位置修复 (#135)
* 更新Bioyond工作站配置,添加新的物料类型映射和载架定义,优化物料查询逻辑

* 添加Bioyond实验配置文件,定义物料类型映射和设备配置

* 更新bioyond_warehouse_reagent_stack方法,修正试剂堆栈尺寸和布局描述

* 更新Bioyond实验配置,修正物料类型映射,优化设备配置

* 更新Bioyond资源同步逻辑,优化物料入库流程,增强错误处理和日志记录

* 更新Bioyond资源,添加配液站和反应站专用载架,优化仓库工厂函数的排序方式

* 更新Bioyond资源,添加配液站和反应站相关载架,优化试剂瓶和样品瓶配置

* 更新Bioyond实验配置,修正试剂瓶载架ID,确保与设备匹配

* 更新Bioyond资源,移除反应站单烧杯载架,添加反应站单烧瓶载架分类

* Refactor Bioyond resource synchronization and update bottle carrier definitions

- Removed traceback printing in error handling for Bioyond synchronization.
- Enhanced logging for existing Bioyond material ID usage during synchronization.
- Added new bottle carrier definitions for single flask and updated existing ones.
- Refactored dispensing station and reaction station bottle definitions for clarity and consistency.
- Improved resource mapping and error handling in graphio for Bioyond resource conversion.
- Introduced layout parameter in warehouse factory for better warehouse configuration.

* 更新Bioyond仓库工厂,添加排序方式支持,优化坐标计算逻辑

* 更新Bioyond载架和甲板配置,调整样品板尺寸和仓库坐标

* 更新Bioyond资源同步,增强占用位置日志信息,修正坐标转换逻辑

* 更新Bioyond反应站和分配站配置,调整材料类型映射和ID,移除不必要的项

* support name change during materials change

* fix json dumps

* correct tip

* 优化调度器API路径,更新相关方法描述

* 更新 BIOYOND 载架相关文档,调整 API 以支持自带试剂瓶的载架类型,修复资源获取时的子物料处理逻辑

* 实现资源删除时的同步处理,优化出库操作逻辑

* 修复 ItemizedCarrier 中的可见性逻辑

* 保存 Bioyond 原始信息到 unilabos_extra,以便出库时查询

* 根据 resource.capacity 判断是试剂瓶(载架)还是多瓶载架,走不同的奔曜转换

* Fix bioyond bottle_carriers ordering

* 优化 Bioyond 物料同步逻辑,增强坐标解析和位置更新处理

* disable slave connect websocket

* correct remove_resource stats

* change uuid logger to trace level

* enable slave mode

* refactor(bioyond): 统一资源命名并优化物料同步逻辑

- 将DispensingStation和ReactionStation资源统一为PolymerStation命名
- 优化物料同步逻辑,支持耗材类型(typeMode=0)的查询
- 添加物料默认参数配置功能
- 调整仓库坐标布局
- 清理废弃资源定义

* feat(warehouses): 为仓库函数添加col_offset和layout参数

* refactor: 更新实验配置中的物料类型映射命名

将DispensingStation和ReactionStation的物料类型映射统一更名为PolymerStation,保持命名一致性

* fix: 更新实验配置中的载体名称从6VialCarrier到6StockCarrier

* feat(bioyond): 实现物料创建与入库分离逻辑

将物料同步流程拆分为两个独立阶段:transfer阶段只创建物料,add阶段执行入库
简化状态检查接口,仅返回连接状态

* fix(reaction_station): 修正液体进料烧杯体积单位并增强返回结果

将液体进料烧杯的体积单位从μL改为g以匹配实际使用场景
在返回结果中添加merged_workflow和order_params字段,提供更完整的工作流信息

* feat(dispensing_station): 在任务创建返回结果中添加order_params信息

在create_order方法返回结果中增加order_params字段,以便调用方获取完整的任务参数

* fix(dispensing_station): 修改90%物料分配逻辑从分成3份改为直接使用

原逻辑将主称固体平均分成3份作为90%物料,现改为直接使用main_portion

* feat(bioyond): 添加任务编码和任务ID的输出,支持批量任务创建后的状态监控

* refactor(registry): 简化设备配置中的任务结果处理逻辑

将多个单独的任务编码和ID字段合并为统一的return_info字段
更新相关描述以反映新的数据结构

* feat(工作站): 添加HTTP报送服务和任务完成状态跟踪

- 在graphio.py中添加API必需字段
- 实现工作站HTTP服务启动和停止逻辑
- 添加任务完成状态跟踪字典和等待方法
- 重写任务完成报送处理方法记录状态
- 支持批量任务完成等待和报告获取

* refactor(dispensing_station): 移除wait_for_order_completion_and_get_report功能

该功能已被wait_for_multiple_orders_and_get_reports替代,简化代码结构

* fix: 更新任务报告API错误

* fix(workstation_http_service): 修复状态查询中device_id获取逻辑

处理状态查询时安全获取device_id,避免因属性不存在导致的异常

* fix(bioyond_studio): 改进物料入库失败时的错误处理和日志记录

在物料入库API调用失败时,添加更详细的错误信息打印
同时修正station.py中对空响应和失败情况的判断逻辑

* refactor(bioyond): 优化瓶架载体的分配逻辑和注释说明

重构瓶架载体的分配逻辑,使用嵌套循环替代硬编码索引分配
添加更详细的坐标映射说明,明确PLR与Bioyond坐标的对应关系

* fix(bioyond_rpc): 修复物料入库成功时无data字段返回空的问题

当API返回成功但无data字段时,返回包含success标识的字典而非空字典

---------

Co-authored-by: Xuwznln <18435084+Xuwznln@users.noreply.github.com>
Co-authored-by: Junhan Chang <changjh@dp.tech>
2025-11-15 03:11:34 +08:00
xyc
37e0f1037c add new laiyu liquid driver, yaml and json files (#164) 2025-11-15 03:11:33 +08:00
tt
a242253145 标准化opcua设备接入unilab (#78)
* 初始提交,只保留工作区当前状态

* remove redundant arm_slider meshes

---------

Co-authored-by: Junhan Chang <changjh@dp.tech>
2025-11-15 03:11:31 +08:00
q434343
448e0074b7 3d sim (#97)
* 修改lh的json启动

* 修改lh的json启动

* 修改backend,做成sim的通用backend

* 修改yaml的地址,3D模型适配网页生产环境

* 添加laiyu硬件连接

* 修改移液枪的状态判断方法,

修改移液枪的状态判断方法,
添加三轴的表定点与零点之间的转换
添加三轴真实移动的backend

* 修改laiyu移液站

简化移动方法,
取消软件限制位置,
修改当值使用Z轴时也需要重新复位Z轴的问题

* 更新lh以及laiyu workshop

1,现在可以直接通过修改backend,适配其他的移液站,主类依旧使用LiquidHandler,不用重新编写

2,修改枪头判断标准,使用枪头自身判断而不是类的判断,

3,将归零参数用毫米计算,方便手动调整,

4,修改归零方式,上电使用机械归零,确定机械零点,手动归零设置工作区域零点方便计算,二者互不干涉

* 修改枪头动作

* 修改虚拟仿真方法

---------

Co-authored-by: zhangshixiang <@zhangshixiang>
Co-authored-by: Junhan Chang <changjh@dp.tech>
2025-11-15 03:11:30 +08:00
lixinyu1011
304827fc8d 1114物料手册定义教程byxinyu (#165)
* 宜宾奔耀工站deck前端by_Xinyu

* 构建物料教程byxinyu

* 1114物料手册定义教程
2025-11-15 03:11:29 +08:00
Harry Liu
872b3d781f PRCXI Reset Error Correction (#166)
* change 9320 desk row number to 4

* Updated 9320 host address

* Updated 9320 host address

* Add **kwargs in classes: PRCXI9300Deck and PRCXI9300Container

* Removed all sample_id in prcxi_9320.json to avoid KeyError

* 9320 machine testing settings

* Typo

* Rewrite setup logic to clear error code

* 初始化 step_mode 属性
2025-11-15 03:11:29 +08:00
Xuwznln
813400f2b4 bump version to 0.10.9
update registry
2025-11-15 02:45:30 +08:00
Xuwznln
b6dfe2b944 Resource update & asyncio fix
correct bioyond config

prcxi example

fix append_resource

fix regularcontainer

fix cancel error

fix resource_get param

fix json dumps

support name change during materials change

enable slave mode

change uuid logger to trace level

correct remove_resource stats

disable slave connect websocket

adjust with_children param

modify devices to use correct executor (sleep, create_task)

support sleep and create_task in node

fix run async execution error
2025-11-15 02:45:12 +08:00
WenzheG
8807865649 添加Raman和xrd相关代码 2025-11-15 02:44:03 +08:00
Guangxin Zhang
5fc7eb7586 封膜仪、撕膜仪、耗材站接口 2025-11-15 02:44:02 +08:00
ZiWei
9bd72b48e1 Update workstation.
modify workstation_architecture docs

bioyond_HR (#133)

* feat: Enhance Bioyond synchronization and resource management

- Implemented synchronization for all material types (consumables, samples, reagents) from Bioyond, logging detailed information for each type.
- Improved error handling and logging during synchronization processes.
- Added functionality to save Bioyond material IDs in UniLab resources for future updates.
- Enhanced the `sync_to_external` method to handle material movements correctly, including querying and creating materials in Bioyond.
- Updated warehouse configurations to support new storage types and improved layout for better resource management.
- Introduced new resource types such as reactors and tip boxes, with detailed specifications.
- Modified warehouse factory to support column offsets for naming conventions (e.g., A05-D08).
- Improved resource tracking by merging extra attributes instead of overwriting them.
- Added a new method for updating resources in Bioyond, ensuring better synchronization of resource changes.

* feat: 添加TipBox和Reactor的配置到bottles.yaml

* fix: 修复液体投料方法中的volume参数处理逻辑

修复solid_feeding_vials方法中的volume参数处理逻辑,优化solvents参数的使用条件

更新液体投料方法,支持通过溶剂信息自动计算体积,添加solvents参数并更新文档描述

Add batch creation methods for vial and solution tasks

添加批量创建90%10%小瓶投料任务和二胺溶液配置任务的功能,更新相关参数和默认值
2025-11-15 02:43:50 +08:00
Xuwznln
42b78ab4c1 Update resource extra & uuid.
use ordering to convert identifier to idx

convert identifier to site idx

correct extra key

update extra before transfer

fix multiple instance error

add resource_tree_transfer func

fox itemrized carrier assign child resource

support internal device material transfer

remove extra key

use same callback group

support material extra

support material extra
support update_resource_site in extra
2025-11-15 02:43:13 +08:00
Xianwei Qi
9645609a05 PRCXI Update
修改prcxi连线

prcxi样例图

Create example_prcxi.json
2025-11-15 02:41:30 +08:00
ZiWei
a2a827d7ac Update workstation & bioyond example
Refine descriptions in Bioyond reaction station YAML

Updated and clarified field and operation descriptions in the reaction_station_bioyond.yaml file for improved accuracy and consistency. Changes include more precise terminology, clearer parameter explanations, and standardized formatting for operation schemas.

refactor(workstation): 更新反应站参数描述并添加分液站配置文件

修正反应站方法参数描述,使其更准确清晰
添加bioyond_dispensing_station.yaml配置文件

add create_workflow script and test

add invisible_slots to carriers

fix(warehouses): 修正bioyond_warehouse_1x4x4仓库的尺寸参数

调整仓库的num_items_x和num_items_z值以匹配实际布局,并更新物品尺寸参数

save resource get data. allow empty value for layout and cross_section_type

More decks&plates support for bioyond (#115)

refactor(registry): 重构反应站设备配置,简化并更新操作命令

移除旧的自动操作命令,新增针对具体化学操作的命令配置
更新模块路径和配置结构,优化参数定义和描述

fix(dispensing_station): 修正物料信息查询方法调用

将直接调用material_id_query改为通过hardware_interface调用,以符合接口设计规范
2025-11-15 02:40:54 +08:00
ZiWei
bb3ca645a4 Update graphio together with workstation design.
fix(reaction_station): 为步骤参数添加Value字段传个BY后端

fix(bioyond/warehouses): 修正仓库尺寸和物品排列参数

调整仓库的x轴和z轴物品数量以及物品尺寸参数,使其符合4x1x4的规格要求

fix warehouse serialize/deserialize

fix bioyond converter

fix itemized_carrier.unassign_child_resource

allow not-loaded MSG in registry

add layout serializer & converter

warehouseuse A1-D4; add warehouse layout

fix(graphio): 修正bioyond到plr资源转换中的坐标计算错误

Fix resource assignment and type mapping issues

Corrects resource assignment in ItemizedCarrier by using the correct spot key from _ordering. Updates graphio to use 'typeName' instead of 'name' for type mapping in resource_bioyond_to_plr. Renames DummyWorkstation to BioyondWorkstation in workstation_http_service for clarity.
2025-11-15 02:39:01 +08:00
Junhan Chang
37ee43d19a Update ResourceTracker
add more enumeration in POSE

fix converter in resource_tracker
2025-11-15 02:38:01 +08:00
Xuwznln
bc30f23e34 Update create_resource device_id 2025-10-20 21:45:20 +08:00
ZiWei
166d84afe1 fix(reaction_station): 清空工作流序列和参数避免重复执行 (#113)
在创建任务后清空工作流序列和参数,防止下次执行时累积重复
2025-10-17 13:44:36 +08:00
Junhan Chang
1b43c53015 fix resource_get in action 2025-10-17 13:44:35 +08:00
Xuwznln
d4415f5a35 Fix/update resource (#112)
* cancel upload_registry

* Refactor Bioyond workstation and experiment workflow -fix (#111)

* refactor(bioyond_studio): 优化材料缓存加载和参数验证逻辑

改进材料缓存加载逻辑以支持多种材料类型和详细材料处理
更新工作流参数验证中的字段名从key/value改为Key/DisplayValue
移除未使用的merge_workflow_with_parameters方法
添加get_station_info方法获取工作站基础信息
清理实验文件中的注释代码和更新导入路径

* fix: 修复资源移除时的父资源检查问题

在BaseROS2DeviceNode中,移除资源前添加对父资源是否为None的检查,避免空指针异常
同时更新Bottle和BottleCarrier类以支持**kwargs参数
修正测试文件中Liquid_feeding_beaker的大小写拼写错误

* correct return message

---------

Co-authored-by: ZiWei <131428629+ZiWei09@users.noreply.github.com>
2025-10-17 03:08:15 +08:00
Xuwznln
0260cbbedb Close #107
Update doc url.
2025-10-16 17:26:45 +08:00
Xuwznln
7c440d10ab Fix/resource UUID and doc fix (#109)
* Fix ResourceTreeSet load error

* Raise error when using unsupported type to create ResourceTreeSet

* Fix children key error

* Fix children key error

* Fix workstation resource not tracking

* Fix workstation deck & children resource dupe

* Fix workstation deck & children resource dupe

* Fix multiple resource error

* Fix resource tree update

* Fix resource tree update

* Force confirm uuid

* Tip more error log

* Refactor Bioyond workstation and experiment workflow (#105)

Refactored the Bioyond workstation classes to improve parameter handling and workflow management. Updated experiment.py to use BioyondReactionStation with deck and material mappings, and enhanced workflow step parameter mapping and execution logic. Adjusted JSON experiment configs, improved workflow sequence handling, and added UUID assignment to PLR materials. Removed unused station_config and material cache logic, and added detailed docstrings and debug output for workflow methods.

* Fix resource get.
Fix resource parent not found.
Mapping uuid for all resources.

* mount parent uuid

* Add logging configuration based on BasicConfig in main function

* fix workstation node error

* fix workstation node error

* Update boot example

* temp fix for resource get

* temp fix for resource get

* provide error info when cant find plr type

* pack repo info

* fix to plr type error

* fix to plr type error

* Update regular container method

* support no size init

* fix comprehensive_station.json

* fix comprehensive_station.json

* fix type conversion

* fix state loading for regular container

* Update deploy-docs.yml

* Update deploy-docs.yml

---------

Co-authored-by: ZiWei <131428629+ZiWei09@users.noreply.github.com>
2025-10-16 17:26:07 +08:00
Xuwznln
c85c49817d Fix workstation startup
Update registry
2025-10-13 15:06:30 +08:00
Xuwznln
c70eafa5f0 Fix one-key installation build for windows 2025-10-13 15:06:29 +08:00
Junhan Chang
b64466d443 modify default config 2025-10-13 15:06:26 +08:00
Junhan Chang
ef3f24ed48 add plr_to_bioyond, and refactor bioyond stations 2025-10-13 15:06:25 +08:00
Xuwznln
2a8e8d014b Fix conda pack on windows 2025-10-13 13:19:45 +08:00
Xuwznln
e0da1c7217 Fix one-key installation build
Install conda-pack before pack command

Add conda-pack to base when building one-key installer

Fix param error when using mamba run

Try fix one-key build on linux
2025-10-13 03:33:00 +08:00
hh.(SII)
51d3e61723 fix: rename schema field to resource_schema with serialization and validation aliases (#104)
Co-authored-by: ZiWei <131428629+ZiWei09@users.noreply.github.com>
2025-10-13 03:24:20 +08:00
Xuwznln
6b5765bbf3 Complete all one key installation 2025-10-13 03:24:19 +08:00
Xuwznln
eb1f3fbe1c Try fix one-key build on linux 2025-10-13 02:10:05 +08:00
Xuwznln
fb93b1cd94 fix startup env check.
add auto install during one-key installation
2025-10-13 01:59:53 +08:00
Xuwznln
9aeffebde1 0.10.7 Update (#101)
* Cleanup registry to be easy-understanding (#76)

* delete deprecated mock devices

* rename categories

* combine chromatographic devices

* rename rviz simulation nodes

* organic virtual devices

* parse vessel_id

* run registry completion before merge

---------

Co-authored-by: Xuwznln <18435084+Xuwznln@users.noreply.github.com>

* fix: workstation handlers and vessel_id parsing

* fix: working dir error when input config path
feat: report publish topic when error

* modify default discovery_interval to 15s

* feat: add trace log level

* feat: 添加ChinWe设备控制类,支持串口通信和电机控制功能 (#79)

* fix: drop_tips not using auto resource select

* fix: discard_tips error

* fix: discard_tips

* fix: prcxi_res

* add: prcxi res
fix: startup slow

* feat: workstation example

* fix pumps and liquid_handler handle

* feat: 优化protocol node节点运行日志

* fix all protocol_compilers and remove deprecated devices

* feat: 新增use_remote_resource参数

* fix and remove redundant info

* bugfixes on organic protocols

* fix filter protocol

* fix protocol node

* 临时兼容错误的driver写法

* fix: prcxi import error

* use call_async in all service to avoid deadlock

* fix: figure_resource

* Update recipe.yaml

* add workstation template and battery example

* feat: add sk & ak

* update workstation base

* Create workstation_architecture.md

* refactor: workstation_base 重构为仅含业务逻辑,通信和子设备管理交给 ProtocolNode

* refactor: ProtocolNode→WorkstationNode

* Add:msgs.action (#83)

* update: Workstation dev 将版本号从 0.10.3 更新为 0.10.4 (#84)

* Add:msgs.action

* update: 将版本号从 0.10.3 更新为 0.10.4

* simplify resource system

* uncompleted refactor

* example for use WorkstationBase

* feat: websocket

* feat: websocket test

* feat: workstation example

* feat: action status

* fix: station自己的方法注册错误

* fix: 还原protocol node处理方法

* fix: build

* fix: missing job_id key

* ws test version 1

* ws test version 2

* ws protocol

* 增加物料关系上传日志

* 增加物料关系上传日志

* 修正物料关系上传

* 修复工站的tracker实例追踪失效问题

* 增加handle检测,增加material edge关系上传

* 修复event loop错误

* 修复edge上报错误

* 修复async错误

* 更新schema的title字段

* 主机节点信息等支持自动刷新

* 注册表编辑器

* 修复status密集发送时,消息出错

* 增加addr参数

* fix: addr param

* fix: addr param

* 取消labid 和 强制config输入

* Add action definitions for LiquidHandlerSetGroup and LiquidHandlerTransferGroup

- Created LiquidHandlerSetGroup.action with fields for group name, wells, and volumes.
- Created LiquidHandlerTransferGroup.action with fields for source and target group names and unit volume.
- Both actions include response fields for return information and success status.

* Add LiquidHandlerSetGroup and LiquidHandlerTransferGroup actions to CMakeLists

* Add set_group and transfer_group methods to PRCXI9300Handler and update liquid_handler.yaml

* result_info改为字典类型

* 新增uat的地址替换

* runze multiple pump support

(cherry picked from commit 49354fcf39)

* remove runze multiple software obtainer

(cherry picked from commit 8bcc92a394)

* support multiple backbone

(cherry picked from commit 4771ff2347)

* Update runze pump format

* Correct runze multiple backbone

* Update runze_multiple_backbone

* Correct runze pump multiple receive method.

* Correct runze pump multiple receive method.

* 对于PRCXI9320的transfer_group,一对多和多对多

* 移除MQTT,更新launch文档,提供注册表示例文件,更新到0.10.5

* fix import error

* fix dupe upload registry

* refactor ws client

* add server timeout

* Fix: run-column with correct vessel id (#86)

* fix run_column

* Update run_column_protocol.py

(cherry picked from commit e5aa4d940a)

* resource_update use resource_add

* 新增版位推荐功能

* 重新规定了版位推荐的入参

* update registry with nested obj

* fix protocol node log_message, added create_resource return value

* fix protocol node log_message, added create_resource return value

* try fix add protocol

* fix resource_add

* 修复移液站错误的aspirate注册表

* Feature/xprbalance-zhida (#80)

* feat(devices): add Zhida GC/MS pretreatment automation workstation

* feat(devices): add mettler_toledo xpr balance

* balance

* 重新补全zhida注册表

* PRCXI9320 json

* PRCXI9320 json

* PRCXI9320 json

* fix resource download

* remove class for resource

* bump version to 0.10.6

* 更新所有注册表

* 修复protocolnode的兼容性

* 修复protocolnode的兼容性

* Update install md

* Add Defaultlayout

* 更新物料接口

* fix dict to tree/nested-dict converter

* coin_cell_station draft

* refactor: rename "station_resource" to "deck"

* add standardized BIOYOND resources: bottle_carrier, bottle

* refactor and add BIOYOND resources tests

* add BIOYOND deck assignment and pass all tests

* fix: update resource with correct structure; remove deprecated liquid_handler set_group action

* feat: 将新威电池测试系统驱动与配置文件并入 workstation_dev_YB2 (#92)

* feat: 新威电池测试系统驱动与注册文件

* feat: bring neware driver & battery.json into workstation_dev_YB2

* add bioyond studio draft

* bioyond station with communication init and resource sync

* fix bioyond station and registry

* fix: update resource with correct structure; remove deprecated liquid_handler set_group action

* frontend_docs

* create/update resources with POST/PUT for big amount/ small amount data

* create/update resources with POST/PUT for big amount/ small amount data

* refactor: add itemized_carrier instead of carrier consists of ResourceHolder

* create warehouse by factory func

* update bioyond launch json

* add child_size for itemized_carrier

* fix bioyond resource io

* Workstation templates: Resources and its CRUD, and workstation tasks (#95)

* coin_cell_station draft

* refactor: rename "station_resource" to "deck"

* add standardized BIOYOND resources: bottle_carrier, bottle

* refactor and add BIOYOND resources tests

* add BIOYOND deck assignment and pass all tests

* fix: update resource with correct structure; remove deprecated liquid_handler set_group action

* feat: 将新威电池测试系统驱动与配置文件并入 workstation_dev_YB2 (#92)

* feat: 新威电池测试系统驱动与注册文件

* feat: bring neware driver & battery.json into workstation_dev_YB2

* add bioyond studio draft

* bioyond station with communication init and resource sync

* fix bioyond station and registry

* create/update resources with POST/PUT for big amount/ small amount data

* refactor: add itemized_carrier instead of carrier consists of ResourceHolder

* create warehouse by factory func

* update bioyond launch json

* add child_size for itemized_carrier

* fix bioyond resource io

---------

Co-authored-by: h840473807 <47357934+h840473807@users.noreply.github.com>
Co-authored-by: Xie Qiming <97236197+Andy6M@users.noreply.github.com>

* 更新物料接口

* Workstation dev yb2 (#100)

* Refactor and extend reaction station action messages

* Refactor dispensing station tasks to enhance parameter clarity and add batch processing capabilities

- Updated `create_90_10_vial_feeding_task` to include detailed parameters for 90%/10% vial feeding, improving clarity and usability.
- Introduced `create_batch_90_10_vial_feeding_task` for batch processing of 90%/10% vial feeding tasks with JSON formatted input.
- Added `create_batch_diamine_solution_task` for batch preparation of diamine solution, also utilizing JSON formatted input.
- Refined `create_diamine_solution_task` to include additional parameters for better task configuration.
- Enhanced schema descriptions and default values for improved user guidance.

* 修复to_plr_resources

* add update remove

* 支持选择器注册表自动生成
支持转运物料

* 修复资源添加

* 修复transfer_resource_to_another生成

* 更新transfer_resource_to_another参数,支持spot入参

* 新增test_resource动作

* fix host_node error

* fix host_node test_resource error

* fix host_node test_resource error

* 过滤本地动作

* 移动内部action以兼容host node

* 修复同步任务报错不显示的bug

* feat: 允许返回非本节点物料,后面可以通过decoration进行区分,就不进行warning了

* update todo

* modify bioyond/plr converter, bioyond resource registry, and tests

* pass the tests

* update todo

* add conda-pack-build.yml

* add auto install script for conda-pack-build.yml

(cherry picked from commit 172599adcf)

* update conda-pack-build.yml

* update conda-pack-build.yml

* update conda-pack-build.yml

* update conda-pack-build.yml

* update conda-pack-build.yml

* Add version in __init__.py
Update conda-pack-build.yml
Add create_zip_archive.py

* Update conda-pack-build.yml

* Update conda-pack-build.yml (with mamba)

* Update conda-pack-build.yml

* Fix FileNotFoundError

* Try fix 'charmap' codec can't encode characters in position 16-23: character maps to <undefined>

* Fix unilabos msgs search error

* Fix environment_check.py

* Update recipe.yaml

* Update registry. Update uuid loop figure method. Update install docs.

* Fix nested conda pack

* Fix one-key installation path error

* Bump version to 0.10.7

* Workshop bj (#99)

* Add LaiYu Liquid device integration and tests

Introduce LaiYu Liquid device implementation, including backend, controllers, drivers, configuration, and resource files. Add hardware connection, tip pickup, and simplified test scripts, as well as experiment and registry configuration for LaiYu Liquid. Documentation and .gitignore for the device are also included.

* feat(LaiYu_Liquid): 重构设备模块结构并添加硬件文档

refactor: 重新组织LaiYu_Liquid模块目录结构
docs: 添加SOPA移液器和步进电机控制指令文档
fix: 修正设备配置中的最大体积默认值
test: 新增工作台配置测试用例
chore: 删除过时的测试脚本和配置文件

* add

* 重构: 将 LaiYu_Liquid.py 重命名为 laiyu_liquid_main.py 并更新所有导入引用

- 使用 git mv 将 LaiYu_Liquid.py 重命名为 laiyu_liquid_main.py
- 更新所有相关文件中的导入引用
- 保持代码功能不变,仅改善命名一致性
- 测试确认所有导入正常工作

* 修复: 在 core/__init__.py 中添加 LaiYuLiquidBackend 导出

- 添加 LaiYuLiquidBackend 到导入列表
- 添加 LaiYuLiquidBackend 到 __all__ 导出列表
- 确保所有主要类都可以正确导入

* 修复大小写文件夹名字

* 电池装配工站二次开发教程(带目录)上传至dev (#94)

* 电池装配工站二次开发教程

* Update intro.md

* 物料教程

* 更新物料教程,json格式注释

* Update prcxi driver & fix transfer_liquid mix_times (#90)

* Update prcxi driver & fix transfer_liquid mix_times

* fix: correct mix_times type

* Update liquid_handler registry

* test: prcxi.py

* Update registry from pr

* fix ony-key script not exist

* clean files

---------

Co-authored-by: Junhan Chang <changjh@dp.tech>
Co-authored-by: ZiWei <131428629+ZiWei09@users.noreply.github.com>
Co-authored-by: Guangxin Zhang <guangxin.zhang.bio@gmail.com>
Co-authored-by: Xie Qiming <97236197+Andy6M@users.noreply.github.com>
Co-authored-by: h840473807 <47357934+h840473807@users.noreply.github.com>
Co-authored-by: LccLink <1951855008@qq.com>
Co-authored-by: lixinyu1011 <61094742+lixinyu1011@users.noreply.github.com>
Co-authored-by: shiyubo0410 <shiyubo@dp.tech>
2025-10-12 23:34:26 +08:00
702 changed files with 3118 additions and 112451 deletions

View File

@@ -1,483 +0,0 @@
---
name: yibin-electrolyte-submit
description: >-
通过 Uni-Lab Notebook API 向宜宾电解液工站提交实验覆盖配液分液Bioyond LIMS
扣电组装CoinCellAssembly、扣电测试全流程。
包含 Excel 解析、formulation 构建、工作流节点参数填写、notebook 提交与状态轮询。
Use when the user wants to submit electrolyte experiments, assemble or test coin cells,
parse experiment Excel files, build notebook payloads, or mentions
宜宾/配液/分液/扣电/电解液实验/notebook提交/CoinCell/BioyondLIMS.
---
# 宜宾电解液产线 API 操作指南
本 skill 覆盖两个设备的完整操作流程:
1. **配液分液工站** (`bioyond_cell_workstation`) — Bioyond LIMS 配液/分液/转运
2. **扣电组装站** (`BatteryStation`) — Modbus PLC 扣电组装/数据采集
## 设备信息
| 属性 | 配液分液工站 | 扣电组装站 |
|------|------------|-----------|
| device_id | `bioyond_cell_workstation` | `BatteryStation` |
| 显示名 | 配液分液工站 | 扣电工作站 |
| 源码 | `unilabos/devices/workstation/bioyond_studio/bioyond_cell/bioyond_cell_workstation.py` | `unilabos/devices/workstation/coin_cell_assembly/coin_cell_assembly.py` |
| 类名 | `BioyondCellWorkstation` | `CoinCellAssemblyWorkstation` |
| 通讯 | HTTP REST (Bioyond LIMS API) | Modbus TCP (PLC 寄存器) |
## 前置条件
### 认证信息
```
AUTH="Authorization: Lab OTdlY2FkNmUtZmZmMi00YjhiLThhOWEtNWM5ODAyOTJmOTUxOmU0OGM2YWJkLTA4ZmEtNDFjMy04NzhhLTc4M2FiODlhZjYxMw=="
BASE="https://uni-lab.test.bohrium.com"
```
来源:`--ak 97ecad6e-fff2-4b8b-8a9a-5c980292f951 --sk e48c6abd-08fa-41c3-878a-783ab89af613 --addr test`
### 启动 unilab云端模式
> **重要**:提交实验前必须确保 unilab 正在运行且已连接云端 WebSocket。
```powershell
$env:PYTHONIOENCODING="utf-8"
conda activate newunilab2603
cd D:\UniLabdev\Uni-Lab-OS\unilabos\devices\workstation
unilab -g D:\UniLabdev\Uni-Lab-OS\yibin_electrolyte_config.json --ak 97ecad6e-fff2-4b8b-8a9a-5c980292f951 --sk e48c6abd-08fa-41c3-878a-783ab89af613 --upload_registry --addr test --disable_browser --skip_env_check
```
**启动要点**
1. 必须先激活虚拟环境 `newunilab2603`
2. 工作目录切到 `unilabos/devices/workstation`(设备驱动所在目录)
3. `--upload_registry` 将 64 个设备 + 142 个资源注册到云端
4. `--skip_env_check` + `PYTHONIOENCODING=utf-8` 避免 Windows GBK 编码崩溃
5. 启动后后台运行,等待日志出现 `Application startup complete``Host node ready signal published with 3 devices`
**验证连接成功的标志**
- 日志出现 `[MessageProcessor] ... wss://uni-lab.test.bohrium.com/api/v1/ws/schedule`
- 日志出现 `[WebSocketClient] Host node ready signal published with 3 devices`
- 日志出现 `Resource tree add completed`(资源树同步完成)
### 云端物料上架与入库(启动后必做)
> **在提交实验之前,必须提醒用户完成以下云端操作,否则实验会因物料缺失而失败。**
1. **拖拽上料**:在云端 UI`$BASE/laboratory/<lab_uuid>`)的资源树视图中,将物料拖拽到对应的仓库/库位上。unilab 启动后资源树会自动同步到云端,但物料的**上架位置**需要用户在 UI 上手动确认或调整。
2. **确认配液物料入库**:确保所有配液实验需要的试剂(如 LiPF6、EC、DMC、EMC 等)已在 LIMS 系统中完成入库。可通过以下方式验证:
- 云端 UI 资源树中对应仓库(如"粉末加样头堆栈"、"配液站内试剂仓库")下有物料节点
- 或通过 API #8 获取资源树后检查物料节点是否存在
3. **告知 AI 可以提交**:用户完成上述操作后,告知 AI "物料已上架,可以提交实验"AI 再执行 notebook 提交流程。
**提醒话术模板**AI 应在启动成功后发送给用户):
```
unilab 已成功启动并连接云端。提交实验前请完成以下操作:
1. 在云端 UI 上确认资源树中的物料位置,必要时拖拽调整上料位
2. 确保配液所需的试剂(粉末、液体)已在 LIMS 中完成入库
3. 完成后告诉我,我将为您提交实验
```
### 生成 Action Schema首次使用
启动 unilab 后,在 `unilabos_data/` 目录下会生成 `req_device_registry_upload.json`。运行以下命令提取两个设备的 action JSON
```bash
python .cursor/skills/create-device-skill/scripts/extract_device_actions.py --registry unilabos_data/req_device_registry_upload.json bioyond_cell_workstation .cursor/skills/yibin-electrolyte-submit/actions/
python .cursor/skills/create-device-skill/scripts/extract_device_actions.py --registry unilabos_data/req_device_registry_upload.json BatteryStation .cursor/skills/yibin-electrolyte-submit/actions/
```
## 请求约定
- Windows 平台**必须用 `curl.exe`**(非 PowerShell 的 curl 别名)
- 所有请求带 `$AUTH`
- URL 格式:`$BASE/api/v1/<endpoint>`
- POST/PATCH 请求体写入临时 JSON 文件后用 `-d '@tmp.json'` 传参(避免 PowerShell 转义问题)
- 本地 API 基址:`http://127.0.0.1:8002/api/v1/`
## Session State
每次会话开始时,依次获取以下信息:
```bash
# 1. lab_uuid
curl.exe -s -X GET "$BASE/api/v1/edge/lab/info" -H "$AUTH"
# → data.uuid → $lab_uuid
# 2. project_uuid
curl.exe -s -X GET "$BASE/api/v1/lab/project/list?lab_uuid=$lab_uuid" -H "$AUTH"
# → data.items[].uuid/name → 让用户选择或取唯一项 → $project_uuid
```
## 工作流模板(重要)
> **必须向用户索要已有的工作流模板 UUID 或 URL不要自行创建。**
>
> 原因:通过 `edge/workflow/node` API 创建节点会报 `resource_node_template not found`——
> 云端的工作流节点模板系统和设备注册表是独立的,需要用户在云端 UI 上预先配置好工作流模板。
**获取方式**
- 用户提供工作流页面 URL`$BASE/laboratory/<lab_uuid>/workflow/<workflow_uuid>`
- 从 URL 中提取 `workflow_uuid`
- 用 API 获取模板详情:
```
GET /api/v1/lab/workflow/template/detail/<workflow_uuid>
```
返回 `data.nodes[]`:每个节点的 uuid、name、param、device_name、handles、disabled。
**示例**
```
工作流 URL: https://uni-lab.test.bohrium.com/laboratory/e9ed9102-d709-4741-b7a0-d1e8578e2065/workflow/b49f80d9-58d6-4456-a521-56f4dd39cda0
→ workflow_uuid = b49f80d9-58d6-4456-a521-56f4dd39cda0
```
从模板详情中提取**未 disabled** 的节点的 `uuid``name`,后续提交 notebook 时使用。
## API Endpoints
### #1 获取 lab_uuid
```
GET /api/v1/edge/lab/info
```
### #2 列出项目
```
GET /api/v1/lab/project/list?lab_uuid=$lab_uuid
```
返回 `data.items[]`,取 `uuid``name`
### #3 获取工作流模板详情
```
GET /api/v1/lab/workflow/template/detail/<workflow_uuid>
```
返回 `data.nodes[]`:每个节点的 uuid、name、param、device_name、handles。
提取活跃节点(`disabled != true`)的 `uuid` 用于构建 notebook 请求。
### #4 提交实验(创建 notebook— 核心 API
```
POST /api/v1/lab/notebook
Body: {
"lab_uuid": "<lab_uuid>",
"project_uuid": "<project_uuid>",
"workflow_uuid": "<workflow_uuid>",
"name": "<实验名称>",
"node_params": [
{
"sample_uuids": [],
"datas": [
{
"node_uuid": "<模板中的节点UUID>",
"param": { <参数键值对> },
"sample_params": []
}
]
}
]
}
```
**关键注意事项**
- `node_params` 是数组,每个元素代表一轮实验
- `datas` 中每个节点对应模板中的一个活跃节点
- `param` 中的字段名**必须使用 Python 函数参数名**,不能用模板中存储的 LIMS 字段名(见下方映射表)
### #5 查询 notebook 状态
```
GET /api/v1/lab/notebook/status?uuid=<notebook_uuid>
```
| status | 含义 |
|--------|------|
| `running` | 执行中 |
| `success` | 成功 |
| `fail` | 失败 |
### #6 运行设备单动作(本地 API
```
POST http://127.0.0.1:8002/api/v1/job/add
Body: {
"device_id": "<device_id>",
"action": "<action_name>",
"action_args": { <参数键值对> },
"sample_material": {}
}
```
本地 API 可自动解析 `action_type`,无需手动指定。适用于快速调试或云端未连接时。
### #7 查询本地任务状态
```
GET http://127.0.0.1:8002/api/v1/job/<job_id>/status
```
| status | 含义 |
|--------|------|
| 0 | UNKNOWN |
| 1 | ACCEPTED |
| 2 | EXECUTING |
| 4 | SUCCEEDED |
| 5 | CANCELED |
| 6 | ABORTED |
### #8 获取资源树
```
GET /api/v1/lab/material/download/<lab_uuid>
```
返回所有节点(`id`, `name`, `uuid`, `type`, `parent`)。填写 Slot 字段时用此接口筛选节点。
## Placeholder Slot 填写规则
action JSON 中 `placeholder_keys` 标记了哪些字段需要填 Slot
| placeholder 值 | Slot 类型 | 填写格式 |
|---------------|-----------|---------|
| `unilabos_resources` | ResourceSlot | `{"id": "/path/name", "name": "name", "uuid": "xxx"}` |
| `unilabos_devices` | DeviceSlot | `"/parent/device_name"` 路径字符串 |
| `unilabos_nodes` | NodeSlot | `"/parent/node_name"` 路径字符串 |
| `unilabos_class` | ClassSlot | `"class_name"` 字符串 |
| `unilabos_formulation` | FormulationSlot | `[{well_name, liquids: [{name, volume}]}]` |
### ResourceSlot 填写
从 API #8 资源树中筛选**物料**节点:
```json
{"id": "/bioyond_cell_workstation/YB_Bioyond_Deck/自动堆栈-左", "name": "自动堆栈-左", "uuid": "3a19debc-..."}
```
数组字段:`[{id, name, uuid}, ...]`
特例:`create_resource``res_id` 允许填不存在的路径。
### DeviceSlot 填写
从资源树筛选 `type=device` 的节点,填路径字符串:
```
"/BatteryStation"
"/bioyond_cell_workstation"
```
### FormulationSlot 填写
```json
[
{
"sample_uuid": "",
"well_name": "YB_PrepBottle_15mL_Carrier_bottle_A1",
"liquids": [
{ "name": "LiPF6", "mass": 12.5 },
{ "name": "EC", "mass": 50.0 }
]
}
]
```
`well_name` 从资源树中取物料节点的 `name`
## 参数名映射(重要的坑)
> 工作流模板中存储的参数名和 Python 函数实际接受的参数名**不一定相同**。
> 提交 notebook 时必须使用 **Python 函数参数名**。
### `create_orders_formulation` 参数映射
| 模板中的 param 键 | 实际 Python 参数名 | 说明 |
|-------------------|-------------------|------|
| `pouch_cell_info` | `pouch_cell_volume` | 软包组装分液体积 (mL) |
| `conductivity_info` | `conductivity_volume` | 电导测试分液体积 (mL) |
| `load_shedding_info` | `coin_cell_volume` | 扣电组装分液体积 (mL) |
| `formulation` | `formulation` | 配方数组(名称一致) |
| `batch_id` | `batch_id` | 批次号(名称一致) |
| `bottle_type` | `bottle_type` | 配液瓶类型(名称一致) |
| `mix_time` | `mix_time` | 混匀时间(秒)(名称一致) |
| `conductivity_bottle_count` | `conductivity_bottle_count` | 电导瓶数(名称一致) |
当从模板中读到 `param` 包含 `pouch_cell_info` 等 LIMS 字段名时,提交 notebook 时要用右列的 Python 函数参数名。否则会报 `TypeError: got an unexpected keyword argument`
## 典型工作流
### 方式一:通过 Notebook API 批量提交(推荐)
**适用场景**:多组配方的批量实验,云端管理实验记录
```
1. 向用户索要工作流模板 URL不要自行创建
2. 获取 lab_uuidAPI #1和 project_uuidAPI #2
3. 获取工作流模板详情API #3提取活跃节点 UUID
4. 解析用户提供的 Excel 文件,构建 formulation 数组
5. 提交 notebookAPI #4
6. 轮询 notebook 状态API #5直到完成
```
**Excel 解析规则**
- 全局参数在第一个数据行:`batch_id``bottle_type``mix_time``coin_cell_volume``pouch_cell_volume``conductivity_volume``conductivity_bottle_count`
- 配方列从"试剂名1"开始,交替排列:试剂名列 + 质量列(以 `(g)` 结尾)
- 每行一个配方,`order_name` = 配方ID列
- formulation 中每个配方的 materials 数组只包含 `mass > 0` 的试剂
**node_params 构建**:所有配方放入同一个 round 的同一个 datas 条目中,因为只有一个节点(`create_orders_formulation`)。
### 方式二:设备单步操作(本地 API
**适用场景**:调试、快速测试
```
1. 确保 unilab 已在本地启动
2. 通过 POST http://127.0.0.1:8002/api/v1/job/add 提交任务
3. 通过 GET /api/v1/job/<job_id>/status 查询状态
```
### 设备操作流程:配液 → 转运 → 扣电
```
1. [配液站] scheduler_start_and_auto_feeding → 启动调度 + 上料
2. [配液站] create_orders_formulation → 创建配液实验(配方输入)
3. [配液站] transfer_3_to_2_to_1_auto → 分液瓶板转运到扣电站
4. [扣电站] func_pack_device_init_auto_start_combined → 初始化+自动+启动
5. [扣电站] func_sendbottle_allpack_multi → 发送瓶数+批量组装
```
## 云端使用心得
### 环境准备
- Windows 必须设置 `$env:PYTHONIOENCODING="utf-8"` 防止编码崩溃
- 使用 `--skip_env_check` 跳过依赖检查,加快启动
- 工作目录建议在 `unilabos/devices/workstation` 下启动
### 连接与注册
- `--upload_registry` 会自动将设备和资源注册到云端
- WebSocket 连接建立后,本地和云端的资源树会自动同步
- 注册成功后用户需在云端 UI 完成**物料拖放上架**操作
- 如果 unilab 断开重连,资源树会重新同步
### 工作流模板
- **不要自行调用 API 创建工作流或节点**——云端工作流节点模板需要预配置
- 始终向用户索要已有的工作流模板 URL
- 从 URL 中提取 `workflow_uuid`,通过 API #3 获取详情
- 模板中 `disabled: true` 的节点跳过,只处理活跃节点
### Notebook 实验提交
- Notebook 是云端管理实验的标准方式
- 一个 notebook 可包含多轮(`node_params` 数组),每轮可包含多组参数
- 提交后通过 API #5 轮询状态LIMS 配液流程通常需要较长时间8 个配方约 30-60 分钟)
- 实验进度可在云端 UI 和本地 unilab 日志中同步查看
### 常见错误
| 错误 | 原因 | 解决 |
|------|------|------|
| `edge not started error` | unilab 未连接云端 WebSocket | 检查 unilab 是否在运行、重启 |
| `resource_node_template not found` | 云端没有该设备的工作流模板 | 向用户索要已有模板,不要自行创建 |
| `got an unexpected keyword argument` | 参数名用了模板字段名而非 Python 函数参数名 | 参照上方映射表转换 |
| `UnicodeEncodeError: 'gbk'` | Windows 默认编码不支持特殊字符 | 设置 `PYTHONIOENCODING=utf-8` |
| `parse parameter error` | 云端 API 字段名错误 | `device_id` (非 `device_name`)、`action` (非 `action_name`)、必须带 `action_type` |
## 渐进加载策略
1. 先读本文件了解 API 端点、参数映射和云端注意事项
2. 需要具体 action 参数时,读 [action-index.md](action-index.md) 查找 action 名称和核心参数
3. 需要完整 schema 时,读 `actions/<action_name>.json`(需先运行提取命令生成)
4. 需要理解参数含义时,读设备源码
## 完整 Notebook 提交 Checklist
```
- [ ] 确认 unilab 已在本地启动并连接云端 WebSocket
- [ ] 提醒用户在云端 UI 拖拽上料、确认物料位置
- [ ] 提醒用户确认配液所需试剂已在 LIMS 完成入库
- [ ] 等待用户确认物料就绪后再继续
- [ ] 向用户索要工作流模板 URL → 提取 workflow_uuid
- [ ] 获取 lab_uuidAPI #1
- [ ] 获取 project_uuidAPI #2
- [ ] 获取工作流模板详情API #3提取活跃节点 UUID
- [ ] 解析用户 Excel 文件 → 构建 formulation + 全局参数
- [ ] 注意参数名映射(模板字段名 → Python 函数参数名)
- [ ] 提交 notebookAPI #4
- [ ] 轮询 notebook 状态API #5直到完成
```
---
## 真实场景:宜宾产线 Excel 提交提示词模板
> 以下为已验证可用的标准提示词,适用于配液-分液-扣电全流程。
### 场景说明
- unilab 运行在本地 Windows 机器miniforge 环境),连接云端 WebSocket
- AICursor / OpenClaw在任意设备上通过云端 API 操作,**不需要本地 127.0.0.1**
- 工作流为 5 节点串联:`create_orders_formulation``transfer_3_to_2_to_1_auto``func_pack_device_init_auto_start_combined``func_sendbottle_allpack_multi``transfer_1_to_2`
### 已知固定参数(宜宾产线)
```
BASE = https://uni-lab.test.bohrium.com
lab_uuid = e9ed9102-d709-4741-b7a0-d1e8578e2065
project = YiBinElectrolyte (bc5224b4-8120-4765-9961-9dfc1802a1f6)
workflow = 配液分液formulation全流程 (2bc59938-db79-4415-ac2d-9897ef125f2f)
```
#### 工作流节点 UUID固定无需重新查询
| 顺序 | action | node_uuid |
|------|--------|-----------|
| Step1 | auto-create_orders_formulation | `ece6744a-81ac-4ae4-8cd1-1c8eeda1dab6` |
| Step2 | auto-transfer_3_to_2_to_1_auto | `1c37a8dd-5ba0-413d-81db-94b9c936a171` |
| Step3 | auto-func_pack_device_init_auto_start_combined | `97a676a2-d257-4479-9096-073b40300970` |
| Step4 | auto-func_sendbottle_allpack_multi | `cf69017a-d29c-4aad-a63b-309d63dac2e9` |
| Step5 | auto-transfer_1_to_2 | `80d1c1aa-dbc3-4601-86b7-5c22a992dd9e` |
### 标准提示词
```
请使用 yibin-electrolyte-submit skill提交以下实验
工作流模板 URLhttps://uni-lab.test.bohrium.com/laboratory/e9ed9102-d709-4741-b7a0-d1e8578e2065/workflow/2bc59938-db79-4415-ac2d-9897ef125f2f
Excel 文件路径:<粘贴或上传 xlsx 路径>
注意事项:
- lab_uuid、project_uuid、workflow节点UUID均已固定无需重新查询
- 直接解析 Excel → 构建 payload → 提交
- mix_time 传标量整数即可(已兼容)
- 试剂名以 Excel 为准,注意区分 LiDFOB / LiDOFB 等拼写
- csv_export_path 取 Excel 中 csv_export_path 列的值
- 提交后告知 notebook UUID无需自动轮询实验耗时较长
```
### Excel 列结构说明experment_template_0415sim-*.xlsx
| 列范围 | 内容 |
|--------|------|
| C | batch_id |
| D | bottle_type |
| E-H | coin_cell_volume / conductivity_bottle_count / conductivity_volume / csv_export_path |
| I-T | 试剂名+质量 交替排列最多6对|
| U | mix_time |
| V | order_name每行配方的订单号|
| W | pouch_cell_volume |
| X-Y | target_device / target_locationStep2参数|
| AA | material_search_enableStep3参数|
| AB-AS | 扣电站参数Step4|
### CSV 导出说明
每次 `create_orders_formulation` 完成后,在 `csv_export_path` 目录下生成:
```
electrolyte_orders_<YYYYMMDD_HHMMSS>.csv
```
列:`orderCode, orderName, 配液瓶类型, 配液瓶二维码, 分液瓶类型, 分液瓶二维码, 目标配液质量比, 真实配液质量比, 时间`
> **注意**barCode 为 `null` 或 `"nullBarCode123456"` 是正常现象,表示 LIMS 中该物料尚未扫码。配液瓶缺失通常是因为物料未放在手动传递窗(`locationId` 前缀 `3a19deae-2c7a-`)。

View File

@@ -1,295 +0,0 @@
# Action 索引
> Action JSON 文件需运行提取命令生成,详见 [SKILL.md](SKILL.md) 中「生成 Action Schema」。
> 以下描述和参数信息基于源码分析。
---
## 配液分液工站 (`bioyond_cell_workstation`)
源码:`unilabos/devices/workstation/bioyond_studio/bioyond_cell/bioyond_cell_workstation.py`
### 调度控制
#### `scheduler_start`
启动 Bioyond LIMS 调度系统
- **核心参数**: 无(仅需 apiKey/requestTime由设备内部处理
- **返回**: LIMS 响应 `{code, message, data}`
#### `scheduler_stop`
停止调度
- **核心参数**: 无
#### `scheduler_continue`
继续调度(从暂停状态恢复)
- **核心参数**: 无
#### `scheduler_reset`
复位调度
- **核心参数**: 无
#### `scheduler_start_and_auto_feeding`
**组合操作**:启动调度 + 自动化上料4号→3号手套箱
- **核心参数**: `xlsx_path`Excel 物料模板路径,可选)
- **可选参数**: WH4 加样头面 12 个点位materialName + quantity、WH4 原液瓶面 9 个点位materialName + quantity + materialType + targetWH、WH3 人工堆栈 15 个点位materialType + materialId + quantity
- **流程**: 先 `scheduler_start()`,成功后执行 `auto_feeding4to3()`
- **备注**: 支持 Excel 模式和手动参数模式Excel 路径存在时优先使用 Excel
### 物料上料/下料
#### `auto_feeding4to3`
自动化上料:从 4 号手套箱转运物料到 3 号手套箱
- **核心参数**: `xlsx_path`Excel 物料模板路径)
- **可选参数**: 同 `scheduler_start_and_auto_feeding` 的 WH4/WH3 点位参数
- **返回**: 等待上料任务完成后返回结果
#### `auto_batch_outbound_from_xlsx`
自动化下料(从 Excel 读取下料信息)
- **核心参数**: `xlsx_path`Excel 下料模板)
- **Excel 列**: locationId, warehouseId, 数量, x, y, z
### 物料管理
#### `create_and_inbound_materials`
批量创建固体物料并入库
- **核心参数**: `material_names`(物料名称列表,默认 `["LiPF6", "LiDFOB", "DTD", "LiFSI", "LiPO2F2"]`
- **可选参数**: `type_id`物料类型ID, `warehouse_name`(目标仓库,默认 "粉末加样头堆栈"
- **流程**: 创建物料 → 批量入库 → 同步
#### `create_material`
创建单个物料并可选入库
- **核心参数**: `material_name`, `type_id`, `warehouse_name`
- **可选参数**: `location_name_or_id`(库位编号如 "A01" 或 UUID
#### `create_sample`
创建配液板物料(含子瓶)并入库
- **核心参数**: `name`, `board_type`(如 "5ml分液瓶板", `bottle_type`(如 "5ml分液瓶", `location_code`(如 "A01"
- **可选参数**: `warehouse_name`(默认 "手动堆栈"
- **备注**: 自动创建 2x4=8 个子瓶
#### `storage_inbound`
单个物料入库
- **核心参数**: `material_id`, `location_id`
#### `storage_batch_inbound`
批量物料入库
- **核心参数**: `items``[{materialId, locationId}, ...]`
### 配液实验
#### `create_orders`
从 Excel 文件创建配液实验订单
- **核心参数**: `xlsx_path`Excel 文件路径)
- **Excel 列**: 配方ID, 创建日期, 配液瓶类型, 混匀时间(s), 扣电组装分液体积, 软包组装分液体积, 电导测试分液体积, 电导测试分液瓶数, 以及所有以 `(g)` 结尾的物料列
- **流程**: 解析 Excel → 提交订单 → 等待全部完成 → 计算质量比 → 提取分液瓶板 → 创建资源树对象
- **返回**: `{status, total_orders, bottle_count, reports, mass_ratios, vial_plates}`
#### `create_orders_formulation`
从配方列表创建配液实验订单(前端/API 输入版本)
- **核心参数**: `formulation`(配方数组)
- **可选参数**: `batch_id`, `bottle_type`(默认 "配液小瓶", `mix_time`(秒,列表), `coin_cell_volume`, `pouch_cell_volume`, `conductivity_volume`, `conductivity_bottle_count`
- **formulation 格式**:
```json
[
{
"order_name": "配方A",
"materials": [
{"name": "LiPF6", "mass": 12.5},
{"name": "EC", "mass": 50.0},
{"name": "DMC", "mass": 37.5}
]
}
]
```
- **返回**: 同 `create_orders`
### 物料转运
#### `transfer_3_to_2_to_1_auto`
**自动转运**:从 create_orders 结果中自动定位分液瓶板并转运到目标设备
- **核心参数**: `vial_plates`(分液瓶板列表,来自 create_orders 返回的 `vial_plates`
- **可选参数**: `target_device`(默认 "BatteryStation", `target_location`(默认 "bottle_rack_6x2", `mass_ratios`(配方信息)
- **流程**: 遍历瓶板 → 解析 locationId → 调用 LIMS 转运 API → 更新资源树
- **返回**: `{total, success, failed, results}`
#### `transfer_3_to_2_to_1`
3→2→1 物料转运(手动指定坐标)
- **核心参数**: `source_wh_id`, `source_x`, `source_y`, `source_z`
#### `transfer_3_to_2`
3→2 物料转运
- **核心参数**: `source_wh_id`, `source_x`, `source_y`, `source_z`
#### `transfer_1_to_2`
1→2 物料转运
- **核心参数**: 无
### 查询
#### `order_list_v2`
批量查询实验报告
- **可选参数**: `timeType`, `beginTime`, `endTime`, `status`60=运行中, 80=完成, 90=失败), `filter`, `skipCount`, `pageCount`, `sorting`
---
## 扣电组装站 (`BatteryStation`)
源码:`unilabos/devices/workstation/coin_cell_assembly/coin_cell_assembly.py`
### 设备控制(组合操作)
#### `func_pack_device_init_auto_start_combined`
**组合操作**:设备初始化 → 物料搜寻确认 → 切换自动模式 → 启动
- **核心参数**: `material_search_enable`(是否启用物料搜寻,默认 `False`
- **前置检查**: REG_UNILAB_INTERACT=False, COIL_GB_L_IGNORE_CMD=False, 所有握手寄存器无残留
- **流程**: 手动模式 → 初始化命令 → 监测物料搜寻弹窗并自动处理 → 自动模式 → 启动
- **返回**: `True`/`False`
- **备注**: 第一次运行必须调用此函数;后续批次调用 `func_sendbottle_allpack_multi`
### 批量组装
#### `func_sendbottle_allpack_multi`
**发送瓶数 + 批量组装**(适用于第二批次及后续批次)
- **核心参数**: `elec_num`(电解液瓶数), `elec_use_num`(每瓶组装电池数), `elec_vol`(电解液吸液量 μL默认 50
- **可选参数**:
- 双滴模式:`dual_drop_mode`(bool), `dual_drop_first_volume`(μL), `dual_drop_suction_timing`(bool), `dual_drop_start_timing`(bool)
- 组装参数:`assembly_type`(7=不用铝箔垫/8=用), `assembly_pressure`(N默认 4200)
- 物料参数:`fujipian_panshu`, `fujipian_juzhendianwei`, `gemopanshu`, `gemo_juzhendianwei`, `qiangtou_juzhendianwei`
- 开关:`lvbodian`(铝箔垫片), `battery_pressure_mode`(压力模式), `battery_clean_ignore`(忽略清洁)
- 其他:`file_path`(CSV保存路径), `formulations`(配方信息用于CSV追溯)
- **流程**: 发送瓶数触发物料搬运 → 设置PLC参数 → 循环等待PLC请求→下发参数→读取电池数据→写入CSV→更新资源树→ 完成握手
- **返回**: `{success, total_batteries, batteries, summary}`
- **备注**: 设备已初始化后直接调用;`formulations` 来自 create_orders 的 `mass_ratios`
#### `func_allpack_cmd`
全套组装(基础版本,含断点续传)
- **核心参数**: `elec_num`, `elec_use_num`, `elec_vol`, `assembly_type`, `assembly_pressure`, `file_path`
- **返回**: `{success, total_batteries, batteries, summary}`
#### `func_allpack_cmd_simp`
增强版组装(含双滴模式 + 负极片/隔膜/枪头参数)
- **核心参数**: 同 `func_sendbottle_allpack_multi`
- **备注**: 被 `func_sendbottle_allpack_multi` 内部调用
### 设备控制(单步操作)
#### `func_pack_device_init`
设备初始化(手动模式 → 初始化 → 复位标志)
#### `func_pack_device_auto`
切换自动模式
#### `func_pack_device_start`
启动设备
#### `func_pack_device_stop`
设备停止
#### `func_pack_send_bottle_num`
发送电解液瓶数(触发物料搬运)
- **核心参数**: `bottle_num`(瓶数)
### PLC 参数设置
#### `qiming_coin_cell_code`
设置组装物料参数
- **核心参数**: `fujipian_panshu`(负极片盘数)
- **可选参数**: `fujipian_juzhendianwei`, `gemopanshu`, `gemo_juzhendianwei`, `lvbodian`, `battery_pressure_mode`, `battery_pressure`, `battery_clean_ignore`
### 数据采集
#### `func_read_data_and_output`
持续数据采集并导出 CSV后台循环运行
- **核心参数**: `file_path`CSV 保存目录)
- **采集字段**: 开路电压, 极片质量, 组装时间, 压制力, 电解液加注量, 电池类型, 电解液二维码, 电池二维码
#### `func_stop_read_data`
停止 CSV 数据采集
### 设备状态属性(只读)
| 属性 | 类型 | 说明 |
|------|------|------|
| `sys_status` | str | 设备状态(启动中/停止中/复位中/初始化中) |
| `sys_mode` | str | 设备模式(手动/自动) |
| `data_assembly_coin_cell_num` | int | 已完成电池数量 |
| `data_assembly_time` | float | 单颗电池组装时间(秒) |
| `data_open_circuit_voltage` | float | 开路电压(V) |
| `data_pole_weight` | float | 正极片称重(g) |
| `data_glove_box_pressure` | float | 手套箱压力(mbar) |
| `data_glove_box_o2_content` | float | 手套箱氧含量(ppm) |
| `data_glove_box_water_content` | float | 手套箱水含量(ppm) |
| `data_coin_cell_code` | str | 电池二维码 |
| `data_electrolyte_code` | str | 电解液二维码 |
---
## 配置参考
设备图文件 `yibin_electrolyte_config.json` 中的仓库映射(`warehouse_mapping`
| 仓库名称 | 说明 | 典型操作 |
|---------|------|---------|
| 粉末加样头堆栈 | 20 个点位 (A01-T01) | `create_and_inbound_materials` 入库目标 |
| 配液站内试剂仓库 | 9 个点位 (A01-C03) | 试剂存储 |
| 自动堆栈-左 | 4 个点位 | 分液瓶板存放,`transfer_3_to_2_to_1_auto` 的源位置 |
| 自动堆栈-右 | 4 个点位 | 分液瓶板存放 |
| 手动传递窗左/右 | 各 15 个点位 | 人工上料/下料 |
| 4号手套箱内部堆栈 | 12 个点位 | `auto_feeding4to3` 的源位置 |

View File

@@ -105,7 +105,6 @@ jobs:
with: with:
miniforge-version: latest miniforge-version: latest
use-mamba: true use-mamba: true
python-version: '3.11.14'
channels: conda-forge,robostack-staging channels: conda-forge,robostack-staging
channel-priority: strict channel-priority: strict
activate-environment: build-env activate-environment: build-env
@@ -115,15 +114,13 @@ jobs:
- name: Install rattler-build and anaconda-client - name: Install rattler-build and anaconda-client
if: steps.should_build.outputs.should_build == 'true' if: steps.should_build.outputs.should_build == 'true'
run: | run: |
mamba install -n build-env --override-channels -c conda-forge rattler-build anaconda-client -y mamba install --override-channels -c conda-forge rattler-build anaconda-client -y
- name: Show environment info - name: Show environment info
if: steps.should_build.outputs.should_build == 'true' if: steps.should_build.outputs.should_build == 'true'
run: | run: |
conda info conda info
conda list -n build-env | grep -E "(rattler-build|anaconda-client)" conda list | grep -E "(rattler-build|anaconda-client)"
conda run -n build-env rattler-build --version
conda run -n build-env anaconda --version
echo "Platform: ${{ matrix.platform }}" echo "Platform: ${{ matrix.platform }}"
echo "OS: ${{ matrix.os }}" echo "OS: ${{ matrix.os }}"
@@ -131,9 +128,9 @@ jobs:
if: steps.should_build.outputs.should_build == 'true' if: steps.should_build.outputs.should_build == 'true'
run: | run: |
if [[ "${{ matrix.platform }}" == "osx-arm64" ]]; then if [[ "${{ matrix.platform }}" == "osx-arm64" ]]; then
conda run -n build-env rattler-build build -r ./recipes/msgs/recipe.yaml -c robostack -c robostack-staging -c conda-forge rattler-build build -r ./recipes/msgs/recipe.yaml -c robostack -c robostack-staging -c conda-forge
else else
conda run -n build-env rattler-build build -r ./recipes/msgs/recipe.yaml -c robostack -c robostack-staging -c conda-forge rattler-build build -r ./recipes/msgs/recipe.yaml -c robostack -c robostack-staging -c conda-forge
fi fi
- name: List built packages - name: List built packages
@@ -174,5 +171,5 @@ jobs:
run: | run: |
for package in $(find ./output -name "*.conda"); do for package in $(find ./output -name "*.conda"); do
echo "Uploading $package to unilab organization..." echo "Uploading $package to unilab organization..."
conda run -n build-env anaconda -t ${{ secrets.ANACONDA_API_TOKEN }} upload --user uni-lab --force "$package" anaconda -t ${{ secrets.ANACONDA_API_TOKEN }} upload --user uni-lab --force "$package"
done done

View File

@@ -98,7 +98,6 @@ jobs:
with: with:
miniforge-version: latest miniforge-version: latest
use-mamba: true use-mamba: true
python-version: '3.11.14'
channels: conda-forge,robostack-staging,uni-lab channels: conda-forge,robostack-staging,uni-lab
channel-priority: strict channel-priority: strict
activate-environment: build-env activate-environment: build-env
@@ -108,15 +107,13 @@ jobs:
- name: Install rattler-build and anaconda-client - name: Install rattler-build and anaconda-client
if: steps.should_build.outputs.should_build == 'true' if: steps.should_build.outputs.should_build == 'true'
run: | run: |
mamba install -n build-env --override-channels -c conda-forge rattler-build anaconda-client -y mamba install --override-channels -c conda-forge rattler-build anaconda-client -y
- name: Show environment info - name: Show environment info
if: steps.should_build.outputs.should_build == 'true' if: steps.should_build.outputs.should_build == 'true'
run: | run: |
conda info conda info
conda list -n build-env | grep -E "(rattler-build|anaconda-client)" conda list | grep -E "(rattler-build|anaconda-client)"
conda run -n build-env rattler-build --version
conda run -n build-env anaconda --version
echo "Platform: ${{ matrix.platform }}" echo "Platform: ${{ matrix.platform }}"
echo "OS: ${{ matrix.os }}" echo "OS: ${{ matrix.os }}"
echo "Build full package: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.build_full == 'true' }}" echo "Build full package: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.build_full == 'true' }}"
@@ -131,7 +128,7 @@ jobs:
if: steps.should_build.outputs.should_build == 'true' if: steps.should_build.outputs.should_build == 'true'
run: | run: |
echo "Building unilabos-env (conda environment dependencies)..." echo "Building unilabos-env (conda environment dependencies)..."
conda run -n build-env rattler-build build -r .conda/environment/recipe.yaml -c uni-lab -c robostack-staging -c conda-forge rattler-build build -r .conda/environment/recipe.yaml -c uni-lab -c robostack-staging -c conda-forge
- name: Upload unilabos-env to Anaconda.org (if enabled) - name: Upload unilabos-env to Anaconda.org (if enabled)
if: | if: |
@@ -143,7 +140,7 @@ jobs:
run: | run: |
echo "Uploading unilabos-env to uni-lab organization..." echo "Uploading unilabos-env to uni-lab organization..."
for package in $(find ./output -name "unilabos-env*.conda"); do for package in $(find ./output -name "unilabos-env*.conda"); do
conda run -n build-env anaconda -t ${{ secrets.ANACONDA_API_TOKEN }} upload --user uni-lab --force "$package" anaconda -t ${{ secrets.ANACONDA_API_TOKEN }} upload --user uni-lab --force "$package"
done done
- name: Build unilabos (with pip package) - name: Build unilabos (with pip package)
@@ -151,7 +148,7 @@ jobs:
run: | run: |
echo "Building unilabos package..." echo "Building unilabos package..."
# 如果已上传到 Anaconda从 uni-lab channel 获取 unilabos-env否则从本地 output 获取 # 如果已上传到 Anaconda从 uni-lab channel 获取 unilabos-env否则从本地 output 获取
conda run -n build-env rattler-build build -r .conda/base/recipe.yaml -c uni-lab -c robostack-staging -c conda-forge --channel ./output rattler-build build -r .conda/base/recipe.yaml -c uni-lab -c robostack-staging -c conda-forge --channel ./output
- name: Upload unilabos to Anaconda.org (if enabled) - name: Upload unilabos to Anaconda.org (if enabled)
if: | if: |
@@ -163,7 +160,7 @@ jobs:
run: | run: |
echo "Uploading unilabos to uni-lab organization..." echo "Uploading unilabos to uni-lab organization..."
for package in $(find ./output -name "unilabos-0*.conda" -o -name "unilabos-[0-9]*.conda"); do for package in $(find ./output -name "unilabos-0*.conda" -o -name "unilabos-[0-9]*.conda"); do
conda run -n build-env anaconda -t ${{ secrets.ANACONDA_API_TOKEN }} upload --user uni-lab --force "$package" anaconda -t ${{ secrets.ANACONDA_API_TOKEN }} upload --user uni-lab --force "$package"
done done
- name: Build unilabos-full - Only when explicitly requested - name: Build unilabos-full - Only when explicitly requested
@@ -173,7 +170,7 @@ jobs:
github.event.inputs.build_full == 'true' github.event.inputs.build_full == 'true'
run: | run: |
echo "Building unilabos-full package on ${{ matrix.platform }}..." echo "Building unilabos-full package on ${{ matrix.platform }}..."
conda run -n build-env rattler-build build -r .conda/full/recipe.yaml -c uni-lab -c robostack-staging -c conda-forge --channel ./output rattler-build build -r .conda/full/recipe.yaml -c uni-lab -c robostack-staging -c conda-forge --channel ./output
- name: Upload unilabos-full to Anaconda.org (if enabled) - name: Upload unilabos-full to Anaconda.org (if enabled)
if: | if: |
@@ -184,7 +181,7 @@ jobs:
run: | run: |
echo "Uploading unilabos-full to uni-lab organization..." echo "Uploading unilabos-full to uni-lab organization..."
for package in $(find ./output -name "unilabos-full*.conda"); do for package in $(find ./output -name "unilabos-full*.conda"); do
conda run -n build-env anaconda -t ${{ secrets.ANACONDA_API_TOKEN }} upload --user uni-lab --force "$package" anaconda -t ${{ secrets.ANACONDA_API_TOKEN }} upload --user uni-lab --force "$package"
done done
- name: List built packages - name: List built packages

5
.gitignore vendored
View File

@@ -251,7 +251,4 @@ ros-humble-unilabos-msgs-0.9.13-h6403a04_5.tar.bz2
*.bz2 *.bz2
test_config.py test_config.py
# Local config files with secrets
yibin_coin_cell_only_config.json
yibin_electrolyte_config.json
yibin_electrolyte_only_config.json

View File

@@ -1,72 +0,0 @@
# CSV 导出功能变更概要
## 修改的文件
### 1. [bioyond_cell_workstation.py](file:///d:/UniLabdev/Uni-Lab-OS/unilabos/devices/workstation/bioyond_studio/bioyond_cell/bioyond_cell_workstation.py)
#### 新增导入
- `import csv``import os`L14-15
#### 新增方法
| 方法 | 功能 |
|------|------|
| `_extract_prep_bottle_from_report` | 从 order_finish 报文提取**配液瓶**信息每订单最多1个 |
| `_extract_vial_bottles_from_report` | 从 order_finish 报文提取**分液瓶**信息(每订单可多个,返回数组) |
| `_export_order_csv` | 汇总所有信息写入 CSV 文件 |
#### 配液瓶筛选逻辑 (`_extract_prep_bottle_from_report`)
- `typemode="1"`, `realQuantity=1`, `usedQuantity=1`
- `locationId``3a19deae-2c7a-` 开头(手动传递窗)
- LIMS API 二次确认:`typeName` 含"配液瓶(小)"或"配液瓶(大)"
#### 分液瓶筛选逻辑 (`_extract_vial_bottles_from_report`)
- `typemode="1"`, `realQuantity=1`, `usedQuantity=1`
- `locationId``3a19debc-84b5-``3a19debe-5200` 开头(自动堆栈-左/右)
- LIMS API 二次确认:`typeName` 为"5ml分液瓶"或"20ml分液瓶"
- **返回数组**,支持 1×5ml + n×20ml 的组合
#### 修改的方法
| 方法 | 变更 |
|------|------|
| `_submit_and_wait_orders` | 新增配液瓶+分液瓶提取步骤,将 `prep_bottles``vial_bottles` 存入 `final_result` |
| `create_orders` | 添加 `csv_export_path` 参数,末尾调用 `_export_order_csv` |
| `create_orders_formulation` | 添加 `csv_export_path` 参数,末尾调用 `_export_order_csv` |
#### CSV 输出格式
```
orderCode, orderName, 配液瓶类型, 配液瓶二维码, 分液瓶类型, 分液瓶二维码, 目标配液质量比, 真实配液质量比, 时间
```
- 单个分液瓶时直接写值;多个分液瓶时类型和二维码用 JSON 数组表示
- CSV 编码使用 `utf-8-sig`(兼容 Excel 打开)
- `csv_export_path` 默认为空字符串,不传则不导出(向后兼容)
---
### 2. [bioyond_cell.yaml](file:///d:/UniLabdev/Uni-Lab-OS/unilabos/registry/devices/bioyond_cell.yaml)
为两个 action 注册了 `csv_export_path` 参数:
- `auto-create_orders`: `goal_default` + `schema.properties.goal.properties` 中添加 `csv_export_path`
- `auto-create_orders_formulation`: 同上
---
### 3. [coin_cell_assembly.py](file:///d:/UniLabdev/Uni-Lab-OS/unilabos/devices/workstation/coin_cell_assembly/coin_cell_assembly.py) 的 CSV 改动与全流程追溯
`bioyond_cell_workstation.py``_submit_and_wait_orders` 最后阶段,提取 `prep_bottles`(配液瓶)和 `vial_bottles`(分液瓶)的条码并随 `mass_ratios` 数组一起下发给各下游工站(例如扣电组装站),实现跨站的全流程配方追溯。
并在扣电站生成的 `date_xxx.csv` 中,**替换并新增**了以下列:
- 移除了原有的 `formulation_order_code` 与合并的 `formulation_ratio` 列。
- 新增 `orderName` 导出
- 新增 `prep_bottle_barcode`(奔曜传递的配液瓶二维码)
- 新增 `vial_bottle_barcodes`(奔曜传递的分液瓶二维码,多瓶时存 JSON 数组)
- 新增 `target_mass_ratio` 理论目标质量比
- 新增 `real_mass_ratio` 实际称量真实质量比
*注意:这与操作人员在手套箱内扫码传入扣电站的 `electrolyte_code` 是单独记录的,方便做数据核对。*
## 向后兼容性
- `csv_export_path` 默认值为 `""`(空字符串),现有调用不受影响
- 新增的 `prep_bottles``vial_bottles` 字段为 `final_result``mass_ratios` 内部的新增附属字段,不破坏现有数据结构。

View File

@@ -1,168 +0,0 @@
# 变更说明 2026-03-24
## 问题背景
`BioyondElectrolyteDeck`(原 `BIOYOND_YB_Deck`)迁移后,前端物料未能正常上传/同步。
---
## 修复内容
### 1. `unilabos/resources/bioyond/decks.py`
- 补回 `setup: bool = False` 参数及 `if setup: self.setup()` 逻辑,与旧版 `BIOYOND_YB_Deck` 保持一致
- 工厂函数 `bioyond_electrolyte_deck` 保留显式调用 `deck.setup()`,避免重复初始化
```python
# 修复前(缺少 setup 参数,无法通过 setup=True 触发初始化)
def __init__(self, name, size_x, size_y, size_z, category):
super().__init__(...)
# 修复后
def __init__(self, name, size_x, size_y, size_z, category, setup: bool = False):
super().__init__(...)
if setup:
self.setup()
```
---
### 2. `unilabos/resources/graphio.py`
- 修复 `resource_bioyond_to_plr` 中两处 `bottle.tracker.liquids` 直接赋值导致的崩溃
- `ResourceHolder`(如枪头盒的 TipSpot 槽位)没有 `tracker` 属性,直接访问会抛出 `AttributeError`,阻断整个 Bioyond 同步流程
```python
# 修复前
bottle.tracker.liquids = [...]
# 修复后
if hasattr(bottle, 'tracker') and bottle.tracker is not None:
bottle.tracker.liquids = [...]
```
---
### 3. `unilabos/app/main.py`
- 保留 `file_path is not None` 条件不变(已还原),并补充注释说明原因
- 该逻辑只在**本地文件模式**下有意义:本地 graph 文件只含设备结构远端有已保存物料merge 才能将两者合并
- 远端模式(`file_path=None`)下,`resource_tree_set``request_startup_json` 来自同一份数据merge 为空操作,条件是否加 `file_path is not None` 对结果没有影响
---
### 4. `unilabos/devices/workstation/bioyond_studio/station.py` ⭐ 核心修复
- 当 deck 通过反序列化创建时,不会自动调用 `setup()`,导致 `deck.children` 为空,`warehouses` 始终是 `{}`
- 增加兜底逻辑:仓库扫描后仍为空,则主动调用 `deck.setup()` 初始化仓库
- 这是导致所有物料放置失败(`warehouse '...' 在deck中不存在。可用warehouses: []`)的根本原因
```python
# 新增兜底
if not self.deck.warehouses and hasattr(self.deck, "setup") and callable(self.deck.setup):
logger.info("Deck 无仓库子节点,调用 setup() 初始化仓库")
self.deck.setup()
```
---
---
## 补充修复 2026-03-25依华扣电组装工站子物料未上传
### 问题
`CoinCellAssemblyWorkstation.post_init` 直接上传空 deck未调用 `deck.setup()`,导致:
- 前端子物料(成品弹夹、料盘、瓶架等)不显示
- 运行时 `self.deck.get_resource("成品弹夹")` 抛出 `ResourceNotFoundError`
### 修复文件
**`unilabos/devices/workstation/coin_cell_assembly/YB_YH_materials.py`**
- `YihuaCoinCellDeck.__init__` 补回 `setup: bool = False` 参数及 `if setup: self.setup()` 逻辑
**`unilabos/devices/workstation/coin_cell_assembly/coin_cell_assembly.py`**
- `post_init` 中增加与 Bioyond 工站相同的兜底逻辑deck 无子节点时调用 `deck.setup()` 初始化
```python
# post_init 中新增
if self.deck and not self.deck.children and hasattr(self.deck, "setup") and callable(self.deck.setup):
logger.info("YihuaCoinCellDeck 无子节点,调用 setup() 初始化")
self.deck.setup()
```
### 联动 Bug`MaterialPlate.create_with_holes` 构造顺序错误
**现象**`deck.setup()` 被调用后,启动时抛出:
```
设备后初始化失败: Must specify either `ordered_items` or `ordering`.
```
**根因**`create_with_holes` 原来的逻辑是先构造空的 `MaterialPlate` 实例,再 assign 洞位:
```python
# 旧错误cls(...) 时 ordered_items=None → ItemizedResource.__init__ 立即报错
plate = cls(name=name, ...) # ← 这里就崩了
holes = create_ordered_items_2d(...) # ← 根本没走到这里
for hole_name, hole in holes.items():
plate.assign_child_resource(...)
```
pylabrobot 的 `ItemizedResource.__init__` 强制要求 `ordered_items``ordering` 必须有一个不为 `None`,空构造直接失败。
**修复**:先建洞位,再作为 `ordered_items` 传给构造函数:
```python
# 新(正确):先建洞位,再一次性传入构造函数
holes = create_ordered_items_2d(klass=MaterialHole, num_items_x=4, ...)
return cls(name=name, ..., ordered_items=holes)
```
> 此 bug 此前未被触发,是因为 `deck.setup()` 从未被调用到——正是上面 `post_init` 兜底修复引出的联动问题。
---
## 补充修复 2026-03-253→2→1 转运资源同步失败
### 问题
配液工站Bioyond完成分液后调用 `transfer_3_to_2_to_1_auto` 将分液瓶板转运到扣电工站BatteryStation。物理 LIMS 转运成功,但数字孪生资源树同步始终失败:
```
[资源同步] ❌ 失败: 目标设备 'BatteryStation' 中未找到资源 'bottle_rack_6x2'
```
### 根因
`_get_resource_from_device` 方法负责跨设备查找资源对象,有两个问题:
1. **原始路径完全失效**:尝试 `from unilabos.app.ros2_app import get_device_plr_resource_by_name`,但该模块不存在,`ImportError``except Exception: pass` 静默吞掉
2. **降级路径搜错地方**:遍历 `self._plr_resources`Bioyond 自己的资源),不可能找到 BatteryStation 的 `bottle_rack_6x2`
### 修复文件
**`unilabos/devices/workstation/bioyond_studio/bioyond_cell/bioyond_cell_workstation.py`**
改用全局设备注册表 `registered_devices` 跨设备访问目标 deck
```python
# 修复前(失效)
from unilabos.app.ros2_app import get_device_plr_resource_by_name # 模块不存在
return get_device_plr_resource_by_name(device_id, resource_name)
# 修复后
from unilabos.ros.nodes.base_device_node import registered_devices
device_info = registered_devices.get(device_id)
if device_info is not None:
driver = device_info.get("driver_instance") # TypedDict 是 dict必须用 .get()
if driver is not None:
deck = getattr(driver, "deck", None)
if deck is not None:
res = deck.get_resource(resource_name)
```
关键细节:`DeviceInfoType``TypedDict`(即普通 `dict`),必须用 `device_info.get("driver_instance")` 而非 `getattr(device_info, "driver_instance", None)`——后者对字典永远返回 `None`
---
## 根本原因分析
旧版以**本地文件模式**启动(有 `graph` 文件deck 在启动前已通过 `merge_remote_resources` 获得仓库子节点,反序列化时能正确恢复 warehouses。
新版以**远端模式**启动(`file_path=None`deck 反序列化时没有仓库子节点,`station.py` 扫描为空,所有物料的 warehouse 匹配失败Bioyond 同步的 16 个资源全部无法放置到对应仓库位,前端不显示。

View File

@@ -2,6 +2,7 @@ import json
import logging import logging
import traceback import traceback
import uuid import uuid
import xml.etree.ElementTree as ET
from typing import Any, Dict, List from typing import Any, Dict, List
import networkx as nx import networkx as nx
@@ -24,15 +25,7 @@ class SimpleGraph:
def add_edge(self, source, target, **attrs): def add_edge(self, source, target, **attrs):
"""添加边""" """添加边"""
# edge = {"source": source, "target": target, **attrs} edge = {"source": source, "target": target, **attrs}
edge = {
"source": source, "target": target,
"source_node_uuid": source,
"target_node_uuid": target,
"source_handle_io": "source",
"target_handle_io": "target",
**attrs
}
self.edges.append(edge) self.edges.append(edge)
def to_dict(self): def to_dict(self):
@@ -49,7 +42,6 @@ class SimpleGraph:
"multigraph": False, "multigraph": False,
"graph": {}, "graph": {},
"nodes": nodes_list, "nodes": nodes_list,
"edges": self.edges,
"links": self.edges, "links": self.edges,
} }
@@ -66,8 +58,495 @@ def extract_json_from_markdown(text: str) -> str:
return text return text
def convert_to_type(val: str) -> Any:
"""将字符串值转换为适当的数据类型"""
if val == "True":
return True
if val == "False":
return False
if val == "?":
return None
if val.endswith(" g"):
return float(val.split(" ")[0])
if val.endswith("mg"):
return float(val.split("mg")[0])
elif val.endswith("mmol"):
return float(val.split("mmol")[0]) / 1000
elif val.endswith("mol"):
return float(val.split("mol")[0])
elif val.endswith("ml"):
return float(val.split("ml")[0])
elif val.endswith("RPM"):
return float(val.split("RPM")[0])
elif val.endswith(" °C"):
return float(val.split(" ")[0])
elif val.endswith(" %"):
return float(val.split(" ")[0])
return val
def refactor_data(data: List[Dict[str, Any]]) -> List[Dict[str, Any]]:
"""统一的数据重构函数,根据操作类型自动选择模板"""
refactored_data = []
# 定义操作映射,包含生物实验和有机化学的所有操作
OPERATION_MAPPING = {
# 生物实验操作
"transfer_liquid": "SynBioFactory-liquid_handler.prcxi-transfer_liquid",
"transfer": "SynBioFactory-liquid_handler.biomek-transfer",
"incubation": "SynBioFactory-liquid_handler.biomek-incubation",
"move_labware": "SynBioFactory-liquid_handler.biomek-move_labware",
"oscillation": "SynBioFactory-liquid_handler.biomek-oscillation",
# 有机化学操作
"HeatChillToTemp": "SynBioFactory-workstation-HeatChillProtocol",
"StopHeatChill": "SynBioFactory-workstation-HeatChillStopProtocol",
"StartHeatChill": "SynBioFactory-workstation-HeatChillStartProtocol",
"HeatChill": "SynBioFactory-workstation-HeatChillProtocol",
"Dissolve": "SynBioFactory-workstation-DissolveProtocol",
"Transfer": "SynBioFactory-workstation-TransferProtocol",
"Evaporate": "SynBioFactory-workstation-EvaporateProtocol",
"Recrystallize": "SynBioFactory-workstation-RecrystallizeProtocol",
"Filter": "SynBioFactory-workstation-FilterProtocol",
"Dry": "SynBioFactory-workstation-DryProtocol",
"Add": "SynBioFactory-workstation-AddProtocol",
}
UNSUPPORTED_OPERATIONS = ["Purge", "Wait", "Stir", "ResetHandling"]
for step in data:
operation = step.get("action")
if not operation or operation in UNSUPPORTED_OPERATIONS:
continue
# 处理重复操作
if operation == "Repeat":
times = step.get("times", step.get("parameters", {}).get("times", 1))
sub_steps = step.get("steps", step.get("parameters", {}).get("steps", []))
for i in range(int(times)):
sub_data = refactor_data(sub_steps)
refactored_data.extend(sub_data)
continue
# 获取模板名称
template = OPERATION_MAPPING.get(operation)
if not template:
# 自动推断模板类型
if operation.lower() in ["transfer", "incubation", "move_labware", "oscillation"]:
template = f"SynBioFactory-liquid_handler.biomek-{operation}"
else:
template = f"SynBioFactory-workstation-{operation}Protocol"
# 创建步骤数据
step_data = {
"template": template,
"description": step.get("description", step.get("purpose", f"{operation} operation")),
"lab_node_type": "Device",
"parameters": step.get("parameters", step.get("action_args", {})),
}
refactored_data.append(step_data)
return refactored_data
def build_protocol_graph(
labware_info: List[Dict[str, Any]], protocol_steps: List[Dict[str, Any]], workstation_name: str
) -> SimpleGraph:
"""统一的协议图构建函数,根据设备类型自动选择构建逻辑"""
G = SimpleGraph()
resource_last_writer = {}
LAB_NAME = "SynBioFactory"
protocol_steps = refactor_data(protocol_steps)
# 检查协议步骤中的模板来判断协议类型
has_biomek_template = any(
("biomek" in step.get("template", "")) or ("prcxi" in step.get("template", ""))
for step in protocol_steps
)
if has_biomek_template:
# 生物实验协议图构建
for labware_id, labware in labware_info.items():
node_id = str(uuid.uuid4())
labware_attrs = labware.copy()
labware_id = labware_attrs.pop("id", labware_attrs.get("name", f"labware_{uuid.uuid4()}"))
labware_attrs["description"] = labware_id
labware_attrs["lab_node_type"] = (
"Reagent" if "Plate" in str(labware_id) else "Labware" if "Rack" in str(labware_id) else "Sample"
)
labware_attrs["device_id"] = workstation_name
G.add_node(node_id, template=f"{LAB_NAME}-host_node-create_resource", **labware_attrs)
resource_last_writer[labware_id] = f"{node_id}:labware"
# 处理协议步骤
prev_node = None
for i, step in enumerate(protocol_steps):
node_id = str(uuid.uuid4())
G.add_node(node_id, **step)
# 添加控制流边
if prev_node is not None:
G.add_edge(prev_node, node_id, source_port="ready", target_port="ready")
prev_node = node_id
# 处理物料流
params = step.get("parameters", {})
if "sources" in params and params["sources"] in resource_last_writer:
source_node, source_port = resource_last_writer[params["sources"]].split(":")
G.add_edge(source_node, node_id, source_port=source_port, target_port="labware")
if "targets" in params:
resource_last_writer[params["targets"]] = f"{node_id}:labware"
# 添加协议结束节点
end_id = str(uuid.uuid4())
G.add_node(end_id, template=f"{LAB_NAME}-liquid_handler.biomek-run_protocol")
if prev_node is not None:
G.add_edge(prev_node, end_id, source_port="ready", target_port="ready")
else:
# 有机化学协议图构建
WORKSTATION_ID = workstation_name
# 为所有labware创建资源节点
for item_id, item in labware_info.items():
# item_id = item.get("id") or item.get("name", f"item_{uuid.uuid4()}")
node_id = str(uuid.uuid4())
# 判断节点类型
if item.get("type") == "hardware" or "reactor" in str(item_id).lower():
if "reactor" not in str(item_id).lower():
continue
lab_node_type = "Sample"
description = f"Prepare Reactor: {item_id}"
liquid_type = []
liquid_volume = []
else:
lab_node_type = "Reagent"
description = f"Add Reagent to Flask: {item_id}"
liquid_type = [item_id]
liquid_volume = [1e5]
G.add_node(
node_id,
template=f"{LAB_NAME}-host_node-create_resource",
description=description,
lab_node_type=lab_node_type,
res_id=item_id,
device_id=WORKSTATION_ID,
class_name="container",
parent=WORKSTATION_ID,
bind_locations={"x": 0.0, "y": 0.0, "z": 0.0},
liquid_input_slot=[-1],
liquid_type=liquid_type,
liquid_volume=liquid_volume,
slot_on_deck="",
role=item.get("role", ""),
)
resource_last_writer[item_id] = f"{node_id}:labware"
last_control_node_id = None
# 处理协议步骤
for step in protocol_steps:
node_id = str(uuid.uuid4())
G.add_node(node_id, **step)
# 控制流
if last_control_node_id is not None:
G.add_edge(last_control_node_id, node_id, source_port="ready", target_port="ready")
last_control_node_id = node_id
# 物料流
params = step.get("parameters", {})
input_resources = {
"Vessel": params.get("vessel"),
"ToVessel": params.get("to_vessel"),
"FromVessel": params.get("from_vessel"),
"reagent": params.get("reagent"),
"solvent": params.get("solvent"),
"compound": params.get("compound"),
"sources": params.get("sources"),
"targets": params.get("targets"),
}
for target_port, resource_name in input_resources.items():
if resource_name and resource_name in resource_last_writer:
source_node, source_port = resource_last_writer[resource_name].split(":")
G.add_edge(source_node, node_id, source_port=source_port, target_port=target_port)
output_resources = {
"VesselOut": params.get("vessel"),
"FromVesselOut": params.get("from_vessel"),
"ToVesselOut": params.get("to_vessel"),
"FiltrateOut": params.get("filtrate_vessel"),
"reagent": params.get("reagent"),
"solvent": params.get("solvent"),
"compound": params.get("compound"),
"sources_out": params.get("sources"),
"targets_out": params.get("targets"),
}
for source_port, resource_name in output_resources.items():
if resource_name:
resource_last_writer[resource_name] = f"{node_id}:{source_port}"
return G
def draw_protocol_graph(protocol_graph: SimpleGraph, output_path: str):
"""
(辅助功能) 使用 networkx 和 matplotlib 绘制协议工作流图,用于可视化。
"""
if not protocol_graph:
print("Cannot draw graph: Graph object is empty.")
return
G = nx.DiGraph()
for node_id, attrs in protocol_graph.nodes.items():
label = attrs.get("description", attrs.get("template", node_id[:8]))
G.add_node(node_id, label=label, **attrs)
for edge in protocol_graph.edges:
G.add_edge(edge["source"], edge["target"])
plt.figure(figsize=(20, 15))
try:
pos = nx.nx_agraph.graphviz_layout(G, prog="dot")
except Exception:
pos = nx.shell_layout(G) # Fallback layout
node_labels = {node: data["label"] for node, data in G.nodes(data=True)}
nx.draw(
G,
pos,
with_labels=False,
node_size=2500,
node_color="skyblue",
node_shape="o",
edge_color="gray",
width=1.5,
arrowsize=15,
)
nx.draw_networkx_labels(G, pos, labels=node_labels, font_size=8, font_weight="bold")
plt.title("Chemical Protocol Workflow Graph", size=15)
plt.savefig(output_path, dpi=300, bbox_inches="tight")
plt.close()
print(f" - Visualization saved to '{output_path}'")
from networkx.drawing.nx_agraph import to_agraph
import re
COMPASS = {"n","e","s","w","ne","nw","se","sw","c"}
def _is_compass(port: str) -> bool:
return isinstance(port, str) and port.lower() in COMPASS
def draw_protocol_graph_with_ports(protocol_graph, output_path: str, rankdir: str = "LR"):
"""
使用 Graphviz 端口语法绘制协议工作流图。
- 若边上的 source_port/target_port 是 compassn/e/s/w/...),直接用 compass。
- 否则自动为节点创建 record 形状并定义命名端口 <portname>。
最终由 PyGraphviz 渲染并输出到 output_path后缀决定格式如 .png/.svg/.pdf
"""
if not protocol_graph:
print("Cannot draw graph: Graph object is empty.")
return
# 1) 先用 networkx 搭建有向图,保留端口属性
G = nx.DiGraph()
for node_id, attrs in protocol_graph.nodes.items():
label = attrs.get("description", attrs.get("template", node_id[:8]))
# 保留一个干净的“中心标签”,用于放在 record 的中间槽
G.add_node(node_id, _core_label=str(label), **{k:v for k,v in attrs.items() if k not in ("label",)})
edges_data = []
in_ports_by_node = {} # 收集命名输入端口
out_ports_by_node = {} # 收集命名输出端口
for edge in protocol_graph.edges:
u = edge["source"]
v = edge["target"]
sp = edge.get("source_port")
tp = edge.get("target_port")
# 记录到图里(保留原始端口信息)
G.add_edge(u, v, source_port=sp, target_port=tp)
edges_data.append((u, v, sp, tp))
# 如果不是 compass就按“命名端口”先归类等会儿给节点造 record
if sp and not _is_compass(sp):
out_ports_by_node.setdefault(u, set()).add(str(sp))
if tp and not _is_compass(tp):
in_ports_by_node.setdefault(v, set()).add(str(tp))
# 2) 转为 AGraph使用 Graphviz 渲染
A = to_agraph(G)
A.graph_attr.update(rankdir=rankdir, splines="true", concentrate="false", fontsize="10")
A.node_attr.update(shape="box", style="rounded,filled", fillcolor="lightyellow", color="#999999", fontname="Helvetica")
A.edge_attr.update(arrowsize="0.8", color="#666666")
# 3) 为需要命名端口的节点设置 record 形状与 label
# 左列 = 输入端口;中间 = 核心标签;右列 = 输出端口
for n in A.nodes():
node = A.get_node(n)
core = G.nodes[n].get("_core_label", n)
in_ports = sorted(in_ports_by_node.get(n, []))
out_ports = sorted(out_ports_by_node.get(n, []))
# 如果该节点涉及命名端口,则用 record否则保留原 box
if in_ports or out_ports:
def port_fields(ports):
if not ports:
return " " # 必须留一个空槽占位
# 每个端口一个小格子,<p> name
return "|".join(f"<{re.sub(r'[^A-Za-z0-9_:.|-]', '_', p)}> {p}" for p in ports)
left = port_fields(in_ports)
right = port_fields(out_ports)
# 三栏:左(入) | 中(节点名) | 右(出)
record_label = f"{{ {left} | {core} | {right} }}"
node.attr.update(shape="record", label=record_label)
else:
# 没有命名端口:普通盒子,显示核心标签
node.attr.update(label=str(core))
# 4) 给边设置 headport / tailport
# - 若端口为 compass直接用 compasse.g., headport="e"
# - 若端口为命名端口:使用在 record 中定义的 <port> 名(同名即可)
for (u, v, sp, tp) in edges_data:
e = A.get_edge(u, v)
# Graphviz 属性tail 是源head 是目标
if sp:
if _is_compass(sp):
e.attr["tailport"] = sp.lower()
else:
# 与 record label 中 <port> 名一致;特殊字符已在 label 中做了清洗
e.attr["tailport"] = re.sub(r'[^A-Za-z0-9_:.|-]', '_', str(sp))
if tp:
if _is_compass(tp):
e.attr["headport"] = tp.lower()
else:
e.attr["headport"] = re.sub(r'[^A-Za-z0-9_:.|-]', '_', str(tp))
# 可选:若想让边更贴边缘,可设置 constraint/spline 等
# e.attr["arrowhead"] = "vee"
# 5) 输出
A.draw(output_path, prog="dot")
print(f" - Port-aware workflow rendered to '{output_path}'")
def flatten_xdl_procedure(procedure_elem: ET.Element) -> List[ET.Element]:
"""展平嵌套的XDL程序结构"""
flattened_operations = []
TEMP_UNSUPPORTED_PROTOCOL = ["Purge", "Wait", "Stir", "ResetHandling"]
def extract_operations(element: ET.Element):
if element.tag not in ["Prep", "Reaction", "Workup", "Purification", "Procedure"]:
if element.tag not in TEMP_UNSUPPORTED_PROTOCOL:
flattened_operations.append(element)
for child in element:
extract_operations(child)
for child in procedure_elem:
extract_operations(child)
return flattened_operations
def parse_xdl_content(xdl_content: str) -> tuple:
"""解析XDL内容"""
try:
xdl_content_cleaned = "".join(c for c in xdl_content if c.isprintable())
root = ET.fromstring(xdl_content_cleaned)
synthesis_elem = root.find("Synthesis")
if synthesis_elem is None:
return None, None, None
# 解析硬件组件
hardware_elem = synthesis_elem.find("Hardware")
hardware = []
if hardware_elem is not None:
hardware = [{"id": c.get("id"), "type": c.get("type")} for c in hardware_elem.findall("Component")]
# 解析试剂
reagents_elem = synthesis_elem.find("Reagents")
reagents = []
if reagents_elem is not None:
reagents = [{"name": r.get("name"), "role": r.get("role", "")} for r in reagents_elem.findall("Reagent")]
# 解析程序
procedure_elem = synthesis_elem.find("Procedure")
if procedure_elem is None:
return None, None, None
flattened_operations = flatten_xdl_procedure(procedure_elem)
return hardware, reagents, flattened_operations
except ET.ParseError as e:
raise ValueError(f"Invalid XDL format: {e}")
def convert_xdl_to_dict(xdl_content: str) -> Dict[str, Any]:
"""
将XDL XML格式转换为标准的字典格式
Args:
xdl_content: XDL XML内容
Returns:
转换结果,包含步骤和器材信息
"""
try:
hardware, reagents, flattened_operations = parse_xdl_content(xdl_content)
if hardware is None:
return {"error": "Failed to parse XDL content", "success": False}
# 将XDL元素转换为字典格式
steps_data = []
for elem in flattened_operations:
# 转换参数类型
parameters = {}
for key, val in elem.attrib.items():
converted_val = convert_to_type(val)
if converted_val is not None:
parameters[key] = converted_val
step_dict = {
"operation": elem.tag,
"parameters": parameters,
"description": elem.get("purpose", f"Operation: {elem.tag}"),
}
steps_data.append(step_dict)
# 合并硬件和试剂为统一的labware_info格式
labware_data = []
labware_data.extend({"id": hw["id"], "type": "hardware", **hw} for hw in hardware)
labware_data.extend({"name": reagent["name"], "type": "reagent", **reagent} for reagent in reagents)
return {
"success": True,
"steps": steps_data,
"labware": labware_data,
"message": f"Successfully converted XDL to dict format. Found {len(steps_data)} steps and {len(labware_data)} labware items.",
}
except Exception as e:
error_msg = f"XDL conversion failed: {str(e)}"
logger.error(error_msg)
return {"error": error_msg, "success": False}
def create_workflow( def create_workflow(

View File

@@ -630,8 +630,6 @@ def main():
continue continue
# 如果从远端获取了物料信息,则与本地物料进行同步 # 如果从远端获取了物料信息,则与本地物料进行同步
# 仅在本地文件模式下有意义:本地文件只含设备结构,远端有已保存的物料,需要 merge
# 远端模式下 resource_tree_set 与 request_startup_json 来自同一份数据merge 为空操作
if file_path is not None and request_startup_json and "nodes" in request_startup_json: if file_path is not None and request_startup_json and "nodes" in request_startup_json:
print_status("开始同步远端物料到本地...", "info") print_status("开始同步远端物料到本地...", "info")
remote_tree_set = ResourceTreeSet.from_raw_dict_list(request_startup_json["nodes"]) remote_tree_set = ResourceTreeSet.from_raw_dict_list(request_startup_json["nodes"])

View File

@@ -59,7 +59,6 @@ class JobAddReq(BaseModel):
task_id: str = Field(examples=["task_id"], description="task uuid (auto-generated if empty)", default="") task_id: str = Field(examples=["task_id"], description="task uuid (auto-generated if empty)", default="")
job_id: str = Field(examples=["job_id"], description="goal uuid (auto-generated if empty)", default="") job_id: str = Field(examples=["job_id"], description="goal uuid (auto-generated if empty)", default="")
node_id: str = Field(examples=["node_id"], description="node uuid", default="") node_id: str = Field(examples=["node_id"], description="node uuid", default="")
notebook_id: str = Field(examples=["notebook_id"], description="notebook uuid", default="")
server_info: dict = Field( server_info: dict = Field(
examples=[{"send_timestamp": 1717000000.0}], examples=[{"send_timestamp": 1717000000.0}],
description="server info (auto-generated if empty)", description="server info (auto-generated if empty)",

View File

@@ -320,7 +320,6 @@ def job_add(req: JobAddReq) -> JobData:
action_name=action_name, action_name=action_name,
task_id=task_id, task_id=task_id,
job_id=job_id, job_id=job_id,
notebook_id=req.notebook_id,
device_action_key=device_action_key, device_action_key=device_action_key,
) )

View File

@@ -59,7 +59,6 @@ class QueueItem:
action_name: str action_name: str
task_id: str task_id: str
job_id: str job_id: str
notebook_id: str
device_action_key: str device_action_key: str
next_run_time: float = 0 # 下次执行时间戳 next_run_time: float = 0 # 下次执行时间戳
retry_count: int = 0 # 重试次数 retry_count: int = 0 # 重试次数
@@ -72,7 +71,6 @@ class JobInfo:
job_id: str job_id: str
task_id: str task_id: str
device_id: str device_id: str
notebook_id: str
action_name: str action_name: str
device_action_key: str device_action_key: str
status: JobStatus status: JobStatus
@@ -541,10 +539,7 @@ class MessageProcessor:
self.reconnect_count += 1 self.reconnect_count += 1
backoff = WSConfig.reconnect_interval backoff = WSConfig.reconnect_interval
logger.info( logger.info(
"[MessageProcessor] 即将在 %s 秒后重连 (已尝试 %s/%s)", f"[MessageProcessor] 即将在 {backoff} 秒后重连 (已尝试 {self.reconnect_count}/{WSConfig.max_reconnect_attempts})"
backoff,
self.reconnect_count,
WSConfig.max_reconnect_attempts,
) )
await asyncio.sleep(backoff) await asyncio.sleep(backoff)
else: else:
@@ -708,7 +703,6 @@ class MessageProcessor:
action_name = data.get("action_name", "") action_name = data.get("action_name", "")
task_id = data.get("task_id", "") task_id = data.get("task_id", "")
job_id = data.get("job_id", "") job_id = data.get("job_id", "")
notebook_id = data.get("notebook_id", "")
if not all([device_id, action_name, task_id, job_id]): if not all([device_id, action_name, task_id, job_id]):
logger.error("[MessageProcessor] Missing required fields in query_action_state") logger.error("[MessageProcessor] Missing required fields in query_action_state")
@@ -724,7 +718,6 @@ class MessageProcessor:
job_id=job_id, job_id=job_id,
task_id=task_id, task_id=task_id,
device_id=device_id, device_id=device_id,
notebook_id=notebook_id,
action_name=action_name, action_name=action_name,
device_action_key=device_action_key, device_action_key=device_action_key,
status=JobStatus.QUEUE, status=JobStatus.QUEUE,
@@ -739,27 +732,13 @@ class MessageProcessor:
if can_start_immediately: if can_start_immediately:
# 可以立即开始 # 可以立即开始
await self._send_action_state_response( await self._send_action_state_response(
device_id, device_id, action_name, task_id, job_id, "query_action_status", True, 0
action_name,
task_id,
job_id,
"query_action_status",
True,
0,
notebook_id=notebook_id,
) )
logger.trace(f"[MessageProcessor] Job {job_log} can start immediately") logger.trace(f"[MessageProcessor] Job {job_log} can start immediately")
else: else:
# 需要排队 # 需要排队
await self._send_action_state_response( await self._send_action_state_response(
device_id, device_id, action_name, task_id, job_id, "query_action_status", False, 10
action_name,
task_id,
job_id,
"query_action_status",
False,
10,
notebook_id=notebook_id,
) )
logger.trace(f"[MessageProcessor] Job {job_log} queued") logger.trace(f"[MessageProcessor] Job {job_log} queued")
@@ -789,7 +768,6 @@ class MessageProcessor:
job_id=req.job_id, job_id=req.job_id,
task_id=req.task_id, task_id=req.task_id,
device_id=req.device_id, device_id=req.device_id,
notebook_id=req.notebook_id,
action_name=action_name, action_name=action_name,
device_action_key=device_action_key, device_action_key=device_action_key,
status=JobStatus.QUEUE, status=JobStatus.QUEUE,
@@ -797,16 +775,11 @@ class MessageProcessor:
always_free=True, always_free=True,
) )
self.device_manager.add_queue_request(job_info) self.device_manager.add_queue_request(job_info)
existing_job = job_info
logger.info(f"[MessageProcessor] Job {job_log} always_free, auto-registered from direct job_start") logger.info(f"[MessageProcessor] Job {job_log} always_free, auto-registered from direct job_start")
else: else:
logger.error(f"[MessageProcessor] Job {job_log} not registered (missing query_action_state)") logger.error(f"[MessageProcessor] Job {job_log} not registered (missing query_action_state)")
return return
if existing_job and req.notebook_id and not existing_job.notebook_id:
existing_job.notebook_id = req.notebook_id
notebook_id = req.notebook_id or (existing_job.notebook_id if existing_job else "")
success = self.device_manager.start_job(req.job_id) success = self.device_manager.start_job(req.job_id)
if not success: if not success:
logger.error(f"[MessageProcessor] Failed to start job {job_log}") logger.error(f"[MessageProcessor] Failed to start job {job_log}")
@@ -822,7 +795,6 @@ class MessageProcessor:
action_name=req.action, action_name=req.action,
task_id=req.task_id, task_id=req.task_id,
job_id=req.job_id, job_id=req.job_id,
notebook_id=notebook_id,
device_action_key=device_action_key, device_action_key=device_action_key,
) )
@@ -862,7 +834,6 @@ class MessageProcessor:
"job_id": req.job_id, "job_id": req.job_id,
"task_id": req.task_id, "task_id": req.task_id,
"device_id": req.device_id, "device_id": req.device_id,
"notebook_id": queue_item.notebook_id,
"action_name": req.action, "action_name": req.action,
"status": "failed", "status": "failed",
"feedback_data": {}, "feedback_data": {},
@@ -884,7 +855,6 @@ class MessageProcessor:
"query_action_status", "query_action_status",
True, True,
0, 0,
notebook_id=next_job.notebook_id,
) )
next_job_log = format_job_log( next_job_log = format_job_log(
next_job.job_id, next_job.task_id, next_job.device_id, next_job.action_name next_job.job_id, next_job.task_id, next_job.device_id, next_job.action_name
@@ -1131,15 +1101,7 @@ class MessageProcessor:
logger.info(f"[MessageProcessor] Restart cleanup scheduled") logger.info(f"[MessageProcessor] Restart cleanup scheduled")
async def _send_action_state_response( async def _send_action_state_response(
self, self, device_id: str, action_name: str, task_id: str, job_id: str, typ: str, free: bool, need_more: int
device_id: str,
action_name: str,
task_id: str,
job_id: str,
typ: str,
free: bool,
need_more: int,
notebook_id: str = "",
): ):
"""发送动作状态响应""" """发送动作状态响应"""
message = { message = {
@@ -1150,7 +1112,6 @@ class MessageProcessor:
"action_name": action_name, "action_name": action_name,
"task_id": task_id, "task_id": task_id,
"job_id": job_id, "job_id": job_id,
"notebook_id": notebook_id,
"free": free, "free": free,
"need_more": need_more + 1, "need_more": need_more + 1,
}, },
@@ -1233,7 +1194,6 @@ class QueueProcessor:
action_name=timeout_job.action_name, action_name=timeout_job.action_name,
task_id=timeout_job.task_id, task_id=timeout_job.task_id,
job_id=timeout_job.job_id, job_id=timeout_job.job_id,
notebook_id=timeout_job.notebook_id,
device_action_key=timeout_job.device_action_key, device_action_key=timeout_job.device_action_key,
) )
# 发布超时失败状态这会触发正常的job完成流程 # 发布超时失败状态这会触发正常的job完成流程
@@ -1292,7 +1252,6 @@ class QueueProcessor:
"action_name": job_info.action_name, "action_name": job_info.action_name,
"task_id": job_info.task_id, "task_id": job_info.task_id,
"job_id": job_info.job_id, "job_id": job_info.job_id,
"notebook_id": job_info.notebook_id,
"free": False, "free": False,
"need_more": 10 + 1, "need_more": 10 + 1,
}, },
@@ -1332,7 +1291,6 @@ class QueueProcessor:
"action_name": job_info.action_name, "action_name": job_info.action_name,
"task_id": job_info.task_id, "task_id": job_info.task_id,
"job_id": job_info.job_id, "job_id": job_info.job_id,
"notebook_id": job_info.notebook_id,
"free": False, "free": False,
"need_more": 10 + 1, "need_more": 10 + 1,
}, },
@@ -1378,15 +1336,12 @@ class QueueProcessor:
"action_name": next_job.action_name, "action_name": next_job.action_name,
"task_id": next_job.task_id, "task_id": next_job.task_id,
"job_id": next_job.job_id, "job_id": next_job.job_id,
"notebook_id": next_job.notebook_id,
"free": True, "free": True,
"need_more": 0, "need_more": 0,
}, },
} }
self.message_processor.send_message(message) self.message_processor.send_message(message)
# next_job_log = format_job_log( # next_job_log = format_job_log(next_job.job_id, next_job.task_id, next_job.device_id, next_job.action_name)
# next_job.job_id, next_job.task_id, next_job.device_id, next_job.action_name
# )
# logger.debug(f"[QueueProcessor] Notified next job {next_job_log} can start") # logger.debug(f"[QueueProcessor] Notified next job {next_job_log} can start")
# 立即触发下一轮状态检查 # 立即触发下一轮状态检查
@@ -1555,7 +1510,6 @@ class WebSocketClient(BaseCommunicationClient):
"job_id": item.job_id, "job_id": item.job_id,
"task_id": item.task_id, "task_id": item.task_id,
"device_id": item.device_id, "device_id": item.device_id,
"notebook_id": item.notebook_id,
"action_name": item.action_name, "action_name": item.action_name,
"status": status, "status": status,
"feedback_data": feedback_data, "feedback_data": feedback_data,

View File

@@ -1,78 +0,0 @@
# Donghua EC 用户指南UniLab 接入版)
## 概述
- 提供两套使用方式:
- 测试封装动作:一条指令完成“启动实验 → 实时采样写文件 → 导出数据”,可选自动停止。
- 基础启动动作:按需组合“启动实验、实时输出、停止、导出”,更灵活可编排。
## 设备配置
- `interface_dir`DHInterface 目录(包含 `ECCore.dll` 与配置文件),示例:`d:\Uni-Lab-OS\Uni-Lab-OS\unilabos\devices\donghua_ec\x64release\DHInterface`(注册见 `unilabos/registry/devices/donghua_ec.yaml:1940`)。
- `dll_path`(可选):若与 `interface_dir` 不一致,可直接指定 `ECCore.dll` 完整路径(`donghua_ec.yaml:1936`)。
- 默认通道:`machine_id``donghua_ec.yaml:1944`)。
## 初始化
- 后端自动:设备注册后会自动调用 `auto-initialize`(加载 DLL`auto-post_init`(注入),无需前端干预(`donghua_ec.yaml:27``donghua_ec.yaml:48`)。
- 手动(可选):
- 调用 `auto-initialize``{"device_id":"<设备ID>","action":"auto-initialize"}`
- 调用 `auto-post_init``{"device_id":"<设备ID>","action":"auto-post_init"}`
## 动作总览
- 测试封装动作(均要求传入 `output_dir`
- `test_open_circuit_energy`(默认 `stop_after=true`,使用轮询检测实验结束后再停止与导出,不再使用 `wait_seconds`
- `test_eis`(默认 `stop_after=false`,避免提前结束,`donghua_ec.yaml:1480`
- `test_gitt`(默认 `stop_after=false``donghua_ec.yaml:1627`
- `test_linear_scan_voltammetry`(默认 `stop_after=false`,必填 `output_dir`,参考 `donghua_ec.yaml:1750` 及后续)
- 基础启动与组合:
- `start_open_circuit_energy``start_eis``start_gitt``start_linear_scan_voltammetry`
- 实时输出:`start_realtime_output` / `stop_realtime_output``donghua_ec.yaml:1068``donghua_ec.yaml:1155`
- 停止实验:`stop_experiment``donghua_ec.yaml:1118`
- 导出数据:`export_*_data`(如 `export_eis_data``export_gitt_data` 等,均要求 `output_dir/dest_dir`
## 快速测试流程(推荐)
- 开路电位:
- 请求:
```json
{"device_id":"<设备ID>","action":"test_open_circuit_energy","action_args":{"output_dir":"d:/data/oc","interval":0.5,"stop_after":true}}
```
- 返回包含:`success`、`realtime_file`、`export_files`、`export_dest`。
- 阻抗EIS
- 请求(只需给导出目录,其他用默认即可):
```json
{"device_id":"<设备ID>","action":"test_eis","action_args":{"output_dir":"d:/data/eis","start_freq":10000,"end_freq":0.1,"amplitude":0.01,"point_count":10,"interval":0.5}}
```
- 默认不自动停止(`stop_after=false`),可在完成采样后继续扫频;若需自动停,传 `stop_after=true`。
- GITT
- 请求:
```json
{"device_id":"<设备ID>","action":"test_gitt","action_args":{"output_dir":"d:/data/gitt","current":1.0,"time_per_point_cc":0.1,"continue_time_cc":60,"time_per_point_oc":0.1,"continue_time_oc":60,"is_voltage_trig":true,"voltage_or_current_trig_direction":0,"voltage_or_current_trig_value":0,"interval":0.5}}
```
## 基础启动与组合(灵活编排)
- 启动 EIS
- `{"device_id":"<设备ID>","action":"start_eis","action_args":{"start_freq":10000,"end_freq":0.1,"amplitude":0.01,"point_count":10}}`
- 开启实时输出:
- `{"device_id":"<设备ID>","action":"start_realtime_output","action_args":{"interval":0.5}}`
- 关闭实时输出并获取文件:
- `{"device_id":"<设备ID>","action":"stop_realtime_output"}`
- 导出数据到目录:
- `{"device_id":"<设备ID>","action":"export_eis_data","action_args":{"output_dir":"d:/data/eis"}}`
- 停止实验(可选):
- `{"device_id":"<设备ID>","action":"stop_experiment"}`
## 重要说明
- 必填导出目录:所有 `test_*` 和 `export_*` 动作需要提供 `output_dir`(或 `dest_dir`),否则不会复制数据到目标位置(`donghua_ec.yaml:1545`、`donghua_ec.yaml:1710`)。
- 关于提前结束:非开路的测试封装动作默认 `stop_after=false`,避免在实时采样后调用 `stop_experiment`,从而导致频率扫描未达到 `end_freq` 就停止(修复见 `donghua_ec.yaml:1480`、`donghua_ec.yaml:1627`)。
- 实时文件位置:若未指定 `dest_dir`,实时输出会写入 `interface_dir/SourceData/<日期>/<实验子目录>`(实现参考 `unilabos/devices/donghua_ec/donghua_ec.py:1042`)。
## 数据字段(参考)
- EIS 拆分:`time/zre/zim/z/freq/phase/edc`(实现参考 `unilabos/devices/donghua_ec/donghua_ec.py:1109`)。
- 线性扫描与循环伏安:`time/potential/current` 等(实现参考 `donghua_ec.py:1111`、`donghua_ec.py:1114`)。
- 开路电位:写入时间序列与电位(`donghua_ec.py:1045`)。

View File

@@ -1,3 +0,0 @@
from .donghua_ec import DonghuaEC
__all__ = ["DonghuaEC"]

View File

@@ -1,24 +0,0 @@
{
"nodes": [
{
"id": "donghua_ec_device",
"name": "Donghua_EC",
"parent": null,
"type": "device",
"class": "donghua_ec",
"position": {
"x": 620.6111111111111,
"y": 171,
"z": 0
},
"config": {
"interface_dir": "D:/Uni-Lab-OS/Uni-Lab-OS/unilabos/devices/donghua_ec/x64release/DHInterface",
"dll_path": "",
"machine_id": 0
},
"data": {},
"children": []
}
],
"links": []
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,358 +0,0 @@
Time(s) E(mV) I(mA) Q(mC) Capacity(mAh) Energy(Wh) P(W)
0.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
4.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
4.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
4.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
4.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
4.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
4.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
4.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
4.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
4.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
4.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
5.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
5.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
5.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
5.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
5.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
5.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
5.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
5.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
5.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
6.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
6.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
6.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
6.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
6.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
6.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
6.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
6.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
6.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
6.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
10.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
10.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
10.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
10.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
10.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
10.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
10.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
10.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
10.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
10.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
11.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
11.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
11.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
11.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
11.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
11.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
11.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
11.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
11.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
11.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
12.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
12.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
12.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
12.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
12.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
12.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
12.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
12.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
12.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
12.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
13.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
13.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
13.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
13.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
13.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
13.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
13.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
13.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
13.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
13.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
14.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
14.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
14.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
14.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
14.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
14.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
14.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
14.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
14.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
14.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
15.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
15.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
15.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
15.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
15.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
15.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
15.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
15.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
15.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
Time(s) E(mV) I(mA) Q(mC) Capacity(mAh) Energy(Wh) P(W)
0.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
4.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
4.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
4.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
4.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
4.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
4.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
4.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
4.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
4.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
4.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
5.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
5.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
5.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
5.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
5.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
5.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
5.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
5.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
5.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
6.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
6.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
6.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
6.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
6.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
6.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
6.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
6.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
6.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
6.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
10.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
10.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
10.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
10.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
10.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
10.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
10.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
10.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
10.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
10.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
11.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
11.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
11.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
11.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
11.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
11.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
11.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
11.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
11.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
11.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
12.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
12.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
12.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
12.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
12.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
12.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
12.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
12.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
12.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
12.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
13.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
13.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
13.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
13.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
13.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
13.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
13.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
13.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
13.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
13.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
14.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
14.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
14.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
14.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
14.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
14.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
14.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
14.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
14.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
14.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
15.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
15.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
15.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
15.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
15.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
15.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
15.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
15.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
15.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
15.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
16.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
16.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
16.200001 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
16.299999 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
16.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
16.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
16.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
16.700001 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
16.799999 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
16.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
17.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
17.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
17.200001 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
17.299999 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
17.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
17.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
17.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
17.700001 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
17.799999 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
17.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
18.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
18.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
18.200001 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
18.299999 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
18.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
18.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
18.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
18.700001 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
18.799999 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
18.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
19.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
19.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
19.200001 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
19.299999 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
19.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
19.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
19.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
19.700001 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
19.799999 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000

View File

@@ -1,398 +0,0 @@
Time(s) E(mV) I(mA) Q(mC) Capacity(mAh) Energy(Wh) P(W)
0.100000 1992.742065 0.000000 0.000000 0.000000 0.000000 0.000000
0.200000 1992.826050 0.000000 0.000000 0.000000 0.000000 0.000000
0.300000 1993.161743 0.000000 0.000000 0.000000 0.000000 0.000000
0.400000 1993.245605 0.000000 0.000000 0.000000 0.000000 0.000000
0.500000 1993.077881 0.000000 0.000000 0.000000 0.000000 0.000000
0.600000 1992.154907 0.000000 0.000000 0.000000 0.000000 0.000000
0.700000 1992.909912 0.000000 0.000000 0.000000 0.000000 0.000000
0.800000 1993.245605 0.000000 0.000000 0.000000 0.000000 0.000000
0.900000 1993.077881 0.000000 0.000000 0.000000 0.000000 0.000000
1.000000 1993.161743 0.000000 0.000000 0.000000 0.000000 0.000000
1.100000 1992.826050 0.000000 0.000000 0.000000 0.000000 0.000000
1.200000 1993.245605 0.000000 0.000000 0.000000 0.000000 0.000000
1.300000 1993.161743 0.000000 0.000000 0.000000 0.000000 0.000000
1.400000 1992.742065 0.000000 0.000000 0.000000 0.000000 0.000000
1.500000 1992.993896 0.000000 0.000000 0.000000 0.000000 0.000000
1.600000 1992.742065 0.000000 0.000000 0.000000 0.000000 0.000000
1.700000 1992.909912 0.000000 0.000000 0.000000 0.000000 0.000000
1.800000 1993.245605 0.000000 0.000000 0.000000 0.000000 0.000000
1.900000 1993.245605 0.000000 0.000000 0.000000 0.000000 0.000000
2.000000 1993.245605 0.000000 0.000000 0.000000 0.000000 0.000000
2.100000 1993.077881 0.000000 0.000000 0.000000 0.000000 0.000000
2.200000 1993.245605 0.000000 0.000000 0.000000 0.000000 0.000000
2.300000 1993.665161 0.000000 0.000000 0.000000 0.000000 0.000000
2.400000 1993.665161 0.000000 0.000000 0.000000 0.000000 0.000000
2.500000 1993.665161 0.000000 0.000000 0.000000 0.000000 0.000000
2.600000 1993.916748 0.000000 0.000000 0.000000 0.000000 0.000000
2.700000 1994.000732 0.000000 0.000000 0.000000 0.000000 0.000000
2.800000 1993.413452 0.000000 0.000000 0.000000 0.000000 0.000000
2.900000 1992.993896 0.000000 0.000000 0.000000 0.000000 0.000000
3.000000 1993.665161 0.000000 0.000000 0.000000 0.000000 0.000000
3.100000 1993.581177 0.000000 0.000000 0.000000 0.000000 0.000000
3.200000 1993.665161 0.000000 0.000000 0.000000 0.000000 0.000000
3.300000 1993.413452 0.000000 0.000000 0.000000 0.000000 0.000000
3.400000 1993.497314 0.000000 0.000000 0.000000 0.000000 0.000000
3.500000 1993.161743 0.000000 0.000000 0.000000 0.000000 0.000000
3.600000 1993.916748 0.000000 0.000000 0.000000 0.000000 0.000000
3.700000 1993.749023 0.000000 0.000000 0.000000 0.000000 0.000000
3.800000 1994.000732 0.000000 0.000000 0.000000 0.000000 0.000000
3.900000 1994.084717 0.000000 0.000000 0.000000 0.000000 0.000000
4.000000 1993.749023 0.000000 0.000000 0.000000 0.000000 0.000000
4.100000 1993.916748 0.000000 0.000000 0.000000 0.000000 0.000000
4.200000 1993.497314 0.000000 0.000000 0.000000 0.000000 0.000000
4.300000 1993.749023 0.000000 0.000000 0.000000 0.000000 0.000000
4.400000 1993.665161 0.000000 0.000000 0.000000 0.000000 0.000000
4.500000 1993.413452 0.000000 0.000000 0.000000 0.000000 0.000000
4.600000 1993.749023 0.000000 0.000000 0.000000 0.000000 0.000000
4.700000 1994.168579 0.000000 0.000000 0.000000 0.000000 0.000000
4.800000 1993.916748 0.000000 0.000000 0.000000 0.000000 0.000000
4.900000 1993.497314 0.000000 0.000000 0.000000 0.000000 0.000000
5.000000 1993.665161 0.000000 0.000000 0.000000 0.000000 0.000000
5.100000 1994.084717 0.000000 0.000000 0.000000 0.000000 0.000000
5.200000 1994.084717 0.000000 0.000000 0.000000 0.000000 0.000000
5.300000 1994.420288 0.000000 0.000000 0.000000 0.000000 0.000000
5.400000 1994.504150 0.000000 0.000000 0.000000 0.000000 0.000000
5.500000 1994.755859 0.000000 0.000000 0.000000 0.000000 0.000000
5.600000 1994.168579 0.000000 0.000000 0.000000 0.000000 0.000000
5.700000 1995.259399 0.000000 0.000000 0.000000 0.000000 0.000000
5.800000 1995.175415 0.000000 0.000000 0.000000 0.000000 0.000000
5.900000 1994.336426 0.000000 0.000000 0.000000 0.000000 0.000000
6.000000 1995.511108 0.000000 0.000000 0.000000 0.000000 0.000000
6.100000 1995.091431 0.000000 0.000000 0.000000 0.000000 0.000000
6.200000 1994.671997 0.000000 0.000000 0.000000 0.000000 0.000000
6.300000 1994.504150 0.000000 0.000000 0.000000 0.000000 0.000000
6.400000 1994.923706 0.000000 0.000000 0.000000 0.000000 0.000000
6.500000 1995.511108 0.000000 0.000000 0.000000 0.000000 0.000000
6.600000 1995.427246 0.000000 0.000000 0.000000 0.000000 0.000000
6.700000 1994.923706 0.000000 0.000000 0.000000 0.000000 0.000000
6.800000 1995.678833 0.000000 0.000000 0.000000 0.000000 0.000000
6.900000 1995.762817 0.000000 0.000000 0.000000 0.000000 0.000000
7.000000 1995.511108 0.000000 0.000000 0.000000 0.000000 0.000000
7.100000 1995.511108 0.000000 0.000000 0.000000 0.000000 0.000000
7.200000 1995.259399 0.000000 0.000000 0.000000 0.000000 0.000000
7.300000 1994.755859 0.000000 0.000000 0.000000 0.000000 0.000000
7.400000 1994.671997 0.000000 0.000000 0.000000 0.000000 0.000000
7.500000 1994.755859 0.000000 0.000000 0.000000 0.000000 0.000000
7.600000 1995.175415 0.000000 0.000000 0.000000 0.000000 0.000000
7.700000 1995.007568 0.000000 0.000000 0.000000 0.000000 0.000000
7.800000 1995.091431 0.000000 0.000000 0.000000 0.000000 0.000000
7.900000 1994.923706 0.000000 0.000000 0.000000 0.000000 0.000000
8.000000 1995.007568 0.000000 0.000000 0.000000 0.000000 0.000000
8.100000 1996.685791 0.000000 0.000000 0.000000 0.000000 0.000000
8.200000 1995.762817 0.000000 0.000000 0.000000 0.000000 0.000000
8.300000 1995.259399 0.000000 0.000000 0.000000 0.000000 0.000000
8.400000 1994.420288 0.000000 0.000000 0.000000 0.000000 0.000000
8.500000 1993.329590 0.000000 0.000000 0.000000 0.000000 0.000000
8.600000 1993.077881 0.000000 0.000000 0.000000 0.000000 0.000000
8.700000 1992.742065 0.000000 0.000000 0.000000 0.000000 0.000000
8.800000 1993.245605 0.000000 0.000000 0.000000 0.000000 0.000000
8.900000 1993.329590 0.000000 0.000000 0.000000 0.000000 0.000000
9.000000 1993.665161 0.000000 0.000000 0.000000 0.000000 0.000000
9.100000 1994.336426 0.000000 0.000000 0.000000 0.000000 0.000000
9.200000 1995.091431 0.000000 0.000000 0.000000 0.000000 0.000000
9.300000 1995.259399 0.000000 0.000000 0.000000 0.000000 0.000000
9.400000 1995.175415 0.000000 0.000000 0.000000 0.000000 0.000000
9.500000 1995.343262 0.000000 0.000000 0.000000 0.000000 0.000000
9.600000 1995.175415 0.000000 0.000000 0.000000 0.000000 0.000000
9.700000 1995.091431 0.000000 0.000000 0.000000 0.000000 0.000000
9.800000 1995.427246 0.000000 0.000000 0.000000 0.000000 0.000000
9.900000 1995.594971 0.000000 0.000000 0.000000 0.000000 0.000000
10.000000 1995.091431 0.000000 0.000000 0.000000 0.000000 0.000000
10.100000 1994.504150 0.000000 0.000000 0.000000 0.000000 0.000000
10.200000 1994.336426 0.000000 0.000000 0.000000 0.000000 0.000000
10.300000 1994.000732 0.000000 0.000000 0.000000 0.000000 0.000000
10.400000 1993.665161 0.000000 0.000000 0.000000 0.000000 0.000000
10.500000 1993.329590 0.000000 0.000000 0.000000 0.000000 0.000000
10.600000 1994.000732 0.000000 0.000000 0.000000 0.000000 0.000000
10.700000 1994.671997 0.000000 0.000000 0.000000 0.000000 0.000000
10.800000 1994.755859 0.000000 0.000000 0.000000 0.000000 0.000000
10.900000 1994.671997 0.000000 0.000000 0.000000 0.000000 0.000000
11.000000 1994.755859 0.000000 0.000000 0.000000 0.000000 0.000000
11.100000 1994.923706 0.000000 0.000000 0.000000 0.000000 0.000000
11.200000 1995.091431 0.000000 0.000000 0.000000 0.000000 0.000000
11.300000 1996.014404 0.000000 0.000000 0.000000 0.000000 0.000000
11.400000 1995.091431 0.000000 0.000000 0.000000 0.000000 0.000000
11.500000 1995.259399 0.000000 0.000000 0.000000 0.000000 0.000000
11.600000 1995.007568 0.000000 0.000000 0.000000 0.000000 0.000000
11.700000 1995.343262 0.000000 0.000000 0.000000 0.000000 0.000000
11.800000 1996.014404 0.000000 0.000000 0.000000 0.000000 0.000000
11.900000 1995.762817 0.000000 0.000000 0.000000 0.000000 0.000000
12.000000 1995.678833 0.000000 0.000000 0.000000 0.000000 0.000000
12.100000 1996.434082 0.000000 0.000000 0.000000 0.000000 0.000000
12.200000 1996.098389 0.000000 0.000000 0.000000 0.000000 0.000000
12.300000 1995.343262 0.000000 0.000000 0.000000 0.000000 0.000000
12.400000 1995.511108 0.000000 0.000000 0.000000 0.000000 0.000000
12.500000 1995.511108 0.000000 0.000000 0.000000 0.000000 0.000000
12.600000 1995.511108 0.000000 0.000000 0.000000 0.000000 0.000000
12.700000 1995.511108 0.000000 0.000000 0.000000 0.000000 0.000000
12.800000 1995.678833 0.000000 0.000000 0.000000 0.000000 0.000000
12.900000 1995.511108 0.000000 0.000000 0.000000 0.000000 0.000000
13.000000 1995.259399 0.000000 0.000000 0.000000 0.000000 0.000000
13.100000 1995.511108 0.000000 0.000000 0.000000 0.000000 0.000000
13.200000 1995.007568 0.000000 0.000000 0.000000 0.000000 0.000000
13.300000 1995.175415 0.000000 0.000000 0.000000 0.000000 0.000000
13.400000 1995.259399 0.000000 0.000000 0.000000 0.000000 0.000000
13.500000 1995.762817 0.000000 0.000000 0.000000 0.000000 0.000000
13.600000 1995.930542 0.000000 0.000000 0.000000 0.000000 0.000000
13.700000 1995.343262 0.000000 0.000000 0.000000 0.000000 0.000000
13.800000 1995.175415 0.000000 0.000000 0.000000 0.000000 0.000000
13.900000 1995.175415 0.000000 0.000000 0.000000 0.000000 0.000000
14.000000 1995.678833 0.000000 0.000000 0.000000 0.000000 0.000000
14.100000 1996.182251 0.000000 0.000000 0.000000 0.000000 0.000000
14.200000 1996.434082 0.000000 0.000000 0.000000 0.000000 0.000000
14.300000 1995.846680 0.000000 0.000000 0.000000 0.000000 0.000000
14.400000 1996.350220 0.000000 0.000000 0.000000 0.000000 0.000000
14.500000 1996.098389 0.000000 0.000000 0.000000 0.000000 0.000000
14.600000 1995.343262 0.000000 0.000000 0.000000 0.000000 0.000000
14.700000 1995.427246 0.000000 0.000000 0.000000 0.000000 0.000000
14.800000 1995.427246 0.000000 0.000000 0.000000 0.000000 0.000000
14.900000 1995.511108 0.000000 0.000000 0.000000 0.000000 0.000000
15.000000 1995.678833 0.000000 0.000000 0.000000 0.000000 0.000000
15.100000 1995.343262 0.000000 0.000000 0.000000 0.000000 0.000000
15.200000 1995.007568 0.000000 0.000000 0.000000 0.000000 0.000000
15.300000 1995.175415 0.000000 0.000000 0.000000 0.000000 0.000000
15.400000 1995.427246 0.000000 0.000000 0.000000 0.000000 0.000000
15.500000 1995.259399 0.000000 0.000000 0.000000 0.000000 0.000000
15.600000 1995.175415 0.000000 0.000000 0.000000 0.000000 0.000000
15.700000 1995.091431 0.000000 0.000000 0.000000 0.000000 0.000000
15.800000 1994.671997 0.000000 0.000000 0.000000 0.000000 0.000000
15.900000 1993.665161 0.000000 0.000000 0.000000 0.000000 0.000000
16.000000 1994.084717 0.000000 0.000000 0.000000 0.000000 0.000000
16.100000 1994.168579 0.000000 0.000000 0.000000 0.000000 0.000000
16.200001 1994.252563 0.000000 0.000000 0.000000 0.000000 0.000000
16.299999 1994.839722 0.000000 0.000000 0.000000 0.000000 0.000000
16.400000 1996.350220 0.000000 0.000000 0.000000 0.000000 0.000000
16.500000 1995.091431 0.000000 0.000000 0.000000 0.000000 0.000000
16.600000 1994.588135 0.000000 0.000000 0.000000 0.000000 0.000000
16.700001 1994.671997 0.000000 0.000000 0.000000 0.000000 0.000000
16.799999 1995.259399 0.000000 0.000000 0.000000 0.000000 0.000000
16.900000 1995.427246 0.000000 0.000000 0.000000 0.000000 0.000000
17.000000 1995.427246 0.000000 0.000000 0.000000 0.000000 0.000000
17.100000 1995.091431 0.000000 0.000000 0.000000 0.000000 0.000000
17.200001 1994.839722 0.000000 0.000000 0.000000 0.000000 0.000000
17.299999 1994.755859 0.000000 0.000000 0.000000 0.000000 0.000000
17.400000 1995.007568 0.000000 0.000000 0.000000 0.000000 0.000000
17.500000 1994.588135 0.000000 0.000000 0.000000 0.000000 0.000000
17.600000 1994.755859 0.000000 0.000000 0.000000 0.000000 0.000000
17.700001 1994.755859 0.000000 0.000000 0.000000 0.000000 0.000000
17.799999 1994.420288 0.000000 0.000000 0.000000 0.000000 0.000000
17.900000 1994.336426 0.000000 0.000000 0.000000 0.000000 0.000000
18.000000 1994.420288 0.000000 0.000000 0.000000 0.000000 0.000000
18.100000 1994.755859 0.000000 0.000000 0.000000 0.000000 0.000000
18.200001 1994.671997 0.000000 0.000000 0.000000 0.000000 0.000000
18.299999 1994.923706 0.000000 0.000000 0.000000 0.000000 0.000000
18.400000 1995.007568 0.000000 0.000000 0.000000 0.000000 0.000000
18.500000 1994.839722 0.000000 0.000000 0.000000 0.000000 0.000000
18.600000 1993.832886 0.000000 0.000000 0.000000 0.000000 0.000000
18.700001 1994.588135 0.000000 0.000000 0.000000 0.000000 0.000000
18.799999 1994.839722 0.000000 0.000000 0.000000 0.000000 0.000000
18.900000 1994.839722 0.000000 0.000000 0.000000 0.000000 0.000000
19.000000 1994.671997 0.000000 0.000000 0.000000 0.000000 0.000000
19.100000 1994.671997 0.000000 0.000000 0.000000 0.000000 0.000000
19.200001 1994.588135 0.000000 0.000000 0.000000 0.000000 0.000000
19.299999 1994.420288 0.000000 0.000000 0.000000 0.000000 0.000000
19.400000 1994.336426 0.000000 0.000000 0.000000 0.000000 0.000000
19.500000 1994.336426 0.000000 0.000000 0.000000 0.000000 0.000000
19.600000 1994.671997 0.000000 0.000000 0.000000 0.000000 0.000000
19.700001 1994.755859 0.000000 0.000000 0.000000 0.000000 0.000000
19.799999 1995.007568 0.000000 0.000000 0.000000 0.000000 0.000000
Time(s) E(mV) I(mA) Q(mC) Capacity(mAh) Energy(Wh) P(W)
0.100000 2057.013672 0.000000 0.000000 0.000000 0.000000 0.000000
0.200000 2057.684814 0.000000 0.000000 0.000000 0.000000 0.000000
0.300000 2057.936523 0.000000 0.000000 0.000000 0.000000 0.000000
0.400000 2058.020508 0.000000 0.000000 0.000000 0.000000 0.000000
0.500000 2058.523682 0.000000 0.000000 0.000000 0.000000 0.000000
0.600000 2058.775635 0.000000 0.000000 0.000000 0.000000 0.000000
0.700000 2058.775635 0.000000 0.000000 0.000000 0.000000 0.000000
0.800000 2058.859619 0.000000 0.000000 0.000000 0.000000 0.000000
0.900000 2059.362793 0.000000 0.000000 0.000000 0.000000 0.000000
1.000000 2059.279053 0.000000 0.000000 0.000000 0.000000 0.000000
1.100000 2059.446777 0.000000 0.000000 0.000000 0.000000 0.000000
1.200000 2060.034180 0.000000 0.000000 0.000000 0.000000 0.000000
1.300000 2060.285889 0.000000 0.000000 0.000000 0.000000 0.000000
1.400000 2060.201904 0.000000 0.000000 0.000000 0.000000 0.000000
1.500000 2060.537598 0.000000 0.000000 0.000000 0.000000 0.000000
1.600000 2060.789307 0.000000 0.000000 0.000000 0.000000 0.000000
1.700000 2061.041016 0.000000 0.000000 0.000000 0.000000 0.000000
1.800000 2061.125000 0.000000 0.000000 0.000000 0.000000 0.000000
1.900000 2061.628418 0.000000 0.000000 0.000000 0.000000 0.000000
2.000000 2061.880127 0.000000 0.000000 0.000000 0.000000 0.000000
2.100000 2061.963867 0.000000 0.000000 0.000000 0.000000 0.000000
2.200000 2062.047852 0.000000 0.000000 0.000000 0.000000 0.000000
2.300000 2062.383545 0.000000 0.000000 0.000000 0.000000 0.000000
2.400000 2062.718994 0.000000 0.000000 0.000000 0.000000 0.000000
2.500000 2062.718994 0.000000 0.000000 0.000000 0.000000 0.000000
2.600000 2062.970703 0.000000 0.000000 0.000000 0.000000 0.000000
2.700000 2063.306396 0.000000 0.000000 0.000000 0.000000 0.000000
2.800000 2063.306396 0.000000 0.000000 0.000000 0.000000 0.000000
2.900000 2063.558105 0.000000 0.000000 0.000000 0.000000 0.000000
3.000000 2063.642090 0.000000 0.000000 0.000000 0.000000 0.000000
3.100000 2064.061523 0.000000 0.000000 0.000000 0.000000 0.000000
3.200000 2064.061523 0.000000 0.000000 0.000000 0.000000 0.000000
3.300000 2064.229248 0.000000 0.000000 0.000000 0.000000 0.000000
3.400000 2064.229248 0.000000 0.000000 0.000000 0.000000 0.000000
3.500000 2064.732910 0.000000 0.000000 0.000000 0.000000 0.000000
3.600000 2064.732910 0.000000 0.000000 0.000000 0.000000 0.000000
3.700000 2065.236328 0.000000 0.000000 0.000000 0.000000 0.000000
3.800000 2065.152344 0.000000 0.000000 0.000000 0.000000 0.000000
3.900000 2065.404053 0.000000 0.000000 0.000000 0.000000 0.000000
4.000000 2065.320068 0.000000 0.000000 0.000000 0.000000 0.000000
4.100000 2065.739746 0.000000 0.000000 0.000000 0.000000 0.000000
4.200000 2065.907471 0.000000 0.000000 0.000000 0.000000 0.000000
4.300000 2065.991455 0.000000 0.000000 0.000000 0.000000 0.000000
4.400000 2065.991455 0.000000 0.000000 0.000000 0.000000 0.000000
4.500000 2065.991455 0.000000 0.000000 0.000000 0.000000 0.000000
4.600000 2066.326904 0.000000 0.000000 0.000000 0.000000 0.000000
4.700000 2066.830566 0.000000 0.000000 0.000000 0.000000 0.000000
4.800000 2066.578613 0.000000 0.000000 0.000000 0.000000 0.000000
4.900000 2066.998291 0.000000 0.000000 0.000000 0.000000 0.000000
5.000000 2067.333984 0.000000 0.000000 0.000000 0.000000 0.000000
5.100000 2067.585449 0.000000 0.000000 0.000000 0.000000 0.000000
5.200000 2067.585449 0.000000 0.000000 0.000000 0.000000 0.000000
5.300000 2067.669434 0.000000 0.000000 0.000000 0.000000 0.000000
5.400000 2067.837402 0.000000 0.000000 0.000000 0.000000 0.000000
5.500000 2067.921387 0.000000 0.000000 0.000000 0.000000 0.000000
5.600000 2068.173096 0.000000 0.000000 0.000000 0.000000 0.000000
5.700000 2068.340820 0.000000 0.000000 0.000000 0.000000 0.000000
5.800000 2068.592529 0.000000 0.000000 0.000000 0.000000 0.000000
5.900000 2068.760254 0.000000 0.000000 0.000000 0.000000 0.000000
6.000000 2068.592529 0.000000 0.000000 0.000000 0.000000 0.000000
6.100000 2068.760254 0.000000 0.000000 0.000000 0.000000 0.000000
6.200000 2069.095947 0.000000 0.000000 0.000000 0.000000 0.000000
6.300000 2069.095947 0.000000 0.000000 0.000000 0.000000 0.000000
6.400000 2069.011963 0.000000 0.000000 0.000000 0.000000 0.000000
6.500000 2069.683105 0.000000 0.000000 0.000000 0.000000 0.000000
6.600000 2069.599365 0.000000 0.000000 0.000000 0.000000 0.000000
6.700000 2069.767090 0.000000 0.000000 0.000000 0.000000 0.000000
6.800000 2069.767090 0.000000 0.000000 0.000000 0.000000 0.000000
6.900000 2069.851074 0.000000 0.000000 0.000000 0.000000 0.000000
7.000000 2070.186768 0.000000 0.000000 0.000000 0.000000 0.000000
7.100000 2069.851074 0.000000 0.000000 0.000000 0.000000 0.000000
7.200000 2070.354492 0.000000 0.000000 0.000000 0.000000 0.000000
7.300000 2070.186768 0.000000 0.000000 0.000000 0.000000 0.000000
7.400000 2070.606201 0.000000 0.000000 0.000000 0.000000 0.000000
7.500000 2070.773926 0.000000 0.000000 0.000000 0.000000 0.000000
7.600000 2070.606201 0.000000 0.000000 0.000000 0.000000 0.000000
7.700000 2071.109619 0.000000 0.000000 0.000000 0.000000 0.000000
7.800000 2070.773926 0.000000 0.000000 0.000000 0.000000 0.000000
7.900000 2071.109619 0.000000 0.000000 0.000000 0.000000 0.000000
8.000000 2071.025635 0.000000 0.000000 0.000000 0.000000 0.000000
8.100000 2071.361328 0.000000 0.000000 0.000000 0.000000 0.000000
8.200000 2071.445312 0.000000 0.000000 0.000000 0.000000 0.000000
8.300000 2071.445312 0.000000 0.000000 0.000000 0.000000 0.000000
8.400000 2071.529297 0.000000 0.000000 0.000000 0.000000 0.000000
8.500000 2071.864746 0.000000 0.000000 0.000000 0.000000 0.000000
8.600000 2072.116455 0.000000 0.000000 0.000000 0.000000 0.000000
8.700000 2071.948730 0.000000 0.000000 0.000000 0.000000 0.000000
8.800000 2071.948730 0.000000 0.000000 0.000000 0.000000 0.000000
8.900000 2072.284424 0.000000 0.000000 0.000000 0.000000 0.000000
9.000000 2072.368164 0.000000 0.000000 0.000000 0.000000 0.000000
9.100000 2072.452148 0.000000 0.000000 0.000000 0.000000 0.000000
9.200000 2072.619873 0.000000 0.000000 0.000000 0.000000 0.000000
9.300000 2072.955566 0.000000 0.000000 0.000000 0.000000 0.000000
9.400000 2072.871582 0.000000 0.000000 0.000000 0.000000 0.000000
9.500000 2072.955566 0.000000 0.000000 0.000000 0.000000 0.000000
9.600000 2073.207275 0.000000 0.000000 0.000000 0.000000 0.000000
9.700000 2073.207275 0.000000 0.000000 0.000000 0.000000 0.000000
9.800000 2073.458984 0.000000 0.000000 0.000000 0.000000 0.000000
9.900000 2073.291016 0.000000 0.000000 0.000000 0.000000 0.000000
10.000000 2073.458984 0.000000 0.000000 0.000000 0.000000 0.000000
10.100000 2073.458984 0.000000 0.000000 0.000000 0.000000 0.000000
10.200000 2073.878418 0.000000 0.000000 0.000000 0.000000 0.000000
10.300000 2073.794678 0.000000 0.000000 0.000000 0.000000 0.000000
10.400000 2074.046387 0.000000 0.000000 0.000000 0.000000 0.000000
10.500000 2074.046387 0.000000 0.000000 0.000000 0.000000 0.000000
10.600000 2073.962402 0.000000 0.000000 0.000000 0.000000 0.000000
10.700000 2074.214111 0.000000 0.000000 0.000000 0.000000 0.000000
10.800000 2074.214111 0.000000 0.000000 0.000000 0.000000 0.000000
10.900000 2074.130127 0.000000 0.000000 0.000000 0.000000 0.000000
11.000000 2074.717529 0.000000 0.000000 0.000000 0.000000 0.000000
11.100000 2074.549805 0.000000 0.000000 0.000000 0.000000 0.000000
11.200000 2074.801514 0.000000 0.000000 0.000000 0.000000 0.000000
11.300000 2074.885498 0.000000 0.000000 0.000000 0.000000 0.000000
11.400000 2074.885498 0.000000 0.000000 0.000000 0.000000 0.000000
11.500000 2074.801514 0.000000 0.000000 0.000000 0.000000 0.000000
11.600000 2075.137207 0.000000 0.000000 0.000000 0.000000 0.000000
11.700000 2075.137207 0.000000 0.000000 0.000000 0.000000 0.000000
11.800000 2075.220947 0.000000 0.000000 0.000000 0.000000 0.000000
11.900000 2075.304932 0.000000 0.000000 0.000000 0.000000 0.000000
12.000000 2075.556641 0.000000 0.000000 0.000000 0.000000 0.000000
12.100000 2075.388672 0.000000 0.000000 0.000000 0.000000 0.000000
12.200000 2075.808350 0.000000 0.000000 0.000000 0.000000 0.000000
12.300000 2075.808350 0.000000 0.000000 0.000000 0.000000 0.000000
12.400000 2075.808350 0.000000 0.000000 0.000000 0.000000 0.000000
12.500000 2075.892334 0.000000 0.000000 0.000000 0.000000 0.000000
12.600000 2075.892334 0.000000 0.000000 0.000000 0.000000 0.000000
12.700000 2075.976074 0.000000 0.000000 0.000000 0.000000 0.000000
12.800000 2076.144043 0.000000 0.000000 0.000000 0.000000 0.000000
12.900000 2076.060059 0.000000 0.000000 0.000000 0.000000 0.000000
13.000000 2076.395752 0.000000 0.000000 0.000000 0.000000 0.000000
13.100000 2076.395752 0.000000 0.000000 0.000000 0.000000 0.000000
13.200000 2076.479492 0.000000 0.000000 0.000000 0.000000 0.000000
13.300000 2076.563477 0.000000 0.000000 0.000000 0.000000 0.000000
13.400000 2076.563477 0.000000 0.000000 0.000000 0.000000 0.000000
13.500000 2076.731201 0.000000 0.000000 0.000000 0.000000 0.000000
13.600000 2076.983154 0.000000 0.000000 0.000000 0.000000 0.000000
13.700000 2077.150879 0.000000 0.000000 0.000000 0.000000 0.000000
13.800000 2077.066895 0.000000 0.000000 0.000000 0.000000 0.000000
13.900000 2077.402588 0.000000 0.000000 0.000000 0.000000 0.000000
14.000000 2077.318604 0.000000 0.000000 0.000000 0.000000 0.000000
14.100000 2077.402588 0.000000 0.000000 0.000000 0.000000 0.000000
14.200000 2077.486328 0.000000 0.000000 0.000000 0.000000 0.000000
14.300000 2077.570312 0.000000 0.000000 0.000000 0.000000 0.000000
14.400000 2077.570312 0.000000 0.000000 0.000000 0.000000 0.000000
14.500000 2078.073730 0.000000 0.000000 0.000000 0.000000 0.000000
14.600000 2077.906006 0.000000 0.000000 0.000000 0.000000 0.000000
14.700000 2077.822021 0.000000 0.000000 0.000000 0.000000 0.000000
14.800000 2078.073730 0.000000 0.000000 0.000000 0.000000 0.000000
14.900000 2078.157715 0.000000 0.000000 0.000000 0.000000 0.000000
15.000000 2078.157715 0.000000 0.000000 0.000000 0.000000 0.000000
15.100000 2078.241699 0.000000 0.000000 0.000000 0.000000 0.000000
15.200000 2078.409424 0.000000 0.000000 0.000000 0.000000 0.000000
15.300000 2078.409424 0.000000 0.000000 0.000000 0.000000 0.000000
15.400000 2078.661133 0.000000 0.000000 0.000000 0.000000 0.000000
15.500000 2078.828857 0.000000 0.000000 0.000000 0.000000 0.000000
15.600000 2078.577148 0.000000 0.000000 0.000000 0.000000 0.000000
15.700000 2078.912842 0.000000 0.000000 0.000000 0.000000 0.000000
15.800000 2078.996582 0.000000 0.000000 0.000000 0.000000 0.000000
15.900000 2078.996582 0.000000 0.000000 0.000000 0.000000 0.000000
16.000000 2079.248535 0.000000 0.000000 0.000000 0.000000 0.000000
16.100000 2079.332275 0.000000 0.000000 0.000000 0.000000 0.000000
16.200001 2079.248535 0.000000 0.000000 0.000000 0.000000 0.000000
16.299999 2079.500244 0.000000 0.000000 0.000000 0.000000 0.000000
16.400000 2079.667969 0.000000 0.000000 0.000000 0.000000 0.000000
16.500000 2079.835693 0.000000 0.000000 0.000000 0.000000 0.000000
16.600000 2079.835693 0.000000 0.000000 0.000000 0.000000 0.000000
16.700001 2079.583984 0.000000 0.000000 0.000000 0.000000 0.000000
16.799999 2079.919678 0.000000 0.000000 0.000000 0.000000 0.000000
16.900000 2080.171387 0.000000 0.000000 0.000000 0.000000 0.000000
17.000000 2080.003662 0.000000 0.000000 0.000000 0.000000 0.000000
17.100000 2080.087402 0.000000 0.000000 0.000000 0.000000 0.000000
17.200001 2080.171387 0.000000 0.000000 0.000000 0.000000 0.000000
17.299999 2080.003662 0.000000 0.000000 0.000000 0.000000 0.000000
17.400000 2080.255371 0.000000 0.000000 0.000000 0.000000 0.000000
17.500000 2080.507080 0.000000 0.000000 0.000000 0.000000 0.000000
17.600000 2080.674805 0.000000 0.000000 0.000000 0.000000 0.000000
17.700001 2080.758789 0.000000 0.000000 0.000000 0.000000 0.000000
17.799999 2080.591064 0.000000 0.000000 0.000000 0.000000 0.000000
17.900000 2080.758789 0.000000 0.000000 0.000000 0.000000 0.000000
18.000000 2080.926514 0.000000 0.000000 0.000000 0.000000 0.000000
18.100000 2080.926514 0.000000 0.000000 0.000000 0.000000 0.000000
18.200001 2081.094238 0.000000 0.000000 0.000000 0.000000 0.000000
18.299999 2081.262207 0.000000 0.000000 0.000000 0.000000 0.000000
18.400000 2081.346191 0.000000 0.000000 0.000000 0.000000 0.000000
18.500000 2081.429932 0.000000 0.000000 0.000000 0.000000 0.000000
18.600000 2081.262207 0.000000 0.000000 0.000000 0.000000 0.000000
18.700001 2081.597900 0.000000 0.000000 0.000000 0.000000 0.000000
18.799999 2081.681641 0.000000 0.000000 0.000000 0.000000 0.000000
18.900000 2081.513916 0.000000 0.000000 0.000000 0.000000 0.000000
19.000000 2081.681641 0.000000 0.000000 0.000000 0.000000 0.000000
19.100000 2082.101318 0.000000 0.000000 0.000000 0.000000 0.000000
19.200001 2082.017334 0.000000 0.000000 0.000000 0.000000 0.000000
19.299999 2081.849609 0.000000 0.000000 0.000000 0.000000 0.000000
19.400000 2082.017334 0.000000 0.000000 0.000000 0.000000 0.000000
19.500000 2082.101318 0.000000 0.000000 0.000000 0.000000 0.000000
19.600000 2082.352783 0.000000 0.000000 0.000000 0.000000 0.000000
19.700001 2082.269043 0.000000 0.000000 0.000000 0.000000 0.000000
19.799999 2082.604736 0.000000 0.000000 0.000000 0.000000 0.000000

View File

@@ -1,597 +0,0 @@
Time(s) E(mV) I(mA) Q(mC) Capacity(mAh) Energy(Wh) P(W)
0.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
4.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
4.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
4.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
4.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
4.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
4.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
4.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
4.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
4.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
4.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
5.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
5.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
5.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
5.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
5.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
5.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
5.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
5.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
5.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
6.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
6.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
6.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
6.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
6.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
6.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
6.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
6.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
6.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
6.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
10.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
10.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
10.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
10.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
10.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
10.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
10.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
10.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
10.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
10.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
11.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
11.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
11.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
11.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
11.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
11.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
11.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
11.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
11.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
11.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
12.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
12.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
12.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
12.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
12.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
12.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
12.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
12.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
12.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
12.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
13.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
13.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
13.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
13.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
13.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
13.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
13.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
13.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
13.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
13.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
14.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
14.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
14.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
14.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
14.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
14.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
14.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
14.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
14.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
14.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
15.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
15.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
15.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
15.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
15.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
15.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
15.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
15.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
15.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
15.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
16.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
16.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
16.200001 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
16.299999 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
16.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
16.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
16.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
16.700001 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
16.799999 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
16.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
17.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
17.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
17.200001 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
17.299999 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
17.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
17.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
17.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
17.700001 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
17.799999 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
17.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
18.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
18.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
18.200001 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
18.299999 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
18.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
18.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
18.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
18.700001 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
18.799999 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
18.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
19.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
19.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
19.200001 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
19.299999 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
19.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
19.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
19.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
19.700001 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
19.799999 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
Time(s) E(mV) I(mA) Q(mC) Capacity(mAh) Energy(Wh) P(W)
0.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
4.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
4.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
4.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
4.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
4.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
4.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
4.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
4.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
4.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
4.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
5.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
5.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
5.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
5.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
5.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
5.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
5.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
5.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
5.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
6.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
6.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
6.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
6.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
6.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
6.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
6.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
6.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
6.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
6.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
10.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
10.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
10.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
10.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
10.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
10.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
10.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
10.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
10.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
10.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
11.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
11.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
11.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
11.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
11.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
11.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
11.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
11.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
11.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
11.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
12.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
12.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
12.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
12.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
12.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
12.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
12.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
12.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
12.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
12.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
13.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
13.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
13.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
13.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
13.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
13.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
13.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
13.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
13.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
13.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
14.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
14.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
14.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
14.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
14.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
14.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
14.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
14.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
14.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
14.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
15.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
15.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
15.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
15.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
15.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
15.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
15.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
15.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
15.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
15.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
16.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
16.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
16.200001 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
16.299999 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
16.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
16.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
16.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
16.700001 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
16.799999 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
16.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
17.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
17.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
17.200001 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
17.299999 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
17.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
17.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
17.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
17.700001 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
17.799999 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
17.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
18.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
18.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
18.200001 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
18.299999 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
18.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
18.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
18.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
18.700001 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
18.799999 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
18.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
19.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
19.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
19.200001 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
19.299999 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
19.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
19.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
19.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
19.700001 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
19.799999 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
Time(s) E(mV) I(mA) Q(mC) Capacity(mAh) Energy(Wh) P(W)
0.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
4.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
4.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
4.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
4.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
4.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
4.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
4.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
4.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
4.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
4.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
5.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
5.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
5.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
5.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
5.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
5.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
5.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
5.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
5.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
6.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
6.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
6.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
6.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
6.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
6.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
6.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
6.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
6.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
6.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
10.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
10.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
10.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
10.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
10.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
10.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
10.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
10.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
10.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
10.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
11.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
11.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
11.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
11.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
11.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
11.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
11.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
11.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
11.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
11.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
12.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
12.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
12.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
12.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
12.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
12.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
12.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
12.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
12.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
12.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
13.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
13.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
13.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
13.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
13.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
13.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
13.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
13.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
13.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
13.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
14.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
14.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
14.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
14.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
14.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
14.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
14.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
14.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
14.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
14.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
15.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
15.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
15.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
15.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
15.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
15.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
15.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
15.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
15.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
15.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
16.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
16.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
16.200001 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
16.299999 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
16.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
16.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
16.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
16.700001 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
16.799999 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
16.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
17.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
17.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
17.200001 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
17.299999 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
17.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
17.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
17.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
17.700001 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
17.799999 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
17.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
18.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
18.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
18.200001 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
18.299999 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
18.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
18.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
18.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
18.700001 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
18.799999 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
18.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
19.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
19.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
19.200001 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
19.299999 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
19.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
19.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
19.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
19.700001 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
19.799999 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000

View File

@@ -1,101 +0,0 @@
Time(s) E(mV) I(mA) Q(mC) Capacity(mAh) Energy(Wh) P(W)
0.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
1.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
4.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
4.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
4.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
4.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
4.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
4.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
4.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
4.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
4.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
4.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
5.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
5.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
5.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
5.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
5.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
5.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
5.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
5.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
5.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
5.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
6.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
6.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
6.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
6.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
6.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
6.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
6.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
6.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
6.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
6.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
7.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9.100000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9.200000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9.300000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9.400000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9.600000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9.700000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9.800000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9.900000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
10.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000

View File

@@ -1,981 +0,0 @@
Time(s) E(mV) I(mA)
0.010000 -997.723450 -5.245421
0.020000 -996.045349 -5.010738
0.030000 -993.947693 -4.961776
0.040000 -991.682251 -4.928009
0.050000 -989.752441 -4.899306
0.060000 -987.990417 -5.074349
0.070000 -985.641052 -4.800336
0.080000 -983.879028 -4.896254
0.090000 -981.697510 -4.842570
0.100000 -979.935486 -4.868352
0.110000 -978.005676 -4.946120
0.120000 -975.656372 -4.801778
0.130000 -973.978271 -4.739869
0.140000 -971.880615 -4.706879
0.150000 -969.866882 -4.946629
0.160000 -967.769287 -4.942389
0.170000 -966.007263 -4.839263
0.180000 -963.657898 -4.812040
0.190000 -961.811951 -4.663457
0.200000 -959.798279 -4.709678
0.210000 -957.784485 -4.658539
0.220000 -955.938599 -4.624955
0.230000 -953.757080 -4.610198
0.240000 -951.995056 -4.587724
0.250000 -949.897400 -4.594509
0.260000 -947.883728 -4.307436
0.270000 -946.037842 -4.310320
0.280000 -943.940186 -4.356200
0.290000 -941.926453 -4.364511
0.300000 -939.661011 -4.595781
0.310000 -937.731201 -4.543455
0.320000 -935.717407 -4.559314
0.330000 -933.871521 -4.562452
0.340000 -931.606079 -4.427014
0.350000 -929.844116 -4.489263
0.360000 -927.662537 -4.452202
0.370000 -925.732788 -4.399452
0.380000 -923.886780 -4.405304
0.390000 -921.873108 -4.408611
0.400000 -919.691589 -4.333557
0.410000 -917.593933 -4.334066
0.420000 -915.831909 -4.386562
0.430000 -913.482544 -4.543200
0.440000 -913.146973 -4.722992
0.450000 -909.622925 -4.428881
0.460000 -907.777039 -4.410053
0.470000 -905.679382 -4.363664
0.480000 -903.581787 -4.374688
0.490000 -901.735840 -4.188112
0.500000 -899.973816 -3.465724
0.510000 -898.127930 -3.826409
0.520000 -895.694702 -3.733291
0.530000 -893.848755 -3.535859
0.540000 -891.751160 -3.213846
0.550000 -889.821289 -3.182298
0.560000 -888.059265 -2.966124
0.570000 -885.961731 -2.916851
0.580000 -883.360596 -3.444437
0.590000 -881.682495 -3.675622
0.600000 -880.004395 -3.014973
0.610000 -877.738953 -2.964597
0.620000 -875.893066 -2.955438
0.630000 -873.543701 -3.789857
0.640000 -871.781738 -2.904723
0.650000 -869.767944 -3.019892
0.660000 -867.838196 -2.876482
0.670000 -865.572754 -2.871055
0.680000 -863.894653 -2.873005
0.690000 -861.796997 -2.856468
0.700000 -859.699341 -2.857570
0.710000 -857.685669 -3.277282
0.720000 -855.755798 -3.240815
0.730000 -853.909912 -2.812538
0.740000 -851.812256 -2.800071
0.750000 -849.714661 -2.830602
0.760000 -847.617004 -2.861980
0.770000 -845.687134 -2.828651
0.780000 -843.673462 -2.989106
0.790000 -841.575806 -3.356577
0.800000 -839.981567 -3.497866
0.810000 -837.212769 -3.823356
0.820000 -835.534668 -3.269310
0.830000 -833.437012 -3.710393
0.840000 -831.842834 -2.778360
0.850000 -829.829041 -2.802276
0.860000 -827.815369 -2.759279
0.870000 -825.717712 -2.751392
0.880000 -823.787903 -2.733328
0.890000 -821.942017 -2.720352
0.900000 -819.844360 -2.750289
0.910000 -817.830627 -2.919310
0.920000 -815.733032 -2.894377
0.930000 -813.803162 -2.898023
0.940000 -811.789490 -2.866390
0.950000 -809.859619 -2.864864
0.960000 -807.510315 -3.323078
0.970000 -805.916077 -2.828821
0.980000 -803.566772 -2.821018
0.990000 -801.888611 -2.812368
1.000000 -799.874939 -2.779124
1.010000 -797.777283 -2.807873
1.020000 -795.847534 -2.797611
1.030000 -793.498108 -2.787180
1.040000 -791.903992 -2.775138
1.050000 -789.974121 -2.762417
1.060000 -787.792542 -2.723151
1.070000 -785.694946 -2.718826
1.080000 -784.016846 -2.685411
1.090000 -782.003113 -2.675913
1.100000 -779.653748 -2.651997
1.110000 -777.807861 -2.652761
1.120000 -775.877991 -2.638598
1.130000 -773.864319 -2.628506
1.140000 -771.682800 -2.617651
1.150000 -769.501221 -2.629269
1.160000 -767.907043 -2.609424
1.170000 -765.809387 -2.601622
1.180000 -763.879578 -2.593480
1.190000 -761.698059 -2.583049
1.200000 -759.600464 -2.560490
1.210000 -757.586731 -2.555995
1.220000 -755.740784 -2.563713
1.230000 -753.894836 -2.534794
1.240000 -752.048950 -2.521224
1.250000 -749.699585 -2.530044
1.260000 -747.685913 -2.603827
1.270000 -745.672180 -2.536320
1.280000 -743.658386 -2.561847
1.290000 -741.728638 -2.517239
1.300000 -739.798828 -2.482468
1.310000 -737.868958 -2.469068
1.320000 -736.023071 -2.464319
1.330000 -733.925415 -2.457025
1.340000 -731.659973 -2.449054
1.350000 -729.981873 -2.444898
1.360000 -727.800293 -2.441421
1.370000 -725.618835 -2.437435
1.380000 -723.688965 -2.433025
1.390000 -721.759216 -2.430905
1.400000 -719.661560 -2.424205
1.410000 -717.899536 -2.414367
1.420000 -715.718018 -2.416233
1.430000 -713.788208 -2.403003
1.440000 -711.522766 -2.391639
1.450000 -709.760742 -2.383328
1.460000 -707.998657 -2.383158
1.470000 -705.984985 -2.372218
1.480000 -703.635681 -2.377137
1.490000 -701.705811 -2.377391
1.500000 -699.776001 -2.370183
1.510000 -697.846252 -2.365434
1.520000 -695.748596 -2.726034
1.530000 -693.734802 -2.722727
1.540000 -691.888916 -2.729681
1.550000 -689.707397 -2.716281
1.560000 -687.777588 -2.697030
1.570000 -685.763794 -2.677355
1.580000 -684.001831 -2.668111
1.590000 -681.652466 -2.662683
1.600000 -679.890503 -2.646909
1.610000 -677.625061 -2.631474
1.620000 -675.611267 -2.621382
1.630000 -673.849304 -3.134382
1.640000 -671.919495 -2.953148
1.650000 -669.905762 -2.917614
1.660000 -667.975952 -2.634273
1.670000 -665.710510 -2.670146
1.680000 -663.864624 -2.665312
1.690000 -661.431335 -2.793032
1.700000 -659.753174 -2.684648
1.710000 -657.655640 -2.447781
1.720000 -655.809631 -2.459400
1.730000 -653.795959 -2.214307
1.740000 -651.782227 -2.323878
1.750000 -649.852417 -2.461605
1.760000 -648.174316 -2.134334
1.770000 -645.741089 -2.281559
1.780000 -643.727356 -2.102955
1.790000 -641.881409 -2.146970
1.800000 -639.615967 -2.266039
1.810000 -637.518311 -2.363737
1.820000 -635.924133 -2.080481
1.830000 -633.742554 -2.538271
1.840000 -631.812805 -2.472121
1.850000 -630.218567 -2.064707
1.860000 -627.869263 -2.240512
1.870000 -625.687683 -2.340161
1.880000 -623.925720 -2.479245
1.890000 -621.911987 -2.518935
1.900000 -619.898254 -2.519359
1.910000 -617.716675 -2.306577
1.920000 -615.786865 -2.513168
1.930000 -613.689270 -2.541833
1.940000 -611.675537 -2.324556
1.950000 -609.745728 -2.314549
1.960000 -607.815857 -2.303355
1.970000 -605.634399 -2.315228
1.980000 -603.704529 -2.314719
1.990000 -601.858643 -2.302506
2.000000 -599.593201 -2.500277
2.010000 -597.663391 -2.252131
2.020000 -595.817444 -2.413774
2.030000 -593.803711 -2.275283
2.040000 -591.622192 -2.237290
2.050000 -589.608459 -2.236442
2.060000 -587.510864 -2.239834
2.070000 -585.832764 -2.233049
2.080000 -583.567322 -2.228130
2.090000 -581.805298 -2.237968
2.100000 -579.791565 -2.244583
2.110000 -577.777832 -2.200483
2.120000 -575.848022 -2.377306
2.130000 -573.666504 -2.203367
2.140000 -571.820557 -2.181995
2.150000 -569.639038 -2.179366
2.160000 -567.960938 -2.190815
2.170000 -565.779419 -2.180808
2.180000 -563.513977 -2.163507
2.190000 -561.835815 -2.375780
2.200000 -559.654297 -2.135267
2.210000 -557.808411 -2.128567
2.220000 -555.542969 -2.308697
2.230000 -553.613159 -2.307595
2.240000 -551.767212 -2.303100
2.250000 -549.417847 -2.100495
2.260000 -548.075439 -2.131026
2.270000 -545.642151 -2.087011
2.280000 -543.880127 -2.080057
2.290000 -541.614685 -2.073527
2.300000 -539.768738 -2.067590
2.310000 -537.755066 -2.068438
2.320000 -535.657410 -2.062162
2.330000 -533.727600 -2.055802
2.340000 -531.546082 -2.048509
2.350000 -530.035767 -2.043674
2.360000 -527.854248 -2.043081
2.370000 -525.756592 -2.047661
2.380000 -523.658936 -2.039265
2.390000 -521.813049 -2.032904
2.400000 -519.715393 -2.150956
2.410000 -517.953430 -1.847176
2.420000 -515.771851 -1.889410
2.430000 -513.842102 -1.841409
2.440000 -511.492706 -1.839289
2.450000 -509.730713 -1.833098
2.460000 -507.633087 -1.832844
2.470000 -505.787170 -1.824787
2.480000 -503.689545 -1.819614
2.490000 -501.843597 -1.815373
2.500000 -499.829895 -1.807317
2.510000 -497.816162 -1.817493
2.520000 -495.802460 -1.808674
2.530000 -493.872620 -1.803670
2.540000 -491.691071 -1.797394
2.550000 -489.845184 -1.784334
2.560000 -487.915344 -1.786624
2.570000 -485.733795 -1.790440
2.580000 -483.804016 -1.777719
2.590000 -481.706360 -1.768560
2.600000 -479.524841 -2.182335
2.610000 -477.595032 -2.161981
2.620000 -475.749084 -2.157316
2.630000 -473.819275 -2.149853
2.640000 -471.721649 -2.136030
2.650000 -469.875763 -2.134334
2.660000 -467.862000 -1.757959
2.670000 -465.512665 -1.756602
2.680000 -463.582825 -1.761521
2.690000 -461.736938 -1.756008
2.700000 -459.723206 -1.751344
2.710000 -457.793396 -1.748715
2.720000 -455.611847 -1.743117
2.730000 -453.849854 -1.735146
2.740000 -451.668304 -1.734976
2.750000 -449.654572 -1.741337
2.760000 -447.808685 -1.721067
2.770000 -445.627136 -1.710212
2.780000 -443.697296 -1.699527
2.790000 -442.019196 -1.702495
2.800000 -439.585968 -1.699611
2.810000 -437.823944 -1.703173
2.820000 -435.726318 -1.711060
2.830000 -433.544769 -1.708092
2.840000 -431.866669 -1.703852
2.850000 -429.852936 -1.702749
2.860000 -427.671417 -1.695032
2.870000 -425.825500 -1.695286
2.880000 -423.560059 -2.050544
2.890000 -421.546326 -1.687653
2.900000 -419.868225 -1.682735
2.910000 -417.518890 -2.099732
2.920000 -415.672974 -1.665688
2.930000 -413.659241 -1.658904
2.940000 -411.813354 -1.656784
2.950000 -409.463989 -1.658225
2.960000 -407.618073 -1.653815
2.970000 -405.856079 -1.647285
2.980000 -403.758423 -1.653815
2.990000 -401.576874 -1.646013
3.000000 -399.814880 -1.641349
3.010000 -397.801147 -1.643723
3.020000 -395.619598 -1.639144
3.030000 -393.857605 -1.638720
3.040000 -392.011719 -1.634055
3.050000 -389.578461 -1.647116
3.060000 -387.732544 -1.625490
3.070000 -385.634888 -1.627779
3.080000 -383.705078 -1.600980
3.090000 -381.859161 -1.595637
3.100000 -379.845459 -1.591312
3.110000 -377.747803 -1.587496
3.120000 -375.650177 -1.584782
3.130000 -373.804260 -1.583595
3.140000 -371.538818 -1.574605
3.150000 -369.525085 -1.561799
3.160000 -367.846985 -1.559086
3.170000 -365.917206 -1.556626
3.180000 -363.735657 -1.562902
3.190000 -361.889709 -1.554676
3.200000 -359.792114 -1.550605
3.210000 -357.694489 -1.556541
3.220000 -355.596832 -1.542887
3.230000 -353.834839 -1.540089
3.240000 -351.569397 -1.535000
3.250000 -349.807404 -1.529233
3.260000 -347.625854 -1.527198
3.270000 -345.528229 -1.526265
3.280000 -343.682281 -1.525671
3.290000 -341.416870 -1.520837
3.300000 -339.570953 -1.515410
3.310000 -337.389404 -1.511678
3.320000 -335.963013 -1.508201
3.330000 -333.613678 -1.503197
3.340000 -331.599945 -1.501247
3.350000 -329.754028 -1.499296
3.360000 -327.656433 -1.494971
3.370000 -325.558777 -1.491240
3.380000 -323.712860 -1.487339
3.390000 -321.783051 -1.486660
3.400000 -320.021057 -1.483437
3.410000 -317.671661 -1.479536
3.420000 -315.741852 -1.478603
3.430000 -313.812042 -1.473854
3.440000 -311.462708 -1.471734
3.450000 -309.868500 -1.466306
3.460000 -307.770874 -1.463169
3.470000 -305.673248 -1.458334
3.480000 -303.491699 -1.455366
3.490000 -301.729706 -1.451465
3.500000 -299.799866 -1.449260
3.510000 -297.702240 -1.449175
3.520000 -295.604614 -1.445444
3.530000 -293.674805 -1.441712
3.540000 -291.744995 -1.438829
3.550000 -289.563446 -1.436030
3.560000 -287.633636 -1.432723
3.570000 -285.619873 -1.430602
3.580000 -283.690094 -1.427719
3.590000 -281.844177 -1.422800
3.600000 -279.662628 -1.423055
3.610000 -277.816711 -1.418051
3.620000 -275.802979 -1.414659
3.630000 -273.705353 -1.413387
3.640000 -271.523834 -1.409825
3.650000 -269.761810 -1.407111
3.660000 -267.915894 -1.406348
3.670000 -265.650452 -1.401344
3.680000 -263.636719 -1.399054
3.690000 -261.790802 -1.394899
3.700000 -259.273651 -1.391591
3.710000 -257.595551 -1.389556
3.720000 -255.665741 -1.385231
3.730000 -253.652008 -1.383195
3.740000 -251.722183 -1.377852
3.750000 -249.540665 -1.376156
3.760000 -247.778641 -1.371661
3.770000 -245.681000 -1.368608
3.780000 -243.415573 -1.366064
3.790000 -241.821365 -1.364877
3.800000 -239.807648 -1.362248
3.810000 -237.626129 -1.359449
3.820000 -235.612381 -1.355378
3.830000 -233.514771 -1.354361
3.840000 -231.668854 -1.349357
3.850000 -229.655121 -1.345541
3.860000 -227.557480 -1.344269
3.870000 -225.543762 -1.340961
3.880000 -223.613953 -1.337993
3.890000 -221.600204 -1.335449
3.900000 -219.586487 -1.332904
3.910000 -217.572769 -1.329258
3.920000 -215.726852 -1.328325
3.930000 -213.713135 -1.323576
3.940000 -211.867218 -1.321201
3.950000 -209.769592 -1.318318
3.960000 -207.588058 -1.316876
3.970000 -205.658234 -1.314586
3.980000 -203.644516 -1.310091
3.990000 -201.714691 -1.307717
4.000000 -199.700958 -1.304155
4.010000 -197.603333 -1.301695
4.020000 -195.757416 -1.298473
4.030000 -193.491974 -1.295504
4.040000 -191.729965 -1.293130
4.050000 -189.716232 -1.291518
4.060000 -187.702515 -1.289568
4.070000 -185.688797 -1.284649
4.080000 -183.675064 -1.283801
4.090000 -181.745239 -1.278967
4.100000 -179.647614 -1.278458
4.110000 -177.633896 -1.277356
4.120000 -175.620163 -1.272691
4.130000 -173.690338 -1.268451
4.140000 -171.676620 -1.267094
4.150000 -169.662903 -1.263702
4.160000 -167.900879 -1.262005
4.170000 -165.719345 -1.259461
4.180000 -163.537827 -1.256154
4.190000 -161.608002 -1.254373
4.200000 -159.845993 -1.249115
4.210000 -157.748367 -1.248606
4.220000 -155.482910 -1.245129
4.230000 -153.888718 -1.243348
4.240000 -151.707184 -1.239871
4.250000 -149.693451 -1.238090
4.260000 -147.847549 -1.234274
4.270000 -145.749908 -1.232069
4.280000 -143.736191 -1.229609
4.290000 -141.554657 -1.227998
4.300000 -139.708740 -1.224521
4.310000 -137.946732 -1.222740
4.320000 -135.597382 -1.219178
4.330000 -133.919281 -1.217058
4.340000 -131.737732 -1.214344
4.350000 -129.640106 -1.212648
4.360000 -127.458580 -1.209255
4.370000 -125.612663 -1.205693
4.380000 -123.766747 -1.202810
4.390000 -121.669113 -1.200351
4.400000 -119.823204 -1.198485
4.410000 -117.725563 -1.195516
4.420000 -115.711845 -1.192209
4.430000 -113.698128 -1.190428
4.440000 -111.600487 -1.187460
4.450000 -109.586761 -1.185764
4.460000 -107.740845 -1.184068
4.470000 -105.643219 -1.180082
4.480000 -103.629494 -1.178385
4.490000 -101.615768 -1.174739
4.500000 -99.602043 -1.172534
4.510000 -97.504417 -1.170753
4.520000 -95.574600 -1.167445
4.530000 -93.644768 -1.163459
4.540000 -91.966675 -1.161848
4.550000 -89.701233 -1.162272
4.560000 -87.603600 -1.159473
4.570000 -85.925491 -1.154724
4.580000 -83.660049 -1.153876
4.590000 -81.730232 -1.149551
4.600000 -79.716515 -1.149890
4.610000 -77.534973 -1.146074
4.620000 -75.605156 -1.142003
4.630000 -73.591431 -1.140985
4.640000 -71.661606 -1.138865
4.650000 -69.731789 -1.136999
4.660000 -67.718063 -1.134540
4.670000 -65.452621 -1.131572
4.680000 -63.690613 -1.129621
4.690000 -61.676888 -1.126144
4.700000 -59.579258 -1.123430
4.710000 -57.649437 -1.121225
4.720000 -55.635715 -1.119614
4.730000 -53.538082 -1.116985
4.740000 -51.776077 -1.115543
4.750000 -49.594540 -1.115798
4.760000 -47.664719 -1.147431
4.770000 -45.567089 -1.146667
4.780000 -43.469460 -1.141240
4.790000 -41.539642 -1.135727
4.800000 -39.525917 -1.134540
4.810000 -37.680000 -1.132081
4.820000 -35.834084 -1.127671
4.830000 -33.904266 -1.125635
4.840000 -31.806633 -1.123345
4.850000 -29.709005 -1.122582
4.860000 -27.611376 -1.120547
4.870000 -25.513744 -1.115628
4.880000 -23.583923 -1.113678
4.890000 -21.486296 -1.112914
4.900000 -19.808189 -1.109352
4.910000 -17.458843 -1.107487
4.920000 -15.529024 -1.105536
4.930000 -13.431395 -1.103077
4.940000 -11.501575 -1.099091
4.950000 -9.403944 -1.095020
4.960000 -7.474124 -1.092645
4.970000 -5.879925 -1.090016
4.980000 -3.698390 -1.088914
4.990000 -1.684664 -1.086709
5.000000 0.412966 -1.084080
5.010000 2.510596 -1.081620
5.020000 4.524321 -1.077804
5.030000 6.538046 -1.077550
5.040000 8.635676 -1.074581
5.050000 10.145969 -1.070765
5.060000 12.327506 -1.068984
5.070000 14.341230 -1.064404
5.080000 16.438860 -1.065168
5.090000 18.536491 -1.062454
5.100000 20.466312 -1.057959
5.110000 22.563942 -1.056857
5.120000 24.493761 -1.054228
5.130000 26.423580 -1.052871
5.140000 28.353401 -1.052023
5.150000 30.451031 -1.048376
5.160000 32.464756 -1.046510
5.170000 34.562386 -1.044644
5.180000 36.408302 -1.042185
5.190000 38.422028 -1.042354
5.200000 40.435749 -1.040658
5.210000 42.197762 -1.037181
5.220000 44.295391 -1.035061
5.230000 46.393021 -1.032178
5.240000 48.155029 -1.032008
5.250000 50.420471 -1.028361
5.260000 52.685913 -1.025139
5.270000 54.447922 -1.024291
5.280000 56.293835 -1.022425
5.290000 58.307560 -1.022001
5.300000 60.321289 -1.017082
5.310000 62.502819 -1.015640
5.320000 64.516548 -1.013944
5.330000 66.698082 -1.009873
5.340000 68.376183 -1.006651
5.350000 70.389908 -1.005463
5.360000 72.571442 -1.003174
5.370000 74.669075 -1.001562
5.380000 76.514992 -0.999696
5.390000 78.528709 -0.997831
5.400000 80.626350 -0.995287
5.410000 82.640068 -0.993675
5.420000 84.485985 -0.992149
5.430000 86.499710 -0.990028
5.440000 88.513435 -0.987060
5.450000 90.443260 -0.984686
5.460000 92.205261 -0.982141
5.470000 94.302895 -0.980869
5.480000 96.316620 -0.977731
5.490000 98.330345 -0.975102
5.500000 100.427979 -0.975017
5.510000 102.525604 -0.972558
5.520000 104.455421 -0.970692
5.530000 106.636963 -0.967300
5.540000 108.231163 -0.966961
5.550000 110.412689 -0.965180
5.560000 112.510323 -0.963484
5.570000 114.524055 -0.961024
5.580000 116.705582 -0.958226
5.590000 118.383690 -0.956869
5.600000 120.397415 -0.954070
5.610000 122.327240 -0.952374
5.620000 124.508766 -0.950169
5.630000 126.354691 -0.946861
5.640000 128.620132 -0.946268
5.650000 130.466049 -0.942706
5.660000 132.395859 -0.941858
5.670000 134.241776 -0.939568
5.680000 136.507217 -0.937363
5.690000 138.520935 -0.936006
5.700000 140.534668 -0.932953
5.710000 142.464493 -0.931172
5.720000 144.646027 -0.930409
5.730000 145.988510 -0.926932
5.740000 148.421753 -0.926847
5.750000 150.603287 -0.923200
5.760000 152.617020 -0.922098
5.770000 154.546844 -0.919469
5.780000 156.392761 -0.917857
5.790000 158.406479 -0.914974
5.800000 160.336304 -0.912345
5.810000 162.517838 -0.911412
5.820000 164.363739 -0.910055
5.830000 166.461380 -0.906663
5.840000 168.475098 -0.903949
5.850000 170.404922 -0.901235
5.860000 172.502563 -0.899624
5.870000 174.516281 -0.899115
5.880000 176.613922 -0.899285
5.890000 178.459824 -0.894705
5.900000 180.725266 -0.892585
5.910000 182.235550 -0.890889
5.920000 184.500992 -0.888684
5.930000 186.598633 -0.886055
5.940000 188.612350 -0.885461
5.950000 190.542175 -0.883426
5.960000 192.304169 -0.880118
5.970000 194.317917 -0.879694
5.980000 196.499435 -0.876641
5.990000 198.429276 -0.874182
6.000000 200.442993 -0.874351
6.010000 202.624512 -0.869517
6.020000 204.470428 -0.869432
6.030000 206.484146 -0.866803
6.040000 208.413986 -0.864938
6.050000 210.679428 -0.864005
6.060000 212.525330 -0.863326
6.070000 214.371246 -0.860188
6.080000 216.384964 -0.860188
6.090000 218.398712 -0.856796
6.100000 220.412430 -0.854676
6.110000 222.426147 -0.852217
6.120000 224.355972 -0.850520
6.130000 226.537506 -0.849672
6.140000 228.299515 -0.848061
6.150000 230.397141 -0.845347
6.160000 232.578690 -0.843397
6.170000 234.676300 -0.841785
6.180000 236.270523 -0.840768
6.190000 238.368134 -0.839750
6.200000 240.381866 -0.836866
6.210000 242.311676 -0.835764
6.220000 244.577118 -0.833389
6.230000 246.506943 -0.831693
6.240000 248.520676 -0.830167
6.250000 250.198776 -0.827538
6.260000 252.380310 -0.825587
6.270000 254.561844 -0.823212
6.280000 256.407776 -0.821347
6.290000 258.673218 -0.819905
6.300000 260.351318 -0.816173
6.310000 262.365021 -0.814986
6.320000 264.462677 -0.814986
6.330000 266.224670 -0.813205
6.340000 268.574036 -0.810661
6.350000 270.503845 -0.807269
6.360000 272.433655 -0.805827
6.370000 274.615173 -0.804809
6.380000 276.712830 -0.804724
6.390000 278.558746 -0.801841
6.400000 280.488556 -0.799806
6.410000 282.334473 -0.798364
6.420000 284.683807 -0.796837
6.430000 286.529724 -0.794802
6.440000 288.543457 -0.792173
6.450000 290.305450 -0.791749
6.460000 292.487000 -0.787848
6.470000 294.416809 -0.786321
6.480000 296.430542 -0.784795
6.490000 298.695984 -0.783183
6.500000 300.290192 -0.781233
6.510000 302.387817 -0.779452
6.520000 304.401550 -0.778858
6.530000 306.499176 -0.775975
6.540000 308.680725 -0.774618
6.550000 310.526611 -0.773346
6.560000 312.288635 -0.771056
6.570000 314.470184 -0.769275
6.580000 316.735626 -0.767409
6.590000 318.413727 -0.766561
6.600000 320.343536 -0.765119
6.610000 322.441162 -0.764695
6.620000 324.538788 -0.762575
6.630000 326.384705 -0.760540
6.640000 328.482330 -0.759946
6.650000 330.663879 -0.759353
6.660000 332.425873 -0.756215
6.670000 334.439606 -0.753586
6.680000 336.621155 -0.752398
6.690000 338.550964 -0.750448
6.700000 340.564697 -0.748667
6.710000 342.662292 -0.746886
6.720000 344.424347 -0.744681
6.730000 346.438049 -0.742900
6.740000 348.535675 -0.740356
6.750000 350.549408 -0.739084
6.760000 352.647064 -0.739084
6.770000 354.576843 -0.735691
6.780000 356.674500 -0.734080
6.790000 358.436493 -0.731451
6.800000 360.534119 -0.729924
6.810000 362.547882 -0.729331
6.820000 364.477661 -0.727889
6.830000 366.407471 -0.725854
6.840000 368.589020 -0.724666
6.850000 370.518860 -0.722292
6.860000 372.532593 -0.734334
6.870000 374.462402 -0.732045
6.880000 376.560028 -0.729585
6.890000 378.573730 -0.728737
6.900000 380.419678 -0.728059
6.910000 382.517303 -0.726447
6.920000 384.531006 -0.724158
6.930000 386.544739 -0.726278
6.940000 388.558441 -0.723564
6.950000 390.739990 -0.720596
6.960000 392.585938 -0.717712
6.970000 394.599640 -0.714659
6.980000 396.361664 -0.715507
6.990000 398.375366 -0.701344
7.000000 400.305206 -0.699479
7.010000 402.570648 -0.696680
7.020000 404.668274 -0.698631
7.030000 406.262482 -0.695832
7.040000 408.444031 -0.695153
7.050000 410.457733 -0.692864
7.060000 412.555359 -0.691337
7.070000 414.485168 -0.689471
7.080000 416.582794 -0.688199
7.090000 418.344788 -0.685231
7.100000 420.442444 -0.685231
7.110000 422.372284 -0.683365
7.120000 424.637726 -0.681584
7.130000 426.567505 -0.679464
7.140000 428.581268 -0.678701
7.150000 430.678894 -0.677259
7.160000 432.608704 -0.674206
7.170000 434.454590 -0.672764
7.180000 436.720032 -0.671831
7.190000 438.649872 -0.669796
7.200000 440.579712 -0.670135
7.210000 442.677307 -0.666913
7.220000 444.607147 -0.665895
7.230000 446.788696 -0.663775
7.240000 448.550690 -0.662079
7.250000 450.648315 -0.659534
7.260000 452.745941 -0.658347
7.270000 454.591858 -0.655972
7.280000 456.437775 -0.653937
7.290000 458.535400 -0.653598
7.300000 460.465240 -0.651986
7.310000 462.562866 -0.650460
7.320000 464.492676 -0.648933
7.330000 466.506378 -0.647237
7.340000 468.687927 -0.644015
7.350000 470.533875 -0.642234
7.360000 472.379761 -0.642149
7.370000 474.645203 -0.640113
7.380000 476.407196 -0.637654
7.390000 478.588745 -0.636297
7.400000 480.518585 -0.634177
7.410000 482.364471 -0.632226
7.420000 484.462128 -0.630869
7.430000 486.475861 -0.629173
7.440000 488.573456 -0.627477
7.450000 490.671112 -0.625272
7.460000 492.768738 -0.625272
7.470000 494.530731 -0.624509
7.480000 496.628387 -0.622134
7.490000 498.642120 -0.620523
7.500000 500.571930 -0.618742
7.510000 502.501709 -0.616113
7.520000 504.767151 -0.614841
7.530000 506.780914 -0.613654
7.540000 508.626831 -0.612466
7.550000 510.472748 -0.610940
7.560000 512.318665 -0.609752
7.570000 514.500183 -0.608226
7.580000 516.346069 -0.607039
7.590000 518.359802 -0.605427
7.600000 520.373596 -0.602629
7.610000 522.471191 -0.601441
7.620000 524.568787 -0.600254
7.630000 526.750366 -0.598812
7.640000 528.764038 -0.597286
7.650000 530.609985 -0.595844
7.660000 532.623718 -0.593639
7.670000 534.553528 -0.593215
7.680000 536.567261 -0.591688
7.690000 538.664856 -0.590332
7.700000 540.510803 -0.588805
7.710000 542.440613 -0.586685
7.720000 544.538269 -0.585667
7.730000 546.468079 -0.584904
7.740000 548.565674 -0.583971
7.750000 550.327698 -0.581427
7.760000 552.677063 -0.581088
7.770000 554.522949 -0.578374
7.780000 556.620605 -0.577017
7.790000 558.550415 -0.575066
7.800000 560.648071 -0.574727
7.810000 562.577881 -0.572776
7.820000 564.507690 -0.570656
7.830000 566.353638 -0.568790
7.840000 568.283447 -0.569384
7.850000 570.464966 -0.566077
7.860000 572.478699 -0.564720
7.870000 574.492432 -0.563108
7.880000 576.673950 -0.562006
7.890000 578.435974 -0.560055
7.900000 580.617493 -0.558359
7.910000 582.463440 -0.557172
7.920000 584.728882 -0.555730
7.930000 586.574768 -0.553186
7.940000 588.672424 -0.552253
7.950000 590.434387 -0.550811
7.960000 592.364258 -0.548776
7.970000 594.461853 -0.546401
7.980000 596.727295 -0.546147
7.990000 598.741028 -0.544536
8.000000 600.502991 -0.542755
8.010000 602.432861 -0.543263
8.020000 604.446533 -0.540295
8.030000 606.628113 -0.540465
8.040000 608.641846 -0.538514
8.050000 610.487732 -0.536818
8.060000 612.585388 -0.535546
8.070000 614.682983 -0.533171
8.080000 616.361084 -0.531136
8.090000 618.542664 -0.529864
8.100000 620.388550 -0.529610
8.110000 622.570068 -0.528592
8.120000 624.583801 -0.526387
8.130000 626.597595 -0.526013
8.140000 628.527344 -0.524972
8.150000 630.625000 -0.523219
8.160000 632.722656 -0.521918
8.170000 634.484680 -0.519963
8.180000 636.414429 -0.519291
8.190000 638.679871 -0.517773
8.200000 640.525757 -0.516850
8.210000 642.455627 -0.514760
8.220000 644.553223 -0.513535
8.230000 646.399170 -0.512100
8.240000 648.580750 -0.511270
8.250000 650.510559 -0.509365
8.260000 652.356445 -0.508333
8.270000 654.537964 -0.507527
8.280000 656.803406 -0.505253
8.290000 658.733215 -0.504330
8.300000 660.579163 -0.502526
8.310000 662.592834 -0.501083
8.320000 664.606628 -0.499715
8.330000 666.620300 -0.498524
8.340000 668.466248 -0.497433
8.350000 670.563843 -0.496761
8.360000 672.409851 -0.494529
8.370000 674.423523 -0.492885
8.380000 676.521179 -0.492138
8.390000 678.702698 -0.495855
8.400000 680.548584 -0.494278
8.410000 682.562378 -0.493279
8.420000 684.995605 -0.492364
8.430000 686.589783 -0.489847
8.440000 688.435669 -0.489058
8.450000 690.533325 -0.487422
8.460000 692.463135 -0.485920
8.470000 694.476868 -0.484552
8.480000 696.490601 -0.483747
8.490000 698.336487 -0.481993
8.500000 700.518005 -0.480189
8.510000 702.363892 -0.479224
8.520000 704.629333 -0.477932
8.530000 706.643127 -0.477109
8.540000 708.740784 -0.475498
8.550000 710.670532 -0.474760
8.560000 712.768188 -0.473249
8.570000 714.614136 -0.471731
8.580000 716.627869 -0.469322
8.590000 718.725464 -0.467460
8.600000 720.823120 -0.466318
8.610000 722.417297 -0.464917
8.620000 724.682739 -0.463969
8.630000 726.528625 -0.463516
8.640000 728.542419 -0.461443
8.650000 730.472168 -0.460713
8.660000 732.569824 -0.458523
8.670000 734.667419 -0.457449
8.680000 736.597290 -0.455796
8.690000 738.443176 -0.454688
8.700000 740.624756 -0.453447
8.710000 742.470642 -0.451945
8.720000 744.568298 -0.451013
8.730000 746.414185 -0.449645
8.740000 748.595703 -0.448353
8.750000 750.609497 -0.447036
8.760000 752.707031 -0.446490
8.770000 754.804688 -0.444829
8.780000 756.734497 -0.443377
8.790000 758.580444 -0.442093
8.800000 760.510254 -0.440885
8.810000 762.859619 -0.439828
8.820000 764.621582 -0.438158
8.830000 766.551453 -0.437436
8.840000 768.481262 -0.435917
8.850000 770.662781 -0.435145
8.860000 772.676575 -0.433669
8.870000 774.522461 -0.433845
8.880000 776.703979 -0.432024
8.890000 778.382080 -0.430631
8.900000 780.731445 -0.428542
8.910000 782.577332 -0.427124
8.920000 784.423218 -0.425924
8.930000 786.604797 -0.424363
8.940000 788.534607 -0.423171
8.950000 790.380554 -0.421418
8.960000 792.645996 -0.420973
8.970000 794.407959 -0.420042
8.980000 796.505615 -0.418514
8.990000 798.435425 -0.417541
9.000000 800.616943 -0.416870
9.010000 802.798523 -0.415947
9.020000 804.644409 -0.416182
9.030000 806.574219 -0.413958
9.040000 808.587952 -0.415066
9.050000 810.685608 -0.416735
9.060000 812.699280 -0.413194
9.070000 814.964722 -0.410753
9.080000 816.642822 -0.411155
9.090000 818.740479 -0.408739
9.100000 820.670288 -0.408059
9.110000 822.516174 -0.408218
9.120000 824.446045 -0.407153
9.130000 826.627563 -0.403654
9.140000 828.557373 -0.404342
9.150000 830.571106 -0.402345
9.160000 832.584839 -0.401296
9.170000 834.514709 -0.399777
9.180000 836.528381 -0.398879
9.190000 838.458252 -0.398309
9.200000 840.639709 -0.398300
9.210000 842.569580 -0.396538
9.220000 844.583252 -0.397914
9.230000 846.596985 -0.393895
9.240000 848.526794 -0.392938
9.250000 850.624451 -0.392552
9.260000 852.638184 -0.424145
9.270000 854.567993 -0.424052
9.280000 856.581726 -0.420788
9.290000 858.511536 -0.420042
9.300000 860.860901 -0.421015
9.310000 862.622864 -0.420092
9.320000 864.636658 -0.418338
9.330000 866.482544 -0.417247
9.340000 868.412354 -0.416299
9.350000 870.258301 -0.413538
9.360000 872.439819 -0.413211
9.370000 874.537415 -0.412473
9.380000 876.299438 -0.410610
9.390000 878.564880 -0.410249
9.400000 880.578613 -0.407363
9.410000 882.844055 -0.406339
9.420000 884.438293 -0.405542
9.430000 886.535828 -0.404040
9.440000 888.633484 -0.402722
9.450000 890.647278 -0.402638
9.460000 892.744812 -0.401296
9.470000 894.758606 -0.398409
9.480000 896.604492 -0.397897
9.490000 898.450378 -0.396622
9.500000 900.715820 -0.396286
9.510000 902.310059 -0.394558
9.520000 904.659363 -0.392762
9.530000 906.673157 -0.390757
9.540000 908.519043 -0.390027
9.550000 910.784485 -0.387694
9.560000 912.630432 -0.387434
9.570000 914.560242 -0.385839
9.580000 916.406128 -0.384572
9.590000 918.755493 -0.382970
9.600000 920.937012 -0.382651
9.610000 922.531250 -0.381283
9.620000 924.544983 -0.381224
9.630000 926.642578 -0.378833
9.640000 928.656311 -0.376651
9.650000 930.502197 -0.376148
9.660000 932.767639 -0.374620
9.670000 934.529663 -0.374931
9.680000 936.375549 -0.373823
9.690000 938.724976 -0.372539
9.700000 940.654724 -0.370668
9.710000 942.584534 -0.369754
9.720000 944.598267 -0.367992
9.730000 946.528076 -0.366305
9.740000 948.877441 -0.364803
9.750000 950.471619 -0.363611
9.760000 952.485413 -0.362269
9.770000 954.666931 -0.361220
9.780000 956.764526 -0.359802
9.790000 958.610474 -0.358510
9.800000 960.624146 -0.356764

View File

@@ -1,199 +0,0 @@
Time(s) E(mV) I(mA)
0.100000 1.763577 -0.029101
0.200000 2.762724 -0.028610
0.300000 3.770268 -0.028559
0.400000 4.786208 -0.028826
0.500000 5.768563 -0.028349
0.600000 6.792899 -0.028234
0.700000 7.775254 -0.028022
0.800000 8.782798 -0.028118
0.900000 9.765153 -0.028299
1.000000 10.789489 -0.028453
1.100000 11.780240 -0.028453
1.200000 12.821369 -0.028657
1.300000 13.770139 -0.028915
1.400000 14.777682 -0.028546
1.500000 15.776831 -0.029188
1.600000 16.767582 -0.028683
1.700000 17.783520 -0.028601
1.800000 18.782669 -0.028970
1.900000 19.807005 -0.028870
2.000000 20.797756 -0.028791
2.100000 21.805300 -0.028462
2.200000 22.737278 -0.028364
2.300000 23.778406 -0.028617
2.400000 24.752365 -0.028738
2.500000 25.793493 -0.029199
2.600000 26.767452 -0.028708
2.700000 27.783392 -0.028065
2.800000 28.799332 -0.027991
2.900000 29.806875 -0.028424
3.000000 30.780836 -0.028417
3.100000 31.796772 -0.028475
3.200000 32.787525 -0.028331
3.300000 33.778278 -0.028108
3.400000 34.769028 -0.028230
3.500000 35.784969 -0.027984
3.600000 36.784115 -0.027942
3.700000 37.766468 -0.028032
3.800000 38.790806 -0.028286
3.900000 39.789955 -0.028354
4.000000 40.763912 -0.028207
4.100000 41.754665 -0.028099
4.200000 42.770603 -0.028197
4.300000 43.786545 -0.028176
4.400000 44.777294 -0.028192
4.500000 45.784836 -0.028307
4.600000 46.775589 -0.028396
4.700000 47.774738 -0.028483
4.800000 48.773884 -0.028376
4.900000 49.781429 -0.028730
5.000000 50.780575 -0.029071
5.100000 51.788116 -0.029210
5.200000 52.770473 -0.028525
5.300000 53.752831 -0.028479
5.400000 54.768772 -0.029232
5.500000 55.793106 -0.029103
5.600000 56.800652 -0.029043
5.700000 57.766212 -0.029321
5.800000 58.765362 -0.029204
5.900000 59.789696 -0.029369
6.000000 60.797237 -0.029143
6.100000 61.787991 -0.028959
6.200000 62.803932 -0.028818
6.300000 63.769493 -0.029102
6.400000 64.768639 -0.029005
6.500000 65.759392 -0.028507
6.600000 66.783730 -0.029151
6.700000 67.774475 -0.028881
6.800000 68.790421 -0.028720
6.900000 69.789566 -0.028786
7.000000 70.797112 -0.028745
7.100000 71.813049 -0.028627
7.200000 72.795403 -0.028186
7.300000 73.802956 -0.028823
7.400000 74.793701 -0.028599
7.500000 75.776054 -0.028958
7.600000 76.800392 -0.029110
7.700000 77.791145 -0.029458
7.800000 78.781891 -0.029195
7.900000 79.797829 -0.029496
8.000000 80.796974 -0.029733
8.100000 81.796127 -0.029937
8.200000 82.795273 -0.029791
8.300000 83.777634 -0.029210
8.400000 84.801971 -0.029492
8.500000 85.792717 -0.029031
8.600000 86.775070 -0.029057
8.700000 87.816200 -0.029236
8.800000 88.790161 -0.028967
8.900000 89.772514 -0.029038
9.000000 90.796852 -0.028881
9.100000 91.795998 -0.029188
9.200000 92.803543 -0.029207
9.300000 93.760704 -0.029310
9.400000 94.810234 -0.029037
9.500000 95.784195 -0.029098
9.600000 96.800133 -0.029167
9.700000 97.807678 -0.029221
9.800000 98.790031 -0.029132
9.900000 99.797577 -0.028941
10.000000 100.796722 -0.029081
10.100000 101.804268 -0.029024
10.200000 102.803413 -0.028922
10.300000 103.802567 -0.028957
10.400000 104.801712 -0.028903
10.500000 105.800858 -0.029129
10.600000 106.783211 -0.029139
10.700000 107.807549 -0.029148
10.800000 108.815094 -0.029216
10.900000 109.805840 -0.028921
11.000000 110.813385 -0.028742
11.100000 111.804138 -0.028889
11.200000 112.769699 -0.028884
11.300000 113.802429 -0.028933
11.400000 114.809982 -0.028740
11.500000 115.809128 -0.028485
11.600000 116.816666 -0.029093
11.700000 117.807419 -0.028899
11.800000 118.814964 -0.029117
11.900000 119.797318 -0.029162
12.000000 120.788063 -0.029299
12.100000 121.787216 -0.029617
12.200000 122.794762 -0.029564
12.300000 123.785507 -0.029263
12.400000 124.809845 -0.028942
12.500000 125.800598 -0.029249
12.600000 126.799744 -0.029054
12.700000 127.815689 -0.029312
12.800000 128.823242 -0.029264
12.900000 129.813980 -0.029597
13.000000 130.813126 -0.029762
13.100000 131.803879 -0.029987
13.200000 132.803024 -0.029859
13.300000 133.793777 -0.029861
13.400000 134.792923 -0.029838
13.500000 135.808868 -0.029612
13.600000 136.791214 -0.029442
13.700000 137.790359 -0.029729
13.800000 138.806320 -0.029585
13.900000 139.805466 -0.029730
14.000000 140.829788 -0.029783
14.100000 141.812134 -0.029521
14.200000 142.802902 -0.029773
14.300000 143.802048 -0.029522
14.400000 144.801193 -0.029461
14.500000 145.775146 -0.029776
14.600000 146.816284 -0.029446
14.700000 147.807022 -0.029666
14.800000 148.822968 -0.029733
14.900000 149.805328 -0.029659
15.000000 150.796066 -0.029416
15.100000 151.812012 -0.029498
15.200000 152.819565 -0.029405
15.300000 153.801910 -0.029533
15.400000 154.809464 -0.029788
15.500000 155.817001 -0.029578
15.600000 156.790955 -0.029868
15.700000 157.815308 -0.029453
15.800000 158.814453 -0.029587
15.900000 159.821991 -0.029697
16.000000 160.795944 -0.029583
16.100000 161.795090 -0.029541
16.200001 162.794235 -0.029603
16.299999 163.826965 -0.029526
16.400000 164.800934 -0.029500
16.500000 165.833664 -0.029578
16.600000 166.824417 -0.029656
16.700001 167.798370 -0.029669
16.799999 168.814316 -0.029662
16.900000 169.805069 -0.029525
17.000000 170.812607 -0.029632
17.100000 171.803375 -0.029763
17.200001 172.827698 -0.029450
17.299999 173.818451 -0.029243
17.400000 174.809189 -0.029499
17.500000 175.799957 -0.029474
17.600000 176.799103 -0.029973
17.700001 177.823441 -0.029679
17.799999 178.805786 -0.029621
17.900000 179.813339 -0.029742
18.000000 180.829285 -0.029791
18.100000 181.786438 -0.029615
18.200001 182.810776 -0.029776
18.299999 183.826721 -0.029699
18.400000 184.809067 -0.029858
18.500000 185.799820 -0.029694
18.600000 186.782181 -0.029660
18.700001 187.814911 -0.029505
18.799999 188.822464 -0.029578
18.900000 189.813202 -0.029569
19.000000 190.812363 -0.029655
19.100000 191.811508 -0.029725
19.200001 192.810654 -0.029956
19.299999 193.809799 -0.029307
19.400000 194.808945 -0.029470
19.500000 195.799698 -0.029415
19.600000 196.807236 -0.029424
19.700001 197.856766 -0.029606
19.799999 198.813934 -0.029029

View File

@@ -1,89 +0,0 @@
Time(s) E(mV) I(mA)
0.100000 1100.313599 0.099854
0.200000 1100.313599 0.099846
0.300000 1100.313599 0.099829
0.400000 1100.313599 0.099829
0.500000 1100.313599 0.099821
0.600000 1100.313599 0.099829
0.700000 1100.313599 0.099846
0.800000 1100.313599 0.099812
0.900000 1100.313599 0.099812
1.000000 1100.313599 0.099829
1.100000 1100.313599 0.099812
1.200000 1100.313599 0.099804
1.300000 1100.313599 0.099796
1.400000 1100.313599 0.099804
1.500000 1100.313599 0.099804
1.600000 1100.313599 0.099787
1.700000 1100.313599 0.099796
1.800000 1100.313599 0.099796
1.900000 1100.313599 0.099787
2.000000 1100.313599 0.099821
2.100000 1100.313599 0.099821
2.200000 1100.313599 0.099812
2.300000 1100.313599 0.099829
2.400000 1100.313599 0.099829
2.500000 1100.313599 0.099838
2.600000 1100.313599 0.099854
2.700000 1100.313599 0.099863
2.800000 1100.313599 0.099854
2.900000 1100.313599 0.099846
3.000000 1100.313599 0.099863
3.100000 1100.313599 0.099871
3.200000 1100.313599 0.099879
3.300000 1100.313599 0.099888
3.400000 1100.313599 0.099896
3.500000 1100.313599 0.099913
3.600000 1100.313599 0.099930
3.700000 1100.313599 0.099938
3.800000 1100.313599 0.099930
3.900000 1100.313599 0.099947
4.000000 1100.313599 0.099963
4.100000 1100.313599 0.099947
4.200000 1100.313599 0.099980
4.300000 1100.313599 0.099997
4.400000 1100.313599 0.099972
4.500000 1100.313599 0.099947
4.600000 1100.313599 0.099947
4.700000 1100.313599 0.099955
4.800000 1100.313599 0.099955
4.900000 1100.313599 0.099989
5.000000 1100.313599 0.099997
5.100000 1100.313599 0.099980
5.200000 1100.313599 0.099989
5.300000 1100.313599 0.099963
5.400000 1100.313599 0.099980
5.500000 1100.313599 0.099989
5.600000 1100.313599 0.100005
5.700000 1100.313599 0.099963
5.800000 1100.313599 0.099980
5.900000 1100.313599 0.099980
6.000000 1100.313599 0.099980
6.100000 1100.313599 0.099972
6.200000 1100.313599 0.099997
6.300000 1100.313599 0.099972
6.400000 1100.313599 0.099955
6.500000 1100.313599 0.099972
6.600000 1100.313599 0.099963
6.700000 1100.313599 0.099980
6.800000 1100.313599 0.099963
6.900000 1100.313599 0.099955
7.000000 1100.313599 0.099989
7.100000 1100.313599 0.099989
7.200000 1100.313599 0.099980
7.300000 1100.313599 0.099980
7.400000 1100.313599 0.099980
7.500000 1100.313599 0.099963
7.600000 1100.313599 0.099980
7.700000 1100.313599 0.099955
7.800000 1100.313599 0.099980
7.900000 1100.313599 0.099963
8.000000 1100.313599 0.099989
8.100000 1100.313599 0.099980
8.200000 1100.313599 0.099989
8.300000 1100.313599 0.099989
8.400000 1100.313599 0.099972
8.500000 1100.313599 0.100005
8.600000 1100.313599 0.099980
8.700000 1100.313599 0.100005
8.800000 1100.313599 0.099997

View File

@@ -1,49 +0,0 @@
Time(s) Zre(Ohm) Zim(Ohm) Z(Ohm) Freq(Hz) Phase(deg) EDC(mV)
0.128000 6755.462891 3996.161133 7848.922363 10000.000000 -30.606230 0.000000
0.272000 6824.638672 3994.455811 7907.677734 8888.900391 -30.340406 0.000000
0.436571 7059.030762 4099.418457 8163.035156 7777.799805 -30.145187 0.000000
0.628570 7516.110840 4371.320312 8694.846680 6666.700195 -30.181999 0.000000
Time(s) Zre(Ohm) Zim(Ohm) Z(Ohm) Freq(Hz) Phase(deg) EDC(mV)
0.128000 4004.078857 1725.499268 4360.045410 10000.000000 -23.312920 0.000000
0.272000 3751.894043 1407.421021 4007.186523 8888.900391 -20.562214 0.000000
0.436571 3795.918457 1347.885742 4028.125244 7777.799805 -19.549349 0.000000
0.628570 3988.254883 1406.353516 4228.948730 6666.700195 -19.423862 0.000000
0.858968 4340.244629 1560.648071 4612.303711 5555.600098 -19.777370 0.000000
1.146964 4953.287598 1795.551514 5268.687012 4444.500000 -19.925425 0.000000
1.530957 5583.770020 2229.389648 6012.375977 3333.399902 -21.764971 0.000000
2.106936 6545.107422 2367.948486 6960.288086 2222.300049 -19.889572 0.000000
3.258844 7567.829590 1800.241089 7779.004395 1111.199951 -13.380868 0.000000
23.258844 7841.500488 363.667908 7849.928711 0.100000 -2.655323 0.000000
Time(s) Zre(Ohm) Zim(Ohm) Z(Ohm) Freq(Hz) Phase(deg) EDC(mV)
0.128000 4585.909668 1983.974854 4996.671387 10000.000000 -23.394470 0.000000
0.272000 4468.743652 1882.592163 4849.105469 8888.900391 -22.844717 0.000000
0.436571 4585.427246 1862.162964 4949.120605 7777.799805 -22.102295 0.000000
0.628570 4762.757812 1835.767822 5104.302734 6666.700195 -21.078768 0.000000
0.858968 5040.085449 1868.267578 5375.210449 5555.600098 -20.338821 0.000000
1.146964 5369.222168 2009.491211 5732.939941 4444.500000 -20.518923 0.000000
1.530957 5790.665039 2128.829590 6169.580078 3333.399902 -20.185007 0.000000
2.106936 6104.018066 1879.055054 6386.695801 2222.300049 -17.110409 0.000000
3.258844 6228.028809 1268.160278 6355.830078 1111.199951 -11.509306 0.000000
23.258844 6003.355957 413.043579 6017.548340 0.100000 -3.935868 0.000000
Time(s) Zre(Ohm) Zim(Ohm) Z(Ohm) Freq(Hz) Phase(deg) EDC(mV)
0.128000 3572.804688 1110.373413 3741.371826 10000.000000 -17.264450 0.000000
0.272000 3733.689209 1029.676392 3873.069580 8888.900391 -15.417786 0.000000
0.436571 3814.144043 1035.226807 3952.137207 7777.799805 -15.185266 0.000000
0.628570 3763.235596 993.421204 3892.149414 6666.700195 -14.787639 0.000000
0.858968 3746.752197 922.539612 3858.656738 5555.600098 -13.832431 0.000000
1.146964 3835.638184 876.370972 3934.481689 4444.500000 -12.870085 0.000000
1.530957 3879.458496 808.279602 3962.765869 3333.399902 -11.769126 0.000000
2.106936 4037.450439 756.480225 4107.708496 2222.300049 -10.612228 0.000000
3.258844 4497.190430 741.943848 4557.982422 1111.199951 -9.368237 0.000000
23.258844 5525.440430 743.580078 5575.249023 0.100000 -7.664470 0.000000
Time(s) Zre(Ohm) Zim(Ohm) Z(Ohm) Freq(Hz) Phase(deg) EDC(mV)
0.128000 4508.749023 1480.736694 4745.671387 10000.000000 -18.180910 0.000000
0.272000 4432.497070 1333.723267 4628.806152 8888.900391 -16.746363 0.000000
0.436571 4782.034668 1541.624512 5024.386719 7777.799805 -17.868198 0.000000
0.628570 5205.424805 1835.522095 5519.563965 6666.700195 -19.423525 0.000000
0.858968 5297.061035 1830.112549 5604.298828 5555.600098 -19.059818 0.000000
1.146964 5442.899414 1763.836304 5721.562012 4444.500000 -17.955534 0.000000
1.530957 5554.852051 1871.875732 5861.766113 3333.399902 -18.622803 0.000000
2.106936 5667.162598 1750.656982 5931.402344 2222.300049 -17.166569 0.000000
3.258844 5834.244629 1325.616577 5982.948242 1111.199951 -12.801015 0.000000
23.258844 5939.145508 584.428345 5967.831055 0.100000 -5.619970 0.000000

View File

@@ -1,55 +0,0 @@
Time(s) Zre(Ω) Zim(Ω) Z(Ω) Freq(Hz) Phase(°) EDC(V)
0.128000 8836.014648 4088.676270 9736.140625 10000.000000 -24.831327 0.000000
0.289142 8947.045898 3906.468262 9762.690430 7943.282227 -23.587093 0.000000
0.492009 9445.424805 4166.807129 10323.678711 6309.573242 -23.804461 0.000000
0.747402 10144.289062 4494.853516 11095.508789 5011.872070 -23.897749 0.000000
1.068924 10604.609375 4514.041992 11525.376953 3981.071533 -23.057899 0.000000
1.473696 11142.434570 4558.653809 12038.902344 3162.277588 -22.250721 0.000000
1.983273 11883.416016 4958.137695 12876.284180 2511.886230 -22.647444 0.000000
2.624793 12497.970703 5309.595215 13579.067383 1995.262329 -23.017561 0.000000
3.432418 13203.150391 5649.524414 14361.069336 1584.893188 -23.165701 0.000000
4.449158 14128.726562 6126.426270 15399.805664 1258.925293 -23.442274 0.000000
4.481158 14911.369141 6479.161133 16258.181641 1000.000000 -23.485498 0.000000
4.521444 15656.686523 6829.202637 17081.271484 794.328247 -23.566080 0.000000
4.572160 16835.632812 7643.918945 18489.673828 630.957336 -24.419577 0.000000
4.636009 18222.216797 8657.716797 20174.371094 501.187225 -25.413269 0.000000
4.716389 22157.533203 11829.420898 25117.552734 398.107178 -28.096781 0.000000
4.817582 23357.978516 11746.929688 26145.468750 316.227753 -26.698219 0.000000
4.944976 24984.910156 12806.191406 28075.687500 251.188629 -27.137728 0.000000
4.716389 20656.267578 10043.393555 22968.482422 398.107178 -25.929729 0.000000
4.817582 23355.941406 11758.861328 26149.011719 316.227753 -26.723581 0.000000
4.944976 24946.281250 12709.506836 27997.294922 251.188629 -26.997705 0.000000
5.105356 25699.732422 12844.353516 28730.708984 199.526230 -26.555218 0.000000
5.307262 28007.763672 13781.557617 31214.837891 158.489319 -26.200048 0.000000
5.561448 32278.408203 15294.345703 35718.519531 125.892532 -25.352806 0.000000
5.601448 36631.953125 16377.120117 40126.175781 100.000000 -24.088081 0.000000
5.651804 36212.464844 14175.981445 38888.316406 79.432823 -21.378698 0.000000
5.715200 31005.900391 10025.936523 32586.580078 63.095734 -17.918913 0.000000
5.795011 27789.210938 7751.479004 28850.054688 50.118721 -15.585830 0.000000
5.895486 35634.070312 9420.209961 36858.207031 39.810719 -14.807939 0.000000
6.021977 42739.617188 10889.406250 44105.035156 31.622778 -14.293976 0.000000
6.181220 41334.429688 12303.883789 43126.796875 25.118862 -16.576517 0.000000
6.381695 44635.375000 13761.085938 46708.503906 19.952623 -17.134529 0.000000
6.634078 47430.500000 9581.280273 48388.566406 15.848931 -11.420444 0.000000
6.951809 47006.734375 6501.482910 47454.214844 12.589253 -7.874598 0.000000
7.351809 47260.820312 5934.597168 47631.968750 10.000000 -7.157238 0.000000
7.855379 51975.855469 140.047073 51976.042969 7.943282 -0.154381 0.000000
8.489336 58372.769531 2538.466309 58427.937500 6.309573 -2.490062 0.000000
9.287441 59285.113281 8795.745117 59934.046875 5.011872 -8.439040 0.000000
10.292196 55917.351562 9934.631836 56793.019531 3.981072 -10.074409 0.000000
11.557107 51669.527344 1365.285522 51687.562500 3.162278 -1.513598 0.000000
13.149536 nan nan nan 2.511886 2.248806 0.000000
15.154285 nan nan nan 1.995262 4.537589 0.000000
17.678116 nan nan nan 1.584893 1.901186 0.000000
20.855431 nan nan nan 1.258925 -14.520571 0.000000
22.855431 nan nan nan 1.000000 -21.347967 0.000000
25.373281 nan nan nan 0.794328 -16.286789 0.000000
28.543070 43693.843750 2706.736816 43777.601562 0.630957 -3.544817 0.000000
32.533596 34982.421875 -4359.896973 35253.062500 0.501187 7.104203 0.000000
37.557373 30128.955078 -116.846642 30129.181641 0.398107 0.222204 0.000000
43.881924 32771.234375 6115.649902 33336.992188 0.316228 -10.570740 0.000000
51.844055 18206.365234 -7035.584961 19518.482422 0.251189 21.128300 0.000000
61.867813 -1157.350342 -5457.016602 5578.395020 0.199526 101.974136 0.000000
74.486984 -7572.944336 -5757.060547 9512.792969 0.158489 142.757385 0.000000
90.373489 -6719.222656 -12092.010742 13833.461914 0.125893 119.059814 0.000000
110.373489 2759.366699 -3812.787109 4706.532715 0.100000 54.106220 0.000000

View File

@@ -1,5 +0,0 @@
Time(s) Zre(Ohm) Zim(Ohm) Z(Ohm) Freq(Hz) Phase(deg) EDC(mV)
0.128000 5301.714355 1606.345947 5539.722168 10000.000000 -16.856081 0.000000
0.272000 5303.290527 1594.772095 5537.886719 8888.900391 -16.736752 0.000000
0.436571 5347.800781 1595.693970 5580.789551 7777.799805 -16.614220 0.000000
0.628570 5478.396973 1635.483032 5717.310547 6666.700195 -16.622107 0.000000

View File

@@ -1,70 +0,0 @@
initialize: True
get_machine_ids: {'success': True, 'machine_ids': [1, 3, 2]}
version: reflect_linear_scan_signature
linear_scan_related_methods:
Add_ConstantPotential:['System.String', 'System.Single', 'System.Int32', 'System.Boolean', 'System.Boolean', 'System.Int32', 'System.Single', 'System.Int32', 'System.Single', 'System.Single', 'System.Single', 'System.Boolean', 'System.Single', 'System.Boolean', 'System.Single', 'System.Boolean', 'System.Single', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32'] | names=['parentTag', 'Voltage', 'VoltageVSType', 'IsAccrueQ', 'isVoltageTrig', 'VoltageOrCurrentTrigDirection', 'VoltageOrCurrentTrigValue', 'capacityTrigDirection', 'capacityTrigValue', 'timePerPoint', 'continueTime', 'IsUseResolution', 'Resolution', 'isUseDeltaI', 'deltaI', 'isUseDeltaQ', 'deltaQ', 'isVoltageRandAuto', 'VoltageRand', 'isCurrentRandAuto', 'currentRand', 'machineId']
Start_Circle_Voltammetry_Multi:['System.Boolean', 'System.Single', 'System.Int32', 'System.Single', 'System.Int32', 'System.Single', 'System.Int32', 'System.Boolean', 'System.Single', 'System.Int32', 'System.Single', 'System.Int32', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.Single'] | names=['IsUseInitialPotential', 'InitialPotential', 'InitialPotentialVSType', 'TopPotential1', 'TopPotential1VSType', 'TopPotential2', 'TopPotential2VSType', 'IsUseFinallyPotential', 'FinallyPotential', 'FinallyPotentialVSType', 'ScanRate', 'cycleCount', 'isVoltageRandAuto', 'VoltageRand', 'isCurrentRandAuto', 'currentRand', 'isVoltageFilterAuto', 'VoltageFilter', 'isCurrentFilterAuto', 'currentFilter', 'machineId', 'delayTime']
Start_Staircase_Cyclic_Voltammetry_MultipleCycles:['System.Single', 'System.Int32', 'System.Single', 'System.Int32', 'System.Single', 'System.Int32', 'System.Single', 'System.Int32', 'System.Single', 'System.Single', 'System.Int32', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32'] | names=['InitialPotential', 'InitialPotentialVSType', 'TopPotential1', 'TopPotential1VSType', 'TopPotential2', 'TopPotential2VSType', 'FinallyPotential', 'FinallyPotentialVSType', 'StepHeight', 'StepTime', 'cycleCount', 'isVoltageRandAuto', 'VoltageRand', 'isCurrentRandAuto', 'currentRand', 'isVoltageFilterAuto', 'VoltageFilter', 'isCurrentFilterAuto', 'currentFilter', 'machineId']
Start_Linear_Scan_Voltammetry:['System.Single', 'System.Int32', 'System.Single', 'System.Int32', 'System.Single', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.Single'] | names=['InitialPotential', 'InitialPotentialVSType', 'FinallyPotential', 'FinallyPotentialVSType', 'ScanRate', 'isVoltageRandAuto', 'VoltageRand', 'isCurrentRandAuto', 'currentRand', 'isVoltageFilterAuto', 'VoltageFilter', 'isCurrentFilterAuto', 'currentFilter', 'machineId', 'delayTime']
Start_Linear_Scan_Voltammetry_New:['System.Single', 'System.Int32', 'System.Single', 'System.Int32', 'System.Single', 'System.Single', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.Single'] | names=['InitialPotential', 'InitialPotentialVSType', 'FinallyPotential', 'FinallyPotentialVSType', 'ScanRate', 'voltageInterval', 'isVoltageRandAuto', 'VoltageRand', 'isCurrentRandAuto', 'currentRand', 'isVoltageFilterAuto', 'VoltageFilter', 'isCurrentFilterAuto', 'currentFilter', 'machineId', 'delayTime']
Start_Circle_Voltammetry_Single:['System.Single', 'System.Int32', 'System.Single', 'System.Int32', 'System.Single', 'System.Int32', 'System.Single', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.Single'] | names=['InitialPotential', 'InitialPotentialVSType', 'TopPotential', 'TopPotentialVSType', 'FinallyPotential', 'FinallyPotentialVSType', 'ScanRate', 'isVoltageRandAuto', 'VoltageRand', 'isCurrentRandAuto', 'currentRand', 'isVoltageFilterAuto', 'VoltageFilter', 'isCurrentFilterAuto', 'currentFilter', 'machineId', 'delayTime']
Start_Staircase_Linear_Scan:['System.Single', 'System.Int32', 'System.Single', 'System.Int32', 'System.Single', 'System.Single', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32'] | names=['InitialPotential', 'InitialPotentialVSType', 'FinallyPotential', 'FinallyPotentialVSType', 'StepHeight', 'StepTime', 'isVoltageRandAuto', 'VoltageRand', 'isCurrentRandAuto', 'currentRand', 'isVoltageFilterAuto', 'VoltageFilter', 'isCurrentFilterAuto', 'currentFilter', 'machineId']
Start_Potentiodynamic:['System.Single', 'System.Int32', 'System.Single', 'System.Int32', 'System.Single', 'System.Single', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32'] | names=['InitialPotential', 'InitialPotentialVSType', 'FinallyPotential', 'FinallyPotentialVSType', 'StepHeight', 'StepTime', 'isVoltageRandAuto', 'VoltageRand', 'isCurrentRandAuto', 'currentRand', 'isVoltageFilterAuto', 'VoltageFilter', 'isCurrentFilterAuto', 'currentFilter', 'machineId']
Start_Staircase_Cyclic_Voltammetry_Single:['System.Single', 'System.Int32', 'System.Single', 'System.Int32', 'System.Single', 'System.Int32', 'System.Single', 'System.Single', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32'] | names=['InitialPotential', 'InitialPotentialVSType', 'TopPotential', 'TopPotentialVSType', 'FinallyPotential', 'FinallyPotentialVSType', 'StepHeight', 'StepTime', 'isVoltageRandAuto', 'VoltageRand', 'isCurrentRandAuto', 'currentRand', 'isVoltageFilterAuto', 'VoltageFilter', 'isCurrentFilterAuto', 'currentFilter', 'machineId']
Start_ChronoamperonetryParam:['System.Single', 'System.Single', 'System.Single', 'System.Int32', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32'] | names=['timePerPoint', 'continueTime', 'InitialPotential', 'InitialPotentialVSType', 'isVoltageRandAuto', 'VoltageRand', 'isCurrentRandAuto', 'currentRand', 'isVoltageFilterAuto', 'VoltageFilter', 'isCurrentFilterAuto', 'currentFilter', 'machineId']
Start_ChronopotentiometryParam:['System.Single', 'System.Single', 'System.Single', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32'] | names=['timePerPoint', 'continueTime', 'current', 'VoltageRand', 'isCurrentRandAuto', 'currentRand', 'isVoltageFilterAuto', 'VoltageFilter', 'isCurrentFilterAuto', 'currentFilter', 'machineId']
Start_ChronocoulometryParam:['System.Single', 'System.Single', 'System.Single', 'System.Int32', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32'] | names=['timePerPoint', 'continueTime', 'potential', 'potentialotentialVSType', 'isVoltageRandAuto', 'VoltageRand', 'isCurrentRandAuto', 'currentRand', 'isVoltageFilterAuto', 'VoltageFilter', 'isCurrentFilterAuto', 'currentFilter', 'machineId']
Start_ConstantPotential:['System.Single', 'System.Int32', 'System.Boolean', 'System.Boolean', 'System.Int32', 'System.Single', 'System.Int32', 'System.Single', 'System.Single', 'System.Single', 'System.Boolean', 'System.Single', 'System.Boolean', 'System.Single', 'System.Boolean', 'System.Single', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32'] | names=['Voltage', 'VoltageVSType', 'IsAccrueQ', 'isVoltageTrig', 'VoltageOrCurrentTrigDirection', 'VoltageOrCurrentTrigValue', 'capacityTrigDirection', 'capacityTrigValue', 'timePerPoint', 'continueTime', 'IsUseResolution', 'Resolution', 'isUseDeltaI', 'deltaI', 'isUseDeltaQ', 'deltaQ', 'isVoltageRandAuto', 'VoltageRand', 'isCurrentRandAuto', 'currentRand', 'machineId']
Start_Potentiostatic_Staircase:['System.Single', 'System.Int32', 'System.Single', 'System.Int32', 'System.Single', 'System.Int32', 'System.Single', 'System.Int32', 'System.Single', 'System.Single', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32'] | names=['OutputValue1', 'vsType1', 'OutputValue2', 'vsType2', 'OutputValue3', 'vsType3', 'timePerPoint', 'stepCount', 'measureDelay', 'plusTime', 'isVoltageRandAuto', 'VoltageRand', 'isCurrentRandAuto', 'currentRand', 'isVoltageFilterAuto', 'VoltageFilter', 'isCurrentFilterAuto', 'currentFilter', 'machineId']
Start_Fast_Potential_Pulses:['System.Int32', 'System.Single', 'System.Single', 'System.Int32', 'System.Single', 'System.Single', 'System.Int32', 'System.Single', 'System.Single', 'System.Int32', 'System.Single', 'System.Single', 'System.Int32', 'System.Single', 'System.Single', 'System.Int32', 'System.Single', 'System.Int32', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32'] | names=['plusCount', 'OutputValue1', 'ContinueTime1', 'vsType1', 'OutputValue2', 'ContinueTime2', 'vsType2', 'OutputValue3', 'ContinueTime3', 'vsType3', 'OutputValue4', 'ContinueTime4', 'vsType4', 'OutputValue5', 'ContinueTime5', 'vsType5', 'timePerPoint', 'cycleCount', 'isVoltageRandAuto', 'VoltageRand', 'isCurrentRandAuto', 'currentRand', 'isVoltageFilterAuto', 'VoltageFilter', 'isCurrentFilterAuto', 'currentFilter', 'machineId']
StartConstantPotential_LineScan:['System.Single', 'System.Int32', 'System.Single', 'System.Int32', 'System.Single', 'System.Int32', 'System.Single', 'System.Single', 'System.Single', 'System.Single', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32'] | names=['InitialPotential', 'InitialPotentialVSType', 'FinallyPotential', 'FinallyPotentialVSType', 'StaticTime', 'CycleCount', 'TimePerPoint', 'ContinueTime', 'StepHeight', 'SweptRate', 'isVoltageRandAuto', 'VoltageRand', 'isCurrentRandAuto', 'currentRand', 'isVoltageFilterAuto', 'VoltageFilter', 'isCurrentFilterAuto', 'currentFilter', 'machineId']
Start_Circle_Voltammetry_Multi_New:['System.Single', 'System.Boolean', 'System.Single', 'System.Int32', 'System.Single', 'System.Int32', 'System.Single', 'System.Int32', 'System.Boolean', 'System.Single', 'System.Int32', 'System.Single', 'System.Int32', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.Single'] | names=['voltageInterval', 'IsUseInitialPotential', 'InitialPotential', 'InitialPotentialVSType', 'TopPotential1', 'TopPotential1VSType', 'TopPotential2', 'TopPotential2VSType', 'IsUseFinallyPotential', 'FinallyPotential', 'FinallyPotentialVSType', 'ScanRate', 'cycleCount', 'isVoltageRandAuto', 'VoltageRand', 'isCurrentRandAuto', 'currentRand', 'isVoltageFilterAuto', 'VoltageFilter', 'isCurrentFilterAuto', 'currentFilter', 'machineId', 'delayTime']
Start_Staircase_Cyclic_Voltammetry_MultipleCycles_New:['System.Boolean', 'System.Single', 'System.Int32', 'System.Single', 'System.Int32', 'System.Single', 'System.Int32', 'System.Boolean', 'System.Single', 'System.Int32', 'System.Single', 'System.Single', 'System.Int32', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.Single'] | names=['IsUseInitialPotential', 'InitialPotential', 'InitialPotentialVSType', 'TopPotential1', 'TopPotential1VSType', 'TopPotential2', 'TopPotential2VSType', 'IsUseFinallyPotential', 'FinallyPotential', 'FinallyPotentialVSType', 'stepHeight', 'stepTime', 'cycleCount', 'isVoltageRandAuto', 'VoltageRand', 'isCurrentRandAuto', 'currentRand', 'isVoltageFilterAuto', 'VoltageFilter', 'isCurrentFilterAuto', 'currentFilter', 'machineId', 'delayTime']
all_start_methods:
Start_Circle_Voltammetry_Multi:['System.Boolean', 'System.Single', 'System.Int32', 'System.Single', 'System.Int32', 'System.Single', 'System.Int32', 'System.Boolean', 'System.Single', 'System.Int32', 'System.Single', 'System.Int32', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.Single'] | names=['IsUseInitialPotential', 'InitialPotential', 'InitialPotentialVSType', 'TopPotential1', 'TopPotential1VSType', 'TopPotential2', 'TopPotential2VSType', 'IsUseFinallyPotential', 'FinallyPotential', 'FinallyPotentialVSType', 'ScanRate', 'cycleCount', 'isVoltageRandAuto', 'VoltageRand', 'isCurrentRandAuto', 'currentRand', 'isVoltageFilterAuto', 'VoltageFilter', 'isCurrentFilterAuto', 'currentFilter', 'machineId', 'delayTime']
Start_Staircase_Cyclic_Voltammetry_MultipleCycles:['System.Single', 'System.Int32', 'System.Single', 'System.Int32', 'System.Single', 'System.Int32', 'System.Single', 'System.Int32', 'System.Single', 'System.Single', 'System.Int32', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32'] | names=['InitialPotential', 'InitialPotentialVSType', 'TopPotential1', 'TopPotential1VSType', 'TopPotential2', 'TopPotential2VSType', 'FinallyPotential', 'FinallyPotentialVSType', 'StepHeight', 'StepTime', 'cycleCount', 'isVoltageRandAuto', 'VoltageRand', 'isCurrentRandAuto', 'currentRand', 'isVoltageFilterAuto', 'VoltageFilter', 'isCurrentFilterAuto', 'currentFilter', 'machineId']
Start_SplitLPR:['System.Single', 'System.Single', 'ECCore.VSType', 'System.Single', 'System.Single', 'System.Single', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32'] | names=['aNodeVoltage', 'cathodeVoltage', 'aNodeVSTye', 'stepHeight', 'stepTime', 'continueTime', 'isVoltageRandAuto', 'VoltageRand', 'isCurrentRandAuto', 'currentRand', 'isVoltageFilterAuto', 'VoltageFilter', 'isCurrentFilterAuto', 'currentFilter', 'machineId']
Start_OpenCircuit:['System.Single', 'System.Single', 'System.Int32'] | names=['timePerPoint', 'continueTime', 'machineId']
Start_Galvanic_Corrosion:['System.Single', 'System.Single', 'System.Int32'] | names=['timePerPoint', 'continueTime', 'machineId']
Start_Electrochemical_Noise_En:['System.Single', 'System.Single', 'System.Int32', 'System.Int32'] | names=['timePerPoint', 'timePerSegment', 'segmentCount', 'machineId']
Start_Linear_Scan_Voltammetry:['System.Single', 'System.Int32', 'System.Single', 'System.Int32', 'System.Single', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.Single'] | names=['InitialPotential', 'InitialPotentialVSType', 'FinallyPotential', 'FinallyPotentialVSType', 'ScanRate', 'isVoltageRandAuto', 'VoltageRand', 'isCurrentRandAuto', 'currentRand', 'isVoltageFilterAuto', 'VoltageFilter', 'isCurrentFilterAuto', 'currentFilter', 'machineId', 'delayTime']
Start_Linear_Scan_Voltammetry_New:['System.Single', 'System.Int32', 'System.Single', 'System.Int32', 'System.Single', 'System.Single', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.Single'] | names=['InitialPotential', 'InitialPotentialVSType', 'FinallyPotential', 'FinallyPotentialVSType', 'ScanRate', 'voltageInterval', 'isVoltageRandAuto', 'VoltageRand', 'isCurrentRandAuto', 'currentRand', 'isVoltageFilterAuto', 'VoltageFilter', 'isCurrentFilterAuto', 'currentFilter', 'machineId', 'delayTime']
Start_Circle_Voltammetry_Single:['System.Single', 'System.Int32', 'System.Single', 'System.Int32', 'System.Single', 'System.Int32', 'System.Single', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.Single'] | names=['InitialPotential', 'InitialPotentialVSType', 'TopPotential', 'TopPotentialVSType', 'FinallyPotential', 'FinallyPotentialVSType', 'ScanRate', 'isVoltageRandAuto', 'VoltageRand', 'isCurrentRandAuto', 'currentRand', 'isVoltageFilterAuto', 'VoltageFilter', 'isCurrentFilterAuto', 'currentFilter', 'machineId', 'delayTime']
Start_Staircase_Linear_Scan:['System.Single', 'System.Int32', 'System.Single', 'System.Int32', 'System.Single', 'System.Single', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32'] | names=['InitialPotential', 'InitialPotentialVSType', 'FinallyPotential', 'FinallyPotentialVSType', 'StepHeight', 'StepTime', 'isVoltageRandAuto', 'VoltageRand', 'isCurrentRandAuto', 'currentRand', 'isVoltageFilterAuto', 'VoltageFilter', 'isCurrentFilterAuto', 'currentFilter', 'machineId']
Start_Potentiodynamic:['System.Single', 'System.Int32', 'System.Single', 'System.Int32', 'System.Single', 'System.Single', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32'] | names=['InitialPotential', 'InitialPotentialVSType', 'FinallyPotential', 'FinallyPotentialVSType', 'StepHeight', 'StepTime', 'isVoltageRandAuto', 'VoltageRand', 'isCurrentRandAuto', 'currentRand', 'isVoltageFilterAuto', 'VoltageFilter', 'isCurrentFilterAuto', 'currentFilter', 'machineId']
Start_Galvanodynamic:['System.Single', 'System.Int32', 'System.Single', 'System.Int32', 'System.Single', 'System.Single', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32'] | names=['InitialPotential', 'InitialPotentialVSType', 'FinallyPotential', 'FinallyPotentialVSType', 'StepHeight', 'StepTime', 'isVoltageRandAuto', 'VoltageRand', 'isCurrentRandAuto', 'currentRand', 'isVoltageFilterAuto', 'VoltageFilter', 'isCurrentFilterAuto', 'currentFilter', 'machineId']
Start_Staircase_Cyclic_Voltammetry_Single:['System.Single', 'System.Int32', 'System.Single', 'System.Int32', 'System.Single', 'System.Int32', 'System.Single', 'System.Single', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32'] | names=['InitialPotential', 'InitialPotentialVSType', 'TopPotential', 'TopPotentialVSType', 'FinallyPotential', 'FinallyPotentialVSType', 'StepHeight', 'StepTime', 'isVoltageRandAuto', 'VoltageRand', 'isCurrentRandAuto', 'currentRand', 'isVoltageFilterAuto', 'VoltageFilter', 'isCurrentFilterAuto', 'currentFilter', 'machineId']
Start_Cyclic_Polarization:['System.Single', 'System.Int32', 'System.Single', 'System.Int32', 'System.Single', 'System.Int32', 'System.Single', 'System.Single', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.String', 'System.String', 'System.Int32'] | names=['InitialPotential', 'InitialPotentialVSType', 'TopPotential', 'TopPotentialVSType', 'FinallyPotential', 'FinallyPotentialVSType', 'StepHeight', 'StepTime', 'isVoltageRandAuto', 'VoltageRand', 'isCurrentRandAuto', 'currentRand', 'isVoltageFilterAuto', 'VoltageFilter', 'isCurrentFilterAuto', 'currentFilter', 'voltageTrigValue', 'currentTrigValue', 'machineId']
Start_ChronoamperonetryParam:['System.Single', 'System.Single', 'System.Single', 'System.Int32', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32'] | names=['timePerPoint', 'continueTime', 'InitialPotential', 'InitialPotentialVSType', 'isVoltageRandAuto', 'VoltageRand', 'isCurrentRandAuto', 'currentRand', 'isVoltageFilterAuto', 'VoltageFilter', 'isCurrentFilterAuto', 'currentFilter', 'machineId']
Start_ChronopotentiometryParam:['System.Single', 'System.Single', 'System.Single', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32'] | names=['timePerPoint', 'continueTime', 'current', 'VoltageRand', 'isCurrentRandAuto', 'currentRand', 'isVoltageFilterAuto', 'VoltageFilter', 'isCurrentFilterAuto', 'currentFilter', 'machineId']
Start_ChronocoulometryParam:['System.Single', 'System.Single', 'System.Single', 'System.Int32', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32'] | names=['timePerPoint', 'continueTime', 'potential', 'potentialotentialVSType', 'isVoltageRandAuto', 'VoltageRand', 'isCurrentRandAuto', 'currentRand', 'isVoltageFilterAuto', 'VoltageFilter', 'isCurrentFilterAuto', 'currentFilter', 'machineId']
Start_SquareWare:['System.Single', 'System.Int32', 'System.Single', 'System.Int32', 'System.Single', 'System.Single', 'System.Single', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32'] | names=['initialPotential', 'initialPotentialVSType', 'finallyPotential', 'finallyPotentialVSType', 'stepHeight', 'pluseHeight', 'startFreq', 'isVoltageRandAuto', 'VoltageRand', 'isCurrentRandAuto', 'currentRand', 'isVoltageFilterAuto', 'VoltageFilter', 'isCurrentFilterAuto', 'currentFilter', 'machineId']
Start_DifferentialPulse:['System.Single', 'System.Int32', 'System.Single', 'System.Int32', 'System.Single', 'System.Single', 'System.Single', 'System.Single', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32'] | names=['initialPotential', 'initialPotentialVSType', 'finallyPotential', 'finallyPotentialVSType', 'stepHeight', 'pluseHeight', 'pluseWidth', 'stepTime', 'isVoltageRandAuto', 'VoltageRand', 'isCurrentRandAuto', 'currentRand', 'isVoltageFilterAuto', 'VoltageFilter', 'isCurrentFilterAuto', 'currentFilter', 'machineId']
Start_NormalPulse:['System.Single', 'System.Int32', 'System.Single', 'System.Int32', 'System.Single', 'System.Single', 'System.Single', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32'] | names=['initialPotential', 'initialPotentialVSType', 'finallyPotential', 'finallyPotentialVSType', 'stepHeight', 'pluseWidth', 'stepTime', 'isVoltageRandAuto', 'VoltageRand', 'isCurrentRandAuto', 'currentRand', 'isVoltageFilterAuto', 'VoltageFilter', 'isCurrentFilterAuto', 'currentFilter', 'machineId']
Start_EIS:['System.Boolean', 'System.Double', 'System.Double', 'System.Single', 'System.Int32', 'System.Int32', 'System.Single', 'System.Single', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.Single', 'System.Int32'] | names=['isVolEIS', 'StartFreq', 'EndFreq', 'Amplitude', 'IntervalType', 'PointCount', 'Voltage', 'VoltageVSType', 'isVoltageRandAuto', 'VoltageRand', 'isCurrentRandAuto', 'currentRand', 'isVoltageFilterAuto', 'VoltageFilter', 'isCurrentFilterAuto', 'currentFilter', 'machineId', 'delayTime', 'dataQuality']
Start_EnergyOpenCircuit:['System.Boolean', 'System.Single', 'System.Boolean', 'System.Int32', 'System.Single', 'System.Int32', 'System.Single', 'System.Single', 'System.Single', 'System.Boolean', 'System.Single', 'System.Boolean', 'System.Single', 'System.Boolean', 'System.Single', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32'] | names=['isUseExcursionRate', 'excursionRate', 'isVoltageTrig', 'VoltageOrCurrentTrigDirection', 'VoltageOrCurrentTrigValue', 'capacityTrigDirection', 'capacityTrigValue', 'timePerPoint', 'continueTime', 'IsUseResolution', 'Resolution', 'isUseDeltaI', 'deltaI', 'isUseDeltaQ', 'deltaQ', 'isVoltageRandAuto', 'VoltageRand', 'isCurrentRandAuto', 'currentRand', 'machineId']
Start_ConstantPotential:['System.Single', 'System.Int32', 'System.Boolean', 'System.Boolean', 'System.Int32', 'System.Single', 'System.Int32', 'System.Single', 'System.Single', 'System.Single', 'System.Boolean', 'System.Single', 'System.Boolean', 'System.Single', 'System.Boolean', 'System.Single', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32'] | names=['Voltage', 'VoltageVSType', 'IsAccrueQ', 'isVoltageTrig', 'VoltageOrCurrentTrigDirection', 'VoltageOrCurrentTrigValue', 'capacityTrigDirection', 'capacityTrigValue', 'timePerPoint', 'continueTime', 'IsUseResolution', 'Resolution', 'isUseDeltaI', 'deltaI', 'isUseDeltaQ', 'deltaQ', 'isVoltageRandAuto', 'VoltageRand', 'isCurrentRandAuto', 'currentRand', 'machineId']
Start_ConstantContent:['System.Single', 'System.Boolean', 'System.Int32', 'System.Single', 'System.Int32', 'System.Single', 'System.Single', 'System.Single', 'System.Boolean', 'System.Single', 'System.Boolean', 'System.Single', 'System.Boolean', 'System.Single', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32'] | names=['current', 'isVoltageTrig', 'VoltageOrCurrentTrigDirection', 'VoltageOrCurrentTrigValue', 'capacityTrigDirection', 'capacityTrigValue', 'timePerPoint', 'continueTime', 'IsUseResolution', 'Resolution', 'isUseDeltaI', 'deltaI', 'isUseDeltaQ', 'deltaQ', 'isVoltageRandAuto', 'VoltageRand', 'isCurrentRandAuto', 'currentRand', 'machineId']
Start_CurrentChargeDisCharge:['System.Single', 'System.Single', 'System.Single', 'System.Single', 'System.Single', 'System.Single', 'System.Single', 'System.Int32', 'ECCore.SwithPriority', 'ECCore.TimeType', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32'] | names=['CurrentValue1', 'TimeLimitValue1', 'Vol1LimitValue1', 'CurrentValue2', 'TimeLimitValue2', 'Vol1LimitValue2', 'timePerPoint', 'CycleCount', 'CurrentSwithPriority', 'timeType', 'isVoltageRandAuto', 'VoltageRand', 'isCurrentRandAuto', 'currentRand', 'machineId']
Start_ConstantPower:['System.Single', 'System.Boolean', 'System.Single', 'System.Boolean', 'System.Int32', 'System.Single', 'System.Int32', 'System.Single', 'System.Single', 'System.Single', 'System.Boolean', 'System.Single', 'System.Boolean', 'System.Single', 'System.Boolean', 'System.Single', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32'] | names=['power', 'isCharge', 'currentUpLimit', 'isVoltageTrig', 'VoltageOrCurrentTrigDirection', 'VoltageOrCurrentTrigValue', 'capacityTrigDirection', 'capacityTrigValue', 'timePerPoint', 'continueTime', 'IsUseResolution', 'Resolution', 'isUseDeltaI', 'deltaI', 'isUseDeltaQ', 'deltaQ', 'isVoltageRandAuto', 'VoltageRand', 'isCurrentRandAuto', 'currentRand', 'machineId']
Start_ConstantResistance:['System.Single', 'System.Boolean', 'System.Single', 'System.Boolean', 'System.Int32', 'System.Single', 'System.Int32', 'System.Single', 'System.Single', 'System.Single', 'System.Boolean', 'System.Single', 'System.Boolean', 'System.Single', 'System.Boolean', 'System.Single', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32'] | names=['resistance', 'isCharge', 'currentUpLimit', 'isVoltageTrig', 'VoltageOrCurrentTrigDirection', 'VoltageOrCurrentTrigValue', 'capacityTrigDirection', 'capacityTrigValue', 'timePerPoint', 'continueTime', 'IsUseResolution', 'Resolution', 'isUseDeltaI', 'deltaI', 'isUseDeltaQ', 'deltaQ', 'isVoltageRandAuto', 'VoltageRand', 'isCurrentRandAuto', 'currentRand', 'machineId']
Start_Tafel:['System.Single', 'System.Int32', 'System.Single', 'System.Int32', 'System.Single', 'System.Single', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32'] | names=['InitialPotential', 'InitialPotentialVSType', 'FinallyPotential', 'FinallyPotentialVSType', 'StepHeight', 'StepTime', 'isVoltageRandAuto', 'VoltageRand', 'isCurrentRandAuto', 'currentRand', 'isVoltageFilterAuto', 'VoltageFilter', 'isCurrentFilterAuto', 'currentFilter', 'machineId']
Start_LPR:['System.Single', 'System.Int32', 'System.Single', 'System.Int32', 'System.Single', 'System.Single', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32'] | names=['InitialPotential', 'InitialPotentialVSType', 'FinallyPotential', 'FinallyPotentialVSType', 'StepHeight', 'StepTime', 'isVoltageRandAuto', 'VoltageRand', 'isCurrentRandAuto', 'currentRand', 'isVoltageFilterAuto', 'VoltageFilter', 'isCurrentFilterAuto', 'currentFilter', 'machineId']
Start_Zra:['System.Single', 'System.Single', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32'] | names=['timePerPoint', 'continueTime', 'isVoltageRandAuto', 'VoltageRand', 'isCurrentRandAuto', 'currentRand', 'isVoltageFilterAuto', 'VoltageFilter', 'isCurrentFilterAuto', 'currentFilter', 'machineId']
Start_Potentiostatic_Staircase:['System.Single', 'System.Int32', 'System.Single', 'System.Int32', 'System.Single', 'System.Int32', 'System.Single', 'System.Int32', 'System.Single', 'System.Single', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32'] | names=['OutputValue1', 'vsType1', 'OutputValue2', 'vsType2', 'OutputValue3', 'vsType3', 'timePerPoint', 'stepCount', 'measureDelay', 'plusTime', 'isVoltageRandAuto', 'VoltageRand', 'isCurrentRandAuto', 'currentRand', 'isVoltageFilterAuto', 'VoltageFilter', 'isCurrentFilterAuto', 'currentFilter', 'machineId']
Start_Fast_Potential_Pulses:['System.Int32', 'System.Single', 'System.Single', 'System.Int32', 'System.Single', 'System.Single', 'System.Int32', 'System.Single', 'System.Single', 'System.Int32', 'System.Single', 'System.Single', 'System.Int32', 'System.Single', 'System.Single', 'System.Int32', 'System.Single', 'System.Int32', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32'] | names=['plusCount', 'OutputValue1', 'ContinueTime1', 'vsType1', 'OutputValue2', 'ContinueTime2', 'vsType2', 'OutputValue3', 'ContinueTime3', 'vsType3', 'OutputValue4', 'ContinueTime4', 'vsType4', 'OutputValue5', 'ContinueTime5', 'vsType5', 'timePerPoint', 'cycleCount', 'isVoltageRandAuto', 'VoltageRand', 'isCurrentRandAuto', 'currentRand', 'isVoltageFilterAuto', 'VoltageFilter', 'isCurrentFilterAuto', 'currentFilter', 'machineId']
Start_Fast_Galvanic_Pulses:['System.Int32', 'System.Single', 'System.Single', 'System.Single', 'System.Single', 'System.Single', 'System.Single', 'System.Single', 'System.Single', 'System.Single', 'System.Single', 'System.Single', 'System.Int32', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32'] | names=['plusCount', 'OutputValue1', 'ContinueTime1', 'OutputValue2', 'ContinueTime2', 'OutputValue3', 'ContinueTime3', 'OutputValue4', 'ContinueTime4', 'OutputValue5', 'ContinueTime5', 'timePerPoint', 'cycleCount', 'isVoltageRandAuto', 'VoltageRand', 'isCurrentRandAuto', 'currentRand', 'isVoltageFilterAuto', 'VoltageFilter', 'isCurrentFilterAuto', 'currentFilter', 'machineId']
Start_Circle_Voltammetry_Multi_New:['System.Single', 'System.Boolean', 'System.Single', 'System.Int32', 'System.Single', 'System.Int32', 'System.Single', 'System.Int32', 'System.Boolean', 'System.Single', 'System.Int32', 'System.Single', 'System.Int32', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.Single'] | names=['voltageInterval', 'IsUseInitialPotential', 'InitialPotential', 'InitialPotentialVSType', 'TopPotential1', 'TopPotential1VSType', 'TopPotential2', 'TopPotential2VSType', 'IsUseFinallyPotential', 'FinallyPotential', 'FinallyPotentialVSType', 'ScanRate', 'cycleCount', 'isVoltageRandAuto', 'VoltageRand', 'isCurrentRandAuto', 'currentRand', 'isVoltageFilterAuto', 'VoltageFilter', 'isCurrentFilterAuto', 'currentFilter', 'machineId', 'delayTime']
Start_Staircase_Cyclic_Voltammetry_MultipleCycles_New:['System.Boolean', 'System.Single', 'System.Int32', 'System.Single', 'System.Int32', 'System.Single', 'System.Int32', 'System.Boolean', 'System.Single', 'System.Int32', 'System.Single', 'System.Single', 'System.Int32', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.Single'] | names=['IsUseInitialPotential', 'InitialPotential', 'InitialPotentialVSType', 'TopPotential1', 'TopPotential1VSType', 'TopPotential2', 'TopPotential2VSType', 'IsUseFinallyPotential', 'FinallyPotential', 'FinallyPotentialVSType', 'stepHeight', 'stepTime', 'cycleCount', 'isVoltageRandAuto', 'VoltageRand', 'isCurrentRandAuto', 'currentRand', 'isVoltageFilterAuto', 'VoltageFilter', 'isCurrentFilterAuto', 'currentFilter', 'machineId', 'delayTime']
Start_OpenCircuit_All:['System.Single', 'System.Single'] | names=['timePerPoint', 'continueTime']
Start_EIS_All:['System.Boolean', 'System.Double', 'System.Double', 'System.Single', 'System.Int32', 'System.Int32', 'System.Single', 'System.Single', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Int32', 'System.String', 'System.Single', 'System.Int32'] | names=['isVolEIS', 'StartFreq', 'EndFreq', 'Amplitude', 'IntervalType', 'PointCount', 'Voltage', 'VoltageVSType', 'isVoltageRandAuto', 'VoltageRand', 'isCurrentRandAuto', 'currentRand', 'isVoltageFilterAuto', 'VoltageFilter', 'isCurrentFilterAuto', 'currentFilter', 'delayTime', 'dataQuality']
version: lsv_v1
version: lsv_v1
start_cv_params: {'is_use_initial_potential': True, 'initial_potential': -1.0, 'initial_potential_vs_type': 0, 'top_potential1': 1.0, 'top_potential1_vs_type': 0, 'top_potential2': -2.0, 'top_potential2_vs_type': 0, 'is_use_finally_potential': True, 'finally_potential': -1.0, 'finally_potential_vs_type': 0, 'scan_rate': 0.2, 'cycle_count': 2, 'is_voltage_rand_auto': 1, 'voltage_rand': '1000', 'is_current_rand_auto': 1, 'current_rand': '1000', 'is_voltage_filter_auto': 1, 'voltage_filter': '10Hz', 'is_current_filter_auto': 1, 'current_filter': '10Hz', 'machine_id': 2}
start_cv: {'success': True, 'return_info': 'ok', 'machine_id': 2}
start_realtime_output_cv: {'success': True, 'running': True, 'machine_id': 2, 'file': 'D:\\Uni-Lab-OS\\Uni-Lab-OS\\unilabos\\devices\\donghua_ec\\x64release\\DHInterface\\SourceData\\2025-12-12\\循环伏安\\2号机(循环伏安(多循环)).txt'}
result_types: [0]
data_details: [{'cand': 0, 'len': 0, 'd3': (0, 0, 0), 'd4': (0, 0, 0, 0), 'd7': (0, 0, 0, 0, 0, 0, 0)}]
stop_realtime_output_cv: {'success': True, 'machine_id': 2, 'file': 'D:\\Uni-Lab-OS\\Uni-Lab-OS\\unilabos\\devices\\donghua_ec\\x64release\\DHInterface\\SourceData\\2025-12-12\\循环伏安\\2号机(循环伏安(多循环)).txt'}
export_cyclic_voltammetry: {'success': True, 'files': ['D:\\Uni-Lab-OS\\Uni-Lab-OS\\unilabos\\devices\\donghua_ec\\exports\\循环伏安\\2号机(循环伏安(多循环)).txt'], 'dest': 'D:\\Uni-Lab-OS\\Uni-Lab-OS\\unilabos\\devices\\donghua_ec\\exports\\循环伏安'}
stop_experiment_cv: {'success': True, 'machine_id': 2}

View File

@@ -1,176 +0,0 @@
import os
import sys
import asyncio
import logging
from pathlib import Path
# Ensure repository is on PYTHONPATH
repo_root = Path(__file__).resolve().parents[3]
sys.path.append(str(repo_root))
from unilabos.devices.donghua_ec.donghua_ec import DonghuaEC
logging.basicConfig(level=logging.INFO)
async def main():
iface_dir = Path(__file__).resolve().parent / "x64release" / "DHInterface"
drv = DonghuaEC(config={"interface_dir": str(iface_dir)})
ok = await drv.initialize()
res = drv.get_machine_ids()
import time as _t
out = Path(__file__).resolve().parent / "init_output.txt"
try:
if out.exists():
out.unlink()
except Exception:
pass
with open(out, "w", encoding="utf-8") as f:
f.write(f"initialize: {ok}\n")
f.write(f"get_machine_ids: {res}\n")
f.write("version: reflect_linear_scan_signature\n")
try:
import System
elec = drv._elec
t = elec.GetType()
sig_lines = []
for m in t.GetMethods():
name = m.Name
if ("Linear" in name) or ("Scan" in name) or ("Volt" in name) or ("Chrono" in name) or ("Potent" in name):
ps_types = [str(p.ParameterType.FullName) for p in m.GetParameters()]
ps_names = [str(p.Name) for p in m.GetParameters()]
sig_lines.append(name + ":" + str(ps_types) + " | names=" + str(ps_names))
f.write("linear_scan_related_methods:\n")
for ln in sig_lines:
f.write(ln + "\n")
# dump all Start_* signatures for debugging
all_start = []
for m in t.GetMethods():
name = m.Name
if name.startswith("Start_"):
ps_types = [str(p.ParameterType.FullName) for p in m.GetParameters()]
ps_names = [str(p.Name) for p in m.GetParameters()]
all_start.append(name + ":" + str(ps_types) + " | names=" + str(ps_names))
f.write("all_start_methods:\n")
for ln in all_start:
f.write(ln + "\n")
except Exception as e:
f.write(f"reflect_error: {e}\n")
f.write("version: lsv_v1\n")
with open(out, "a", encoding="utf-8") as f:
f.write("version: lsv_v1\n")
# Cyclic Voltammetry (Multi)
cv_params = dict(
is_use_initial_potential=True,
initial_potential=-1.0,
initial_potential_vs_type=0,
top_potential1=1.0,
top_potential1_vs_type=0,
top_potential2=-2.0,
top_potential2_vs_type=0,
is_use_finally_potential=True,
finally_potential=-1.0,
finally_potential_vs_type=0,
scan_rate=0.2,
cycle_count=2,
is_voltage_rand_auto=1,
voltage_rand="1000",
is_current_rand_auto=1,
current_rand="1000",
is_voltage_filter_auto=1,
voltage_filter="10Hz",
is_current_filter_auto=1,
current_filter="10Hz",
machine_id=2,
)
with open(out, "a", encoding="utf-8") as f:
f.write(f"start_cv_params: {cv_params}\n")
try:
start_cv = drv.start_cyclic_voltammetry_multi(**cv_params)
except Exception as e:
start_cv = {"success": False, "return_info": str(e), "machine_id": 2}
try:
if not start_cv.get("success"):
drv.data["last_result_type"] = "cyclic_voltammetry"
except Exception:
pass
with open(out, "a", encoding="utf-8") as f:
f.write(f"start_cv: {start_cv}\n")
try:
rt4 = drv.start_realtime_output(machine_id=2, interval=0.5)
except Exception as e:
rt4 = {"success": False, "error": str(e)}
with open(out, "a", encoding="utf-8") as f:
f.write(f"start_realtime_output_cv: {rt4}\n")
try:
import System
elec = drv._elec
rts = []
try:
rts = list(elec.GetResultDataType(2))
except Exception:
rts = []
with open(out, "a", encoding="utf-8") as f:
f.write(f"result_types: {rts}\n")
print("result_types:", rts)
details = []
for cand in rts:
try:
s = elec.GetData(cand, 2)
except Exception:
s = None
d = {"cand": cand, "len": 0, "d3": (), "d4": (), "d7": ()}
try:
it = list(s)
d["len"] = len(it)
except Exception:
pass
try:
a0 = list(elec.SplitData(s, 3, 0)); a1 = list(elec.SplitData(s, 3, 1)); a2 = list(elec.SplitData(s, 3, 2))
d["d3"] = (len(a0), len(a1), len(a2))
except Exception:
pass
try:
b0 = list(elec.SplitData(s, 4, 0)); b1 = list(elec.SplitData(s, 4, 1)); b2 = list(elec.SplitData(s, 4, 2)); b3 = list(elec.SplitData(s, 4, 3))
d["d4"] = (len(b0), len(b1), len(b2), len(b3))
except Exception:
pass
try:
c0 = list(elec.SplitData(s, 7, 0)); c1 = list(elec.SplitData(s, 7, 1)); c2 = list(elec.SplitData(s, 7, 2)); c3 = list(elec.SplitData(s, 7, 3)); c4 = list(elec.SplitData(s, 7, 4)); c5 = list(elec.SplitData(s, 7, 5)); c6 = list(elec.SplitData(s, 7, 6))
d["d7"] = (len(c0), len(c1), len(c2), len(c3), len(c4), len(c5), len(c6))
except Exception:
pass
details.append(d)
with open(out, "a", encoding="utf-8") as f:
f.write(f"data_details: {details}\n")
print("data_details:", details)
except Exception:
pass
try:
import time as _t
_t.sleep(10.0)
except Exception:
pass
try:
stop_rt4 = drv.stop_realtime_output(machine_id=2)
except Exception as e:
stop_rt4 = {"success": False, "error": str(e)}
with open(out, "a", encoding="utf-8") as f:
f.write(f"stop_realtime_output_cv: {stop_rt4}\n")
try:
exp_cv = drv.export_cyclic_voltammetry_data(machine_id=2, dest_dir=str(Path(__file__).resolve().parent / "exports" / "循环伏安"))
except Exception as e:
exp_cv = {"success": False, "error": str(e)}
with open(out, "a", encoding="utf-8") as f:
f.write(f"export_cyclic_voltammetry: {exp_cv}\n")
try:
stop_cv = drv.stop_experiment(machine_id=2)
except Exception as e:
stop_cv = {"success": False, "error": str(e)}
with open(out, "a", encoding="utf-8") as f:
f.write(f"stop_experiment_cv: {stop_cv}\n")
if __name__ == "__main__":
try:
asyncio.run(main())
except Exception as e:
print("error:", e)

Some files were not shown because too many files have changed in this diff Show More