Перейти к публикации

Помогите разобраться в скрипте =)


FCLM

Рекомендованные сообщения

Люди добрые, помогите разобраться в скрипте, буду благодарен любому комменту, совершенно не с кем поговорить на эту тему =(((

   global mom_cycle_spindle_axis mom_sys_work_plane_change
   global traverse_axis1 traverse_axis2 mom_motion_event mom_machine_mode
   global mom_pos mom_prev_pos mom_from_pos mom_last_pos mom_sys_home_pos
   global mom_sys_tool_change_pos
   global spindle_first rapid_spindle_inhibit rapid_traverse_inhibit

   if { ![info exists mom_from_pos($mom_cycle_spindle_axis)] &&\
         [info exists mom_sys_home_pos($mom_cycle_spindle_axis)] } {

      set mom_from_pos(0) $mom_sys_home_pos(0)
      set mom_from_pos(1) $mom_sys_home_pos(1)
      set mom_from_pos(2) $mom_sys_home_pos(2)

   } elseif { ![info exists mom_sys_home_pos($mom_cycle_spindle_axis)] &&\
               [info exists mom_from_pos($mom_cycle_spindle_axis)] } {

      set mom_sys_home_pos(0) $mom_from_pos(0)
      set mom_sys_home_pos(1) $mom_from_pos(1)
      set mom_sys_home_pos(2) $mom_from_pos(2)

   } elseif { ![info exists mom_sys_home_pos($mom_cycle_spindle_axis)] &&\
              ![info exists mom_from_pos($mom_cycle_spindle_axis)] } {

      set mom_from_pos(0) 0.0 ; set mom_sys_home_pos(0) 0.0
      set mom_from_pos(1) 0.0 ; set mom_sys_home_pos(1) 0.0
      set mom_from_pos(2) 0.0 ; set mom_sys_home_pos(2) 0.0
   }

Что имменно непонятно:
1. вот этот фрагмент:
 { ![info exists mom_from_pos($mom_cycle_spindle_axis)] &&\  [info exists mom_sys_home_pos($mom_cycle_spindle_axis)] } 
 На сколько я понял порядок чтения примерно следующий: если условие [info exists mom_from_pos($mom_cycle_spindle_axis)] не выполняется а условие [info exists mom_sys_home_pos($mom_cycle_spindle_axis)] } выполняется то тогда мы присваиваем значения переменным. А если первое условие выполняется вместе со вторым то тогда мы пропускаем присвоение переменных. Или другими словами 
если оба условия после обработки первого оператором ! (лог отрицание) равны нулю или единице то тогда мы выполняем присвоение значений переменным а если они не равны между собой то мы идём к elseif.  

 

2. Не понятен формат записи [info exists mom_from_pos($mom_cycle_spindle_axis)], вроде бы как после оператора info exists должен следовать аргумент в данном случае mom_from_pos а тут дополнительно ещё один аргумент запилили причём без пробела и в 
скобках в итоге мы имеем [info exists mom_sys_home_pos($mom_cycle_spindle_axis)].

 

3. При присваивании значений переменным также странный формат записи например выше объявляется переменная mom_from_pos, при присваивании ей значения она уже превращается в mom_from_pos(0), а значение ей присваивается из переменной mom_sys_home_pos(0) 
которая выше объявлялась как mom_sys_home_pos.

 

4. Знак \ после оператора && означает простой перенос строки после объявления оператора?

 

5. В описании указано: info exists varName Возвращает 1, если переменная varName существует в текущем контексте как локальная или как глобальная переменная. В противном случае возвращает 0. Что понимается под понятием текущий контекст? Не он ли указан в скобках и тогда строка [info exists mom_from_pos($mom_cycle_spindle_axis)] расшифровывается как если значение переменной mom_from_pos равняется значению переменной mom_cycle_spindle_axis то тогда в квадратных скобках мы имеем "1" в противном случае "0"? Но в описании переменных они как то с друг дружкой не очень вяжутся mom_cycle_spindle_axis - это вроде как рабочая плоскость, а mom_from_pos это координаты исходной точки?

Ссылка на сообщение
Поделиться на других сайтах


Всё встаёт на свои места, если понять, что mom_from_pos - массив, а mom_from_pos(0) значение по X

Ссылка на сообщение
Поделиться на других сайтах

Скачай komodo и протестируй, это будет лучше всего. 

{ ![info exists mom_from_pos($mom_cycle_spindle_axis)] &&\  [info exists mom_sys_home_pos($mom_cycle_spindle_axis)] }

![info exists mom_from_pos($mom_cycle_spindle_axis)]

info exists mom_from_pos($mom_cycle_spindle_axis) - функция возвращает true если элемент массива mom_from_pos($mom_cycle_spindle_axis) - существует 

 [info exists mom_sys_home_pos($mom_cycle_spindle_axis)] - аналогично 

Ссылка на сообщение
Поделиться на других сайтах
  • 2 месяца спустя...
В 12.11.2019 в 22:39, denis3122 сказал:

Скачай komodo и протестируй, это будет лучше всего. 

{ ![info exists mom_from_pos($mom_cycle_spindle_axis)] &&\  [info exists mom_sys_home_pos($mom_cycle_spindle_axis)] }

![info exists mom_from_pos($mom_cycle_spindle_axis)]

info exists mom_from_pos($mom_cycle_spindle_axis) - функция возвращает true если элемент массива mom_from_pos($mom_cycle_spindle_axis) - существует 

 [info exists mom_sys_home_pos($mom_cycle_spindle_axis)] - аналогично 

Спасибо за разъяснения! 

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.
Примечание: вашему сообщению потребуется утверждение модератора, прежде чем оно станет доступным.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




  • Сообщения

    • Artas28
      Вдруг кому поможет. Параметр 3408 по дефолту 0. Его меняли на 118000, что бы он был больше чем координаты, на котором остановился станок. Типа увеличивает лимиты для ручного перемещения. На другом скрине 3404 тоже менялся. Шпиндель опустить получилось.
    • Koels
      Кнопкой overtravel пробовали?
    • karlf
      Тут красная не должна гореть   А тут должна зелёная гореть    Есть ещё самый первый бэкап, который со станком приехал, но он в формате .ВСК, не пойму чем и как его открыть. Он гарантированно рабочий.  
    • tompsongun
      Коперник 4.4.2 - исправил регресс - свойство Наименование из имени файла при запуске затиралось, если в свойстве конфига модели его не было, но если ввести символ при переименовке, то считывание из имени файла происходило. сделал проверку, и если Наименование и Обозначение в свойствах модели иные чем имя файла - включится чек-бокс Своё;  - считывание свойств Формат, Примечание, Раздел, Наименование из свойств общих, если они не обнаружены в конфиге. Коперник 4.4.2.zip  
    • adolf80
      А реально ЛИР-390Ф кто ни будь ставил вместо РОН285? Работает на хенде?
    • Larionov
      Доброго дня, коллеги! Подобная беда. Настроил по инструкции Fanuc Oi-mf. Пинг есть. Но при смене устройства. Ищет папку и не выдает ошибку поиска. Подскажите в какую сторону копать? Где может быть проблема?  
    • Koels
      А вообще, я потрогал сам радиатор привода в работе, и не смотря на включённые вентиляторы на самом радиаторе, он был очень горячий. Прикрутили два здоровых вентиля к этому привода, может дело было в перегреве. Дк меняли целиком привод новый, я писал, до меня ещё дело было. Меняли привод каждые пол года
    • Anat2015
      Бывает, что виноват не сам вентилятор, а схема его контролирующая, в приводе стоит.
    • Koels
      Про все это в курсе. И про внутренний вентилятор и про радиатор. Разъём тоже в норме. Вот это очень полезно. Спасибо.
    • Anat2015
      Это не описание ошибки, а описание массива ошибок. О чем ваша конкретная ошибка говорит должно быть в мануале на станок. Если энкодеры по оси абсолютные и наверняка есть программные конечники, можно попробовать их изменить, чтобы ось оказалась в разрешенной зоне. Если есть аппаратные датчики overtravel - заблокировать их. Только все очень аккуратно, чтоб еще дальше не уехать и не сломать механику. А с какого перепугу шпиндель поехал выше точки смены инструмента? Кто то порылся в параметрах? Опять человеческий фактор?
×
×
  • Создать...