Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
P
python_test_scripts
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Wiki
Requirements
Jira
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
LOFAR2.0
python_test_scripts
Commits
a03e2e0f
Commit
a03e2e0f
authored
3 years ago
by
Gijs Schoonderbeek
Browse files
Options
Downloads
Patches
Plain Diff
Added Thermal test script version 0.1
parent
75ebf51c
No related branches found
No related tags found
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
Jupyter_Pages/DTS_LL_Thermal_Tests.ipynb
+420
-0
420 additions, 0 deletions
Jupyter_Pages/DTS_LL_Thermal_Tests.ipynb
with
420 additions
and
0 deletions
Jupyter_Pages/DTS_LL_Thermal_Tests.ipynb
0 → 100644
+
420
−
0
View file @
a03e2e0f
{
"cells": [
{
"cell_type": "markdown",
"id": "e73610a1",
"metadata": {},
"source": [
"# DTS-Lab-Light Thermal Testing\n",
"Measurements done by: Jeroen and Gijs<br>\n",
"## Goal of the measurement\n",
"Verify that the DTS can run at summer temperatures\n",
"## Measurement setup\n",
"- 1x UniBoard2c<br>\n",
"- 1x APSCT<br>\n",
"- 1x APSPU<br>\n",
"- 4x RCU2L_QM<br>\n",
"- 28x RCU2_Heater<br>"
]
},
{
"cell_type": "code",
"execution_count": 134,
"id": "c2ace952",
"metadata": {},
"outputs": [],
"source": [
"import time\n",
"import numpy as np\n",
"import pylab as pl"
]
},
{
"cell_type": "code",
"execution_count": 135,
"id": "875c84fc",
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Ambient temperature in °C:22.5\n"
]
}
],
"source": [
"ambient_temperature = input(\"Ambient temperature in °C:\")"
]
},
{
"cell_type": "code",
"execution_count": 137,
"id": "dd54c19e",
"metadata": {
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"warning, expected RCU device to be in on state, is: FAULT\n",
"warning, expected APSCT device to be in on state, is: FAULT\n",
"warning, expected APSPU device to be in on state, is: FAULT\n"
]
},
{
"ename": "CommunicationFailed",
"evalue": "DevFailed[\nDevError[\n desc = TRANSIENT CORBA system exception: TRANSIENT_CallTimedout\n origin = Connection::command_inout()\n reason = API_CorbaException\nseverity = ERR]\n\nDevError[\n desc = Timeout (3000 mS) exceeded on device lts/unb2/1, command initialise\n origin = Connection::command_inout()\n reason = API_DeviceTimedOut\nseverity = ERR]\n]",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mCommunicationFailed\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m/tmp/ipykernel_117/3795550939.py\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 58\u001b[0m \u001b[0mstate\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mstr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0munb2c\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 59\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mstate\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m\"OFF\"\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0mstate\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m\"FAULT\"\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 60\u001b[0;31m \u001b[0munb2c\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0minitialise\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 61\u001b[0m \u001b[0mtime\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msleep\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 62\u001b[0m \u001b[0mstate\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mstr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0munb2c\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.7/dist-packages/tango/device_proxy.py\u001b[0m in \u001b[0;36mf\u001b[0;34m(*args, **kwds)\u001b[0m\n\u001b[1;32m 273\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 274\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 275\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mdp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcommand_inout\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 276\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 277\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__doc__\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdoc\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.7/dist-packages/tango/green.py\u001b[0m in \u001b[0;36mgreener\u001b[0;34m(obj, *args, **kwargs)\u001b[0m\n\u001b[1;32m 193\u001b[0m \u001b[0mgreen_mode\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0maccess\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'green_mode'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 194\u001b[0m \u001b[0mexecutor\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mget_object_executor\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mobj\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mgreen_mode\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 195\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mexecutor\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrun\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mwait\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mwait\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 196\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 197\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mgreener\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.7/dist-packages/tango/green.py\u001b[0m in \u001b[0;36mrun\u001b[0;34m(self, fn, args, kwargs, wait, timeout)\u001b[0m\n\u001b[1;32m 107\u001b[0m \u001b[0;31m# Sychronous (no delegation)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 108\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0masynchronous\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0min_executor_context\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 109\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mfn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 110\u001b[0m \u001b[0;31m# Asynchronous delegation\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 111\u001b[0m \u001b[0maccessor\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdelegate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.7/dist-packages/tango/connection.py\u001b[0m in \u001b[0;36m__Connection__command_inout\u001b[0;34m(self, name, *args, **kwds)\u001b[0m\n\u001b[1;32m 106\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0mtimeout\u001b[0m\u001b[0;34m*\u001b[0m \u001b[0mparameter\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 107\u001b[0m \"\"\"\n\u001b[0;32m--> 108\u001b[0;31m \u001b[0mr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mConnection\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcommand_inout_raw\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 109\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mr\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mDeviceData\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 110\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.7/dist-packages/tango/connection.py\u001b[0m in \u001b[0;36m__Connection__command_inout_raw\u001b[0;34m(self, cmd_name, cmd_param)\u001b[0m\n\u001b[1;32m 135\u001b[0m \"\"\"\n\u001b[1;32m 136\u001b[0m \u001b[0mparam\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m__get_command_inout_param\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcmd_name\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcmd_param\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 137\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__command_inout\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcmd_name\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mparam\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 138\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 139\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mCommunicationFailed\u001b[0m: DevFailed[\nDevError[\n desc = TRANSIENT CORBA system exception: TRANSIENT_CallTimedout\n origin = Connection::command_inout()\n reason = API_CorbaException\nseverity = ERR]\n\nDevError[\n desc = Timeout (3000 mS) exceeded on device lts/unb2/1, command initialise\n origin = Connection::command_inout()\n reason = API_DeviceTimedOut\nseverity = ERR]\n]"
]
}
],
"source": [
"#\n",
"# Open de OPC-UA devices\n",
"#\n",
"rcu=DeviceProxy(\"LTS/RECV/1\")\n",
"apsct=DeviceProxy(\"LTS/APSCT/1\")\n",
"apspu=DeviceProxy(\"LTS/APSPU/1\")\n",
"unb2c=DeviceProxy(\"LTS/UNB2/1\")\n",
"aps_dev=[]\n",
"aps_dev.append(DeviceProxy(\"LTS/UNB2/1\"))\n",
"#\n",
"# Check RCU interface\n",
"#\n",
"state = str(rcu.state())\n",
"if state == \"OFF\":\n",
" rcu.initialise()\n",
" time.sleep(1)\n",
"state = str(rcu.state())\n",
"if state == \"STANDBY\":\n",
" rcu.on()\n",
"state = str(rcu.state())\n",
"if state == \"ON\":\n",
" print(\"RCU device is now in on state\")\n",
"else:\n",
" print(\"warning, expected RCU device to be in on state, is: \", state)\n",
"#\n",
"# Check APSCT interface\n",
"#\n",
"state = str(apsct.state())\n",
"if state == \"OFF\":\n",
" apsct.initialise()\n",
" time.sleep(1)\n",
"state = str(apsct.state())\n",
"if state == \"STANDBY\":\n",
" rcu.on()\n",
"state = str(apsct.state())\n",
"if state == \"ON\":\n",
" print(\"APSCT device is now in on state\")\n",
"else:\n",
" print(\"warning, expected APSCT device to be in on state, is: \", state)\n",
"#\n",
"# Check APSPU interface\n",
"#\n",
"state = str(apspu.state())\n",
"if state == \"OFF\":\n",
" apspu.initialise()\n",
" time.sleep(1)\n",
"state = str(apspu.state())\n",
"if state == \"STANDBY\":\n",
" rcu.on()\n",
"state = str(apspu.state())\n",
"if state == \"ON\":\n",
" print(\"APSPU device is now in on state\")\n",
"else:\n",
" print(\"warning, expected APSPU device to be in on state, is: \", state)\n",
"#\n",
"# Check is UNB2_HW device is running or else start it up\n",
"#\n",
"state = str(unb2c.state())\n",
"if state == \"OFF\" or state == \"FAULT\":\n",
" unb2c.initialise()\n",
" time.sleep(1)\n",
"state = str(unb2c.state())\n",
"if state == \"STANDBY\":\n",
" unb2c.on()\n",
"state = str(unb2c.state())\n",
"if state == \"ON\":\n",
" print(\"UNB2_HW_MON is now in on state\")\n",
"else:\n",
" print(\"warning, expected device to be in on state, is: \", state)\n"
]
},
{
"cell_type": "code",
"execution_count": 132,
"id": "2029f51f",
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"FPGA power consumption\n",
"|---------|----------|----------|----------|----------|----------|----------|----------|----------|\n",
"| BRD nr. | Node nr. | Core pwr | ERAM pwr | TrRx pwr | TrTx pwr | TxHx pwr | IO pwr | Tot.FPGA |\n",
"|---------|----------|----------|----------|----------|----------|----------|----------|----------|\n",
"| 0 | 0 | 5.7 W | 0.1 W | 0.4 W | 0.1 W | 1.1 W | 0.3 W | 7.6 W |\n",
"| 0 | 1 | 1.8 W | 0.2 W | 0.3 W | 0.1 W | 1.2 W | 0.3 W | 3.7 W |\n",
"| 0 | 2 | 3.6 W | 0.1 W | 0.4 W | 73091088.0 W | 1.6 W | 0.4 W | 73091094.1 W |\n",
"| 0 | 3 | 2.8 W | 0.1 W | 0.4 W | 0.1 W | 1.3 W | 0.2 W | 4.8 W |\n",
"| 1 | 0 | nan W | nan W | nan W | nan W | nan W | nan W | nan W |\n",
"| 1 | 1 | nan W | nan W | nan W | nan W | nan W | nan W | nan W |\n",
"| 1 | 2 | nan W | nan W | nan W | nan W | nan W | nan W | nan W |\n",
"| 1 | 3 | nan W | nan W | nan W | nan W | nan W | nan W | nan W |\n",
"|---------|----------|----------|----------|----------|----------|----------|----------|----------|\n",
"\n",
"Board power consumption\n",
"|---------|----------|----------|----------|----------|----------|----------|----------|\n",
"| BRD nr. | QSFP N01 | QSFP N23 |Switch 1v2|Switch PHY| clk pwr | FPGAs pwr| Tot. BRD |\n",
"|---------|----------|----------|----------|----------|----------|----------|----------|\n",
"| 0 | 5.18 W | 4.19 W | 2.11 W | 0.52 W | 2.21 W | nan W | 44.94 W |\n",
"| 1 | nan W | nan W | nan W | nan W | nan W | nan W | nan W |\n",
"|---------|----------|----------|----------|----------|----------|----------|----------|\n",
"\n",
"APS power consumption\n",
"|---------|----------|\n",
"| BRD | Tot. BRD |\n",
"|---------|----------|\n",
"|32x RCU2 | 82.09 W |\n",
"| UNB2_0 | 44.94 W |\n",
"| UNB2_1 | nan W |\n",
"|---------|----------|\n"
]
}
],
"source": [
"#\n",
"# Power consumption of the RCU's\n",
"#\n",
"if 1:\n",
" print(\"FPGA power consumption\")\n",
" print(\"|---------|----------|----------|----------|----------|----------|----------|----------|----------|\")\n",
" print(\"| BRD nr. | Node nr. | Core pwr | ERAM pwr | TrRx pwr | TrTx pwr | TxHx pwr | IO pwr | Tot.FPGA |\")\n",
" print(\"|---------|----------|----------|----------|----------|----------|----------|----------|----------|\")\n",
" for brd_cnt in range(2):\n",
" fpgas_pwr = np.zeros(2)\n",
" for node_cnt in range(4):\n",
" stri = \"| {} | {} |\".format(brd_cnt, node_cnt)\n",
" core_pwr = 0.95 * unb2c.UNB2_FPGA_POL_CORE_IOUT_R[brd_cnt][node_cnt]\n",
" stri +=\" {:4.1f} W |\".format(core_pwr)\n",
" eram_pwr = unb2c.UNB2_FPGA_POL_ERAM_VOUT_R[brd_cnt][node_cnt]*unb2c.UNB2_FPGA_POL_ERAM_IOUT_R[brd_cnt][node_cnt]\n",
" stri +=\" {:4.1f} W |\".format(eram_pwr)\n",
" rxgxb_pwr = unb2c.UNB2_FPGA_POL_RXGXB_VOUT_R[brd_cnt][node_cnt]*unb2c.UNB2_FPGA_POL_RXGXB_IOUT_R[brd_cnt][node_cnt]\n",
" stri +=\" {:4.1f} W |\".format(rxgxb_pwr)\n",
" txgxb_pwr = unb2c.UNB2_FPGA_POL_TXGXB_VOUT_R[brd_cnt][node_cnt]*unb2c.UNB2_FPGA_POL_TXGXB_IOUT_R[brd_cnt][node_cnt]\n",
" stri +=\" {:4.1f} W |\".format(txgxb_pwr)\n",
" hgxb_pwre = unb2c.UNB2_FPGA_POL_HGXB_VOUT_R[brd_cnt][node_cnt]*unb2c.UNB2_FPGA_POL_HGXB_IOUT_R[brd_cnt][node_cnt]\n",
" stri +=\" {:4.1f} W |\".format(hgxb_pwre)\n",
" pgm_pwr = unb2c.UNB2_FPGA_POL_PGM_VOUT_R[brd_cnt][node_cnt]*unb2c.UNB2_FPGA_POL_PGM_IOUT_R[brd_cnt][node_cnt]\n",
" stri +=\" {:4.1f} W |\".format(pgm_pwr)\n",
" tot_fpga = core_pwr + eram_pwr + rxgxb_pwr + txgxb_pwr + hgxb_pwre + pgm_pwr\n",
" fpgas_pwr += tot_fpga\n",
" stri +=\" {:4.1f} W |\".format(tot_fpga)\n",
" print(stri)\n",
" print(\"|---------|----------|----------|----------|----------|----------|----------|----------|----------|\\n\")\n",
" #\n",
" # Board Powers\n",
" #\n",
" print(\"Board power consumption\")\n",
" print(\"|---------|----------|----------|----------|----------|----------|----------|----------|\")\n",
" print(\"| BRD nr. | QSFP N01 | QSFP N23 |Switch 1v2|Switch PHY| clk pwr | FPGAs pwr| Tot. BRD |\")\n",
" print(\"|---------|----------|----------|----------|----------|----------|----------|----------|\")\n",
" brd_input=[]\n",
" for brd_cnt in range(2):\n",
" stri = \"| {} |\".format(brd_cnt)\n",
" qsfp_n01 = unb2c.UNB2_POL_QSFP_N01_VOUT_R[brd_cnt] * unb2c.UNB2_POL_QSFP_N01_IOUT_R[brd_cnt]\n",
" stri +=\" {:5.2f} W |\".format(qsfp_n01)\n",
" qsfp_n23 = unb2c.UNB2_POL_QSFP_N23_VOUT_R[brd_cnt] * unb2c.UNB2_POL_QSFP_N23_IOUT_R[brd_cnt]\n",
" stri +=\" {:5.2f} W |\".format(qsfp_n23)\n",
" sw_1v2 = unb2c.UNB2_POL_SWITCH_1V2_VOUT_R[brd_cnt] * unb2c.UNB2_POL_SWITCH_1V2_IOUT_R[brd_cnt]\n",
" stri +=\" {:5.2f} W |\".format(sw_1v2)\n",
" sw_phy = unb2c.UNB2_POL_SWITCH_PHY_VOUT_R[brd_cnt] * unb2c.UNB2_POL_SWITCH_PHY_IOUT_R[brd_cnt]\n",
" stri +=\" {:5.2f} W |\".format(sw_phy)\n",
" clk = unb2c.UNB2_POL_CLOCK_VOUT_R[brd_cnt] * unb2c.UNB2_POL_CLOCK_IOUT_R[brd_cnt]\n",
" stri +=\" {:5.2f} W |\".format(clk)\n",
" stri +=\" {:5.2f} W |\".format(fpgas_pwr[brd_cnt])\n",
" brd_input.append(unb2c.UNB2_DC_DC_48V_12V_VOUT_R[brd_cnt] * unb2c.UNB2_DC_DC_48V_12V_IOUT_R[brd_cnt])\n",
" stri +=\" {:6.2f} W |\".format(brd_input[-1])\n",
" print(stri)\n",
" print(\"|---------|----------|----------|----------|----------|----------|----------|----------|\")\n",
"rcu_ana_pwr = apspu.APSPU_RCU2A_IOUT_R*apspu.APSPU_RCU2A_VOUT_R\n",
"rcu_dig_pwr = apspu.APSPU_RCU2D_IOUT_R*apspu.APSPU_RCU2D_VOUT_R\n",
"print(\"\\nAPS power consumption\")\n",
"print(\"|---------|----------|\")\n",
"print(\"| BRD | Tot. BRD |\")\n",
"print(\"|---------|----------|\")\n",
"stri= \"|32x RCU2 | {:6.2f} W |\".format(rcu_ana_pwr + rcu_dig_pwr)\n",
"print(stri)\n",
"for brd_cnt in range(2):\n",
" stri= \"| UNB2_{} | {:6.2f} W |\".format(brd_cnt, brd_input[brd_cnt])\n",
" print(stri)\n",
"print(\"|---------|----------|\")\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 133,
"id": "51d0443c",
"metadata": {
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Hottest UniBoard2 device: Board 0 UNB2_POL_SWITCH_PHY_TEMP_R Temperature 42.6°C, above ambient +21.0\n",
"Hottest RCU2 device: Board 3 RCU_TEMP_R Temperature 31.8°C, above ambient +10.2\n",
"Hottest apspu device: APSPU_RCU2D_TEMP_R Temperature 28.2°C, above ambient +6.6\n",
"Hottest apsct device: APSCT_TEMP_R Temperature 24.4°C, above ambient +2.8\n"
]
}
],
"source": [
"max_temp=0\n",
"attr_names = unb2c.get_attribute_list()\n",
"for i in attr_names:\n",
" if \"TEMP\" in i:\n",
" exec(\"value = unb2c.{}\".format(i))\n",
" for brd_cnt in range(value.shape[0]):\n",
" if (len(value.shape) > 1):\n",
" for node_cnt in range(value.shape[1]):\n",
" if (max_temp < value[brd_cnt][node_cnt]):\n",
" stri = \"Hottest UniBoard2 device: Board {} Item {} {} Temperature {:3.1f}°C, above ambient +{:3.1f}\".format(brd_cnt, node_cnt, i, value[brd_cnt][node_cnt], value[brd_cnt][node_cnt]-float(ambient_temperature))\n",
" else:\n",
" if (max_temp < value[brd_cnt]):\n",
" stri = \"Hottest UniBoard2 device: Board {} {} Temperature {:3.1f}°C, above ambient +{:3.1f}\".format(brd_cnt, i, value[brd_cnt], value[brd_cnt]-float(ambient_temperature))\n",
"print(stri)\n",
"\n",
"max_temp=0\n",
"attr_names = recv.get_attribute_list()\n",
"for i in attr_names:\n",
" if \"TEMP\" in i:\n",
" exec(\"value = recv.{}\".format(i))\n",
" for brd_cnt in range(value.shape[0]):\n",
" if (max_temp < value[brd_cnt]):\n",
" stri = \"Hottest RCU2 device: Board {} {} Temperature {:3.1f}°C, above ambient +{:3.1f}\".format(brd_cnt, i, value[brd_cnt], value[brd_cnt]-float(ambient_temperature))\n",
"print(stri)\n",
"\n",
"max_temp=0\n",
"attr_names = apspu.get_attribute_list()\n",
"for i in attr_names:\n",
" if \"TEMP\" in i:\n",
" exec(\"value = apspu.{}\".format(i))\n",
" stri = \"Hottest apspu device: {} Temperature {:3.1f}°C, above ambient +{:3.1f}\".format(i, value, value-float(ambient_temperature))\n",
"print(stri)\n",
"\n",
"max_temp=0\n",
"attr_names = apsct.get_attribute_list()\n",
"for i in attr_names:\n",
" if \"TEMP\" in i:\n",
" exec(\"value = apsct.{}\".format(i))\n",
" stri = \"Hottest apsct device: {} Temperature {:3.1f}°C, above ambient +{:3.1f}\".format(i, value, value-float(ambient_temperature))\n",
"print(stri)\n",
"\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "7f18e187",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 126,
"id": "d4f54175",
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Atttibutes of pcc are: \n",
"*********\n",
"version_R\n",
"opcua_missing_attributes_R\n",
"APSPUTR_I2C_error_R\n",
"APSPUTR_monitor_rate_RW\n",
"APSPUTR_translator_busy_R\n",
"APSPU_FAN1_RPM_R\n",
"APSPU_FAN2_RPM_R\n",
"APSPU_FAN3_RPM_R\n",
"APSPU_LBA_IOUT_R\n",
"APSPU_LBA_TEMP_R\n",
"APSPU_LBA_VOUT_R\n",
"APSPU_PCB_ID_R\n",
"APSPU_PCB_number_R\n",
"APSPU_PCB_version_R\n",
"APSPU_RCU2A_IOUT_R\n",
"APSPU_RCU2A_TEMP_R\n",
"APSPU_RCU2A_VOUT_R\n",
"APSPU_RCU2D_IOUT_R\n",
"APSPU_RCU2D_TEMP_R\n",
"APSPU_RCU2D_VOUT_R\n",
"State\n",
"Status\n",
"*********\n",
"\n"
]
}
],
"source": [
"#\n",
"# Print the available attributes\n",
"#\n",
"print(\"Atttibutes of pcc are: \\n*********\")\n",
"attr_names = apspu.get_attribute_list()\n",
"for i in attr_names:\n",
" print(i)\n",
"# exec(\"value = print(i, d.{})\".format(i))\n",
"print(\"*********\\n\") \n"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "StationControl",
"language": "python",
"name": "stationcontrol"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
%% Cell type:markdown id:e73610a1 tags:
# DTS-Lab-Light Thermal Testing
Measurements done by: Jeroen and Gijs
<br>
## Goal of the measurement
Verify that the DTS can run at summer temperatures
## Measurement setup
-
1x UniBoard2c
<br>
-
1x APSCT
<br>
-
1x APSPU
<br>
-
4x RCU2L_QM
<br>
-
28x RCU2_Heater
<br>
%% Cell type:code id:c2ace952 tags:
```
python
import
time
import
numpy
as
np
import
pylab
as
pl
```
%% Cell type:code id:875c84fc tags:
```
python
ambient_temperature
=
input
(
"
Ambient temperature in °C:
"
)
```
%% Output
Ambient temperature in °C:22.5
%% Cell type:code id:dd54c19e tags:
```
python
#
# Open de OPC-UA devices
#
rcu
=
DeviceProxy
(
"
LTS/RECV/1
"
)
apsct
=
DeviceProxy
(
"
LTS/APSCT/1
"
)
apspu
=
DeviceProxy
(
"
LTS/APSPU/1
"
)
unb2c
=
DeviceProxy
(
"
LTS/UNB2/1
"
)
aps_dev
=
[]
aps_dev
.
append
(
DeviceProxy
(
"
LTS/UNB2/1
"
))
#
# Check RCU interface
#
state
=
str
(
rcu
.
state
())
if
state
==
"
OFF
"
:
rcu
.
initialise
()
time
.
sleep
(
1
)
state
=
str
(
rcu
.
state
())
if
state
==
"
STANDBY
"
:
rcu
.
on
()
state
=
str
(
rcu
.
state
())
if
state
==
"
ON
"
:
print
(
"
RCU device is now in on state
"
)
else
:
print
(
"
warning, expected RCU device to be in on state, is:
"
,
state
)
#
# Check APSCT interface
#
state
=
str
(
apsct
.
state
())
if
state
==
"
OFF
"
:
apsct
.
initialise
()
time
.
sleep
(
1
)
state
=
str
(
apsct
.
state
())
if
state
==
"
STANDBY
"
:
rcu
.
on
()
state
=
str
(
apsct
.
state
())
if
state
==
"
ON
"
:
print
(
"
APSCT device is now in on state
"
)
else
:
print
(
"
warning, expected APSCT device to be in on state, is:
"
,
state
)
#
# Check APSPU interface
#
state
=
str
(
apspu
.
state
())
if
state
==
"
OFF
"
:
apspu
.
initialise
()
time
.
sleep
(
1
)
state
=
str
(
apspu
.
state
())
if
state
==
"
STANDBY
"
:
rcu
.
on
()
state
=
str
(
apspu
.
state
())
if
state
==
"
ON
"
:
print
(
"
APSPU device is now in on state
"
)
else
:
print
(
"
warning, expected APSPU device to be in on state, is:
"
,
state
)
#
# Check is UNB2_HW device is running or else start it up
#
state
=
str
(
unb2c
.
state
())
if
state
==
"
OFF
"
or
state
==
"
FAULT
"
:
unb2c
.
initialise
()
time
.
sleep
(
1
)
state
=
str
(
unb2c
.
state
())
if
state
==
"
STANDBY
"
:
unb2c
.
on
()
state
=
str
(
unb2c
.
state
())
if
state
==
"
ON
"
:
print
(
"
UNB2_HW_MON is now in on state
"
)
else
:
print
(
"
warning, expected device to be in on state, is:
"
,
state
)
```
%% Output
warning, expected RCU device to be in on state, is: FAULT
warning, expected APSCT device to be in on state, is: FAULT
warning, expected APSPU device to be in on state, is: FAULT
---------------------------------------------------------------------------
CommunicationFailed Traceback (most recent call last)
/tmp/ipykernel_117/3795550939.py in <module>
58 state = str(unb2c.state())
59 if state == "OFF" or state == "FAULT":
---> 60 unb2c.initialise()
61 time.sleep(1)
62 state = str(unb2c.state())
/usr/local/lib/python3.7/dist-packages/tango/device_proxy.py in f(*args, **kwds)
273
274 def f(*args, **kwds):
--> 275 return dp.command_inout(name, *args, **kwds)
276
277 f.__doc__ = doc
/usr/local/lib/python3.7/dist-packages/tango/green.py in greener(obj, *args, **kwargs)
193 green_mode = access('green_mode', None)
194 executor = get_object_executor(obj, green_mode)
--> 195 return executor.run(fn, args, kwargs, wait=wait, timeout=timeout)
196
197 return greener
/usr/local/lib/python3.7/dist-packages/tango/green.py in run(self, fn, args, kwargs, wait, timeout)
107 # Sychronous (no delegation)
108 if not self.asynchronous or not self.in_executor_context():
--> 109 return fn(*args, **kwargs)
110 # Asynchronous delegation
111 accessor = self.delegate(fn, *args, **kwargs)
/usr/local/lib/python3.7/dist-packages/tango/connection.py in __Connection__command_inout(self, name, *args, **kwds)
106 *timeout* parameter.
107 """
--> 108 r = Connection.command_inout_raw(self, name, *args, **kwds)
109 if isinstance(r, DeviceData):
110 try:
/usr/local/lib/python3.7/dist-packages/tango/connection.py in __Connection__command_inout_raw(self, cmd_name, cmd_param)
135 """
136 param = __get_command_inout_param(self, cmd_name, cmd_param)
--> 137 return self.__command_inout(cmd_name, param)
138
139
CommunicationFailed: DevFailed[
DevError[
desc = TRANSIENT CORBA system exception: TRANSIENT_CallTimedout
origin = Connection::command_inout()
reason = API_CorbaException
severity = ERR]
DevError[
desc = Timeout (3000 mS) exceeded on device lts/unb2/1, command initialise
origin = Connection::command_inout()
reason = API_DeviceTimedOut
severity = ERR]
]
%% Cell type:code id:2029f51f tags:
```
python
#
# Power consumption of the RCU's
#
if
1
:
print
(
"
FPGA power consumption
"
)
print
(
"
|---------|----------|----------|----------|----------|----------|----------|----------|----------|
"
)
print
(
"
| BRD nr. | Node nr. | Core pwr | ERAM pwr | TrRx pwr | TrTx pwr | TxHx pwr | IO pwr | Tot.FPGA |
"
)
print
(
"
|---------|----------|----------|----------|----------|----------|----------|----------|----------|
"
)
for
brd_cnt
in
range
(
2
):
fpgas_pwr
=
np
.
zeros
(
2
)
for
node_cnt
in
range
(
4
):
stri
=
"
| {} | {} |
"
.
format
(
brd_cnt
,
node_cnt
)
core_pwr
=
0.95
*
unb2c
.
UNB2_FPGA_POL_CORE_IOUT_R
[
brd_cnt
][
node_cnt
]
stri
+=
"
{:4.1f} W |
"
.
format
(
core_pwr
)
eram_pwr
=
unb2c
.
UNB2_FPGA_POL_ERAM_VOUT_R
[
brd_cnt
][
node_cnt
]
*
unb2c
.
UNB2_FPGA_POL_ERAM_IOUT_R
[
brd_cnt
][
node_cnt
]
stri
+=
"
{:4.1f} W |
"
.
format
(
eram_pwr
)
rxgxb_pwr
=
unb2c
.
UNB2_FPGA_POL_RXGXB_VOUT_R
[
brd_cnt
][
node_cnt
]
*
unb2c
.
UNB2_FPGA_POL_RXGXB_IOUT_R
[
brd_cnt
][
node_cnt
]
stri
+=
"
{:4.1f} W |
"
.
format
(
rxgxb_pwr
)
txgxb_pwr
=
unb2c
.
UNB2_FPGA_POL_TXGXB_VOUT_R
[
brd_cnt
][
node_cnt
]
*
unb2c
.
UNB2_FPGA_POL_TXGXB_IOUT_R
[
brd_cnt
][
node_cnt
]
stri
+=
"
{:4.1f} W |
"
.
format
(
txgxb_pwr
)
hgxb_pwre
=
unb2c
.
UNB2_FPGA_POL_HGXB_VOUT_R
[
brd_cnt
][
node_cnt
]
*
unb2c
.
UNB2_FPGA_POL_HGXB_IOUT_R
[
brd_cnt
][
node_cnt
]
stri
+=
"
{:4.1f} W |
"
.
format
(
hgxb_pwre
)
pgm_pwr
=
unb2c
.
UNB2_FPGA_POL_PGM_VOUT_R
[
brd_cnt
][
node_cnt
]
*
unb2c
.
UNB2_FPGA_POL_PGM_IOUT_R
[
brd_cnt
][
node_cnt
]
stri
+=
"
{:4.1f} W |
"
.
format
(
pgm_pwr
)
tot_fpga
=
core_pwr
+
eram_pwr
+
rxgxb_pwr
+
txgxb_pwr
+
hgxb_pwre
+
pgm_pwr
fpgas_pwr
+=
tot_fpga
stri
+=
"
{:4.1f} W |
"
.
format
(
tot_fpga
)
print
(
stri
)
print
(
"
|---------|----------|----------|----------|----------|----------|----------|----------|----------|
\n
"
)
#
# Board Powers
#
print
(
"
Board power consumption
"
)
print
(
"
|---------|----------|----------|----------|----------|----------|----------|----------|
"
)
print
(
"
| BRD nr. | QSFP N01 | QSFP N23 |Switch 1v2|Switch PHY| clk pwr | FPGAs pwr| Tot. BRD |
"
)
print
(
"
|---------|----------|----------|----------|----------|----------|----------|----------|
"
)
brd_input
=
[]
for
brd_cnt
in
range
(
2
):
stri
=
"
| {} |
"
.
format
(
brd_cnt
)
qsfp_n01
=
unb2c
.
UNB2_POL_QSFP_N01_VOUT_R
[
brd_cnt
]
*
unb2c
.
UNB2_POL_QSFP_N01_IOUT_R
[
brd_cnt
]
stri
+=
"
{:5.2f} W |
"
.
format
(
qsfp_n01
)
qsfp_n23
=
unb2c
.
UNB2_POL_QSFP_N23_VOUT_R
[
brd_cnt
]
*
unb2c
.
UNB2_POL_QSFP_N23_IOUT_R
[
brd_cnt
]
stri
+=
"
{:5.2f} W |
"
.
format
(
qsfp_n23
)
sw_1v2
=
unb2c
.
UNB2_POL_SWITCH_1V2_VOUT_R
[
brd_cnt
]
*
unb2c
.
UNB2_POL_SWITCH_1V2_IOUT_R
[
brd_cnt
]
stri
+=
"
{:5.2f} W |
"
.
format
(
sw_1v2
)
sw_phy
=
unb2c
.
UNB2_POL_SWITCH_PHY_VOUT_R
[
brd_cnt
]
*
unb2c
.
UNB2_POL_SWITCH_PHY_IOUT_R
[
brd_cnt
]
stri
+=
"
{:5.2f} W |
"
.
format
(
sw_phy
)
clk
=
unb2c
.
UNB2_POL_CLOCK_VOUT_R
[
brd_cnt
]
*
unb2c
.
UNB2_POL_CLOCK_IOUT_R
[
brd_cnt
]
stri
+=
"
{:5.2f} W |
"
.
format
(
clk
)
stri
+=
"
{:5.2f} W |
"
.
format
(
fpgas_pwr
[
brd_cnt
])
brd_input
.
append
(
unb2c
.
UNB2_DC_DC_48V_12V_VOUT_R
[
brd_cnt
]
*
unb2c
.
UNB2_DC_DC_48V_12V_IOUT_R
[
brd_cnt
])
stri
+=
"
{:6.2f} W |
"
.
format
(
brd_input
[
-
1
])
print
(
stri
)
print
(
"
|---------|----------|----------|----------|----------|----------|----------|----------|
"
)
rcu_ana_pwr
=
apspu
.
APSPU_RCU2A_IOUT_R
*
apspu
.
APSPU_RCU2A_VOUT_R
rcu_dig_pwr
=
apspu
.
APSPU_RCU2D_IOUT_R
*
apspu
.
APSPU_RCU2D_VOUT_R
print
(
"
\n
APS power consumption
"
)
print
(
"
|---------|----------|
"
)
print
(
"
| BRD | Tot. BRD |
"
)
print
(
"
|---------|----------|
"
)
stri
=
"
|32x RCU2 | {:6.2f} W |
"
.
format
(
rcu_ana_pwr
+
rcu_dig_pwr
)
print
(
stri
)
for
brd_cnt
in
range
(
2
):
stri
=
"
| UNB2_{} | {:6.2f} W |
"
.
format
(
brd_cnt
,
brd_input
[
brd_cnt
])
print
(
stri
)
print
(
"
|---------|----------|
"
)
```
%% Output
FPGA power consumption
|---------|----------|----------|----------|----------|----------|----------|----------|----------|
| BRD nr. | Node nr. | Core pwr | ERAM pwr | TrRx pwr | TrTx pwr | TxHx pwr | IO pwr | Tot.FPGA |
|---------|----------|----------|----------|----------|----------|----------|----------|----------|
| 0 | 0 | 5.7 W | 0.1 W | 0.4 W | 0.1 W | 1.1 W | 0.3 W | 7.6 W |
| 0 | 1 | 1.8 W | 0.2 W | 0.3 W | 0.1 W | 1.2 W | 0.3 W | 3.7 W |
| 0 | 2 | 3.6 W | 0.1 W | 0.4 W | 73091088.0 W | 1.6 W | 0.4 W | 73091094.1 W |
| 0 | 3 | 2.8 W | 0.1 W | 0.4 W | 0.1 W | 1.3 W | 0.2 W | 4.8 W |
| 1 | 0 | nan W | nan W | nan W | nan W | nan W | nan W | nan W |
| 1 | 1 | nan W | nan W | nan W | nan W | nan W | nan W | nan W |
| 1 | 2 | nan W | nan W | nan W | nan W | nan W | nan W | nan W |
| 1 | 3 | nan W | nan W | nan W | nan W | nan W | nan W | nan W |
|---------|----------|----------|----------|----------|----------|----------|----------|----------|
Board power consumption
|---------|----------|----------|----------|----------|----------|----------|----------|
| BRD nr. | QSFP N01 | QSFP N23 |Switch 1v2|Switch PHY| clk pwr | FPGAs pwr| Tot. BRD |
|---------|----------|----------|----------|----------|----------|----------|----------|
| 0 | 5.18 W | 4.19 W | 2.11 W | 0.52 W | 2.21 W | nan W | 44.94 W |
| 1 | nan W | nan W | nan W | nan W | nan W | nan W | nan W |
|---------|----------|----------|----------|----------|----------|----------|----------|
APS power consumption
|---------|----------|
| BRD | Tot. BRD |
|---------|----------|
|32x RCU2 | 82.09 W |
| UNB2_0 | 44.94 W |
| UNB2_1 | nan W |
|---------|----------|
%% Cell type:code id:51d0443c tags:
```
python
max_temp
=
0
attr_names
=
unb2c
.
get_attribute_list
()
for
i
in
attr_names
:
if
"
TEMP
"
in
i
:
exec
(
"
value = unb2c.{}
"
.
format
(
i
))
for
brd_cnt
in
range
(
value
.
shape
[
0
]):
if
(
len
(
value
.
shape
)
>
1
):
for
node_cnt
in
range
(
value
.
shape
[
1
]):
if
(
max_temp
<
value
[
brd_cnt
][
node_cnt
]):
stri
=
"
Hottest UniBoard2 device: Board {} Item {} {} Temperature {:3.1f}°C, above ambient +{:3.1f}
"
.
format
(
brd_cnt
,
node_cnt
,
i
,
value
[
brd_cnt
][
node_cnt
],
value
[
brd_cnt
][
node_cnt
]
-
float
(
ambient_temperature
))
else
:
if
(
max_temp
<
value
[
brd_cnt
]):
stri
=
"
Hottest UniBoard2 device: Board {} {} Temperature {:3.1f}°C, above ambient +{:3.1f}
"
.
format
(
brd_cnt
,
i
,
value
[
brd_cnt
],
value
[
brd_cnt
]
-
float
(
ambient_temperature
))
print
(
stri
)
max_temp
=
0
attr_names
=
recv
.
get_attribute_list
()
for
i
in
attr_names
:
if
"
TEMP
"
in
i
:
exec
(
"
value = recv.{}
"
.
format
(
i
))
for
brd_cnt
in
range
(
value
.
shape
[
0
]):
if
(
max_temp
<
value
[
brd_cnt
]):
stri
=
"
Hottest RCU2 device: Board {} {} Temperature {:3.1f}°C, above ambient +{:3.1f}
"
.
format
(
brd_cnt
,
i
,
value
[
brd_cnt
],
value
[
brd_cnt
]
-
float
(
ambient_temperature
))
print
(
stri
)
max_temp
=
0
attr_names
=
apspu
.
get_attribute_list
()
for
i
in
attr_names
:
if
"
TEMP
"
in
i
:
exec
(
"
value = apspu.{}
"
.
format
(
i
))
stri
=
"
Hottest apspu device: {} Temperature {:3.1f}°C, above ambient +{:3.1f}
"
.
format
(
i
,
value
,
value
-
float
(
ambient_temperature
))
print
(
stri
)
max_temp
=
0
attr_names
=
apsct
.
get_attribute_list
()
for
i
in
attr_names
:
if
"
TEMP
"
in
i
:
exec
(
"
value = apsct.{}
"
.
format
(
i
))
stri
=
"
Hottest apsct device: {} Temperature {:3.1f}°C, above ambient +{:3.1f}
"
.
format
(
i
,
value
,
value
-
float
(
ambient_temperature
))
print
(
stri
)
```
%% Output
Hottest UniBoard2 device: Board 0 UNB2_POL_SWITCH_PHY_TEMP_R Temperature 42.6°C, above ambient +21.0
Hottest RCU2 device: Board 3 RCU_TEMP_R Temperature 31.8°C, above ambient +10.2
Hottest apspu device: APSPU_RCU2D_TEMP_R Temperature 28.2°C, above ambient +6.6
Hottest apsct device: APSCT_TEMP_R Temperature 24.4°C, above ambient +2.8
%% Cell type:code id:7f18e187 tags:
```
python
``
`
%%
Cell
type
:
code
id
:
d4f54175
tags
:
```
python
#
# Print the available attributes
#
print("Atttibutes of pcc are:
\n
********
*
")
attr_names = apspu.get_attribute_list()
for i in attr_names:
print(i)
# exec("value = print(i, d.{})".format(i))
print("
********
*
\n
")
```
%% Output
Atttibutes of pcc are:
*********
version_R
opcua_missing_attributes_R
APSPUTR_I2C_error_R
APSPUTR_monitor_rate_RW
APSPUTR_translator_busy_R
APSPU_FAN1_RPM_R
APSPU_FAN2_RPM_R
APSPU_FAN3_RPM_R
APSPU_LBA_IOUT_R
APSPU_LBA_TEMP_R
APSPU_LBA_VOUT_R
APSPU_PCB_ID_R
APSPU_PCB_number_R
APSPU_PCB_version_R
APSPU_RCU2A_IOUT_R
APSPU_RCU2A_TEMP_R
APSPU_RCU2A_VOUT_R
APSPU_RCU2D_IOUT_R
APSPU_RCU2D_TEMP_R
APSPU_RCU2D_VOUT_R
State
Status
*********
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment