Re: Hardware Abstraction Layer - Rev 0.01



Hi John;

See comments below.    I believe that we are thinking almost in the same 
manner, but I'm not really advocating a full blown PLC.    Rather a more 
a limited  abstraction that does not affect servo updates.    The 
problem, in my view, with a full capability PLC is that it will in some 
way reproduce capability already in any CNC controller.

jmkasunich-at-ra.rockwell.com wrote:

>
>David Frantz wrote:
>
>  
>
>>the one thing that keeps coming back in my mind is an
>>integrated PLC.
>>    
>>
>
>Yes, I think user configurable logic is very important.
>
>  
>
>>Nothing fancy of course, just a clean
>>and easy way to map I/O between devices.     The idea
>>being to have the "PLC" update code handle writting to
>>I/O.
>>    
>>
>
>I still want all the I/O to go through the hardware layer.
>The PLC should read and modify memory variables only, with
>no need to care about how (or even if) those variables
>get out into the real world.
>
Exactly!    The solving of "logic" is seperate from I/O updates in all 
PLC's that I've worked with.    It is just a question of where the 
hardware layer is and how complex that hardware layer becomes.

>  Hardware drivers should hide
>the nitty-gritty details of the variable <--> hardware
>translation.
>
I'm not sure I agree with this, hardware drivers should handle getting 
bytes to the devices in question.   Simplicity would assure 
proliferation of such drivers.
This is why I thought that a PLC is a good prototype to implement 
hardware translation on.    The I/O update routines, the drivers that 
is, would effectively provide Hardware abstraction.    From the 
perspective of a driver, this would greatly simplfy things as you would 
only have to be concerned with bulk movement of bytes or words from the 
memory areas to the hardware.

If you consider that most PLC's, at the minimum, implement an array of 
bits for input and output (some times these are independant arrays) and 
similar arrays for multibyte objects, then it is a simple matter to map 
servo information to these arrays with PLC type instructions.   That is 
if the EMC data structures are accessable to the PLC interpeter.    EMC 
data could be thought of as special purpose registers or arrays to a PLC 
abstraction.

None of this of course would be useful if it is not fast enough.   As 
this is being described an implementation would have to be fast enough 
not to impact EMC and the realtime updates required.   This is why the 
PLC interpeter would have to be limited in my view or we will still have 
to think in terms of handling the realtime data seperatly from the rest 
of the I/O.    This is not unheard of in the real world, very few motion 
controllers or CNC controllers send axis control information through 
other software and hardware.    Maybe the answer is  a mixture where the 
loop closure data is handled differrently than the other I/O associated 
with EMC.

>
>Version 0.02 is coming as soon as I can write it up, and
>I hope to address the PLC issue there.
>
>John Kasunich
>
>  
>
I'm looking forward to your next version.    As you know I'm rather new 
to this forum, and EMC for that mattter, but find the whole thing rather 
interesting.   Attending NAMES kinda lit a fire I guess.    So at this 
moment in time I'm working on aquiring some hardware to make my first CNC.

Most of my hands on experience with CNC has been as a maintenance tech 
working on a large number of Bandit controllers, proprietary controllers 
and more recently some FANUC controllers.    The Bandits are gone now, 
they were antiques when they where on the production floor, so the 
concept of CNC on PC hardware is a new experience to me.

At this point I don't even have a handle on the EMC software's 
structure.    Experience with PLC's though has me convinced that this 
concept can play a roll in the controller.    Most important is the 
potential for simplfying the user experience.

Thanks
dave

>
>
>
>
>
>
>  
>





Date Index | Thread Index | Back to archive index | Back to Mailing List Page

Problems or questions? Contact