SIMATIC HMI Siemens AG All rights reserved.© Information- and Training-Center Knowledge for Automation Date: Filei:SWINCC09e.1 V5.00 Global Script Работа в фоновом режиме
SIMATIC HMI Siemens AG All rights reserved.© Information- and Training-Center Knowledge for Automation Date: Filei:SWINCC09e.2 V5.00 Цели - Функции проекта - Стандартные функции - Внутренние функции - Функции для проекта в целом
SIMATIC HMI Siemens AG All rights reserved.© Information- and Training-Center Knowledge for Automation Date: Filei:SWINCC09e.3 V5.00 Global Script Project functions - функции проекта Standard functions - стандартные функции Internal functions - внутренние функции Аctions Выходное поле для: -поиска файлов; -компиляции всех функций
SIMATIC HMI Siemens AG All rights reserved.© Information- and Training-Center Knowledge for Automation Date: Filei:SWINCC09e.4 V5.00 Пример функции проекта и/или стандартной функции void BitSet(BOOL OnOff, char* lpszWordtag, WORD wbitnumber) { WORD winput = 0; // создание локальных переменных intiscreen = 1; winput = GetTagWord ( lpszWordtag ) ;// чтение переменных процесса iscreen
SIMATIC HMI Siemens AG All rights reserved.© Information- and Training-Center Knowledge for Automation Date: Filei:SWINCC09e.5 V5.00 Внутренние функции: отражение даты и времени в текстовых объектах Дата: Время суток: 15:35:04 Properties/ font/ text/ C action... return date(); Properties/ font/ text/ C action... return clock time(); char* clock time(void) { time_t timer; struct tm *ptm; char *p; time(&timer); ptm = localtime(&timer); p = SysMalloc(9); sprintf(p,"%02d:%02d:%02d", ptm->tm_hour, ptm->tm_min, ptm->tm_sec); return p; } char* date(void) { time_t timer; struct tm *ptm; char *p; time(&timer); ptm = localtime(&timer); p = SysMalloc(9); sprintf(p,"%02d.%02d.%02d", ptm->tm_mday, ptm->tm_mon+1, ptm->tm_year); return p; } Следующие функции созданы в Global Script:
SIMATIC HMI Siemens AG All rights reserved.© Information- and Training-Center Knowledge for Automation Date: Filei:SWINCC09e.6 V5.00 Внутренние функции: пример для графики 1/3
SIMATIC HMI Siemens AG All rights reserved.© Information- and Training-Center Knowledge for Automation Date: Filei:SWINCC09e.7 V5.00 Внутренние функции: пример для графики 2/3 Событие/Кнопка/Мышь/Нажать левую/С-Action... Event/ Button/ Mouse/ Press left/ C-Action... Box_mit_Pos1 (lpszPictureName, lpszObjectName, "Bildfenster1", "Dialogbox1"); 20 Испытательная панель Dialog Box1 в позиции кнопки Вызвать панель в поз.1
SIMATIC HMI Siemens AG All rights reserved.© Information- and Training-Center Knowledge for Automation Date: Filei:SWINCC09e.8 V5.00 Внутренние функции: пример для графики 3/3 Вы можете поместить окна экрана диалога там, где захотите на экране. Чтобы установить отношение с рабочим объектом, удобно, если диалоговое окно появляется там, где он используется. Вы можете получить это позиционирование, выполнив следующие шаги: - сканирование свойств рабочего объекта и всего экрана в целом; - сканирование размеров диалогового окна - определение места появления диалогового окна (справа или слева рядом с рабочим объектом) Эти функции собираются в однй стандартной функции, которая затем может быть использована с любого места (любого экрана и рабочего объекта). Событие/Кнопка/Мышь/Нажать левую/С-Action… Events/ button/ mouse/ left button/ C action... Box_with_Pos2 (lpszPictureName, lpszObjectName, "Screen Window1", "Dialog Box1"); Испытательная панель Dialog Box1 в позиции кнопки
SIMATIC HMI Siemens AG All rights reserved.© Information- and Training-Center Knowledge for Automation Date: Filei:SWINCC09e.9 V5.00 Обработка Actions в фоновом режиме с Global Script Operating hours.PAS WORD HOUR, MINUTE; BYTE Z_ON; Z_ON = GetTagByte ("Z_On"); if (Z_ON) { MINUTE = GetTagWord ("Minutes"); MINUTE = MINUTE + 1; SetTagWord ("Minutes", MINUTE); HOUR = MINUTE / 60; SetTagWord ("operating hours", HOUR); } return(HOUR);
SIMATIC HMI Siemens AG All rights reserved.© Information- and Training-Center Knowledge for Automation Date: Filei:SWINCC09e.10 V5.00 Пример с DLL-функциями #pragma code("c:\a_WinCC_Kurs_Prj_301_00\ab_pas\library\demo_dll.dll") int CountingDll(int start, int end); #pragma code() int result, start, end, partial step; partial step = GetTagDWord("partial step"); printf("\r\n\r\noutput of 10 partial steps with DLL function "); printf("to max. value: %d",partial step*10); for (start=0;start