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

FAQ/Unigraphics/POST


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

Только что, artem-nafanya сказал:

С этим кодом тоже самое((

Совсем думать не хотите)

if { !$bsearch } {

    lappend list_tool $row_tool

} elseif { ![info exists double_tools($row_tool)] } { set double_tools($row_tool) 0 }

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


15 минут назад, lexincton сказал:

Совсем думать не хотите)

if { !$bsearch } {

    lappend list_tool $row_tool

} elseif { ![info exists double_tools($row_tool)] } { set double_tools($row_tool) 0 }

Я уж битый час думаю.

Пока что несколько строчек кода с вложенными командами это неподъёмно, если только не указать, что конкретно тут не так.

Ссылка на сообщение
Поделиться на других сайтах
10 минут назад, artem-nafanya сказал:

Я уж битый час думаю.

Пока что несколько строчек кода с вложенными командами это неподъёмно, если только не указать, что конкретно тут не так.

Так тоже не работает? В сообщении же указание на ошибку - [info exists double_tools($row_tool)]  обращение без $ должно быть

Ссылка на сообщение
Поделиться на других сайтах
3 минуты назад, lexincton сказал:

Так тоже не работает? В сообщении же указание на ошибку - [info exists double_tools($row_tool)]  обращение без $ должно быть

Так ошибку не выдаёт.

Я не понимал, если переменная double_tools объявлена, то не значит что он не может быть с символом $ или без него.

 

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

Благодарность @lexincton

Проверка на одинаковые номера инструментов  

#запись

if { ![info exists list_tool] } { set list_tool {} }
set row_tool $mom_tool_number
set bsearch 0
foreach tool $list_tool {
    if { $tool == $row_tool } {
        set bsearch 1
        break
    }
}
if { !$bsearch } {
    lappend list_tool $row_tool
} elseif { ![info exists double_tools($row_tool)] } { set double_tools($row_tool) 0 }

 

#чтение

foreach number [array names double_tools]  {
MOM_display_message "ОБНАРУЖЕНЫ ОДИНАКОВЫЕ НОМЕРА ИНСТРУМЕНТОВ T$number"
}

Hide  

 

В итоге рабочий код для проверки одинаковых номеров инструментов выглядит так:

часть #запись поместил в

часть #чтение в репроцесс в завершении программы. Если весь код поместить в "автоматическую смену инструмента", то почему-то дважды выводит одно и тоже сообщение.

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

@lexincton

Объединил преимущества первого и второго вариант кода для формирования и вывода списка инструментов.

 

Показать содержимое  

1) В событии начала программы инициируем массив, в который будем собирать необходимую информацию о применяемом инструменте:

global array_tool_name
global tool_index_max

set tool_index_max ""

for {set i 1} {$i<=$tool_index_max} {incr i} {
set array_tool_name($i) ""
}

 

2) В событии начало программы добавляем команду пользователя:

 

global mom_tool_adjust_register
global mom_tool_number
global list_tool

#НАПОЛНЕНИЕ МАССИВА ДАННЫМИ
set tool_data "; T$mom_tool_number / D$mom_tool_adjust_register"

if { ![info exists list_tool] } { set list_tool {} }
set row_tool $tool_data
set bsearch 0
foreach tool $list_tool {
    if { $tool == $row_tool } {
        set bsearch 1
        break
    }
}
if { !$bsearch } { lappend list_tool $row_tool }

 

 

3) В событии конца программы добавляем команду:

 

global list_tool
global ptp_file_name

#НАЧАЛО РЕПРОЦЕССА
set tmp_file_name "${ptp_file_name}_"

if {[file exists $tmp_file_name]} {
MOM_remove_file $tmp_file_name
}

MOM_close_output_file $ptp_file_name
file rename $ptp_file_name $tmp_file_name
set ifile [open $tmp_file_name r]
set ofile [open $ptp_file_name w]


set buf ""
#ВЫВОД СОДЕРЖИМОГО МАССИВА С ПОМОЩЬЮ ЦИКЛА
foreach number [lsort -ascii $list_tool] {
        puts $ofile $number
}
#ВЫВОД ОСТАЛЬНОЙ ЧАСТИ УП
while { [gets $ifile buf] > 0 } {
       puts $ofile $buf}

close $ifile
close $ofile

MOM_remove_file $tmp_file_name
MOM_open_output_file $ptp_file_name

Hide  

Будет выводить список в таком формате:

Показать содержимое  

; T2 / D1
; T3 / D1
; T3 / D2
; T6 / D1

Hide  
Правда нумерацию кадров сюда "прикрутить" не удалось.
Ссылка на сообщение
Поделиться на других сайтах
16 минут назад, artem-nafanya сказал:

Правда нумерацию кадров сюда "прикрутить" не удалось.

mom_seqnum

Изменено пользователем lexincton
Ссылка на сообщение
Поделиться на других сайтах
32 минуты назад, lexincton сказал:

mom_seqnum

Если добавить сюда:

set tool_data "$mom_seqnum ;T$mom_tool_number / D$mom_tool_adjust_register"

То выводит так:

160 ;T2 / D1
250 ;T2 / D1
390 ;T6 / D1
40. ;T2 / D1
550. ;T3 / D1
640. ;T3 / D2

 

Если добавить сюда:

foreach number [lsort -ascii $list_tool] {
puts $ofile "$mom_seqnum $number"
}

То выводит так:

710 ;T2 / D1
710 ;T2 / D1
710 ;T6 / D1
710 ;T2 / D1
710 ;T3 / D1
710 ;T3 / D2

 

Надо чтобы было так:

100 ;T2 / D1
110 ;T2 / D1
120 ;T6 / D1
130 ;T2 / D1
140 ;T3 / D1
150 ;T3 / D2

А дальнейшие кадры УП начинались со 160 или иного номера кадра, на котором закончится нумерация массива с инструментами.

Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, artem-nafanya сказал:

А дальнейшие кадры УП начинались со 160 или иного номера кадра, на котором закончится нумерация массива с инструментами.

Если это Fanuc или Siemens, то можно номера кадров не указывать. Или вы уже очень серьёзно настроены победить неправильную нумерацию?:smile: Как вариант, можно сначала постпроцессировать программу без нумерации кадров, а в конце написать процедуру, которая уже, вашу полностью готовую программу со всеми добавлениями, пронумерует.

Ссылка на сообщение
Поделиться на других сайтах
6 минут назад, vicebear сказал:

Если это Fanuc или Siemens, то можно номера кадров не указывать. Или вы уже очень серьёзно настроены победить неправильную нумерацию?:smile: Как вариант, можно сначала постпроцессировать программу без нумерации кадров, а в конце написать процедуру, которая уже, вашу полностью готовую программу со всеми добавлениями, пронумерует.

Да, в принципе оно и так работает на станке. Просто будет подряд несколько кадров с одинаковыми номерами.

Интересно как это можно реализовать, ведь в советском постпроцессоре это как-то сделали, неужели сейчас сложнее или раньше трава была зеленее и программисты сильнее))

Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, artem-nafanya сказал:

Интересно как это можно реализовать, ведь в советском постпроцессоре это как-то сделали, неужели сейчас сложнее или раньше трава была зеленее и программисты сильнее))

Как это реализовать @vicebear написал, вот реализация:

 

#ВЫВОД ОСТАЛЬНОЙ ЧАСТИ УП

global mom_sys_seqnum_start mom_sys_seqnum_incr

set mom_seqnum $mom_sys_seqnum_start

while { [gets $ifile buf] > 0 } {
       puts $ofile "N$mom_seqnum $buf"

       incr mom_seqnum  $mom_sys_seqnum_incr

}
close $ifile
close $ofile

 

Соотв-но в программе выключить нумерацию

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

Эх, а кто же мне поможет с моей трансформацией и вообще с этими расчетами координат. Уж больно "тонкий" этот слой, что в упор не вижу. Печаль...

Ссылка на сообщение
Поделиться на других сайтах
16 часов назад, Jobman21 сказал:

Эх, а кто же мне поможет с моей трансформацией и вообще с этими расчетами координат. Уж больно "тонкий" этот слой, что в упор не вижу. Печаль...

Почитайте для начала про переменные mom_kin_* и переменные mom_*_matrix.

Ссылка на сообщение
Поделиться на других сайтах
20 часов назад, lexincton сказал:

Как это реализовать @vicebear написал, вот реализация:

 

Показать содержимое  

#ВЫВОД ОСТАЛЬНОЙ ЧАСТИ УП

global mom_sys_seqnum_start mom_sys_seqnum_incr

set mom_seqnum $mom_sys_seqnum_start

while { [gets $ifile buf] > 0 } {
       puts $ofile "N$mom_seqnum $buf"

       incr mom_seqnum  $mom_sys_seqnum_incr

}
close $ifile
close $ofile

MOM_remove_file $tmp_file_name
MOM_open_output_file $ptp_file_name

Соотв-но в программе выключить нумерацию

Hide  

Способ хорош и работает, но он нумерует "#ВЫВОД ОСТАЛЬНОЙ ЧАСТИ УП", с нумерацией которой всё в порядке. Надо чтобы нумеровал только одну строку в массиве "2)" как описано выше.

Изменено пользователем artem-nafanya
Ссылка на сообщение
Поделиться на других сайтах
48 минут назад, artem-nafanya сказал:

Способ хорош и работает, но он нумерует "#ВЫВОД ОСТАЛЬНОЙ ЧАСТИ УП", с нумерацией которой всё в порядке. Надо чтобы нумеровал только одну строку в массиве "2)" как описано выше.

global mom_sys_seqnum_start mom_sys_seqnum_incr
set mom_seqnum $mom_sys_seqnum_start

 

#ВЫВОД СОДЕРЖИМОГО МАССИВА С ПОМОЩЬЮ ЦИКЛА
foreach number [lsort -ascii $list_tool] {
        puts $ofile "N$mom_seqnum $number"

        incr mom_seqnum  $mom_sys_seqnum_incr
}
#ВЫВОД ОСТАЛЬНОЙ ЧАСТИ УП
while { [gets $ifile buf] > 0 } {
       puts $ofile "N$mom_seqnum $buf"

       incr mom_seqnum  $mom_sys_seqnum_incr

}

close $ifile
close $ofile

MOM_remove_file $tmp_file_name
MOM_open_output_file $ptp_file_name

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

Как сделать что бы нумеровалась только вторая строчка из массива, а не первая?

18 минут назад, lexincton сказал:

#ВЫВОД СОДЕРЖИМОГО МАССИВА С ПОМОЩЬЮ ЦИКЛА
foreach number [lsort -ascii $list_tool] {
        puts $ofile "N$mom_seqnum $number"

        incr mom_seqnum  $mom_sys_seqnum_incr
}

Изменено пользователем artem-nafanya
Ссылка на сообщение
Поделиться на других сайтах
10 минут назад, artem-nafanya сказал:

Как сделать что бы нумеровалась только вторая строчка из массива, а не первая?

#ВЫВОД СОДЕРЖИМОГО МАССИВА С ПОМОЩЬЮ ЦИКЛА

set i 1
foreach number [lsort -ascii $list_tool] {

        set seq_temp ""

        if { $i < 2 } {                

                incr i

        } else {

                set seq_temp "N$mom_seqnum " 

                set i 1

                incr mom_seqnum  $mom_sys_seqnum_incr

        }
        puts $ofile "$seq_temp$number"       
}

Изменено пользователем lexincton
Ссылка на сообщение
Поделиться на других сайтах
15 минут назад, lexincton сказал:

#ВЫВОД СОДЕРЖИМОГО МАССИВА С ПОМОЩЬЮ ЦИКЛА

Показать содержимое  

set i 1
foreach number [lsort -ascii $list_tool] {

        set seq_temp ""

        if { $i < 2 } {                

                incr i

        } else {

                set seq_temp "N$mom_seqnum " 

                set i 1

                incr mom_seqnum  $mom_sys_seqnum_incr

        }
        puts $ofile "$seq_temp$number"       
}

Hide  

Нумеруется так же первая строка, но теперь через одно значение массива. 

Пример:  

T2

D1

;
N10 T2

D1

;
T6

D1

;

N20 T6

D1

;

T7

D1

;

N20 T3

D1

Hide  
Изменено пользователем artem-nafanya
Ссылка на сообщение
Поделиться на других сайтах
5 минут назад, artem-nafanya сказал:

Нумеруется так же первая строка, но теперь через одно значение массива

Про какую строку речь?

Ссылка на сообщение
Поделиться на других сайтах
Только что, lexincton сказал:

Про какую строку речь?

В примере выше строка с индексом "T".

 

Надо что бы было так
 

T2
N10 D1
;
T2
N20 D1
;
T6
N30 D1
;
N40 T6
D1
;
N50 T7
D1
;
N60 T3
D1

Hide  
Ссылка на сообщение
Поделиться на других сайтах
  • SHARit закрепил это тему

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

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

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

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

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

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

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

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

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

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



  • Сообщения

    • Snake 60
      Скорее всего исправляли в конкретной сборке, для конкретных тел. Насколько я помню, надо в самом эскизе профиля заполнить свойство Description
    • Snake 60
      Делаете дырку в свае - вставляете в нее трубу и 2 человеко-силы крутят сваю ) Дёшево и сердито и не нужен никакой планетарный редуктор ))
    • gudstartup
      вы всегда ищите свой путь или будете делать то что вам советуют? с самого начала прежде чем приступать к экспериментам вам нужно было вынуть носитель и сделать образ. diskcopy делает копию гибкого диска на другой а вам надо сделать образ жесткого диска или карты памяти. делайте как советует @Viktor2004 иначе еще чего нибудь сломаете или вам станок не нужен и вы его приобрели для экспериментов ? вот а печатной машинке из прошлого нельзя а вот на синумерике можно - удивительные вещи в настоящем происходят!! на 100 % уверен что там не модуль а либо писимиси ай либо жд @mircomax81 хотите работать в дос почитайте помощь по командам 
    • PuKoLLleT
      Доброго дня всем. Поделитесь опытом,раньше такое не доводилось делать. На торце фланца нужно сделать  восемь отверстий ф17H7 на токарно-фрезерном станке с осью Y ,имеется ManualGuide.В моем понимании нужно просверлить,а затем торцевой фрезой расточить нужный диаметр.Получится такой фокус,или надо разверткой доводить нужный размер?  Стойка Fanuc 0i-Tf.
    • Snake 60
      Всё верно, я даже русификатор делал для него (ушло на это где-то около года). Хороший софт был, я всех знакомых на него подсадил в свое время :) У меня даже где-то образ на виртуалке лежит с SW2014+MechSoft, Жаль, что автодеск его поглотил, а не DS :( А по сути вопроса, проектировал двухступенчатый планетарный редуктор в свое время. Что было нужно: Справочник по планетаркам (автора не помню, если надо поищу), из софта MathCAD + GearTeq (софтина идет вместе с GearTrax, только рассчитывает и моделирует несколько зацеплений согласно выбранной схеме, в том числе планетарки) Ой и ошибаетесь. Звездочки - не равно зубчатые колеса в планетарке) Мы намучились с малой точностью изготовления на эл.эрозии, а Вы лазером ))) Был собран опытный образец редуктора с незакаленными деталями, чисто проверить геометрию, отладить сборку. Так потом начальство этот редуктор сказало испытать в бою, как я не противился)) Помер за пару дней интенсивных нагрузок ))) Материал, термообработка и точности изготовления решают )
    • Snake 60
      @Тихоход  Ещё один вариант - изучать программирование и писать свою программу/макрос. Вот пример конфигуратора двери: https://www.youtube.com/watch?v=wv4HryWQBSk
    • mircomax81
      Посредством Diskcopy можно сделать адекватную копию на флоппи диск?
    • Andrey_kzn
      Да, ведь советовали автору вытащить жёсткий диск и сделать образ. Неужели самому не интересно, как устроен этот старый промкомпьютер? Там может стоять как жёсткий диск, так и CF-карта, или же Disc-on-chip или Disc-on-module.  Как-то очень давно, на подобном промышленном оборудовании (большая печатная машина) я не смог перенести  ПО с родной CF - карты на другую, такого же размера но другой фирмы. Была также станочная оболочка под досом.  Образ я делал Нортон гостом, развернул его на другую CF-карту без проблем. Машина загрузилась нормально и работала ровно 2 дня, на неродной CF-карте,  потом зависла, и отказалась загружаться. Пришлось вызывать сервисника. От него мы узнали, что нельзя просто так взять и заменить карту  - носитель системного ПО, на другую. А полезли мы туда, так как руководство захотело печатать отчёты по работе машины. В станочном ПО такая функция была. Вот только принтер надо было купить у фирмы - производителя этой самой машины. В попытках заставить работать другой принтер мы редактировали файл  AUTOEXEС.BAT, на предмет загрузки драйвера принтера, ничего не получилось, зато перестали открываться некоторые страницы станочного ПО.  Образ у нас был давно снят, и мы развернули его на другую карту памяти. Родную карту я трогать не стал (как чувствовал, что нельзя ). Сервисник восстановил ПО с архивной дискеты на родную карту памяти, и всё заработало. Дискеты с архивами ПО шли вместе с документацией к машине.  Там были дискеты с Досом, станочной оболочкой, параметрами приводов, программой ПЛК. Он же и предупредил нас о предельно аккуратном обращении с родной картой памяти, и посоветовал немедленно сделать образы с архивных дискет, что мы сразу и проделали.. Вот такой сюрприз от машины эпохи Дос.
    • Борман
    • gudstartup
      а ведь все работало...
×
×
  • Создать...