pyXede
pyXede is a programming tool for Xede piggyback engine computer
available from ChipTorque in
Australia and Vishnu Performance Systems in
the USA. pyXede is written in python and provides access to the
high-speed datalogging facilities of the Xede unit. As a result pyXede
should allow one to datalog from a variety of hardware platforms and
software environments including Linux and Mac which are not supported
by ChipTorque's official software.
Requirements:
- An Xede unit and cabling
- Python 2.x or greater
- pySerial
- Gnuplot
License:
Pyxede is available under the GNU General Public License.
Downloads: Source
Downloads are now available from the sourceforge file release system:
http://sourceforge.net/project/showfiles.php?group_id=144766
CVS access to the development code is also available:
http://sourceforge.net/cvs/?group_id=144766
Installation Instructions:
Documentation:
Preliminary API documentation is available here
Updates:
- 8-12-2005: Version 1.5 is about ready to roll. First things first,
this is a DEVELOPMENT release. Don't expect everything to work the way it
is supposed to yet. There's a bunch of buttons/checkboxes that don't do
anything yet. There's options enabled when they shouldn't be. It's not
difficult to make this release of the software behave erratically. So,
changelog...oh boy.
- Most prominant is the new support for Vishnu's "SMART" information. If
the hardware is available, then information like knock and wideband AFR
can be viewed and logged. If not, then you just get boring flat lines.
- There's an integrated debugging and scripting console, aptly named
the "Master Control Program". Yes, the MCP has returned. What am I talking
about, you ask. Go watch Tron you young whipper-snapper.
- The Road dynomameter is vastly improved. First, there is now a
central list of all currently loaded runs. This list also has an integrated
plot of the currently selected run -- not just power/torque either. The
plot displays AFR, knock, and timing info as well. Cool huh? In addition
the dyno list will let you do all kind of swank analysis on your run. You
can Save/Load. Import from basically any imaginable type of CSV file. You
can trim data off the ends of the run. You can trim above a user-definable
threshold. You can smooth power plot using a variety of different methods:
SavGol, Moving window, Box, Nearest Neighbor. You can even superimpose plots,
although this still requires the use of an external program, GNUPlot.
- When using the RoadDyno menu option, the generated run now gets placed
in the dyno list after the run is complete rather than pop up in a new
managment window. In addition to power/torque the RoadDyno dialog will
now allow the user (you!) to choose other information you want logged
such as AFR and knock. Here's the kicker. This information is plotted
real-time when the run is in progress.
- 6-22-2005: Version 1.0 has been marked stable. Use and
enjoy. Development of the 2.x series has begun but is not usable
currently. Added win32 py2exe build.
- 6-14-2005: I have a second prerelease of 1.0 available.
- Added support for logging TPS in/out which somehow got left out
when creating the logging dialogs.
- Fixed bug that caused FreqMAFIn not to be logged.
- Removed shell reference to /usr/local/bin/env. This was part of
my arcane unix configuration and is not needed.
- Highspeed logging marker code is better which should facilitate
much better logging and communication errors.
- Highspeed logging now writes labels to logs.
- 6-9-2005: Posted is the first prerelease of pyXede
1.0. For the next little while, I will work only on fixing bugs
found in this series of releases in order to get the code ready to
mark stable. Obviously, this is the one that everybody should be
using. Changes:
- Fixed a major threading bug that caused the GUI elements to
become corrupted. On slower machines this would causes the application
to hang.
- Application now "remembers" settings (such as comm port) in the
file pyxede.cfg. You're welcome david. :)
- Former releases removed, from dyno runs, samples that had
identical RPM values. The theory was that these samples contained no
addition information that couldn't be implied from the samples around
them. This is statistically invalid. No samples are dropped now.
- 6-8-2005: Whew doggies, two releases in a single day. 0.9 is
above and here's my reasoning for releasing a new version so
quickly. After releasing 0.8 this morning, I started working on
implementing a different logging mechanism that allows for much faster
logging. To my utter surprise, the code worked first time out. I was
expecting 5+ hours of coding, and it was all ready within an hour. So
enjoy.
Changes:
- HighSpeedLog function added to the pyXede API. It allows sampling
3-4 values at 100hz and 8-10 at 50hz. Obviously this is much faster
than the previous method of logging. However the old method is still
available because it has some advantages and may be preferrable in
some cases.
- Miscellaneous clean ups and dead code removal
- High speed logging has been enabled from the GUI
- 6-8-2005: 0.8. First and most importantly, the timing function has
been replaced on windows with the more accurate clock()
function. This, I believe, was a major source of grief for people
using pyXede on windows. those pesky divide-by-zero and sample
dropping errors should be gone. On all other system, the old time()
function will still be used -- it is way better anyway. Other notables:
- Saving and loading from places you shouldn't now displays an
error dialog rather than just throwing an exception in the console.
- A couple of releases back, I broke the feature that displays the
active bank in the status bar. Fixed.
- Samplerate is now displayed during data logging.
- The menu's are a tad (a metric tad) prettier.
- The new "High Speed" logging support API has been added, but it
doesn't work yet.
- 6-6-2005: 0.7 is here, apologizing for 0.6. 0.6 Has some crazy bugs that cause it to be
unreliable. Most importantly, the dyno measurements you get are
wrong (thanks David). The RPM levels are based off timing info, not real RPM. Notable
changes include the following:
- Dyno data collection is now fully threaded. The crazy locking up
errors should be alleviated.
- Update to the main screen from the engine monitor has been
reworked to be 'thread proper'. This was causing the GUI to hang in
what seemed to be unrelated locations.
- Doc strings are available for gnuplot.py and the directory
docs Plotting should work on windows 2000, although it remains untested
- 6-4-2005: Added pydoc generated API doc webpages.
- 6-3-2005: 0.6 is ready. First and foremost, the road dyno system
is much improved. It's threaded and a dialog is added that lets you
monitor time and rpm level. Next, plotting is cleaned and prettier,
not significantly better, but prettier. Plotting is also more
configurable in the settigs menu. Enjoy.
- 6-1-2005: 0.5 just landed. Hey, we're halfway to 1.0 -- on the
number line anyway. Quite a few changes and cleanups. Some things that
didn't work before work now. :) I'm so vague. To clarify, all plotting
is still done with GNUPlot, although fully native wxWindows plotting
is planned.
- 5-31-2005: 0.4 released. Support added for saving, loading,
and interpolating dyno plots. Lots of cleanups. DynoRun object
added.
- 5-20-2005: Release 0.3 available. wxWindows graphical user
interface built and workable. Datalogging to a file supported.
- 5-17-2005: Release 0.2 available. Road dyno code is pretty much
workable. I've written interfaces to allow outputting through gnuplot
as well as dyno plot smoothing/interpolating/curve fitting. There's
also a wxWindows widget, RPMPlot, that should allow for pretty good
realtime plotting. Notice that the wxWindows GUI is not working
yet.
- 5-11-2005: Release 0.1 added.
Screens:
A typical dyno plot |
 |
Preliminary datalogging screenshot |
 |
Road Dyno screenshot (version 0.6) |
 |
It works on windows too, here's proof. |
 |
Thanks:
Thanks to Scott Gifford for assisting with weird use of serial
devices. Thanks to Dustin at Vishnu for giving me an idea about how
fast the Xede can sample. Thanks to the guys at ChipTorque for creating the Xede and
their assistance in understanding the communication protocol.
Copyright 2005 Donour Sizemore, donour@cs.uchicago.edu