Страница 12 из 23
					
				Re: FAQ по Gcode, примеры
				Добавлено: 08 сен 2014, 16:40
				 Nick
				Проверьте кто-нибудь, сохранятся ли параметры при аварийном выходе - например отключении питания? 
Т.е. вопрос в том когда обновляется файл, при изменении параметра или при штатном завершении LinuxCNC?
			 
			
					
				Re: FAQ по Gcode, примеры
				Добавлено: 08 сен 2014, 17:47
				 Serg
				Оно в процессе работы старается сохранять при любом изменении R/W переменных, правда в очень редких случаях (лень описывать условия) может не сохранять.
			 
			
					
				Re: FAQ по Gcode, примеры
				Добавлено: 22 сен 2014, 12:07
				 Тандем
				Был случай: при пропадании питания слетели пользовательские настройки (оффсеты систем координат). То есть в итоге имеем не старые данные, не новые, а именно нули.
			 
			
					
				Re: FAQ по Gcode, примеры
				Добавлено: 22 сен 2014, 12:48
				 Serg
				При пропадании питания может быть всё, что угодно. Например оригинальный файл с переменными переименовался в .bak, а новый хоть и создался, но ещё находился в кэше и на диск ещё не лёг - очевидно, что в таком случае при пропадании питания он и умрёт вместе с содержимым ОЗУ, а при след. запуске linuxcnc обнаружив отсутствие файла с переменными создаст его заново с нулями.
Это не глюк и не баг - это расплата за быстродействие. Если не нравится, то можно отключить для ФС отложенную запись.
			 
			
					
				Re: FAQ по Gcode, примеры
				Добавлено: 30 сен 2014, 17:20
				 gennadiy
				Который день пытаюсь и не получается выполнять команды Python из M-code. Например:
Код: Выделить всё
#!/usr/bin/python
import linuxcnc
c = linuxcnc.command()
c.mode(linuxcnc.MODE_MDI)
c.wait_complete()
c.mdi("G0 X10")
Если запускать скрипт из терминала, то работает как надо.
Файл назвал M100 и сделал исполняемый. Находится он как прописано в .ini PROGRAM_PREFIX.
 
			 
			
					
				Re: FAQ по Gcode, примеры
				Добавлено: 30 сен 2014, 17:42
				 Nick
				Попробуй добавить какой-то вывод, может оно не отрабатывает из-за конфликтов с linuxcnc. 
Что говорит вообще?
Из консоли запускал, смотрел вывод? 
Как точно файл называется? M большая?
			 
			
					
				Re: FAQ по Gcode, примеры
				Добавлено: 30 сен 2014, 17:54
				 gennadiy
				Что значит "добавить вывод"?
Ошибок не выдаёт и имя файла М100 с большой буквы М.
			 
			
					
				Re: FAQ по Gcode, примеры
				Добавлено: 30 сен 2014, 18:04
				 Nick
				Ну чтобы писало в консоль или в log "строка такая-то, делаю то-то" и потом смотришь, запускается она вообще или нет. И опять же запусти linuxcnc из консоли, посмотри, может туда что-то выдается.
			 
			
					
				Re: FAQ по Gcode, примеры
				Добавлено: 30 сен 2014, 18:29
				 gennadiy
				Вот через терминал. Программа идёт до этой строки и дальше тишина...
			 
			
					
				Re: FAQ по Gcode, примеры
				Добавлено: 30 сен 2014, 18:35
				 Nick
				Ага... т.е. он подвис и ты его вырубил? 
Вообще, походу ждет переход в режим mdi... 
Вообще, вообще... ты эту команду как вызываешь? 
А то получается как, вызываешь команду, она просит сменить режим на MDI, но т.к. мы сейчас выполняем команду M100 до ее выполнения переключать режим нельзя... получается что команда ждет завершение самой себя 

...
Как в общем ты ее планируешь использовать? Что будет эта функция делать?
 
			 
			
					
				Re: FAQ по Gcode, примеры
				Добавлено: 30 сен 2014, 18:50
				 gennadiy
				Я М100 повесил на кнопку pyVCP через MDI_COMMAND = M100
А вообще хотел запускать программу G-code, нажав кнопку, с заданной строки командой
Код: Выделить всё
c.auto(linuxcnc.AUTO_RUN, program_start_line)
Может можно как-нибудь запустить скрипт кнопкой не используя M-code (M100...M199)?
 
			 
			
					
				Re: FAQ по Gcode, примеры
				Добавлено: 30 сен 2014, 20:42
				 Nick
				gennadiy писал(а):Я М100 повесил на кнопку pyVCP через MDI_COMMAND = M100
это лучше все делать через subroutines
O<foobar> CALL 
.... и файл foobar.ngc c O<foobar> SUB
gennadiy писал(а):А вообще хотел запускать программу G-code, нажав кнопку, с заданной строки командой
Так.... это... в gladevcp вроде есть такая кнопка сейчас... или я что-то путаю?
 
			 
			
					
				Re: FAQ по Gcode, примеры
				Добавлено: 30 сен 2014, 22:13
				 gennadiy
				"Gladevcp" - это ж Python нужно знать и быть программистом. Переделать то, что есть на pyVCP наверное у меня не получится.
			 
			
					
				Re: FAQ по Gcode, примеры
				Добавлено: 01 окт 2014, 10:18
				 nkp
				gennadiy писал(а):Который день пытаюсь и не получается выполнять команды Python из M-code. Например:
Код: Выделить всё
#!/usr/bin/python
import linuxcnc
c = linuxcnc.command()
c.mode(linuxcnc.MODE_MDI)
c.wait_complete()
c.mdi("G0 X10")
Если запускать скрипт из терминала, то работает как надо.
Файл назвал M100 и сделал исполняемый. Находится он как прописано в .ini PROGRAM_PREFIX.
 
попробуй так:
Код: Выделить всё
#!/usr/bin/python
import linuxcnc
c = linuxcnc.command() 
c.mdi("G91 G0 X10")
 
			 
			
					
				Re: FAQ по Gcode, примеры
				Добавлено: 01 окт 2014, 11:26
				 Nick
				gennadiy писал(а):"Gladevcp" - это ж Python нужно знать и быть программистом. Переделать то, что есть на pyVCP наверное у меня не получится.
Gladevcp это тот же pyvcp, только с красивым редактором, не более того. 
Т.е. просто на панельку добавляешь кнопки и все, у тебя появляются пины, так же как в pyvcp, или просто уже работающие кнопки. 
Вот пример исходника панельки сделанного на gladevcp, ничего не напоминает? 
Код: Выделить всё
<?xml version="1.0" encoding="UTF-8"?>
<interface>
  <!-- interface-requires gladevcp 0.0 -->
  <requires lib="gtk+" version="2.16"/>
  <!-- interface-naming-policy project-wide -->
  <object class="GtkWindow" id="window1">
    <child>
      <object class="GtkVBox" id="vbox1">
        <property name="visible">True</property>
        <property name="spacing">2</property>
        <child>
          <object class="GtkFrame" id="frame1">
            <property name="visible">True</property>
            <property name="label_xalign">0</property>
            <property name="shadow_type">none</property>
            <child>
              <object class="GtkAlignment" id="alignment1">
                <property name="visible">True</property>
                <property name="left_padding">12</property>
                <child>
                  <object class="HAL_HBar" id="spindle-rpm-hbar">
                    <property name="visible">True</property>
                    <property name="bg_color">#bebebebebebe</property>
                    <property name="max">2500</property>
                    <property name="z0_border">0.69999998807907104</property>
                    <property name="z0_color">#0000ffff0000</property>
                    <property name="z1_border">0.89999997615814209</property>
                    <property name="z1_color">#ffffffff0000</property>
                    <property name="z2_color">#ffff00000000</property>
                  </object>
                </child>
              </object>
            </child>
            <child type="label">
              <object class="GtkLabel" id="label1text">
                <property name="visible">True</property>
                <property name="label" translatable="yes"><b>Spindle</b></property>
                <property name="use_markup">True</property>
              </object>
            </child>
          </object>
          <packing>
            <property name="position">0</property>
          </packing>
        </child>
        <child>
          <object class="GtkFrame" id="frame2">
            <property name="visible">True</property>
            <property name="label_xalign">0</property>
            <property name="shadow_type">none</property>
            <child>
              <object class="GtkAlignment" id="alignment2">
                <property name="visible">True</property>
                <property name="left_padding">12</property>
                <child>
                  <object class="HAL_Table" id="status">
                    <property name="visible">True</property>
                    <property name="n_rows">6</property>
                    <property name="n_columns">2</property>
                    <child>
                      <object class="HAL_LED" id="led1">
                        <property name="visible">True</property>
                        <property name="pick_color_off">#000000000000</property>
                        <property name="pick_color_on">#ffffb7b90b5c</property>
                      </object>
                    </child>
                    <child>
                      <object class="HAL_LED" id="led2">
                        <property name="visible">True</property>
                        <property name="pick_color_off">#000000000000</property>
                        <property name="pick_color_on">#1d56ab6dfd26</property>
                      </object>
                      <packing>
                        <property name="top_attach">1</property>
                        <property name="bottom_attach">2</property>
                      </packing>
                    </child>
                    <child>
                      <object class="HAL_LED" id="led3">
                        <property name="visible">True</property>
                        <property name="pick_color_off">#000000000000</property>
                        <property name="pick_color_on">#ffff327ff2b6</property>
                      </object>
                      <packing>
                        <property name="top_attach">2</property>
                        <property name="bottom_attach">3</property>
                      </packing>
                    </child>
                    <child>
                      <object class="HAL_Label" id="prepared-tool">
                        <property name="visible">True</property>
                        <property name="label" translatable="yes">label</property>
                        <property name="text_template">Prepared tool: %s</property>
                      </object>
                      <packing>
                        <property name="left_attach">1</property>
                        <property name="right_attach">2</property>
                      </packing>
                    </child>
                    <child>
                      <object class="HAL_Label" id="current-tool">
                        <property name="visible">True</property>
                        <property name="label" translatable="yes">label</property>
                        <property name="text_template">Current tool: %s</property>
                      </object>
                      <packing>
                        <property name="left_attach">1</property>
                        <property name="right_attach">2</property>
                        <property name="top_attach">1</property>
                        <property name="bottom_attach">2</property>
                      </packing>
                    </child>
                    <child>
                      <object class="HAL_LED" id="led4">
                        <property name="visible">True</property>
                        <property name="led_shape">2</property>
                      </object>
                      <packing>
                        <property name="top_attach">3</property>
                        <property name="bottom_attach">4</property>
                      </packing>
                    </child>
                    <child>
                      <object class="HAL_LED" id="led5">
                        <property name="visible">True</property>
                        <property name="led_shape">2</property>
                        <property name="on_color">yellow</property>
                      </object>
                      <packing>
                        <property name="top_attach">4</property>
                        <property name="bottom_attach">5</property>
                      </packing>
                    </child>
                    <child>
                      <object class="HAL_LED" id="led6">
                        <property name="visible">True</property>
                        <property name="led_shape">2</property>
                        <property name="on_color">green</property>
                      </object>
                      <packing>
                        <property name="top_attach">5</property>
                        <property name="bottom_attach">6</property>
                      </packing>
                    </child>
                    <child>
                      <object class="HAL_Label" id="combo-value">
                        <property name="visible">True</property>
                        <property name="label" translatable="yes">label</property>
                        <property name="text_template">System: %s</property>
                      </object>
                      <packing>
                        <property name="left_attach">1</property>
                        <property name="right_attach">2</property>
                        <property name="top_attach">2</property>
                        <property name="bottom_attach">3</property>
                      </packing>
                    </child>
                    <child>
                      <object class="HAL_Label" id="scale-value">
                        <property name="visible">True</property>
                        <property name="label" translatable="yes">label</property>
                        <property name="label_pin_type">1</property>
                        <property name="text_template">Scale value: %.4f</property>
                      </object>
                      <packing>
                        <property name="left_attach">1</property>
                        <property name="right_attach">2</property>
                        <property name="top_attach">3</property>
                        <property name="bottom_attach">4</property>
                      </packing>
                    </child>
                    <child>
                      <object class="HAL_Label" id="spin-value">
                        <property name="visible">True</property>
                        <property name="label" translatable="yes">label</property>
                        <property name="label_pin_type">1</property>
                        <property name="text_template">Spinbutton: %.2f</property>
                      </object>
                      <packing>
                        <property name="left_attach">1</property>
                        <property name="right_attach">2</property>
                        <property name="top_attach">4</property>
                        <property name="bottom_attach">5</property>
                      </packing>
                    </child>
                    <child>
                      <object class="GtkLabel" id="hits">
                        <property name="visible">True</property>
                        <property name="label" translatable="yes">Hits: 0</property>
                      </object>
                      <packing>
                        <property name="left_attach">1</property>
                        <property name="right_attach">2</property>
                        <property name="top_attach">5</property>
                        <property name="bottom_attach">6</property>
                      </packing>
                    </child>
                  </object>
                </child>
              </object>
            </child>
            <child type="label">
              <object class="GtkLabel" id="label2text">
                <property name="visible">True</property>
                <property name="label" translatable="yes"><b>Status</b></property>
                <property name="use_markup">True</property>
              </object>
            </child>
          </object>
          <packing>
            <property name="position">1</property>
          </packing>
        </child>
        <child>
          <object class="GtkFrame" id="frame3">
            <property name="visible">True</property>
            <property name="label_xalign">0</property>
            <property name="shadow_type">none</property>
            <child>
              <object class="GtkAlignment" id="alignment3">
                <property name="visible">True</property>
                <property name="left_padding">12</property>
                <child>
                  <object class="HAL_Table" id="settings">
                    <property name="visible">True</property>
                    <property name="n_rows">3</property>
                    <property name="n_columns">3</property>
                    <child>
                      <object class="HAL_Button" id="button">
                        <property name="label" translatable="yes">LED 1</property>
                        <property name="visible">True</property>
                        <property name="can_focus">True</property>
                        <property name="receives_default">True</property>
                        <accelerator key="g" signal="clicked" modifiers="GDK_CONTROL_MASK"/>
                        <accelerator key="n" signal="clicked" modifiers="GDK_CONTROL_MASK"/>
                        <accelerator key="b" signal="activate" modifiers="GDK_CONTROL_MASK"/>
                        <signal name="pressed" handler="on_button_press"/>
                      </object>
                      <packing>
                        <property name="top_attach">1</property>
                        <property name="bottom_attach">2</property>
                      </packing>
                    </child>
                    <child>
                      <object class="HAL_HScale" id="scale">
                        <property name="visible">True</property>
                        <property name="can_focus">True</property>
                        <property name="adjustment">adjustment1</property>
                      </object>
                      <packing>
                        <property name="left_attach">1</property>
                        <property name="right_attach">2</property>
                        <property name="top_attach">1</property>
                        <property name="bottom_attach">2</property>
                      </packing>
                    </child>
                    <child>
                      <object class="HAL_SpinButton" id="spin">
                        <property name="visible">True</property>
                        <property name="can_focus">True</property>
                        <property name="invisible_char">●</property>
                        <property name="adjustment">adjustment2</property>
                      </object>
                      <packing>
                        <property name="left_attach">1</property>
                        <property name="right_attach">2</property>
                        <property name="top_attach">2</property>
                        <property name="bottom_attach">3</property>
                      </packing>
                    </child>
                    <child>
                      <object class="HAL_ToggleButton" id="toggle">
                        <property name="label" translatable="yes">LED2
toggle</property>
                        <property name="visible">True</property>
                        <property name="can_focus">True</property>
                        <property name="receives_default">True</property>
                        <accelerator key="d" signal="clicked" modifiers="GDK_MOD1_MASK"/>
                        <accelerator key="c" signal="activate" modifiers="GDK_MOD1_MASK"/>
                      </object>
                      <packing>
                        <property name="top_attach">2</property>
                        <property name="bottom_attach">3</property>
                      </packing>
                    </child>
                    <child>
                      <object class="HAL_RadioButton" id="radio1">
                        <property name="label" translatable="yes">radiobutton</property>
                        <property name="visible">True</property>
                        <property name="can_focus">True</property>
                        <property name="receives_default">False</property>
                        <property name="active">True</property>
                        <property name="draw_indicator">True</property>
                      </object>
                      <packing>
                        <property name="left_attach">2</property>
                        <property name="right_attach">3</property>
                      </packing>
                    </child>
                    <child>
                      <object class="HAL_RadioButton" id="radio2">
                        <property name="label" translatable="yes">radiobutton</property>
                        <property name="visible">True</property>
                        <property name="can_focus">True</property>
                        <property name="receives_default">False</property>
                        <property name="active">True</property>
                        <property name="draw_indicator">True</property>
                        <property name="group">radio1</property>
                      </object>
                      <packing>
                        <property name="left_attach">2</property>
                        <property name="right_attach">3</property>
                        <property name="top_attach">1</property>
                        <property name="bottom_attach">2</property>
                      </packing>
                    </child>
                    <child>
                      <object class="HAL_RadioButton" id="radio3">
                        <property name="label" translatable="yes">radiobutton</property>
                        <property name="visible">True</property>
                        <property name="can_focus">True</property>
                        <property name="receives_default">False</property>
                        <property name="active">True</property>
                        <property name="draw_indicator">True</property>
                        <property name="group">radio1</property>
                      </object>
                      <packing>
                        <property name="left_attach">2</property>
                        <property name="right_attach">3</property>
                        <property name="top_attach">2</property>
                        <property name="bottom_attach">3</property>
                      </packing>
                    </child>
                    <child>
                      <object class="HAL_ComboBox" id="combo">
                        <property name="visible">True</property>
                        <property name="model">offset-list</property>
                        <property name="active">0</property>
                        <property name="column">1</property>
                        <child>
                          <object class="GtkCellRendererText" id="cellrenderertext1"/>
                          <attributes>
                            <attribute name="text">0</attribute>
                          </attributes>
                        </child>
                      </object>
                      <packing>
                        <property name="left_attach">1</property>
                        <property name="right_attach">2</property>
                      </packing>
                    </child>
                    <child>
                      <object class="HAL_CheckButton" id="check">
                        <property name="label" translatable="yes">checkbutton</property>
                        <property name="visible">True</property>
                        <property name="can_focus">True</property>
                        <property name="receives_default">False</property>
                        <property name="draw_indicator">True</property>
                      </object>
                    </child>
                  </object>
                </child>
              </object>
            </child>
            <child type="label">
              <object class="GtkLabel" id="label3text">
                <property name="visible">True</property>
                <property name="label" translatable="yes"><b>Settings</b></property>
                <property name="use_markup">True</property>
              </object>
            </child>
          </object>
          <packing>
            <property name="position">2</property>
          </packing>
        </child>
        <child>
          <object class="GtkFrame" id="frame4">
            <property name="visible">True</property>
            <property name="label_xalign">0</property>
            <property name="shadow_type">none</property>
            <child>
              <object class="GtkAlignment" id="alignment4">
                <property name="visible">True</property>
                <property name="left_padding">12</property>
                <child>
                  <object class="HAL_HBox" id="commands">
                    <property name="visible">True</property>
                    <child>
                      <object class="GtkButton" id="button1">
                        <property name="label" translatable="yes">   Goto
machine
    zero</property>
                        <property name="visible">True</property>
                        <property name="can_focus">True</property>
                        <property name="receives_default">True</property>
                        <property name="related_action">hal_action_mdi1</property>
                      </object>
                      <packing>
                        <property name="position">0</property>
                      </packing>
                    </child>
                    <child>
                      <object class="GtkButton" id="button2">
                        <property name="label" translatable="yes">      Goto
current system
      zero</property>
                        <property name="visible">True</property>
                        <property name="can_focus">True</property>
                        <property name="receives_default">True</property>
                        <property name="related_action">hal_action_mdi2</property>
                      </object>
                      <packing>
                        <property name="position">1</property>
                      </packing>
                    </child>
                    <child>
                      <object class="GtkToggleButton" id="togglebutton1">
                        <property name="label" translatable="yes">Excute Oword
  subroutine</property>
                        <property name="visible">True</property>
                        <property name="can_focus">True</property>
                        <property name="receives_default">True</property>
                        <property name="related_action">hal_toggleaction_mdi1</property>
                      </object>
                      <packing>
                        <property name="position">2</property>
                      </packing>
                    </child>
                  </object>
                </child>
              </object>
            </child>
            <child type="label">
              <object class="GtkLabel" id="label4text">
                <property name="visible">True</property>
                <property name="label" translatable="yes"><b>Commands</b></property>
                <property name="use_markup">True</property>
              </object>
            </child>
          </object>
          <packing>
            <property name="position">3</property>
          </packing>
        </child>
      </object>
    </child>
  </object>
  <object class="EMC_Action_MDI" id="hal_action_mdi1">
    <property name="command">G53 G0  X0 Y0 Z0</property>
  </object>
  <object class="EMC_Action_MDI" id="hal_action_mdi2">
    <property name="command">g0 X0 Y0 Z0</property>
  </object>
  <object class="EMC_ToggleAction_MDI" id="hal_toggleaction_mdi1">
    <property name="command"> O<oword> call [${spin-f}] [${check}] [${toggle}] [${scale}] [${spin-f}]  [${combo-s}]</property>
  </object>
  <object class="GtkAdjustment" id="adjustment1">
    <property name="upper">100</property>
    <property name="step_increment">1</property>
  </object>
  <object class="GtkAdjustment" id="adjustment2">
    <property name="upper">100</property>
    <property name="step_increment">10</property>
  </object>
  <object class="GtkListStore" id="offset-list">
    <columns>
      <!-- column-name System -->
      <column type="gchararray"/>
      <!-- column-name Number -->
      <column type="gint"/>
    </columns>
    <data>
      <row>
        <col id="0" translatable="yes">G54</col>
        <col id="1">0</col>
      </row>
      <row>
        <col id="0" translatable="yes">G55</col>
        <col id="1">1</col>
      </row>
      <row>
        <col id="0" translatable="yes">G56</col>
        <col id="1">2</col>
      </row>
      <row>
        <col id="0" translatable="yes">G57</col>
        <col id="1">3</col>
      </row>
      <row>
        <col id="0" translatable="yes">G58</col>
        <col id="1">4</col>
      </row>
      <row>
        <col id="0" translatable="yes">G59</col>
        <col id="1">5</col>
      </row>
      <row>
        <col id="0" translatable="yes">G59.1</col>
        <col id="1">6</col>
      </row>
      <row>
        <col id="0" translatable="yes">G59.2</col>
        <col id="1">7</col>
      </row>
      <row>
        <col id="0" translatable="yes">G59.3</col>
        <col id="1">8</col>
      </row>
    </data>
  </object>
</interface>
 
			 
			
					
				Re: FAQ по Gcode, примеры
				Добавлено: 01 окт 2014, 23:42
				 gennadiy
				nkp писал(а):попробуй так:
Код: Выделить всё
#!/usr/bin/python
import linuxcnc
c = linuxcnc.command() 
c.mdi("G91 G0 X10")
 
Да, так работает. 
Я уже понял, что во время выполнения скрипта на Python (используя M100...M199) нельзя менять режим работы интерпретатора вот этими командами:
Код: Выделить всё
c.abort()
c.mode(linuxcnc.MODE_MDI)
c.mode(linuxcnc.MODE_AUTO)
c.mode(linuxcnc.MODE_MANUAL)
 
Nick писал(а): у тебя появляются пины, так же как в pyvcp
Nick, это то, что надо! Даже попробовал кнопкой стартовать с нужной строки G-code.
Всем спасибо!
 
			 
			
					
				Re: FAQ по Gcode, примеры
				Добавлено: 02 янв 2015, 02:19
				 nkp
				интересно  - с чем связано ограничение на активацию цифровых пинов из gcode 
при G41-42 :
ну ладно бы связаные  с движением М62-63 , но тут не дает прописать М64-65
 
			 
			
					
				Re: FAQ по Gcode, примеры
				Добавлено: 12 янв 2015, 11:15
				 Nick
				Хмм M66 тоже не работает... 
надо на linuxcnc.org запостить...
			 
			
					
				Re: FAQ по Gcode, примеры
				Добавлено: 12 янв 2015, 12:32
				 Serg
				В исходниках для этих проверок есть специальный блок кода - видно, что специально сделано.
Можно по истории комитов поискать когда добавилось и посмотреть зачем именно.
P.S. Мне лень... 

 
			 
			
					
				Re: FAQ по Gcode, примеры
				Добавлено: 24 янв 2015, 11:22
				 Lexxa
				Подскажите, как запустить цикл типа "for" внутри g кода?
Т.е. хочу выполнять кусок  g кода n раз.