Страница 1 из 1

Автономные системы S7-1200 + Profinet/Ethernet

Добавлено: 05 апр 2014, 06:01
Михайло
Постановка задачи:
Есть четыре штуки S7-1200 CPU v2.2, каждый из них управляет своей установкой. При чем установки по замыслу разработаны так, что они могут работать автономно, т.е. у них раздельный ввод питания. Чтобы было понятнее: четыре установки образуют последовательную линию-конвейер. Соседние установки немножко взаимодействуют между собой в плане "забирай заготовку/ОК, забрал". Сетевой интерфейс - Profinet.
Так как питание с соседней установки может быть снято, каждая установка должна определять это и переходить в так называемый "автономный режим". Типа "хм, передавать заготовку некому, я тогда аккуратно поставлю заготовку на выход, параллельно буду обрабатывать другую и потом буду ждать пока не включится сосед (затоваривание)".

Конфигурация сети в TIA Portal задается жестко, а мне, получается, нужна динамическая структура сети. Я смотрел: связь "CPU-CPU" с использованием TSEND/TRECEIVE требует задание соответствующей аппаратной конфигурации. Полагаю, что при снятии питания с одного из CPU, второй CPU выпадет в ошибку. Как быть?

Re: Автономные системы S7-1200 + Profinet/Ethernet

Добавлено: 05 апр 2014, 18:03
Автоматизатор
Михайло писал(а):Полагаю, что при снятии питания с одного из CPU, второй CPU выпадет в ошибку
Думаю, что функция просто выдаст "ошибку связи". Контроллер в стоп не перейдет.
Михайло писал(а):TSEND/TRECEIVE
- если правильно помню, то это просто функции приема-отправки данных. Их как напишешь, как обработаешь, так и будет. Автоматом обмен не происходит.

Re: Автономные системы S7-1200 + Profinet/Ethernet

Добавлено: 05 апр 2014, 18:50
Михайло
Ага, нашел подтверждение.
Коммуникационные возможности S7-1200. Соединение однотипных S7-1200 – S7-1200.

Будучи очень похожим на S7-200, S7-1200 имеет, тем не менее, очень много отличий. Отличия коснулись, в том числе и коммуникационных возможностей. S7-200 имел для связи с себе подобными команды NETR и NETW (чтение и запись сети), которые не предполагали каких-либо действий или программной поддержки со стороны партнёра (этакий аналог PUT–GET функций). У S7-1200 тоже есть специальные функции для обмена через встроенный порт TSEND_C TRCV_C, но по принципу действия они скорее похожи на блоки сенд–ресив.
И так, сначала создаём проект, в котором будут присутствовать оба партнера, и раздаём IP адреса. Это принципиальный момент, поскольку установить связь с абстрактным необозначенным партнёром не получится, все контроллеры должны быть прописаны в проекте. Никаких особенных настроек соединения на этом этапе делать не придётся, они все будут сделаны позднее, пока только условно обозначаем сеть и заполняем конфигурацию процессоров.
Следующим шагом будет создание блоков данных содержащих данные, которые будут передаваться. Блоки можно создавать с использованием символьной адресации, ограничений, как в случае коммуникации с S7-300 здесь нет, главное, чтобы они были одинаковыми. В качестве переменной указывается тип «Array» от нуля до необходимого значения в байтах. Немного неудобно, но потом этот массив можно раздёргать на нужное количество переменных по абсолютным адресам. Вопрос консистентности не стоит, так как функции имеют переменную статуса, которые однозначно индицируют начало и завершение процедуры передачи.
Теперь осталось только написать собственно процедуры передачи и приёма данных.
Вызываем из библиотеки блок TSEND_C. Автоматически создаётся «пристёгнутый» TSEND_C DB, в котором будут сохранены параметры данного конкретного соединения. Его заполнять не нужно, этот блок интерфейса функции TSEND_C. После вызова блока в нижней половине окна откроется удобная форма, которая позволяет легко настроить параметры соединения. В левой части формы будут параметры процессора, к которому относятся процедуры вызова, а в правой части можно выбрать контроллер – партнёр из внесённых в конфигурацию. Если контроллера нет в проекте, то и выбрать его не получится. В момент выбора идентификатора связи будет предложено создать «коммуникационный» DB, в котором будут сохранены настойки соединения. Причём созданы будут два блока, на обоих контроллерах
задействованных в коммуникации. Этот момент необходимо отметить, а лучше выписать на бумажку. Вторая половина формы это параметры вызова блока. Можно продолжить заполнять форму, а можно забить переменные непосредственно в программу. Назначение и формат переменных подробно описаны во встроенной справке. Нужно иметь в виду лишь следующее, блок запускается положительным фронтом по входу REQ и больше на него не реагирует до завершения процедуры. Естественно, процедуру можно прервать по входу COM_rst.
Аналогичные действия производим на втором контроллере, только вызываем блок TRCV_C. Тут есть один момент, на который нужно
обратить внимание. При заполнении формы будет предложено создать новый «коммуникационный» DB. Не надо этого делать, а нужно выбрать уже существующий блок данных, созданный на предыдущем этапе и выписанный на бумажку. После чего заносим переменные для блока TRCV_C.
Загружаем проект в контроллеры и инициируем процесс передачи. Информация из DB источника должна переместиться в DB приёмника. Если этого не происходит необходимо анализировать слово статуса на предмет выяснения причин.
Таким образом, S7-1200 имеет простой и удобный механизм для организации связи с однотипными контроллерам через порт программирования, но в отличие от S7-200, где коммуникации прописывались «на одной стороне», этот механизм предусматривает
написание коммуникационной программы на обоих партнёрах. Это менее удобно, но такой подход позволяет организовать диагностику состояния связи на обоих концах соединения. Анализируя слово статуса коммуникационного блока можно сделать заключение о состоянии передачи данных и запрограммировать своевременную реакцию на всевозможные нештатные ситуации, например, обрыв соединения.

Re: Автономные системы S7-1200 + Profinet/Ethernet

Добавлено: 05 апр 2014, 18:56
Михайло
У CPU v4.0 появилась поддержка функционала iDevice, которая не требует явного прописывания коммуникационных партнеров в проекте, как написано здесь для CPU старых версий:
И так, сначала создаём проект, в котором будут присутствовать оба партнера, и раздаём IP адреса. Это принципиальный момент, поскольку установить связь с абстрактным необозначенным партнёром не получится, все контроллеры должны быть прописаны в проекте.
Наверное хорошая штука, если системы управления лабают несколько контор во взаимодействии. Да и самому в одиночку удобнее разбить проект на несколько независимых частей.

Re: Автономные системы S7-1200 + Profinet/Ethernet

Добавлено: 21 май 2014, 17:08
Михайло

Re: Автономные системы S7-1200 + Profinet/Ethernet

Добавлено: 10 янв 2018, 16:18
Михайло

Re: Автономные системы S7-1200 + Profinet/Ethernet

Добавлено: 22 янв 2018, 11:08
Ka3ax
а можно коротко аннотировать происходящее?
здесь немнного расскрыто, но не очень
viewtopic.php?f=3&t=501#p6972

Re: Автономные системы S7-1200 + Profinet/Ethernet

Добавлено: 22 янв 2018, 13:02
Михайло
Я не пробовал. Такой проект, где это нужно, уже разрабатывался. Но у меня там процессоры версии 1.x, если повезёт, то куплены v2.х. А надо v4.х.