Changelog¶
0.6.0 2020-10-15
[Feature] #91: Implement additional commands for powering up/down hall sensors, and setting the open/closed loop. In the process,
Positionerwas cleaned and streamlined. Most functions now raise aPositionerErrorif they fail, instead of failing silently with a log message.[Feature]: Allow to skip cogging calibration.
:support`-` Wrap message from
CANNetBusin custom message class with additional__slots__. This fixes a deprecation introduced inpython-can>=3.3.4.[Bug]: Initialise FPS during
upgrade-firmware. If the FPS is not initialised and a layout is not loaded there is no way for the upgrade script to know what positioners may be connected or their statuses.[Bug]: Fix starting status server.
[Bug]: Do not pass context to actor commands.
[Support]: The default logging level for the console is not warning. In the CLI, the logging level can be adjusted using the
-vflag.-vwill set the logging level toINFO;-vvwill set the level toDEBUG;-vvvwill also set the CAN logging level toDEBUG.[Support]:
motor_stepsandtime_stepare now defined in the configuration file underpositioner.[Support] #90: Remove the option to initialise datums in
Positioner.[Support]: Update
sdss-driftto0.1.5to fixpymodbusimport.[Support]: Remove QA database features since they need a full rethink.
[Support] #89: Implement daemon.
0.5.2 2020-07-31
[Support]: Adapt actor system to use
CLU>=0.3.0.
0.5.1 2020-07-29
[Feature]: Add actor command
infoto report the configuration file and version.[Feature] #86: Allow to pass a custom configuration file in the CLI using the flag
-c/--config.
0.5.0 2020-07-20
[Feature] #75: Implement trajectories using SYNC line.
[Feature] #76: Implement calibration commands and routines.
[Feature] #51: Set up an asyncio exception handler and make the
Polleruse it if there is a problem with the callback.[Feature] #62: Add a new
Trajectoryclass as a low-level method to send trajectories.[Bug] #72: (also #73) Fix UIDs not being returned to the pool in some cases, which emptied it after a while.
[Bug] #64: Fixed WAGO disconnects by increasing the timeout of the hardware.
[Support] #83: Use GitHub workflows.
[Support] #70: Better documentation for firmware update.
[Support] #21: (and several associated issues) Remove WAGO and use external drift library.
[Support]: Rename
cli.pyto__main__.py.[Support] #61: Stop the positioners before existing if CLI receives a SIGINT, SIGTERM, or SIGHUP.
[Support]: Retrieve configuration from
$SDSSCORE_DIR/configuration/actors/jaeger.yamlor from~/.config/sdss/jaeger.yml.[Support]: Adapt to using CLU>=0.2.0.
[Support] #68: Use
sdsstoolsinstead of core utilities. Some clean-up of the packaging files.[Support] #67: Improve initialisation time by making sure all commands after the initial
GET_FIRMWARE_VERSIONknow how many positioners are connected and don’t time out.
0.4.2 2019-11-22
[Feature] #59: Add an
engineering_modeflag toFPS(can be toogled using thejaeger --danger) flag to override most safety warnings for debugging.Fix call to
Positioner.gotofrom CLI.Unless
immediate=Trueis passed toPoller.set_delay, waits for the current task to finish.
0.4.1 2019-11-21
[Feature] #56: Move time for go to moves is calculated and reported.
[Feature] #57: Added
FPS.movingandPositioner.movingattributes to determine whether it is save to move the FPS.Recognise and deal with CAN@net devices already in use.
Very significant rewrite of how messages and replies are matched. Now there is a pool of unique identifiers. Each message gets assigned a UID from the pool corresponding to its
command_idandpositioner_id. When a reply is received, it is matched based oncommand_id,positioner_id, andUID. At that point the UID is returned to the pool. Broadcast messages always receive the reservedUID=0. This means that two broadcast of the same command should not be running at the same time or replies could be misassigned.send_trajectorynow raises exceptions on error.Significant clean-up of how pollers are used.
Support versions
04.00.XXand04.01.XXof Tendo withPositionerStatusV4_0andPositionerStatusV4_1maskbits.
0.4.0 2019-11-19
[Feature] #54: Add firmware upgrade command to actor.
[Feature] #49: Positioner status and position polling is now done from the FPS instead of from each positioner.
[Feature] #13: Abort trajectory and lock the FPS if either a collided status is detected in a positioner or if command 18 is received from the CAN network.
[Feature] #46: Implement a QA database for moves.
[Bug] #53: Fix issues dealing with positioners that in the layout but not connected.
Fix bug due to use of unsigned integers when passing a negative position.
Add
SetCurrentcommand to actor.
0.3.0 2019-11-13
[Feature] #29: Output WAGO status on a timer.
[Feature] #37: Support power cycling a PLC.
[Feature] #40: Allow to instantiate an FPS without a WAGO connection.
[Feature] #12: Initial but fully functional implementation of TCP/IP actor.
[Feature] #24: (with #28) Initial implementation of WAGO PLCs and associated actor commands.
[Bug] #39: Use
loop.create_taskinstead ofasyncio.create_taskinPoller, which seems to fix using jaeger in IPython.Add
is_bootloaderto output ofstatuscommand.Modify
jaegerCLI command to useasync defandawait.Add command
SetCurrent.Change file layout to include a positioner ID.
[Support] #22: Moved some configuration parameters under
positioner.
0.2.1 2019-06-29
Fix
MANIFEST.innot including the requirements files.
0.2.0 2019-06-29
[Feature] #9: Initial implementation of the
CAN@netbus.[Feature] #1: Added
FPS.abortmethod to cancel all trajectories.[Feature] #3: Add
skip-erroroption tojaeger demo.[Bug] #11: Fix endianess of firmware version.
Renamed
interfaces -> profilesin configuration.Added initial actor features.
Improved logging system.
Load layout when
FPSis instantiated.Expose
Positioner.set_positionas a public method.[Bug] #2: Fix double setting of status when command times out.
First complete pass at the documentation.
Fixed bug that would raise an exception during initialisation if no positioner had replied to
GET_STATUS.Fixed bug in which the positions for
SetActualPositionwere being sent in degrees instead of in steps.Added
homecommand tojaegerCLI.
0.1.0 2018-10-10
Basic framework.
Added
FPS,JaegerCAN, andPositionerclasses.Implemented
Commandclass and subclasses for all available commands.Added maskbits based on the
IntFlagenumeration.Added several helpers (
AsyncQueue,Poller,StatusMixIn)Added utilities to convert from bytes to int and vice versa, and to build and parse identifiers.
Added convenience function to upgrade firmware.
Added CLI interface.
Initial documentation.