STARC ABL Software Harry Olar Software Engineer
System architecture • 8 250 KW Inverters • 2 PCs • 4 Embedded Linux Devices (PowerDNA)
GUI (Graphical User Interface ) • Controls Motors • Controls Relays • Saves Data • Shows Relay Feedback • Displays Data • Runs Flight Profiles • Software written in C#
Embedded Linux Boxes • Firmware written in C • One for each wing (Starboard, Port and Tail) • A Master that talks to all wing units • Contains the ARINC664 and CANbus interfaces • Allows access through SSH, SFTP
Inverter Setup and Feedback • Rinehart GUI • Allows changing the limits( speed/torque rate) • Display the raw data
Communication • Protocols UDP,CANBus,ARINC664 • Over optical fiber • Redundant for data and commands
CANBus Communication (Controller Area Network )Communication • Used because of the Inverter • CANBus is used mainly by auto industry • 1 Mb/s • Sends Telemetry • Receives commands
ARINC 664 Protocol • Used by Airbus 380 ,Boeing 787 • Full duplex • Redundant • Deterministic • Virtual links
Motor Control • Ability to use flight profiles • (saved as excel files) • Variable command control rate (normally 50 Hz) • Torque or Speed modes Chart Title 1600 1400 1200 1000 800 600 400 200 0 1 1487 2973 4459 5945 7431 8917 10403 11889 13375 14861 16347 17833 19319 20805 22291 23777 25263 26749 28235 29721 31207 32693 34179 35665 37151 38637 40123
Data collection • Collect all inverter and motor dcBusCurrent1 250 telemetry • Collected data is used to verify 200 the simulation 150 • Saved as Excel csv format 100 • 50 samples/second 50 0 1 944 1887 2830 3773 4716 5659 6602 7545 8488 9431 10374 11317 12260 13203 14146 15089 16032 16975 17918 18861 19804 20747 21690 22633 23576 24519 25462 26405 27348 28291 29234 30177 -50
Software Unit Testing • Using MinUnit Framework • RUNNING rinehartTelemetryUpdate_can0xA6_inverter_unit_test UNIT TEST • RUNNING rinehartTelemetryUpdate_can0xA7_inverter_unit_test UNIT TEST • The smallest testable part of an • RUNNING rinehartTelemetryUpdate_can0xA8_inverter_unit_test UNIT TEST application • RUNNING rinehartTelemetryUpdate_can0xA9_inverter_unit_test UNIT TEST • RUNNING rinehartTelemetryUpdate_can0xAA_inverter_unit_test UNIT TEST • Unit testing finds problems early • RUNNING rinehartTelemetryUpdate_can0xAB_inverter_unit_test UNIT TEST • RUNNING rinehartTelemetryUpdate_can0xAC_inverter_unit_test UNIT TEST • RUNNING rinehartTelemetryUpdate_can0xAD_inverter_unit_test UNIT TEST • RUNNING rinehartTelemetryUpdate_can0xAE_inverter_unit_test UNIT TEST • RUNNING rinehartTelemetryUpdate_can0xAF_inverter_unit_test UNIT TEST • Software version 115 software major: 1 Software version 115 software minor: 15 ALL TESTS PASSED • Tests run: 41 .It took 0.066000 ms to finish the tests. • [centos@localhost Unit_tests_x86]$
Code Statistics(lines of code) • • Firmware GUI • • ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- • • Language files blank comment code Language files blank comment code • • ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- • • C 28 2192 1673 5885 XML 25 193 0 25356 • • C/C++ Header 24 262 353 572 C# 63 2716 2738 11204 • • make 8 70 0 191 HTML 1 32 0 1811 • • XML 8 1 0 114 MSBuild script 3 0 21 779 • • YAML 1 0 0 21 ------------------------------------------------------------------------------- • • Bourne Shell 1 3 3 3 SUM: 92 2941 2759 39150 • • ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- • • SUM: 70 2528 2029 6786 • -------------------------------------------------------------------------------
Error handling • Communication Errors • Inverter Errors • Timeout Errors
Future Work • Add computer control redundancy • Add generator redundancy
Questions
Recommend
More recommend