Найти в Дзене
АСУТП в действии

Сохранение данных с помощью Excel (TIA portal)

Недавно поступила такая задача: Есть дробильный комплекс, оборудованный тремя дробилками, несколькими транспортерами, сортировочным грохотом, весами. Нужно записывать и хранить данные о его режиме работы.

Спрашивается как?

Как минимум нужно где-то брать показания тока, куда-то их передавать и где хранить?

В общем, нашли и дождались контроллер Siemens с аналоговыми входными модулями, трансформаторы тока и преобразователями тока.

Закупили оборудование контроллер Siemens 6ES7214-1AG40-0XB0, модули Siemens 6ES7231-4HF32-0XB0, преобразователи напряжение/ток LUMEL P20Z-09311008, трансформаторы и монтажные принадлежности.

Смонтированный контроллер
Смонтированный контроллер
Сонтированные трансформаторы и преобразователи
Сонтированные трансформаторы и преобразователи

В новом проекте добавил используемый контроллер, сделал обработку аналоговых сигналов.

Обработка аналоговых сигналов
Обработка аналоговых сигналов

Далее добавил PC, платы коммуникации с контроллером.

Коммуникация Networл
Коммуникация Networл

Обязательно нужно добавить соединение между PC и контроллером во вкладке "Connection".

Вкладка Connection
Вкладка Connection

Проверил соединение между PC и контроллером.

Соединение HMI и PC
Соединение HMI и PC

Нужно обязательно выбрать в качестве HMI WinCC RT Professional, в нем есть возможность работы процедуры каждые 5 сек (проверить написание), по незнанию первый раз выбрал Advanced, такая же процедура работает минимально 1 раз в минуту.

-8

Далее создал HMI экран с нужными элементами для вывода показаний, добавил теги.

Таблица тегов
Таблица тегов
Создаем функцию VB function в которой прописываем создание файла
Создаем функцию VB function в которой прописываем создание файла

Собственно сама процедура:

Sub CREATE()
Dim FolderPath, ObjectPath, Filename, File, FileExist, Columns, Row
Dim DY,MNTH,YR,MNTHNM
DY=Day(Date())
MNTH=Month(Date())
YR=Year(Date())

' Определяем тип месяца, с 0 или нет
Dim MNTH1, DY1
If MNTH < 10 Then
MNTH1 = "0" & MNTH
Else
MNTH1 = MNTH
End If
' Определяем тип даты, с 0 или нет
If DY < 10 Then
DY1 = "0" & DY
Else
DY1 = DY
End If
FolderPath = "C:\_DOC\"
Filename = "Report_" & YR & "_" & MNTH1 & "_" & DY1 & ".csv"
Set ObjectPath = CreateObject("Scripting.FilesystemObject")
'Проверяем, существует ли файл
If Not ObjectPath.FolderExists(FolderPath) Then
ObjectPath.CreateFolder FolderPath
End If
' Еще раз проверяем
Set File = CreateObject("Scripting.FilesystemObject")
FileExist = File.FileExists(FolderPath & "\" & Filename)
If FileExist = False Then
File.CreateTextFile(FolderPath & "\" & Filename)
'Создаем заголовок таблицы
Set Columns = File.OpenTextFile(FolderPath & "\" & Filename, 8)
Columns.WriteLine("Date ; A1 ; A2 ; A3 ; A6 ; A7 ; A8 ; B1 ; B2 ; B4 ; B5 ;
B6 ; B7 ; B3_Scales")
Columns.Close
Set File = Nothing
End If
'Заполняем файл
Set File = CreateObject("Scripting.FilesystemObject")
Set Row = File.OpenTextFile(FolderPath & "\" & Filename, 8)
Row.WriteLine(Date() & " " & Time() & ";" & SmartTags("T_A1_Current") & ";" &
SmartTags("T_A2_Current") & ";" & SmartTags("T_A3_Current") & ";"&
SmartTags("T_A6_Current") & ";"& SmartTags("T_A7_Current") & ";"&
SmartTags("T_A8_Current") & ";"& SmartTags("T_B1_Current") & ";"&
SmartTags("T_B2_Current") & ";"& SmartTags("T_B4_Current") & ";"&
SmartTags("T_B5_Current") & ";"& SmartTags("T_B6_Current") & ";"&
SmartTags("T_B7_Current") & ";" & SmartTags("IW_B3_Scales") & ";")
Row.Close
Set File = Nothing 'Здесь обновляем файл.
End Sub

Каждые сутки создается файл в имени которого текущая дата. Во время работы проверяется файл на наличие, если нет - то создается заново. Заполняем первую строку файла названиями столбцов, и далее заполняем построчно данные.

Sheduled tasks
Sheduled tasks

Используем Sheduled tasks (Запланированные задачи) для вызова процедуры каждые 5 секунд.

Компилируем и ...

Вуаля...

Мы имеем подключенный к контроллеру компьютер который сохраняет в файле показания тока работающего оборудования каждые 5 секунд.