Как реализовать связь пинов HAL с переменными подпрограммы?

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2857
Откуда: Тюмень
Контактная информация:

Re: Как реализовать связь пинов HAL с переменными подпрограм

Сообщение Сергей Саныч »

Ворон226 писал(а):А как?
Вот есть команда G38.x Если использовать ее в виде G38.2 или G38.4, то при несрабатывании датчика программа останавливается и выбрасывает ошибку. А если G38.3 или G38.5 - то мы имеем возможность, проанализировав параметр 5070, самостоятельно сообщить пользователю об ошибке, или предпринять какие-то другие действия и корректно выйти из подпрограммы (если нужно).

Код: Выделить всё

o<zero_z> sub
#<TLS_height> = 43.13 
G49
G40
G10 L2 P1 Z0.
G91
G38.3 Z-25 F500
#<_RealWork> = #5070 ; Флаг реальной работы (отличие от предпросмотра)
o123 if[#5070 NE 0]
 G38.5 Z2. ; Отъедем назад
 G38.2 Z-3. F30 ; Уточним на малой скорости
o123 else
 M100 P0 ; Сообщение "Датчик не обнаружен"
o123 endif
o124 if[#<_RealWork> NE 0]
 G10 L20 P1 Z[#<TLS_height>]
o124 endif
G00 Z20
G90
o<zero_z> endsub
Чудес не бывает. Бывают фокусы.
Аватара пользователя
odekolon
Мастер
Сообщения: 1103
Зарегистрирован: 05 ноя 2014, 14:53
Репутация: 360
Настоящее имя: Борис
Контактная информация:

Re: Как реализовать связь пинов HAL с переменными подпрограм

Сообщение odekolon »

всем привет
конструкция типа
#100 = <_hal[halname]>
работает

но мне нужна обратная процедура
то есть присвоить пинам halnameNN, значение переменных #1NN
ну типа
значение переменной #100 присвоить пину p100
переменной #101 присвоить пину p101
переменной #102 присвоить пину p102
и так далее...

про m68, я знаю, а еще способы есть?
"Капиталистом стать можно лишь тогда, когда обогатишь свою память знанием всех тех богатств, которые выработало человечество"
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Как реализовать связь пинов HAL с переменными подпрограм

Сообщение Serg »

Через М1ХХ и halcmd
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
SergCNC
Новичок
Сообщения: 11
Зарегистрирован: 05 янв 2022, 20:45
Репутация: 0
Настоящее имя: Сергей Борисович
Контактная информация:

Re: Как реализовать связь пинов HAL с переменными подпрограммы?

Сообщение SergCNC »

Здравствуйте)
Linux CNC 2.7.15 - Glade 3.8.0 соэдана панелька paramTEST.glade.
Есть 2 программки в /home/cnc/linuxcnc/nc_files/LEV.ngc и PRAV.ngc c одинаковыми переменными.
Реализовал изменение переменных с помощью spinbox-ов, но
1. Как сохранять в значениях по умолчанию в spinbox <property name="value">24000</property> последние введенные значения?
2. Как с помощью radiobatton загружать LEV.ngc или PRAV.ngc ?
3. Как с помощью кнопки ALL_HOME "хоумить" все оси?
4. Как ползунком смещать рабочий 0 (хоть G54) по оси Х?
Вложения
paramTEST.glade
(17.38 КБ) 76 скачиваний
LEV.ngc
(349 байт) 94 скачивания
custom_postgui.hal
(469 байт) 86 скачиваний
ROBOT.ini
(2.08 КБ) 88 скачиваний
Побольше Вам таких, как Вы, на вашем жизненном пути!
ex71
Мастер
Сообщения: 697
Зарегистрирован: 18 май 2019, 13:23
Репутация: 96
Настоящее имя: Андрей
Контактная информация:

Re: Как реализовать связь пинов HAL с переменными подпрограммы?

Сообщение ex71 »

SergCNC писал(а): 1. Как сохранять в значениях по умолчанию в spinbox
наверное через файл переменных
https://forum.linuxcnc.org/24-hal-compo ... n?start=60
SergCNC писал(а): 3. Как с помощью кнопки ALL_HOME "хоумить" все оси?
[JOINT_0]HOME_SEQUENCE = 0
[JOINT_1]HOME_SEQUENCE = 1
сие означает, что 0 ось будет хомится первой, а 1 ось второй. То есть для роутера в Z ставим 0, а в XY ставим 1. Тогда сначала поднимается инструмент, потом едет в плоскости.
https://linuxcnc.org/docs/html/config/i ... ple_layout
Аватара пользователя
SergCNC
Новичок
Сообщения: 11
Зарегистрирован: 05 янв 2022, 20:45
Репутация: 0
Настоящее имя: Сергей Борисович
Контактная информация:

Re: Как реализовать связь пинов HAL с переменными подпрограммы?

Сообщение SergCNC »

По поводу грузки програмы *.ngc ..
axis-remote /home/cnc/linuxcnc/nc_files/LEV.ngc - работает в терминале при запущенном axis
как правильно это запустить нажатием кнопки на панеле?
Побольше Вам таких, как Вы, на вашем жизненном пути!
Аватара пользователя
SergCNC
Новичок
Сообщения: 11
Зарегистрирован: 05 янв 2022, 20:45
Репутация: 0
Настоящее имя: Сергей Борисович
Контактная информация:

Re: Как реализовать связь пинов HAL с переменными подпрограммы?

Сообщение SergCNC »

SergCNC писал(а): По поводу грузки програмы *.ngc ..
В nc_files создаем ИСПОЛНЯЕМЫЙ файл без расширения M199 (от100 до 199) с содержимым:

#!/bin/bash
axis-remote /home/cnc/linuxcnc/nc_files/LEV.ngc
exit 0

к пину кнопки вызова привязывем MDI команду M199:

В custom_postgui.hal создаем связь
net l_call halui.mdi-command-02 gladevcp.hal_lev_call

В ROBOT.ini добавляем третью MDI команду
MDI_COMMAND = M199

сохраняем, запускаем, жмем кнопку и .... ошибка
can`t do that (EMC_TASK_PLAN_OPEN:506) in manual mode
хотя прямой запуск файла М199 загружает прогу без проблемм :thinking:
Побольше Вам таких, как Вы, на вашем жизненном пути!
Аватара пользователя
SergCNC
Новичок
Сообщения: 11
Зарегистрирован: 05 янв 2022, 20:45
Репутация: 0
Настоящее имя: Сергей Борисович
Контактная информация:

Re: Как реализовать связь пинов HAL с переменными подпрограммы?

Сообщение SergCNC »

торько в режиме MDI работает.....
Побольше Вам таких, как Вы, на вашем жизненном пути!
Аватара пользователя
SergCNC
Новичок
Сообщения: 11
Зарегистрирован: 05 янв 2022, 20:45
Репутация: 0
Настоящее имя: Сергей Борисович
Контактная информация:

Re: Как реализовать связь пинов HAL с переменными подпрограммы?

Сообщение SergCNC »

Код: Выделить всё

#!/usr/bin/python

import linuxcnc
c = linuxcnc.command()
c.program_open("LEVAYA.ngc")
вообще пишет "Не могу открыть файл"
Побольше Вам таких, как Вы, на вашем жизненном пути!
Kost_irk
Мастер
Сообщения: 995
Зарегистрирован: 19 июл 2018, 07:46
Репутация: 193
Откуда: Иркутск
Контактная информация:

Re: Как реализовать связь пинов HAL с переменными подпрограммы?

Сообщение Kost_irk »

А так пробовали?

import os
os.system("axis-remote filename.ngc")
Аватара пользователя
SergCNC
Новичок
Сообщения: 11
Зарегистрирован: 05 янв 2022, 20:45
Репутация: 0
Настоящее имя: Сергей Борисович
Контактная информация:

Re: Как реализовать связь пинов HAL с переменными подпрограммы?

Сообщение SergCNC »

работает, только если находится в режиме MDI

Добавление

Код: Выделить всё

#!/usr/bin/python

import os
import linuxcnc
c = linuxcnc.command()
c.mode(linuxcnc.MODE_MDI)
c.wait_complete()
os.system("axis-remote /home/cnc/linuxcnc/nc_files/LEVAYA.ngc")
не помогло, вообще глухо
Побольше Вам таких, как Вы, на вашем жизненном пути!
Аватара пользователя
SergCNC
Новичок
Сообщения: 11
Зарегистрирован: 05 янв 2022, 20:45
Репутация: 0
Настоящее имя: Сергей Борисович
Контактная информация:

Re: Как реализовать связь пинов HAL с переменными подпрограммы?

Сообщение SergCNC »

самое интересное, что

Код: Выделить всё

#!/usr/bin/python

import os
os.system("axis-remote /home/cnc/linuxcnc/nc_files/LEVAYA.ngc")
отлично работает если просто запустить на исполнение файл М110....
Побольше Вам таких, как Вы, на вашем жизненном пути!
Kost_irk
Мастер
Сообщения: 995
Зарегистрирован: 19 июл 2018, 07:46
Репутация: 193
Откуда: Иркутск
Контактная информация:

Re: Как реализовать связь пинов HAL с переменными подпрограммы?

Сообщение Kost_irk »

У меня вот так работает, усложнять задачу халом пока не пробовал, оно надо?

Код: Выделить всё

<?xml version="1.0" encoding="UTF-8"?>
<interface>
  <requires lib="gtk+" version="2.24"/>
  <!-- interface-requires gladevcp 0.0 -->
  <!-- interface-naming-policy project-wide -->
  <object class="EMC_Action_Python" id="vcp_action_python1">
    <property name="command">import math;import os;os.system("axis-remote /home/kost/linuxcnc/test.ngc");print 'Button pressed';print math</property>
  </object>
  <object class="GtkWindow" id="window1">
    <property name="can_focus">False</property>
    <child>
      <object class="GtkButton" id="button1">
        <property name="label" translatable="yes">button</property>
        <property name="visible">True</property>
        <property name="can_focus">True</property>
        <property name="receives_default">True</property>
        <property name="related_action">vcp_action_python1</property>
        <property name="use_action_appearance">False</property>
      </object>
    </child>
  </object>
</interface>
Аватара пользователя
SergCNC
Новичок
Сообщения: 11
Зарегистрирован: 05 янв 2022, 20:45
Репутация: 0
Настоящее имя: Сергей Борисович
Контактная информация:

Re: Как реализовать связь пинов HAL с переменными подпрограммы?

Сообщение SergCNC »

у меня не стартует, по ходу у меня нет EMC_Action_Python...

Код: Выделить всё

(gladevcp:6853): libglade-WARNING **: did not finish in PARSER_FINISH state
**** GLADE VCP ERROR:    With xml file: ./custompanel.glade : could not create GladeXML object
<commandline>:0: gladevcp exited without becoming ready
6801
6844
Stopping realtime threads
Unloading hal components
Побольше Вам таких, как Вы, на вашем жизненном пути!
Аватара пользователя
SergCNC
Новичок
Сообщения: 11
Зарегистрирован: 05 янв 2022, 20:45
Репутация: 0
Настоящее имя: Сергей Борисович
Контактная информация:

Re: Как реализовать связь пинов HAL с переменными подпрограммы?

Сообщение SergCNC »

есть только vcp_action_open , но как им пользоваться ненаю...
Побольше Вам таких, как Вы, на вашем жизненном пути!
Ответить

Вернуться в «LinuxCNC»