Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Упражнение 2. Экспорт данных в Excel




Упражнение 2. Экспорт данных в Excel

    Теперь сохраним график изменения уровня с интервалом в 1 секунду в таблице Excel. На самом деле, использовать Excel для записи исторических значений сигнала, да еще и на стороне клиентской программы нелогично, но мы выполним здесь эту задачу, как пример взаимодействия InfinityHMI со сторонним приложением, поддерживающим технологию OLE Automation, исключительно потому, что данное приложение есть на большинстве компьютеров.

10. Сохраните файл под именем Фамилия11. xml.

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

12. Теперь необходимо установить связь с данными, предоставляемыми Excel. Для этого в редакторе VBA в меню Сервис -> Ссылки (Tools -> References) выберите Microsoft Excel 10. 0 Object Library, как показано на рис. 5. 4 (версия Excel, установленная на Вашем компьютере может быть другая).

Рис. 5. 4. Выбор компонента MS Excel для ссылки на него из скрипта

 

13. Выберите в дереве проекта объект Infinity HMI Objects  ThisDisplay.

14. В окне редактирования исходного текста в левом верхнем выпадающем списке выберите элемент Общая область (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

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

Private Sub GwxDisplay_PreRuntimeStart()

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

    Set g_Excel_App = CreateObject(" Excel. application" )

    g_Excel_App. Visible = True

    ' Открыть лист Excel

    Set g_Excel_Book = g_Excel_App. Workbooks. Add

    Set g_Excel_Sheet = g_Excel_Book. Worksheets(1)

End Sub

16. Лишние процедуры, сгенерированные VBA можно удалить. В конечном итоге окно ThisDisplay должно выглядеть так, как на рис. 5. 5.

Рис. 5. 5. Исходный текст (не законченный) процедуры старта экранной формы

17. Выберите в дереве проекта ветку GwxExcelExport_Main и в процедуру ExcelExport запишите код для сохранения значения сигнала Level в очередную строку первого столбца текущего листа Excel.

Как получать значение OPC сигнала было рассмотрено выше. Вам могут потребоваться дополнительная глобальная переменная (для подсчета номера строки), инициализировать данную переменную необходимо при обработке события GwxDisplay_PreRuntimeStart(). Для значений в Excel можно воспользоваться, например, следующей конструкцией: ThisDisplay. g_Excel_Sheet. Range(sCellName) = … где sCellName это строка, идентифицирующая ячейку Excel, например, " A1". Для того, чтобы перевести число в строку можно воспользоваться, например, следующей конструкцией Visual Basic: Dim sLineName As String sLineName = Str(g_LineNumber) sCellName = " A" + Mid(sLineName, 2, Len(sLineName) - 1) где g_LineNumberэто номер строки.

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

Некоторые сложности могут возникнуть при наличии антивирусных программ. Если на Вашем компьютере установлены антивирусные программы, то они могут не позволять приложению InfinityHMI запускать Excel, как OLE сервер. В этом случае, необходимо настроить Ваши антивирусные программы. Например, программа OfficeGuard из пакета «Антивирус Касперского» по умолчанию не допускает запуска таких приложений, а спрашивает пользователя разрешения, при этом в области нотификации Windows появляется иконка OfiiceGuard, щелкнув на которую можно указать действия антивирусной программы в этом случае.

19. Теперь можно сделать окончательный вариант экспорта: вместо кнопки сделайте какому-нибудь объекту вызов сценария VBA при помощи динамики «Динамическое действие». В качестве имени сценария укажите имя сценария из созданной ранее кнопки. Настройте запуск сценария один раз в 1000 мс.

20. По желанию можно сделать автоматическое формирование графика средствами Excel, можно не показывать файл на экране и сохранять его автоматически при переходе в режим редактирования или выходе.

  На этом лабораторная работа закончена

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...