Ken,

Am 25.04.2013 um 01:11 schrieb Kenneth Lerman <kenneth.ler...@se-ltd.com>:

I'm only addressing this question here:

> -- How can we distribute HAL (and should we) among multiple components?

Just noting that the work on RTAPI/HAL has brought with it two capabilities 
which relate to the theme; most of this has been discussed and done off-list, 
but since the them comes up I respond to it even if it isnt completely done yet:

first, RTAPI is now multi-instance capable (several RTAPI instances on _one_ 
machine); instances being identified by an integer id (NB this doesnt make NML 
multi-instance but I hope NML will be history this year in this branch so I 
dont bother anymore)

this suggested to enable cross-linking of pins between instances, and that is 
something very close to working; as an example, it will work like so:

Assume there is HAL instance #1 (eg started with 'INSTANCE=1 linuxcnc 
config.ini')
Also assume it has signal foo of type bit, so say 'newsig foo bit' executed in 
#1

in another HAL instance (say #3) you can do this (halcmd script):

attach other 1   # make instance #1 accessible under prefix 'other'
loadrt or2
net other:foo or2.0.in0  # cross-link signal foo/instance #1 to pin 
or2.0.in0/instance #3

this will enable instance coordination at the HAL pin level - providing the 
instances are on the same CPU (shared memory assumption here). Linking will be 
possible for pins linked to remote signals, and named ring buffers (=queues) 
between instances.

---

second, there will be a new variation of HAL components, called remote 
components, which address the remote (=non-shared-memory case). This is based 
on a long discussion I had with JMK and others off-list under the working title 
'HAL pipe' to enable linking separate HAL instances over a network link; 
obvious use cases include multi-spindle setups and remote UI's:

A 'remote component' is basically a proxy for another component in a different 
HAL instance; meaning it has a name, pins with a type etc. It also has 
additional state - it can be 'bound' (network link up) or unbound (no network 
link). You can actually define a remote component in halcmd like so (this is 
from an actual example):

# declare a new remote component

newcomp gladevcp
newpin  gladevcp gladevcp.hal_button1 bit in
newpin  gladevcp gladevcp.hal_label1  float out
ready   gladevcp

# at this stage, the component and its pins exist
# and can be linked to

net toggle gladevcp.hal_button1
net range  gladevcp.hal_label1

# wait until remote is connected, for instance 'reown gladevcp'
# is run from a separate window
waitbound gladevcp

What is not shown here is: a proxy process needs to be started; it will attach 
to this predefined component, investigate pin names and types, connect to its 
remote peer, and start exchanging update messages. it will also change the comp 
state to 'bound' once connection is sucessfully established and pins are linked 
remotely with proper type checking.

---

as I said, this is in an early state so please be patient a bit, but comments 
welcome anyway.

With respect to the original question, I think that both concepts could be 
helpful; one way the first concept (cross-linking of HAL pins and queues) could 
come in is to enable complete HAL/RTAPI subsystems which are glued together on 
the pin+queue level. An example could be say a Soc/FPGA combination like the 
one Altera is coming out with; assuming the ARM core(s) on-chip are taught to 
speak HAL to the outside world, such a subsystem can then be integrated at the 
cross-linking level. It could very well have its own threads, modules etc.

> 
> We KNOW we will lose the parallel port. We know that PCs will become 

semi-OT: I am absolutely baffled by the inertia in this community dealing with 
such issues - the vanishing parport being just one of the more glaring ones. 

Nothing happening on this front, you'd be able to run LinuxCNC on hardware 
salvaged from dustbins and yardsales some time down the road, while hoping the 
RT operating system - an academic one-man show with no community worth speaking 
of and no tangent to become mainline ever - didnt keel over meanwhile 
instigated by change of research interests or funding cuts. 

I simply dont get it - sorry guys, this is reckless driving at the software 
architecture level. Nevermind how 'ready' the product seems to be.

- Michael 


> less deterministic when it comes to real-time operation. (Modern office 
> machines MUST play games with their clock speed to use power efficiently.)
> 
> -- Does our future architecture include a PC?
> 
> Ken
> 
> 
> On 4/23/2013 11:03 AM, Charles Steinkuehler wrote:
>> On 4/22/2013 11:40 AM, Matt Shaver wrote:
>>> On Sun, 21 Apr 2013 19:30:23 +0200
>>> Michael Haberler <mai...@mah.priv.at> wrote:
>>> 
>>>> We'll have a ready-to-go SD card image with xenomai, all prerequisite
>>>> packages and linuxcnc installed in a week or two; that will include
>>>> Charles' PRU stepgen and Sergey's/GP Orcullo's emcweb, and should
>>>> reduce the guru requirements to get things going
>>> So, I'm ordering a new Beagle Bone Black this morning & I was wondering
>>> what you guys are doing for a field I/O interface for this computer. Is
>>> there a cape I should get? Or are we at the perfboard and wire-wrap
>>> wire stage? :)
>> The BeBoPr board is available now and has support for both the Pololu
>> drivers common in the 3D printer world and a header to drive out-board
>> stepper drivers with a more "oomph".  From the BeBoPr maunal:
>> 
>>   J5 – all stepper signals are present on this connector. It connects
>>   directly to the 15 pin sub-D connector of a TB6560-4V5 3A stepper
>>   driver board sold on e-Bay.
>> 
>> There's also the Replicape, but AFAIK it's on-board stepper driver only
>> (Pololu class, but using TI driver chips).
>> 
>> There's nothing I'm aware of yet that works for analog servos, but it
>> should be possible, at least for a few channels (the CPU has 3 hardware
>> encoder inputs, and the PRU could support more in "software" at lower
>> pulse rates).
>> 
> 
> ------------------------------------------------------------------------------
> Try New Relic Now & We'll Send You this Cool Shirt
> New Relic is the only SaaS-based application performance monitoring service 
> that delivers powerful full stack analytics. Optimize and monitor your
> browser, app, & servers with just a few lines of code. Try New Relic
> and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_apr
> _______________________________________________
> Emc-users mailing list
> Emc-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/emc-users


------------------------------------------------------------------------------
Try New Relic Now & We'll Send You this Cool Shirt
New Relic is the only SaaS-based application performance monitoring service 
that delivers powerful full stack analytics. Optimize and monitor your
browser, app, & servers with just a few lines of code. Try New Relic
and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_apr
_______________________________________________
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users

Reply via email to