На форуме обязательно:
  1. Заполнить свой профиль НА РУССКОМ ЯЗЫКЕ КИРИЛЛИЦЕЙ. См. Правила, п.2.d.
  2. Не писать свой вопрос в первую попавшуюся тему, а вместо этого создать свою. См. Правила, п.3.a.

Рекламу мы не размещаем ни на каких условиях.

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

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

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

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

Сообщение alxndrch » 23 ноя 2017, 02:33

День добрый. Вопрос скорее всего глупый, но возможно есть люди кто с этим сталкивался.
Необходимо обмениваться небольшим объемом данных (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 » 23 ноя 2017, 16:31

Доброго дня.
"С настройками в 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
здесь недавно
здесь недавно
Сообщения: 24
Зарегистрирован: 05 ноя 2017, 01:12
Имя: Александр
Благодарил (а): 2 раза
Поблагодарили: 1 раз

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

Сообщение alxndrch » 24 ноя 2017, 02:51

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

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


winb
осмотрелся
осмотрелся
Сообщения: 160
Зарегистрирован: 31 янв 2017, 08:44
Имя: Маркушин Андрей Геннадьевич
Благодарил (а): 6 раз
Поблагодарили: 26 раз

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

Сообщение winb » 24 ноя 2017, 07:39

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

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


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

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

Сообщение demalhome » 26 ноя 2017, 18:04

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


LexSL
здесь недавно
здесь недавно
Сообщения: 88
Зарегистрирован: 16 дек 2011, 14:13
Имя: Михайлов Алексей
Поблагодарили: 11 раз

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

Сообщение LexSL » 27 ноя 2017, 07:13

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
здесь недавно
здесь недавно
Сообщения: 24
Зарегистрирован: 05 ноя 2017, 01:12
Имя: Александр
Благодарил (а): 2 раза
Поблагодарили: 1 раз

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

Сообщение alxndrch » 27 ноя 2017, 10:25

На тему симуляции коммуникации между двумя ПЛК на сайте 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
здесь недавно
здесь недавно
Сообщения: 95
Зарегистрирован: 09 авг 2016, 13:49
Имя: Чистилин Андрей Анатольевич
Благодарил (а): 1 раз
Поблагодарили: 6 раз

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

Сообщение ZuElecRu » 27 ноя 2017, 10:54

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

Аватара пользователя

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

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

Сообщение alxndrch » 27 ноя 2017, 12:33

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


winb
осмотрелся
осмотрелся
Сообщения: 160
Зарегистрирован: 31 янв 2017, 08:44
Имя: Маркушин Андрей Геннадьевич
Благодарил (а): 6 раз
Поблагодарили: 26 раз

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

Сообщение winb » 28 ноя 2017, 07:42

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
здесь недавно
здесь недавно
Сообщения: 24
Зарегистрирован: 05 ноя 2017, 01:12
Имя: Александр
Благодарил (а): 2 раза
Поблагодарили: 1 раз

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

Сообщение alxndrch » 29 ноя 2017, 03:49

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

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

Ответить

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