IO Processor vs Controller

I am trying to understand the inner workings of the IO processor such as in an EB1 vs a controller such as the controller within a PAC-R2.

I assume that the IO processor is free running and continuously scanning the I/O modules, gathering the data, doing some conditioning if so configured and placing this data in the OptoMMP memory map.

I also assume that the controller, running charts, is accessing this block of memory at a controlled interval. For example if I set up a chart with a timer and schedule it to “READ” into a “table” so that I can then process this data.

My application has some strict real time requirements.

How often does the IO controller scan the modules and update the data in the memory map?

Lets assume I have 16 modules of 4 channel analog, AIV-4. There is mention in the specs of freshness of data. What does this mean? The specifications state a Max of 23 mS for what I am using. So does this mean when reading 16 of these modules with one command, such as MoveIoUnitToNumTable, that the data will be no older than 23 mS? I am doing no other special stuff on the I/O processor side, just reading the scaled analog values from it on a regular interval. (I am using a downtimer to control the interval of the controller side.)

Is there any synchronization going on between this command to read all channels and the IO Processor? Does the command initiate the scan? Or, as I stated earlier in my assumptions, is the IO processor scanning continuously?

Is there a suggested way to measure the scan time of the IO processor?

Bottom line, I need to know what is the worst case age of all the 64 channels. Its OK if it varies within some range, I just need to understand that it is not greater than some value. And I need to understand this only for these specific 4 channel analog modules.

Hope this makes sense,

Regards,

Jerry

Just going to try and go through each part of your post here…

I assume that the IO processor is free running and continuously scanning the I/O modules, gathering the data, doing some conditioning if so configured and placing this data in the OptoMMP memory map.

Yes that’s correct. The IO processor is not part of the control chart processor. It just takes care of the I/O for the most part.

I also assume that the controller, running charts, is accessing this block of memory at a controlled interval. For example if I set up a chart with a timer and schedule it to “READ” into a “table” so that I can then process this data.

Close enough.

How often does the IO controller scan the modules and update the data in the memory map?

As your chart requires. So if your chart only has a 10msec delay in it, then your chart would scan the modules and update the data every 10 milliseconds.
(Which is where we get into your next bit about data freshness).

There is mention in the specs of freshness of data. What does this mean?

This is the Analog to Digital converter ‘speed’ (not exactly, but good enough). In other words, you can poll the module every 10 msec, but you will only get fresh data (new data) every 23 msec.
The number of modules you have is irreverent. Each module has its own A to D converter and that takes 23 msec to do the electrical to digital conversion.

No. Yes. Yes.
There is no synch between the modules and the I/O processor. The modules are free running converting, so you always have the fresh data sitting there every 23 msec.
Even if you don’t read it, it will be over written by the module 23 msec latter, so when you do read it from your chart, you always get the latest value.
Your chart command kicks off the scan of that value.
Yes, the I/O processor is always getting the latest value from all the modules.

Is there a suggested way to measure the scan time of the IO processor?

Don’t bet the house on it, but PAC Manager has the data closest to what you ask.


Note that your value will be different to mine here, it will depend on the amount and type of modules you have in the rack.
Also high density have their own scan rate and will not show up here.

Hope this helps.

This very much helps and is exactly what I needed. I was trying to form a mental model of these things so that I can finalize the design of this system I am working on. I was considering writing a custom app in C# using the OptoMMP .NET SDK but I am beginning to think it would be a lot simpler to use softpac on an embedded PC to get the compute power I need and the simplicity of using charts.

Regardless, your explanation much appreciated!

Jerry