ISISComputingGroup / IBEX

Top level repository for IBEX stories
5 stars 2 forks source link

Beckhoff: dynamically alias axes if axes_num > 8 #6865

Closed rerpha closed 2 years ago

rerpha commented 3 years ago

As a developer I would like to display more than 8 axes per controller on the ToM for a Beckhoff if needs be. This is required for SANS2D as their stober drives that are replacing the baldors/guides total to 12 axes on one controller.

Acceptance Criteria

Extra Information

We have had some discussions, some documented in https://github.com/ISISComputingGroup/IBEX/issues/6755 and some in-person, and we think the best way of implementing this would be to:

rerpha commented 2 years ago

For now we can work around this like so: https://github.com/ISISComputingGroup/ibex_developers_manual/wiki/Beckhoff#if-a-controller-has-more-than-8-axes

rerpha commented 2 years ago

Right, i'm not sure I have the skills to do this, and I'm thinking that whoever picks it up may do but this will take some effort to get working. What I'm thinking of doing for now is just assuming there is contiguous space after setting a beckhoff to a motor controller, and wrap around after 8.

for example for a beckhoff with 12 drives:

MTR0101-08 are the first 8 axes MTR0201-04 are the last 4 axes

this is something that can be done in lua fairly easily so I think it's a far more time effective solution as I haven't done enough GUI work to jump in and try and make this future proof for all controllers. I can't see Galils, SM300s etc ever needing that functionality so although it would be nice to make this generalised I can't really see any real world benefits besides the obvious needing to have no more controllers after the beckhoff MTRCTRL.

rerpha commented 2 years ago

PRs:

Have also updated https://github.com/ISISComputingGroup/ibex_developers_manual/wiki/Beckhoff#if-a-controller-has-more-than-8-axes

To test: set up BeckhoffTestRunner as described here: https://github.com/ISISComputingGroup/ibex_developers_manual/wiki/Beckhoff#testing Note that this will try and simulate a controller with 9 axes, so on master the 9th axis will not show up in the table of motors.

check out ioc\master, no need to make as this code is called at IOC startup, and run beckhofftestrunner. There is a test that should check if the motor is aliased.

FreddieAkeroyd commented 2 years ago

Also need to execute win8settick.bat in C:\TwinCAT\3.1\System to be able to run emulator - have updated wiki

FreddieAkeroyd commented 2 years ago

Tests seem to fail with

TWINCATCONFIG set from environment as C:/devel/BeckhoffTestRunner/tests/../PLC_solution/solution/tc_project_app
invalid TPY file given: C:/devel/BeckhoffTestRunner/tests/../PLC_solution/solution/tc_project_app/tc_project_app.tpy
Failed to open input C:/devel/BeckhoffTestRunner/tests/../PLC_solution/solution/tc_project_app/tc_project_app.tpy.
lua: stdin:18: attempt to call a nil value (field 'countdbgrep')
stack traceback:
    stdin:18: in function 'twincat_stcommon_main'
    (...tail calls...)

should build.bat generate a typ?

FreddieAkeroyd commented 2 years ago
Building without UI
WARNING: Folder not found: C:\devel\BeckhoffTestRunner\\test_config\deviceXmls\, No devices will be loaded
IO XML Import complete
NC Parameter import complete
PLC declarations updated
WARNING, application folder C:\devel\BeckhoffTestRunner\\test_config\plc\applications does not exist
Application Specific PROGs imported
Axis PROGs imported
PROG action updated
PLC compiled
Import mappings complete
rerpha commented 2 years ago

Tests seem to fail with

TWINCATCONFIG set from environment as C:/devel/BeckhoffTestRunner/tests/../PLC_solution/solution/tc_project_app
invalid TPY file given: C:/devel/BeckhoffTestRunner/tests/../PLC_solution/solution/tc_project_app/tc_project_app.tpy
Failed to open input C:/devel/BeckhoffTestRunner/tests/../PLC_solution/solution/tc_project_app/tc_project_app.tpy.
lua: stdin:18: attempt to call a nil value (field 'countdbgrep')
stack traceback:
  stdin:18: in function 'twincat_stcommon_main'
  (...tail calls...)

should build.bat generate a typ?

Yes it should. This may be to do with #6817 - it should have spat out a .tpy file in plc_solution\mc_project_app\

Did you do a recursive submodule init from BeckhoffTestRunner?

FreddieAkeroyd commented 2 years ago

Yes I had tried that. What seemed to work was deleting the repository and doing an initial git clone --recursive . Had to try clone a few times as got intermittent failures to bitbucket, is that still the correct place for the ESS PLC solution? An immediate build.bat and this then gave me a tpy. that it loads, but it complains about channel names too long. Now seems to pass, but I am concerned about the channel name issues - it looks like it is trying to creating lots of pvs that are too long? There are also errors in the ioc log like

2021/12/24 15:13:30.504 Failed to poll axis 1: PV TE:NDW2127:ASTAXES_2:STSTATUS-BENABLED in alarm with status 17 and severity 3

is that expected?

rerpha commented 2 years ago

yes, i get it whenever i start TWINCAT, not sure why, seems to remedy itself within a few seconds.

bitbucket is still the location for the ESS' tc_mca_std_lib - https://bitbucket.org/europeanspallationsource/tc_mca_std_lib

Yes some of the things in the tpy file/axes struct have too long names, but I don't think the variables are anything important