Re: EMC block diagram posted - corrections wanted
Hi John
Nice job on this. Sorts out several relationships. Two quick things come to
mind, NML and a bit of an expansion to the gui stuff. This is a quick reply
and I'll spend more time on it a little later.
You should treat my NML discussion here as crippled at best and faulty at
worst. It is only my thinking. Will, Fred, and several others should jump
in here to affirm the correct and fix the faulty. IMO NML is a kind of data
highway. It is pretty much the connector between all of the nonrealtime
processes.
Where you have logical arrows from the gui to IO, Interpreter, and Manual
(Task) these all travel through the single NML pipeline. If we model this
with wires or traces, these are bi directional electrical packets traveling a
single trace. They are recognized or ignored by the various processes along
the trace by the specific NML abilities and lexicon written into each
specific process.
While you might think of this a bit like a major freeway, the difference is
that all packets arrive at all off ramps and packets sent by any process
arrive at all other processes. It's more like a multipoint single channel
broadcasting system. Each node hears every other node.
Now I don't know quite how to represent this in your diagram. The thought
that comes to mind is a multiconductor shielded cable but it's really a
single coax. As your arrows indicate, one intent of the gui is to
communicate certain messages to the interpreter. It is also the intent of
the interpreter to communicate with the gui. Neither is a descrete wire or
channel that is not also available to task or IO or any other process that
happens to be listening or speaking its specific part of the NML language.
NML, as we know it now, only works on the nonrealtime side of the processes.
Shared memory is a fixed boundary layer between realtime and NML
The gui end of things. The older guis like xemc, yemc, keystick, and
emcpanel all have their NML connectors built in. The Tcl/Tk guis have a
modified shell (wish) that they run in/under. This modified wish shell has
the NML connectors built into it.
One of the shells that we use is named emcsh. It includes the essential
commands for the operation of a gui like tkemc or mini. This shell includes
some task, IO, and interpreter NML messages. A second shell, iosh looks for
or sends IO type NML messages. Iosh also has the interesting ability to
monitor input hardware and exercise output hardware.
What I find fascinating here is that you can start up and hook in more than
one of the NML connectors at the same time. (TNG had a bit of a problem with
this for a while) Since NML is broadcast, an E-Stop message originating in
tkemc is passed through emcsh and will be heard by iosh where it can change
the setting of a parport or DIO pin. Or the other way round, a change in pin
state can be watched by tkio and signal an estop condition in MNL through
iosh which will be picked up by emcsh, interpreter, and task programs at the
same time.
I guess the notion of sockets would be a way to respresent this. Along the
NML highway all sockets are created equal. What we plug into a socket
defines the purpose and the intended targets or transmitters. This can make
life interesting if we allow it to.
For example we could write a single purpose rs232 NML connector (emc232jogsh
or emcusbjogsh) specifically for jog. It would look for mode and motion
messages in NML and would send mode and jog NML messages. Then we could
build a simple jog pendant like many machines have using a bit of logic
processor to read and write serial data. As long as this pendant's work was
momentary, it would not necesssarly interfere with or replace other guis or
HMI's.
Now stretch the case just a bit and put enough processor in the pendant to
run enough os to read and write NML out there and you have a smart pendant
that can control most any process available to this NML highway. In this
case we would start a transparent rs232, ethernet, or USB (ug) socket that
connects the external device to the main PC. Even here my choice of language
is faulty because there need be no main PC. All of the processing work with
the possible exception of SHMEM and realtime could be out there.
Ray
On Saturday 05 April 2003 10:46 pm, you wrote:
> I posted a first pass the a block diagram at:
> http://home.att.net/~jekasunich/EMC_Block_Diagram.gif
>
> This is based on info gleaned from the handbook, and from
> a couple of papers I got from the NIST site.
>
> I quickly realized there is no one block diagram, because the
> system works differently depending on how you set it up.
>
> So the drawing includes three versions. The first is classic
> analog servo. The Servo To Go card fits this scheme, as
> does Jon's PPMC system.
>
> The second version is what you get when you use Jon's
> Universal Stepper Controler, with feedback from encoders.
>
> The third version is what you get when you use the USC
> with no encoders.
>
> I still need to do diagrams for the parallel port stepper systems.
> I think that steppermod and freqmod are sufficiently different that
> each will want a different diagram, but I need to study mode
> before I can draw either one.
>
> I need more detail on the GUI and I/O portions of the program.
> That stuff isn't my area of expertise, nor is it all that important
> to the discussions we've been having lately, so I didn't put too
> much time into it. Can anyone add more detail?
>
> Ultimately, I'd like to label each block with the names of the
> source files and functions that implement it. Being able to
> cross reference chunks of code to their place in the overall
> system should be very helpfull.
>
> Please point out mistakes and suggest improvments.
> Thank you.
>
> John Kasunich
Date Index |
Thread Index |
Back to archive index |
Back to Mailing List Page
Problems or questions? Contact