Version History¶
v1.5.12 (2025-06-09)¶
New Features¶
Bug Fixes¶
Improve the unit test. (OSW-498)
v1.5.11¶
Fix the import of version.
v1.5.10¶
Improve the
setup.py
to support the version of Python 3.11 and 3.12.
v1.5.9¶
Remove the sleep times in MockCommand and MockPowerSystem.
Refactor the checking of command status in Controller.
v1.5.8¶
Remove the ts_idl.
v1.5.7¶
Send the ILC modes in the
MockServer._send_welcome_message()
.
v1.5.6¶
Update the LIMIT_FORCE_TANGENT_CLOSED_LOOP in
constant.py
to be 5800.0 N
v1.5.5¶
Update the
ErrorHandler.__init__()
to have the optional argument to read the error code file.
v1.5.4¶
Check the temperature sensor if the temperature LUT is applied.
v1.5.3¶
Add the
Controller.get_ilc_modes()
andController.set_ilc_modes_to_nan()
.Fix the bug of
MockCommand.get_inner_loop_control_mode()
andMockCommand.set_inner_loop_control_mode()
that the ILC is related to the communication power instead of the motor power.
v1.5.2¶
Send the power status in the welcome message.
v1.5.1¶
Add the functions to get the power status.
v1.5.0¶
Add the ILC_READ_WARNING_ERROR_CODES in
constant.py
.Add the
MockMessageEvent.write_bypassed_actuator_ilcs()
and update theMockServer._send_welcome_message()
.Allow the bypass of temperature LUT calculation in
MockControlClosedLoop.calc_look_up_forces()
.Update the
Controller
class to have the bypassed_ilcs attribute.Make the function of
Controller.switch_force_balance_system()
to be robust.
v1.4.6¶
Update the version of ts-conda-build to 0.4 in the conda recipe.
v1.4.5¶
Use the mermaid to replace the PlantUML.
v1.4.4¶
Improve the force-control-loop.rst.
Add the hardpoint-compensation.rst and lut-gravity.rst.
v1.4.3¶
Update the enum DigitalOutput bit 5 to be ClosedLoopControl.
v1.4.2¶
Change the TANGENT_LINK_LOAD_BEARING_LINK and TANGENT_LINK_NON_LOAD_BEARING_LINK to be consistent with the controller.
v1.4.1¶
Add the force-control-loop.rst, calc-pos-ims.rst, and tan-fault-det.rst.
v1.4.0¶
Update the mock module to use the MockControlLoop.
Add the MockInPosition class.
Improve the rigid body movement.
v1.3.0¶
Improve the doc string of
MockControlClosedLoop.calc_hp_comp_matrix()
.Fix the
MockModel._uniq_ilc_status_generator()
.Add the MockPlant, MockControlLoop, SingleBiquadraticFilter, BiquadraticFilter, SimpleDelayFilter, MockDeadbandControl, and MockGainSchedular classes.
v1.2.0¶
Improve the readibility of the
MockControlClosedLoop.calc_temp_inv_matrix()
.Improve the architecture and performance.
v1.1.7¶
Add the
MockControlClosedLoop.update_hardpoints()
andMockCommand.set_hardpoint_list()
methods.Use the corrected angle in
MockModel._calculate_force_error_tangent()
.Fix the
MockModel._simulate_zenith_angle()
for the calculation of zenith angle.
v1.1.6¶
Move the
check_hardpoints()
andselect_axial_hardpoints()
to utility.py fromMockControlClosedLoop
class.
v1.1.5¶
Update the
.ts_pre_commit_config.yaml
.Calculate the dynamic kinetic matrix.
Calculate the command pre-filter, delay filter, and force cotrol filter parameters.
v1.1.4¶
Remove the legacy code.
Use the enums in ts_xml instead of ts_idl.
v1.1.3¶
Use the enums in ts_idl and remove the duplication in enum.py.
Publish the same telemetry for CSC and EUI.
v1.1.2¶
Move the
TabAlarmWarn._calc_enabled_faults_mask()
in ts_m2gui toErrorHandler.calc_enabled_faults_mask()
.Add the try-catch loop when processing the event and telemetry.
Fix the event of interlock.
v1.1.1¶
Fix the typo of enum: DigitalInput.
Add the constant: OUTLIER_INCLINOMETER_RAW.
Fix the bug of
Controller.set_ilc_to_enabled()
for the unknown state.Add some auxiliary functions to Controller class.
v1.1.0¶
Migrate the functions from ts_m2gui.
v1.0.0¶
Adapt the ts_tcpip v1.2.0.
v0.12.0¶
Fix the bug of external elevation angle, which should have the same coordinate system as the look-up table angle.
The related error code is added.
* Support the control parameters in MockModel class.
* Fix the MockCommand.clear_errors()
for GUI.
* Fix the MockModel.fault()
that the error codes might be bypassed.
* Fix the deprecation warning in test_tcp_client.py to access the reader and writer of BaseClientOrServer in ts_tcpip module directly.
v0.11.0¶
Migrate the functions to Controller class from ts_m2.
v0.10.7¶
Use the reversed direction of hardpoint correction in
MockControlClosedLoop
class.
v0.10.6¶
Add the
MockMessageEvent.write_configuration_files()
and theMockMessageEvent.configuration_file
attribute.Allow the controller to set the configuration file.
v0.10.5¶
Adapt the behaviour that the M2 cell LabVIEW project only reports the summary faults status instead of error code.
Simulate the enabled faults mask.
v0.10.4¶
Fix the rz calculation in
MockControlClosedLoop.hardpoint_to_rigid_body()
.Add the
MockModel.is_force_error_tangent_out_limit()
and do the related check inMockServer._check_error_force()
.
v0.10.3¶
Add the
MockCommand.report_interlock()
to report the interlock event.Update the
MockServer._send_welcome_message()
to send the lost connection error at welcome message.
v0.10.2¶
Add the
Controller.set_control_parameters()
to set the control parameters of closed-loop controller (CLC).Do not check the communication power status (True/False) in
Controller._callback_check_power_status()
because sometimes, the cRIO simulator might put it on even though it should be off theoretically.Allow to change the status of bit value of digital output.
Use the internal annotation instead of importing the typing module.
v0.10.1¶
Adapt the .ts_pre_commit_config.yaml.
v0.10.0¶
Add the ErrorHandler class and support the reading of summary faults status.
Update the MockErrorHandler class to be inherited from ErrorHandler.
In the Python simulator, when the motor power is on, the event of summary faults status will be sent to simulate the event from cell controller.
Update the
MockControlClosedLoop.is_actuator_force_out_limit()
to have the option of using the measured forces.Only trigger the error of limit switch if the open-loop maximum is enabled.
Allow the bypass of state checking in
Controller.clear_errors()
.
v0.9.7¶
Support the mypy.
v0.9.6¶
Fix the bug to run the simulation mode with mock server on summit.
v0.9.5¶
Adapt black v23.1.0.
v0.9.4¶
Calculate the rigid body position based on the hardpoint displacements in
MockModel
.Put the
MockModel.handle_position_mirror()
as a placeholder at this moment.
Need to translate the forward modeling of hardpoint correction first before the realization of this function.
v0.9.3¶
Increase the default timeout from 10 sec to 20 sec in
Controller.power()
.Add the
MockCommand.load_configuration()
andController.load_configuration()
.
v0.9.2¶
Calculate the actuator displacements based on the rigid body movement.
Calculate the rigid body position based on the hardpoint displacements.
v0.9.1¶
Remove the root workaround from Jenkinsfile.
v0.9.0¶
Adapt the ts_tcpip v1.0.0:
Use the LOCALHOST_IPV4 instead of LOCAL_HOST.
Put the
MockServer._connect_state_changed_callback_command()
andMockServer._connect_state_changed_callback_telemetry()
to be asynchronous.
v0.8.2¶
Calculate the hardpoint compensation matrix instead of reading the related file.
v0.8.1¶
Update the
MockCommand.switch_force_balance_system()
to drop the TelemetryOnly from ClosedLoopControlMode event.Reports digital input & output, force balance system status, and open-loop maximum limit when
MockCommand.power()
is called.
v0.8.0¶
Support to reset the actuator forces and steps.
Simulate the inner-loop controller.
Set the closed-loop control mode.
Set the inner-loop control mode.
v0.7.0¶
Move the constants of force limit to submodule.
Add the MockPowerSystem class.
v0.6.2¶
Update the temperature offset.
v0.6.1¶
Calculate the temperature inversion matrix.
Add the status to enableOpenLoopMaxLimit command.
v0.6.0¶
Add the MockErrorHandler class.
Add the enums of LimitSwitchType and MockErrorCode.
Add the following events:
openLoopMaxLimit
limitSwitchStatus
v0.5.2¶
Support the EUI specifc items:
Switch digital output command.
Configuration event.
Tangent force error telemetry.
Telescope mount assembly (TMA) inclinometer angle telemetry.
Raw power status telemetry.
v0.5.1¶
Slow down the pace to udpate the actuator steps according to forces in MockServer to decrease the CPU usage.
v0.5.0¶
Add the ControllerCell class.
v0.4.4¶
Ignore and log the errors when run the open-loop control or script.
v0.4.3¶
Properly reports cause when connecting to non-existing host.
Increase test timeouts as running those on TSSW Jenkins takes more time than expected (due to limited container resources).
v0.4.2¶
Add the .pre-commit-config.yaml.
Support the isort.
v0.4.1¶
Fix the conda build.
v0.4.0¶
Add the MockControlClosedLoop class.
Use the TS_CONFIG_MTTCS_DIR to get the configuration files.
v0.3.0¶
Add the MockControlOpenLoop class.
Support the mock commands of engineering user interface (EUI):
Set mirror home
Move actuators (under the open-loop control)
v0.2.0¶
Reorganize the project to have the mock module.
Add the MockScriptEngine class.
Publish the documents.
Support the mock commands of engineering user interface (EUI):
Switch command source
Run script
Reset breakers
Reboot controller
Enable open loop maximum limits
Save mirror position
v0.1.0¶
Migrate the codes from ts_m2.
Rename Model class to Controller class.