Форум

Форум (http://robotforum.ru/forum/index.php)
-   Роботы KUKA (http://robotforum.ru/forum/forumdisplay.php?f=65)
-   -   Profinet (http://robotforum.ru/forum/showthread.php?t=5036)

guest13 11.06.2020 19:50

Profinet
 
Здравствуйте! имеется Kuka 8.3.39. Есть задача наладить её связь связь по Profinet со слейв устроствами. Аппаратно настроил обмен, вопрос - как адресно обратиться к ячейкам памяти в коде?

Pavel_T 14.06.2020 07:22

Для того чтобы адресно обратиться к ячейкам памяти в коде надо:
1. Правильно настроить мапинг входов/выходов Куки на профинетовские.
(скажем все I/O Куки после 20 мапятся на профинетовские I/O).
2. Вручную с тачпада, из экрана для I/O проверяется функциональность
сигналов (так же и со стороны PLC).
3. В файле $config.dat, в секции "USER GLOBALS" объявляем, например две переменные:
SIGNAL MyPlcByteIn $IN[20] TO $IN[27] ;получаем байт данных только для чтения
SIGNAL MyPlcByteOut $OUT[20] TO $OUT[27] ;получаем байт данных, чтение и запись
4. В программе обращаемся с переменными как спеременными типа INT:
IF (MyPlcByteIn == 1) THEN
PTP HOME
ENDIF
5. Если PLC Siemens, то не забываем менять местами старший и младший байт в двухбайтном слове.
Подробнее смотрим в хелпе для WorkVisual.

guest13 21.06.2020 20:59

Цитата:

Сообщение от Pavel_T (Сообщение 13161)
Для того чтобы адресно обратиться к ячейкам памяти в коде надо:
1. Правильно настроить мапинг входов/выходов Куки на профинетовские.
(скажем все I/O Куки после 20 мапятся на профинетовские I/O).
2. Вручную с тачпада, из экрана для I/O проверяется функциональность
сигналов (так же и со стороны PLC).
3. В файле .dat, в секции "USER GLOBALS" объявляем, например две переменные:
SIGNAL MyPlcByteIn TO ;получаем байт данных только для чтения
SIGNAL MyPlcByteOut TO ;получаем байт данных, чтение и запись
4. В программе обращаемся с переменными как спеременными типа INT:
IF (MyPlcByteIn == 1) THEN
PTP HOME
ENDIF
5. Если PLC Siemens, то не забываем менять местами старший и младший байт в двухбайтном слове.
Подробнее смотрим в хелпе для WorkVisual.

Да, огромное спасибо! Это получилось. Только остался вопрос - почему предлагаете мапить адреса с 20? чем плохо начать с 0? или это не принципиально?

Теперь следующий вопрос - в программе периодически перед выполнением тех или иных действий необходима информация из профинета... Как лучше сделать перед местом использования вызывать функцию, которая будет считывать Профинет и кидать его в переменные, либо - в sps.sub постоянно\параллельно вызывать эту функцию?

P.S. Кто-нибудь из гуру (ну или просто выше новичка =) ) может дать контакты (любой мессенджер (вацапа, вибер, тлг, аська) или почта) для оперативных мелких вопросов в помощи поиска необходимой литературы или мелких вопросов касаемо программирования контроллера Кука С4?

Роботёр 21.06.2020 22:27

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

Pavel_T 22.06.2020 06:57

В нашем случае, роботы приходят с уже предустановленными карточками ввода/вывода.
Это обычно Input output board (IOB-16-16B) или EtherCAT с расширениями на 16 бит I/O.
Поэтому младшие 16 адресов уже какбы заняты.

Роботёр 22.06.2020 10:31

в таком случае да

guest13 22.06.2020 21:19

Пришел к выводу, что придется постоянно записывать данные с профинета в переменные, иначе алгоритмы не будут корректно работать... Вкуриваю дальше - как оптимальнее сделать - использовать sps.sub или как-то запускать параллельную программу

Pavel_T 23.06.2020 07:05

Если это данные от PLC к роботу, то записывать ничего не надо.
Контроллер через профинет записывает данные в переменные асинхронно,
не зависимо от программы робота. Остается их только прочитать.
Данные от робота к PLC записываются программой, в зависимости от логики.
Не обязательно в sps.sub. Запускать параллельную программу в Куке нельзя,
только прерывания.

guest13 23.06.2020 21:08

Цитата:

Сообщение от Pavel_T (Сообщение 13262)
Не обязательно в sps.sub.

только прерывания.

Да, спасибо! сегодня проверил, можно без sps.sub - переменные из профинета сами обновляются.

по поводу прерываний - можете ли подсказать где пошукать информацию о них? особенно интересует - как каждый цикл контроллера (ну или с заданной периодичностью) изменять состояние бита, для того, что ПЛК понимал, что связь не потеряна

Pavel_T 24.06.2020 06:49

Когда робот теряет соединение с контроллером по
профинету, то он выбрасывает исключение на смартпаде
и выключет моторы. Устанавливает соединение также самастоятельно,
выдет сообщение и если после этого подтвердить сообщение со смартпада,
то можно продолжить работу. Думаю в контроллере будет видно ошибку соединения.
Что касается прерываний, то по ним, а также много чего по программированию
Куки, информация имеется. Я только не пойму, как можно pdf файлы выкатить на форум.


Часовой пояс GMT +2, время: 22:08.

vBulletin v3.6.2, Copyright ©2000-2024, Jelsoft Enterprises Ltd.
Русский перевод: zCarot, Vovan & Co