Ведение архива в ПЛК

Автоматизация технологических процессов, системы управления, АСУ ТП, АСКУЭ, программирование ПЛК, человеко-машинный интерфейс, сетевое оборудование, протоколы
Ответить
Аватара пользователя
yur
Специалист
Сообщения: 112
Зарегистрирован: 26 дек 2016, 19:47
Откуда: Minsk
Контактная информация:

Ведение архива в ПЛК

Сообщение yur »

Имеется такая задачка.
Нужно вести статистику включений/выключений ПЛК и, условно говоря, нажатия какой-либо кнопки.
S7-300 Step7 подключен через профинет.
Статистику нужно вести на компьютере, в каком формате - это уже вторично, т.е. не особо важно.
Никто не сталкивался с подобным вопросом?

Допустим, организуем циклическую запись в датаблок (буфер), ну пускай на 20-50 записей.
Дальше возникают вопросы - как передавать на ПК?
Проблемка в том, что ПК может быть включен гораздо позже после старта ПЛК, может быть перезагружен и тд.
И нужно как-то синхронизировать этот буфер с таблицей на ПК.
СКАДЫ нет и не будет. Но есть рантайм Винфлекс и вообще есть возможность устанавливать что-то самописное.

И еще вопрос - как отследить выключение ПЛК?
Киров репортинг!

Аватара пользователя
Автоматизатор
Профессионал
Сообщения: 993
Зарегистрирован: 09 окт 2012, 05:18

Re: Ведение архива в ПЛК

Сообщение Автоматизатор »

Собирали статистику с контроллеров по профинет на станцию (компьютер + рантайм Винфлекс).

Если ПЛК и ПК могут независимо друг от друга включаться и выключаться, а архив надо вести, то напрашивается еще одно отдельной устройство слежения.

Не слишком ли? Может надо упростить требования?

Аватара пользователя
yur
Специалист
Сообщения: 112
Зарегистрирован: 26 дек 2016, 19:47
Откуда: Minsk
Контактная информация:

Re: Ведение архива в ПЛК

Сообщение yur »

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

Пока не очень понятно как синхронизировать.
Если например на момент старта рантайма, в буфере уже лежит пара новых записей, которые еще не перенесены в архивный файл на ПК
Киров репортинг!

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Ведение архива в ПЛК

Сообщение Михайло »

Контроллер может передавать данные любой сложности и структуры через TCP, для этого надо изучать библиотечные функции TSEND_C, TRCV_C. Можно реализовать передачу в формате файла csv, например. И это было бы логичным и понятным всем.

Можно передавать также в простом формате JSON, многие системы умеют работать с этой штукой, но в конкретной задаче этот формат избыточен, судя по всему.

На TCP-функциях можно реализовать урезанный HTTP-протокол и HTML-контент, тогда в этом случае можно будет тестировать обмен данными в обычном браузере. Поставите себе такую планку - многому научитесь. Я помогу с примерами кода.

Аватара пользователя
Автоматизатор
Профессионал
Сообщения: 993
Зарегистрирован: 09 окт 2012, 05:18

Re: Ведение архива в ПЛК

Сообщение Автоматизатор »

Собирать данные штатными средствами поросто. А городить самопальный огород - сплошной геморрой. Разве что наработаться.

Аватара пользователя
yur
Специалист
Сообщения: 112
Зарегистрирован: 26 дек 2016, 19:47
Откуда: Minsk
Контактная информация:

Re: Ведение архива в ПЛК

Сообщение yur »

Михайло писал(а):Контроллер может передавать данные любой сложности и структуры через TCP, для этого надо изучать библиотечные функции TSEND_C, TRCV_C. Можно реализовать передачу в формате файла csv, например. И это было бы логичным и понятным всем.
.
В Степ7 5.5 нет TSEND_C. Только TSEND.
А вообще, эта система похоже не работает с динамическими айпи адресами, получаемыми от DHCP

За примеры буду весьма благодарен.
Киров репортинг!

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Ведение архива в ПЛК

Сообщение Михайло »

yur писал(а):В Степ7 5.5 нет TSEND_C. Только TSEND.
TSEND_C - это современный вариант TSEND, в которую встроены функции TCON/TDISCON. В вашем случае придётся ещё и эти функции использовать для установления соединения.
yur писал(а):А вообще, эта система похоже не работает с динамическими айпи адресами, получаемыми от DHCP
Да, но если сильно надо, можете реализовать и DHCP врукопашную на этих функциях. :)

Аватара пользователя
yur
Специалист
Сообщения: 112
Зарегистрирован: 26 дек 2016, 19:47
Откуда: Minsk
Контактная информация:

Re: Ведение архива в ПЛК

Сообщение yur »

Михайло писал(а):Михайло
Написал в личку
Киров репортинг!

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Ведение архива в ПЛК

Сообщение Михайло »

вечером, если не забуду, скину :)

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Ведение архива в ПЛК

Сообщение Михайло »

S7-1200 TIA Portal V13 SP2 BASIC TSEND_C, TRCV_C

https://my-files.ru/5z6w8y

Удалил из реального проекта лишнее. Все основное действо в блоке TCP.

Аватара пользователя
yur
Специалист
Сообщения: 112
Зарегистрирован: 26 дек 2016, 19:47
Откуда: Minsk
Контактная информация:

Re: Ведение архива в ПЛК

Сообщение yur »

Спасибо, будем пытаться разобраться.
Пока совсем непонятно как на компе принимать посылки с ПЛК.

И вопрос ( допустим используем TSEND)
Сначала я открываю соединение с помощью TCON
далее передаю информацию программе на ПК.
После этого нужно сразу закрывать соединение - TDISCON?
И как ПЛК будет реагировать если связь с компом отвалится?

запасного ПЛК к сожалению нет, экспериментировать не на чем.
Киров репортинг!

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Ведение архива в ПЛК

Сообщение Михайло »

Ах да, на компьютере можно работать прямо в браузере, пишите примерно так:

http://192.168.1.40:2000/?position=300&quantity=2
или
http://192.168.1.40:2000/?position=300& ... &support=1

ПЛК разбирает строку position=300, quantity=2, support=1, проверяет на "вшивость" и переписывает в соответствующие тэги. В ответ выводится маленькая html-страница.
Это самый обычный HTTP-протокол, компьютер из браузера делает запрос GET, передавая параметры в URL. ПЛК получает, парсит запрос, отыскивая там "position=" и остальное. В ответ отсылает

Код: Выделить всё

HTTP/1.1 200 OK
Content-Length: XXXX
Content-Type: text/html

<html>
<head><title>S7-1200 response</title></head>
<body><p>activated=X
ready=X
position=XXXX
left=XXXX
support=X</p>
<h1>[Статус позиционера] [Результат]</h1></body>
</html>
Браузер воспринимает это как обычный ответ веб-сервера и обрабатывает, отображая html-страницу с текущим состоянием оборудования.
Всё это реализовано в этом небольшом проекте, только возможно в результате вырезания остального функционала что-то сломалось.

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Ведение архива в ПЛК

Сообщение Михайло »

yur писал(а):Сначала я открываю соединение с помощью TCON
далее передаю информацию программе на ПК.
После этого нужно сразу закрывать соединение - TDISCON?
И как ПЛК будет реагировать если связь с компом отвалится?
На уровне интернета раньше было именно так: подсоединился, передал данные запрос-ответ, закрыл соединение. Потом консорциум интернета добавил в HTTP-протокол постоянное соединение, точнее Keep-Alive (удерживать соединение) и выдержка времени в секундах, по умолчанию в течение обычно 5 минут. Этот вариант стал навязываться как основной и кажется браузеры так и делают.

ПЛК на уровне операционной системы не контролирует TCP-соединения, это должны делать вы сами в программе, как вам душе угодно.

Вам нужно решить вопрос: кто устанавливает соединение и делает первый запрос - компьютер или ПЛК. В моем проекте инициатором был компьютер. В принципе несложно перевернуть роли, но тогда нельзя будет тестировать из браузера, так как браузер всегда клиент (инициатор).

Ответить