Ответ
 
Опции темы Поиск в этой теме
Старый 11.06.2020, 19:50   #1
guest13
Бывалый
 
Регистрация: 11.06.2020
Сообщения: 16
Сказал Спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении
По умолчанию Profinet

Здравствуйте! имеется Kuka 8.3.39. Есть задача наладить её связь связь по Profinet со слейв устроствами. Аппаратно настроил обмен, вопрос - как адресно обратиться к ячейкам памяти в коде?
guest13 вне форума   Ответить с цитированием
Старый 14.06.2020, 07:22   #2
Pavel_T
Гуру
 
Регистрация: 04.08.2016
Сообщения: 81
Сказал Спасибо: 0
Сказали Спасибо 29 раз(а) в 19 сообщении
По умолчанию

Для того чтобы адресно обратиться к ячейкам памяти в коде надо:
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.
Pavel_T вне форума   Ответить с цитированием
cказали "Спасибо" Pavel_T за это сообщение:
guest13 (14.06.2020)
Старый 21.06.2020, 20:59   #3
guest13
Бывалый
 
Регистрация: 11.06.2020
Сообщения: 16
Сказал Спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении
По умолчанию

Сообщение от Pavel_T Посмотреть сообщение
Для того чтобы адресно обратиться к ячейкам памяти в коде надо:
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?

Последний раз редактировалось guest13, 21.06.2020 в 21:06 Причина: добавление текста
guest13 вне форума   Ответить с цитированием
Старый 21.06.2020, 22:27   #4
Роботёр
Гуру
 
Регистрация: 20.12.2017
Сообщения: 691
Сказал Спасибо: 18
Сказали Спасибо 139 раз(а) в 132 сообщении
По умолчанию

мапить можно и с нулевого бита, система этого делать не запрещает.
не очень понятно что ты хочешь сделать. что значит необходима инфа с профинета? считывать состояние бита? зачем тогда его перезаписывать в другую переменную? в общем я не понял, опиши что хочешь поподробнее.
телефон, конечно, не дам. почту скинул в личку.
Роботёр вне форума   Ответить с цитированием
Старый 22.06.2020, 06:57   #5
Pavel_T
Гуру
 
Регистрация: 04.08.2016
Сообщения: 81
Сказал Спасибо: 0
Сказали Спасибо 29 раз(а) в 19 сообщении
По умолчанию

В нашем случае, роботы приходят с уже предустановленными карточками ввода/вывода.
Это обычно Input output board (IOB-16-16B) или EtherCAT с расширениями на 16 бит I/O.
Поэтому младшие 16 адресов уже какбы заняты.
Pavel_T вне форума   Ответить с цитированием
Старый 22.06.2020, 10:31   #6
Роботёр
Гуру
 
Регистрация: 20.12.2017
Сообщения: 691
Сказал Спасибо: 18
Сказали Спасибо 139 раз(а) в 132 сообщении
По умолчанию

в таком случае да
Роботёр вне форума   Ответить с цитированием
Старый 22.06.2020, 21:19   #7
guest13
Бывалый
 
Регистрация: 11.06.2020
Сообщения: 16
Сказал Спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении
По умолчанию

Пришел к выводу, что придется постоянно записывать данные с профинета в переменные, иначе алгоритмы не будут корректно работать... Вкуриваю дальше - как оптимальнее сделать - использовать sps.sub или как-то запускать параллельную программу
guest13 вне форума   Ответить с цитированием
Старый 23.06.2020, 07:05   #8
Pavel_T
Гуру
 
Регистрация: 04.08.2016
Сообщения: 81
Сказал Спасибо: 0
Сказали Спасибо 29 раз(а) в 19 сообщении
По умолчанию

Если это данные от PLC к роботу, то записывать ничего не надо.
Контроллер через профинет записывает данные в переменные асинхронно,
не зависимо от программы робота. Остается их только прочитать.
Данные от робота к PLC записываются программой, в зависимости от логики.
Не обязательно в sps.sub. Запускать параллельную программу в Куке нельзя,
только прерывания.
Pavel_T вне форума   Ответить с цитированием
Старый 23.06.2020, 21:08   #9
guest13
Бывалый
 
Регистрация: 11.06.2020
Сообщения: 16
Сказал Спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении
По умолчанию

Сообщение от Pavel_T Посмотреть сообщение
Не обязательно в sps.sub.

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

по поводу прерываний - можете ли подсказать где пошукать информацию о них? особенно интересует - как каждый цикл контроллера (ну или с заданной периодичностью) изменять состояние бита, для того, что ПЛК понимал, что связь не потеряна
guest13 вне форума   Ответить с цитированием
Старый 24.06.2020, 06:49   #10
Pavel_T
Гуру
 
Регистрация: 04.08.2016
Сообщения: 81
Сказал Спасибо: 0
Сказали Спасибо 29 раз(а) в 19 сообщении
По умолчанию

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

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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

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