Can anyone give me some information on how to pull out the actual shared memory location offset for each item as it is written to status by NML and what is used as its reference point?  Any help will be greatly appreciated. I can deal with values but pointers and converting them are a real problem for me.

I have found the offsets required for quite a few status items using my remote UI development tools but I would like to generate a complete offset list of all NML status items on the NML side and pass those offsets to the remote UI for decoding use.

This is my status peek process from my remote UI.
From my remote Labview based UI I peek into status with my NML status peek command and I receive back a 20 byte status request verification.

Almost immediately I get back the actual raw copy of the shared memory status data which is 9280 bytes long.

Breaking these raw 9280 hex status bytes down:
The first 20 bytes is status prefix (not used for now).
Next 12 bytes is a sync pattern of (FFFF FFFF FFFF FFFF FFFF FFFF).
The next 9248 bytes is the actual raw status data.

To decode the raw status data I use an offset value starting right after the 12 byte sync pattern as a zero reference point. The 12 byte sync pattern must be decoded properly as part of the logic before any further decoding is allowed.

Sample offsets:
As an example hex offset 1068 with a decoded length of 72 bytes contains the actual position data for all axis. This is then broken down in 8 bytes increments to get the position value for each axis.

As another example a hex offset of 95 with a decoded length of 12 bytes gives the current line number.

Since I'm dealing with a raw copy of the status shared memory I hope to be able to find a quick way of pulling out the offsets used my NML itself to help decode all of the stored vales properly. I have decoded quite a few values now just by looking into the raw received status data but the process has been very time consuming.

I can see some issues with the serial numbers contained in the status raw data: The peek command also updates the command serial contained in the shared status memory and also updates what I believe to be the total command count accumulator in the shared status memory. This makes it difficult compare old shared memory values to new shared memory values since these two are always changing and thus need to be filtered if doing an old to new compare of actual status data changes and not triggered by the constant serial number changes.



_______________________________________________
Emc-developers mailing list
Emc-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-developers

Reply via email to