Re: [Emc-developers] motion planners plural and multiple X slides

2012-09-10 Thread Michael Haberler
Actually I can think of a much simpler solution which is doable right now 
(multiple LinuxCNC2 instances) with a Python HAL user component. 

The difference to what I laid out in my previous mail is: synchronisation is 
achieved at the HAL pin level, not at the 'precondition for issuing a message' 
level.

This would work as follows:

- beast ID's and sync point ID's are represented as HAL say S32 values, say 
1...4 and 1..n respectively.
- the userland component creates a syncpoint pin for each beast ID, so if we 
have beasts 1..4 there would be pins syncpoint1..syncpoint4 
- there is a pin representing the 'self beast id'
- the syncpoint1 pin (aka 'self syncpoint') is watched for change by the 
userland component, a change is broadcast to its peers.
- the syncpoint2..syncpoint4 pins are driven by the userland component, which 
collects change messages from its peer components.
- sync points shall be set in a monotonically ascending order by some language 
construct, eg, M66 for now 

This doesnt synchronize just yet, but it is a completely generic sync point 
value exchange vehicle.

Actual synchronization could happen at the G code level for now, or in a 
separate HAL component:

reach(syncpoint=5) means setting the 'self' syncpoint pin value. The userland 
component will pick it a change and broadcast it eventually.

waitfor(beast=2,syncpoint=42) would retrieve the syncpoint2 value and loop 
until = 42, which is the asymmetric case if done in a single thread.

waitfor(beasts=3,4,syncpoint=42) could be executed in several threads and would 
represent the rendezvous case.


---

this isnt as elegant and general as the message precondition route, but it gets 
the job done

I guess I will do a proof-of-concept with a Python HAL/zeromq messaging 
component, if just to accelerate fixing of our licensing issues;)

other folks than might back-port this to Modbus if they so like

-Michael

Am 10.09.2012 um 07:25 schrieb Michael Haberler:

 
 Am 10.09.2012 um 04:56 schrieb EBo:
 
 On Sat, 8 Sep 2012 14:10:27 +0200, Michael Haberler wrote:
 Am 08.09.2012 um 12:46 schrieb Dave Caroline:
 
 While people are dreaming of new things for a version 3
 I thought I would throw in a few items.
 I was staring at the sliding head thinking of the right thing to 
 do
 and realised that the machine has interleaving of motion as well as
 coordinated motion
 
 While you could approximate that in the current system with effort 
 in
 perhaps a special cam software system
 it would be better if it became built in somehow
 
 The way it currently works is a camshaft rotates once per part this
 drives cams for all slides, collets
 and accessory movement.
 
 this means while turning a dia another tool can be on a fast move
 into/out of position ready to start/finish cutting
 one tool could be cutting a dia while another cutting a taper
 
 That type of machine was programmed as starting/finishing an
 operation/move at an angle(time/number or revs of the total 
 operation)
 of the cam
 just have to avoid crashes :)
 
 The machine also has mechanical gain(ratio) and offset so a class of
 parts can be made without remaking cams
 this also helps adjust tool wear/settings during production.
 
 I have seen other mentions on the list of machines that have 
 multiple
 milling heads, I think this is the same problem
 normally the answer has been run multiple pcs and coordinate, this
 would be wrong on a single spindle sliding head lathe
 
 I found a working example on youtube
 http://www.youtube.com/watch?v=TDxvBHXklJo
 
 The rocker has two tools one being the cutting off tool so you can 
 see
 the cycle time achievable with the method.
 shame about the flood lubricant and shaky camera work.
 
 Found a brochure for a later version on a forum
 
 http://www.practicalmachinist.com/vb/general/bechler-10-lathe-243337/
 
 There have been a number of machines where a lot of axes are the 
 same
 but just hold a different tool like this, there is a need to address
 their multiple axes in a consistent manner my machine has 4 X axes 
 and
 a Z, not counting anything mounted on the front accessory block
 
 I have a couple of accessories one has three drills that can be
 brought into line with the spindle and the other has saws (screw 
 head
 production probably)
 
 Dave Caroline
 
 I'm currently gathering what could be LinuxCNC3 requirements, and see
 how that can be folded into a plan and a time axis. Anyway.
 
 (what is actually the proper term for such a setup? multiple-spindle
 might be a bit narrow in focus)
 
 from the above I derive:
 
 - assuming Linuxcnc runs on single machine:
 Some key components which are currently singletons must become fully
 instantiable.
 
 These are: task, the interpreter embedded in task, the motion module,
 and the motion/task interface; iocontrol as long as it exists in its
 current form (this is a  minimum list; probably I forgot some).
 Usrmotif probably could be coerced into supporting multiple motion
 instances, but 

Re: [Emc-developers] Gwiz what the status?

2012-09-10 Thread Frank Tkalcevic
 Clearly nobody is using it lately :)


I use it for my lathe and haven't noticed any problems.


 I was thinking that if this was embeddable in the screen and could access
the
 python script style wizards that it would be a very handy winner.


I was thinking the opposite.  It would be nice if we could embed the
linuxcnc backtrace into GWiz, so when we string together a few commands, we
could get a visual display of what we are programming.  And as you say,
enhancing GWiz to support script wizards would be awesome.  Add to that, the
work that's been done for lathe roughing canned cycle, and it would be a
pretty complete system for my needs.




--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
___
Emc-developers mailing list
Emc-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-developers


Re: [Emc-developers] motion planners plural and multiple X slides

2012-09-10 Thread Kenneth Lerman
The notion of statically created HAL pins being used to represent sync 
points seems to cause a problem if sync points are within loops.

They could no longer be reached monotonically.

Regards,

Ken

On 9/10/2012 2:05 AM, Michael Haberler wrote:
 Actually I can think of a much simpler solution which is doable right now 
 (multiple LinuxCNC2 instances) with a Python HAL user component.

 The difference to what I laid out in my previous mail is: synchronisation is 
 achieved at the HAL pin level, not at the 'precondition for issuing a 
 message' level.

 This would work as follows:

 - beast ID's and sync point ID's are represented as HAL say S32 values, say 
 1...4 and 1..n respectively.
 - the userland component creates a syncpoint pin for each beast ID, so if we 
 have beasts 1..4 there would be pins syncpoint1..syncpoint4
 - there is a pin representing the 'self beast id'
 - the syncpoint1 pin (aka 'self syncpoint') is watched for change by the 
 userland component, a change is broadcast to its peers.
 - the syncpoint2..syncpoint4 pins are driven by the userland component, which 
 collects change messages from its peer components.
 - sync points shall be set in a monotonically ascending order by some 
 language construct, eg, M66 for now

 This doesnt synchronize just yet, but it is a completely generic sync point 
 value exchange vehicle.

 Actual synchronization could happen at the G code level for now, or in a 
 separate HAL component:

 reach(syncpoint=5) means setting the 'self' syncpoint pin value. The userland 
 component will pick it a change and broadcast it eventually.

 waitfor(beast=2,syncpoint=42) would retrieve the syncpoint2 value and loop 
 until = 42, which is the asymmetric case if done in a single thread.

 waitfor(beasts=3,4,syncpoint=42) could be executed in several threads and 
 would represent the rendezvous case.


 ---

 this isnt as elegant and general as the message precondition route, but it 
 gets the job done

 I guess I will do a proof-of-concept with a Python HAL/zeromq messaging 
 component, if just to accelerate fixing of our licensing issues;)

 other folks than might back-port this to Modbus if they so like

 -Michael

 Am 10.09.2012 um 07:25 schrieb Michael Haberler:

 Am 10.09.2012 um 04:56 schrieb EBo:

 On Sat, 8 Sep 2012 14:10:27 +0200, Michael Haberler wrote:
 Am 08.09.2012 um 12:46 schrieb Dave Caroline:

 While people are dreaming of new things for a version 3
 I thought I would throw in a few items.
 I was staring at the sliding head thinking of the right thing to
 do
 and realised that the machine has interleaving of motion as well as
 coordinated motion

 While you could approximate that in the current system with effort
 in
 perhaps a special cam software system
 it would be better if it became built in somehow

 The way it currently works is a camshaft rotates once per part this
 drives cams for all slides, collets
 and accessory movement.

 this means while turning a dia another tool can be on a fast move
 into/out of position ready to start/finish cutting
 one tool could be cutting a dia while another cutting a taper

 That type of machine was programmed as starting/finishing an
 operation/move at an angle(time/number or revs of the total
 operation)
 of the cam
 just have to avoid crashes :)

 The machine also has mechanical gain(ratio) and offset so a class of
 parts can be made without remaking cams
 this also helps adjust tool wear/settings during production.

 I have seen other mentions on the list of machines that have
 multiple
 milling heads, I think this is the same problem
 normally the answer has been run multiple pcs and coordinate, this
 would be wrong on a single spindle sliding head lathe

 I found a working example on youtube
 http://www.youtube.com/watch?v=TDxvBHXklJo

 The rocker has two tools one being the cutting off tool so you can
 see
 the cycle time achievable with the method.
 shame about the flood lubricant and shaky camera work.

 Found a brochure for a later version on a forum

 http://www.practicalmachinist.com/vb/general/bechler-10-lathe-243337/

 There have been a number of machines where a lot of axes are the
 same
 but just hold a different tool like this, there is a need to address
 their multiple axes in a consistent manner my machine has 4 X axes
 and
 a Z, not counting anything mounted on the front accessory block

 I have a couple of accessories one has three drills that can be
 brought into line with the spindle and the other has saws (screw
 head
 production probably)

 Dave Caroline
 I'm currently gathering what could be LinuxCNC3 requirements, and see
 how that can be folded into a plan and a time axis. Anyway.

 (what is actually the proper term for such a setup? multiple-spindle
 might be a bit narrow in focus)

 from the above I derive:

 - assuming Linuxcnc runs on single machine:
 Some key components which are currently singletons must become fully
 instantiable.

 These are: task, the interpreter embedded 

Re: [Emc-developers] Gwiz what the status?

2012-09-10 Thread Kenneth Lerman
Frank has been the only source of significant positive feedback on this 
effort.

I've obviously failed to communicate how powerful, useful, and easy to 
use and expand this tool could be. (I guess all fathers think their 
children are beautiful.)

I should probably  do some more work on communication.

Ken


On 9/10/2012 3:23 AM, Frank Tkalcevic wrote:
 Clearly nobody is using it lately :)

 I use it for my lathe and haven't noticed any problems.


 I was thinking that if this was embeddable in the screen and could access
 the
 python script style wizards that it would be a very handy winner.

 I was thinking the opposite.  It would be nice if we could embed the
 linuxcnc backtrace into GWiz, so when we string together a few commands, we
 could get a visual display of what we are programming.  And as you say,
 enhancing GWiz to support script wizards would be awesome.  Add to that, the
 work that's been done for lathe roughing canned cycle, and it would be a
 pretty complete system for my needs.




 --
 Live Security Virtual Conference
 Exclusive live event will cover all the ways today's security and
 threat landscape has changed and how IT managers can respond. Discussions
 will include endpoint security, mobile security and the latest in malware
 threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
 ___
 Emc-developers mailing list
 Emc-developers@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/emc-developers


--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
___
Emc-developers mailing list
Emc-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-developers


Re: [Emc-developers] motion planners plural and multiple X slides

2012-09-10 Thread Dave Caroline
On Mon, Sep 10, 2012 at 1:30 PM, Kenneth Lerman
kenneth.ler...@se-ltd.com wrote:
 The notion of statically created HAL pins being used to represent sync
 points seems to cause a problem if sync points are within loops.

 They could no longer be reached monotonically.

When slaved, master and slave spindles would be driven by the master
loop with feedback from master, monitor the slaves following error it
should match master until the part is parted then rise/fall, at that
point reconnect the slaves loop.

Dave Caroline

--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
___
Emc-developers mailing list
Emc-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-developers


Re: [Emc-developers] motion planners plural and multiple X slides

2012-09-10 Thread Michael Haberler

Am 10.09.2012 um 14:30 schrieb Kenneth Lerman:

 The notion of statically created HAL pins being used to represent sync 
 points seems to cause a problem if sync points are within loops.
 
 They could no longer be reached monotonically.

I wrote the below, but 'undecidable' might have to be replaced by 'broken' for 
that case ;)

 If rs274ngc had no control structures, just a linear flow, it would be 
 possible to determine statically whether a given set of programs using sync 
 primitives is deadlock-free. With control structures, IMO it is undecidable 
 in the general case, but it might still be worth a stab; an 80/20 static 
 analysis and coding guidelines probably could prevent most pitfalls.

-m

 
 Regards,
 
 Ken
 
 On 9/10/2012 2:05 AM, Michael Haberler wrote:
 Actually I can think of a much simpler solution which is doable right now 
 (multiple LinuxCNC2 instances) with a Python HAL user component.
 
 The difference to what I laid out in my previous mail is: synchronisation is 
 achieved at the HAL pin level, not at the 'precondition for issuing a 
 message' level.
 
 This would work as follows:
 
 - beast ID's and sync point ID's are represented as HAL say S32 values, say 
 1...4 and 1..n respectively.
 - the userland component creates a syncpoint pin for each beast ID, so if we 
 have beasts 1..4 there would be pins syncpoint1..syncpoint4
 - there is a pin representing the 'self beast id'
 - the syncpoint1 pin (aka 'self syncpoint') is watched for change by the 
 userland component, a change is broadcast to its peers.
 - the syncpoint2..syncpoint4 pins are driven by the userland component, 
 which collects change messages from its peer components.
 - sync points shall be set in a monotonically ascending order by some 
 language construct, eg, M66 for now
 
 This doesnt synchronize just yet, but it is a completely generic sync point 
 value exchange vehicle.
 
 Actual synchronization could happen at the G code level for now, or in a 
 separate HAL component:
 
 reach(syncpoint=5) means setting the 'self' syncpoint pin value. The 
 userland component will pick it a change and broadcast it eventually.
 
 waitfor(beast=2,syncpoint=42) would retrieve the syncpoint2 value and loop 
 until = 42, which is the asymmetric case if done in a single thread.
 
 waitfor(beasts=3,4,syncpoint=42) could be executed in several threads and 
 would represent the rendezvous case.
 
 
 ---
 
 this isnt as elegant and general as the message precondition route, but it 
 gets the job done
 
 I guess I will do a proof-of-concept with a Python HAL/zeromq messaging 
 component, if just to accelerate fixing of our licensing issues;)
 
 other folks than might back-port this to Modbus if they so like
 
 -Michael
 
 Am 10.09.2012 um 07:25 schrieb Michael Haberler:
 
 Am 10.09.2012 um 04:56 schrieb EBo:
 
 On Sat, 8 Sep 2012 14:10:27 +0200, Michael Haberler wrote:
 Am 08.09.2012 um 12:46 schrieb Dave Caroline:
 
 While people are dreaming of new things for a version 3
 I thought I would throw in a few items.
 I was staring at the sliding head thinking of the right thing to
 do
 and realised that the machine has interleaving of motion as well as
 coordinated motion
 
 While you could approximate that in the current system with effort
 in
 perhaps a special cam software system
 it would be better if it became built in somehow
 
 The way it currently works is a camshaft rotates once per part this
 drives cams for all slides, collets
 and accessory movement.
 
 this means while turning a dia another tool can be on a fast move
 into/out of position ready to start/finish cutting
 one tool could be cutting a dia while another cutting a taper
 
 That type of machine was programmed as starting/finishing an
 operation/move at an angle(time/number or revs of the total
 operation)
 of the cam
 just have to avoid crashes :)
 
 The machine also has mechanical gain(ratio) and offset so a class of
 parts can be made without remaking cams
 this also helps adjust tool wear/settings during production.
 
 I have seen other mentions on the list of machines that have
 multiple
 milling heads, I think this is the same problem
 normally the answer has been run multiple pcs and coordinate, this
 would be wrong on a single spindle sliding head lathe
 
 I found a working example on youtube
 http://www.youtube.com/watch?v=TDxvBHXklJo
 
 The rocker has two tools one being the cutting off tool so you can
 see
 the cycle time achievable with the method.
 shame about the flood lubricant and shaky camera work.
 
 Found a brochure for a later version on a forum
 
 http://www.practicalmachinist.com/vb/general/bechler-10-lathe-243337/
 
 There have been a number of machines where a lot of axes are the
 same
 but just hold a different tool like this, there is a need to address
 their multiple axes in a consistent manner my machine has 4 X axes
 and
 a Z, not counting anything mounted on the front accessory block
 
 I have a couple of accessories one has three 

Re: [Emc-developers] motion planners plural and multiple X slides

2012-09-10 Thread andy pugh
Ignoring (for a moment) the means of communication, could the
handshaking be as simple as a few more M-codes?

M90 clear flags
M91 P1 wait for blocking flag 1 to clear
M92 P2 set blocking flag 2
M93 P2 release blocking flag 2




-- 
atp
If you can't fix it, you don't own it.
http://www.ifixit.com/Manifesto

--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
___
Emc-developers mailing list
Emc-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-developers


Re: [Emc-developers] motion planners plural and multiple X slides

2012-09-10 Thread Michael Haberler
could be we're reinventing some wheel here

how do manufacturers of controls deal with synchronization?

-m

Am 10.09.2012 um 14:30 schrieb Kenneth Lerman:

 The notion of statically created HAL pins being used to represent sync 
 points seems to cause a problem if sync points are within loops.
 
 They could no longer be reached monotonically.
 
 Regards,
 
 Ken
 
 On 9/10/2012 2:05 AM, Michael Haberler wrote:
 Actually I can think of a much simpler solution which is doable right now 
 (multiple LinuxCNC2 instances) with a Python HAL user component.
 
 The difference to what I laid out in my previous mail is: synchronisation is 
 achieved at the HAL pin level, not at the 'precondition for issuing a 
 message' level.
 
 This would work as follows:
 
 - beast ID's and sync point ID's are represented as HAL say S32 values, say 
 1...4 and 1..n respectively.
 - the userland component creates a syncpoint pin for each beast ID, so if we 
 have beasts 1..4 there would be pins syncpoint1..syncpoint4
 - there is a pin representing the 'self beast id'
 - the syncpoint1 pin (aka 'self syncpoint') is watched for change by the 
 userland component, a change is broadcast to its peers.
 - the syncpoint2..syncpoint4 pins are driven by the userland component, 
 which collects change messages from its peer components.
 - sync points shall be set in a monotonically ascending order by some 
 language construct, eg, M66 for now
 
 This doesnt synchronize just yet, but it is a completely generic sync point 
 value exchange vehicle.
 
 Actual synchronization could happen at the G code level for now, or in a 
 separate HAL component:
 
 reach(syncpoint=5) means setting the 'self' syncpoint pin value. The 
 userland component will pick it a change and broadcast it eventually.
 
 waitfor(beast=2,syncpoint=42) would retrieve the syncpoint2 value and loop 
 until = 42, which is the asymmetric case if done in a single thread.
 
 waitfor(beasts=3,4,syncpoint=42) could be executed in several threads and 
 would represent the rendezvous case.
 
 
 ---
 
 this isnt as elegant and general as the message precondition route, but it 
 gets the job done
 
 I guess I will do a proof-of-concept with a Python HAL/zeromq messaging 
 component, if just to accelerate fixing of our licensing issues;)
 
 other folks than might back-port this to Modbus if they so like
 
 -Michael
 
 Am 10.09.2012 um 07:25 schrieb Michael Haberler:
 
 Am 10.09.2012 um 04:56 schrieb EBo:
 
 On Sat, 8 Sep 2012 14:10:27 +0200, Michael Haberler wrote:
 Am 08.09.2012 um 12:46 schrieb Dave Caroline:
 
 While people are dreaming of new things for a version 3
 I thought I would throw in a few items.
 I was staring at the sliding head thinking of the right thing to
 do
 and realised that the machine has interleaving of motion as well as
 coordinated motion
 
 While you could approximate that in the current system with effort
 in
 perhaps a special cam software system
 it would be better if it became built in somehow
 
 The way it currently works is a camshaft rotates once per part this
 drives cams for all slides, collets
 and accessory movement.
 
 this means while turning a dia another tool can be on a fast move
 into/out of position ready to start/finish cutting
 one tool could be cutting a dia while another cutting a taper
 
 That type of machine was programmed as starting/finishing an
 operation/move at an angle(time/number or revs of the total
 operation)
 of the cam
 just have to avoid crashes :)
 
 The machine also has mechanical gain(ratio) and offset so a class of
 parts can be made without remaking cams
 this also helps adjust tool wear/settings during production.
 
 I have seen other mentions on the list of machines that have
 multiple
 milling heads, I think this is the same problem
 normally the answer has been run multiple pcs and coordinate, this
 would be wrong on a single spindle sliding head lathe
 
 I found a working example on youtube
 http://www.youtube.com/watch?v=TDxvBHXklJo
 
 The rocker has two tools one being the cutting off tool so you can
 see
 the cycle time achievable with the method.
 shame about the flood lubricant and shaky camera work.
 
 Found a brochure for a later version on a forum
 
 http://www.practicalmachinist.com/vb/general/bechler-10-lathe-243337/
 
 There have been a number of machines where a lot of axes are the
 same
 but just hold a different tool like this, there is a need to address
 their multiple axes in a consistent manner my machine has 4 X axes
 and
 a Z, not counting anything mounted on the front accessory block
 
 I have a couple of accessories one has three drills that can be
 brought into line with the spindle and the other has saws (screw
 head
 production probably)
 
 Dave Caroline
 I'm currently gathering what could be LinuxCNC3 requirements, and see
 how that can be folded into a plan and a time axis. Anyway.
 
 (what is actually the proper term for such a setup? multiple-spindle
 might be a bit narrow in focus)
 
 

Re: [Emc-developers] Gwiz what the status?

2012-09-10 Thread John Thornton
The only info I can find on gwiz is on the wiki and seems to be quite 
short. It does seem to be aimed at non-programmers but lacks the usual 
screenshots that non-programmers might need in order to understand what 
it can do and what to do to use it. In all honesty I thought it was a 
dead project.

John

On 9/10/2012 7:34 AM, Kenneth Lerman wrote:
 Frank has been the only source of significant positive feedback on this
 effort.

 I've obviously failed to communicate how powerful, useful, and easy to
 use and expand this tool could be. (I guess all fathers think their
 children are beautiful.)

 I should probably  do some more work on communication.

 Ken


 On 9/10/2012 3:23 AM, Frank Tkalcevic wrote:
 Clearly nobody is using it lately :)
 I use it for my lathe and haven't noticed any problems.


 I was thinking that if this was embeddable in the screen and could access
 the
 python script style wizards that it would be a very handy winner.
 I was thinking the opposite.  It would be nice if we could embed the
 linuxcnc backtrace into GWiz, so when we string together a few commands, we
 could get a visual display of what we are programming.  And as you say,
 enhancing GWiz to support script wizards would be awesome.  Add to that, the
 work that's been done for lathe roughing canned cycle, and it would be a
 pretty complete system for my needs.




 --
 Live Security Virtual Conference
 Exclusive live event will cover all the ways today's security and
 threat landscape has changed and how IT managers can respond. Discussions
 will include endpoint security, mobile security and the latest in malware
 threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
 ___
 Emc-developers mailing list
 Emc-developers@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/emc-developers

 --
 Live Security Virtual Conference
 Exclusive live event will cover all the ways today's security and
 threat landscape has changed and how IT managers can respond. Discussions
 will include endpoint security, mobile security and the latest in malware
 threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
 ___
 Emc-developers mailing list
 Emc-developers@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/emc-developers


--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
___
Emc-developers mailing list
Emc-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-developers


Re: [Emc-developers] motion planners plural and multiple X slides

2012-09-10 Thread Michael Haberler

Am 10.09.2012 um 15:11 schrieb andy pugh:

 Ignoring (for a moment) the means of communication, could the
 handshaking be as simple as a few more M-codes?
 
 M90 clear flags
 M91 P1 wait for blocking flag 1 to clear
 M92 P2 set blocking flag 2
 M93 P2 release blocking flag 2


eventually I hope so, yes

the tough part is making the synchonization abstraction solid and easy to use
great example for a remapped code btw

-m

 
 
 
 
 -- 
 atp
 If you can't fix it, you don't own it.
 http://www.ifixit.com/Manifesto
 
 --
 Live Security Virtual Conference
 Exclusive live event will cover all the ways today's security and 
 threat landscape has changed and how IT managers can respond. Discussions 
 will include endpoint security, mobile security and the latest in malware 
 threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
 ___
 Emc-developers mailing list
 Emc-developers@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/emc-developers


--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
___
Emc-developers mailing list
Emc-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-developers


Re: [Emc-developers] Raspberry Pi running EMC ???

2012-09-10 Thread Michael Haberler
here's linpack figures for the Rpi and an Intel D525. 

the D5252 is almost a factor of 6 faster than the Rpi for this benchmark

(pull test code with wget http://www.netlib.org/benchmark/linpackc.new)

pi@raspberrypi ~/tests $ gcc -O linpackc.c -lm -olinpackc
pi@raspberrypi ~/tests $ ./linpackc 
Enter array size (q to quit) [200]:  
Memory required:  315K.


LINPACK benchmark, Double precision.
Machine precision:  15 digits.
Array size 200 X 200.
Average rolled and unrolled performance:

Reps Time(s) DGEFA   DGESL  OVERHEADKFLOPS

  16   0.66  90.91%   3.03%   6.06%  35440.860
  32   1.33  88.72%   3.01%   8.27%  36021.858
  64   2.64  88.26%   2.65%   9.09%  36622.222
 128   5.28  89.58%   3.22%   7.20%  35874.830
 256  10.56  88.92%   3.12%   7.95%  36170.096


mah@atom:~/src$ gcc -O linpackc.c  -lm
linpackc.c: In function 'main':
linpackc.c:78: warning: ignoring return value of '€˜fgets'€™, declared with 
attribute warn_unused_result
mah@atom:~/src$ ./a.out 
Enter array size (q to quit) [200]:  
Memory required:  315K.


LINPACK benchmark, Double precision.
Machine precision:  15 digits.
Array size 200 X 200.
Average rolled and unrolled performance:

Reps Time(s) DGEFA   DGESL  OVERHEADKFLOPS

 128   0.96  86.46%   3.12%  10.42%  204403.101
 256   1.91  87.96%   1.05%  10.99%  206807.843
 512   3.82  87.43%   2.62%   9.95%  204403.101
1024   7.63  87.68%   2.36%   9.96%  204700.631
2048  15.26  87.42%   2.82%   9.76%  204254.660





Am 09.09.2012 um 23:35 schrieb Jon Elson:

 Kent A. Reed wrote:
 On 9/9/2012 1:54 PM, Jon Elson wrote:
 
 ... I have not reported any thread latencies for the Beagle.
 
 
 Sorry, Jon. Looking back I see you were talking about how fast one could 
 drive GPIO pins. My memory is getting rustier by the day.
 
 And, mine isn't getting better by the day, either.
 You've mentioned floating-point performance in the past. Do we have any 
 benchmarking for that?
 
 There certainly are standard benchmarks that can be run on Linux systems 
 that could be
 quite useful.  I haven't seen anybody post numbers, but likely they 
 already exist on
 the web, somewhere.  A quick search didn't show any published results 
 comparing
 say, the Beagle Board's OMAP 3430 against an Intel Atom, for instance, 
 which would
 be a good comparison.
 ... As for interrupts and timers, if you accept that
 you have to add FPGA hardware to the CPU for step generation, encoder 
 counting
 or whatever, then you can have that add-on produce the interrupts for the 
 RT thread
 at any rate you choose.
 
 
 In my philosophy, Horatio, this is a perfectly acceptable requirement 
 and I look forward to products from you and Peter. I accept as well that 
 they may have to be tailored to specific ARM-based systems for the 
 reasons just mentioned.
 
 I have built an adapter to connect my boards to the Beagle and emulate 
 the IEEE-1284 par port in
 software.  It worked, and wasn't horribly slow, compared to a PC.  I 
 didn't worry about the
 interrupt line, but on the Beagle, at least, ANY GPIO pin can be set up 
 as an interrupt.
 I have not even looked at the code required to make that actually work 
 (especially since the
 lack of RTAI was the reason work in that direction stopped.)
 
 Jon
 
 --
 Live Security Virtual Conference
 Exclusive live event will cover all the ways today's security and 
 threat landscape has changed and how IT managers can respond. Discussions 
 will include endpoint security, mobile security and the latest in malware 
 threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
 ___
 Emc-developers mailing list
 Emc-developers@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/emc-developers


--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
___
Emc-developers mailing list
Emc-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-developers


Re: [Emc-developers] gremlin error report gives....an error!

2012-09-10 Thread Daniel Rogge
   File /home/chris/emc2-dev/lib/python/gremlin.py, line 351, in 
 report_gcode_error
 + str(seq) +  of\n + filename + \n + error_str + \n)
 IOError: [Errno 9] Bad file descriptor

 It actually does print the gcode error and file name properly...
 Is this because hal_gremlin needs a bit of a touch - I thought I read that
 somewhere...

 Chris M

Chris,

I haven't seen that error on my system, but I'm not using hal_gremlin either.  
Error reporting on program load is an odd thing as there's no clever way to 
incorporate it into gremlin.  Here I just passed the pertinent information 
(filename, line number, error type) off to a method that gui writers could 
easily subclass.  That way you could display the error on a gtk.label or 
similar widget.  

+def report_gcode_error(self, result, seq, filename):
+   error_str = gcode.strerror(result)  
+   sys.stderr.write(G-Code error in  + os.path.basename(filename) + \n 
+ Near line  
++ str(seq) +  of\n + filename + \n + error_str + 
\n)
+   

I don't know why you're seeing that error with hal_gremlin, and later this week 
when I have time I'll try to reproduce it (an easy fix would be to simply 
remove the offending call to sys.stderr.write, which I put in as a default).  
In the meantime, I suggest subclassing the gremlin.report_gcode_error method in 
your gscreen.py code and diverting the information to wherever you think it 
would be appropriately displayed.

Rogge


--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
___
Emc-developers mailing list
Emc-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-developers


Re: [Emc-developers] Raspberry Pi running EMC ???

2012-09-10 Thread Kent A. Reed
On 9/10/2012 10:45 AM, Michael Haberler wrote:
 here's linpack figures for the Rpi and an Intel D525.

 the D5252 is almost a factor of 6 faster than the Rpi for this benchmark

 (pull test code with wget http://www.netlib.org/benchmark/linpackc.new)

 pi@raspberrypi ~/tests $ gcc -O linpackc.c -lm -olinpackc
 pi@raspberrypi ~/tests $ ./linpackc
 Enter array size (q to quit) [200]:
 Memory required:  315K.


 LINPACK benchmark, Double precision.
 Machine precision:  15 digits.
 Array size 200 X 200.
 Average rolled and unrolled performance:

  Reps Time(s) DGEFA   DGESL  OVERHEADKFLOPS
 
16   0.66  90.91%   3.03%   6.06%  35440.860
32   1.33  88.72%   3.01%   8.27%  36021.858
64   2.64  88.26%   2.65%   9.09%  36622.222
   128   5.28  89.58%   3.22%   7.20%  35874.830
   256  10.56  88.92%   3.12%   7.95%  36170.096


 mah@atom:~/src$ gcc -O linpackc.c  -lm
 linpackc.c: In function 'main':
 linpackc.c:78: warning: ignoring return value of '€˜fgets'€™, declared with 
 attribute warn_unused_result
 mah@atom:~/src$ ./a.out
 Enter array size (q to quit) [200]:
 Memory required:  315K.


 LINPACK benchmark, Double precision.
 Machine precision:  15 digits.
 Array size 200 X 200.
 Average rolled and unrolled performance:

  Reps Time(s) DGEFA   DGESL  OVERHEADKFLOPS
 
   128   0.96  86.46%   3.12%  10.42%  204403.101
   256   1.91  87.96%   1.05%  10.99%  206807.843
   512   3.82  87.43%   2.62%   9.95%  204403.101
  1024   7.63  87.68%   2.36%   9.96%  204700.631
  2048  15.26  87.42%   2.82%   9.76%  204254.660





 Am 09.09.2012 um 23:35 schrieb Jon Elson:

 Kent A. Reed wrote:
 ...
 You've mentioned floating-point performance in the past. Do we have any
 benchmarking for that?

 There certainly are standard benchmarks that can be run on Linux systems
 that could be
 quite useful.  I haven't seen anybody post numbers, but likely they
 already exist on
 the web, somewhere.  A quick search didn't show any published results
 comparing
 say, the Beagle Board's OMAP 3430 against an Intel Atom, for instance,
 which would
 be a good comparison.

 ...

Thanks, Michael.

I'm *still* waiting for my RPi so I spent some time looking up 
benchmarking info regarding ARM vs the world. (Caveat: I know very well 
that benchmarking is the art of lying with confidence.)

Because of my FORTRAN upbringing I have a tendency to rely on the 
Whetstone benchmark but the choice of suite may not matter as much as 
the choice of compiler, even more so with ARMs because of the 
compromises made by software folks with different versions of the 
instruction set.

To start, are you running Raspbian Linux or Debian Linux? versions?

I will kick in the benchmarks I run on my BeagleBoardXM and ASUS 
AT5NM10-I while I wait.

Regards,
Kent


--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
___
Emc-developers mailing list
Emc-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-developers


Re: [Emc-developers] Raspberry Pi running EMC ???

2012-09-10 Thread Jon Elson
Michael Haberler wrote:
 here's linpack figures for the Rpi and an Intel D525. 

 the D5252 is almost a factor of 6 faster than the Rpi for this benchmark
   
Thanks much for doing this!  Not a great result, though.  My feeling is 
that the
Atom processors are marginal for LinuxCNC, especially in cases with long
programs or contouring, where the slowness would be more obvious.
So, if the Pi is 1/6th that speed, that will not be good at all.
Exactly how this compares on LinuxCNC, where there is also a lot of
non-FP code, isn't clear.  If LinuxCNC was run with the GUI on another
system, it might be OK, and for special projects which are not typical
machines, it might be fine.

Jon

--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
___
Emc-developers mailing list
Emc-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-developers


Re: [Emc-developers] Raspberry Pi running EMC ???

2012-09-10 Thread Michael Haberler

Am 10.09.2012 um 18:07 schrieb Kent A. Reed:

 On 9/10/2012 10:45 AM, Michael Haberler wrote:
 here's linpack figures for the Rpi and an Intel D525.
 
 ...
 
 Thanks, Michael.
 
 I'm *still* waiting for my RPi so I spent some time looking up 
 benchmarking info regarding ARM vs the world. (Caveat: I know very well 
 that benchmarking is the art of lying with confidence.)
 
 Because of my FORTRAN upbringing I have a tendency to rely on the 
 Whetstone benchmark but the choice of suite may not matter as much as 
 the choice of compiler, even more so with ARMs because of the 
 compromises made by software folks with different versions of the 
 instruction set.
 
 To start, are you running Raspbian Linux or Debian Linux? versions?

Raspbian. This looks very complete in terms of packages available.

This kernel is stock:
Linux raspberrypi 3.2.27+ #102 PREEMPT Sat Sep 1 01:00:50 BST 2012 armv6l 
GNU/Linux

I'm just cross-compiling the kernel to see how that goes, it might be agonizing 
on the Rpi;looks good so far

-m

 
 I will kick in the benchmarks I run on my BeagleBoardXM and ASUS 
 AT5NM10-I while I wait.
 
 Regards,
 Kent
 
 
 --
 Live Security Virtual Conference
 Exclusive live event will cover all the ways today's security and 
 threat landscape has changed and how IT managers can respond. Discussions 
 will include endpoint security, mobile security and the latest in malware 
 threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
 ___
 Emc-developers mailing list
 Emc-developers@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/emc-developers


--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
___
Emc-developers mailing list
Emc-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-developers


Re: [Emc-developers] Raspberry Pi running EMC ???

2012-09-10 Thread Kenneth Lerman
Point of view is everything.

You said:

the D5252 is almost a factor of 6 faster than the Rpi for this benchmark

I would have said

the Rpi is only a factor of 6 slower for this benchmark

:-)

It's also a factor of 20 smaller (a guess) and uses a factor of 20 less power 
(also a guess).

Regards,

Ken



On 9/10/2012 10:45 AM, Michael Haberler wrote:
 here's linpack figures for the Rpi and an Intel D525.

 the D5252 is almost a factor of 6 faster than the Rpi for this benchmark

 (pull test code with wget http://www.netlib.org/benchmark/linpackc.new)

 pi@raspberrypi ~/tests $ gcc -O linpackc.c -lm -olinpackc
 pi@raspberrypi ~/tests $ ./linpackc
 Enter array size (q to quit) [200]:
 Memory required:  315K.


 LINPACK benchmark, Double precision.
 Machine precision:  15 digits.
 Array size 200 X 200.
 Average rolled and unrolled performance:

  Reps Time(s) DGEFA   DGESL  OVERHEADKFLOPS
 
16   0.66  90.91%   3.03%   6.06%  35440.860
32   1.33  88.72%   3.01%   8.27%  36021.858
64   2.64  88.26%   2.65%   9.09%  36622.222
   128   5.28  89.58%   3.22%   7.20%  35874.830
   256  10.56  88.92%   3.12%   7.95%  36170.096


 mah@atom:~/src$ gcc -O linpackc.c  -lm
 linpackc.c: In function 'main':
 linpackc.c:78: warning: ignoring return value of '€˜fgets'€™, declared with 
 attribute warn_unused_result
 mah@atom:~/src$ ./a.out
 Enter array size (q to quit) [200]:
 Memory required:  315K.


 LINPACK benchmark, Double precision.
 Machine precision:  15 digits.
 Array size 200 X 200.
 Average rolled and unrolled performance:

  Reps Time(s) DGEFA   DGESL  OVERHEADKFLOPS
 
   128   0.96  86.46%   3.12%  10.42%  204403.101
   256   1.91  87.96%   1.05%  10.99%  206807.843
   512   3.82  87.43%   2.62%   9.95%  204403.101
  1024   7.63  87.68%   2.36%   9.96%  204700.631
  2048  15.26  87.42%   2.82%   9.76%  204254.660





 Am 09.09.2012 um 23:35 schrieb Jon Elson:

 Kent A. Reed wrote:
 On 9/9/2012 1:54 PM, Jon Elson wrote:

 ... I have not reported any thread latencies for the Beagle.


 Sorry, Jon. Looking back I see you were talking about how fast one could
 drive GPIO pins. My memory is getting rustier by the day.

 And, mine isn't getting better by the day, either.
 You've mentioned floating-point performance in the past. Do we have any
 benchmarking for that?

 There certainly are standard benchmarks that can be run on Linux systems
 that could be
 quite useful.  I haven't seen anybody post numbers, but likely they
 already exist on
 the web, somewhere.  A quick search didn't show any published results
 comparing
 say, the Beagle Board's OMAP 3430 against an Intel Atom, for instance,
 which would
 be a good comparison.
 ... As for interrupts and timers, if you accept that
 you have to add FPGA hardware to the CPU for step generation, encoder 
 counting
 or whatever, then you can have that add-on produce the interrupts for the 
 RT thread
 at any rate you choose.

 In my philosophy, Horatio, this is a perfectly acceptable requirement
 and I look forward to products from you and Peter. I accept as well that
 they may have to be tailored to specific ARM-based systems for the
 reasons just mentioned.

 I have built an adapter to connect my boards to the Beagle and emulate
 the IEEE-1284 par port in
 software.  It worked, and wasn't horribly slow, compared to a PC.  I
 didn't worry about the
 interrupt line, but on the Beagle, at least, ANY GPIO pin can be set up
 as an interrupt.
 I have not even looked at the code required to make that actually work
 (especially since the
 lack of RTAI was the reason work in that direction stopped.)

 Jon

 --
 Live Security Virtual Conference
 Exclusive live event will cover all the ways today's security and
 threat landscape has changed and how IT managers can respond. Discussions
 will include endpoint security, mobile security and the latest in malware
 threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
 ___
 Emc-developers mailing list
 Emc-developers@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/emc-developers

 --
 Live Security Virtual Conference
 Exclusive live event will cover all the ways today's security and
 threat landscape has changed and how IT managers can respond. Discussions
 will include endpoint security, mobile security and the latest in malware
 threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
 ___
 Emc-developers mailing list
 Emc-developers@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/emc-developers



Re: [Emc-developers] Raspberry Pi running EMC ???

2012-09-10 Thread Michael Haberler

Alex dug this out on Xenomai on the Rpi and it is an interesting read: 
http://www.raspberrypi.org/phpBB3/viewtopic.php?t=12368p=154691

 A quick (very quick) test shows typical latencies in the order of 20-30uS and 
 peaking at ~70uS for user space tasks. The kernel space latencies are even 
 better and look pretty solid at around 15uS.

That could mean Rpi+Xenomai is actually usable with soft stepgen (assuming it 
doesnt run out of steam on doing FP in motion)

also it seems this kernel has the hires timer issue resolved:

 If power management is enabled, the 1MHz System Timer will be used. If power 
 management is disabled, the ARM Timer, configured to run at 250MHz, will be 
 used instead.

-m

Am 10.09.2012 um 18:48 schrieb Jon Elson:

 Michael Haberler wrote:
 here's linpack figures for the Rpi and an Intel D525. 
 
 the D5252 is almost a factor of 6 faster than the Rpi for this benchmark
 
 Thanks much for doing this!  Not a great result, though.  My feeling is 
 that the
 Atom processors are marginal for LinuxCNC, especially in cases with long
 programs or contouring, where the slowness would be more obvious.
 So, if the Pi is 1/6th that speed, that will not be good at all.
 Exactly how this compares on LinuxCNC, where there is also a lot of
 non-FP code, isn't clear.  If LinuxCNC was run with the GUI on another
 system, it might be OK, and for special projects which are not typical
 machines, it might be fine.
 
 Jon
 
 --
 Live Security Virtual Conference
 Exclusive live event will cover all the ways today's security and 
 threat landscape has changed and how IT managers can respond. Discussions 
 will include endpoint security, mobile security and the latest in malware 
 threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
 ___
 Emc-developers mailing list
 Emc-developers@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/emc-developers


--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
___
Emc-developers mailing list
Emc-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-developers


Re: [Emc-developers] Raspberry Pi running EMC ???

2012-09-10 Thread EBo
I took a moment and looked at that thread.  Those numbers are worst 
case.  Another posted ~2us with little load.  It would be nice to set up 
a latency tester which artificially mucked with some threads to get 
realistic numbers.

Hmmm... is there any instrumentation in the simulation code to 
calculate latency statistics with actual setups and configurations?  
That would be rather interesting...

On Mon, 10 Sep 2012 19:55:58 +0200, Michael Haberler wrote:
 Alex dug this out on Xenomai on the Rpi and it is an interesting
 read: 
 http://www.raspberrypi.org/phpBB3/viewtopic.php?t=12368p=154691

 A quick (very quick) test shows typical latencies in the order of 
 20-30uS and peaking at ~70uS for user space tasks. The kernel space 
 latencies are even better and look pretty solid at around 15uS.

 That could mean Rpi+Xenomai is actually usable with soft stepgen
 (assuming it doesnt run out of steam on doing FP in motion)

 also it seems this kernel has the hires timer issue resolved:

 If power management is enabled, the 1MHz System Timer will be used. 
 If power management is disabled, the ARM Timer, configured to run at 
 250MHz, will be used instead.

 -m

 Am 10.09.2012 um 18:48 schrieb Jon Elson:

 Michael Haberler wrote:
 here's linpack figures for the Rpi and an Intel D525.

 the D5252 is almost a factor of 6 faster than the Rpi for this 
 benchmark

 Thanks much for doing this!  Not a great result, though.  My feeling 
 is
 that the
 Atom processors are marginal for LinuxCNC, especially in cases with 
 long
 programs or contouring, where the slowness would be more obvious.
 So, if the Pi is 1/6th that speed, that will not be good at all.
 Exactly how this compares on LinuxCNC, where there is also a lot of
 non-FP code, isn't clear.  If LinuxCNC was run with the GUI on 
 another
 system, it might be OK, and for special projects which are not 
 typical
 machines, it might be fine.

--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
___
Emc-developers mailing list
Emc-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-developers


Re: [Emc-developers] gremlin error report gives....an error!

2012-09-10 Thread Pavel Shramov
On Mon, Sep 10, 2012 at 10:58:28AM -0500, Daniel Rogge wrote:
 +def report_gcode_error(self, result, seq, filename):
 + error_str = gcode.strerror(result)  
 + sys.stderr.write(G-Code error in  + os.path.basename(filename) + \n 
 + Near line  
 +  + str(seq) +  of\n + filename + \n + error_str + 
 \n)
 + 
Btw regarding this block - why not to use string from axis with parameter
substitution instead of manual assembly + ... +...?
 
 I don't know why you're seeing that error with hal_gremlin
My bet is that it's instantiated from HAL and thus have all descriptor closed.
It's not a problem, i've post appropriate hal_gremlin function tomorrow.

Pavel

--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
___
Emc-developers mailing list
Emc-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-developers


Re: [Emc-developers] Raspberry Pi running EMC ???

2012-09-10 Thread Kent A. Reed
On 9/10/2012 10:45 AM, Michael Haberler wrote:
 here's linpack figures for the Rpi and an Intel D525.

 the D5252 is almost a factor of 6 faster than the Rpi for this benchmark

 (pull test code with wget http://www.netlib.org/benchmark/linpackc.new)

 pi@raspberrypi ~/tests $ gcc -O linpackc.c -lm -olinpackc
 pi@raspberrypi ~/tests $ ./linpackc
 Enter array size (q to quit) [200]:
 Memory required:  315K.


 LINPACK benchmark, Double precision.
 Machine precision:  15 digits.
 Array size 200 X 200.
 Average rolled and unrolled performance:

  Reps Time(s) DGEFA   DGESL  OVERHEADKFLOPS
 
16   0.66  90.91%   3.03%   6.06%  35440.860
32   1.33  88.72%   3.01%   8.27%  36021.858
64   2.64  88.26%   2.65%   9.09%  36622.222
   128   5.28  89.58%   3.22%   7.20%  35874.830
   256  10.56  88.92%   3.12%   7.95%  36170.096


 mah@atom:~/src$ gcc -O linpackc.c  -lm
 linpackc.c: In function 'main':
 linpackc.c:78: warning: ignoring return value of '€˜fgets'€™, declared with 
 attribute warn_unused_result
 mah@atom:~/src$ ./a.out
 Enter array size (q to quit) [200]:
 Memory required:  315K.


 LINPACK benchmark, Double precision.
 Machine precision:  15 digits.
 Array size 200 X 200.
 Average rolled and unrolled performance:

  Reps Time(s) DGEFA   DGESL  OVERHEADKFLOPS
 
   128   0.96  86.46%   3.12%  10.42%  204403.101
   256   1.91  87.96%   1.05%  10.99%  206807.843
   512   3.82  87.43%   2.62%   9.95%  204403.101
  1024   7.63  87.68%   2.36%   9.96%  204700.631
  2048  15.26  87.42%   2.82%   9.76%  204254.660



I wanted to point to http://elinux.org/Rpi_Performance earlier but I 
couldn't remember where I had seen the numbers.

They reported marginally (ca 15 percent) better LINPACK performance with 
their RPi at 700MHz and managed ca 60KFLOPS by overclocking to 1000MHz.

Your numbers also don't seem out of line with 
http://www.ptxdist.org/development/kernel/arm-benchmarks-20100729_en.html, 
although they tested a BeagleBoard.

I remember feeling ok in the Spring about my BeagleBoard-XM because I 
knew the Raspberry Pi ARM11 cpu uses the older ARMv6 instruction set*; 
then I felt queazy when I realized the RPi includes VFP; now I am 
bemused to read the following (from 
http://vanshardware.com/2010/08/mirror-the-coming-war-arm-versus-x86/ 
which tested yet another ARM system)

 Oddly enough, during our performance optimization experiments, Neon 
 generated the same level of double-precision performance as the VFP, 
 while doubling the VFP’s single-precision performance. When we asked 
 ARM about this, company representatives replied, “NEON improves FP 
 performance significantly. The compiler should be directed to use NEON 
 over the VFP.”


Finally, from mathtest.c comes this 2004 comment by Paul Comer (drawn 
from notes by Fred Proctor)

 /*
math functions are:

extern double sin(double);used in posemath, siggen,  
 noncartesian kins
extern double cos(double);used in posemath, siggen,  
 noncartesian kins
extern double tan(double);not used in RT
extern double asin(double);   not used in RT
extern double acos(double);   used in posemath  noncartesian kins
extern double atan2(double, double);  used in posemath  noncartesian kins
extern double sinh(double);   not used in RT
extern double cosh(double);   not used in RT
extern double tanh(double);   not used in RT
extern double exp(double);not used in RT
extern double log(double);not used in RT
extern double log10(double);  not used in RT
extern double pow(double, double);not used in RT
extern double sqrt(double);   used in tc, segmot,  noncartesean 
 kins.
extern double ceil(double);   used in segmot  emcpid
extern double floor(double);  used by siggen  segmot
extern double fabs(double);   used a lot in RT
extern double ldexp(double, int); not used in RT

extern double sincos(double, double *, double *); Is called at four places 
 in
  posemath - None of the 
 resulting
  functions are used in 
 EMC.
Extras:

extern int isnan(double); Not used directly in RT - But is 
 called
  by several (all ?) of the floating 
 point
   math functions.
 */

Obviously, this ignores the pedestrian functions like add, subtract, 
multiply, divide, negate, and compare, but do you suppose this is still 
an accurate accounting of the floating-point math functions used in 
LinuxCNC?

Regards,
Kent


--
Live Security 

Re: [Emc-developers] Raspberry Pi running EMC ???

2012-09-10 Thread dave
On Mon, 2012-09-10 at 16:41 -0400, Kent A. Reed wrote:
 On 9/10/2012 10:45 AM, Michael Haberler wrote:
  here's linpack figures for the Rpi and an Intel D525.
 
  the D5252 is almost a factor of 6 faster than the Rpi for this benchmark
 
  (pull test code with wget http://www.netlib.org/benchmark/linpackc.new)
 
  pi@raspberrypi ~/tests $ gcc -O linpackc.c -lm -olinpackc
  pi@raspberrypi ~/tests $ ./linpackc
  Enter array size (q to quit) [200]:
  Memory required:  315K.
 
 
  LINPACK benchmark, Double precision.
  Machine precision:  15 digits.
  Array size 200 X 200.
  Average rolled and unrolled performance:
 
   Reps Time(s) DGEFA   DGESL  OVERHEADKFLOPS
  
 16   0.66  90.91%   3.03%   6.06%  35440.860
 32   1.33  88.72%   3.01%   8.27%  36021.858
 64   2.64  88.26%   2.65%   9.09%  36622.222
128   5.28  89.58%   3.22%   7.20%  35874.830
256  10.56  88.92%   3.12%   7.95%  36170.096
 
 
  mah@atom:~/src$ gcc -O linpackc.c  -lm
  linpackc.c: In function 'main':
  linpackc.c:78: warning: ignoring return value of '€˜fgets'€™, declared with 
  attribute warn_unused_result
  mah@atom:~/src$ ./a.out
  Enter array size (q to quit) [200]:
  Memory required:  315K.
 
 
  LINPACK benchmark, Double precision.
  Machine precision:  15 digits.
  Array size 200 X 200.
  Average rolled and unrolled performance:
 
   Reps Time(s) DGEFA   DGESL  OVERHEADKFLOPS
  
128   0.96  86.46%   3.12%  10.42%  204403.101
256   1.91  87.96%   1.05%  10.99%  206807.843
512   3.82  87.43%   2.62%   9.95%  204403.101
   1024   7.63  87.68%   2.36%   9.96%  204700.631
   2048  15.26  87.42%   2.82%   9.76%  204254.660
 
 
 
 I wanted to point to http://elinux.org/Rpi_Performance earlier but I 
 couldn't remember where I had seen the numbers.
 
 They reported marginally (ca 15 percent) better LINPACK performance with 
 their RPi at 700MHz and managed ca 60KFLOPS by overclocking to 1000MHz.
 
 Your numbers also don't seem out of line with 
 http://www.ptxdist.org/development/kernel/arm-benchmarks-20100729_en.html, 
 although they tested a BeagleBoard.
 
 I remember feeling ok in the Spring about my BeagleBoard-XM because I 
 knew the Raspberry Pi ARM11 cpu uses the older ARMv6 instruction set*; 
 then I felt queazy when I realized the RPi includes VFP; now I am 
 bemused to read the following (from 
 http://vanshardware.com/2010/08/mirror-the-coming-war-arm-versus-x86/ 
 which tested yet another ARM system)

A most interesting link! It does look like ARM8 does need to pick up
some processing power. The really interesting thing was the embedded
crypto capability of a couple of the chips. Too bad we don't need that
kind of power. ;-) Still the only thing that really counts is enough
speed to handle motion. We should be able to pass the GUI off to a
dedicated X-term and likewise boards from Jon and Peter are clearly
capable of driving the steppers/servos and handling discrete I/O.
Better cpu's seem to be coming; the tough part is in the waiting. :-)

Dave 

 
  Oddly enough, during our performance optimization experiments, Neon 
  generated the same level of double-precision performance as the VFP, 
  while doubling the VFP’s single-precision performance. When we asked 
  ARM about this, company representatives replied, “NEON improves FP 
  performance significantly. The compiler should be directed to use NEON 
  over the VFP.”
 
 
 Finally, from mathtest.c comes this 2004 comment by Paul Comer (drawn 
 from notes by Fred Proctor)
 
  /*
 math functions are:
 
 extern double sin(double);used in posemath, siggen,  
  noncartesian kins
 extern double cos(double);used in posemath, siggen,  
  noncartesian kins
 extern double tan(double);not used in RT
 extern double asin(double);   not used in RT
 extern double acos(double);   used in posemath  noncartesian 
  kins
 extern double atan2(double, double);  used in posemath  noncartesian 
  kins
 extern double sinh(double);   not used in RT
 extern double cosh(double);   not used in RT
 extern double tanh(double);   not used in RT
 extern double exp(double);not used in RT
 extern double log(double);not used in RT
 extern double log10(double);  not used in RT
 extern double pow(double, double);not used in RT
 extern double sqrt(double);   used in tc, segmot,  noncartesean 
  kins.
 extern double ceil(double);   used in segmot  emcpid
 extern double floor(double);  used by siggen  segmot
 extern double fabs(double);   used a lot in RT
 extern double ldexp(double, int); not used in RT
 
 extern double sincos(double, double *, double *); Is called at four 
  places in
 

Re: [Emc-developers] motion planners plural and multiple X slides

2012-09-10 Thread andy pugh
On 10 September 2012 20:29, EBo e...@sandien.com wrote:
 I do not think will work.  Your blocking flag needs to be read and set
 with an atomic operation (ie. single instruction).

Why isn't a block atomic in the context?

-- 
atp
If you can't fix it, you don't own it.
http://www.ifixit.com/Manifesto

--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
___
Emc-developers mailing list
Emc-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-developers


Re: [Emc-developers] Gwiz what the status?

2012-09-10 Thread Chris Morley


 
  Clearly nobody is using it lately :)
 
 
 I use it for my lathe and haven't noticed any problems.
 
 
  I was thinking that if this was embeddable in the screen and could access
 the
  python script style wizards that it would be a very handy winner.
 
 
 I was thinking the opposite.  It would be nice if we could embed the
 linuxcnc backtrace into GWiz, so when we string together a few commands, we
 could get a visual display of what we are programming.  And as you say,
 enhancing GWiz to support script wizards would be awesome.  Add to that, the
 work that's been done for lathe roughing canned cycle, and it would be a
 pretty complete system for my needs.
 

Frank:

You must be using an older version of EMC2 or fixed the scripts up to use 
linuxcnc.
The version in the repository was broken for linuxcnc.

Some up to date docs need to be written.
If you have some time maybe you could write up the basic use in the wiki?

And if Ken could document how to add new wizards...

Chris M
  
--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
___
Emc-developers mailing list
Emc-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-developers


Re: [Emc-developers] motion planners plural and multiple X slides

2012-09-10 Thread EBo
On Tue, 11 Sep 2012 01:32:59 +0200, andy pugh wrote:
 On 10 September 2012 20:29, EBo e...@sandien.com wrote:
 I do not think will work.  Your blocking flag needs to be read and 
 set
 with an atomic operation (ie. single instruction).

 Why isn't a block atomic in the context?

Did you intend your read/set to be atomic?  If so then you and I are on 
the same page.  If not then I was just trying to make a point.  From 
your reaction it seems that you already know what I meant and it is just 
a point of us agreeing that it needs to me there and I did not 
understand that your read honored the necessity.

Other than that, reading a value does not modify the value in an atomic 
operation so that the next one does not slip through.  Let me see if I 
cam make this any sense...

thread #1  thread #2
wait until flag1 unset some instruction...
some instruction...wait until flag1 unset
set flag1  some instruction...
some other instruction...  set flag1

now both threads are in the critical region if the the thread context 
switch happens in the wrong place.  I'm assuming at this point that we 
are both agreed that this is a bad idea, but the sublty is in how either 
of us pseudo-coded the problem.

Now addressing a separate issue of block[ing] atomic operations.  
There are times you want blocking and/or non-blocking operations.  My 
wait was intended to be blocking (ie not unblocked).  But that is 
besides the point.  Can we agree that atomicity of lock/semaphore/mutex 
is useful/necessary here?

   EBo --


--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
___
Emc-developers mailing list
Emc-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-developers


Re: [Emc-developers] Raspberry Pi running EMC ???

2012-09-10 Thread EBo
Artec has built a 6 dof NURB in FPGA, and hacked EMC2 (sim) to feed it. 
An open source solution for FPGA would be fascinating to me, but the 
problem might have already been solved.  What do you want to do that is 
different than their solution?

On Tue, 11 Sep 2012 00:23:44 +0300, Topi Rinkinen wrote:
 Hi,

 I have RPi playing Internet radio, and another one waiting for some 
 fun
 activities.
 I have been thinking integrating a small FPGA or CPLD with RPi,
 especially targeted to CNC or motor control applications.
 For starters one could use Lattice's MachXO2 based evaluation kits 
 (USD
 30), and connect it to GPIO connector of RPi.

 But I don't know anything about EMC2 software architecture, so I 
 cannot
 start easily.

 My background is in FPGA design, and I think I can quite quickly 
 develop
 a library of needed VHDL modules to be run on CPLD/FPGA.
 If someone other could compile a list of activities that need FPGA's
 realtime and rough specifications, I can start coding the modules.

 BR, -Topi


 On Mon, 2012-09-10 at 16:41 -0400, Kent A. Reed wrote:
 On 9/10/2012 10:45 AM, Michael Haberler wrote:
  here's linpack figures for the Rpi and an Intel D525.
 
  the D5252 is almost a factor of 6 faster than the Rpi for this 
 benchmark
 
  (pull test code with wget 
 http://www.netlib.org/benchmark/linpackc.new)
 
  pi@raspberrypi ~/tests $ gcc -O linpackc.c -lm -olinpackc
  pi@raspberrypi ~/tests $ ./linpackc
  Enter array size (q to quit) [200]:
  Memory required:  315K.
 
 
  LINPACK benchmark, Double precision.
  Machine precision:  15 digits.
  Array size 200 X 200.
  Average rolled and unrolled performance:
 
   Reps Time(s) DGEFA   DGESL  OVERHEADKFLOPS
  
 16   0.66  90.91%   3.03%   6.06%  35440.860
 32   1.33  88.72%   3.01%   8.27%  36021.858
 64   2.64  88.26%   2.65%   9.09%  36622.222
128   5.28  89.58%   3.22%   7.20%  35874.830
256  10.56  88.92%   3.12%   7.95%  36170.096
 
 
  mah@atom:~/src$ gcc -O linpackc.c  -lm
  linpackc.c: In function 'main':
  linpackc.c:78: warning: ignoring return value of '€˜fgets'€™, 
 declared with attribute warn_unused_result
  mah@atom:~/src$ ./a.out
  Enter array size (q to quit) [200]:
  Memory required:  315K.
 
 
  LINPACK benchmark, Double precision.
  Machine precision:  15 digits.
  Array size 200 X 200.
  Average rolled and unrolled performance:
 
   Reps Time(s) DGEFA   DGESL  OVERHEADKFLOPS
  
128   0.96  86.46%   3.12%  10.42%  204403.101
256   1.91  87.96%   1.05%  10.99%  206807.843
512   3.82  87.43%   2.62%   9.95%  204403.101
   1024   7.63  87.68%   2.36%   9.96%  204700.631
   2048  15.26  87.42%   2.82%   9.76%  204254.660
 


 I wanted to point to http://elinux.org/Rpi_Performance earlier but I
 couldn't remember where I had seen the numbers.

 They reported marginally (ca 15 percent) better LINPACK performance 
 with
 their RPi at 700MHz and managed ca 60KFLOPS by overclocking to 
 1000MHz.

 Your numbers also don't seem out of line with
 
 http://www.ptxdist.org/development/kernel/arm-benchmarks-20100729_en.html,
 although they tested a BeagleBoard.

 I remember feeling ok in the Spring about my BeagleBoard-XM because 
 I
 knew the Raspberry Pi ARM11 cpu uses the older ARMv6 instruction 
 set*;
 then I felt queazy when I realized the RPi includes VFP; now I am
 bemused to read the following (from
 
 http://vanshardware.com/2010/08/mirror-the-coming-war-arm-versus-x86/
 which tested yet another ARM system)

  Oddly enough, during our performance optimization experiments, 
 Neon
  generated the same level of double-precision performance as the 
 VFP,
  while doubling the VFP’s single-precision performance. When we 
 asked
  ARM about this, company representatives replied, “NEON improves FP
  performance significantly. The compiler should be directed to use 
 NEON
  over the VFP.”


 Finally, from mathtest.c comes this 2004 comment by Paul Comer 
 (drawn
 from notes by Fred Proctor)

  /*
 math functions are:
 
 extern double sin(double);used in posemath, siggen, 
  noncartesian kins
 extern double cos(double);used in posemath, siggen, 
  noncartesian kins
 extern double tan(double);not used in RT
 extern double asin(double);   not used in RT
 extern double acos(double);   used in posemath  
 noncartesian kins
 extern double atan2(double, double);  used in posemath  
 noncartesian kins
 extern double sinh(double);   not used in RT
 extern double cosh(double);   not used in RT
 extern double tanh(double);   not used in RT
 extern double exp(double);not used in RT
 extern double log(double);not used in RT
 extern double log10(double);  not used in RT
 extern double pow(double, double); 

Re: [Emc-developers] Emc-developers Digest, Vol 77, Issue 17

2012-09-10 Thread EBo
You are welcome...

I'm tired enough that I cannot think through this, but if the following 
example honors full concurrency then I agree.  Can you set up an 
experimental test bench that fully exercises a number of critical 
sections across threads?  I am not sure if it would work in Glade or 
not, but I am curious if it can be made to work.  As a note, I am really 
interested in working minimal cases and not what if's.  Do you have time 
to hammer on this?

   EBo --

On Mon, 10 Sep 2012 07:31:09 +0200, ro...@abcnc.se wrote:
 Thnks for your input EBo!


 Part of the project  is promised to take shape this week.
 That means it's in the nutsbolt-phase, at least partially.

 The GUI is prioritized and Glade is suggested to be used.

 Pythons TCP-inteface is also in the pipe.
 Tried this yesterday:

 **
 # Echo server program
 import socket

 HOST = '' # Symbolic name meaning all available 
 interfaces
 PORT = 50007  # Arbitrary non-privileged port
 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
 s.bind((HOST, PORT))
 s.listen(1)
 conn, addr = s.accept()
 print 'Connected by', addr
 while 1:
 data = conn.recv(1024)
 if not data: break
 conn.sendall(data)
 conn.close()
 ***
 with it's clientpart.

 I guess this code could run with Glade?

 And then we have the issue of interfacing LinuxCncRsh(LCRsh) to 
 Glade.

 It's functions:
 - Create socket conections to all targets
 - Load all target files. (max 10)
 - Start all targets
 - Monitor all systems over LCRsh
 (Synchronism will be solved separately in this stage.)

 This could I guess, all be done in Glade/Python creating the 
 following GUI
 items:

 - TCP address list
 - G-code source file list
 - per target main state indicators a la Axis:





 From: EBo e...@sandien.com
 Subject: Re: [Emc-developers] LinuxCNC-cluster run by Modbus etc...
 To: emc-developers@lists.sourceforge.net
 Message-ID: e2f5e5508933c7823a609083b35cf...@mail.swcp.com
 Content-Type: text/plain; charset=UTF-8; format=flowed

 I guess that the only thing I can add at this point is that you can
 have course- or fine-grain parallelism.  I can easily see how to do 
 #3
 below using a course-grained approach by writing separate programs 
 in
 each one of the work envelope regions, and then having a master 
 command
 the machines in basically a task based approach (and wait until each 
 of
 the tasks are done before moving forward).  The nice thing about 
 this is
 that the workload can be adjusted on the fly to accommodate networks 
 of
 machines that do the same operation.  All that being said, I did not
 think that that is what you had in mind...

 On Sat, 8 Sep 2012 11:39:49 +0200, Roger Holmquist wrote:
 Hello again!

 Well, I have to comment my last slighly cryptic post and focus on 
 the
 subject.

 The subject is a cluster of syncchronized LinuxCnc-driven machines.

 That means U have to add ccertain functionality beyond LinuxCNC.

 1) Remote controlling every machine
 2) Remotely feed it with Gcode
 3) Take care of synchronism,  fault states and collision risks.
 4) ( A GUI )

 1) Seem to be solved by using LinuxCncRsh who can
 - Load a gcode-file
 - execute it
 - monitor it
 - recieve certain fault states
 - terminante it

 2) could be done over ftp -or- by dripfeeding over linuxcncrsh

 3) is the hard part, possible support may come from subsystems like
 - MODBUS SW
 - REDIS
 - Ladder logic
 - TCP socket managing SW, may be included in some of the above
 packages
 - Something else?

 The preferred configuration is supposed to be Master-Slave with one
 of the machines configured as master.

 The GUI should be an non-systemdependent addition, U should be able
 to run the system from  terminal just like LinuxCncRsh

 Could it be simplified?


 / Roger

 7 sep 2012 kl. 19:42 skrev
 emc-developers-requ...@lists.sourceforge.net:

 Yes the emcrsh is renamed and linuxCNC who is installed,  seem to
 leave my request to open that nonexisting task in silence or is it
 any logfile somewhere?

 linuxcncrsh runs just fine, haven't checked all functionality yet
 but it looks good.

 Now I need an engine with tcp-connectivity for synchronism and
 error-handling...
 And a GUI...
 I think I mentioned that earlier, MODBUS was named, seem to be
 integrated somewhere already after some brief encounter in the
 linuxCNC jungle


 
 --
 Live Security Virtual Conference
 Exclusive live event will cover all the ways today's security and
 threat landscape has changed and how IT managers can respond. 
 Discussions
 will include endpoint security, mobile security and the latest in 
 malware
 threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
 ___
 Emc-developers mailing list
 Emc-developers@lists.sourceforge.net
 

Re: [Emc-developers] motion planners plural and multiple X slides

2012-09-10 Thread EBo
Michael,

Not sure where to start or finish here.  It will be interesting to see 
how HAL and Thread interact to deal with critical regions I can see it 
working.  The question is how elegantly we can get this to work.  I 
think it might be as simple as a semaphore (stretched between two user 
defined G codes -- g91/g92...)

Now I need to get back to work...  I hope this all works out.

   EBo --


On Mon, 10 Sep 2012 07:25:53 +0200, Michael Haberler wrote:

 Ebo,

 Michael,

 I agree.  I wanted to add one thing to your modular abstraction that 
 I
 hope will help.

 it's good to hear the idea isnt considered totally outlandish


 Instead of thinking about separate machines, maybe we can think 
 about
 named groups of actuators and sensors operating together.

 This would definitely be needed, yes

 Terminology: how do we name that? A good short term would be great.
 (I'll use 'beast' for the rest of this message to encourage finding 
 of
 a better term;)

 IMO it encompasses: a HAL+threads instance with a messaging interface
 (in the CNC context: with some mechanical entity attached to it)

 Currently there is no name for it, and since it's a singleton now and
 implicit, no data structure exists to support a reference to it.


 You could
 separate a spindle from an XYZA table if you do not threading.  On 
 the
 other hand, if you have a pick and place robot feeding a couple of
 routers, then each machine has a group of XYZ's (which may or may 
 not)
 be driven by separate controllers, but are always handled by 
 separate
 process threads.   This way a router with a dual gantry could be
 abstracted to run independently, but with the added 
 process/thread/group
 message communication.

 right, this would amount to sending different message streams to
 different beasts, in an unsynchronized manner; just fire off some
 rs274ngc scripts in different instances.


 Brainstorming on controlling a 6 head tool screw machine (like in 
 the
 video someone posted recently).  Each axis/tool has a dependency 
 graph.
 As soon as all depend operations are completed I can insert the new 
 one
 in the queue.  Now check against the different tools crashing 
 against
 each other you can have them move basically independently if they do 
 not
 overlap either spatially or temporally.

 syncing multiple beasts came up repeatedly

 I think any primitive supporting this must be at the beast level, as
 the rs274ngc level is too macroscopic - a word may be decomposed into
 many messages.

 ---

 Note that there is *some* implicit synchronization of motion commands
 in place right now; there are two classes of commands:

 - sequenced: e.g. 2 feed moves a,b: b only starts with a complete (at
 the message interface level; the fact that blending may happen is
 irrelevant here)
 - immediate: pause, abort, feed hold ..

 the term used in the code is 'issuing a command', and whether a
 'command can be issued' at a given point in time is determined by the
 command *type*, and the sequencing decisions are based on serial
 numbers and completion indications
 the issuing logic is partly in task, and partly in motion (and
 complex to understand)

 Now lets rename the expression 'OK to issue a command' to
 'precondition for execution of a command is true'; if we can
 generalize this precondition for issuing a bit we might get the
 multi-beast synchronization almost for free, as this is just another
 messaging interaction (yeah, right, free code, sure ;)

 As for synchronization primitives, I can think of two forms:

 - beast A waits for beast B to reach a certain point in the
 execution, meaning A blocks for B but not vice versa (asymmetric 
 sync)
 - beast A and beast B join at a sync point. This is symmetric
 synchronization, and basically the pthreads_join(), or the Ada
 rendezvous for you DoD oldtimers;)

 Again: a good term is needed for sync point.

 I could think of the following language constructs:

 Asymmetric sync in 'named beast A' would require something like:

 reach(x) # the current beast A has reached sync point 'x'; this
 is nonblocking and basically a broadcast or message of reached(A,X)
 to all beasts

   in beast B we would have:

 waitfor(A,x) # B blocks until beast A has executed 'reach(x)'

 Symmetric multi-party rendezvous is the implicit combination of a
 sync point and a list of waitfor's:

 join(y, B,C,D)  # A blocks until B, C, and D also have reached 
 'x'

   eg beast B would have:

 join(x, A,C,D)

 I'll see whether I can cook up some Petri net drawings, those are
 great at describing such stuff concisely, FSM's dont cut it. Actually
 I'll see how I can wire this into my Python mockup.

 Deadlock detection and prevention is another issue, which suggests
 thinking about identification and ordering of sync points.

 If rs274ngc had no control structures, just a linear flow, it would
 be possible to determine statically whether a given set of programs
 using sync primitives is deadlock-free. With