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

Siemens Step7 создание блока данных для логирования

ПЛК SIMATIC (S7-200, S7-1200, S7-300, S7-400, S7-1500, ET200)
Ответить

Автор темы
Raindrops
Сообщения: 1
Зарегистрирован: 01 мар 2017, 08:11
Имя: Андрей

Siemens Step7 создание блока данных для логирования

Сообщение Raindrops »

Всем доброго времени суток.
Обрисую обстановку: есть промышленный стенд под управлением Siemens S300: CPU 315-2 DP
Стоит задача сделать самодиагностическую проверку контролируемых параметров с датчиков (давление, вакуум, потери вакуума) по определённому событию c сохранением полученной информации в блок данных (частота проверки - раз в сутки). Далее, техперсонал уже может контролировать состояние этих проверок через HMI.

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

Запись должна состоять из 9 полей базовых типов (int, date, time_of_day, dint, dint, dint, s5time, char, char), то есть общая длина записи = 192 бита, 24 байта.
Ограничение на размер блока данных для данного процессора - 64 Кбайт, что теоретически должно хватить на более, чем 2600 записей указанного формат, запас получается очень большой (мне хватит и 1000 записей)
Вопрос состоит в том, как лучше и проще организовать хранение данных и обращение к ним. Подозреваю, что надо копать в сторону инициализации блока данных через UDT, но тут же возникает вопрос, мне надо сразу создавать переменные в DB под 1000 записей или это как-то можно сделать динамически, добавляя при проверке определённое количество полей к DB?
Или необходимо статично создать DB с необходимыми полями для 1000 записей?

Буду рад, если кто-нибудь поделится знаниями, личным опытом или ссылками по теме.

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

Siemens Step7 создание блока данных для логирования

Сообщение ZuElecRu »

Я делал статичные, просто создавал DB для каждого типа данных как массивы, а HMI обращалась к по номеру в массиве, который соответствовал номеру датчику (у меня были не датчики, а тара). Например, вы можете записывать событие, допустим пропадания давления для датчика №13, в DB100.DBx1.6, а время в другой DB101.dbw 24. тогда очень легко доставать данные из HMI.
Недостаток: запишется только последнее событие.
Но проще, мне кажется, регистрировать события в HMI, как лог событий или аварий. Если использовать в качестве HMI обычный ПК, то не будет проблем с сохранением архивов и логов на жестком диске, их можно копировать и обрабатывать другими средствами, если будете сохранять архивы в *.CSV формате, даже обычным экселем. Там же в HMI сможете настроить ежедневные "репорты" - отчеты .

wlvlw
новенький
новенький
Сообщения: 1
Зарегистрирован: 04 мар 2020, 09:18
Имя: Андрей
Страна: Россия

Siemens Step7 создание блока данных для логирования

Сообщение wlvlw »

Всем привет, ставим tia portal. С PC-station

заводим код на ВБ. Им в онлайне читаем переменные и записываем в txt лог по таскам. Таски создаются по схеме Сет бита(HMI-тэга)-Выполнение скрипта.
Скрипт примерно такой, любой чайник раскурит за 2-3 часа

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

Sub excel_fbe()
'определяем переменные, которые будем использовать
Dim FolderWay, ObjectWay, FileName, File, FileExist, Apendix, Row

	
'Define folger way
FolderWay = "D:\db\"

Set ObjectWay = CreateObject("Scripting.FileSystemObject")

If Not ObjectWay.FolderExists(FolderWay) Then
	ObjectWay.CreateFolder FolderWay
End If

'Define file name
FileName = "fbe.csv"

Set File = CreateObject("Scripting.FileSystemObject")

FileExist = File.FileExists(FolderWay & "\" & FileName)

If FileExist = False Then

'Create file
File.CreateTextFile(FolderWay &"\"& FileName)

Set Apendix = File.OpenTextFile(FolderWay &"\"& FileName,8)

Apendix.WriteLine(" Время ; Дата ; Серия - Номер трубы ; AssistAir 1; Flow 1; Atomize 1; AssistAir 2; Flow 2; Atomize 2; AssistAir 3; Flow 3; Atomize 3; AssistAir 4; Flow 4; Atomize 4; AssistAir 5; Flow 5; Atomize 5; AssistAir 6 ; Flow 6; Atomize 6;")

Apendix.Close

'Clear object
Set File = Nothing
End If

Set File = CreateObject("Scripting.FileSystemObject")
Set Row = File.OpenTextFile(FolderWay &"\"& FileName,8)

Row.WriteLine(Time & ";" & Date & ";" & SmartTags("счетчик") & ";" & SmartTags("assist1")& ";" & SmartTags("flow1")& ";" & SmartTags("atom1") & ";" & SmartTags("assist2")& ";" & SmartTags("flow2") & ";" & SmartTags("atom2") & ";" & SmartTags("assist3") & ";" & SmartTags("flow3") & ";" & SmartTags("atom3") & ";" & SmartTags("assist4") & ";" & SmartTags("flow4") & ";" & SmartTags("atom4") & ";" & SmartTags("assist5")& ";" & SmartTags("flow5")& ";" & SmartTags("atom5") & ";" & SmartTags("assist6")& ";" & SmartTags("flow6")& ";" & SmartTags("atom6"))
Row.Close


End Sub

v0v
не первый раз у нас
не первый раз у нас
Сообщения: 343
Зарегистрирован: 12 дек 2018, 14:47
Имя: Влад
Благодарил (а): 1 раз
Поблагодарили: 44 раза

Siemens Step7 создание блока данных для логирования

Сообщение v0v »

Если есть WinCC Flex то планировщиком (Sceldeduler) можно включать раз в сутки скрипт который будет записывать файл с отметкой времени (напрм. Excel или txt) теги. Скрипт недавно помещался в одной из тем.
Ответить

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