IPB

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Вопросы новичка
Waldislaw
сообщение 7.10.2020 - 15:12
Сообщение #1


Читатель
*

Группа: Пользователи
Сообщений: 5
Регистрация: 6.10.2020
Пользователь №: 11316



Только начал изучать ПЛК, у меня FX3G GXwork2 полностью в ST тк раньше сидел только в урезанном СИ микроконтроллеров. Вопросы которые я не смог понять/найти за эту неделю:
- как вызвать программный блок из основной программы, например на рисунке из POU_01 вызвать inte и вернуться;
- как перемещаться в одной программе по меткам (Goto);
- задать время повторения программы (цикл контроллера);
- управлять быстрыми выходами (выдать пачку импульсов за время меньшее чем цикл контроллера).
Задача минимум управлять 5-ю осями с серваками step/dir, линейная интерполяция по 2-м из них с точностью 0.1мм, без доп модулей это вполне возможно.

Сообщение отредактировал Waldislaw - 7.10.2020 - 16:11
Прикрепленные файлы
Прикрепленный файл  2020_10_07_16_05_51.png ( 10.1 килобайт ) Кол-во скачиваний: 6
 
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Sergei Troizky
сообщение 8.10.2020 - 03:13
Сообщение #2


Гигант мысли
****

Группа: Пользователи
Сообщений: 358
Регистрация: 30.12.2004
Пользователь №: 108



Если только начал изучать ПЛК, настоятельно рекомендую Ladder, а не ST.
Ladder лучше визуализирует логику и лучше для понимания общих принципов и инструкций ПЛК.
В ST, возможно, привычнее выглядят массивные вычисления, но ПЛК- это все же Программируемый ЛОГИЧЕСКИЙ Контроллер.
Спорить или переубеждать, однако, не стану. Имеющий уши да услышит.

Читаете ли Вы Руководство по программированию?
Судя по вопросам, нет. Читайте его.

"- задать время повторения программы (цикл контроллера)."
Программа непрерывно выполняется циклически, если контроллер не остановлен вручную либо по фатальной ошибке выполнения программы.
Выполнение кода программы занимает столько времени, сколько потребуется, и это время может (и в большинстве случаев будет) изменяться от цикла к циклу. Оно не может быть жестко задано либо ограничено извне.
Однако, в настройках контроллера можно задать минимальное время цикла. Именно минимальное, хотя это может называться constant scantime: если программа не уложится в это время, оно будет превышено.


--------------------
Делать надо сразу хорошо. Плохо само получится.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Waldislaw
сообщение 8.10.2020 - 10:55
Сообщение #3


Читатель
*

Группа: Пользователи
Сообщений: 5
Регистрация: 6.10.2020
Пользователь №: 11316



Цитата(Sergei Troizky @ 8.10.2020 - 03:13) *
Если только начал изучать ПЛК, настоятельно рекомендую Ladder, а не ST.
Ladder лучше визуализирует логику и лучше для понимания общих принципов и инструкций ПЛК.
В ST, возможно, привычнее выглядят массивные вычисления, но ПЛК- это все же Программируемый ЛОГИЧЕСКИЙ Контроллер.
Спорить или переубеждать, однако, не стану. Имеющий уши да услышит.

Читаете ли Вы Руководство по программированию?
Судя по вопросам, нет. Читайте его.

"- задать время повторения программы (цикл контроллера)."
Программа непрерывно выполняется циклически, если контроллер не остановлен вручную либо по фатальной ошибке выполнения программы.
Выполнение кода программы занимает столько времени, сколько потребуется, и это время может (и в большинстве случаев будет) изменяться от цикла к циклу. Оно не может быть жестко задано либо ограничено извне.
Однако, в настройках контроллера можно задать минимальное время цикла. Именно минимальное, хотя это может называться constant scantime: если программа не уложится в это время, оно будет превышено.

Помоему столько языков в ПЛК что каждый может выбрать своё. Я уже накидал интерполяцию для 3-х осей, благо точность особо не нужна.
Я искал как из одной программы вызвать другую, и не нашел. Какой операнд? В первой программе вычисления происходят (видимо основная), во второй ничего не меняется.
Цикл моего контроллера 0,0005сек. Я просто сделал инкремент переменной и если она была равна 10000 то сбрасывал её и инвертировал выход Y0. Итого он инвертировался раз в 5 сек. Я так не смог найти где изменяется это значение.
Если есть возможноть, можете скинуть ссылку на руководство по st, желательно на русском вайл их нур дойч шпрехе
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kaii
сообщение 8.10.2020 - 16:12
Сообщение #4


Читатель
*

Группа: Пользователи
Сообщений: 13
Регистрация: 17.03.2020
Пользователь №: 11250



Цитата(Waldislaw @ 7.10.2020 - 16:12) *
- как перемещаться в одной программе по меткам (Goto);
- задать время повторения программы (цикл контроллера);
- управлять быстрыми выходами (выдать пачку импульсов за время меньшее чем цикл контроллера).

Есть же инструкция CJ для прыжка к тому шагу программы который надо, хотя лучше CJP, а то все время будет скипать часть программы.
Зачем цикл задавать? Можно конечно через D8039, но зачем замедлять? Есть же системные маркера M8011-M8014 если отсчет по времени делать.
Быстрыми выходами эт шоль операция PLSY? До 200000 герц спец выход може выдать. И ткнуть ему тоже можно сколько надо испульсов. И флаги завершения есть и прочее.
Мануал то почитайте. Есть некоторые ошибочные места или переведено немного не так как на самом деле, но много нового откроете для себя.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Sergei Troizky
сообщение 8.10.2020 - 17:42
Сообщение #5


Гигант мысли
****

Группа: Пользователи
Сообщений: 358
Регистрация: 30.12.2004
Пользователь №: 108



https://www.consys.ru/documentation/GX_Work...e_2012_А_Ru.pdf


--------------------
Делать надо сразу хорошо. Плохо само получится.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Waldislaw
сообщение 9.10.2020 - 12:36
Сообщение #6


Читатель
*

Группа: Пользователи
Сообщений: 5
Регистрация: 6.10.2020
Пользователь №: 11316



Цитата(kaii @ 8.10.2020 - 16:12) *
Цитата(Waldislaw @ 7.10.2020 - 16:12) *
- как перемещаться в одной программе по меткам (Goto);
- задать время повторения программы (цикл контроллера);
- управлять быстрыми выходами (выдать пачку импульсов за время меньшее чем цикл контроллера).

Есть же инструкция CJ для прыжка к тому шагу программы который надо, хотя лучше CJP, а то все время будет скипать часть программы.
Зачем цикл задавать? Можно конечно через D8039, но зачем замедлять? Есть же системные маркера M8011-M8014 если отсчет по времени делать.
Быстрыми выходами эт шоль операция PLSY? До 200000 герц спец выход може выдать. И ткнуть ему тоже можно сколько надо испульсов. И флаги завершения есть и прочее.
Мануал то почитайте. Есть некоторые ошибочные места или переведено немного не так как на самом деле, но много нового откроете для себя.

ST команды CJ и CJP не распознаёт. За мануал спасибо. PLSY то что нужно. В принципе я уже могу делать интерпляцию, но для более комфортной работы можно еще пару опросов.
Я могу делать отдельную программу и вызывать ее когда хочу? Можно ли в ST в пределах одной программы или функции перемещаться по меткам (типа Goto в бэйсике или Си)? Ну и последний вопрос: Как задать время повторения программы(время цикла программы)?
Спасибо зарание!!! Большое спасибо!

Сообщение отредактировал Waldislaw - 9.10.2020 - 12:36
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Sergei Troizky
сообщение 9.10.2020 - 16:20
Сообщение #7


Гигант мысли
****

Группа: Пользователи
Сообщений: 358
Регистрация: 30.12.2004
Пользователь №: 108



Цитата(Waldislaw @ 9.10.2020 - 12:36) *
ST команды CJ и CJP не распознаёт.

Ну вот вам и первый привет от языка ST.
Нет в нем прыжков по меткам типа Goto/Jump.

Цитата(Waldislaw @ 9.10.2020 - 12:36) *
Я могу делать отдельную программу и вызывать ее когда хочу?

В ST это делается путем создания функционального блока и обращения к нему по мере необходимости.

Сообщение отредактировал Sergei Troizky - 9.10.2020 - 17:08


--------------------
Делать надо сразу хорошо. Плохо само получится.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Waldislaw
сообщение 10.10.2020 - 14:27
Сообщение #8


Читатель
*

Группа: Пользователи
Сообщений: 5
Регистрация: 6.10.2020
Пользователь №: 11316



Цитата(Sergei Troizky @ 9.10.2020 - 16:20) *
Цитата(Waldislaw @ 9.10.2020 - 12:36) *
ST команды CJ и CJP не распознаёт.

Ну вот вам и первый привет от языка ST.
Нет в нем прыжков по меткам типа Goto/Jump.

Цитата(Waldislaw @ 9.10.2020 - 12:36) *
Я могу делать отдельную программу и вызывать ее когда хочу?

В ST это делается путем создания функционального блока и обращения к нему по мере необходимости.


Я скачал 6 мануалов по запросу GX Works2 manual и там нет ни слова о том как создавать экземпляр функциональго блока и вызывать его. Еклмн в общих словах, а если не в общих, то в SFC. Я сдаюсь. Как использовать функциональный блок в программе на ST? И сразу попутно, может ли функциональный блок использовать глобальные переменные.

Сообщение отредактировал Waldislaw - 10.10.2020 - 14:28
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия Сейчас: 25.10.2020 - 09:57