Материал: LS-Sb89577

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Gwxa1_Main (он открывается по умолчанию) запишем следующую програм-

му (табл. 7.1).

 

Таблица 7.1

Текст программы

Комментарий

Public Declare Function GetOPCValue Lib

Для получения значения из

OPC и записи значения в OPC

"OPCDualSource" _

описаны две функции:

(ByRef a_pvOpcTag As Variant, ByRef a_pvValue As

GetOPCValue и SetOPCValue

Variant) As Long

 

Public Declare Function SetOPCValue Lib

Водим две глобальные

"OPCDualSource.dll" _

переменные для хранения

(ByRef a_pvOpcTag As Variant, ByRef a_pvValue As

предыдущего состояния

Variant) As Long

нагрева и охлаждения

Dim Heat_Out_Curr As Boolean

 

Dim Cool_Out_Curr As Boolean

 

 

 

Public Sub имя сценария (o As GwxPick)

 

 

 

Dim Heat_In As Variant

Объявление переменных

произвольного типа

Dim Stop As Variant

 

Dim Cool_ In As Variant

 

Dim Heat_Out As Variant

 

Dim Cool_Out As Variant

 

 

 

Dim iRet As Long

Объявление локальной

переменной числового типа

 

iRet = GetOPCValue("ОРС сигнал нагрев", Heat_In)

Чтение сигналов ОРС сервера.

Необходимо прописать полный

iRet = GetOPCValue("ОРС сигнал стоп", Stop)

путь к сигналу

iRet = GetOPCValue("ОРС вкл нагрев", Heat_Out)

 

iRet = GetOPCValue("ОРС сигнал вкл охлаждение",

 

Cool_Out)

 

 

 

If Heat_In And Not Cool_Out And Not Cool_Out_Curr

Реализации «старт-стоп»

логики при помощи операторов

Then

if

Heat_Out_Curr = True

 

End If

 

If Cool_ In And Not Heat_Out And Not Heat_Out_Curr

 

Then

 

Cool_Out_Curr = True

 

End If

 

If Stop Then

 

Heat_Out_Curr = False

 

Cool_Out_Curr = False

 

End If

 

 

 

iRet = SetOPCValue("ОРС вкл нагрев ", Heat_Out_Curr)

Запись сигналов ОРС сервера.

Необходимо прописать полный

iRet = SetOPCValue("ОРС сигнал вкл охлаждение ",

путь к сигналу

Cool_Out_Curr)

 

End Sub

 

31

Обратите внимание на выделенные курсивом строки в программе. Здесь следует указывать имена и пути к переменным в вашем дереве ОРС-сервера.

Сохраните разработанный сценарий и запустите мнемосхему на исполнение. Если все сделано правильно, то реализованная на VBA «старт-стоп»- логика не позволит одновременно включить и охлаждение, и нагрев.

После того, как закончите отладку VBA-скрипта, можно сделать так, чтобы он работал непрерывно.

7.2.2. Экспорт данных в MSExcel

Cохраним график изменения температуры с интервалом в 1 с в таблице

Excel.

В предыдущей мнемосхеме создайте кнопку «Экспорт значения в Excel». Настройте для этой кнопки выполнение сценария VBA и откройте этот сценарий на редактирование.

Далее необходимо установить связь с данными, предоставляемыми Excel. Для этого в редакторе VBA в меню Сервис → Ссылки (Tools → References) выберите Microsoft Excel 11.0 Object Library (версия Excel, уста-

новленная на вашем компьютере может быть другая).

Выберите в дереве проекта объект Infinity HMI Objects ThisDisplay. В окне редактирования исходного текста, в левом верхнем выпадающем списке выберите элемент «Общая область» (General), а в правом верхнем углу «Описания» (Declarations) (обычно эта область открыта по умолчанию). Внесите здесь строку «Option Explicit». В данной секции окна программы могут быть сделаны объявления глобальных переменных и введены прототипы

функций, используемых во всех процедурах:

Option Explicit

Public g_Excel_App As Excel.Application

Public g_Excel_Book As Excel.Workbook

Public g_Excel_Sheet As Excel.Worksheet

Public g_LineNumber As Integer.

В окне программы объекта ThisDisplay, в левом верхнем выпадающем списке выберите элемент GwxDisplay, а в правом верхнем углу – PreRunTimeStart. При этом будет сгенерирована процедура – обработчик этого события. Данная процедура будет вызываться всякий раз при переходе в режим исполнения. Запишите в нее следующий код:

Private Sub GwxDisplay_PreRuntimeStart()

32

g_LineNumber = 1

' Открыть Excel и сделать его видимым

Set g_Excel_App = CreateObject("Excel.application")

g_Excel_App.Visible = False ' Открыть лист Excel

Set g_Excel_Book = g_Excel_App.Workbooks.Add

Set g_Excel_Sheet = g_Excel_Book.Worksheets(1)

End Sub

Лишние процедуры, сгенерированные VBA можно удалить.

Выберите в дереве проекта ветку «Gwx[Имя процедуры]_Main» и в процедуру [Имя процедуры] запишите код для сохранения значения сигнала Temp в очередную строку первого столбца текущего листа Excel.

Dim Temp As Variant

Dim sLineName As String

Dim iRet As Long

iRet = GetOPCValue("Сигнал ОРС сервера температура", Temp) 'Преобразование числовых данных в строку, где g_LineNumber – это но-

мер строки:

sLineName = Str(ThisDisplay.g_LineNumber) 'Формирование значения текущей ячейки в листе Excel

sCellNameb = "B" + Trim(sLineName)

sCellName = "A" + Trim(sLineName)

'Запись значения Temp в sCellName, где sCellName – это строка, идентифицирующая ячейкуExcel, например, "A1".

ThisDisplay.g_Excel_Sheet.Range(sCellName) = Level

'Запись даты и времени генерации сигнала в соседнюю ячейку Excel, например, "В1":

ThisDisplay.g_Excel_Sheet.Range(sCellNameb)

=

Format(Now,

"dd.mm.yyyy hh:nn:ss")

'Увеличение номера строки на единицу:

ThisDisplay.g_LineNumber = ThisDisplay.g_LineNumber + 1

End Sub

Создайте кнопку на мнемосхеме «Отобразить отчет», при нажатии которой будет отображаться Excel, первый лист которого будет содержать сгенерированный ранее отчет. Сценарий VBA, который будет запускаться по нажатию этой кнопки, содержит одну строку:

33

ThisDisplay.g_Excel_App.Visible = True.

Самостоятельно создайте кнопку «Скрыть отчет».

Убедитесь, что созданный вами сценарий корректно работает. В текущем варианте при переходе в режим исполнения откроется Excel, однако он будет невидимым. В нем будет создано несколько листов (так как это настроено по умолчанию в Excel). В активном листе при нажатии на кнопку «Экспорт значения в Excel» будет появляться текущее значение температуры. Каждое очередное значение в новой строке. При каждом запуске мнемосхемы открывается новая книга Excel. Отображение отчета происходит при нажатии на созданную ранее кнопку «Отобразить отчет».

7.3. Содержание отчета

Отчет должен содержать выполнение двух упражнений лабораторной работы:

мнемосхемы с описанием созданных VBA-сценариев;

полученные в результате выполнения работы таблицы MSExcel.

34

Содержание

 

Лабораторная работа №1

 

ПРОГРАММИРОВАНИЕ ПЛК В СРЕДЕ OPENPCS .................................

3

Лабораторная работа №2

 

КОНФИГУРИРОВАНИЕ И ПРОГРАММИРОВАНИЕ

 

ПЛК ЭЛСИ-ТМ .............................................................................................

10

Лабораторная работа №3

 

НАСТРОЙКА ПРОТОКОЛА MODBUSTCP .............................................

16

Лабораторная работа №4

 

РАЗРАБОТКА SCADA-СИСТЕМЫ ДЛЯ ТЕПЛОВОГО ОБЪЕКТА .....

20

Лабораторная работа №5

 

АЛАРМЫ И ТРЕНДЫ..................................................................................

22

Лабораторная работа №6

 

ВСТРАИВАНИЕ ОБЪЕКТОВ ACTIVEX ..................................................

25

Лабораторная работа №7

 

РАЗРАБОТКА VBA-ПРИЛОЖЕНИЙ В INFINIHMI................................

29

35