Still hazy on switching control direction of an Axis

I have a servo valve that has a +10/-10 VDC output where +10VDC = A port full open, and -10VDC = B port full open, 0VDC = valve closed (spool in neutral position). I will need to switch control directions in closed loop control in my program. Do I need to manipulate the unidirectional mode along with using the “set control direction (96)” command? That appears to be the answer, but I’m not sure.


If it is a typical 4-way proportional valve, you need not do a thing to switch direction. Just send a motion command to move to a position, and the RMC’s Control Output voltage will automatically take care of it, at least once the axis is tuned.

If you have a system where one valve switched direction and the other only regulates flow, then you would need the unidirectional mode.



As it stands now, if I send a motion command, say “Ramp Pressure/Force (S-Curve)(41)” to 220 psi and hold, it will do that just fine. The RMC sends a positive output voltage which opens the A-side port of the valve and receives the feedback pressure from the transducer on that side. Everything is happy. Okay, so now I want to open the B-side port of the servo valve, which requires a negative voltage to the output. The pressure feedback will be coming from a different transducer that will be mounted on that side of the circuit, (pressure reference). I can’t just send another “Ramp Pressure…” command as it’s just going to open the A-side port again. Some other command/s has to happen before that to let the RMC know I want to move the servo in the opposite (negative voltage) direction, correct?? I also need to make it clear that I am not using position feedback of the valve, only pressure feedback from the transducers (one each on A-side of the hydraulic circuit and B-side of the circuit).

Oh, I forgot that you were switching feedback as well. Yes, each time you switch, you need to use the Set Control Direction (96) command.


Is there a status bit or register that I can evaluate from my .NET or PLC program to determine the control direction that the axis is set to in the RMC? From my GUI, I can easily change the control direction in the RMC and verified it in the Event Log. However, I am not seeing anything in the Axis Parameters Panes that indicates a control direction change.


No, there is apparently no way to tell the current control direction. If there is a question of what it is, you will just have to make sure to set it to what you need.

I have been away from this project for a while but am now back on it. This portion of the program was not needed for some time but now is needed for testing. I am still having difficulties switching the polarity for the servo valve to get the valve spool to move in the opposite direction (0 to -10V). The program works fine when spooling the servo valve in the positive direction, but when it gets to step 7 in the program, it just sits there and does nothing. This is after I set the control direction to NEG in the program. I’ve tried setting the invert output polarity in the program, and that’s not working either(?). Attached is my program along with the log file. I’d be happy just to get the valve spool to move in the negative direction (0 to -10V), I can figure out making my program work after that. Please advise.
MyLog.rmcelog (14.3 KB)
Sta1CycleBothPortsAuto.rmcprog (7.98 KB)

Can you try setting the invert output polarity as shown in the below snippet? Note if your InvertOutPol bit is already 1, you will need to set it to 0. If this doesn’t work, can you email your complete project to I did not see where the axis was told which feedback to use for control, but that may be because I imported the user program.

Hi Paul,

Yes, I tried that too although I’m not sure in which order I put them. I believe I set the control direction to NEG prior to the expression, and probably tried it both ways. But I did do what you are showing in the snippet and it still didn’t work. In the event log, it would enter the step where the expression was but didn’t show that it actually set the InvertOutPol = 1, and then just move on to the next step. In another step where I set the InvertOutPol := 0, the event log would show the program entering the step and it would also show “set InvertOutPol = False”. Obviously its something in my program and/or parameter setting that is preventing me from moving the axis in the negative control direction. I will look at the program and parameter settings some more today and then email the project to you if I still am having difficulties. Thanks.

Okay, as I figured it was a simple fix. I needed to put in Direct Output, but then implement a Wait command after that to wait until the axis was in Direct Output mode, along with a couple other wait commands before attempting to switch the polarity in the program. It works fine now. Thanks.