- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
Межпроцессное взаимодействие между двумя S-300
-
- здесь недавно
- Сообщения: 40
- Зарегистрирован: 05 ноя 2017, 01:12
- Имя: Александр
- Страна: Россия
- город/регион: Хабаровск
- Благодарил (а): 3 раза
- Поблагодарили: 3 раза
Межпроцессное взаимодействие между двумя S-300
День добрый. Вопрос скорее всего глупый, но возможно есть люди кто с этим сталкивался.
Необходимо обмениваться небольшим объемом данных (20-30 байт) между двумя ПЛК в одной сети Industrial Ethernet (ПЛК S317PN/DP). С настройками в Configure Network все понятно, с функциями GET (FB14) и PUT (FB15) из Standart Library Communication Blocks вроде тоже более менее.
Не очень понятен принцип работы этого дела, в примера с на сайте Siemens в проекте два ПЛК, но сам процесс приема передачи настроен только на одном (вот почему на одном, так и нужно или просто не стали замарачиваться с примером?). Плюс непонятно формирование массивов приема-передачи, они формируются как-то вручную так чтобы соответствовать друг другу, или автоматически.
Я пока процесс приема передачи представляю себе примерно так, по PUT ПЛК1 кладет в некую буферную зону (свою или второго ПЛК?) данные, которые тот забирает по GET. Верно мыслю или чушь сказал?
Необходимо обмениваться небольшим объемом данных (20-30 байт) между двумя ПЛК в одной сети Industrial Ethernet (ПЛК S317PN/DP). С настройками в Configure Network все понятно, с функциями GET (FB14) и PUT (FB15) из Standart Library Communication Blocks вроде тоже более менее.
Не очень понятен принцип работы этого дела, в примера с на сайте Siemens в проекте два ПЛК, но сам процесс приема передачи настроен только на одном (вот почему на одном, так и нужно или просто не стали замарачиваться с примером?). Плюс непонятно формирование массивов приема-передачи, они формируются как-то вручную так чтобы соответствовать друг другу, или автоматически.
Я пока процесс приема передачи представляю себе примерно так, по PUT ПЛК1 кладет в некую буферную зону (свою или второго ПЛК?) данные, которые тот забирает по GET. Верно мыслю или чушь сказал?
-
- здесь недавно
- Сообщения: 25
- Зарегистрирован: 03 окт 2016, 11:50
- Имя: Ковалев Игорь
- Страна: Украина
- город/регион: Северодонецк
- Поблагодарили: 9 раз
Межпроцессное взаимодействие между двумя S-300
Доброго дня.
"С настройками в Configure Network все понятно... GET (FB14) и PUT (FB15)- вроде тоже". Значит и вопросов быть не должно :)
1. Когда в Configure Network в одном из PLC создаешь S7Connection с другим PLC, то в другом он появляется автоматически.
2. Вызов PUT (со всеми его параметрами) должен быть в посылающем PLC, GET - в принимающем PLC.
3. Массивы приема-передачи (например, DB) Вы должны создать сами и указать их в параметрах ADDR_1, SD_1 (ведь "сименсы" не знают, что и какого объема Вы собрались передавать). Причем "массив" на приемнике должен быть не меньше чем на отправителе, иначе будет ошибка.
Запускайти PLC, заливайте программу и пробуйте, все получится. Если нет PLC, пробуйте на PLCSim (он вроде нормально с этим работает)
"С настройками в Configure Network все понятно... GET (FB14) и PUT (FB15)- вроде тоже". Значит и вопросов быть не должно :)
1. Когда в Configure Network в одном из PLC создаешь S7Connection с другим PLC, то в другом он появляется автоматически.
2. Вызов PUT (со всеми его параметрами) должен быть в посылающем PLC, GET - в принимающем PLC.
3. Массивы приема-передачи (например, DB) Вы должны создать сами и указать их в параметрах ADDR_1, SD_1 (ведь "сименсы" не знают, что и какого объема Вы собрались передавать). Причем "массив" на приемнике должен быть не меньше чем на отправителе, иначе будет ошибка.
Запускайти PLC, заливайте программу и пробуйте, все получится. Если нет PLC, пробуйте на PLCSim (он вроде нормально с этим работает)
-
- здесь недавно
- Сообщения: 40
- Зарегистрирован: 05 ноя 2017, 01:12
- Имя: Александр
- Страна: Россия
- город/регион: Хабаровск
- Благодарил (а): 3 раза
- Поблагодарили: 3 раза
Межпроцессное взаимодействие между двумя S-300
Тут такое дело, что вроде бы все понятно, есть официальный пример, не некоторые вещи вызывают вопросы :) Параллельно конечно все пробуется, но есть некоторые неудобства, производственные так сказать.
1) И правда, проект отчасти уже готовый, я настройки проверил, но сам не создавал, буду знать, спасибо.
2) Вот это меня больше всего смутило в примере от Siemens и в ответе на их форуме, что PUT/GET может быть запрограммирована на одном ПЛК (в примере тоже так), но как говорится будем пробовать. Плюс в блоке PUT/GET в их примере используется так же один ID, ID того ПЛК на котором исполняется блок PUT/GET.
3) С этим все понятно.
Вот про PLCSim что-то не подумал. Попробую.
Так-то в процессе отладки блоки GET и PUT отрабатывают верно, по крайней мере сигналы ошибок на их выходах отсутствуют, а массивы не обновляются.
1) И правда, проект отчасти уже готовый, я настройки проверил, но сам не создавал, буду знать, спасибо.
2) Вот это меня больше всего смутило в примере от Siemens и в ответе на их форуме, что PUT/GET может быть запрограммирована на одном ПЛК (в примере тоже так), но как говорится будем пробовать. Плюс в блоке PUT/GET в их примере используется так же один ID, ID того ПЛК на котором исполняется блок PUT/GET.
3) С этим все понятно.
Вот про PLCSim что-то не подумал. Попробую.
Так-то в процессе отладки блоки GET и PUT отрабатывают верно, по крайней мере сигналы ошибок на их выходах отсутствуют, а массивы не обновляются.
-
- освоился
- Сообщения: 248
- Зарегистрирован: 31 янв 2017, 08:44
- Имя: Маркушин Андрей Геннадьевич
- Страна: Россия
- город/регион: Нижегородская обл., Выкса
- Благодарил (а): 19 раз
- Поблагодарили: 64 раза
Межпроцессное взаимодействие между двумя S-300
S7-соединение (тип - "точка-к-точке") конфигурируется на одном из абонентов (назовем его "ведущим"). Если на другом абоненте (пусть будет "ведомый") есть доступные коммуникационные ресурсы, то оно устанавливается. Соответственно, все коммуникационные функции должны вызываться на "ведущем" абоненте, для "ведомого" абонента всё будет прозрачно ("Ух ты, данные откуда-то появились...").
Конечно, не самый удобный для диагностики вид соединения. Может быть, кто знает, есть ли какое-нибудь приложение для получения информации о поднятых S7-соединениях на стороне "ведомого" абонента, кроме просмотра занятых ресурсов в STEP7?
Конечно, не самый удобный для диагностики вид соединения. Может быть, кто знает, есть ли какое-нибудь приложение для получения информации о поднятых S7-соединениях на стороне "ведомого" абонента, кроме просмотра занятых ресурсов в STEP7?
-
- здесь недавно
- Сообщения: 33
- Зарегистрирован: 06 июл 2014, 23:17
- Имя: Дементьев Алексей Александрович
- Страна: Россия
- город/регион: Kostroma
- Поблагодарили: 6 раз
Межпроцессное взаимодействие между двумя S-300
winb,
Что за чушь? Вы читали хелп по данным блокам? Товарищ winb, все правильно написал.
-
- осмотрелся
- Сообщения: 192
- Зарегистрирован: 16 дек 2011, 15:13
- Имя: Алексей
- Страна: Россия
- Благодарил (а): 65 раз
- Поблагодарили: 46 раз
Межпроцессное взаимодействие между двумя S-300
Вне зависимости от статуса "ведомый"\"ведущий" сконфигурированные S7 connection можно продиагностировать функцией
Код: Выделить всё
C_CNTRL(EN_R := true // IN: BOOL
,ID := IdConn// IN: WORD
,RETVAL := RetVal // OUT: INT
,ERROR := Error// OUT: BOOL
,STATUS := Status// OUT: WORD
,C_CONN := Connected// OUT: BOOL
,C_STATUS := ConnStatus// OUT: WORD
); // VOID
-
- здесь недавно
- Сообщения: 40
- Зарегистрирован: 05 ноя 2017, 01:12
- Имя: Александр
- Страна: Россия
- город/регион: Хабаровск
- Благодарил (а): 3 раза
- Поблагодарили: 3 раза
Межпроцессное взаимодействие между двумя S-300
На тему симуляции коммуникации между двумя ПЛК на сайте Siemens есть такое руководство:
https://support.industry.siemens.com/cs ... 0&lc=en-WW
Правда там используются S-400. Так же написано что команды SFB15 "PUT" и SFB14 "GET" поддерживаются. Запустил пример, работает. Запустил пример PUT/GET, так же с сайта Siemens, не работает (пример во вложении). Блоки GET и PUT пишут ошибку соединения пишет (0x01).
P.S. У них еще пример поновее есть, но почему-то не открывается пока не сменишь локаль системы на немецкую, с этим можно как-то бороться?
https://support.industry.siemens.com/cs ... 0&lc=en-WW
Правда там используются S-400. Так же написано что команды SFB15 "PUT" и SFB14 "GET" поддерживаются. Запустил пример, работает. Запустил пример PUT/GET, так же с сайта Siemens, не работает (пример во вложении). Блоки GET и PUT пишут ошибку соединения пишет (0x01).
P.S. У них еще пример поновее есть, но почему-то не открывается пока не сменишь локаль системы на немецкую, с этим можно как-то бороться?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- освоился
- Сообщения: 290
- Зарегистрирован: 09 авг 2016, 13:49
- Имя: Чистилин Андрей Анатольевич
- Страна: Россия
- город/регион: Малоярославец
- Благодарил (а): 31 раз
- Поблагодарили: 35 раз
Межпроцессное взаимодействие между двумя S-300
В папке проекта в папке Global удаляешь файл Language. Проект начинает открываться. Но у тебя этого файла уже нет...???
-
- здесь недавно
- Сообщения: 40
- Зарегистрирован: 05 ноя 2017, 01:12
- Имя: Александр
- Страна: Россия
- город/регион: Хабаровск
- Благодарил (а): 3 раза
- Поблагодарили: 3 раза
Межпроцессное взаимодействие между двумя S-300
Я нашел два примера у Siemens, судя по датам статей, старый и новый. Один (старый) практически полностью идентичен тому что предыдущий человек использовал в проекте (правда ничего там не работает, видимо и не тестировалось), он как раз приложен выше. Более новый как раз был с проблемой языковой, завтра так и сделаю, удалю файл. Попробую его потестировать на симуляторе. В настоящий момент нет удобного доступа к ПЛК.
Пробовал тоже самое делать в симуляторе на S-400, с лету все заработало. Это видимо потому что мне S-400 совершенно не нужен =)
-
- освоился
- Сообщения: 248
- Зарегистрирован: 31 янв 2017, 08:44
- Имя: Маркушин Андрей Геннадьевич
- Страна: Россия
- город/регион: Нижегородская обл., Выкса
- Благодарил (а): 19 раз
- Поблагодарили: 64 раза
Межпроцессное взаимодействие между двумя S-300
Да, эту функцию использовать на "ведущем" можно, но как определить идентификатор соединения на "ведомом" устройстве, если оно не сконфигурировано на нем? Надо будет как-нибудь погонять функцию на стенде, может, действительно определяет под свободными в системе идентификаторами... В любом случае, информацию об соединении эта функция не предоставит (адрес соседнего устройства, интерфейс, через который установлено соединение и т.п.)LexSL писал(а): Вне зависимости от статуса "ведомый"\"ведущий" сконфигурированные S7 connection можно продиагностировать функцией
КОД: ВЫДЕЛИТЬ ВСЁ
C_CNTRL(EN_R := true // IN: BOOL
,ID := IdConn// IN: WORD
,RETVAL := RetVal // OUT: INT
,ERROR := Error// OUT: BOOL
,STATUS := Status// OUT: WORD
,C_CONN := Connected// OUT: BOOL
,C_STATUS := ConnStatus// OUT: WORD
); // VOID
Connected - bool величина есть\нет соединения
Уточню: рассматриваю одностороннее S7-соединение, при двустороннем, соединения прописываются в конфигурацию каждого устройства и поддаются диагностике через тот же НетПро.
-
- здесь недавно
- Сообщения: 40
- Зарегистрирован: 05 ноя 2017, 01:12
- Имя: Александр
- Страна: Россия
- город/регион: Хабаровск
- Благодарил (а): 3 раза
- Поблагодарили: 3 раза
Межпроцессное взаимодействие между двумя S-300
Попробовал самый новый пример, с Siemens. В симуляторе все так же не работает (при этом примеры с 400 работают без каких-то вопросов), приложу проект к сообщению, может у меня там какая-то фундаментальная ошибка которую я просто не вижу (мало опыта с сетевыми возможностями контроллеров). На реальном железе будет возможность недели через полторы попробовать, но хотелось бы уже разобраться, сам дурак или симулятор (скорее я).
P.S. На реальном железе заработало, проверил и назначая двум ПЛК разные и одинаковые ID. Все работает. А почему? Потому как соединение specified (или может быть потому что логика приема передачи вся в одном ПЛК?) или еще по каким-то причинам?
Вопрос почему это не работает в симуляторе все еще вопрос.
P.S. На реальном железе заработало, проверил и назначая двум ПЛК разные и одинаковые ID. Все работает. А почему? Потому как соединение specified (или может быть потому что логика приема передачи вся в одном ПЛК?) или еще по каким-то причинам?
Вопрос почему это не работает в симуляторе все еще вопрос.
У вас нет необходимых прав для просмотра вложений в этом сообщении.