Parameters to classicladder possible?

More
6 years 8 months ago #157369 by 3D-Master
Hello,

i want to switch a "image bit" with the parameter for the rotation around the z axis in the current coordinate system but neither do i find this parameter nor do i think it is possible because these parameters have a rhombus (#) so linuxcnc would not read this line.
is there any hal pin for rotation around z in the current coordinate system?

how could this be done?

i thought about comparing the value of this parameter in classicladder and if it is 0 then it should not output a signal.

Please Log in to join the conversation.

More
6 years 8 months ago #157371 by cmorley
Can you restate what you want to do - assuming I don't know what you are talking of.

You need to know if the coordinate system is rotated via a HAL pin?

Chris

Please Log in to join the conversation.

More
6 years 8 months ago #157376 by 3D-Master
at work we use Heidenhain controllers which lets you know if there is a rotation around the z axis by showing you a small icon. I want to create something similar for my machine. I have already implemented the "image bit" and can switch the images using halshow and setp.

for that to work automatically i need to use a pin which has the rotation value for the active coordinate system, which i can feed into classicladder.

it is just a small gimmicky bit i want to have but if it is not possible then it is okay (meaning it is not neccesary)

Please Log in to join the conversation.

More
6 years 8 months ago #157392 by cmorley
Thanks for explaining again.
You can do this by building a python component that monitors linuxcnc's status of rotation_xy and then outputs the status on a HAL pin.

or if you already are using a gladevcp panel with a python handler file you could add the same idea there.

linuxcnc.org/docs/2.8/html/config/python...xcnc_stat_attributes

linuxcnc.org/docs/2.8/html/hal/halmodule.html


Chris

Please Log in to join the conversation.

More
6 years 8 months ago #157393 by cmorley
If you are using 2.8+ Gstat has a 'current-z-rotation' message which may be somewhat easier to use.

you could probably adapt this sample:
linuxcnc.org/docs/2.8/html/gui/GStat.htm...mponent_code_pattern

Please Log in to join the conversation.

More
6 years 8 months ago #157426 by 3D-Master
thank you, i will have a look at it :)

Please Log in to join the conversation.

More
6 years 8 months ago #157437 by 3D-Master
i have edited the example and i am 99% sure there is something wrong because i am a python noob:
Code:
#!/usr/bin/env python import hal from hal_glib import GStat import gobject GSTAT = GStat() # callback to change HAL pin state def mode_changed(obj, data): h['rotation_xy'] = data # Make a component and pins h = hal.component("metric_status") h.newpin("rotation_xy", hal.HAL_FLOAT, hal.HAL_OUT) h.ready() # connect a GSTAT message to a callback function GSTAT.connect("metric-mode-changed",mode_changed) # force GSTAT to initialize states GSTAT.forced_update() # loop till exit try: gobject.MainLoop().run() except KeyboardInterrupt: raise SystemExit

do i need to "compile" the python file or can i just put it somewhere and call it via a M code? Then how is the newly created pin called? h.rotation_z.out?

btw i am using pyvcp, not gladevcp

Please Log in to join the conversation.

More
6 years 8 months ago #157441 by cmorley
Code:
#!/usr/bin/env python import hal from hal_glib import GStat import gobject GSTAT = GStat() # callback to change HAL pin state # there is a current angle status pin and an is-rotated bool pin def angle_changed(obj, data): h['z-rotated-angle'] = data if data == 0: h['z-is-rotated'] = False else: h['z-is-rotated'] = True # Make a component and pins h = hal.component("z_rotation") h.newpin("z-rotated-angle", hal.HAL_FLOAT, hal.HAL_OUT) h.newpin("z-is-rotated", hal.HAL_BIT, hal.HAL_OUT) h.ready() # connect a Z rotation message to the callback function GSTAT.connect("current-z-rotation", angle_changed) # force GSTAT to initialize states GSTAT.forced_update() # loop till exit try: gobject.MainLoop().run() except KeyboardInterrupt: raise SystemExit

There are two pins; one for the angle, one for 'is-rotated' (bool pin)
The component will be called 'z_rotation'

Save the program as z_rotation.py in your config folder
load the component with 'loadusr python z_rotation.py'

Chris

Please Log in to join the conversation.

More
6 years 8 months ago #157443 by 3D-Master
Thank you,

the component works like expected but when i want to connect the pin (halshow says the pin is named: z_rotation.z-rotated-angle)

i get an error saying the pin "z_rotation.z-rotated-angle" does not exist. i tried using ".out" and ".h" but it didnt work.

The component is loaded first and then the pin is being searched.

Please Log in to join the conversation.

More
6 years 8 months ago #157446 by cmorley
sounds like a race condition.
How did you load the program and connect the pins - what file - you may need to use the -wn option to make HAL wait till the pins are made.

loadusr -Wn z_rotation python rotation.py

Chris

Please Log in to join the conversation.

Time to create page: 0.098 seconds
Powered by Kunena Forum