1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

Межпроцессное взаимодействие между двумя S-300

ПЛК SIMATIC (S7-200, S7-1200, S7-300, S7-400, S7-1500, ET200)
Ответить
Аватара пользователя

Автор темы
alxndrch
здесь недавно
здесь недавно
Сообщения: 40
Зарегистрирован: 05 ноя 2017, 01:12
Имя: Александр
Страна: Россия
город/регион: Хабаровск
Благодарил (а): 3 раза
Поблагодарили: 3 раза

Межпроцессное взаимодействие между двумя S-300

Сообщение alxndrch »

День добрый. Вопрос скорее всего глупый, но возможно есть люди кто с этим сталкивался.
Необходимо обмениваться небольшим объемом данных (20-30 байт) между двумя ПЛК в одной сети Industrial Ethernet (ПЛК S317PN/DP). С настройками в Configure Network все понятно, с функциями GET (FB14) и PUT (FB15) из Standart Library -> Communication Blocks вроде тоже более менее.

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

Я пока процесс приема передачи представляю себе примерно так, по PUT ПЛК1 кладет в некую буферную зону (свою или второго ПЛК?) данные, которые тот забирает по GET. Верно мыслю или чушь сказал?

KIgor
здесь недавно
здесь недавно
Сообщения: 25
Зарегистрирован: 03 окт 2016, 11:50
Имя: Ковалев Игорь
Страна: Украина
город/регион: Северодонецк
Поблагодарили: 9 раз

Межпроцессное взаимодействие между двумя S-300

Сообщение KIgor »

Доброго дня.
"С настройками в 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 (он вроде нормально с этим работает)
Аватара пользователя

Автор темы
alxndrch
здесь недавно
здесь недавно
Сообщения: 40
Зарегистрирован: 05 ноя 2017, 01:12
Имя: Александр
Страна: Россия
город/регион: Хабаровск
Благодарил (а): 3 раза
Поблагодарили: 3 раза

Межпроцессное взаимодействие между двумя S-300

Сообщение alxndrch »

Тут такое дело, что вроде бы все понятно, есть официальный пример, не некоторые вещи вызывают вопросы :) Параллельно конечно все пробуется, но есть некоторые неудобства, производственные так сказать.
1) И правда, проект отчасти уже готовый, я настройки проверил, но сам не создавал, буду знать, спасибо.
2) Вот это меня больше всего смутило в примере от Siemens и в ответе на их форуме, что PUT/GET может быть запрограммирована на одном ПЛК (в примере тоже так), но как говорится будем пробовать. Плюс в блоке PUT/GET в их примере используется так же один ID, ID того ПЛК на котором исполняется блок PUT/GET.
3) С этим все понятно.

Вот про PLCSim что-то не подумал. Попробую.
Так-то в процессе отладки блоки GET и PUT отрабатывают верно, по крайней мере сигналы ошибок на их выходах отсутствуют, а массивы не обновляются.

winb
освоился
освоился
Сообщения: 248
Зарегистрирован: 31 янв 2017, 08:44
Имя: Маркушин Андрей Геннадьевич
Страна: Россия
город/регион: Нижегородская обл., Выкса
Благодарил (а): 14 раз
Поблагодарили: 59 раз

Межпроцессное взаимодействие между двумя S-300

Сообщение winb »

S7-соединение (тип - "точка-к-точке") конфигурируется на одном из абонентов (назовем его "ведущим"). Если на другом абоненте (пусть будет "ведомый") есть доступные коммуникационные ресурсы, то оно устанавливается. Соответственно, все коммуникационные функции должны вызываться на "ведущем" абоненте, для "ведомого" абонента всё будет прозрачно ("Ух ты, данные откуда-то появились...").

Конечно, не самый удобный для диагностики вид соединения. Может быть, кто знает, есть ли какое-нибудь приложение для получения информации о поднятых S7-соединениях на стороне "ведомого" абонента, кроме просмотра занятых ресурсов в STEP7?

demalhome
здесь недавно
здесь недавно
Сообщения: 33
Зарегистрирован: 06 июл 2014, 23:17
Имя: Дементьев Алексей Александрович
Страна: Россия
город/регион: Kostroma
Поблагодарили: 6 раз

Межпроцессное взаимодействие между двумя S-300

Сообщение demalhome »

winb,
KIgor писал(а): 2. Вызов PUT (со всеми его параметрами) должен быть в посылающем PLC, GET - в принимающем PLC.
Что за чушь? Вы читали хелп по данным блокам? Товарищ winb, все правильно написал.

LexSL
осмотрелся
осмотрелся
Сообщения: 191
Зарегистрирован: 16 дек 2011, 15:13
Имя: Алексей
Страна: Россия
Благодарил (а): 59 раз
Поблагодарили: 44 раза

Межпроцессное взаимодействие между двумя S-300

Сообщение LexSL »

winb писал(а): Может быть, кто знает, есть ли какое-нибудь приложение для получения информации о поднятых S7-соединениях на стороне "ведомого" абонента
Вне зависимости от статуса "ведомый"\"ведущий" сконфигурированные 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 величина есть\нет соединения
Аватара пользователя

Автор темы
alxndrch
здесь недавно
здесь недавно
Сообщения: 40
Зарегистрирован: 05 ноя 2017, 01:12
Имя: Александр
Страна: Россия
город/регион: Хабаровск
Благодарил (а): 3 раза
Поблагодарили: 3 раза

Межпроцессное взаимодействие между двумя S-300

Сообщение alxndrch »

На тему симуляции коммуникации между двумя ПЛК на сайте 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. У них еще пример поновее есть, но почему-то не открывается пока не сменишь локаль системы на немецкую, с этим можно как-то бороться?
У вас нет необходимых прав для просмотра вложений в этом сообщении.

ZuElecRu
освоился
освоился
Сообщения: 290
Зарегистрирован: 09 авг 2016, 13:49
Имя: Чистилин Андрей Анатольевич
Страна: Россия
город/регион: Малоярославец
Благодарил (а): 31 раз
Поблагодарили: 35 раз

Межпроцессное взаимодействие между двумя S-300

Сообщение ZuElecRu »

alxndrch писал(а): P.S. У них еще пример поновее есть, но почему-то не открывается пока не сменишь локаль системы на немецкую, с этим можно как-то бороться?
В папке проекта в папке Global удаляешь файл Language. Проект начинает открываться. Но у тебя этого файла уже нет...???
Аватара пользователя

Автор темы
alxndrch
здесь недавно
здесь недавно
Сообщения: 40
Зарегистрирован: 05 ноя 2017, 01:12
Имя: Александр
Страна: Россия
город/регион: Хабаровск
Благодарил (а): 3 раза
Поблагодарили: 3 раза

Межпроцессное взаимодействие между двумя S-300

Сообщение alxndrch »

ZuElecRu писал(а): В папке проекта в папке Global удаляешь файл Language. Проект начинает открываться. Но у тебя этого файла уже нет...???
Я нашел два примера у Siemens, судя по датам статей, старый и новый. Один (старый) практически полностью идентичен тому что предыдущий человек использовал в проекте (правда ничего там не работает, видимо и не тестировалось), он как раз приложен выше. Более новый как раз был с проблемой языковой, завтра так и сделаю, удалю файл. Попробую его потестировать на симуляторе. В настоящий момент нет удобного доступа к ПЛК.
Пробовал тоже самое делать в симуляторе на S-400, с лету все заработало. Это видимо потому что мне S-400 совершенно не нужен =)

winb
освоился
освоился
Сообщения: 248
Зарегистрирован: 31 янв 2017, 08:44
Имя: Маркушин Андрей Геннадьевич
Страна: Россия
город/регион: Нижегородская обл., Выкса
Благодарил (а): 14 раз
Поблагодарили: 59 раз

Межпроцессное взаимодействие между двумя S-300

Сообщение winb »

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-соединение, при двустороннем, соединения прописываются в конфигурацию каждого устройства и поддаются диагностике через тот же НетПро.
Аватара пользователя

Автор темы
alxndrch
здесь недавно
здесь недавно
Сообщения: 40
Зарегистрирован: 05 ноя 2017, 01:12
Имя: Александр
Страна: Россия
город/регион: Хабаровск
Благодарил (а): 3 раза
Поблагодарили: 3 раза

Межпроцессное взаимодействие между двумя S-300

Сообщение alxndrch »

Попробовал самый новый пример, с Siemens. В симуляторе все так же не работает (при этом примеры с 400 работают без каких-то вопросов), приложу проект к сообщению, может у меня там какая-то фундаментальная ошибка которую я просто не вижу (мало опыта с сетевыми возможностями контроллеров). На реальном железе будет возможность недели через полторы попробовать, но хотелось бы уже разобраться, сам дурак или симулятор (скорее я).

P.S. На реальном железе заработало, проверил и назначая двум ПЛК разные и одинаковые ID. Все работает. А почему? Потому как соединение specified (или может быть потому что логика приема передачи вся в одном ПЛК?) или еще по каким-то причинам?
Вопрос почему это не работает в симуляторе все еще вопрос.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Ответить

Вернуться в «Simatic Step7»