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

Логика и синтаксис программы. Прошу помощи.


KonstAnTinT

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

Всем привет. Было время работал со стойкой 810D, но уже давно и многое подзабылось.
Прошу проверить кусок логики программы и синтаксис.
Суть в том, что есть многопозиционное приспособление на поворотном столе, на одной стороне 8 мест(по четыре зеркально относительно оси Х) и на другой 8 мест(аналогично). Детали обрабатываются в положениях 3+1.
Начальника хочет, чтобы программа не вела обработку там, где нет деталей.
Как вижу логику: 1. забиваем в программу число обрабатываемых позиций R1 (в карте наладок распишу номера для каждого установа)
                            2. В программе записываем параметры положения детали относительно первой (они неизменны и будут изначально немного подкорректированы в зависимости от точности изготовления приспособления)
                            3. Делаем первую деталь.
                            4. Считываем из параметров расположение следующей детали
                            5. Смещаем TRANS положение нуля в новую позицию
                            6. Сравниваем а)не превосходит ли текущее значение значение R1
                                                      б)меньше или равно текущее положение 4
                            7. Если оба условия выполняются, то повторяем программу для первой детали со смещением
                            8. При достижении значения позиции значения R1(если такое происходит до 4, то отправляемся в конец программы)
                            9. Как только значение текущей позиции превышает 4, выполняем первую деталь во второй, зеркальной линии. далее по пунктам 6-8 для других положений
ФУХ... как-то так.
Помогите проверить логику и синтаксис программы, а то загоняю в СИМКУ и как-то не очень получается, но СИМКА точно не понимает R3=R[R2]

и со строкой IF (R5<=R1) AND (R5<=4) GOTOB CONTUR1 проблемы.


R1=16 - количество деталей
R11=40 ;POSITION 2 X
R12=0 ; POSITION 2 Y
......................................- блок переменных для положения деталей относительно первой

T="M4132-016-W16-02-06 "
M06
G90G0G40G54
R2=11
R5=1
CONTUR1:

обработка детали1-4

R3=R[R2]
R2=R2+1
R4=R[R2]
R2=R2+1
R5=R5+1
TRANS X=R3 Y=R4
IF (R5<=R1) AND (R5<=4) GOTOB CONTUR1
ENDIF
IF (R1==4) GOTOF WEITER1
ENDIF
CONTUR2:


обработка детали 5-8

R3=R[R2]
R2=R2+1
R4=R[R2]
R2=R2+1
R5=R5+1
TRANS X=R3 Y=R4
IF (R5<=R1) AND (R5<=8) GOTOB CONTUR2
ENDIF
IF (R1==8) GOTOF WEITER1
ENDIF

G0Z200.
A180.

CONTUR3:

обработка детали 9-12


R3=R[R2]
R2=R2+1
R4=R[R2]
R2=R2+1
R5=R5+1
TRANS X=R3 Y=R4
IF (R5<=R1) AND (R5<=12) GOTOB CONTUR3
ENDIF
IF (R1==12) GOTOF WEITER1
ENDIF
CONTUR4:

обработка детали 13-16

R3=R[R2]
R2=R2+1
R4=R[R2]
R2=R2+1
R5=R5+1
TRANS X=R3 Y=R4
IF (R5<=R1) AND (R5<=16) GOTOB CONTUR4
ENDIF

WEITER1:
M9
M5
G0Z200
M01
M30

заранее спасибо за ответы.

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


Помогите проверить логику и синтаксис программы, а то загоняю в СИМКУ и как-то не очень получается

Если уж Симка не отрисовывает, то делайте максимально удобно для себя

 

Я бы сделал примерно так:

 

Def string[16]  mesto = "DDNDDDNNDDDNDDND"; массив - Делаем / Не делаем на этих местах

Def int _i

Def real coordin[32]

coordin[0]=set(0,0,25,0,...); x,y - координаты 16-и мест (32 числа через запятую) массив от coordin[0] до coordin[31]

For _i=0 to 15

If mesto[_i]=="D"

trans x=coord[_i*2] y=coord[_i*2+1]

G0 X... Y...; обработка

...; обработка

Endif

Endfor

trans x0 y0

M30

 

Это упрощенно, без поворота приспособления.

R-параметры не задействованы.

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

 

Если уж Симка не отрисовывает, то делайте максимально удобно для себя

 

Я бы сделал примерно так:

 

Def string[16]  mesto = "DDNDDDNNDDDNDDND"; массив - Делаем / Не делаем на этих местах

Def int _i

Def real coordin[32]

coordin[0]=set(0,0,25,0,...); x,y - координаты 16-и мест (32 числа через запятую) массив от coordin[0] до coordin[31]

For _i=0 to 15

If mesto[_i]=="D"

trans x=coord[_i*2] y=coord[_i*2+1]

G0 X... Y...; обработка

...; обработка

Endif

Endfor

trans x0 y0

M30

 

Это упрощенно, без поворота приспособления.

R-параметры не задействованы.

Спасибо за ответ.

По поводу массива по расположению деталей это мысль -  реализую.

По массиву DDDNDN - спорно, оператору придется заполнять этот массив, а это уже не есть гут, все-таки проще один раз нарисовать последовательность установки в карте наладок и менять только одно число.

А вот с циклом FOR будут заморочки, т.к. на одном угле поворота на зеркальных деталях будут разные программы обработки, соответственно нужно еще прописать логику по выявлению деталей, расположенных зеркально, и пускать их по другой ветке условия, а это уже соизмеримо с тем, что нарисовал я.

В целом, мне хотелось бы услышать, что моя программа работоспособна или нет по какой-то причине. Например IF (R5<=R1) GOTOB CONTUR1 симка понимает без проблем, а вот IF (R5<=R1) AND (R5<=4) GOTOB CONTUR1 для неё непонятно и при отрисовке игнорируется. Так вот может это у меня ошибка в написании, хотя, вроде бы, соответствует инструкции по программированию.

Ссылка на сообщение
Поделиться на других сайтах
а вот IF (R5<=R1) AND (R5<=4) GOTOB CONTUR1 для неё непонятно и при отрисовке игнорируется

Да, Симка не понимает эту строку, в CrashGuard Studio это отработалось правильно.

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

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

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

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

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

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

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

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

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

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

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




×
×
  • Создать...