IPB

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

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


Читатель
*

Группа: Пользователи
Сообщений: 11
Регистрация: 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 килобайт ) Кол-во скачиваний: 22
 
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Sergei Troizky
сообщение 8.10.2020 - 03:13
Сообщение #2


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

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



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

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

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


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


Читатель
*

Группа: Пользователи
Сообщений: 11
Регистрация: 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


Фанат
***

Группа: Пользователи
Сообщений: 106
Регистрация: 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


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

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



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


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


Читатель
*

Группа: Пользователи
Сообщений: 11
Регистрация: 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


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

Группа: Пользователи
Сообщений: 377
Регистрация: 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


Читатель
*

Группа: Пользователи
Сообщений: 11
Регистрация: 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
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
ivgtrk
сообщение 19.11.2020 - 13:50
Сообщение #9


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

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



Цитата(Waldislaw @ 7.10.2020 - 19:12) *
- как вызвать программный блок из основной программы, например на рисунке из POU_01 вызвать inte и вернуться;


Никак, т.к. блок POU_01 и inte сами по себе являются программами (POU). Они выполняются, если включены в пул задач (в данном случае это Program Setting -> Execution Program).
Для вызова определенных частей/блоков принято использовать функциональные блоки (FB).


--------------------
Никому никогда ничего не объясняйте — каждый всё равно поймёт так, как ему выгодно.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
ivgtrk
сообщение 19.11.2020 - 14:07
Сообщение #10


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

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



Цитата(Waldislaw @ 10.10.2020 - 18:27) *
Я скачал 6 мануалов по запросу GX Works2 manual и там нет ни слова о том как создавать экземпляр функциональго блока и вызывать его. Еклмн в общих словах, а если не в общих, то в SFC. Я сдаюсь. Как использовать функциональный блок в программе на ST? И сразу попутно, может ли функциональный блок использовать глобальные переменные.


В программе на ST объявляете локальную переменную с типом нужного ФБ.
Прикрепленный файл  ______________2020_11_19_125446.jpg ( 100.11 килобайт ) Кол-во скачиваний: 15


В программе вызываете блок и подключаете к нему формальные параметры:
Имя_Функц_блока ( TRUE, вх_парам1, вх_парам2, вых_парам );
Входные и выходные параметры в соответствии с их типами самого ФБ (разумеется). Они могут быть как локальными, так и глобальными.


--------------------
Никому никогда ничего не объясняйте — каждый всё равно поймёт так, как ему выгодно.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Waldislaw
сообщение 11.02.2021 - 12:52
Сообщение #11


Читатель
*

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



Добрый день! Вопрос.
Делаю позиционирование на FX3GA-60MT.

IF M8002 THEN
dmov(TRUE,2000,D8146); (*максимальная скорость*)
mov (TRUE,k1000,D8148); (*время разгона мсек*)
mov (TRUE,k10,D8145); (*приращение скорости, что это такое?
какие только числа не ставил 0,10,100,10000 - без изменений ?????*)
M8147:=1;
END_IF;

DRVI(M8147,2000,1000,Y0,Y4);

Подключил к Y0 динамик, есть равномерный свист 2 секунды и все. Хотя я установил разгон/замедление 1000 мсек, слышно что их нет, т.е. свист без изменения частоты.Пробовал ставить DRVA - также.
И сразу попутно второй вопрос, как пользоваться в ST таймерами?

Сообщение отредактировал Waldislaw - 11.02.2021 - 13:02
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kaii
сообщение 12.02.2021 - 19:43
Сообщение #12


Фанат
***

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



Сперва откуда надыбали FX3GA? Я чет мануал не могу найти, лишь рекламную брошюрку мицубиши, которая лишь на сайте "заплати, получи".
По какому мануалу нашли что нужны D8146, D8148, D8145? В том что я нашел для FX3G совсем другие ячейки.
"как пользоваться в ST таймерами" - страдать.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Sergei Troizky
сообщение 17.02.2021 - 18:52
Сообщение #13


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

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



https://we.tl/t-XWFj5Hw73l
Читайте раздел 7.9
Для позиционирования с разгоном/торможением используйте PLSR.

Сообщение отредактировал Sergei Troizky - 17.02.2021 - 18:54


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


Фанат
***

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



Цитата(Sergei Troizky @ 17.02.2021 - 19:52) *
https://we.tl/t-XWFj5Hw73l
Читайте раздел 7.9
Для позиционирования с разгоном/торможением используйте PLSR.

Т.е. вас не смущает маленькая такая приписочка в самом начале раздела, что это руководство для позиционирования и примеры в нём ТОЛЬКО для контроллеров FX1N, FX1S? И то что в этой же приписке написано что нужно читать другое руководство для FX3U, FX3G, и оно, скорее всего, на русский не переведено.
Прикрепленный файл  ___.JPG ( 37.62 килобайт ) Кол-во скачиваний: 6


Сообщение отредактировал kaii - 17.02.2021 - 19:54
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Sergei Troizky
сообщение 17.02.2021 - 21:55
Сообщение #15


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

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



Cмущает.

Вот для FX3 на английском, если кому нужно:
http://dl.mitsubishielectric.com/dl/fa/doc...y997d16801k.pdf



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

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

 



- Текстовая версия Сейчас: 28.03.2024 - 21:35