Is it possible to obtain unscaled AI/AO values in PAC Control?


I have multiple flow controllers configured as AI/AO points in my groov system I am using PAC control to design my strategy, and I need to verify the calibration of some of the controllers due to some unexpected flow issues I am observing. When I first set the system up, I calibrated the unscaled 4-20 mA signals of the AI/AO points manually prior to scaling the points. After scaling the points to equate to certain SCCM equivalents, I am hesitant to remove the scaling once again because my strategy includes a lot of logic that will lead to ESD’s if the 4-20 mA values are interpreted as SCCM units. Plus, there may be issues when rescaling back if there is a mistake in that task. Before going through the excercise of getting around this problems, I wanted to ask if there is a way to obtain the ‘raw’ unscaled 4-20 mA signal from my AI/AO points? I assume it must exist as the PLC is translating my scaled values to a 4-20 mA signal anyways to communicate with the devices.

Thank you for any guidance!

I am frequently needing to do this and usually open up excel to recreate the wheel every time, so I put together a sheet that I can use to speed that process up.

It looks like this:

Fill in the shaded areas as needed to update the other values.

Read only, do a File Download:

or get a copy in your google account to edit:


I’ve had situations in the past where I’ve wanted this same thing. I wouldn’t change anything about the way things work normally, but I would love a command for analog I/O points that would return the raw non-scaled value.

1 Like

A couple of Ideas for your scenario:
You could look at the memory map to read the Analog Value Counts and scale appropriately (but I find this a more complicated an approach but have done in the past).

My preferred way is to scale the IO to show 4-20ma and use a subroutine (or do it in logic) to scale to EU. The added caveat is that you can easily use the same subroutine to indicate that the input is Good / Bad based on the raw 4-20ma.

Either way you can leave your scaling and easily calibrate raw input as needed.


Just be aware that I don’t think this is an option with groov IO modules.

I have done this as well with a “scale” subroutine - useful in the case you describe to check out of range values. Less important on groov IO as it has the quality commands that will report out of range for you.

Thank you all for your feedback on this topic!
@philip - Appreciate the spreadsheet for a quick approach to check a currently-running process with minimal setup changes.

@Lou_Bertha - Thanks for your idea of using a subroutine to carry out the unit conversion. Might try this in a future build!

I believe the memory map for the PR1 and 2 (and I’m almost positive RIO) have counts that are accessible via MMP memory map but as I noted this approach is a bit cumbersome.

Agree - the advantage of the subroutine is that it will allow you to adjust your good/bad window (from the 10% currently fixed in the system) based on your requirements (if needed).