How fast is messages passing to/from Resource Manager

We are in the early phases of developing a digital servo system. We will
have 4-axes of motion, with an update rate of 600Hz. We will need to sample
our hardware that fast of course. We plan on writing resource managers for
all of the hardware (i.e, A/D, D/A converters, etc.)
Will using resource managers give us the bandwidth we need? I’m beginning to
think that it will not,

Chris Rose <chris.rose@viasat.com> wrote:

We are in the early phases of developing a digital servo system. We will
have 4-axes of motion, with an update rate of 600Hz. We will need to sample
our hardware that fast of course. We plan on writing resource managers for
all of the hardware (i.e, A/D, D/A converters, etc.)
Will using resource managers give us the bandwidth we need? I’m beginning to
think that it will not,

You can certainly call resmgrs at 600 Hz :slight_smile:

Why would you think it wouldn’t give you the speed?

Cheers,
-RK


Robert Krten, PARSE Software Devices +1 613 599 8316.
Realtime Systems Architecture, Books, Video-based and Instructor-led
Training and Consulting at www.parse.com.
Email my initials at parse dot com.

Chris,

What sort of API for your resource manager did you have in mind?

For reference, I’ve used a 5-axis system that runs at 2khz on a
PIII ~800Mhz in QNX 6, with cycles to spare. But that used a
single devctl() call to pass an i/o data structure each cycle, so there
was only the overhead of a single call per cycle.

In retrospect, I’d use two calls…a read() to read everything you need
and a write() to write everything you need, just because devctl()s
are ugly.

This style of API assumes you are writing a resource manager to provide
an abstraction for your hardware that is useful for your specific app,
rather
than writing “device driver” wrapper functions for generic low-level access
to the boards.

-Arthur

“Chris Rose” <chris.rose@viasat.com> wrote in message
news:a3f1pa$p30$1@inn.qnx.com

We are in the early phases of developing a digital servo system. We will
have 4-axes of motion, with an update rate of 600Hz. We will need to
sample
our hardware that fast of course. We plan on writing resource managers for
all of the hardware (i.e, A/D, D/A converters, etc.)
Will using resource managers give us the bandwidth we need? I’m beginning
to
think that it will not,

Hi Chris

Polling your device at 600 Hz is not difficult (depending on how many A/D
and DIO ports you need to poll).

Having an application poll your resource manager at 600 Hz is also not
difficult.

However, you want to make sure you avoid slop. I.E. try not to do extra
work that is not necessary. This also goes for your application. If there
are 16 A/D port don’t poll them individually (9600 requests, 19200 tranfsers
of data, 38400 task swaps per second). But also don’t try to grab all data
in a single request if you don’t need all data.

I wrote a device driver for an A/D and DIO for QNX4. What we did is have
clients register with the resource manager and give it a list of ports and
hi/low thresholds to monitor. When a threshold was reached the resource
manager would send a pulse (Proxy in QNX4) to the client. Then the client
would ask for the current values of the ports in question and reset the
thresholds. This means that in a semi stable system the amount of traffic
to/from the resource manager is minimal. I.E. slight noise variances on an
A/D input could be easily filtered out.

If you would like help implementing this kind of system let us know and we
can help.

Bill Caroselli – 1(626) 824-7983
Q-TPS Consulting
QTPS@EarthLink.net


“Chris Rose” <chris.rose@viasat.com> wrote in message
news:a3f1pa$p30$1@inn.qnx.com

We are in the early phases of developing a digital servo system. We will
have 4-axes of motion, with an update rate of 600Hz. We will need to
sample
our hardware that fast of course. We plan on writing resource managers for
all of the hardware (i.e, A/D, D/A converters, etc.)
Will using resource managers give us the bandwidth we need? I’m beginning
to
think that it will not,