If you would like to evaluate strings for program flow based on the text the TEST instruction is a possible option.
Technical reference manual
RAPID Instructions, Functions and Data types
Data types - Errnum
RW Options, could, possibly, maybe have their own.
First of all, good luck! Incorrect commutation is an invitation to disaster, including destroyed motors and other equipment.
Based on a hasty review of different era ABB robots' manuals it may only be possible to commutate external axes. From a C+ manual:
The robot motors are commutated on delivery.
Commutation is only for external axes.
For more information about commutation see the External Axis Manual.
Older than C+ look in the manipulator's Product Manual.
1st, there isn't some third party cable, or cable reel, used is there? If so try an ABB cable.
2nd, if you want to reflash the pendant as DAMO suggests, have someone cycle power to the control WHILE the stop AND programmable button number 1 are held down. It is suggested to hold the two buttons down until red text indicates
Image is not present. Downloading start.
Release the buttons and wait for the pendant to complete the reflash. Alternatively the reset button on the back of the pendant may be pushed whilst holding stop AND programmable button number 1 down and wait for the red text.
If you want to keep you main routine neat & tidy you could add a call to a housekeeping routine at the top of the main routine where you can construct the interrupts as needed.
Here's another programming approach:
WHILE DInput(di_yourIO) = 0 DO
Moves & stuff
Could mirroring be used as part of a work-around?
More in the Rapid Ref Manual.
It's been many years since touching an S4C+.
Have you tried replacing printed circuit board backplanes, or the entire PC unit?
Take a look at system parameters Automatic Loading of Modules for the Control (sys.cfg — I think) and see if there is a module getting loaded during booting causing the ambiguous condition.
Here's a quick way below.
PERS num nAxis6Val:=0;
I am not certain how values less then zero will be accounted for as a grouped input.
It's been a long time since I touched an S4C control, so the suggestion may be off-base.
Have you tried pressing the Misc key then look for the text Production?
Over the years I learned, I am not certain of the reliability of my learning , that when errors were encountered.
there was a problem with the measuring system. I recall that the sys halt stuff was a problem in the axis computer, cabling, or SM Board.
Also, this text
indicates a hardware fail. (Good old 8001 code, in S3s that was REALLY bad)
Perhaps SKOOTER or LEMSTER will weigh in.
Perhaps contact with ABB is order to ensure the PROMS being used are correct.
It looks like someone was kind enough to send you ABB WebConfig info about your system. The mention of S4 TopHat indicates this was a GM robot at some point.
Is the positioner integrated with the ABB control (if yes, HOW is it integrated?), what version of control, what version of RobotWare?
It's difficult to supply answers of any value without that information, as a start.
S4, not the ancient days, but creeping into the description of 'olden' days.
Not sure it is dependent on robotware (or whatever the REAL early '...ware' was named) but take a look in the system motor calibration parameters for fields indicating Valid comm (commutation) Offset and Valid cal (calibration) Offset and ensure the YES/NO fields are YES.
There are both fully licensed and disabled licensed RS in this facility. Only the fully licensed version displays the RAPID Call Stack.
If you have the fully licensed version and you don't see the call stack you may be able to recover it by invoking the Default Layout.
PS — I think %"ProcName"% is referred to as late binding.
Make sure RS is on the RAPID tab. That's the only place I see it.
If you right click on the RAPID Call Stack tab (as can be done to LOTS of tabs!) you can break it out of the tabs and resize/place it/them wherever you wish.
Don't know about the safemove aspect, but here is a really hacky possible RAPID work-around.
Create a virtual input(s) and a output(s) on the virtual bus and cross connect the outputs to the inputs for affecting axis speed limitation. E.g. vdi_SpeedLimAx6, vdo_SpeedLimAx6. Also, there will need to be a system input, or SOME system inputs, parameter added for the Limit Speed action.
Next find your problem code spot and right before it insert this.
IF OpMode()<>OP_AUTO THEN
SpeedLimAxis ROB_1, 6, 20;
Maybe make it Procedure with data or a function ...?
Yes, it is advised to reset the slowdown, by resetting the output, somewhere in your code, say in a housekeeping routine.
As indicated above it is a hacky solution.
Or wait for the better answers wiser techs than I will suggest.