InTouch 8.0 - Opis funkcji, pól i zmiennych systemowych

364
Wonderware ® FactorySuite™ InTouch ® Opis funkcji, pól i zmiennych systemowych Wersja A Ostatnia wersja: Wrzesień 2002

Transcript of InTouch 8.0 - Opis funkcji, pól i zmiennych systemowych

Wonderware® FactorySuite™

InTouch® Opis funkcji, pól i zmiennych systemowychWersja A

Ostatnia wersja: Wrzesień 2002

Invensys Systems, Inc.

Wszystkie prawa zastrzeżone. Żaden fragment niniejszej publikacji nie może być kopiowany, przechowywany w systemie do wyszukiwania informacji, przesyłany za pomocą jakichkolwiek metod: elektronicznych, mechanicznych, fotokopiowania, nagrywania, lub też w jakikolwiek inny sposób, bez uprzedniego otrzymania pisemnej zgody Invensys Systems, Inc. Dołożono wszelkich starań, aby informacje zawarte w tej publikacji były kompletne i rzetelne, jednakże ani dostawca ani autor nie przejmują odpowiedzialności za błędy i omyłkowe pominięcia. Nie jest również przyjmowana jakakolwiek odpowiedzialność za szkody wynikłe z korzystania z informacji podanych w niniejszym dokumencie.Podane informacje mogą ulec zmianie bez uprzedzenia, i nie są zobowiązujące dla Invensys Systems, Inc. Oprogramowanie może być wykorzystywane i kopiowane wyłącznie przy zachowaniu zgodności z tymi dokumentami.

© 2002 Invensys Systems, Inc. Wszystkie prawa zastrzeżone.

Invensys Systems, Inc.33 Commercial StreetFoxboro, MA 02035(949) 727-3200http://www.wonderware.com

Znaki handlowe

Terminy używane w niniejszej książce, co do których było wiadomo, że są znakami firmowymi lub oznaczeniami usług, zostały odpowiednio wyróżnione. Invensys Systems, Inc. nie może zaświadczyć o pełnej kompletności tych informacji. Korzystanie z tych terminów w niniejszej książce nie może być traktowane jako naruszanie praw do tych znaków handlowych lub oznaczeń usług.

Alarm Logger, ActiveFactory, ArchestrA, Avantis, DBDump, DBLoad, DTAnalyst, FactoryFocus, FactoryOffice, FactorySuite, hotlinks, InBatch, InControl, IndustrialRAD, IndustrialSQL Server, InTouch, InTrack, MaintenanceSuite, MuniSuite, QI Analyst, SCADAlarm, SCADASuite, SuiteLink, SuiteVoyager, WindowMaker, WindowViewer, Wonderware, oraz Wonderware Logger są znakami towarowymi Invensys plc, jego reprezentanów i filii. Wszystkie inne znaki mogą być znakami towarowymi należącymi do ich właścicieli.

Spis treści 5

Spis treści

Wprowadzenie ..................................................17

Konwencja opisu .................................................................................. 17Informacje o Podręczniku użytkownika............................................... 18Pomoc techniczna................................................................................. 19Licencja FactorySuite........................................................................... 19

ROZDZIAŁ 1: Zmienne systemowe.................21$AccessLevel ....................................................................................... 21$AlarmPrinterError .............................................................................. 22$AlarmPrinterNoPaper......................................................................... 22$AlarmPrinterOffline ........................................................................... 23$AlarmPrinterOverflow ....................................................................... 23$ApplicationChanged........................................................................... 24$ApplicationVersion............................................................................. 24$ChangePassword ................................................................................ 25$ConfigureUsers................................................................................... 25$Date .................................................................................................... 26$DateString........................................................................................... 26$DateTime ............................................................................................ 26$Day ..................................................................................................... 27$HistoricalLogging............................................................................... 27$Hour.................................................................................................... 28$InactivityTimeout ............................................................................... 28$InactivityWarning............................................................................... 29$LogicRunning..................................................................................... 29$Minute ................................................................................................ 30$Month ................................................................................................. 30$Msec ................................................................................................... 30$NewAlarm .......................................................................................... 31$ObjHor................................................................................................ 31$ObjVer ................................................................................................ 31$Operator.............................................................................................. 32$OperatorDomain................................................................................. 32$OperatorDomainEntered .................................................................... 33$OperatorEntered ................................................................................. 33$OperatorName .................................................................................... 33$PasswordEntered ................................................................................ 34$Second ................................................................................................ 34$StartDdeConversations....................................................................... 34

Opis funkcji, pól i zmiennych systemowych

6 Spis treści

$System.................................................................................................35$Time ....................................................................................................35$TimeString...........................................................................................35$VerifiedUserName...............................................................................36$Year .....................................................................................................36

ROZDZIAŁ 2: Pola zmiennych.........................37Typy zmiennych ....................................................................................37Zmienne typu pamięciowego (Memory)...............................................38

Zmienne typu I/O ..............................................................................38Indirect Discrete, Indirect Analog, Indirect Message........................39Pozostałe typy zmiennych .................................................................39

Zestawienie typów pól zmiennych........................................................40.Ack .......................................................................................................46.AckDev ................................................................................................48.AckDsc ................................................................................................49.AckROC...............................................................................................50.AckValue..............................................................................................51.Alarm ...................................................................................................52.AlarmAccess ........................................................................................53.AlarmAckModel ..................................................................................54.AlarmClass...........................................................................................55.AlarmComment....................................................................................56.AlarmDate............................................................................................57.AlarmDev.............................................................................................58.AlarmDevCount ...................................................................................59.AlarmDevDeadband.............................................................................59.AlarmDevUnAckCount .......................................................................60.AlarmDisabled .....................................................................................60.AlarmDsc .............................................................................................61.AlarmDscCount ...................................................................................62.AlarmDscDisabled ...............................................................................62.AlarmDscEnabled ................................................................................63.AlarmDscInhibitor ...............................................................................64.AlarmDscUnAckCount ........................................................................65.AlarmEnabled ......................................................................................65.AlarmGroup .........................................................................................66.AlarmGroupSel ....................................................................................67.AlarmHiDisabled .................................................................................67.AlarmHiEnabled ..................................................................................68.AlarmHiHiDisabled .............................................................................68.AlarmHiHiEnabled .............................................................................69.AlarmHiHiInhibitor .............................................................................70

Opis funkcji, pól i zmiennych systemowych

Spis treści 7

.AlarmHiInhibitor................................................................................. 71

.AlarmLimit.......................................................................................... 72

.AlarmLoDisabled ................................................................................ 72

.AlarmLoEnabled ................................................................................. 73

.AlarmLoInhibitor ................................................................................ 74

.AlarmLoLoDisabled............................................................................ 75

.AlarmLoLoEnabled............................................................................. 75

.AlarmLoLoInhibitor............................................................................ 76

.AlarmMajDevDisabled ....................................................................... 77

.AlarmMajDevEnabled ........................................................................ 77

.AlarmMajDevInhibitor........................................................................ 78

.AlarmMinDevDisabled ....................................................................... 79

.AlarmMinDevEnabled ........................................................................ 79

.AlarmMinDevInhibitor ....................................................................... 80

.AlarmName ......................................................................................... 81

.AlarmOprName................................................................................... 82

.AlarmOprNode.................................................................................... 83

.AlarmPri .............................................................................................. 84

.AlarmProv ........................................................................................... 85

.AlarmROC .......................................................................................... 86

.AlarmROCCount................................................................................. 87

.AlarmROCDisabled ............................................................................ 87

.AlarmROCEnabled ............................................................................. 88

.AlarmROCInhibitor ............................................................................ 89

.AlarmROCUnAckCount ..................................................................... 90

.AlarmState........................................................................................... 90

.AlarmTime .......................................................................................... 91

.AlarmTotalCount................................................................................. 91

.AlarmType........................................................................................... 92

.AlarmUnAckCount ............................................................................. 92

.AlarmUserDefNum1 ........................................................................... 93

.AlarmUserDefNum2 ........................................................................... 94

.AlarmUserDefStr ................................................................................ 95

.AlarmValDeadband ............................................................................. 96

.AlarmValue.......................................................................................... 96

.AlarmValueCount................................................................................ 97

.AlarmValueUnAckCount .................................................................... 97

.Caption ................................................................................................ 98

.ChartLength......................................................................................... 99

.ChartStart .......................................................................................... 100

.Comment ........................................................................................... 100

.DevTarget .......................................................................................... 101

.DisplayMode ..................................................................................... 101

Opis funkcji, pól i zmiennych systemowych

8 Spis treści

.Enabled...............................................................................................102

.EngUnits.............................................................................................103

.Freeze .................................................................................................103

.HiHiLimit...........................................................................................104

.HiHiSet...............................................................................................104

.HiHiStatus ..........................................................................................105

.HiLimit...............................................................................................105

.HiSet...................................................................................................106

.HiStatus ..............................................................................................106

.ListChanged .......................................................................................107

.ListCount............................................................................................107

.ListIndex ............................................................................................108

.LoLimit ..............................................................................................108

.LoLoLimit ..........................................................................................109

.LoSet ..................................................................................................109

.LoLoSet..............................................................................................110

.LoLoStatus .........................................................................................111

.LoStatus .............................................................................................112

.MajorDevPct ......................................................................................112

.MajorDevSet ......................................................................................113

.MajorDevStatus .................................................................................114

.MaxEU ...............................................................................................115

.MaxRange ..........................................................................................116

.MaxRaw .............................................................................................117

.MinEU................................................................................................118

.MinorDevPct ......................................................................................119

.MinorDevSet ......................................................................................119

.MinorDevStatus .................................................................................120

.MinRange...........................................................................................121

.MinRaw..............................................................................................122

.Name ..................................................................................................122

.NewIndex ...........................................................................................124

.NextPage ............................................................................................124

.Normal ...............................................................................................125

.NumAlarms........................................................................................126

.OffMsg ...............................................................................................126

.OnMsg................................................................................................127

.PageNum............................................................................................127

.Pen1-.Pen8 .........................................................................................128

.PendingUpdates .................................................................................131

.PrevPage.............................................................................................132

.PriFrom ..............................................................................................133

.PriTo...................................................................................................133

Opis funkcji, pól i zmiennych systemowych

Spis treści 9

.ProviderReq....................................................................................... 134

.ProviderRet........................................................................................ 134

.Quality............................................................................................... 135

.QualityLimit ...................................................................................... 138

.QualityLimitString ............................................................................ 139

.QualityStatus ..................................................................................... 139

.QualityStatusString ........................................................................... 139

.QualitySubstatus................................................................................ 140

.QualitySubstatusString...................................................................... 141

.QueryState......................................................................................... 141

.QueryType......................................................................................... 142

.RawValue .......................................................................................... 143

.ReadOnly........................................................................................... 143

.Reference........................................................................................... 144

.ReferenceComplete ........................................................................... 144

.ROCPct.............................................................................................. 145

.ROCSet.............................................................................................. 145

.ROCStatus......................................................................................... 146

.ScooterLockLeft................................................................................ 147

.ScooterLockRight.............................................................................. 147

.ScooterPosLeft .................................................................................. 148

.ScooterPosRight ................................................................................ 149

.Successful.......................................................................................... 150

.SuppressRetain .................................................................................. 150

.TagID................................................................................................. 151

.TimeDate ........................................................................................... 151

.TimeDateString ................................................................................. 151

.TimeDateTime................................................................................... 152

.TimeDay............................................................................................ 152

.TimeHour .......................................................................................... 152

.TimeMinute ....................................................................................... 153

.TimeMonth........................................................................................ 153

.TimeMsec.......................................................................................... 153

.TimeSecond....................................................................................... 154

.TimeTime .......................................................................................... 154

.TimeTimeString ................................................................................ 154

.TimeYear ........................................................................................... 155

.TopIndex............................................................................................ 155

.TotalPages ......................................................................................... 156

.UnAck ............................................................................................... 157

.UpdateCount...................................................................................... 158

.UpdateInProgress .............................................................................. 159

.UpdateTrend...................................................................................... 160

Opis funkcji, pól i zmiennych systemowych

10 Spis treści

.Value...................................................................................................160

.Value...................................................................................................161

.Visible ................................................................................................162

ROZDZIAŁ 3: Funkcje skryptowe .................163Abs()....................................................................................................164Ack() ...................................................................................................164ActivateApp()......................................................................................165AddPermission() .................................................................................165almAckAll() ........................................................................................166almAckDisplay() .................................................................................166almAckGroup() ...................................................................................167almAckPriority() .................................................................................168almAckRecent() ..................................................................................168almAckSelect()....................................................................................169almAckSelectedGroup()......................................................................169almAckSelectedPriority()....................................................................170almAckSelectedTag()..........................................................................170almAckTag() .......................................................................................171almDefQuery() ....................................................................................172almMoveWindow() .............................................................................172almQuery() ..........................................................................................173almSelectAll() .....................................................................................174almSelectGroup() ................................................................................174almSelectionCount() ...........................................................................175almSelectItem() ...................................................................................175almSelectPriority() ..............................................................................175almSelectTag() ....................................................................................176almSetQueryByName().......................................................................176almShowStats() ...................................................................................177almSuppressAll() ................................................................................177almSuppressGroup() ...........................................................................178almSuppressDisplay() .........................................................................178almSuppressPriority() .........................................................................179almSuppressRetain() ...........................................................................179almSuppressSelected() ........................................................................180almSuppressTag()................................................................................180almSuppressSelectedGroup()..............................................................181almSuppressSelectedPriority()............................................................181almSuppressSelectedTag() ..................................................................182almUnSelectAll() ................................................................................182almUnSuppressAll()............................................................................183

Opis funkcji, pól i zmiennych systemowych

Spis treści 11

ArcCos() ............................................................................................. 183ArcSin() .............................................................................................. 184ArcTan() ............................................................................................. 184AttemptInvisibleLogon().................................................................... 185ChangePassword().............................................................................. 185Cos() ................................................................................................... 186DialogStringEntry()............................................................................ 186DialogValueEntry() ............................................................................ 188DText() ............................................................................................... 190EnableDisableKeys().......................................................................... 190Exp()................................................................................................... 191FileCopy() .......................................................................................... 191FileDelete()......................................................................................... 193FileMove().......................................................................................... 194FileReadFields() ................................................................................. 196FileReadMessage()............................................................................. 197FileWriteFields() ................................................................................ 198FileWriteMessage() ............................................................................ 199GetNodeName() ................................................................................. 199GetPropertyD()................................................................................... 200GetPropertyI() .................................................................................... 200GetPropertyM() .................................................................................. 201Hide .................................................................................................... 202HideSelf.............................................................................................. 202HTGetLastError()............................................................................... 203HTGetPenName()............................................................................... 204HTGetTimeAtScooter()...................................................................... 204HTGetTimeStringAtScooter()............................................................ 205HTGetValue() ..................................................................................... 206HTGetValueAtScooter()..................................................................... 207HTGetValueAtZone()......................................................................... 208HTScrollLeft().................................................................................... 210HTScrollRight() ................................................................................. 210HTSelectTag() .....................................................................................211HTSetPenName() ................................................................................211HTUpdateToCurrentTime()................................................................ 212HTZoomIn() ....................................................................................... 212HTZoomOut() .................................................................................... 213InfoAppActive() ................................................................................. 214InfoAppTitle() .................................................................................... 214InfoDisk() ........................................................................................... 215InfoFile() ............................................................................................ 216InfoInTouchAppDir() ......................................................................... 217

Opis funkcji, pól i zmiennych systemowych

12 Spis treści

InfoResources() ...................................................................................217Int()......................................................................................................218InvisibleVerifyCredentials()................................................................218IOGetApplication() .............................................................................218IOGetNode() .......................................................................................219IOGetTopic() .......................................................................................219IOReinitialize() ...................................................................................219IOSetAccessName()............................................................................220IOSetItem() .........................................................................................221IOStartUninitConversations() .............................................................222IsAnyAsynchFunctionBusy()..............................................................222IsAssignedRole().................................................................................223Log()....................................................................................................223LogMessage()......................................................................................224LogN().................................................................................................224Logoff() ...............................................................................................225Pi().......................................................................................................225PlaySound().........................................................................................225PostLogonDialog()..............................................................................226PrintHT() .............................................................................................227PrintScreen() .......................................................................................228PrintWindow().....................................................................................230QueryGroupMembership()..................................................................232RecipeDelete() ....................................................................................232RecipeGetMessage() ...........................................................................233RecipeLoad().......................................................................................234RecipeSave() .......................................................................................235RecipeSelectNextRecipe() ..................................................................236RecipeSelectPreviousRecipe() ............................................................237RecipeSelectRecipe() ..........................................................................238RecipeSelectUnit() ..............................................................................239ReloadWindowViewer()......................................................................240RestartWindowViewer()......................................................................240Round() ...............................................................................................241SendKeys ............................................................................................242SetPropertyD() ....................................................................................243SetPropertyI()......................................................................................244SetPropertyM()....................................................................................244Sgn()....................................................................................................245Show....................................................................................................245ShowAt() .............................................................................................246ShowHome..........................................................................................246ShowTopLeftAt() ................................................................................247

Opis funkcji, pól i zmiennych systemowych

Spis treści 13

Sin().................................................................................................... 247SPCConnect()..................................................................................... 248SPCDatasetDlg() ................................................................................ 248SPCDisconnect() ................................................................................ 249SPCDisplayData() .............................................................................. 249SPCLocateScooter() ........................................................................... 250SPCMoveScooter()............................................................................. 250SPCSaveSample() .............................................................................. 251SPCSelectDataset() ............................................................................ 251SPCSelectProduct() ............................................................................ 251SPCSetControlLimits() ...................................................................... 252SPCSetMeasurement() ....................................................................... 252SPCSetProductCollected() ................................................................. 253SPCSetProductDisplayed() ................................................................ 253SPCSetRangeLimits() ........................................................................ 254SPCSetSpecLimits()........................................................................... 254SQLAppendStatement() ..................................................................... 255SQLClearParam()............................................................................... 255SQLClearStatement() ......................................................................... 255SQLClearTable() ................................................................................ 256SQLCommit()..................................................................................... 257SQLConnect() .................................................................................... 258SQLCreateTable() .............................................................................. 260SQLDelete() ....................................................................................... 261SQLDisconnect()................................................................................ 262SQLDropTable()................................................................................. 262SQLEnd() ........................................................................................... 262SQLErrorMsg() .................................................................................. 263SQLExecute()..................................................................................... 263SQLFirst() .......................................................................................... 264SQLGetRecord() ................................................................................ 264SQLInsert()......................................................................................... 265SQLInsertEnd() .................................................................................. 265SQLInsertExecute()............................................................................ 266SQLInsertPrepare() ............................................................................ 266SQLLast()........................................................................................... 267SQLLoadStatement() ......................................................................... 267SQLManageDSN()............................................................................. 268SQLNext() .......................................................................................... 268SQLNumRows()................................................................................. 268SQLPrepareStatement() ..................................................................... 269SQLPrev() .......................................................................................... 269SQLRollback() ................................................................................... 270

Opis funkcji, pól i zmiennych systemowych

14 Spis treści

SQLSelect().........................................................................................271SQLSetParamChar() ...........................................................................274SQLSetParamDate()............................................................................274SQLSetParamDateTime() ...................................................................275SQLSetParamDecimal()......................................................................275SQLSetParamFloat() ...........................................................................276SQLSetParamInt()...............................................................................276SQLSetParamLong()...........................................................................276SQLSetParamNull() ............................................................................277SQLSetParamTime()...........................................................................278SQLSetStatement() .............................................................................278SQLTransact() .....................................................................................279SQLUpdate() .......................................................................................281SQLUpdateCurrent()...........................................................................282Sqrt() ...................................................................................................282StartApp ..............................................................................................283StringASCII()......................................................................................283StringChar() ........................................................................................284StringFromIntg() .................................................................................284StringFromReal() ................................................................................285StringFromTime() ...............................................................................286StringFromTimeLocal() ......................................................................287StringInString() ...................................................................................288StringLeft()..........................................................................................289StringLen() ..........................................................................................290StringLower()......................................................................................290StringMid()..........................................................................................291StringReplace() ...................................................................................292StringRight() .......................................................................................293StringSpace().......................................................................................294StringTest()..........................................................................................295StringToIntg()......................................................................................296StringToReal().....................................................................................297StringTrim() ........................................................................................298StringUpper() ......................................................................................299Tan() ....................................................................................................299Text() ...................................................................................................300Trunc().................................................................................................300TseGetClientId()..................................................................................301TseQueryRunningOnConsole()...........................................................301TseQueryRunningOnClient() ..............................................................302wcAddItem() .......................................................................................302wcClear().............................................................................................303

Opis funkcji, pól i zmiennych systemowych

Spis treści 15

wcDeleteItem()................................................................................... 303wcDeleteSelection() ........................................................................... 304wcErrorMessage() .............................................................................. 304wcFindItem()...................................................................................... 305wcGetItem() ....................................................................................... 306wcGetItemData() ................................................................................ 307wcInsertItem() .................................................................................... 308wcLoadList() ...................................................................................... 309wcLoadText() ..................................................................................... 310wcSaveList()........................................................................................311wcSaveText()...................................................................................... 312wcSetItemData()................................................................................. 313WWControl() ..................................................................................... 314WWExecute()..................................................................................... 315WWPoke().......................................................................................... 316WWRequest()..................................................................................... 317

ROZDZIAŁ 4: Automatyzacja OLE w programie InTouch.............................................................319

Elementy OLE Automation................................................................ 319Obsługa OLE Automation w programie InTouch .............................. 320

Format wyrażeń .............................................................................. 320Tworzenie obiektu: OLE_CreateObject ......................................... 324Zarządzanie obiektem: OLE_ReleaseObject.................................. 325Sprawdzanie aktywności obiektu: OLE_IsObjectValid ................. 326Odczytywanie wartości właściwości .............................................. 326Ustawianie właściwości.................................................................. 328Wywoływanie metody .................................................................... 329Obsługa błędów w programie InTouch........................................... 332Najczęstsze błędy automatyzacji obiektów. ................................... 335

Załącznik A: Usuwanie problemów przy korzystaniu z funkcji skryptowych................337

Usuwanie problemów przy korzystaniu z funkcji receptur ............... 338Nazwy elementów SPC DDE............................................................. 340

Elementy DDE SPC do sterowania i wyświetlania ........................ 340Elementy DDE SPC dla bieżącej próbki ........................................ 343Elementy DDE SPC do ręcznego wprowadzania........................... 347Elementy DDE SPC do zaznaczania .............................................. 349Usuwanie problemów przy korzystaniu z funkcji SQL.................. 352

Komunikaty błędów dla poszczególnych baz danych........................ 354

Indeks..............................................................357

Opis funkcji, pól i zmiennych systemowych

16 Spis treści

Opis funkcji, pól i zmiennych systemowych

Wprowadzenie 17

Wprowadzenie

Podręcznik ten zawiera alfabetyczny, szczegółowy opis każdego pola zmiennej (.pole), właściwości obiektów sterujących, właściwości obiektu alarmu, zmiennych systemowych i funkcji QuickScript zawartych w programie InTouch. Zawiera również opis dodatkowych modułów oprogramowania: Menadżera Receptur, SPC Pro i SQL Access. Zawartość podręcznika jest następująca:

• Rozdział 1 - "Zmienne systemowe" zawiera szczegółowy opis wszystkich predefiniowanych zmiennych systemowych.

Uwaga: Nazwy wszystkich zmiennych systemowych rozpoczynają się od znaku dolara ($).

• Rozdział 2, “Pola zmiennych” zawiera szczegółowy opis pól (.pola) zmiennych, alarmów, alarmów rozproszonych, obiektów sterujących okien, systemu, trendów historycznych i innych.

• Rozdział 3 – “Funkcje QuickScript w programie InTouch” zawiera szczegółowy opis wbudowanych funkcji QuickScript (tekstowe, matematyczne, systemowe, historyczne, obiektów sterujących okien, alarmy rozproszone i inne funkcje).

• Rozdział 4 – “Automatyzacja OLE w programie InTouch” zawiera zwięzły opis architektury automatyzacji OLE.

Konwencja opisu

Z prawej strony każdej zmiennej systemowej, właściwości, pola zmiennej lub funkcji skryptowej podano kategorię zastosowania (bezpieczeństwo, alarm, aplikacja, itp.), co ma na celu ułatwienie korzystania z podręcznika. Przykładowo: $AccessLevel bezpieczeństwo

Przykład Opis.ChartStart Ogólnie ujmując, czcionką pogrubioną

oznaczone są pola, zmienne systemowe lub funkcje.

Zmienna Przy opisie składni, czcionką pochyloną zaznaczono miejsca gdzie należy wprowadzić własne dane.

{ .HiLimit | .HiHiLimit } Przy opisie składni, kreska pionowa oznacza, że należy wybrać jeden spośród dwóch lub większej liczby elementów.

[ErrorMessage=] Elementy ujęte w nawiasy kwadratowe są opcjonalne.

Opis funkcji, pól i zmiennych systemowych

18 Zanim rozpoczniesz

Informacje o Podręczniku użytkownikaJeżeli ten podręcznik użytkownika jest używany w wersji elektronicznej, jeżeli tekst jest w kolorze zielonym, wystarczy kliknąć na tekście, aby „przeskoczyć” do odpowiedniej sekcji lub rozdziału. Po przejściu do innego punktu lub rozdziału, można skorzystać z polecenia "Wstecz", powodującego przejście do pierwotnego miejsca.

Wskazówka: Znak ten umieszczono obok “Podpowiedzi”, zawierających prostszą lub szybszą metodę realizacji funkcji lub zadania.

W podręczniku użytkownika InTouch omówiono środowisko edycyjne w programie WindowMaker, oraz dostępne w nim narzędzia (przeczytaj rozdział 1 tego podręcznika "Elementy programu WindowMaker"). W celu zapoznania się z oknami, obiektami graficznymi, wizardami, obiektami ActiveX, itp. należy przeczytać Rozdział 2, "Korzystanie z programu WindowMaker". Aby uzyskać więcej informacji o tworzeniu skryptów QuickScripts w programie InTouch, przeczytaj Rozdział 6 – „Tworzenie skryptów QuickScript”

Szczegółowe informacje o środowisku pracy (WindowViewer) podano w podręczniku InTouch Runtime User's Guide.

Więcej informacji na temat dodatkowego programu SPC Pro podano w podręczniku użytkownika SPC Pro.

Szczegóły dotyczące dodatkowego programu Recipe Manager podano w podręczniku użytkownika Recipe Manager.

Szczegóły dotyczące dodatkowego programu SQL Access Manager podano w podręczniku SQL Access Podręcznik użytkownika.

Podręcznik FactorySuite Systems Administrator's Guide zawiera również kompletne informacje o wspólnych elementach zawartych w FactorySuite, wymaganiach systemu, pracy w sieci, integracji produktów, pomocy technicznej, itd.

Podręczniki w wersji elektronicznej dla wszystkich elementów pakietu FactorySuite są również zawarte w pakiecie oprogramowania FactorySuite.

Uwaga: Aby przeglądać lub drukować podręczniki w wersji elektronicznej należy zainstalować Adobe Acrobat Reader (wersja 4.0 lub późniejszą).

Wymagane wiadomościW niniejszej instrukcji przyjęto następujące założenia o użytkowniku:

• Użytkownik jest zapoznany z systemami operacyjnymi Windows 2000 i Windows NT.

• Posiada umiejętność korzystania z myszki, menu Windows, wybierania opcji, oraz korzystania z pomocy.

• Posiada doświadczenie w zakresie programowania lub języka makro. W celu osiągnięcia jak największych korzyści, użytkownik powinien być zapoznany z takimi zagadnieniami programowania jak zmienne, deklaracje, funkcje i metody.

Opis funkcji, pól i zmiennych systemowych

Wprowadzenie 19

Pomoc technicznaDział Pomocy Technicznej Wonderware oferuje różne metody wsparcie w zakresie produktów Wonderware jak również ich implementacji.

Przed skontaktowaniem się z Działem Pomocy Technicznej, proszę szukać rozwiązania problemów, mogących wystąpić w czasie korzystania z systemu InTouch, w Podręczniku użytkownika InTouch. Jeżeli okaże się konieczne skorzystanie z pomocy technicznej, należy mieć przygotowane następujące informacje:

1. Numer seryjny oprogramowania.

2. Numer wykorzystywanej wersji programu InTouch.

3. Typ i wersję wykorzystywanego sytemu operacyjnego. Przykładowo, Microsoft Windows NT Wersja 4.0, SP4, jednostanowiskowa.

4. Dokładną treść wyświetlanego przez system komunikatu o błędzie.

5. Jakiekolwiek, mogące być pomocne wydruki z Wonderware Logger, narzędzi diagnostycznych Microsoft Diagnostic (MSD), czy innych aplikacji diagnostycznych.

6. Szczegółowe informacje na temat podejmowanych prób rozwiązania problemów, oraz ich wyniki.

7. Szczegółowe informacje odnośnie sposobu odtworzenia zaistniałego problemu.

8. Jeżeli jest dostępna taka informacja, numer przyporządkowany do tego problemu przez Dział Pomocy Technicznej Wonderware (dotyczy to problemów aktualnie opracowywanych).

Więcej informacji o pomocy technicznej podano w podręczniku użytkownika FactorySuite System Administrator's.

Licencja FactorySuiteInformacje na temat posiadanej licencji na system FactorySuite, pokazywane są przez narzędzie do wyświetlania informacji o licencji, dostępne po wybraniu okna dialogowego O programie z menu Pomoc programu WindowMaker.

W celu otwarcia programu narzędziowego licencji:

1. W menu Pomoc programu WindowMaker, wybrać Informacje o.

2. Kliknąć Licencja. Wyświetlone zostanie okno dialogowe License Utility - LicView.

Więcej informacji na temat narzędzi do wyświetlania informacji o licencji podano w podręczniku FactorySuite System Administrator's Guide.

Opis funkcji, pól i zmiennych systemowych

20 Zanim rozpoczniesz

Opis funkcji, pól i zmiennych systemowych

Zmienne systemowe 21

R O Z D Z I A Ł 1

Zmienne systemowe

InTouch posiada pewną liczbę predefiniowanych zmiennych systemowych. Zmienne te są wbudowane w program InTouch i identyfikowane za pomocą poprzedzającego je znaku dolara ($). W czasie pracy aplikacji InTouch, wartość tych zmiennych ulega zmianie, w odpowiedzi na stan systemu i zdarzenia zaistniałe w systemie. Zmienne systemowe można wykorzystywać wszędzie, gdzie używane są inne zmienne programu InTouch, np. w połączeniach animacyjnych, lub w skryptach QuickScript.

$AccessLevelZmienna ta określa poziom dostępu aktualnie zalogowanego użytkownika.

Kategoria bezpieczeństwoSposób użycia $AccessLevel

Uwagi Jest to zmienna przeznaczona tylko do odczytu, której wartość jest określana przez Poziom Dostępu (Acces Level) przypisany do aktualnie zalogowanych w InTouch-u profili bezpieczeństwa użytkowników. Uprawnienia te dla konkretnego użytkownika są dostępne z poziomu menu Konfiguracja użytkowników w programie WindowViewer.

Rzeczywista wartość zmiennej $AccessLevel nie ma żadnego znaczenia dla programu WindowViewer. Wszelkie żądane "zabezpieczenia" muszą zostać stworzone przez projektanta aplikacji. Zastosowanie zmiennej $AccessLevel pozwala na zwiększenie poziomu bezpieczeństwa systemu.

Typ danych Integer (tylko odczyt)Zakres wartości Od 0 do 9999Przykład(y) Wyrażenie zamieszczone poniżej umożliwia wyświetlenie obiektu (np.

przycisku) na ekranie (połączenie animacyjne widoczności) w zależności od poziomu dostępu zalogowanego użytkownika:

$AccessLevel >= 2000;{Obiekt mo że mie ć równie ż przypisane poł ączenie animacyjne do deaktywacji, w którym wykorzystywane jest wyra żenie zawieraj ące zmienn ą $AccessLevel.}$AccessLevel < 5411;IF $AccessLevel <=500 THENShow "Access Denied"; {Wy świetlenie komunikatu informuj ącego o braku mo żliwo ści zalogowania}ELSEShow "Access Denied"; {Wy świetlenie komunikatu informuj ącego o mo żliwo ści zalogowania}

ENDIF;

Patrz również $Operator, $OperatorEntered, $PasswordEntered; $ConfigureUsers

Opis funkcji, pól i zmiennych systemowych

22 Rozdział 1

$AlarmPrinterError

$AlarmPrinterNoPaper

Błąd drukarki alarmów.Kategoria alarmySposób użycia $AlarmPrinterError

Uwagi Jeśli drukarka alarmów sygnalizuje błąd, zmienna ta przyjmuje wartość 1.Typ danych Discrete (tylko odczyt)Zakres wartości 0 = Drukarka alarmów nie sygnalizuje błędu

1 = Drukarka alarmów sygnalizuje błądPrzykład(y) Jeżeli instrukcja zamieszczona poniżej zostanie użyta jako wyrażenie w

połączeniu animacyjnym wyświetlania wartości analogowej, w przypadku wystąpienia błędu w drukarce alarmów wyświetlona zostanie wartość 1, w przeciwnym wypadku wyświetlona zostanie wartość 0.

IF $AlarmPrinterError == 1 THENDisplayMessageTag = "Error on alarm printer";ELSEDisplayMessageTag = "No error on alarm printer";ENDIF;

Patrz również $AlarmPrinterNoPaper, $AlarmPrinterOffline, $AlarmPrinterOverflow

Zmienna ta sygnalizuje brak papieru w drukarce alarmów.Kategoria alarmySposób użycia $AlarmPrinterNoPaper

Uwagi Jeśli w drukarce alarmów brakuje papieru, zmienna przyjmuje wartość 1.Typ danych Discrete (tylko odczyt)Zakres wartości 0 = W drukarce alarmów jest papier

1 = W drukarce alarmów brakuje papieruPrzykład(y) Jeżeli instrukcja zamieszczona poniżej zostanie użyta w połączeniu

animacyjnym wyświetlania wartości analogowej, oraz jeżeli w drukarce będzie brakować papieru, wyświetlona zostanie wartość 1, w przeciwnym wypadku, wyświetlona zostanie wartość 0.

$AlarmPrinterNoPaper

Zastosowanie w skrypcie warunkowym zdarzenia Jeżeli prawda:

Condition:$AlarmPrinterOffline == 1

Script:show"window";

playsound("c:\winnt\system32\alarm.wav",1);

Patrz również $AlarmPrinterOffline, $AlarmPrinterError, $AlarmPrinterOverflow

Opis funkcji, pól i zmiennych systemowych

Zmienne systemowe 23

$AlarmPrinterOffline

$AlarmPrinterOverflow

Zmienna ta sygnalizuje brak gotowości do pracy drukarki alarmów.Kategoria alarmySposób użycia $AlarmPrinterOffline

Uwagi Jeśli drukarka alarmów nie jest gotowa do pracy (Offline), zmienna przyjmuje wartość 1.

Typ danych Discrete (tylko odczyt)Zakres wartości 0 = Drukarka alarmów jest gotowa do pracy

1 = Drukarka alarmów nie jest gotowa do pracy (Offline)Przykład(y) Jeżeli wyrażenie zamieszczone poniżej zostanie użyte w połączeniu

animacyjnym wyświetlania wartości analogowej, oraz drukarka alarmów nie jest gotowa do pracy, wyświetlona zostanie wartość 1, natomiast w przypadku przeciwnym, wyświetlona zostanie wartość 0.

$AlarmPrinterOffline

IF $AlarmPrinterOffline == 1 THENCall PLCHorn( );

{Funkcja skryptowa powoduj ąca uruchomienie alarmu dźwi ękowego w zakładzie}

ENDIF;

Patrz również $AlarmPrinterNoPaper, $AlarmPrinterError, $AlarmPrinterOverflow

Zmienna ta sygnalizuje przepełnienie bufora drukarki alarmów.Kategoria alarmySposób użycia $AlarmPrinterOverflow

Uwagi W przypadku przepełnienia bufora drukarki alarmów, zmienna przyjmuje wartość 1.

Typ danych Discrete (tylko odczyt)Zakres wartości 0 = Bufor drukarki alarmów nie jest całkowicie wypełniony

1 = Bufor drukarki alarmów jest przepełnionyPrzykład(y) Jeżeli wyrażenie zamieszczone poniżej zostanie użyte w połączeniu

animacyjnym wyświetlania wartości analogowej, oraz nastąpi przepełnienie bufora drukarki alarmów, wyświetlona zostanie wartość 1, w przeciwnym wypadku, wyświetlona zostanie wartość 0.

$AlarmPrinterOverflow

Patrz również $AlarmPrinterNoPaper, $AlarmPrinterOffline, $AlarmPrinterError

Opis funkcji, pól i zmiennych systemowych

24 Rozdział 1

$ApplicationChanged

$ApplicationVersion

Zmienna ta sygnalizuje zmianę aplikacji nadrzędnej w architekturze NAD (Network Application Development).

Kategoria aplikacjaSposób użycia $ApplicationChanged

Uwagi Zmienna ta przyjmuje wartość 1 w przypadku otrzymania sygnału generowanego po wybraniu polecenia Aktualizacja aplikacji w sieci z menu Specjalne programu WindowViewer. W przypadku uaktualnienia aplikacji, wartość tej zmiennej ustawiana jest na 0. Zmienna ta jest stosowana do obsługi aplikacji sieciowych.

Typ danych Discrete (tylko odczyt)Przykład(y) Jeżeli zamieszczona poniżej instrukcja zostanie wykorzystana w QuickScript

związanym ze zmianą wartości pola zmiennej, spowoduje to wykonanie instrukcji tego QuickScript - u. QuickScript powinien powodować wyświetlenie komunikatu, informującego użytkownika o konieczności ponownego uruchomienia programu WindowViewer w celu uwzględnienia wprowadzonych zmian.

$ApplicationChanged

Patrz również $ApplicationVersion

Zmienna ta zawiera bieżący numer wersji aplikacji. Wartość tej zmiennej ulega zawsze zmianie w przypadku zmodyfikowania, dodania lub usunięcia zmiennej albo skryptu QuickScript.

Kategoria aplikacjaSposób użycia $ApplicationVersion

Uwagi -Typ danych Real (tylko odczyt)Przykład(y) Jeżeli instrukcja zamieszczona poniżej zostanie użyta w połączeniu

animacyjnym wyświetlania wartości analogowej, wyświetlony zostanie bieżący numer wersji aplikacji pracującej w programie WindowViewer.

$ApplicationVersion

Patrz również $ApplicationChanged

Opis funkcji, pól i zmiennych systemowych

Zmienne systemowe 25

$ChangePassword

$ConfigureUsers

Zmienna ta służy do wyświetlenia pola dialogowego do zmiany hasła. Działanie jest równoważne wybraniu polecenia Zabezpieczenia, a następnie Zmiana hasła dostępu, z menu Specjalne programu WindowMaker.

Kategoria bezpieczeństwoSposób użycia $ChangePassword

Uwagi Przypisanie tej zmiennej wartości 1 powoduje wyświetlenie okna dialogowego Zmiana hasła dostępu. Po zamknięciu pola dialogowego, InTouch automatycznie ustawia wartość na 0. Przypisanie tej zmiennej systemowej wartości innej niż 1 nie ma żadnego znaczenia, a wynik takiej operacji jest nieokreślony

Typ danych Discrete (tylko zapis)Zakres wartości 1Przykład(y) Można utworzyć przycisk powiązany ze zmienną dyskretną, którego

wciśnięcie umożliwi operatorowi wyświetlenie okna dialogowego Zmiana hasła dostępu. Przycisk ten powinien mieć pojedyncze połączenie powiązane ze zmienną dyskretną z zaznaczoną opcją Ustaw. Naciśnięcie przycisku powoduje przypisanie wartości 1 do zmiennej $ChangePassword i wyświetlenie okna dialogowego Zmiana hasła dostępu.

Patrz również $AccessLevel, $OperatorEntered, $PasswordEntered, $Operator, $ConfigureUsers

Zmienna ta służy do wyświetlenia pola dialogu służącego do konfigurowania użytkowników. Działanie jest równoważne wybraniu polecenia Zabezpieczenie, a następnie Zmiana hasła dostępu, z menu Specjalne programu WindowMaker.

Kategoria bezpieczeństwoSposób użycia $ConfigureUsers

Uwagi Przypisanie tej zmiennej wartości 1 powoduje wyświetlenie okna dialogowego Konfigurowanie użytkowników. Po zamknięciu pola dialogowego, InTouch automatycznie ustawia wartość na 0. Aby wyświetlić to pole dialogowe, użytkownik musi mieć przypisaną wartość zmiennej $AccessLevel >9000. Przypisanie tej zmiennej systemowej wartości innej niż 1 nie ma żadnego znaczenia, a wynik takiej operacji jest nieokreślony.

Typ danych Discrete (tylko zapis)Zakres wartości 1Przykład(y) Można utworzyć przycisk powiązany ze zmienną dyskretną, którego

wciśnięcie umożliwi operatorowi wyświetlenie okna dialogowego Zmiana hasła dostępu. Przycisk ten powinien mieć pojedyncze połączenie powiązane ze zmienną dyskretną z zaznaczoną opcją Ustaw. Naciśnięcie przycisku powoduje przypisanie wartości 1 do zmiennej $ConfigureUsers i wyświetlenie okna dialogowego Konfigurowanie użytkowników.

Patrz również $Operator, $OperatorEntered, $ChangePassword, $PasswordEntered, $AccessLevel

Opis funkcji, pól i zmiennych systemowych

26 Rozdział 1

$Date

$DateString

$DateTime

Wartością tej zmiennej jest całkowita liczba dni, które upłynęły od 1/1/70.Kategoria systemSposób użycia $Date

Uwagi -Typ danych Integer (tylko odczyt)Przykład(y) StringFromTime(($Date*86400)+($Time/1000),3);

(Zwraca aktualn ą dat ę)

Patrz również $DateTime, $DateString, $Day, $Month, $Year

Wartością tej zmiennej jest data w formacie określonym w pliku WIN.INI.Kategoria systemSposób użycia $DateString

Uwagi Format daty jest ustawiany w panelu sterowania Windows lub przez dwukrotne kliknięcie na ikonie zegara na pasku zadań Windows.

Typ danych Memory message (tylko odczyt)Przykład(y) If StringRight($DateString,2)== "00" THEN

LogMessage("The Year 2000!");

ENDIF;

Patrz również $Date, $DateTime, $Day, $Month, $Year, $Time, $TimeString

Wartością tej zmiennej jest ułamkowa liczba dni, które upłynęły od 1/1/70.Kategoria systemSposób użycia $DateTime

Uwagi -Typ danych Real (tylko odczyt)Przykład(y) dayvalue = 86400 * $DateTime;

If StringFromTime(Dayvalue,4) == "Fri" THENDisplayMessageTag = "It's Friday!";

ENDIF;

Patrz również $Date, $DateString, $Day, $Month, $Year, $Time, $TimeString

Opis funkcji, pól i zmiennych systemowych

Zmienne systemowe 27

$Day

$HistoricalLogging

Wartością tej zmiennej jest bieżący dzień miesiąca.Kategoria systemSposób użycia $Day

Uwagi Zmienna ta przyjmuje wartości od 1 do 31.Typ danych Integer (tylko odczyt)Przykład(y) If $Day == 15 THEN

Show "Mid-Month Washdown Window";

ENDIF;

Patrz również $DateTime, $DateString, $Date, $Month, $Year

Zmienna ta służy do monitorowania i/lub sterowania procesem rejestrowania danych historycznych. Działanie jej jest równoważne wybraniu polecenia Restartuj logowanie historyczne z menu Specjalne programu WindowViewer, lub też wybraniu polecenia Zatrzymaj logowanie historyczne z menu Specjalne programu WindowViewer.

Kategoria dane historyczneSposób użycia $HistoricalLogging

Uwagi Przypisanie tej zmiennej wartości 0 zatrzymuje rejestrowanie danych historycznych. Przypisanie tej zmiennej wartości 1 powoduje ponowne rozpoczęcie rejestrowania danych historycznych. Nie jest możliwe rozpoczęcie rejestracji danych historycznych poprzez $HistoricalLogging, chyba że zaznaczona jest opcja Włącz logowanie historyczne w polu dialogowym Parametry logowania historycznego.

Typ danych Discrete (odczyt/zapis)Przykład(y) IF (InfoDisk("C",4,$Second)/1024)<50 THEN

{Wył ącza rejestracj ę danych historycznych, je żeli wolna przestrze ń na dysku twardym jest mniejsza ni ż 50MB}$HistoricalLogging = 0;

ENDIF;

Opis funkcji, pól i zmiennych systemowych

28 Rozdział 1

$Hour

$InactivityTimeout

Wartością tej zmiennej jest bieżąca godzina dnia.Kategoria systemSposób użycia $Hour

Uwagi Zmienna ta przyjmuje wartości od 0 do 23.Typ danych Integer (tylko odczyt)Przykład(y) Zastosowanie w skrypcie warunkowym zdarzenia On True.

$Hour == 20 AND $Second == 30

PrintWindow("Day Batch Summary",1,1,0,0,0);

Patrz również $DateTime, $Minute, $Msec, $Second, $Time, $TimeString

Zmienna ta sygnalizuje, że upłynął skonfigurowany czas, po którym użytkownik zostaje automatycznie wylogowany z aplikacji wskutek braku aktywności.

Kategoria bezpieczeństwoSposób użycia $InactivityTimeout

Uwagi Zmienna ta przyjmuje wartość 1, gdy upłynął czas po którym użytkownik zostaje automatycznie wylogowany z aplikacji wskutek braku aktywności. W celu skonfigurowania tego czasu, z menu Specjalne wybrać Konfiguracja, a następnie kliknąć WindowViewer, lub rozwinąć grupę Konfiguracja w Eksploratorze aplikacji, a następnie podwójnie kliknąć WindowViewer. Wyświetlone zostanie okno dialogowe Właściwości WindowViewer z aktywną zakładką właściwości Ogólne: W grupie Nieaktywność wprowadzić czas w sekundach.

Uwaga: Licznik czasu braku aktywności nie jest zerowany dla obiektów Active-X, obiektów OLE Automation i wizardów SPC.

Typ danych Discrete (tylko odczyt)Patrz również $InactivityWarningPrzykład(y) Zastosowanie w skrypcie warunkowym zdarzenia Jeżeli prawda.

Warunek:$InactivityTimeout == 1

Skrypt:Show "You have been logged off window";

Patrz również $InactivityWarning

Opis funkcji, pól i zmiennych systemowych

Zmienne systemowe 29

$InactivityWarning

$LogicRunning

Zmienna ta sygnalizuje, że upłynął skonfigurowany czas, po którym użytkownik zostaje ostrzeżony o zbliżającym się automatycznym wylogowaniu z aplikacji wskutek braku aktywności.

Kategoria bezpieczeństwoSposób użycia $InactivityWarning

Uwagi Zmienna ta przyjmuje wartość 1, gdy upłynął czas, po którym użytkownik jest ostrzegany o braku aktywności. Licznik czasu braku aktywności użytkownika może być wyzerowany wyłącznie poprzez kliknięcie myszką lub wciśnięcie klawisza. W celu skonfigurowania tego czasu, z menu Specjalne wybrać Konfiguracja, a następnie kliknąć WindowViewer, lub rozwinąć grupę Konfiguracja w Eksploratorze aplikacji, a następnie podwójnie kliknąć WindowViewer. Wyświetlone zostanie okno dialogowe Właściwości WindowViewer z aktywną zakładką właściwości Ogólne: W grupie Nieaktywność wprowadzić wartość czasu wyrażoną w sekundach.

Uwaga: Licznik czasu braku aktywności nie jest zerowany dla obiektów Active-X, obiektów OLE Automation i wizardów SPC.

Typ danych Discrete (tylko odczyt)Przykład(y) Zastosowanie w skrypcie warunkowym zdarzenia Jeżeli prawda.

If $InactivityWarning == 1 THENShow "Za chwil ę bie żący u żytkownik zostanie wylogowany-okno";

ENDIF;

Patrz również $InactivityTimeOut

Zmienna ta monitoruje i/lub steruje wykonywaniem skryptów. Działanie tej zmiennej jest równoważne wybraniu polecenia Uruchom skrypty, lub polecenia Zatrzymaj skrypty z menu Skrypty programu WindowViewer. Uwaga: Aktualnie wykonywane asynchroniczne funkcje QuickFunction nie mogą być zatrzymywane. Można jednakże uniemożliwić uruchamianie następnych funkcji.

Kategoria systemSposób użycia $LogicRunning

Uwagi Przypisanie zmiennej wartości 1 pozwala na uruchamianie QuickScript-ów logicznych. Przypisanie zmiennej wartości 0 uniemożliwia uruchamianie QuickScript-ów logicznych.

Typ danych Discrete (odczyt/zapis)

Opis funkcji, pól i zmiennych systemowych

30 Rozdział 1

$Minute

$Month

$Msec

Wartością tej zmiennej jest bieżąca minuta godziny.Kategoria systemSposób użycia $Minute

Uwagi Zmienna ta przyjmuje wartości od 0 do 59.Typ danych Integer (tylko odczyt)Przykład(y) W wyrażeniu tekstowym połączenia animacyjnego:

IF InfoFile("C:\InTouch.32\WIZ.INI",1,$Minute)==1 THENLogMessage("Plik istnieje!");

ENDIF;

Patrz również $DateTime, $Hour, $Msec, $Second, $Time, $TimeString

Wartością tej zmiennej jest bieżący miesiąc roku.Kategoria systemSposób użycia $Month

Uwagi Zmienna ta przyjmuje wartości od 1 do 12.Typ danych Integer (tylko odczyt)Przykład(y) IF $Month==10 THEN

CurrentMonthName = "Pa ździernik";

ENDIF;

Patrz również $Date, $Day, $Year

Wartością tej zmiennej jest bieżąca milisekunda. Częstotliwość uaktualniania tej zmiennej przez system zależna jest od wartości parametrów Rozdzielczość zegara i Uaktualniaj zmienne czasu co. W menu Specjalne wybrać Konfiguracja, następnie wybrać WindowViewer lub w eksploratorze aplikacji w gałęzi Konfiguracja kliknąć na WindowViewer. Wyświetlone zostanie okno dialogowe Właściwości WindowViewer z aktywną zakładką właściwości Ogólne:

Kategoria systemSposób użycia $Msec

Uwagi Zmienna ta przyjmuje wartości od 0 do 999.Typ danych Integer (tylko odczyt)Patrz również $DateTime, $Minute, $Second, $Hour, $Time, $TimeString

Opis funkcji, pól i zmiennych systemowych

Zmienne systemowe 31

$NewAlarm

$ObjHor

$ObjVer

Zmienna ta sygnalizuje wystąpienie nowego alarmu.Kategoria alarmySposób użycia $NewAlarm

Uwagi Zmienna przyjmuje wartość 1, gdy pojawi się nowy alarm. Wartość tej zmiennej ustawiana jest wyłącznie w przypadku wystąpienia alarmu lokalnego. Dotyczy to alarmów lokalnych (nie dotyczy alarmów zewnętrznych).

Typ danych Discrete (odczyt/zapis)Przykład(y) Tą zmienną można powiązać z funkcją logiczną PlaySound, powodującą

zasygnalizowanie alarmu dźwiękowego. Można utworzyć również przycisk do zatwierdzania alarmu, umożliwiający operatorowi potwierdzenie alarmu i równoczesne wyzerowanie tej zmiennej.

Wartością tej zmiennej jest pozycja środka wybranego obiektu w kierunku poziomym, wyrażona w punktach ekranowych (pikselach).

Kategoria systemSposób użycia $ObjHor

Uwagi -Typ danych Integer (tylko odczyt)Patrz również $ObjVer

Wartością tej zmiennej jest pozycja środka wybranego obiektu w kierunku pionowym, wyrażona w punktach ekranowych (pikselach).

Kategoria systemSposób użycia $ObjVer

Uwagi -Typ danych Integer (tylko odczyt)Patrz również $ObjHor

Opis funkcji, pól i zmiennych systemowych

32 Rozdział 1

$Operator

$OperatorDomain

Określa zakres działań, które mogą być realizowane przez zalogowanego użytkownika.

Kategoria bezpieczeństwoSposób użycia $Operator

Uwagi Wartość tej zmiennej reprezentuje nazwę aktualnie zalogowanego operatora.Typ danych Message (tylko odczyt)Przykład(y) Dostęp do określonego okna może być kontrolowany przy pomocy

następującego skryptu:.

IF $Operator == "DayShift" THENShow "Control Panel Window";

ELSEShow "Wrong Operator";

ENDIF;

Patrz również $OperatorEntered, $AccessLevel, $PasswordEntered, $ChangePassword, $ConfigureUsers

Kategoria BezpieczeństwoSposób użycia Jeżeli system bezpieczeństwa oparty jest na systemie operacyjnym a operator

zalogował się pomyślnie, zmienna $OperatorDomain będzie zawierała nazwę domeny lub komputera, który został określony przy logowaniu. Jeżeli wybrany został system bezpieczeństwa ArchestrA, zmienna $OperatorDomain będzie zawierała "ArchestrA". Jeżeli wybrany został system bezpieczeństwa InTouch, zmienna $OperatorDomain będzie zawierała "InTouch". Jeżeli żaden system bezpieczeństwa nie został wybrany, zmienna ta będzie zawierała pusty tekst "".

Uwagi N/ATyp danych StringPrzykład(y) $Operator = "john";

$OperatorDomain="CORPORATE_HQ";

Patrz również $Operator

Opis funkcji, pól i zmiennych systemowych

Zmienne systemowe 33

$OperatorDomainEntered

$OperatorEntered

$OperatorName

Kategoria BezpieczeństwoSposób użycia Gdy zmianie ulega zmienna $PasswordEntered, następuje próba zalogowania

bez użycia interfejsu użytkownika. Logowanie odbywa się przy użyciu zmiennych $*Entered, które służą do wprowadzania parametrów logowania oraz zmiennej $OperatorDomainEntered w której wprowadza się nazwę domeny (używana tylko gdy jest wybrany system bezpieczeństwa systemu operacyjnego). Jeżeli system bezpieczeństwa nie jest oparty na systemie operacyjnym, zmienna ta nie jest używana.

Uwagi N/ATyp danych StringPrzykład(y) $OperatorEntered="john";

$OperatorDomainEntered="Corporate_hq";$PasswordEntered="password";

Patrz również $Operator

Zmienna ta służy do wprowadzania nazwy użytkownika. Kategoria bezpieczeństwoSposób użycia $OperatorEntered

Uwagi Umożliwia utworzenie okna użytkownika do logowania. Powiązanie z tą zmienną obiektów do wprowadzania danych reagujących na naciskanie i/lub QuickScript - ów umożliwia wprowadzenie nazwy użytkownika.

Uwaga: Jeżeli zmiennej $OperatorEntered przypisana zostanie jedna z poprawnych wartości, zmienne systemowe $AccessLevel i $Operator zostaną ustawione na predefiniowane wartości.

Typ danych Message (odczyt/zapis)Patrz również $AccessLevel, $Operator, $PasswordEntered, $ChangePassword,

$ConfigureUsers

Kategoria BezpieczeństwoSposób użycia Zmienna $OperatorName będzie zawierała pełną nazwę użytkownika jeżeli

został wybrany system bezpieczeństwa ArchestrA lub system operacyjny a użytkownik jest zalogowany. W innym wypadku, zmienna ta będzie zawierała nazwę zalogowanego użytkownika (to samo co zmienna $Operator).

Uwagi N/ATyp danych StringPrzykład(y) $Operator = "john";

$OperatorName = "John Smith";

Patrz również $Operator

Opis funkcji, pól i zmiennych systemowych

34 Rozdział 1

$PasswordEntered

$Second

$StartDdeConversations

Zmienna ta służy do wprowadzania właściwego hasła.Kategoria bezpieczeństwoSposób użycia $PasswordEntered

Uwagi Ta zmienna systemowa jest zawsze odczytywana jako pusty łańcuch znaków. Połączenia animacyjne wyświetlające wartość zmiennej $PasswordEntered zawsze wyświetlać będą pusty tekst. Z tego powodu skrypty uaktywniane zmianą wartości danych (skrypty zmiany wartości zmiennej) i uzależnione od zmiennej $PasswordEntered nie będą nigdy wykonywane. Może zostać wykorzystana do tworzenia okna użytkownika do logowania. Powiązanie z tą zmienną obiektów do wprowadzania danych reagujących na naciskanie i/lub skryptów umożliwia wprowadzenie przez użytkownika hasła.

Uwaga: Jeżeli zmiennej $PasswordEntered przypisana zostanie jedna z poprawnych wartości, zmienne systemowe $AccessLevel i $Operator zostaną ustawione na predefiniowane wartości.

Typ danych Message (tylko zapis)Patrz również $AccessLevel, $Operator, $OperatorEntered, $ChangePassword,

$ConfigureUsers

Wartością tej zmiennej jest bieżąca sekunda.Kategoria systemSposób użycia $Second

Uwagi Zmienna ta przyjmuje wartości od 0 do 59.Typ danych Integer (tylko odczyt)Przykład(y) Wave=100*Sin(6*$Second);

Patrz również $DateTime, $Minute, $Msec, $Hour, $Time

Zmienna ta rozpoczyna nie zainicjowaną konwersację DDE w czasie pracy aplikacji, w sytuacji, gdy menu Specjalne zostało wyłączone. Działanie jest równoważne wybraniu polecenia Wznów niezainicjalizowane konwersacje z menu Specjalne programu WindowMaker.

Kategoria systemSposób użycia $StartDdeConversations

Uwagi Przypisanie zmiennej wartości 1 powoduje uruchomienie nie zainicjowanej dotychczas konwersacji DDE.

Typ danych Discrete (odczyt/zapis)

Opis funkcji, pól i zmiennych systemowych

Zmienne systemowe 35

$System

$Time

$TimeString

Standardowa, nadrzędna grupa alarmowa. Kategoria alarmySposób użycia $System

Uwagi Jeżeli zmienna nie jest przyporządkowana do konkretnej grupy alarmowej, InTouch automatycznie przyporządkuje ją do grupy $System. Wszystkie zdefiniowane grupy alarmowe są podgrupami grupy $System.

Typ danych System Alarm Group (tylko odczyt)Przykład(y) $System.Ack = 1;{Zatwierdzenie wszystkich alarmów}

Wartością tej zmiennej jest czas w milisekundach, który upłynął od północy.Kategoria systemSposób użycia $Time

Uwagi -Typ danych Integer (tylko odczyt)Przykład(y) Sec_Midnight = $Time/1000;{Liczba sekund, które upłyn ęły

licz ąc od północy}

Patrz również $DateTime, $Minute, $Msec, $Second, $Hour, $TimeString

Wartością tej zmiennej jest czas w formacie określonym w pliku WIN.INI.Kategoria systemSposób użycia $TimeString

Uwagi Format czasu jest ustawiany w Panelu Sterowania (Control Panel) Windows lub przez dwukrotne kliknięcie na ikonie zegara (Clock) na Pasku Zadań Windows.

Typ danych String (tylko odczyt)Przykład(y) BatchStartString = $TimeString;

Patrz również $DateTime, $Minute, $Msec, $Second, $Hour, $Time

Opis funkcji, pól i zmiennych systemowych

36 Rozdział 1

$VerifiedUserName

$Year

Zawiera sprawdzoną nazwę użytkownika jeżeli powiodło się wywołanie funkcji InvisibleVerifyCredentials() oraz gdy system bezpieczeństwa jest ustawiony na system operacyjny lub ArchestrA. Jeżeli wywołanie nie powiedzie się, powyższa zmienna będzie ustawiona na pusty tekst.

Kategoria bezpieczeństwoSposób użycia $VerifiedUserName

Uwagi Jeżeli powyższa zmienna ulega zmianie (wywołana jest funkcja InvisibleVerifyCredentials), generowane jest zdarzenie a kolumna "Wartość" będzie zawierała sprawdzoną nazwę użytkownika. Kolumna "Wartość" będzie zawierała pusty tekst jeżeli wywołanie funkcji nie powiodło się. Kolumna Nazwa będzie zawierała wartość "$VerifiedUserFullName".

Typ danych StringZakres wartości Pełna nazwa u żytkownika

Przykład(y) Tag = InvisibleVerifyCrdentials( "john","password", "Plant_Floor"). Je żeli wywołanie jest prawidłowe, zmienna $VerifiedUserName zostanie ustawiona na "John Smith" oraz zostanie wygenerowane zdarzenie. Kolumna nazwa b ędzie zawierała $VerifiedUserName oraz warto ść kolumny zostanie ustawiona na "John Smith". Je żeli wywołanie nie zako ńczy si ę powodzeniem, $VerifiedUserName i kolumna zostan ą ustawione na "". Za ka żdym razem gdy wywołujemy powy ższ ą funkcj ę skryptow ą, zmienna $VerifiedUserName jest ustawiana na odpowiedni ą nazw ę u żytkownika lub null.

Patrz również InvisibleVerifyCredentials(); $OperatorName, $Operator

Wartością tej zmiennej jest bieżący rok w czterocyfrowym formacie.Kategoria systemSposób użycia $Year

Uwagi Podaje rok w następującym formacie:2002

Typ danych Integer (tylko odczyt)Przykład(y) CurrentYear = $Year;

NoYrsTill2010 = 2002 - CurrentYear;

Patrz również $Day, $Month

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 37

R O Z D Z I A Ł 2

Pola zmiennych

InTouch wykorzystuje pola do monitorowania i modyfikacji właściwości takich obiektów jak zmienne, trendy historyczne oraz obiekty sterujące Windows. Pola mogą być użyte do monitorowania i modyfikacji tych właściwości. W zależności od rodzaju obiektu, istnieją dwie metody korzystania z tych właściwości: bezpośrednio za pomocą instrukcji o składni Zmienna.pole, lub pośrednio, za pomocą funkcji skryptowej.

Wszystkie obiekty, z wyjątkiem obiektów sterujących Windows oraz obiektów związanych z alarmowaniem rozproszonym wykorzystują składnię Zmienna.pole. Aby uzyskać dostęp do właściwości tych obiektów w czasie pracy aplikacji wystarczy wpisać nazwę obiektu, kropkę i nazwę pola, które ma być wykorzystane w skrypcie QuickScript lub w połączeniu animacyjnym. Przykładowo, aby umożliwić zmiany w czasie pracy aplikacji wartości granicznej alarmu HiHi zmiennej analogowej Zmienna_Analogowa, należy powiązać połączenie Zmienna analogowa - Wprowadzanie wartości z przyciskiem, i zdefiniować dla tego przycisku wyrażenie Zmienna_Analogowa.HiHiLimit. Wówczas, w czasie pracy, operator może kliknąć przycisk, wprowadzić nową wartość dla pola HiHi, wykorzystywanego przez zmienną Zmienna_Analogowa.

Obiekty sterujące Windows oraz obiekty związane z alarmowaniem rozproszonym wykorzystują funkcje GetPropertyX oraz SetPropertyX (gdzie X jest typem danych reprezentowanym przez określoną właściwość (D = Discrete, I = Integer, M = Message). Można również wykorzystać te funkcje w skryptach lub połączeniach animacyjnych, aby uzyskać dostęp do tych właściwości.

Więcej informacji na temat funkcji GetProperty oraz SetProperty znajduje się w rozdziale Rozdział 3, "Funkcje skryptowe."

Typy zmiennychPrzy definiowaniu nowej zmiennej na liście zmiennych programu InTouch, należy przypisać jej typ, zgodnie ze sposobem użycia. Przykładowo, jeżeli wartość zmiennej jest ustawiana lub odczytywana przez inne aplikacje Windows, jak na przykład program komunikacyjny, należy zadeklarować ją jako zmienną typu I/O. Poniżej opisano wszystkie typy zmiennych oraz sposób ich wykorzystywania.

Opis funkcji, pól i zmiennych systemowych

38 Rozdział 2

Zmienne typu pamięciowego (Memory)Tego typu zmienne wykorzystywane są wewnątrz aplikacji InTouch. Mogą one być stosowane jako zmienne stałe, oraz do symulacji. Można je także wykorzystywać do udostępniania wyników obliczeń innym aplikacjom pracującym w środowisku Windows. Przykładowo, można zadeklarować zmienną typu pamięciowego o wartości początkowej 3.1416, lub można przy użyciu grupy zmiennych typu pamięciowego zapisać receptury. W czasie symulowania, zmienne te mogą być wykorzystywane do sterowania działaniami wykonywanymi w tle skryptu. Przykładowo, można zdefiniować zmienną typu pamięciowego "Licznik", której wartość jest zmieniana w czasie wykonywania skryptu, dzięki czemu uzyskiwane będą różne efekty animacyjne, zależne od bieżącego etapu procesu. Istnieją cztery rodzaje zmiennych typu pamięciowego:

Memory DiscreteWewnętrzna zmienna dyskretna o wartości 0 (Fałsz, Wył), lub 1 (Prawda, Wł).

Memory Integer32-bitowa zmienna całkowita ze znakiem o wartościach z zakresu od - 2,147,483,648 do 2,147,483,648.

Memory RealZmienna typu rzeczywistego. Zmienna typu rzeczywistego może przyjmować wartości między +3.4e38. Wszystkie obliczenia na zmiennych tego typu wykonywane są z dokładnością do 64-bitów, a zapamiętywane z dokładnością do 32 bitów.

Memory MessageZmienna typu tekstowego o długości do 131 znaków.

Zmienne typu I/OWszystkie zmienne, które czytają lub zapisują wartości w innym programie pracującym w systemie Windows są zmiennymi typu I/O. Obejmuje to wymianę danych z programowalnymi sterownikami PLC, komputerami sterującymi procesami, oraz stacjami sieciowymi. Ze zmiennych typu I/O można korzystać zarówno za pomocą mechanizmu dynamicznej wymiany danych Microsoftu (DDE - Dynamic Data Exchange), jak również za pomocą protokołu komunikacyjnego SuiteLink.

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 39

Każda zmiana wartości zmiennej typu I/O przeznaczonej do zapisu/ odczytu, powoduje natychmiastową aktualizację tej zmiennej w aplikacjach, w których jest ona wykorzystywana. Podobnie, powodem aktualizacji może być zmiana wartości zmiennej w jednej z aplikacji. Domyślnie, wszystkie zmienne typu I/O ustawiane są tak, aby można było zarówno odczytywać jak i zmieniać ich wartość. Można jednak zdefiniować je jako przeznaczone wyłącznie do odczytu, poprzez zaznaczenie odpowiedniej opcji w oknie dialogowym Lista zmiennych. Istnieją cztery rodzaje zmiennych typu I/O:

I/O DiscreteZmienna I/O o wartości 0 (Fałsz, Wył), lub 1 (Prawda, Wł).

I/O Integer32-bitowa zmienna całkowita ze znakiem o wartościach z zakresu od - 2,147,483,648 do 2,147,483,648.

I/O RealZmienna typu rzeczywistego. Zmienna typu rzeczywistego może przyjmować wartości między +3.4e38. Wszystkie obliczenia na zmiennych tego typu wykonywane są z dokładnością do 64-bitów, a zapamiętywane z dokładnością do 32 bitów.

I/O MessageZmienna typu tekstowego o długości do 131 znaków.

Indirect Discrete, Indirect Analog, Indirect Message

Zmienne tego typu pozwalają tworzyć okna, w których źródła wartości zmiennych mogą być wielokrotnie zmieniane. Przykładowo, można utworzyć skrypt wykonywany przy zmianie wartości zmiennej, który zmienia źródło wszystkich zmiennych występujących w oknie, w zależności od wartości zmiennej.

Pozostałe typy zmiennychDostępnych jest szereg specjalnych typów zmiennych, które mogą być wykorzystane do realizacji złożonych funkcji, jak na przykład dynamiczne wyświetlanie alarmów, tworzenie trendów historycznych, monitorowanie, oraz sterowanie przypisaniem pisaków do zmiennych na wykresie trendów historycznych. Dostępne są również zmienne pośrednie, które umożliwiają odłączenie zmiennej od jednego źródła i przypisanie jej do innego. Poniżej opisano te cztery specjalne typy zmiennych.

Opis funkcji, pól i zmiennych systemowych

40 Rozdział 2

Hist Trend (Trend historyczny)Typ Hist Trend jest wymagany do tworzenia trendów historycznych. Wszystkie pola zmiennych dostępne w trendach historycznych mogą być również stosowane w przypadku zmiennych typu Hist Trend.

Tag ID (Identyfikator zmiennej)Ten specjalny typ zmiennych jest wykorzystywany w połączeniu z obiektami trendów historycznych. Za pomocą zmiennej typu Tag ID można uzyskać informacje o zmiennych rysowanych na trendzie historycznym. W większości przypadków, zmienne typu Tag ID będą wykorzystywane do wyświetlania nazwy zmiennej rysowanej przez dany pisak, lub też do zmiany zmiennej przyporządkowanej do pisaka.

Więcej informacji na temat trendów historycznych podano w Podręczniku użytkownika InTouch.

Zmienne typu SuperTagInTouch pozwala na definiowanie szablonów SuperTag, wykorzystywanych do tworzenia złożonych typów zmiennych. Szablony SuperTags mogą zawierać do 64 zmiennych składowych, i mogą mieć 2 poziomy zagnieżdżenia. Zmienne składowe mają dokładnie takie same właściwości jak normalne zmienne. Umożliwiają one tworzenie trendów, obsługę alarmów, oraz posiadają takie same pola jak zmienne.

Więcej informacji na temat alarmów podano w Podręczniku użytkownika InTouch.

Zestawienie typów pól zmiennychTabela poniżej ilustruje zestawienie typów zmiennych i pól zmiennych. Podany poniżej przypis odnosi się do tabeli zamieszczonej na następnej stronie.

Jeżeli te zmienne typu Memory mają być przesyłane ze stacji klienckiej jako zmienne typu I/O, stacja serwera dołącza do nich informacje o czasie wysłania wartości do stacji klienckiej. Zmienne typu memory zawsze mają dobrą jakość i nie posiadają stempla czasowego. Oznacza to, że czas zmiany wartości przez skrypty lub połączenia nie jest pamiętany.

* Obsługiwane w wersji 7.0 lub wyższej.

** Obsługiwane w wersji 7.1 lub wyższej.

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 41

*** Obsługiwane w wersji 7.11 lub wyższej.

Typy zmiennych: Memory I/O Indirect Inne

Dis

cret

e

Inte

ger

Rea

l

Dis

cret

e

Inte

ger

Rea

l

Dis

cret

e

Ana

log

Ala

rm G

roup

His

t Tre

nd

Ala

rmow

anie

rozp

rosz

one

Obi

ekt/

kont

rolk

a

TagI

D

Nazwy pól.Ack X X X X X X X X X.AckDev*** X X X X X X.AckDsc X X X X.AckROC*** X X X X X X.AckValue*** X X X X X X.Alarm X X X X X X X X X.AlarmAccess ** X.AlarmAckModel*** X X X X X X X X X.AlarmClass ** X.AlarmComment ** Pierwszy sposób użycia.

X X X X X X X X X X

.AlarmComment ** Drugi sposób użycia.

X

.AlarmDate** X

.AlarmDev X X X X X X

.AlarmDevCount X X X X X X

.AlarmDevDeadband X X X X X

.AlarmDevUnAckCount X X X X X X

.AlarmDisabled*** X X X X X X X X X

.AlarmDsc X X X X

.AlarmDscCount X X X X

.AlarmDscDisabled X X X X

.AlarmDscEnabled X X X X

.AlarmDscInhibitor X X X X

.AlarmDscUnAckCount X X X X

.AlarmEnabled X X X X X X X X X

.AlarmGroup** X

.AlarmGroupSel ** X

.AlarmHiDisabled*** X X X X X X

Opis funkcji, pól i zmiennych systemowych

42 Rozdział 2

.AlarmHiEnabled*** X X X X X X

.AlarmHiHiDisabled*** X X X X X X

.AlarmHiHiEnabled*** X X X X X X

.AlarmHiHiInhibitor*** X X X X X X

.AlarmHiInhibitor*** X X X X X X

.AlarmLimit ** X

.AlarmLoDisabled*** X X X X X X

.AlarmLoEnabled*** X X X X X X

.AlarmLoInhibitor*** X X X X X X

.AlarmLoLoDisabled*** X X X X X X

.AlarmLoLoEnabled*** X X X X X X

.AlarmLoLoInhibitor*** X X X X X X

.AlarmMajDevDisabled*** X X X X X X

.AlarmMajDevEnabled*** X X X X X X

.AlarmMajDevInhibitor*** X X X X X X

.AlarmMinDevDisabled*** X X X X X X

.AlarmMinDevEnabled*** X X X X X X

.AlarmMinDevInhibitor*** X X X X X X

.AlarmName ** X

.AlarmOprName ** X

.AlarmOprNode ** X

.AlarmPri ** X

.AlarmProv ** X

.AlarmROC X X X X X X

.AlarmROCCount X X X X X X

.AlarmROCDisabled*** X X X X X X

.AlarmROCEnabled*** X X X X X X

.AlarmROCInhibitor*** X X X X X X

.AlarmROCUnAckCount X X X X X X

.AlarmState ** X

Typy zmiennych: Memory I/O Indirect Inne

Dis

cret

e

Inte

ger

Rea

l

Dis

cret

e

Inte

ger

Rea

l

Dis

cret

e

Ana

log

Ala

rm G

roup

His

t Tre

nd

Ala

rmow

anie

rozp

rosz

one

Obi

ekt/

kont

rolk

a

TagI

D

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 43

.AlarmTime ** X

.AlarmTotalCount X X X X X X X X X

.AlarmType ** X

.AlarmUnAckCount X X X X X X X X X

.AlarmUserDefNum1*** X X X X X X X X X

.AlarmUserDefNum2*** X X X X X X X X X

.AlarmUserDefStr*** X X X X X X X X X

.AlarmValDeadband X X X X X

.AlarmValue ** X

.AlarmValueCount X X X X X X

.AlarmValueUnAckCount X X X X X X

.Caption X

.ChartLength X

.ChartStart X

.Comment X X X X X X X X X

.DevTarget X X X X X

.DisplayMode X

.Enabled X X X X X X X X

.EngUnits * X X X X X

.Freeze X

.HiHiLimit X X X X X

.HiHiSet ** X X X X X

.HiHiStatus X X X X X

.HiLimit X X X X X

.HiSet ** X X X X X

.HiStatus X X X X X

.ListChanged X

.ListCount X

.ListIndex X

.LoLimit X X X X X

Typy zmiennych: Memory I/O Indirect Inne

Dis

cret

e

Inte

ger

Rea

l

Dis

cret

e

Inte

ger

Rea

l

Dis

cret

e

Ana

log

Ala

rm G

roup

His

t Tre

nd

Ala

rmow

anie

rozp

rosz

one

Obi

ekt/

kont

rolk

a

TagI

D

Opis funkcji, pól i zmiennych systemowych

44 Rozdział 2

.LoLoLimit ** X X X X X

.LoLoSet X X X X X

.LoLoStatus X X X X X

.LoSet ** X X X X X

.LoStatus X X X X X

.MajorDevPct X X X X X

.MajorDevSet ** X X X X X

.MajorDevStatus X X X X X

.MaxEU X X X X X

.MaxRange X

.MaxRaw * X X X

.MinEU X X X X X

.MinorDevPct X X X X X

.MinorDevSet ** X X X X X

.MinorDevStatus X X X X X

.MinRange X

.MinRaw * X X X

.Name X X X X X X X X X X X X

.NewIndex X X

.NextPage X

.Normal X X X X X X X X X

.NumAlarms X

.OffMsg * X X X

.OnMsg * X X X

.PageNum X

.Pen1 through .Pen8 X

.PendingUpdates X

.PrevPage X

.PriFrom X

.PriTo X

Typy zmiennych: Memory I/O Indirect Inne

Dis

cret

e

Inte

ger

Rea

l

Dis

cret

e

Inte

ger

Rea

l

Dis

cret

e

Ana

log

Ala

rm G

roup

His

t Tre

nd

Ala

rmow

anie

rozp

rosz

one

Obi

ekt/

kont

rolk

a

TagI

D

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 45

.ProviderReq X

.ProviderRet X

.Quality X X X X X X X X

.QualityLimit * X X X X X X X X

.QualityLimitstring * X X X X X X X X

.QualityStatus * X X X X X X X X

.QualityStatusString * X X X X X X X X

.QualitySubstatus * X X X X X X X X

.QualitySubstatusString * X X X X X X X X

.QueryState X

.QueryType X

.RawValue * X X X

.ReadOnly X

.Reference X X X X X

.ReferenceComplete X X X X X

.ROCPct X X X X X

.ROCSet ** X X X X X

.ROCStatus X X X X X

.ScooterLockLeft X

.ScooterLockRight X

.ScooterPosLeft X

.ScooterPosRight X

.Successful X

.SuppressRetain X

.TagID X

.TimeDate * X X X X X X X X

.TimeDateString X X X X X X X X

.TimeDateTime X X X X X X X X

.TimeDay * X X X X X X X X

.TimeHour * X X X X X X X X

Typy zmiennych: Memory I/O Indirect Inne

Dis

cret

e

Inte

ger

Rea

l

Dis

cret

e

Inte

ger

Rea

l

Dis

cret

e

Ana

log

Ala

rm G

roup

His

t Tre

nd

Ala

rmow

anie

rozp

rosz

one

Obi

ekt/

kont

rolk

a

TagI

D

Opis funkcji, pól i zmiennych systemowych

46 Rozdział 2

.Ack

.TimeMinute * X X X X X X X X

.TimeMonth * X X X X X X X X

.TimeMsec * X X X X X X X X

.TimeSecond * X X X X X X X X

.TimeTime * X X X X X X X X

.TimeTimeString X X X X X X X X

.TimeYear * X X X X X X X X

.TopIndex X

.TotalPages X

.UnAck X X X X X X X X X

.UpdateCount X

.UpdateinProgress X

.UpdateTrend X

.Value(Zmienna) X X X X X X X X X X

.Value(Obiekt sterujący Windows)

X

.Visible X

Pole to umożliwia sprawdzanie i/lub zmianę statusu potwierdzenia wszystkich typów alarmów lokalnych.

Kategoria alarmySposób użycia Zmienna. Ack=1

Parametr Opis

Zmienna Dowolna zmienna typu Discrete, Integer lub Real, zmienna typu Indirect Analog lub grupa alarmowa.

Typy zmiennych: Memory I/O Indirect Inne

Dis

cret

e

Inte

ger

Rea

l

Dis

cret

e

Inte

ger

Rea

l

Dis

cret

e

Ana

log

Ala

rm G

roup

His

t Tre

nd

Ala

rmow

anie

rozp

rosz

one

Obi

ekt/

kont

rolk

a

TagI

D

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 47

Uwagi Przypisanie temu polu zmiennej wartości 1 powoduje potwierdzenie wszystkich aktywnych alarmów, które są związane z daną zmienną lub grupą. Jeśli podana zmienna jest grupą alarmową, wszystkie nie potwierdzone alarmy związane ze zmiennymi wchodzącymi w skład określonej grupy zostają potwierdzone. W przypadku gdy zmienna jest innego typu niż grupa alarmowa, potwierdzany jest wyłącznie alarm powiązany z daną zmienną. Ustawienie tego pola na wartość inną niż 1 nie ma żadnego znaczenia, a wynik takiej operacji jest nieokreślony.

Typ danych Discrete (odczyt/zapis)Zakres wartości 1Przykład(y) Podane poniżej wyrażenie powoduje potwierdzenie alarmu związanego ze

zmienną o nazwie Tag1.

Tag1.Ack=1;

Wyrażenie podane w następnym przykładzie spowoduje potwierdzenie wszystkich alarmów należących do grupy alarmów o nazwie PumpStation.

PumpStation.Ack=1;

Uwaga Polem o wartości przeciwnej do .Ack jest pole .UnAck. Jeżeli alarm nie jest zatwierdzony, pole .Unack ustawiane jest na wartość 0. Pole .Unack może zostać wtedy wykorzystane w połączeniach animacyjnych lub skryptach warunkowych do sygnalizowania nie zatwierdzenia alarmu.

Patrz również .Alarm, .UnAck, .AckDev, AckROC, .AckDSC, .AckValue, .AlarmAckModel

Opis funkcji, pól i zmiennych systemowych

48 Rozdział 2

.AckDevPole to umożliwia sprawdzanie i/lub zmianę statusu zatwierdzenia lokalnego (-ych) alarmów odchyleniowych.

Kategoria alarmySposób użycia Zmienna. AckDev=1

Parametr Opis

Zmienna Dowolna zmienna typu Integer lub Real, zmienna Indirect Analog lub grupa alarmowa.

Uwagi Przypisanie omawianemu polu zmiennej wartości 1 powoduje potwierdzenie wszystkich aktywnych alarmów odchyleniowych, które są związane z daną zmienną lub grupą. Jeśli podana zmienna jest grupą alarmową, wszystkie nie potwierdzone alarmy odchyleniowe związane ze zmiennymi wchodzącymi w skład określonej grupy zostają potwierdzone. Ustawienie tego pola na wartość inną niż 1 nie ma żadnego znaczenia, a wynik takiej operacji jest nieokreślony.

Typ danych Discrete (odczyt/zapis)Zakres wartości 1Przykład(y) Podane poniżej wyrażenie powoduje potwierdzenie alarmu odchyleniowego

związanego ze zmienną o nazwie Tag1.

Tag1.AckDev=1;

Wyrażenie podane w następnym przykładzie spowoduje potwierdzenie wszystkich niepotwierdzonych alarmów odchyleniowych należących do grupy alarmów o nazwie PumpStation.

PumpStation.AckDev=1;

Patrz również .Alarm, .AlarmDev, .Ack, .UnAck, .AckDSC, .AckROC, .AckValue, .AlarmAckModel

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 49

.AckDsc Pole to umożliwia sprawdzanie i/lub zmianę statusu zatwierdzenia lokalnego (-ych) alarmów zmiennych dyskretnych.

Kategoria alarmySposób użycia Zmienna. AckDsc=1

Parametr Opis

Zmienna Dowolna zmienna typu Indirect Discrete lub grupa alarmowa.

Uwagi Przypisanie omawianemu polu zmiennej wartości 1 powoduje potwierdzenie wszystkich aktywnych alarmów typu Discrete, które są związane z daną zmienną lub grupą. Jeśli podana zmienna jest grupą alarmową, wszystkie nie potwierdzone alarmy dyskretne związane ze zmiennymi wchodzącymi w skład określonej grupy zostają potwierdzone. W przypadku gdy zmienna jest innego typu niż grupa alarmowa, zatwierdzany jest wyłącznie alarm typu Discrete powiązany z daną zmienną. Ustawienie tego pola na wartość inną niż 1 nie ma żadnego znaczenia, a wynik takiej operacji jest nieokreślony.

Typ danych Discrete (odczyt/zapis)Zakres wartości 1Przykład(y) Podane poniżej wyrażenie powoduje potwierdzenie alarmu typu Discrete

związanego ze zmienną o nazwie Tag1.

Tag1.AckDsc=1;

Wyrażenie podane w następnym przykładzie spowoduje potwierdzenie wszystkich niepotwierdzonych alarmów typu Discrete należących do grupy alarmów o nazwie PumpStation.

PumpStation.AckDsc=1;

Patrz również .Alarm, .AlarmDSC, .Ack, .UnAck, .AckDev, .AckDSC, .AckROC, .AckValue, .AlarmAckModel

Opis funkcji, pól i zmiennych systemowych

50 Rozdział 2

.AckROCPole to umożliwia sprawdzanie i/lub zmianę statusu potwierdzenia alarmów lokalnych typu szybkość zmiany.

Kategoria alarmySposób użycia Zmienna. AckROC=1

Parametr Opis

Zmienna Dowolna zmienna typu Integer lub Real, zmienna Indirect Analog lub grupa alarmowa.

Uwagi Przypisanie omawianemu polu zmiennej 1 powoduje potwierdzenie wszystkich aktywnych alarmów Szybkości Zmiany, które są związane z daną zmienną lub grupą. Jeśli podana zmienna jest Grupą alarmową, wszystkie nie potwierdzone alarmy szybkości zmian związane ze zmiennymi wchodzącymi w skład określonej grupy zostają potwierdzone. W przypadku gdy zmienna jest innego typu niż grupa alarmowa, potwierdzane są wyłącznie alarmy szybkości zmiany powiązane z daną zmienną. Ustawienie tego pola na wartość inną niż 1 nie ma żadnego znaczenia, a wynik takiej operacji jest nieokreślony.

Typ danych Discrete (odczyt/zapis)Zakres wartości 1Przykład(y) Podane poniżej wyrażenie powoduje potwierdzenie alarmu Szybkości

Zmiany związanego ze zmienną o nazwie Tag1.

Tag1.AckROC=1;

Wyrażenie podane w następnym przykładzie spowoduje potwierdzenie wszystkich niepotwierdzonych alarmów Szybkości Zmiany należących do grupy alarmów o nazwie PumpStation.

PumpStation.AckROC=1;

Patrz również .Alarm, .AlarmROC, .Ack, .UnAck, .AckDev, .AckDSC, .AckValue, .AlarmAckModel

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 51

.AckValuePole to umożliwia sprawdzanie i/lub zmianę statusu zatwierdzenia lokalnego (-ych) alarmów wartości.

Kategoria alarmySposób użycia Zmienna. AckValue=1

Parametr Opis

Zmienna Dowolna zmienna typu Integer lub Real, zmienna Indirect Analog lub grupa alarmowa.

Uwagi Przypisanie omawianemu polu zmiennej wartości 1 powoduje zatwierdzenie wszystkich aktywnych alarmów typu przekroczenia wartości , które są związane z daną zmienną lub grupą. Jeśli podana zmienna jest Grupą alarmową, wszystkie nie potwierdzone alarmy typu Przekroczenia Wartości związane ze zmiennymi wchodzącymi w skład określonej grupy zostają potwierdzone. W przypadku gdy zmienna jest innego typu, potwierdzane są wyłącznie alarmy typu przekroczenia wartości powiązane z daną zmienną. Ustawienie tego pola na wartość inną niż 1 nie ma żadnego znaczenia, a wynik takiej operacji jest nieokreślony.

Typ danych Discrete (odczyt/zapis)Zakres wartości 1Przykład(y) Podane poniżej wyrażenie powoduje zatwierdzenie alarmu typu Zmiany

Wartości związanego ze zmienną o nazwie Tag1.

Tag1.AckValue=1;

Wyrażenie podane w następnym przykładzie spowoduje potwierdzenie wszystkich niepotwierdzonych alarmów typu Przekroczenia Wartości należących do grupy alarmów o nazwie PumpStation.

PumpStation.AckValue=1;

Do potwierdzania alarmów typu Przekroczenia Wartości można skorzystać z zmiennej pośredniej (używając do tego celu zmiennej typu GroupVar). Przykładowo, można wprowadzić następujące wyrażenie:

StationAlarms.Name = "PumpStation";

Zdefiniowana została zmienna StationAlarms typu grupa alarmowa, a następnie przypisano do niej zmienną PumpStation. Tak więc podane poniżej wyrażenie jest bardzo podobne do zamieszczonych w przykładach powyżej, za wyjątkiem faktu, że jest ono wykorzystywane do potwierdzania wszystkich nie potwierdzonych alarmów typu Przekroczenia Wartości w grupie alarmów PumpStation, która powiązana jest aktualnie ze zmienną typu grupa alarmowa o nazwie StationAlarms.

StationAlarms.AckValue=1

Patrz również .Alarm, .AlarmValue .Ack, .UnAck, .AckDev, .AckDSC, .AckROC, .AlarmAckModel

Opis funkcji, pól i zmiennych systemowych

52 Rozdział 2

.AlarmPole to przyjmuje wartość 1, gdy zmienna lub grupa alarmowa, z którą jest ono skojarzone znajduje się w stanie alarmowym.

Kategoria alarmySposób użycia Zmienna. Alarm

Parametr Opis

Zmienna Dowolna zmienna typu Discrete, Integer lub Real, zmienna typu Indirect Analog lub grupa alarmowa.

Uwagi Wartość tego pola przeznaczonego wyłącznie do odczytu jest zwykle równa 0,a w przypadku wystąpienia alarmu dla zmiennej zostaje zmieniona przez system na 1. Pole to ma wartość równą 1 do czasu, gdy zniknie przyczyna alarmu. Jeśli dana zmienna jest nazwą grupy alarmowej, polu .Alarm zostaje przypisana wartość 1 zawsze, gdy którakolwiek ze zmiennych należących do tej grupy znajdzie się w stanie alarmowym. Dostępne jest również pole .Normal, o wartości przeciwnej do wartości pola .Alarm.

Typ danych Discrete (tylko odczyt)Zakres wartości 0 lub 1Przykład(y) Zamieszczone poniżej wyrażenie sprawdza, czy zmienna Tag1 jest w stanie

alarmowym.

IF (Tag1.Alarm == 1) THEN

Wyrażenia zawarte w poniższej instrukcji IF-THEN będą wykonywane, jeżeli w grupie alarmów PumpStation występują aktywne alarmy.

IF (PumpStation.Alarm == 1) THENMyAlarmMessage="The pumping station currently has an ALARM!";

ENDIF;

To pole nie jest związane z polami .Ack i .UnAck Z tego powodu, nawet jeżeli aktywny alarm zostanie potwierdzony, wartość tego pola pozostaje równa 1.

Patrz również .Ack, .Normal, Ack()

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 53

.AlarmAccessPole to zwraca nazwę dostępu zmiennej związanej z wybranym alarmem. Alarm musi być wybrany przez kliknięcie na bieżącym wyświetlanym Obiekcie Alarmu Rozproszonego.

Kategoria alarmySposób użycia GetPropertyM("NazwaObiektu.AlarmAccess" , Zmienna);

Parametr Opis

NazwaObiektu Nazwa Obiektu Alarmu RozproszonegoZmienna Dowolna zmienna typu Memory Message.

Typ danych Memory Message (tylko do odczytu)Przykład(y) Wyrażenie zawarte poniżej zwraca nazwę dostępu zmiennej dla wybranego

alarmu.

GetPropertyM("AlmObj_1.AlarmAccess",almAccess);

Gdzie AlmObj_1 jest nazwą obiektu alarmu rozproszonego, almAccess jest zmienną typu Memory Message zawierającą nazwę dostępu zmiennej powiązanej z wybranym alarmem.

Przy wykorzystaniu w przycisku akcji, po naciśnięciu przycisku przez operatora, instrukcja ta wprowadzi wartość do pola almAccess, co można wykorzystać do wyświetlania komunikatów lub w późniejszych operacjach. Pole almAccess będzie zawierało nazwę dostępu zmiennej powiązanej z wybranym alarmem.

Patrz również GetPropertyM(), .AlarmClass, .AlarmComment, .AlarmDate, .AlarmLimit, .AlarmName, .AlarmOprName, .AlarmOprNode, .AlarmPri, .AlarmProv, .AlarmState, .AlarmTime, .AlarmType,

Opis funkcji, pól i zmiennych systemowych

54 Rozdział 2

.AlarmAckModelMonitorowanie modelu potwierdzenia związanego ze zmienną:

0 = warunkowy (model domyślny)1 = zorientowany zdarzeniowo2 = rozszerzony

Kategoria alarmySposób użycia Zmienna. AlarmAckModel

Parametr Opis

Zmienna Dowolna zmienna typu Discrete, Integer lub Real, zmienna typu Indirect Analog lub grupa alarmowa.

Uwagi Wartością domyślną tego pola jest 0 (warunkowy model zatwierdzenia) Typ danych Analog (tylko do odczytu)Zakres wartości 0, 1, lub 2.Przykład(y) Wyrażenia zawarte w poniższej instrukcji If-THEN będą wykonane jeśli

PumpStation ma zdefiniowany zdarzeniowy model potwierdzeń.

IF (PumpStation.AlarmAckModel == 1) THENMyAlarmMessage="PumpStation is an Event alarm";

ENDIF;

Patrz również .Alarm, .Ack, .UnAck, .AckDev, .AckDSC, .AckROC

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 55

.AlarmClassPole to zawiera klasę zmiennej związanej z wybranym alarmem. Alarm musi być wybrany przez kliknięcie na bieżącym wyświetlanym Obiekcie Alarmu Rozproszonego.

Kategoria alarmySposób użycia [ErrorNumber=]GetPropertyM ( "NazwaObiektu. AlarmClass ",

Zmienna);

Parametr Opis

NazwaObiektu Nazwa obiektu alarmów rozproszonych Przykładowo, AlmObj_1.

Zmienna Dowolna zmienna typu Memory Message.Typ danych Memory Message (tylko do odczytu)Przykład(y) Wyrażenie zawarte poniżej zwraca klasę alarmu powiązanej z wybranym

alarmem.

GetPropertyM("AlmObj_1.AlarmClass",almClass);

Gdzie AlmObj_1 jest nazwą obiektu alarmu rozproszonego, almClass jest zmienną typu Memory Message zawierającą klasę zmiennej powiązanej z wybranym alarmem.

Przy wykorzystaniu w przycisku akcji, po naciśnięciu przycisku przez operatora, instrukcja ta wprowadzi wartość do pola almClass, co można wykorzystać do wyświetlania komunikatów lub w późniejszych operacjach. Pole almClass będzie zawierało klasę alarmu powiązaną z wybranym alarmem.

Patrz również GetPropertyM(), .AlarmAccess, .AlarmComment, .AlarmDate, .AlarmLimit, .AlarmName, .AlarmOprName, .AlarmOprNode, .AlarmPri, .AlarmProv, .AlarmState, .AlarmTime, .AlarmType, .AlarmValue

Opis funkcji, pól i zmiennych systemowych

56 Rozdział 2

.AlarmCommentŁańcuch tekstowy który może być odczytywany/zapisywany, opisujący czego dotyczy alarm, nie opisuje, czego dotyczy zmienna. Domyślnie jest on pusty w nowej aplikacji.

Jednakże, kiedy stara wersja aplikacji jest konwertowana do wersji 7.11, komentarz zmiennej jest kopiowany do pola .AlarmComment w celu zachowania kompatybilności z poprzednimi wersjami.

Kategoria alarmyPierwszy sposób użycia.

Zmienna. AlarmComment

Parametr Opis

Zmienna Dowolna zmienna InTouch lub grupa alarmowa.Typ danych Message (odczyt/zapis)Drugi sposób użycia.

[ErrorNumber=]GetPropertyM(" NazwaObiektu. AlarmComment ", Zmienna);

Parametr OpisZmienna Zmienna Memory Message.NazwaObiektu Nazwa obiektu alarmów rozproszonych

Przykładowo, AlmObj_1.Typ danych Message (tylko odczyt)Przykład(y) Pierwszy sposób użycia: Wyrażenie zawarte poniżej zwróci komentarz

alarmu dla zmiennej Tag1 i umieści go w mTag1, mTag1 jest zmienną typu Memory Message.

mTag1=Tag1.AlarmComment;

Drugi sposób użycia: Wyrażenie zawarte poniżej zwróci komentarz alarmu dla zmiennej wybranej w obiekcie alarmu rozproszonego AlmObj_1 i umieści go w zmiennej typu Memory Message - almComment.

GetPropertyM(AlmObj_1.AlarmComment”, almComment);

Patrz również GetPropertyM(), .AlarmAccess, .AlarmClass, .AlarmDate, .AlarmLimit, .AlarmName, .AlarmOprName, .AlarmOprNode, .AlarmPri, .AlarmProv, .AlarmState, .AlarmTime, .AlarmType, .AlarmValue

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 57

.AlarmDatePole to zwraca datę zmiennej związanej z wybranym alarmem. Alarm musi być wybrany przez kliknięcie na bieżącym wyświetlanym Obiekcie Alarmu Rozproszonego.

Kategoria alarmySposób użycia [ErrorNumber=]GetPropertyM( "NazwaObiektu. AlarmDate ",

Zmienna);

Parametr OpisNazwaObiektu Nazwa obiektu alarmów rozproszonych

Przykładowo, AlmObj_1.Zmienna Dowolna zmienna typu Memory Message.

Typ danych Memory Message (tylko do odczytu)Przykład(y) GetPropertyM("AlmObj_1.AlarmDate",almDate);

Gdzie AlmObj_1 jest nazwą obiektu alarmu rozproszonego, almDate jest zmienną typu Memory Message zawierającą datę zmiennej powiązanej z wybranym alarmem.

Przy wykorzystaniu w przycisku akcji, po naciśnięciu przycisku przez operatora, instrukcja ta wprowadzi wartość do pola almDate, co można wykorzystać do wyświetlania komunikatów lub w późniejszych operacjach. Pole almDate będzie zawierało datę alarmu powiązaną z wybranym alarmem.

Patrz również GetPropertyM(), .AlarmAccess, .AlarmClass, .AlarmComment, .AlarmLimit, .AlarmName, .AlarmOprName, .AlarmOprNode, .AlarmPri, .AlarmProv, .AlarmState, .AlarmTime, .AlarmType, .AlarmValue, .AlarmValue

Opis funkcji, pól i zmiennych systemowych

58 Rozdział 2

.AlarmDevPole to przyjmuje wartość 1 w momencie wystąpienia stanu alarmu odchyleniowego dla danej zmiennej lub grupy alarmowej.

Kategoria alarmySposób użycia Zmienna. AlarmDev

Parametr Opis

Zmienna Dowolna zmienna typu Integer lub Real, zmienna Indirect Analog lub grupa alarmowa.

Uwagi Wartość tego pola przeznaczonego wyłącznie do odczytu jest zwykle równa 0, a w przypadku wystąpienia alarmu odchyleniowego dla danej zmiennej zostaje zmieniona przez system na 1. Pole to ma wartość równą 1 do czasu, gdy zniknie przyczyna alarmu odchyleniowego. Jeśli dana zmienna jest nazwą grupy alarmowej, polu .AlarmDev zostaje przypisana wartość 1 zawsze, gdy którakolwiek ze zmiennych należących do tej grupy znajdzie się w alarmu odchyleniowego.

Typ danych Discrete (tylko odczyt)Zakres wartości 0 lub 1Przykład(y) Zamieszczone poniżej wyrażenie sprawdza, czy zmienna Tag1 jest w stanie

alarmu odchyleniowego.

IF (Tag1.AlarmDev == 1) THEN

Wyrażenia zawarte w poniższej instrukcji IF-THEN będą wykonywane, jeżeli w grupie alarmów PumpStation występują aktywne alarmy odchyleniowe.

IF (PumpStation.AlarmDev == 1) THENMyAlarmMessage="The pumping station currently has an ALARM!";

ENDIF;

To pole nie jest związane z polami .Ack lub .UnAck Z tego powodu, nawet jeżeli aktywny alarm zostanie potwierdzony, wartość tego pola pozostaje równa 1.

Patrz również .Ack, .UnAck, .Alarm, .AckDev

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 59

.AlarmDevCount

.AlarmDevDeadband

Śledzi całkowitą liczbę aktywnych alarmów odchyleniowych w danej zmiennej lub grupie alarmowej.

Kategoria alarmySposób użycia Zmienna. AlarmDevCount

Parametr Opis

Zmienna Dowolna zmienna typu Integer, Real lub grupa alarmowa.

Uwagi Zawiera ilość „małych” (Minor Deviation) i „dużych” (Major Deviation) alarmów odchyleniowych. Zawiera ilość zarówno alarmów zatwierdzonych, jak i nie zatwierdzonych. Dla zmiennych alarmów innych niż zmienne Rozszerzonych Alarmów Bieżących ta ilość będzie zawsze równa 1.

Typ danych Analog (tylko do odczytu)Zakres wartości 0 lub dowolna, dodatnia liczba całkowita (Integer).Przykład(y) ADC=Tag1.AlarmDevCount

Gdzie Tag1 jest zmienną typu Analog, skonfigurowaną dla alarmów odchyleniowych. ADC jest również zmienną typu Analog, zawierającą całkowitą ilość aktywnych alarmów odchyleniowych (zarówno nie potwierdzonych jak i potwierdzonych) istniejących w Tag1.

Patrz również .AlarmDSCCount, .AlarmValueCount, .AlarmROCUnAckCount, .AlarmTotalCount, .AlarmDSCUnAckCount, .AlarmValueUnAckCount, .AlarmDevUnAckCount, .AlarmROCUnAckCount, .AlarmUnAckCount

Pole to służy do zmiany i monitorowania procentowej strefy nieczułości (Dead band) dla "małego" (Minor Deviation) i "dużego" (Major Deviation) alarmu odchyleniowego.

Kategoria alarmySposób użycia Zmienna.AlarmDevDeadband

Parametr Opis

Zmienna Dowolna zmienna typu Integer lub Real, lub zmienna typu Indirect Analog.

Uwagi Zaznaczenie opcji Zachowaj param. na liście zmiennych powoduje automatyczne zapisywanie zmian wartości tego pola za pomocą połączeń animacyjnych lub skryptów programu WindowViewer.

Typ danych Integer (odczyt/zapis)Zakres wartości Od 0 do 100 (Integer)Przykład(y) Zamieszczone poniżej wyrażenie powoduje zmianę procentowego pola

nieczułości na 25%.

Tagname.AlarmDevDeadband=25;

Patrz również .AlarmValDeadband, .AlarmDev

Opis funkcji, pól i zmiennych systemowych

60 Rozdział 2

.AlarmDevUnAckCount

.AlarmDisabled

Pole to zawiera całkowitą liczbę nie potwierdzonych alarmów odchyleniowych aktywnych w danej zmiennej lub grupie alarmowej. Zawiera ilość „małych” (Minor Deviation) i „dużych” (Major Deviation) alarmów odchyleniowych.

Kategoria alarmySposób użycia Zmienna. AlarmDevUnAckCount

Parametr Opis

Zmienna Dowolna zmienna typu Integer, Real lub Grupa Alarmowa.

Typ danych Analog (tylko do odczytu)Zakres wartości 0 lub dowolna, dodatnia liczba całkowita (Integer).Przykład(y) ADUC = Tag1.AlarmDevUnAckCount;

Gdzie Tag1 jest zmienną typu Analog, skonfigurowaną dla alarmów odchyleniowych. ADUC jest również zmienną typu Analog, pobierającą całkowitą ilość nie zatwierdzonych, aktywnych alarmów odchyleniowych istniejących w Tag1.

Patrz również .AlarmDevCount, .AlarmDSCCount, .AlarmValueCount, .AlarmROCUnAckCount, .AlarmTotalCount, .AlarmDSCUnAckCount, .AlarmValueUnAckCount, .AlarmROCUnAckCount, .AlarmUnAckCount

Pole to umożliwia wyłączenie i/lub włączenie alarmów dla zmiennej lub grupy alarmowej.

Kategoria alarmySposób użycia Zmienna. AlarmDisabled

Parametr Opis

Zmienna Dowolna zmienna typu Discrete, Integer, Real, zmienna Indirect Discrete, Indirect Analog, lub Grupa Alarmowa.

Uwagi Gdy wartość pola .AlarmDisabled jest ustawiona na 1, wszystkie zdarzenia i alarmy są ignorowane. Nie są one zapisywane w buforze, ani też na dysku. Aby uniknąć utraty danych, należy zawsze, gdy to jest możliwe, włączać sygnalizację zdarzeń i alarmów.Jeśli podana zmienna jest Grupą alarmową, wszystkie alarmy związane ze zmiennymi wchodzącymi w skład określonej grupy są wyłączone.Jest to pole identyczne z .AlarmEnabled, ale z przeciwną polaryzacją.

Typ danych Discrete (odczyt/zapis)Zakres wartości 0 = Alarmy włączone (ustawienie domyślne)

1 = Alarmy wyłączonePrzykład(y) Zamieszczone poniżej wyrażenie włącza alarmy zmiennej Tag1.

Tag1.AlarmDisabled=0;

Patrz również .AlarmEnabled

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 61

.AlarmDscPole to przyjmuje wartość 1 w momencie wystąpienia alarmu dyskretnego dla danej zmiennej lub grupy alarmowej.

Kategoria alarmySposób użycia Zmienna. AlarmDsc

Parametr Opis

Zmienna Dowolna zmienna typu Discrete, Indirect, lub Grupa Alarmowa.

Uwagi Wartość tego pola przeznaczonego wyłącznie do odczytu jest zwykle równa 0,a w przypadku wystąpienia alarmu typu Discrete dla danej zmiennej zostaje zmieniona przez system na 1. Pole to ma wartość równą 1 do czasu, gdy zniknie przyczyna alarmu typu Discrete. Jeśli dana zmienna jest nazwą grupy alarmowej, polu .AlarmDSC zostaje przypisana wartość 1 zawsze, gdy którakolwiek ze zmiennych należących do tej grupy znajdzie się w stanie alarmu typu Discrete.

Typ danych Discrete (odczyt/zapis)Zakres wartości 0 lub 1Przykład(y) Zamieszczone poniżej wyrażenie sprawdza, czy zmienna Tag1 jest w stanie

alarmu typu Discrete.

IF (Tag1.AlarmDsc == 1) THENMyAlarmMessage="The pumping station currently has an ALARM!";ENDIF;

To pole nie jest związane z polami .Ack i .UnAck Z tego powodu, nawet jeżeli aktywny alarm zostanie potwierdzony, wartość tego pola pozostaje równa 1.

Patrz również .Ack, .UnAck, .Alarm, .AlarmDsc, .AckDsc

Opis funkcji, pól i zmiennych systemowych

62 Rozdział 2

.AlarmDscCount

.AlarmDscDisabled

Pole to zawiera całkowitą liczbę aktywnych alarmów dyskretnych w danej zmiennej lub grupie alarmowej.

Kategoria alarmySposób użycia Zmienna.AlarmDscCount

Parametr Opis

Zmienna Dowolna zmienna Discrete lub Grupa Alarmowa.Uwagi Zawiera ilość zarówno alarmów zatwierdzonych, jak i nie zatwierdzonych.

Dla zmiennych alarmów innych niż zmienne Rozszerzonych Alarmów Bieżących ta ilość będzie zawsze równa 1.

Typ danych Analog (tylko do odczytu)Zakres wartości 0 lub dowolna, dodatnia liczba całkowita (Integer).Przykład(y) ADC = Tag1.AlarmDSCCount

Gdzie Tag1 jest zmienną typu Analog, skonfigurowaną dla alarmów typu Discrete. ADC jest również zmienną typu Analog, pobierającą całkowitą ilość aktywnych alarmów typu Discrete (zarówno niepotwierdzonych jak i potwierdzonych) istniejących w Tag1.

Patrz również .AlarmDevCount, .AlarmDevUnAckCount, .AlarmValueCount, .AlarmROCUnAckCount, .AlarmTotalCount, .AlarmDscUnAckCount, .AlarmValueUnAckCount, .AlarmROCUnAckCount, .AlarmUnAckCount

Wskazuje, czy możliwe jest generowanie przez zmienną alarmów.Kategoria alarmySposób użycia Zmienna. AlarmDscDisabled

Parametr Opis

Zmienna Dowolna zmienna typu Discrete lub Grupa Alarmowa.

Uwagi Gdy wartość pola .AlarmDscDisabled jest ustawiona na 1, wszystkie alarmy warunkowe i zdarzenia typu Discrete są ignorowane. Nie są one zapisywane w buforze, ani też na dysku. Aby uniknąć utraty danych, należy zawsze, gdy to jest możliwe, włączać sygnalizację zdarzeń i alarmów.

Jest to pole identyczne z .AlarmDscEnabled, ale z przeciwną polaryzacją.Typ danych Discrete (odczyt/zapis)Zakres wartości 0 = Alarmy włączone (ustawienie domyślne)

1 = Alarmy wyłączonePrzykład(y) Zamieszczone poniżej wyrażenie włącza alarmy typu Discrete zmiennej

Tag1:

Tag1.AlarmDscDisabled=0;

Patrz również .AlarmDscEnabled

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 63

.AlarmDscEnabledWskazuje, czy możliwe jest czy nie wygenerowanie przez zmienną alarmów dyskretnych.

Kategoria alarmySposób użycia Zmienna. AlarmDscEnabled

Parametr Opis

Zmienna Dowolna zmienna typu Discrete lub Grupa Alarmowa.

Uwagi Gdy wartość pola .AlarmDscEnabled jest ustawiona na 0, wszystkie zdarzenia i alarmy są ignorowane. Nie są one zapisywane w buforze, ani też na dysku. Aby uniknąć utraty danych, należy zawsze, gdy to jest możliwe, włączać sygnalizację zdarzeń i alarmów.

Jest to pole identyczne z .AlarmDscDisabled, ale z przeciwną polaryzacją.Typ danych Discrete (odczyt/zapis)Zakres wartości 0 = Alarmy wyłączone

1 = Alarmy włączone (ustawienie domyślne)Przykład(y) Zamieszczone poniżej wyrażenie wyłącza alarmy typu Discrete zmiennej

Tag1:

Tag1.AlarmDscEnabled=0;

Patrz również .AlarmDscDisabled

Opis funkcji, pól i zmiennych systemowych

64 Rozdział 2

.AlarmDscInhibitorZwraca nazwę zmiennej wstrzymującej przypisanej do alarmu dyskretnego, (jeżeli istnieje) dla tej zmiennej.

Kategoria alarmySposób użycia Zmienna. AlarmDscInhibitor

Parametr Opis

Zmienna Dowolna zmienna typu Discrete lub Grupa Alarmowa.

Uwagi Pole to jest konfigurowane w programie WindowMaker i nie może być modyfikowane w czasie pracy.

Typ danych Message (tylko odczyt)Przykład(y) Pole .AlarmDSCInhibitor jest używane przez ustawienie pola .Name

zmiennej pośredniej (typu Indirect) na wartość równą wartości pola .AlarmDscInhibitor zmiennej alarmowej AlarmedTag, zmieniając tym samym wartość zmiennej pośredniej. Zamieszczone poniżej wyrażenie zwraca nazwę zmiennej wstrzymującej dla alarmu typu Discrete (przy założeniu, że SomeIndirectTag jest zmienną typu Analog Indirect).

SomeIndirectTag.Name = AlarmedTag.AlarmDscInhibitor;

Stan wstrzymania alarmów zmiennej alarmowej może być kontrolowany przez ustawienie wartości zmiennej pośredniej w następujący sposób:

SomeIndirectTag = 1;

Włącza wstrzymywanieAlarmy dyskretne są wyłączone dla zmiennej alarmowanej

SomeIndirectTag = 0;

Wyłącza wstrzymywanieAlarmy dyskretne mogą być generowane dla zmiennej alarmowanej

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 65

.AlarmDscUnAckCount

.AlarmEnabled

Śledzi całkowitą liczbę nie zatwierdzonych alarmów dyskretnych w danej zmiennej lub grupie alarmowej.

Kategoria alarmySposób użycia Zmienna. AlarmDscUnAckCount

Parametr Opis

Zmienna Dowolna zmienna typu Discrete lub Grupa Alarmowa.

Typ danych Analog (tylko do odczytu)Zakres wartości Wszystkie liczby całkowite (Integer) i 0.Przykład(y) ADUC = Tag1.AlarmDscUnACKCount;

Gdzie Tag1 jest zmienną typu Analog, skonfigurowaną dla alarmów typu Discrete. ADUC jest również zmienną typu Analog, pobierającą całkowitą ilość nie zatwierdzonych alarmów dyskretnych istniejących w Tag1.

Patrz również .AlarmDevCount, .AlarmDevUnAckCount, .AlarmDscCount, .AlarmValueCount, .AlarmROCCount, .AlarmTotalCount, .AlarmValueUnAckCount, .AlarmROCUnAckCount, .AlarmUnAckCount

Załącza i/lub wyłącza alarmy dla zmiennej lub grupy alarmowej. Kategoria alarmySposób użycia Zmienna. AlarmEnabled

Parametr Opis

Zmienna Dowolna zmienna typu Discrete, Integer, Real, zmienna Indirect Discrete, Indirect Analog, lub Grupa Alarmowa.

Uwagi Gdy wartość pola .AlarmEnabled jest ustawiona na 0, wszystkie zdarzenia i alarmy są ignorowane. Nie są one zapisywane w buforze, ani też na dysku. Aby uniknąć utraty danych, należy zawsze, gdy to jest możliwe, włączać sygnalizację zdarzeń i alarmów.

Jeśli podana zmienna jest Grupą alarmową, wszystkie alarmy związane ze zmiennymi wchodzącymi w skład określonej grupy są włączone.Jest to pole identyczne z .AlarmDisabled, ale z przeciwną polaryzacją.

Typ danych Discrete (odczyt/zapis)Zakres wartości 0 = Alarmy wyłączone

1 = Alarmy włączone (ustawienie domyślne)Przykład(y) Zamieszczone poniżej wyrażenie wyłącza alarmy zmiennej Tag1.

Tag1.AlarmEnabled=0;

Patrz również .AlarmDisabled

Opis funkcji, pól i zmiennych systemowych

66 Rozdział 2

.AlarmGroupPole to zawiera aktualne zapytanie użyte do wyświetlenia obiektu wyświetlania alarmów rozproszonych.

Kategoria alarmySposób użycia [ErrorNumber=]GetPropertyM(" NazwaObiektu. GrupaAlarmowa" ,

Zmienna);

Parametr Opis

NazwaObiektu Nazwa obiektu alarmów rozproszonych Przykładowo, AlmObj_1.

Zmienna Zmienna typu tekstowego (Message), w której zapisywana jest wartość pola podczas wykonywania funkcji.

Uwagi Pole to przeznaczone jest tylko do odczytu i zawiera bieżące zapytanie alarmowe wykorzystywane przez obiekt wyświetlania alarmu rozproszonego o podanej nazwie. Zapytanie może być listą grup alarmowych lub listą aplikacji, w których generowane są alarmy, i które uruchomione są na innych komputerach.

Typ danych Message (tylko odczyt)Przykład(y) Zamieszczone poniżej wyrażenie wpisuje do zmiennej CurrentQuery (typu

Message) nazwę aktualnego zapytania alarmowego używanego przez obiekt alarmu rozproszonego "AlmObj_1”.

GetPropertyM("AlmObj_1.AlarmGroup",CurrentQuery);

Patrz również GetPropertyM(), .AlarmGroupSel, .AlarmName

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 67

.AlarmGroupSel

.AlarmHiDisabled

Pole to zwraca nazwę grupy alarmu zmiennej związanej z wybranym alarmem. Alarm musi być wybrany przez kliknięcie na bieżącym wyświetlanym Obiekcie Alarmu Rozproszonego.

Kategoria alarmySposób użycia [ErrorNumber=]GetPropertyM(" NazwaObiektu. AlarmGroupSel ",

Zmienna);

Parametr Opis

NazwaObiektu Nazwa obiektu alarmów rozproszonych Przykładowo, AlmObj_1.

Zmienna Dowolna zmienna typu Memory Message.Typ danych Memory Message (tylko do odczytu)Przykład(y) GetPropertyM("AlmObj_1.AlarmGroupSel",almGroup);

Gdzie AlmObj_1 jest nazwą obiektu alarmu rozproszonego, almGroup jest zmienną typu Memory Message zawierającą nazwę grupy alarmu zmiennej powiązanej z wybranym alarmem. Przy wykorzystaniu w przycisku akcji, po naciśnięciu przycisku przez operatora, instrukcja ta wpisze wartość do pola almGroup, co można wykorzystać do wyświetlania komunikatów lub w późniejszych operacjach. Pole almGroup będzie zawierało nazwę grupy alarmu powiązanej z wybranym alarmem.

Patrz również GetPropertyM(), .AlarmGroup, .AlarmName

Pole to umożliwia wyłączenie i/lub włączenie zdarzeń i alarmów z przypisanym warunkiem High.

Kategoria alarmySposób użycia Tagname.AlarmHiDisabled

Parametr Opis

Zmienna Dowolna zmienna typu Integer lub Real, zmienna Indirect Analog lub Grupa Alarmowa.

Uwagi Gdy wartość pola .AlarmHiDisabled jest ustawiona na 1, wszystkie zdarzenia i alarmy z przypisanym warunkiem High są ignorowane. Nie są one zapisywane w buforze, ani też na dysku. Aby uniknąć utraty danych, należy zawsze, gdy to jest możliwe, włączać sygnalizację zdarzeń i alarmów.

Jest to pole identyczne z .AlarmHiEnabled, ale z przeciwną polaryzacją.Typ danych Discrete (odczyt/zapis)Zakres wartości 1 = Alarmy wyłączone

0 = Alarmy włączone (ustawienie domyślne)Przykład(y) Aby włączyć alarm z przypisanym warunkiem Hi:

Tag1.AlarmHiDisabled=0;

Patrz również .AlarmHiEnabled, .AlarmDisabled

Opis funkcji, pól i zmiennych systemowych

68 Rozdział 2

.AlarmHiEnabled

.AlarmHiHiDisabled

Pole to umożliwia włączenie i/lub wyłączenie zdarzeń i alarmów z przypisanym warunkiem High.

Kategoria alarmySposób użycia Zmienna. AlarmHiEnabled

Parametr Opis

Zmienna Dowolna zmienna typu Integer lub Real, zmienna Indirect Analog lub Grupa Alarmowa.

Uwagi Gdy wartość pola .AlarmHiEnabled jest ustawiona na 0, wszystkie zdarzenia i alarmy z przypisanym warunkiem High są ignorowane. Nie są one zapisywane w buforze, ani też na dysku. Aby uniknąć utraty danych, należy zawsze, gdy to jest możliwe, włączać sygnalizację zdarzeń i alarmów.

Jest to pole identyczne z .AlarmHiDisabled, ale z przeciwną polaryzacją.Typ danych Discrete (odczyt/zapis)Zakres wartości 0 = Alarmy wyłączone

1 = Alarmy włączone (ustawienie domyślne)Przykład(y) Aby wyłączyć alarm z przypisanym warunkiem Hi:

Tag1.AlarmHiEnabled=0;

Patrz również .AlarmHiDisabled, .AlarmEnabled

Pole to umożliwia wyłączenie i/lub włączenie zdarzeń i alarmów z przypisanym warunkiem HiHi.

Kategoria alarmySposób użycia Zmienna. AlarmHiHiDisabled

Parametr Opis

Zmienna Dowolna zmienna typu Integer lub Real, zmienna Indirect Analog lub Grupa Alarmowa.

Uwagi Gdy wartość pola .AlarmHiHiDisabled jest ustawiona na 1, wszystkie zdarzenia i alarmy z przypisanym warunkiem HiHi są ignorowane. Nie są one zapisywane w buforze, ani też na dysku. Aby uniknąć utraty danych, należy zawsze, gdy to jest możliwe, włączać sygnalizację zdarzeń i alarmów.

Jest to pole identyczne z .AlarmHiHiEnabled, ale z przeciwną polaryzacją.Typ danych Discrete (odczyt/zapis)Zakres wartości 1 = Alarmy wyłączone

0 = Alarmy włączone (ustawienie domyślne)Przykład(y) Aby włączyć alarm z przypisanym warunkiem HiHi:

Tag1.AlarmHiHiDisabled=0;

Patrz również .AlarmHiHiEnabled, .AlarmDisabled

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 69

.AlarmHiHiEnabled Pole to umożliwia włączenie i/lub wyłączenie zdarzeń i alarmów z przypisanym warunkiem HiHi.

Kategoria alarmySposób użycia Zmienna. AlarmHiHiEnabled

Parametr Opis

Zmienna Dowolna zmienna typu Integer lub Real, zmienna Indirect Analog lub Grupa Alarmowa.

Uwagi Gdy wartość pola .AlarmHiHiEnabled jest ustawiona na 0, wszystkie zdarzenia i alarmy z przypisanym warunkiem HiHi są ignorowane. Nie są one zapisywane w buforze, ani też na dysku. Aby uniknąć utraty danych, należy zawsze, gdy to jest możliwe, włączać sygnalizację zdarzeń i alarmów.

Jest to pole identyczne z .AlarmHiHiDisabled, ale z przeciwną polaryzacją.Typ danych Discrete (odczyt/zapis)Zakres wartości 0 = Alarmy wyłączone

1 = Alarmy włączone (ustawienie domyślne)Przykład(y) Aby wyłączyć alarm z przypisanym warunkiem HiHi:

Tag1.AlarmHiHiEnabled=0;

Patrz również .AlarmHiHiDisabled, .AlarmEnabled

Opis funkcji, pól i zmiennych systemowych

70 Rozdział 2

.AlarmHiHiInhibitorPole to zwraca łańcuch tekstowy zawierający nazwę zmiennej wstrzymującej alarmy powiązanej ze stanem alarmu HiHi

Kategoria alarmySposób użycia Zmienna. AlarmHiHiInhibitor

Parametr Opis

Zmienna Analogowe zmienne z alarmami lub grupa alarmowa.

Uwagi Pole to jest konfigurowane w programie WindowMaker. Nie może być modyfikowane w czasie pracy.

Typ danych Message (tylko odczyt)Przykład(y) Pole .AlarmHiHiInhibitor jest używane przez ustawienie pola .Name

zmiennej pośredniej (typu Indirect) na wartość równą wartości pola .AlarmHiHiInhibitor zmiennej alarmowej AlarmedTag, zmieniając tym samym wartość zmiennej pośredniej. Zamieszczone poniżej wyrażenie zwraca nazwę zmiennej wstrzymującej dla limitu alarmu HiHi (przy założeniu, że SomeIndirectTag jest zmienną typu Analog Indirect)SomeIndirectTag.Name = AlarmedTag.AlarmHiHiInhibitor;Stan wstrzymania alarmów zmiennej alarmowej może być kontrolowany przez ustawienie wartości zmiennej pośredniej w następujący sposób:

SomeIndirectTag = 1;

Włącza wstrzymywanieAlarmy HiHi są wyłączone dla zmiennej alarmowanej

SomeIndirectTag = 0;

Wyłącza wstrzymywanieAlarmy HiHi mogą być generowane dla zmiennej alarmowanej

Patrz również .AlarmHiInhibitor, .AlarmLoInhibitor, .AlarmLoLoInhibitor

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 71

.AlarmHiInhibitorZwraca zmienną wstrzymującą alarm powiązany z warunkiem High.

Kategoria alarmySposób użycia Zmienna. AlarmHiInhibitor

Parametr Opis

Zmienna Analogowe zmienne z alarmami lub grupa alarmowa.

Uwagi Pole to jest konfigurowane w programie WindowMaker. Nie może być modyfikowane w czasie pracy.

Typ danych Message (tylko odczyt)Przykład(y) Pole .AlarmHiInhibitor jest używane przez ustawienie pola .Name

zmiennej pośredniej (typu Indirect) na wartość równą wartości pola .AlarmHiInhibitor zmiennej alarmowej AlarmedTag, zmieniając tym samym wartość zmiennej pośredniej. Zamieszczone poniżej wyrażenie zwraca nazwę zmiennej wstrzymującej dla limitu alarmu High (przy założeniu, że SomeIndirectTag jest zmienną typu Analog Indirect)

SomeIndirectTag.Name = AlarmedTag.AlarmHiInhibitor;

Stan wstrzymania alarmów zmiennej alarmowej może być kontrolowany przez ustawienie wartości zmiennej pośredniej w następujący sposób:

SomeIndirectTag = 1;

Włącza wstrzymywanieAlarmy typu Hi są wyłączone dla zmiennej alarmowanej

SomeIndirectTag = 0;

Wyłącza wstrzymywanieAlarmy typu Hi mogą być generowane dla zmiennej alarmowanej

Patrz również .AlarmHiHiInhibitor, .AlarmLoInhibitor, .AlarmLoLoInhibitor

Opis funkcji, pól i zmiennych systemowych

72 Rozdział 2

.AlarmLimit

.AlarmLoDisabled

Zwraca limit dla zmiennej powiązanej z wybranym alarmem. Alarm musi być wybrany przez kliknięcie na obiekcie alarmów rozproszonych.

Kategoria alarmySposób użycia [ErrorNumber=]GetPropertyI(" NazwaObiektu. AlarmLimit" ,

Zmienna);

Parametr Opis

NazwaObiektu Nazwa obiektu alarmów rozproszonych Przykładowo, AlmObj_1.

Zmienna Dowolna zmienna tekstowa (Message).Typ danych Message (tylko odczyt)Przykład(y) GetPropertyI("AlmObj_1.AlarmLimit", almLimit);

Gdzie AlmObj_1 jest nazwą obiektu alarmu rozproszonego, almLimit jest zmienną typu Memory Message zawierającą limit alarmu zmiennej powiązanej z wybranym alarmem.

Przy wykorzystaniu w przycisku akcji, po naciśnięciu przycisku przez operatora, instrukcja ta wpisze wartość do pola almLimit, co można wykorzystać do wyświetlania komunikatów lub w późniejszych operacjach. Pole almLimit będzie zawierało limit alarmu powiązany z wybranym alarmem.

Patrz również GetPropertyM(), .AlarmAccess, .AlarmClass, .AlarmComment, .AlarmDate, .AlarmName, .AlarmOprName, .AlarmOprNode, .AlarmPri, .AlarmProv, .AlarmState, .AlarmTime, .AlarmType, .AlarmValue

Pole to umożliwia wyłączenie i/lub włączenie zdarzeń i alarmów z przypisanym warunkiem Lo.

Kategoria alarmySposób użycia Zmienna.AlarmLoDisabled

Parametr Opis

Zmienna Dowolna zmienna typu Integer lub Real, zmienna Indirect Analog lub Grupa Alarmowa.

Uwagi Gdy wartość pola .AlarmLoDisabled jest ustawiona na 1, wszystkie zdarzenia i alarmy z warunkiem Low są ignorowane. Nie są one zapisywane w buforze, ani też na dysku. Aby uniknąć utraty danych, należy zawsze, gdy to jest możliwe, włączać sygnalizację zdarzeń i alarmów.

Jest to pole identyczne z .AlarmLoEnabled, ale z przeciwną polaryzacją.Typ danych Discrete (odczyt/zapis)Zakres wartości 1 = Alarmy wyłączone

0 = Alarmy włączone (ustawienie domyślne)Przykład(y) Tag1.AlarmLoDisabled=0;

Patrz również .AlarmDisabled, .AlarmEnabled, .AlarmLoEnabled

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 73

.AlarmLoEnabledPole to umożliwia włączenie i/lub wyłączenie zdarzeń i alarmów z przypisanym warunkiem Lo.

Kategoria alarmySposób użycia Zmienna. AlarmLoEnabled

Parametr Opis

Zmienna Dowolna zmienna typu Integer lub Real, zmienna Indirect Analog lub Grupa Alarmowa.

Uwagi Gdy wartość pola .AlarmLoEnabled jest ustawiona na 0, wszystkie zdarzenia i alarmy z warunkiem Low są ignorowane. Nie są one zapisywane w buforze, ani też na dysku. Aby uniknąć utraty danych, należy zawsze, gdy to jest możliwe, włączać sygnalizację zdarzeń i alarmów.

Jest to pole identyczne z .AlarmLoDisabled, ale z przeciwną polaryzacją.Typ danych Discrete (odczyt/zapis)Zakres wartości 0 = Alarmy wyłączone

1 = Alarmy włączone (ustawienie domyślne)Przykład(y) Tag1.AlarmLoEnabled=0;

Patrz również .AlarmDisabled, .AlarmEnabled, .AlarmLoDisabled

Opis funkcji, pól i zmiennych systemowych

74 Rozdział 2

.AlarmLoInhibitorZwraca nazwę zmiennej wstrzymującej alarm powiązany z warunkiem Low

Kategoria alarmySposób użycia Zmienna. AlarmLoInhibitor

Parametr Opis

Zmienna Analogowe zmienne z alarmami lub grupa alarmowa.

Uwagi Pole to jest konfigurowane w programie WindowMaker. Nie może być modyfikowane w czasie pracy.

Typ danych Message (tylko odczyt)Przykład(y) Pole .AlarmLoInhibitor jest używane przez ustawienie pola .Name

zmiennej pośredniej (typu Indirect) na wartość równą wartości pola .AlarmLoInhibitor zmiennej alarmowej AlarmedTag, zmieniając tym samym wartość zmiennej pośredniej. Zamieszczone poniżej wyrażenie zwraca nazwę zmiennej wstrzymującej dla limitu alarmu Low (przy założeniu, że SomeIndirectTag jest zmienną typu Analog Indirect)

SomeIndirectTag.Name = AlarmedTag.AlarmLoInhibitor;

Stan wstrzymania alarmów zmiennej alarmowej może być kontrolowany przez ustawienie wartości zmiennej pośredniej w następujący sposób:

SomeIndirectTag = 1;

Włącza wstrzymywanieAlarmy typu Lo są wyłączone dla zmiennej alarmowanej

SomeIndirectTag = 0;

Wyłącza wstrzymywanieAlarmy Lo mogą być generowane dla zmiennej alarmowanej

Patrz również .AlarmHiInhibitor, .AlarmHiHiInhibitor, .AlarmLoLoInhibitor

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 75

.AlarmLoLoDisabled

.AlarmLoLoEnabled

Pole to umożliwia wyłączenie i/lub włączenie zdarzeń i alarmów z przypisanym warunkiem LoLo.

Kategoria alarmySposób użycia Zmienna. AlarmLoLoDisabled

Parametr Opis

Zmienna Dowolna zmienna typu Integer lub Real, zmienna Indirect Analog lub Grupa Alarmowa.

Uwagi Gdy wartość pola .AlarmLoLoDisabled jest ustawiona na 1, wszystkie zdarzenia i alarmy z warunkiem LoLo są ignorowane. Nie są one zapisywane w buforze, ani też na dysku. Aby uniknąć utraty danych, należy zawsze, gdy to jest możliwe, włączać sygnalizację zdarzeń i alarmów.

Jest to pole identyczne z .AlarmLoLoEnabled, ale z przeciwną polaryzacją.Typ danych Discrete (odczyt/zapis)Zakres wartości 1 = Alarmy wyłączone

0 = Alarmy włączone (ustawienie domyślne)Przykład(y) Tag1.AlarmLoLoDisabled=0;

Patrz również .AlarmDisabled, .AlarmEnabled, .AlarmLoLoEnabled

Pole to umożliwia włączenie i/lub wyłączenie zdarzeń i alarmów z przypisanym warunkiem LoLo.

Kategoria alarmySposób użycia Zmienna. AlarmLoLoEnabled

Parametr Opis

Zmienna Dowolna zmienna typu Integer lub Real, zmienna Indirect Analog lub Grupa Alarmowa.

Uwagi Gdy wartość pola .AlarmLoLoEnabled jest ustawiona na 0, wszystkie zdarzenia i alarmy z warunkiem LoLo są ignorowane. Nie są one zapisywane w buforze, ani też na dysku. Aby uniknąć utraty danych, należy zawsze, gdy to jest możliwe, włączać sygnalizację zdarzeń i alarmów.

Jest to pole identyczne z .AlarmLoLoDisabled, ale z przeciwną polaryzacją.Typ danych Discrete (odczyt/zapis)Zakres wartości 0 = Alarmy wyłączone

1 = Alarmy włączone (ustawienie domyślne)Przykład(y) Tag1.AlarmLoLoEnabled=0;

Patrz również .AlarmDisabled, .AlarmEnabled, .AlarmLoLoDisabled

Opis funkcji, pól i zmiennych systemowych

76 Rozdział 2

.AlarmLoLoInhibitorZwraca zmienną wstrzymującą alarm powiązany z warunkiem LoLo.

Kategoria alarmySposób użycia Zmienna. AlarmLoLoInhibitor

Parametr Opis

Zmienna Analogowe zmienne z alarmami lub grupa alarmowa.

Uwagi Pole to jest konfigurowane w programie WindowMaker. Nie może być modyfikowane w czasie pracy.

Typ danych Message (tylko odczyt)Przykład(y) Pole .AlarmLoLoInhibitor jest używane przez ustawienie pola .Name

zmiennej pośredniej (typu Indirect) na wartość równą wartości pola .AlarmLoLoInhibitor zmiennej alarmowej AlarmedTag, zmieniając tym samym wartość zmiennej pośredniej. Zamieszczone poniżej wyrażenie zwraca nazwę zmiennej wstrzymującej dla limitu alarmu LoLo (przy założeniu, że SomeIndirectTag jest zmienną typu Analog Indirect)

SomeIndirectTag.Name = AlarmedTag.AlarmLoLoInhibitor;Stan wstrzymania alarmów zmiennej alarmowej może być kontrolowany przez ustawienie wartości zmiennej pośredniej w następujący sposób:

SomeIndirectTag = 1;

Włącza wstrzymywanieAlarmy typu LoLo są wyłączone dla zmiennej alarmowanej

SomeIndirectTag = 0;

Wyłącza wstrzymywanieAlarmy LoLo mogą być generowane dla zmiennej alarmowanej

Patrz również .AlarmHiInhibitor, .AlarmHiHiInhibitor, .AlarmLoInhibitor

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 77

.AlarmMajDevDisabled

.AlarmMajDevEnabled

Wyłącza i/lub włącza zdarzenia i alarmy typu Odchyleniowy Duży (Major Deviation).

Kategoria alarmySposób użycia Zmienna. AlarmMajDevDisabled

Parametr Opis

Zmienna Dowolna zmienna typu Integer lub Real, zmienna Indirect Analog lub Grupa Alarmowa.

Uwagi Gdy wartość pola .AlarmMajDevDisabled jest ustawiona na 1, wszystkie zdarzenia i alarmy typu Odchyleniowy Duży są ignorowane. Nie są one zapisywane w buforze, ani też na dysku. Aby uniknąć utraty danych, należy zawsze, gdy to jest możliwe, włączać sygnalizację zdarzeń i alarmów.

Jest to pole identyczne z .AlarmMajDevEnabled, ale z przeciwną polaryzacją.

Typ danych Discrete (odczyt/zapis)Zakres wartości 1 = Alarmy wyłączone

0 = Alarmy włączone (ustawienie domyślne)Przykład(y) Tag1.AlarmMajDevDisabled=0;

Patrz również .AlarmDisabled, .AlarmEnabled, .AlarmMajDevEnabled

Załącza i/lub wyłącza zdarzenia i alarmy typu Odchyleniowy Duży (Major Deviation).

Kategoria alarmySposób użycia Zmienna. AlarmMajDevEnabled

Parametr Opis

Zmienna Dowolna zmienna typu Integer lub Real, zmienna Indirect Analog lub Grupa Alarmowa.

Uwagi Gdy wartość pola .AlarmMajDevEnabled jest ustawiona na 0, wszystkie zdarzenia i alarmy typu Odchyleniowy Duży są ignorowane. Nie są one zapisywane w buforze, ani też na dysku. Aby uniknąć utraty danych, należy zawsze, gdy to jest możliwe, włączać sygnalizację zdarzeń i alarmów.

Jest to pole identyczne z .AlarmMajDevDisabled, ale z przeciwną polaryzacją.

Typ danych Discrete (odczyt/zapis)Zakres wartości 0 = Alarmy wyłączone

1 = Alarmy włączone (ustawienie domyślne)Przykład(y) Tag1.AlarmMajDevEnabled=0;

Patrz również .AlarmDisabled, .AlarmEnabled, .AlarmMajDevDisabled

Opis funkcji, pól i zmiennych systemowych

78 Rozdział 2

.AlarmMajDevInhibitorZwraca nazwę zmiennej wstrzymującej alarm powiązany z warunkiem Odchyleniowy Duży (Major Deviation).

Kategoria alarmySposób użycia Zmienna. AlarmMajDevInhibitor

Parametr Opis

Zmienna Analogowe zmienne z alarmami lub grupa alarmowa.

Uwagi Pole to jest konfigurowane w programie WindowMaker. Nie może być modyfikowane w czasie pracy.

Typ danych Message (tylko odczyt)Przykład(y) Pole .AlarmMajDevInhibitor jest używane przez ustawienie pola .Name

zmiennej pośredniej (typu Indirect) na wartość równą wartości pola .AlarmMajDevInhibitor zmiennej alarmowej AlarmedTag, zmieniając tym samym wartość zmiennej pośredniej. Zamieszczone poniżej wyrażenie zwraca nazwę zmiennej wstrzymującej dla limitu alarmu typu Odchyleniowy Duży (przy założeniu, że SomeIndirectTag jest zmienną typu Analog Indirect)

SomeIndirectTag.Name = AlarmedTag.AlarmMajDevInhibitor;

Stan wstrzymania alarmów zmiennej alarmowej może być kontrolowany przez ustawienie wartości zmiennej pośredniej w następujący sposób:

SomeIndirectTag = 1;

Włącza wstrzymywanieAlarmy typu odchyleniowy duży są wyłączone dla zmiennej alarmowanej

SomeIndirectTag = 0;

Wyłącza wstrzymywanieAlarmy typu odchyleniowy duży mogą być generowane dla zmiennej alarmowanej

Patrz również .AlarmMinDevInhibitor

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 79

.AlarmMinDevDisabled

.AlarmMinDevEnabled

Wyłącza i/lub włącza zdarzenia i alarmy typu odchyleniowy mały.Kategoria alarmySposób użycia Zmienna.AlarmMinDevDisabled

Parametr Opis

Zmienna Dowolna zmienna typu Integer lub Real, zmienna Indirect Analog lub grupa alarmowa.

Uwagi Gdy wartość pola .AlarmMinDevDisabled jest ustawiona na 1, wszystkie zdarzenia i alarmy typu Odchyleniowy Mały są ignorowane. Nie są one zapisywane w buforze, ani też na dysku. Aby uniknąć utraty danych, należy zawsze, gdy to jest możliwe, włączać sygnalizację zdarzeń i alarmów.

Jest to pole identyczne z .AlarmMinDevEnabled, ale z przeciwną polaryzacją.

Typ danych Discrete (odczyt/zapis)Zakres wartości 1 = Alarmy wyłączone

0 = Alarmy włączone (ustawienie domyślne)Przykład(y) Tag1.AlarmMinDevDisabled=0;

Patrz również .AlarmDisabled, .AlarmEnabled, .AlarmMinDevEnabled

Załącza i/lub wyłącza zdarzenia i alarmy typu odchyleniowy mały.Kategoria alarmySposób użycia Zmienna. AlarmMinDevEnabled

Parametr Opis

Zmienna Dowolna zmienna typu Integer lub Real, zmienna Indirect Analog lub grupa alarmowa.

Uwagi Gdy wartość pola .AlarmMinDevEnabled jest ustawiona na 0, wszystkie zdarzenia i alarmy typu Odchyleniowy Mały są ignorowane. Nie są one zapisywane w buforze, ani też na dysku. Aby uniknąć utraty danych, należy zawsze, gdy to jest możliwe, włączać sygnalizację zdarzeń i alarmów.

Jest to pole identyczne z .AlarmMinDevDisabled, ale z przeciwną polaryzacją.

Typ danych Discrete (odczyt/zapis)Zakres wartości 0 = Alarmy wyłączone

1 = Alarmy włączone (ustawienie domyślne)Przykład(y) Tag1.AlarmMinDevEnabled=0;

Patrz również .AlarmDisabled, .AlarmEnabled, .AlarmMinDevDisabled

Opis funkcji, pól i zmiennych systemowych

80 Rozdział 2

.AlarmMinDevInhibitorZwraca nazwę zmiennej wstrzymującej alarm powiązany z warunkiem Odchyleniowy Mały (Minor Deviation).

Kategoria alarmySposób użycia Zmienna. AlarmMinDevInhibitor

Parametr Opis

Zmienna Analogowe zmienne z alarmami lub grupa alarmowa.

Uwagi Pole to jest konfigurowane w programie WindowMaker. Nie może być modyfikowane w czasie pracy.

Typ danych Message (tylko odczyt)Przykład(y) Pole .AlarmMinDevInhibitor jest używane przez ustawienie pola .Name

zmiennej pośredniej (typu Indirect) na wartość równą wartości pola .AlarmMinDevInhibitor zmiennej alarmowej AlarmedTag, zmieniając tym samym wartość zmiennej pośredniej. Zamieszczone poniżej wyrażenie zwraca nazwę zmiennej wstrzymującej dla limitu alarmu Odchyleniowy Mały (przy założeniu, że SomeIndirectTag jest zmienną typu Analog Indirect).

SomeIndirectTag.Name = AlarmedTag.AlarmMinDevInhibitor;

Stan wstrzymania alarmów zmiennej alarmowej może być kontrolowany przez ustawienie wartości zmiennej pośredniej w następujący sposób:

SomeIndirectTag = 1;

Włącza wstrzymywanieAlarmy typu odchyleniowy mały są wyłączone dla zmiennej alarmowanej

SomeIndirectTag = 0;

Wyłącza wstrzymywanieAlarmy typu odchyleniowy mały mogą być generowane dla zmiennej alarmowanej

Patrz również .AlarmMajDevInhibitor

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 81

.AlarmNameZwraca nazwę alarmu dla zmiennej związanej z wybranym alarmem. Alarm musi być wybrany przez kliknięcie na obiekcie alarmów rozproszonych.

Kategoria alarmySposób użycia [ErrorNumber=]GetPropertyM(" NazwaObiektu. AlarmName ",

Zmienna);

Parametr Opis

NazwaObiektu Nazwa obiektu alarmów rozproszonych Przykładowo, AlmObj_1.

Zmienna Dowolna zmienna typu Memory Message.Typ danych Memory Message (tylko do odczytu)Przykład(y) GetPropertyM("AlmObj_1.AlarmName", almName);

Gdzie AlmObj_1 jest nazwą obiektu alarmu rozproszonego, almName jest zmienną typu Memory Message zawierającą nazwę limitu alarmu zmiennej powiązanej z wybranym alarmem.

Przy wykorzystaniu w przycisku akcji, po naciśnięciu przycisku przez operatora, instrukcja ta wprowadzi wartość do pola almName, co można wykorzystać do wyświetlania komunikatów lub w późniejszych operacjach. Pole almName będzie zawierało nazwę alarmu powiązaną z wybranym alarmem.

Patrz również GetPropertyM(), .AlarmAccess, .AlarmClass, .AlarmComment, .AlarmDate, .AlarmLimit, .AlarmOprName, .AlarmOprNode, .AlarmPri, .AlarmProv, .AlarmState, .AlarmTime, .AlarmType, .AlarmValue

Opis funkcji, pól i zmiennych systemowych

82 Rozdział 2

.AlarmOprNameZwraca nazwę operatora dla zmiennej powiązanej z wybranym alarmem. Alarm musi być wybrany przez kliknięcie na obiekcie alarmów rozproszonych.

Kategoria alarmySposób użycia [ErrorNumber=]GetPropertyM(" NazwaObiektu.AlarmOprName" ,

Zmienna);

Parametr Opis

NazwaObiektu Nazwa obiektu alarmów rozproszonych Przykładowo, AlmObj_1.

Zmienna Dowolna zmienna typu Memory Message.Typ danych Memory Message (tylko do odczytu)Przykład(y) GetPropertyM("AlmObj_1.AlarmOprName", almOprName);

Gdzie AlmObj_1 jest nazwą obiektu alarmu rozproszonego, almOprName jest zmienną typu Memory Message zawierającą nazwę operatora dla zmiennej powiązanej z wybranym alarmem.

Przy wykorzystaniu w przycisku akcji, po naciśnięciu przycisku przez operatora, instrukcja ta wprowadzi wartość do pola almOprName, co można wykorzystać do wyświetlania komunikatów lub w późniejszych operacjach. Pole almOprName będzie zawierało nazwę operatora alarmu powiązaną z wybranym alarmem.

Patrz również GetPropertyM(), .AlarmAccess, .AlarmClass, .AlarmComment, .AlarmDate, .AlarmLimit, .AlarmName, .AlarmOprNode, .AlarmPri, .AlarmProv, .AlarmState, .AlarmTime, .AlarmType, .AlarmValue

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 83

.AlarmOprNodeZwraca nazwę operatora stacji dla zmiennej powiązanej z wybranym alarmem. Alarm musi być wybrany przez kliknięcie na obiekcie alarmów rozproszonych.

Kategoria alarmySposób użycia [ErrorNumber=]GetPropertyM(" NazwaObiektu.AlarmOprNode ",

Zmienna);

Parametr Opis

NazwaObiektu Nazwa obiektu alarmów rozproszonych Przykładowo, AlmObj_1.

Zmienna Dowolna zmienna typu Memory Message.Typ danych Memory Message (tylko do odczytu)Przykład(y) GetPropertyM("AlmObj_1.AlarmOprNode", almOprNode);

Gdzie AlmObj_1 jest nazwą obiektu alarmu rozproszonego, almOprNode jest zmienną typu Memory Message zawierającą nazwę operatora stacji dla zmiennej powiązanej z wybranym alarmem.

Przy wykorzystaniu w przycisku akcji, po naciśnięciu przycisku przez operatora, instrukcja ta wprowadzi wartość do pola almOprNode, co można wykorzystać do wyświetlania komunikatów lub w późniejszych operacjach. Pole almOprNode będzie zawierało nazwę komputera operatora powiązaną z wybranym alarmem.

Patrz również GetPropertyM(), .AlarmAccess, .AlarmClass, .AlarmComment, .AlarmDate, .AlarmLimit, .AlarmName, .AlarmOprName, .AlarmPri, .AlarmProv, .AlarmState, .AlarmTime, .AlarmType, .AlarmValue

Opis funkcji, pól i zmiennych systemowych

84 Rozdział 2

.AlarmPriZwraca wartość priorytetu (1-999) zmiennej związanej z wybranym alarmem. Alarm musi być wybrany przez kliknięcie na obiekcie alarmów rozproszonych.

Kategoria alarmySposób użycia [ErrorNumber=]GetPropertyM(" NazwaObiektu. AlarmPri ",

Zmienna);

Parametr Opis

NazwaObiektu Nazwa obiektu alarmów rozproszonych Przykładowo, AlmObj_1.

Zmienna Dowolna zmienna typu AnalogTyp danych Memory Message (tylko do odczytu)Zakres wartości Integer (1-999) (tylko do odczytu)Przykład(y) GetPropertyI("AlmObj_1.AlarmPri", almPri);

Gdzie AlmObj_1 jest nazwą obiektu alarmu rozproszonego, almPri jest zmienną typu Integer zawierającą poziom priorytetu dla zmiennej powiązanej z wybranym alarmem.

Przy wykorzystaniu w przycisku akcji, po naciśnięciu przycisku przez operatora, instrukcja ta wprowadzi wartość do pola almPri, co można wykorzystać do wyświetlania komunikatów lub w późniejszych operacjach. Pole almPri będzie zawierało poziom priorytetu powiązanego z wybranym alarmem.

Patrz również GetPropertyM(), .AlarmAccess, .AlarmClass, .AlarmComment, .AlarmDate, .AlarmLimit, .AlarmName, .AlarmOprName, .AlarmOprNode, .AlarmProv, .AlarmState, .AlarmTime, .AlarmType, .AlarmValue

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 85

.AlarmProvZwraca nazwę dostawcy dla zmiennej związanej z wybranym alarmem. Alarm musi być wybrany przez kliknięcie na obiekcie alarmów rozproszonych.

Kategoria alarmySposób użycia [ErrorNumber=]GetPropertyM(" NazwaObiektu. AlarmProv" ,

Zmienna);

Parametr Opis

NazwaObiektu Nazwa obiektu alarmów rozproszonych Przykładowo, AlmObj_1.

Zmienna Dowolna zmienna typu Memory Message.Typ danych Memory Message (tylko do odczytu)Przykład(y) GetPropertyM("AlmObj_1.AlarmProv", almProv);

Gdzie AlmObj_1 jest nazwą obiektu alarmu rozproszonego, almProv jest zmienną typu Memory Message zawierającą nazwę dostawcy dla zmiennej powiązanej z wybranym alarmem.

Przy wykorzystaniu w przycisku akcji, po naciśnięciu przycisku przez operatora, instrukcja ta wprowadzi wartość do pola .almProv, co można wykorzystać do wyświetlania komunikatów lub w późniejszych operacjach. Pole .almProv będzie zawierało dostawcę alarmu powiązanego z wybranym alarmem.

Patrz również GetPropertyM(), .AlarmAccess, .AlarmClass, .AlarmComment, .AlarmDate, .AlarmLimit, .AlarmName, .AlarmOprName, .AlarmOprNode, .AlarmPri, .AlarmState, .AlarmTime, .AlarmType, .AlarmValue

Opis funkcji, pól i zmiennych systemowych

86 Rozdział 2

.AlarmROCPole to przyjmuje wartość 1 w momencie wystąpienia stanu alarmu typu szybkości zmiany dla danej zmiennej.

Kategoria alarmySposób użycia Zmienna. AlarmROC

Parametr Opis

Zmienna Dowolna zmienna typu Integer lub Real, zmienna Indirect Analog lub grupa alarmowa.

Uwagi Wartość tego pola przeznaczonego wyłącznie do odczytu jest zwykle równa 0,a w przypadku wystąpienia alarmu typu szybkości zmiany dla danej zmiennej zostaje zmieniona przez system na 1. Pole to ma wartość równą 1 do czasu, gdy zniknie przyczyna alarmu typu szybkości zmiany. Jeśli dana zmienna jest nazwą grupy alarmowej, polu .Alarm zostaje przypisana wartość 1 zawsze, gdy którakolwiek ze zmiennych należących do tej grupy znajdzie się w alarmu typu szybkości zmiany.

Typ danych Discrete (tylko odczyt)Zakres wartości 0 lub 1Przykład(y) Zamieszczone poniżej wyrażenie sprawdza, czy zmienna Tag1 jest w stanie

alarmu typu szybkości zmiany.

IF (Tag1.AlarmROC == 1) THEN

Wyrażenia zawarte w poniższej instrukcji IF-THEN będą wykonywane, jeżeli w grupie alarmów PumpStation występują aktywne alarmy typu szybkości zmiany.

IF (PumpStation.AlarmROC == 1) THENMyAlarmMessage="The pumping station currently has an ALARM!";

ENDIF;

To pole nie jest związane z polami .Ack i .UnAck Z tego powodu, nawet jeżeli aktywny alarm typu szybkości zmiany zostanie zatwierdzony, wartość tego pola pozostaje równa 1.

Patrz również .Ack, .AckROC, .Alarm, .AlarmROCEnabled, .AlarmROCDisabled

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 87

.AlarmROCCount

.AlarmROCDisabled

Śledzi całkowitą liczbę aktywnych alarmów typu szybkości zmiany w danej zmiennej lub grupie alarmowej. Zawiera ilość zarówno alarmów zatwierdzonych, jak i nie zatwierdzonych. Dla zmiennych alarmów innych niż zmienne Rozszerzonych Alarmów Bieżących ta ilość będzie zawsze równa 1. Jest to pole przeznaczone tylko do odczytu.

Kategoria alarmySposób użycia Zmienna.AlarmROCCount

Parametr Opis

Zmienna Dowolna zmienna typu Integer, Real lub Grupa Alarmowa.

Uwagi

Typ danych Integer (tylko odczyt)Zakres wartości 0 lub dowolna, dodatnia liczba całkowita (Integer).Przykład(y) ARC = Tag1.AlarmROCCount

Gdzie Tag1 jest zmienną typu Analog, skonfigurowaną dla alarmów typu szybkości zmiany. ARC jest również zmienną typu Analog, pobierającą całkowitą ilość aktywnych alarmów typu szybkość zmiany (zarówno niepotwierdzonych jak i potwierdzonych) istniejących dla zmiennej Tag1.

Patrz również .AlarmDevCount, .AlarmDevUnAckCount, .AlarmDscCount, .AlarmDscUnAckCount, .AlarmValueCount, .AlarmTotalCount, .AlarmValueUnAckCount, .AlarmROCUnAckCount, .AlarmUnAckCount

Wyłącza i/lub włącza zdarzenia i alarmy typu szybkości zmiany.Kategoria alarmySposób użycia Zmienna. AlarmROCDisabled

Parametr Opis

Zmienna Dowolna zmienna typu Integer lub Real, zmienna Indirect Analog lub grupa alarmowa.

Uwagi Gdy wartość pola .AlarmROCDisabled jest ustawiona na 1, wszystkie zdarzenia i alarmy typu Szybkości Zmiany są ignorowane. Nie są one zapisywane w buforze, ani też na dysku. Aby uniknąć utraty danych, należy zawsze, gdy to jest możliwe, włączać sygnalizację zdarzeń i alarmów.

Jest to pole identyczne z .AlarmROCEnabled, ale z przeciwną polaryzacją.Typ danych Discrete (odczyt/zapis)Zakres wartości 1 = Alarmy wyłączone

0 = Alarmy włączone (ustawienie domyślne)Przykład(y) Tag1.AlarmROCDisabled=0;

Patrz również .AlarmDisabled, .AlarmEnabled, .AlarmROCEnabled

Opis funkcji, pól i zmiennych systemowych

88 Rozdział 2

.AlarmROCEnabledZałącza i/lub wyłącza zdarzenia i alarmy typu szybkości zmiany.

Kategoria alarmySposób użycia Zmienna. AlarmROCEnabled

Parametr Opis

Zmienna Dowolna zmienna typu Integer lub Real, zmienna Indirect Analog lub grupa alarmowa.

Uwagi Gdy wartość pola .AlarmROCEnabled jest ustawiona na 0, wszystkie zdarzenia i alarmy typu Szybkości Zmiany są ignorowane. Nie są one zapisywane w buforze, ani też na dysku. Aby uniknąć utraty danych, należy zawsze, gdy to jest możliwe, włączać sygnalizację zdarzeń i alarmów.

Jest to pole identyczne z .AlarmROCDisabled, ale z przeciwną polaryzacją.Typ danych Discrete (odczyt/zapis)Zakres wartości 0 = Alarmy wyłączone

1 = Alarmy włączone (ustawienie domyślne)Przykład(y) Tag1.AlarmROCEnabled=0;

Patrz również .AlarmDisabled, .AlarmEnabled, .AlarmROCDisabled

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 89

.AlarmROCInhibitorZwraca nazwę zmiennej wstrzymywania alarmu powiązanej z alarmem typu Szybkości Zmiany (Rate-of-Change).

Kategoria alarmySposób użycia Zmienna. AlarmROCInhibitor

Parametr Opis

Zmienna Analogowe zmienne z alarmami lub grupa alarmowa.

Uwagi Pole to jest konfigurowane w programie WindowMaker. Nie może być modyfikowane w czasie pracy.

Typ danych Message (tylko odczyt)Przykład(y) Pole .AlarmROCInhibitor jest używane przez ustawienie pola .Name

zmiennej pośredniej (typu Indirect) na wartość równą wartości pola .AlarmROCInhibitor zmiennej alarmowej AlarmedTag, zmieniając tym samym wartość zmiennej pośredniej. Zamieszczone poniżej wyrażenie zwraca nazwę zmiennej wstrzymującej dla limitu alarmu Szybkości Zmiany (przy założeniu, że SomeIndirectTag jest zmienną typu Analog Indirect)

SomeIndirectTag.Name = AlarmedTag.AlarmROCInhibitor;

Stan wstrzymania alarmów zmiennej alarmowej może być kontrolowany przez ustawienie wartości zmiennej pośredniej w następujący sposób:

SomeIndirectTag = 1;

Włącza wstrzymywanieAlarmy szybkości zmiany są wyłączone dla zmiennej alarmowanej

SomeIndirectTag = 0;

Wyłącza wstrzymywanieAlarmy szybkości zmiany mogą być generowane dla zmiennej alarmowanej

Opis funkcji, pól i zmiennych systemowych

90 Rozdział 2

.AlarmROCUnAckCount

.AlarmState

Śledzi całkowitą liczbę nie zatwierdzonych alarmów typu prędkość zmiany w danej zmiennej lub grupie alarmowej.

Kategoria AlarmySposób użycia Zmienna.AlarmROCUnAckCount

Parametr Opis

Zmienna Dowolna zmienna typu Integer, Real lub Grupa Alarmowa.

Typ danych Integer (tylko odczyt)Zakres wartości 0 lub dowolna, dodatnia liczba całkowita (Integer).Przykład(y) ARUC = Tag1.AlarmROCUnACKCount;

Gdzie Tag1 jest zmienną typu Analog, skonfigurowaną dla alarmów typu prędkość zmiany. ARUC jest również zmienną typu Analog, pobierającą całkowitą ilość nie zatwierdzonych alarmów typu prędkości zmiany istniejących w Tag1.

Patrz również .AlarmDevCount, .AlarmDevUnAckCount, .AlarmDscCount, .AlarmDscUnAckCount, .AlarmValueCount, .AlarmTotalCount, .AlarmValueUnAckCount, .AlarmROCCount, .AlarmUnAckCount

Zwraca stan zmiennej powiązanej z wybranym alarmem. Alarm musi być wybrany przez kliknięcie na obiekcie alarmów rozproszonych.

Kategoria alarmySposób użycia [ErrorNumber=]GetPropertyM(" NazwaObiektu. AlarmState ",

Zmienna);

Parametr OpisNazwaObiektu Nazwa obiektu alarmów rozproszonych

Przykładowo, AlmObj_1.Zmienna Dowolna zmienna typu Memory Message.

Typ danych Memory Message (tylko do odczytu)Przykład(y) GetPropertyM("AlmObj_1.AlarmState", almState);

Gdzie AlmObj_1 jest nazwą obiektu alarmu rozproszonego, almState jest zmienną typu Memory Message zawierającą stan alarmu zmiennej powiązanej z wybranym alarmem.

Przy wykorzystaniu w przycisku akcji, po naciśnięciu przycisku przez operatora, instrukcja ta wprowadzi wartość do pola almState, co można wykorzystać do wyświetlania komunikatów lub w późniejszych operacjach. Pole .almState będzie zawierało stan alarmu powiązany z wybranym alarmem.

Patrz również GetPropertyM(), .AlarmAccess, .AlarmClass, .AlarmComment, .AlarmDate, .AlarmLimit, .AlarmName, .AlarmOprName, .AlarmOprNode, .AlarmPri, .AlarmProv, .AlarmTime, .AlarmType, .AlarmValue

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 91

.AlarmTime

.AlarmTotalCount

Zwraca czas dla zmiennej powiązanej z wybranym alarmem. Alarm musi być wybrany przez kliknięcie na obiekcie alarmów rozproszonych.

Kategoria alarmySposób użycia [ErrorNumber=]GetPropertyM(" NazwaObiektu. AlarmTime ",

Zmienna);

Parametr Opis

NazwaObiektu Nazwa obiektu alarmów rozproszonych Przykładowo, AlmObj_1.

Zmienna Dowolna zmienna typu Memory Message.Typ danych Memory Message (tylko do odczytu)Przykład(y) GetPropertyM("AlmObj_1.AlarmTime", almTime);

Gdzie AlmObj_1 jest nazwą obiektu alarmowego, almTime jest zmienną typu Memory Message zawierającą czas zmiennej powiązanej z wybranym alarmem. Przy wykorzystaniu w przycisku akcji, po naciśnięciu przez operatora, instrukcja ta wprowadzi wartość do pola .almTime, co można wykorzystać do wyświetlania komunikatów lub w późniejszych operacjach. Pole .almTime będzie zawierało czas powiązany z wybranym alarmem.

Patrz również GetPropertyM(), .AlarmAccess, .AlarmClass, .AlarmComment, .AlarmDate, .AlarmLimit, .AlarmName, .AlarmOprName, .AlarmOprNode, .AlarmPri, .AlarmProv, .AlarmState, .AlarmType, .AlarmValue

Śledzi całkowitą liczbę aktywnych alarmów w danej zmiennej lub grupie alarmowej.

Kategoria alarmySposób użycia Zmienna.AlarmTotalCount

Parametr Opis

Zmienna Wszystkie typy zmiennych.Uwagi Zawiera ilość alarmów typu dyskretnego (Discrete), prędkości zmiany (Rate

of Change), odchyleniowych (Deviation) i wartości (Value). Zawiera ilość zarówno alarmów zatwierdzonych, jak i nie zatwierdzonych.

Typ danych Integer (tylko odczyt)Zakres wartości 0 lub dowolna, dodatnia liczba całkowita (Integer).Przykład(y) ATC = Tag1.AlarmTotalCount;

Gdzie Tag1 jest zmienną typu Analog, skonfigurowaną dla alarmów. ATC jest również zmienną typu Analog, pobierającą całkowitą ilość aktywnych alarmów (zarówno nie zatwierdzonych jak i zatwierdzonych) istniejących w Tag1.

Patrz również .AlarmDevCount, .AlarmDevUnAckCount, .AlarmDSCCount, .AlarmDSCUnAckCount, .AlarmValueCount, .AlarmUnAckCount, .AlarmValueUnAckCount, .AlarmROCCount, .AlarmROCUnACkCount

Opis funkcji, pól i zmiennych systemowych

92 Rozdział 2

.AlarmType

.AlarmUnAckCount

Zwraca typ zmiennej związanej z wybranym alarmem. Alarm musi być wybrany przez kliknięcie na obiekcie alarmów rozproszonych.

Kategoria alarmySposób użycia [ErrorNumber=]GetPropertyM(" NazwaObiektu. AlarmType ",

Zmienna);

Parametr Opis

NazwaObiektu Nazwa obiektu alarmów rozproszonych Przykładowo, AlmObj_1.

Zmienna Dowolna zmienna typu Memory Message.Typ danych Memory Message (tylko do odczytu)Przykład(y) GetPropertyM("AlmObj_1.AlarmType", almType);

Gdzie AlmObj_1 jest nazwą obiektu alarmu rozproszonego, almType jest zmienną typu Memory Message zawierającą typ zmiennej powiązanej z wybranym alarmem.

Przy wykorzystaniu w przycisku akcji, po naciśnięciu przycisku przez operatora, instrukcja ta wprowadzi wartość do pola almType, co można wykorzystać do wyświetlania komunikatów lub w późniejszych operacjach. Pole almType będzie zawierało typ alarmu powiązany z wybranym alarmem.

Patrz również GetPropertyM(), .AlarmAccess, .AlarmClass, .AlarmComment, .AlarmDate, .AlarmLimit, .AlarmName, .AlarmOprName, .AlarmOprNode, .AlarmPri, .AlarmProv, .AlarmState, .AlarmTime, .AlarmValue

Śledzi całkowitą liczbę nie zatwierdzonych alarmów w danej zmiennej lub grupie alarmowej.

Kategoria alarmySposób użycia Zmienna.AlarmUnAckCount

Parametr Opis

Zmienna Wszystkie typy zmiennych.Uwagi Zawiera ilość alarmów typu dyskretnego (Discrete), prędkości zmiany (Rate

of Change), odchyleniowych (Deviation) i wartości (Value).Typ danych Integer (tylko odczyt)Zakres wartości 0 lub dowolna, dodatnia liczba całkowita (Integer).Przykład(y) AUC = Tag1.AlarmUnAckCount;

Gdzie Tag1 jest zmienną Analog lub zmienną dyskretną, skonfigurowaną dla alarmów. AUC jest również zmienną typu Analog, pobierającą całkowitą ilość nie zatwierdzonych alarmów istniejących w Tag1.

Patrz również .AlarmDevCount, .AlarmDevUnAckCount, .AlarmDscCount, .AlarmDscUnAckCount, .AlarmValueCount, .AlarmTotalCount, .AlarmValueUnAckCount, .AlarmROCCount, .AlarmROCUnACkCount

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 93

.AlarmUserDefNum1Po ustawieniu przez użytkownika wartości tego pola, jest ono dołączane do informacji zapisanych dla każdego alarmu przez Alarm DB Logger w bazie danych. (.AlarmUserDefNum1 odpowiada polu User1 w bazie danych.) Możliwe jest wykorzystanie kolumn definiowanych przez użytkownika („user – defined”) w instrukcji SELECT w celu wyboru poszczególnych zbiorów alarmów do operacji w bazie danych. Przykładowo, jeśli polu $System.AlarmUserDefNum1 zostanie przypisany numer szarży i jest ono modyfikowane gdy szarża ulega zmianie, wybór umożliwia wykorzystanie pola User1 w bazie danych do wyboru alarmów dla poszczególnych szarż.

Kategoria alarmySposób użycia Zmienna. AlarmUserDefNum1

Parametr Opis

Zmienna Dowolna zmienna typu Discrete, Integer, Real, zmienna Indirect Discrete, Indirect Analog, lub Grupa Alarmowa.

Uwagi Te definiowane przez użytkownika pole umożliwia wykorzystanie szerokiego zakresu zmiennych, a zwłaszcza zmiennych Discrete, Analog i Grup Alarmowych (niezależnie od tego, czy mają czy nie zdefiniowane alarmy). Można pozostawić te pola puste, ustawić wszystkie z nich lub ustawić tylko niektóre z nich dla pojedynczej zmiennej, grupy, lub grupy nadrzędnej.

Typ danych Analog (odczyt/zapis)Zakres wartości 0.0 lub nie ustawione (domyślnie)Przykład(y) Wartość tego pola jest dołączona do alarmu, ale TYLKO w przypadku, jeśli

zmienna została ustawiona na przykład przez skrypt lub komendę POKE.

$System.AlarmUserDefNum1 = 4;GroupA.AlarmUserDefNum1 = 27649;

Wszystkie przykłady podane powyżej korzystają ze stałych wartości. Jednakże, możliwe jest użycie skryptów do skopiowania wartości innej zmiennej do dowolnego z pól definiowanych przez użytkownika. Można wykorzystać również PtAcc do ustawiania lub sprawdzania pól, lub wykorzystać InTouch jako serwer I/O aby otrzymywać lub ustawiać wartości. Kiedy zawiadomienie o alarmie jest przesyłane do Systemu Alarmowania Rozproszonego, przeważają ustawienia najniższego poziomu. Oznacza to, że jeżeli zmienna .AlarmUserDefNum1 ma przypisaną jakąś wartość, rekord alarmu powinien być wyświetlany przy użyciu tego ustawienia. Jednakże, jeżeli zmienna nie ma przypisanej wartości, program WindowViewer sprawdzi, czy grupa zmiennych ma przypisaną wartość, sprawdzanie będzie kontynuowane do momentu osiągnięcia grupy położonej najwyżej - $System. Uwaga Hierarchiczne przeszukiwanie jest wykonywane niezależnie dla każdego elementu. Dlatego też, jeśli zmienna posiada przypisanie dla .AlarmUserDefNum2, ale nie posiada przypisania dla .AlarmUserDefNum1, ale jej grupa nadrzędna posiada przypisanie dla .AlarmUserDefNum1, zmienna odziedziczy ustawienie dla .AlarmUserDefNum1 z jej grupy nadrzędnej.

Patrz również .AlarmUserDefNum2, .AlarmUserDefStr

Opis funkcji, pól i zmiennych systemowych

94 Rozdział 2

.AlarmUserDefNum2Po ustawieniu przez użytkownika wartości tego pola, jest ono dołączane do informacji zapisanych dla każdego alarmu przez AlarmLogger w bazie danych. (.AlarmUserDefNum2 odpowiada polu User2 w bazie danych.) Możliwe jest wykorzystanie kolumn definiowanych przez użytkownika w instrukcji SELECT w celu wyboru poszczególnych zbiorów alarmów do operacji w bazie danych. Przykładowo, jeśli polu $System.AlarmUserDefNum2 zostanie przypisana szarża i jest ono modyfikowane gdy szarża ulega zmianie, wybór umożliwia wykorzystanie pola User2 w bazie danych do wyboru alarmów dla poszczególnych szarż.

Kategoria alarmySposób użycia Zmienna. AlarmUserDefNum2

Parametr Opis

Zmienna Dowolna zmienna typu Discrete, Integer, Real, zmienna Indirect Discrete, Indirect Analog, lub Grupa Alarmowa.

Uwagi Te definiowane przez użytkownika pole umożliwia wykorzystanie szerokiego zakresu zmiennych, a zwłaszcza zmiennych Discrete, Analog i Grup Alarmowych (niezależnie od tego, czy mają zdefiniowane alarmy). Można pozostawić te pola puste, ustawić wszystkie z nich lub ustawić tylko niektóre z nich dla pojedynczej zmiennej, grupy, lub grupy nadrzędnej.

Typ danych Analog (odczyt/zapis)Zakres wartości 0.0 lub nie ustawione (domyślnie)Przykład(y) Wartość tego pola jest dołączona do alarmu, ale TYLKO w przypadku, jeśli

zmienna została ustawiona na przykład przez skrypt lub komendę POKE.

$System.AlarmUserDefNum2 = 4;GroupA.AlarmUserDefNum2 = 27649;

Wszystkie przykłady podane powyżej korzystają ze stałych wartości. Jednakże, możliwe jest użycie skryptów QuickScript do skopiowania wartości innej zmiennej do dowolnego z pól definiowanych przez użytkownika. Można wykorzystać również PtAcc do ustawiania lub sprawdzania pól, lub wykorzystać InTouch jako serwer I/O aby otrzymywać lub ustawiać wartości. Kiedy zawiadomienie o alarmie jest przesyłane do Systemu Alarmowania Rozproszonego, przeważają ustawienia najniższego poziomu. Oznacza to, że jeżeli zmienna .AlarmUserDefNum2 ma przypisaną jakąś wartość, rekord alarmu powinien być wyświetlany przy użyciu tego ustawienia. Jednakże, jeżeli zmienna nie ma przypisanej wartości, program WindowViewer sprawdzi, czy grupa zmiennych ma przypisaną wartość, sprawdzanie będzie kontynuowane do momentu osiągnięcia grupy położonej najwyżej - $System.

Uwaga Hierarchiczne przeszukiwanie jest wykonywane niezależnie dla każdego elementu. Dlatego też, jeśli zmienna posiada przypisanie dla .AlarmUserDefNum1, i nie posiada przypisania dla .AlarmUserDefNum2, ale jej grupa nadrzędna posiada przypisanie dla .AlarmUserDefNum2, zmienna odziedziczy ustawienie dla .AlarmUserDefNum2 z jej grupy nadrzędnej.

Patrz również .AlarmUserDefNum1, .AlarmUserDefStr

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 95

.AlarmUserDefStrPo ustawieniu przez użytkownika wartości tego pola, jest ono dołączane do informacji zapisanych dla każdego alarmu przez Alarm DB Logger w bazie danych. (.AlarmUserDefStr odpowiada polu User3 w bazie danych.) Możliwe jest wykorzystanie kolumn definiowanych przez użytkownika w instrukcji SELECT w celu wyboru poszczególnych zbiorów alarmów z bazy danych. Przykładowo, jeśli polu $System.AlarmUserDefStr zostanie przypisana nazwa wsadu i jest ono modyfikowane zawsze, gdy wsad ulega zmianie, można wykorzystać pole User3 w bazie danych do wyboru alarmów dla poszczególnych wsadów.

Kategoria alarmySposób użycia Zmienna. AlarmUserDefStr

Parametr Opis

Zmienna Dowolna zmienna typu Discrete, Integer, Real, zmienna Indirect Discrete, Indirect Analog, lub Grupa Alarmowa.

Uwagi Te definiowane przez użytkownika pole umożliwia wykorzystanie szerokiego zakresu zmiennych, a zwłaszcza zmiennych typu Discrete, Analog i Grup Alarmowych (niezależnie od tego, czy posiadają czy nie zdefiniowane alarmy) Można pozostawić te pola puste, ustawić wszystkie z nich lub ustawić tylko niektóre z nich dla pojedynczej zmiennej, grupy, lub grupy nadrzędnej.

Typ danych Message (odczyt/zapis)Zakres wartości NULL lub dowolny prawidłowy łańcuch.Przykład(y) Wartość tego pola jest dołączona do alarmu, ale TYLKO w przypadku, jeśli

zmienna została ustawiona na przykład przez skrypt lub komendę POKE.

Tag04.AlarmUserDefStr = "Joe";

Powyższy przykład korzysta ze stałej wartości. Jednakże, możliwe jest użycie skryptów QuickScript do skopiowania wartości innej zmiennej do dowolnego z pól definiowanych przez użytkownika. Można wykorzystać również PtAcc do ustawiania lub sprawdzania pól, lub wykorzystać InTouch jako serwer I/O aby otrzymywać lub ustawiać wartości. Kiedy zawiadomienie o alarmie jest przesyłane do Systemu Alarmowania Rozproszonego, przeważają ustawienia najniższego poziomu. Oznacza to, że jeżeli zmienna .AlarmUserDefStr ma przypisaną jakąś wartość, rekord alarmu powinien być wyświetlany przy użyciu tego ustawienia. Jednakże, jeżeli zmienna nie ma przypisanej wartości, program WindowViewer sprawdzi, czy grupa zmiennych ma przypisaną wartość, sprawdzanie będzie kontynuowane do momentu osiągnięcia grupy położonej najwyżej - $System.Należy zwrócić uwagę, że, hierarchiczne przeszukiwanie jest wykonywane niezależnie dla każdego elementu. Dlatego też, jeśli zmienna posiada przypisanie dla .AlarmUserDefNum1, ale nie posiada przypisania dla .AlarmUserDefStr, ale jej grupa nadrzędna posiada przypisanie dla .AlarmUserDefStr, te przypisanie będzie wykorzystane w rekordzie alarmu.

Patrz również .AlarmUserDefNum1, .AlarmUserDefNum2

Opis funkcji, pól i zmiennych systemowych

96 Rozdział 2

.AlarmValDeadband

.AlarmValue

Pole to służy do zmiany i monitorowania procentowej strefy nieczułości dla alarmu związanego z przekroczeniem progu wartości zmiennej.

Kategoria alarmySposób użycia Zmienna. AlarmValDeadband

Parametr Opis

Zmienna Dowolna zmienna typu Integer lub Real, lub zmienna typu Indirect Analog.

Uwagi Zaznaczenie opcji Zachowaj param. na liście zmiennych powoduje automatyczne zapisywanie zmian wartości tego pola za pomocą połączeń animacyjnych lub skryptów programu WindowViewer.

Typ danych Analog (odczyt/zapis)Zakres wartości Musi mieścić się w zdefiniowanym dla danej zmiennej zakresie wartości.Przykład(y) Poniższa instrukcja ustawia procentową strefę nieczułości dla zmiennej Tag1

na wartość 25:

Tag1.AlarmValDeadband=25;

Patrz również .AlarmDevDeadband

Zwraca wartość alarmu dla zmiennej związanej z wybranym alarmem. Alarm musi być wybrany przez kliknięcie na wyświetlanym Obiekcie Alarmu Rozproszonego.

Kategoria alarmySposób użycia [ErrorNumber=]GetPropertyM(" NazwaObiektu.AlarmValue ",

Zmienna);

Parametr Opis

NazwaObiektu Nazwa obiektu alarmów rozproszonych Przykładowo, AlmObj_1.

Zmienna Dowolna zmienna tekstowa (Message).Typ danych Message (tylko odczyt)Przykład(y) GetPropertyM("AlmObj_1.AlarmValue", almValue);

Gdzie AlmObj_1 jest nazwą obiektu alarmu rozproszonego, almValue jest zmienną typu Memory Message zawierającą wartość alarmu zmiennej powiązanej z wybranym alarmem.

Przy wykorzystaniu w przycisku akcji, po naciśnięciu przycisku przez operatora, instrukcja ta wprowadzi wartość do pola .almValue, co można wykorzystać do wyświetlania komunikatów lub w późniejszych operacjach. Pole .almValue będzie zawierało wartość alarmu powiązaną z wybranym alarmem.

Patrz również GetPropertyM(), .AlarmAccess, .AlarmClass, .AlarmComment, .AlarmDate, .AlarmLimit, .AlarmName, .AlarmOprName, .AlarmOprNode, .AlarmPri, .AlarmProv, .AlarmState, .AlarmTime, .AlarmType

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 97

.AlarmValueCount

.AlarmValueUnAckCount

Śledzi całkowitą liczbę wartości alarmów danej zmiennej lub grupy alarmowej.

Kategoria alarmySposób użycia Zmienna. AlarmValueCount

Parametr Opis

Zmienna Dowolna zmienna typu Integer, Real lub Grupa Alarmowa.

Uwagi Zawiera ilość alarmów typy HiHi, Hi, Lo, LoLo. Zawiera ilość zarówno alarmów zatwierdzonych, jak i nie zatwierdzonych. Dla zmiennych alarmów innych niż alarmy rozszerzone ta ilość będzie zawsze równa 1. Jednakże, ilość może się zmieniać wraz ze zmianą ilości grup alarmowych.

Typ danych Integer (tylko odczyt)Zakres wartości 0 lub dowolna, dodatnia liczba całkowita (Integer).Przykład(y) AVC = Tag1.AlarmValueCount;

Gdzie Tag1 jest zmienną typu Analog, skonfigurowaną dla alarmów Integer. AVC jest również zmienną typu Analog, pobierającą całkowitą ilość wszystkich alarmów wartości istniejących w Tag1.

Patrz również .AlarmDevCount, .AlarmDevUnAckCount, .AlarmDscCount, .AlarmDscUnAckCount, .AlarmROCCount, .AlarmTotalCount, .AlarmValueUnAckCount, .AlarmROCUnAckCount, .AlarmUnAckCount

Śledzi całkowitą liczbę nie zatwierdzonych alarmów zmiany wartości w danej zmiennej lub grupie alarmowej. Zawiera ilość alarmów typy HiHi, Hi, Lo, LoLo.

Kategoria alarmySposób użycia Zmienne. AlarmValueUnAckCount

Parametr Opis

Zmienna Dowolna zmienna typu Integer, Real lub Grupa Alarmowa.

Typ danych Integer (tylko odczyt)Zakres wartości 0 lub dowolna, dodatnia liczba całkowita (Integer).Przykład(y) AVUC = Tag1.AlarmValueUnAckCount;

Gdzie Tag1 jest zmienną typu Analog, skonfigurowaną dla alarmów Integer. AVUC jest również zmienną typu Analog, pobierającą całkowitą ilość wszystkich nie zatwierdzonych alarmów wartości istniejących w Tag1.

Patrz również .AlarmDevCount, .AlarmDevUnAckCount, .AlarmDscCount, .AlarmDscUnAckCount, .AlarmROCCount, .AlarmTotalCount, .AlarmValueCount, .AlarmROCUnAckCount, .AlarmUnAckCount

Opis funkcji, pól i zmiennych systemowych

98 Rozdział 2

.CaptionPole to definiuje informację, która ma zostać wyświetlona jako opis pola wyboru.

Kategoria obiekty sterujące WindowsSposób użycia [ErrorNumber=]GetPropertyM (" NazwaObiektu. Caption ",

Zmienna);

[ErrorNumber=]GetPropertyM (" NazwaObiektu. Caption ","Tekst");

Parametr Opis

NazwaObiektu Nazwa wizarda Na przykład, ChkBox_4.Zmienna Zmienna tekstowa do przechowywania żądanej

właściwości."Message" Tekst komunikatu ujęty w cudzysłowy.

Uwagi Pole to jest zapisywane/odczytywane zarówno w czasie edycji, jak i w czasie pracy aplikacji.

Typ danych Message (odczyt/zapis)Zastosowanie Pola wyboru.Przykład Zamieszczona poniżej instrukcja ustawia pole .Caption obiektu

"CheckBox_1" na wartość "Blue Paint Option".

SetPropertyM( "CheckBox_1.Caption","Blue Paint Option" );

Patrz również GetPropertyM(), SetPropertyM()

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 99

.ChartLengthPole to definiuje długość (w jednostkach czasu) wykresu trendu historycznego.

Kategoria dane historyczneSposób użycia Zmienna. ChartLength

Parametr Opis

Zmienna Dowolna zmienna typu Hist Trend.Uwagi Pole to, przeznaczone do odczytu i zapisu, jest używane do zmiany (lub

weryfikacji) długości okna wykresu trendu historycznego. Wartość tego parametru jest wyrażona w sekundach. Długość definiowana jest jako okres czasu wyświetlany na wykresie trendu historycznego. Dokładniej ujmując, wzór na obliczenie długości wykresu trendu historycznego ma następującą postać:

ChartLength=(Data/Czas prawego ko ńca wykresu) - (Data/Czas lewego ko ńca wykresu);

Ponieważ parametry Data/ czas wyrażone są w sekundach które upłynęły od 1/1/70, wynikiem obliczeń jest "liczba sekund wyświetlanych pomiędzy lewą a prawą krawędzią wykresu".

Zawsze przy dodawaniu lub odejmowaniu wartości od pola .ChartLength należy pamiętać, że jego wartość wyrażona jest w sekundach. Zatem, jeżeli należy odjąć "2 godziny" od bieżącej wartości pola .ChartLength, należy wcześniej zamienić "2 godziny" na liczbę sekund. Przykładowo:

(2 godziny ) * (60 minut/ godzinę) * (60 sekund/ minutę) = 7200 sekund.Typ danych Integer (odczyt/zapis)Zakres wartości Dowolna dodatnia liczba całkowita.Przykład(y) Zamieszczone poniżej wyrażenie ustawia długość wykresu na 1 godzinę:

HtTagname.ChartLength=3600 {60 minut * 60 sekund/ minut ę};

Przedstawione poniżej wyrażenie powoduje przewinięcie wykresu w lewo o połowę:

HtTagname.ChartStart=HtTagname.ChartStart -HtTagname.ChartLength / 2;

To wyrażenie z kolei, powoduje przewinięcie wykresu w lewo o 10%:

HtTagname.ChartStart=HtTagname.ChartStart - (.10 * HtTagname.ChartLength);

Patrz również .ChartStart

Opis funkcji, pól i zmiennych systemowych

100 Rozdział 2

.ChartStart

.Comment

Pole to definiuje datę i czas początku wykresu trendu historycznego.Kategoria dane historyczneSposób użycia Zmienna. ChartStart

Parametr Opis

Zmienna Dowolna zmienna typu Hist Trend.Uwagi Pole to przeznaczone do odczytu i zapisu używane jest do zmiany (lub

weryfikacji) daty i czasu początku (lewej krawędzi) okna wykresu trendu historycznego. Pole .ChartStart zawiera liczbę sekund od 0:00 1 stycznia 1970 i odpowiada prawemu krańcowi wykresu trendu historycznego.

Typ danych Integer (odczyt/zapis)Zakres wartości Dowolna dodatnia liczba całkowita.Przykład(y) Poniższe wyrażenie przesuwa początek wykresu w prawo, o 1 minutę:

HtTagname.ChartStart=HtTagname.ChartStart + 60;

Patrz również .ChartLength

Pole to zawiera komentarz zmiennej definiowany na liście zmiennych.Kategoria zmiennaSposób użycia Zmienna. Comment

Parametr Opis

Zmienna Dowolna zmienna.Uwagi Chociaż pole to w programie WindowMaker przeznaczone jest do odczytu,

jego wartość może zostać zmieniona w programie WindowViewer (wyłącznie w pamięci). Po zamknięciu programu WindowViewer i ponownym uruchomieniu, przywracana jest stara wartość pola komentarza (Comment). Pole to jest używane przez system alarmowania rozproszonego do odczytu komentarzy dla alarmów.

Typ danych Message (tylko odczyt)Zakres wartości Dowolny łańcuch znaków zawierający od 1 do 50 znaków. Porównać z

zamieszczoną poniżej uwagą odnośnie dopuszczalnej liczby znaków.

Uwaga Pole Comment zmiennej, może zostać zmienione wyłącznie z poziomu listy zmiennych. Wprowadzenie do pola .Comment nowej wartości w trakcie działania aplikacji nie zmienia wartości na liście zmiennych.

Przykład(y) W podanym poniżej wyrażeniu tworzony jest łańcuch znaków (wartość zmiennej tekstowej) zawierający nazwę zmiennej, oraz wartość wprowadzoną w polu .Comment tej zmiennej:

OperatorMessage=MyTag.Name+" komentarz: "+MyTag.Comment;

Uwaga Wartość tego pola zapisywana jest do bazy danych pamiętanej w trakcie pracy aplikacji. Nie jest ona zapisywana do Listy zmiennych.

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 101

.DevTarget

.DisplayMode

Pole to służy do monitorowania i/lub zmiany wartości docelowej (od której jest obliczane odchylenie) dla "małego" (Minor Deviation) i "dużego" (Major Deviation) alarmu odchyleniowego.

Kategoria alarmySposób użycia Zmienna. DevTarget

Parametr Opis

Zmienna Dowolna zmienna typu Integer lub Real, lub zmienna typu Indirect Analog.

Uwagi Zaznaczenie opcji Zachowaj param. na liście zmiennych powoduje automatyczne zapisywanie zmian wartości tego pola przez połączenia animacyjne lub skrypty programu WindowViewer.

Typ danych Analog (odczyt/zapis)Zakres wartości Musi mieścić się w zdefiniowanym dla danej zmiennej zakresie wartości.Przykład(y) Przykładowa instrukcja zamieszczona poniżej zmienia wartość pola

.DevTarget zmiennej MyTag na 500.

MyTag.DevTarget=500;

Patrz również .AckDev, .AlarmDev, .AlarmMajDevDisabled, .AlarmMajDevEnabled, .AlarmMajDevInhibitor, .MajorDevSet, .MajorDevStatus

Pole to określa sposób wyświetlania wartości na wykresie trendu historycznego.

Kategoria dane historyczneSposób użycia Zmienna. DisplayMode

Parametr Opis

Zmienna Dowolna zmienna typu Hist Trend.Typ danych Analog (odczyt/zapis)Zakres wartości 1 = Wyświetlanie wartości min/max dla każdego okresu próbkowania (tryb

domyślny).2 = Wyświetlanie wartości średniej dla każdego okresu próbkowania na tle rozrzutu wartości.3 = Wyświetlanie wartości średniej dla każdego okresu próbkowania na tle wykresu słupkowego.

Przykład(y) Zamieszczone poniżej wyrażenie powoduje wyświetlanie trendu historycznego powiązanego ze zmienną MyHistTrendTag w formie wykresu słupkowego.

MyHistTrendTag.DisplayMode=3;

Patrz również .ChartLength, .ChartStart

Opis funkcji, pól i zmiennych systemowych

102 Rozdział 2

.EnabledPole to określa, czy obiekt sterujący może reagować na zdarzenia wygenerowane przez użytkownika.

Kategoria obiekty sterujące WindowsSposób użycia [ErrorNumber=] GetPropertyD(" NazwaObiektu. Enabled ",

Zmienna);

[ErrorNumber=] SetPropertyD(" NazwaObiektu. Enabled ",Discrete);

Parametr Opis

NazwaObiektu Nazwa wizarda Na przykład, ChkBox_4.Zmienna Zmienna typu Discrete do przechowywania żądanej

właściwości.Discrete Wartość dyskretna.

0 = Obiekt sterujący jest nieaktywny1 = Obiekt sterujący jest aktywnylub,Zmienna dyskretna przechowująca wartość do zapisu w momencie wykonywania funkcji.

Uwagi Pole to jest zapisywane/odczytywane zarówno w czasie edycji, jak i w czasie pracy aplikacji.

Typ danych Discrete (odczyt/zapis)Zastosowanie Pola tekstowe , pola list , listy rozwijane , pola wyboru i pola wyboru

wykluczającego .Przykład(y) Zamieszczona poniżej instrukcja dezaktywuje obiekt o nazwie: "ListBox_1."

SetPropertyD( "ListBox_1.Enabled",0 );

Patrz również GetPropertyD(), SetPropertyD()

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 103

.EngUnits

.Freeze

Pole EngUnits umożliwia użytkownikowi dostęp do jednostek inżynierskich zmiennych typu Analog, zgodnie z ich definicją wprowadzoną na liście zmiennych.

Kategoria zmiennaSposób użycia Zmienna.EngUnits

Parametr Opis

Zmienna Dowolna zmienna typu Integer lub Real, lub zmienna typu Indirect Analog.

Uwagi Pole to przyjmuje wartości typu tekstowego i nie ma wpływu na skalowanie, konwersję czy format wartości zmiennej.

Typ danych Message (odczyt/zapis)

Uwaga Wartości wpisane do tego pola nie są trwale zachowywane.Zakres wartości Dowolny łańcuch znaków zawierający od 0 do 31 znaków.Przykład(y) IF Temperature.EngUnits == "Celsius" THEN

CALL TempConvert(Temperature); {Funkcja QuickFunction, która mo że by ć u żyta do konwersji stopni Celsjusza na Fahrenheita}ENDIF;

Patrz również .MinEU, .MaxEU, .MaxRange, .MinRange, .MinRaw, .MaxRaw, .RawValue

Odczyt/zapis statusu zamrożenia wyświetlania w obiekcie alarmów rozproszonych.

Kategoria alarmySposób użycia [ErrorNumber=]GetPropertyD(“ NazwaObiektu. Freeze ”, Zmienna)

[ErrorNumber=]SetPropertyD(“ NazwaObiektu. Freeze ”, Zmienna)

Parametr Opis

NazwaObiektu Nazwa obiektu alarmów rozproszonych Przykładowo, AlmObj_1.

Zmienna Zmienna typu Discrete, w której zapisywana jest wartość pola podczas wykonywania funkcji.

Uwagi Pole to jest przeznaczone do zapisu i odczytu zawierające lub zmieniające status zamrożenia wyświetlania Obiektu Alarmu Rozproszonego.

Typ danych Discrete (odczyt/zapis)Zakres wartości 0 = Zamrożenie wyłączone (OFF)

1 = Zamrożenie włączone (ON)Przykład(y) Instrukcja zamieszczona poniżej ustawia właściwość Freeze dla

“AlmObj_1” ze zmiennej typu Discrete AlmFreeze.

SetPropertyD(“AlmObj_1.Freeze”,AlmFreeze);

Patrz również GetPropertyD(), SetPropertyD()

Opis funkcji, pól i zmiennych systemowych

104 Rozdział 2

.HiHiLimit

.HiHiSet

Pole to służy do monitorowania i/lub zmiany pierwszej górnej wartości progowej HiHi dla alarmu przekroczenia wartości.

Kategoria alarmySposób użycia Zmienna. HiHiLimit

Parametr Opis

Zmienna Dowolna zmienna typu Integer lub Real, lub zmienna typu Indirect Analog.

Uwagi Zaznaczenie opcji Zachowaj param. na liście zmiennych powoduje automatyczne zapisywanie zmian wartości tego pola przez połączenia animacyjne lub skrypty programu WindowViewer.

Typ danych Analog (odczyt/zapis)Zakres wartości Musi mieścić się w zdefiniowanym dla danej zmiennej zakresie wartości.Przykład(y) Przykładowa instrukcja zamieszczona poniżej zwiększa wartość pola

.HiHiLimit (wartość progowa alarmu) zmiennej MyTag o 5.

MyTag.HiHiLimit=MyTag.HiHiLimit + 5;

Patrz również .Alarm, .AlarmValue, .Ack, .HiHiStatus, .HiHiSet, .AlarmDisabled, .AlarmEnabled, .AlarmHiHiDisabled, .AlarmHiHiEnabled, .AlarmHiHiInhibitor

Zwraca wartość 0 (false) lub 1 (true) w zależności od tego, czy limit HiHi dla warunków alarmowania został ustawiony dla zmiennej typu Analog.

Kategoria alarmySposób użycia Zmienna. HiHiSet

Parametr Opis

Zmienna Dowolna zmienna typu AnalogUwagi Pole to może być użyte dla zmiennych Integer lub Real. Typ danych DiscreteZakres wartości 1 (true) lub 0 (false)Przykład(y) Przykładowa instrukcja zamieszczona poniżej może być wykorzystana w

analogowym połączeniu wyświetlającym do ustalenia, czy limit HiHi dla alarmu jest przypisany do zmiennej MyTag:

MyTag.HiHiSet 5;

{Kiedy zwrócone zostanie 0, limit nie jest ustawiony ; je żeli zwrócone zostanie 1, limit jest ustawiony.}

Patrz również .Alarm, .AlarmValue, .Ack, .HiHiStatus, .HiHiLimit, .AlarmDisabled, .AlarmEnabled, .AlarmHiHiDisabled, .AlarmHiHiEnabled, .AlarmHiHiInhibitor

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 105

.HiHiStatus

.HiLimit

Pole to określa, czy wystąpił alarm typu HiHi.Kategoria alarmySposób użycia Zmienna. HiHiStatus

Parametr Opis

Zmienna Dowolna zmienna typu Integer lub Real, lub zmienna typu Indirect Analog.

Uwagi Wartość tego pola przeznaczonego wyłącznie do odczytu jest zwykle równa 0, w przypadku wystąpienia alarmu progowego typu HiHi dla zmiennej z którą pole to jest skojarzone, wartość pola zostaje zmieniona przez system na 1. Pole to ma wartość równą 1 do czasu, gdy zniknie przyczyna alarmu. Pole to jest często używane w połączeniu z polami .Alarm oraz .Ack, w celu określenia dokładnej przyczyny generowania alarmu dla danej zmiennej.

Typ danych Discrete (tylko odczyt)Zakres wartości 0 = Stan alarmowy nie występuje

1 = Stan alarmowy występujePrzykład(y) Wyrażenia zawarte w poniższej instrukcji IF-THEN będą wykonywane, gdy

pole .HiHiStatus (alarm progowy HiHi) dla zmiennej MyTag będzie miało wartość ustawioną na 1.

IF (MyTag.HiHiStatus == 1) THENOperatorMessage="MyTag has gone into HiHi Alarm";

ENDIF;

Patrz również .Alarm, .AlarmValue, .Ack, .HiHiLimit, .HiHiSet, .AlarmDisabled, .AlarmEnabled, .AlarmHiHiDisabled, .AlarmHiHiEnabled, .AlarmHiHiInhibitor

Pole to służy do monitorowania i/lub zmiany pierwszej górnej wartości progowej High dla alarmu przekroczenia wartości.

Kategoria alarmySposób użycia Zmienna. HiLimit

Parametr Opis

Zmienna Dowolna zmienna typu AnalogUwagi Zaznaczenie opcji Zachowaj param. na liście zmiennych powoduje

automatyczne zapisywanie zmian wartości tego pola przez połączenia animacyjne lub skrypty programu WindowViewer.

Typ danych Analog (odczyt/zapis)Zakres wartości Musi mieścić się w zdefiniowanym dla danej zmiennej zakresie wartości.Przykład(y) Temperature.HiLimit = 212;

Patrz również .Alarm, .AlarmValue, .Ack, .HiStatus, .HiSet, .AlarmDisabled, .AlarmEnabled, .AlarmHiDisabled, .AlarmHiEnabled, .AlarmHiInhibitor

Opis funkcji, pól i zmiennych systemowych

106 Rozdział 2

.HiSet

.HiStatus

Zwraca wartość 0 (false) lub 1 (true) w zależności od tego, czy limit High został ustawiony dla zmiennej typu Analog.

Kategoria alarmySposób użycia Zmienna. HiSet

Parametr Opis

Zmienna Dowolna zmienna typu AnalogUwagi Pole to może być użyte dla zmiennych Integer lub Real.Typ danych DiscreteZakres wartości 1 (true) lub 0 (false)Przykład(y) Przykładowa instrukcja zamieszczona poniżej może być wykorzystana w

analogowym połączeniu wyświetlającym do ustalenia, czy limit High dla alarmu jest przypisany do zmiennej MyTag:MyTag.HiSet;{Kiedy zwrócone zostanie 0, limit nie jest ustawiony ; je żeli zwrócone zostanie 1, limit jest ustawiony.}

Patrz również .Alarm, .AlarmValue, .Ack, .HiStatus, .HiLimit, .AlarmDisabled, .AlarmEnabled, .AlarmHiDisabled, .AlarmHiEnabled, .AlarmHiInhibitor

Pole to określa, czy w systemie występuje alarm progowy High.Kategoria alarmySposób użycia Zmienna. HiStatus

Parametr Opis

Zmienna Dowolna zmienna typu Integer lub Real, lub zmienna typu Indirect Analog.

Uwagi Wartość tego pola przeznaczonego wyłącznie do odczytu jest zwykle równa 0, w przypadku wystąpienia alarmu progowego typu High dla zmiennej z którą pole to jest skojarzone, wartość pola zostaje zmieniona przez system na 1. Pole to ma wartość równą 1 do czasu, gdy zniknie przyczyna alarmu. Pole to jest często używane w połączeniu z polami .Alarm oraz .Ack, w celu określenia dokładnej przyczyny generowania alarmu dla danej zmiennej.

Typ danych Discrete (tylko odczyt)Zakres wartości 0 = Stan alarmowy nie występuje

1 = Stan alarmowy występujePrzykład(y) IF (MotorAmps.HiStatus == 1) THEN

CALL PumpShutdown( );

ENDIF;

{Funkcja QuickFunct która mo że zosta ć u żyta do wył ączenia pompy}

Patrz również .Alarm, .AlarmValue, .Ack, .HiLimit, .HiSet, .AlarmDisabled, .AlarmEnabled, .AlarmHiDisabled, .AlarmHiEnabled, .AlarmHiInhibitor

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 107

.ListChanged

.ListCount

Wskazuje, czy występują jakieś nowe alarmy lub aktualizacje dla obiektu alarmów rozproszonych

Kategoria alarmySposób użycia [ErrorNumber=]GetPropertyD(“ NazwaObiektu. ListChanged ”, Zmi

enna);

Parametr Opis

NazwaObiektu Nazwa Obiektu Alarmu Rozproszonego Przykładowo, AlmObj_1.

Zmienna Zmienna typu Discrete, w której zapisywana jest wartość pola podczas wykonywania funkcji.

Uwagi To pole tylko do odczytu zawiera informację o wystąpieniu dowolnej zmiany i konieczności aktualizacji Obiektu Alarmu Rozproszonego. Wartość tej właściwości jest automatycznie ustawiana w czasie jej odczytywania.

Typ danych Discrete (tylko odczyt)Zakres wartości 0 = brak nowych alarmów lub aktualizacji dla obiektu alarmu rozproszonego.

1 = konieczność aktualizacji obiektu wyświetlaniaPrzykład(y) Instrukcja zamieszczona poniżej zwróci do zmiennej typu Discrete o nazwie

AlmDispStat informację, czy występują jakieś nowe alarmy lub uaktualnienia dla Obiektu Alarmu Rozproszonego o nazwie “AlmObj_1”.

GetPropertyD(“AlmObj_1.ListChanged”,AlmDispStat);

Patrz również Get PropertyD()

Pole to określa liczbę elementów w polu listy lub na liście rozwijalnej.Kategoria obiekty sterujące okienSposób użycia [ErrorNumber=]GetPropertyI(" NazwaObiektu. ListCount" ,

Zmienna);

Parametr Opis

NazwaObiektu Nazwa wizarda Na przykład ListBox_4.Zmienna Zdefiniowana zmienna zawierająca liczbę

elementów na liście.Uwagi Pole to jest dostępne tylko w czasie pracy aplikacji.Typ danych Integer (tylko odczyt)Zastosowanie Listy i listy rozwijalne.Przykład(y) Zamieszczona poniżej instrukcja odczytuje liczbę elementów listy o nazwie

"ListBox_1" i zapisuje tę wartość do zmiennej typu Memory Integer o nazwie MyListBoxCount

GetPropertyI( "ListBox_1.ListCount",MyListBoxCount );

Patrz również GetPropertyI(), .ListIndex

Opis funkcji, pól i zmiennych systemowych

108 Rozdział 2

.ListIndex

.LoLimit

Pole to zawiera odpowiedni indeks (zmienną lub liczbę) wybranego elementu z listy. (Indeks jest liczbą definiującą pojedynczy element na liście). W przypadku pola listy indeks równy -1 oznacza, że żaden element nie jest wybrany. W przypadku listy rozwijalnej indeks równy -1 oznacza, że użytkownik wprowadził nowy tekst w polu wprowadzania tekstu.

Kategoria obiekty sterujące WindowsSposób użycia [ErrorNumber=]GetPropertyI(" NazwaObiektu.ListIndex" ,

Zmienna);[ErrorNumber=]SetPropertyI(" NazwaObiektu. ListIndex" ,Liczba);

Parametr Opis

NazwaObiektu Nazwa wizarda Na przykład ListBox_4.Zmienna Zdefiniowana zmienna zawierająca liczbę

elementów na liście.Liczba Liczba definiująca konkretny element z listy.

Uwagi Pole to jest dostępne tylko w czasie pracy aplikacji.Typ danych Integer (odczyt/zapis)Zastosowanie Listy i listy rozwijalne.Przykład Zamieszczona poniżej instrukcja odczytuje indeks elementu zaznaczonego na

liście o nazwie "ListBox_1" i zapisuje tę wartość do zmiennej typu Memory Integer o nazwie MyListBoxIndex.

GetPropertyI( "ListBox_1.ListIndex",MyListBoxIndex );

Patrz również GetPropertyI(), SetPropertyI(), .NewIndex, .TopIndex

Pole to służy do monitorowania i/lub zmiany pierwszej dolnej wartości progowej Low dla alarmu progowego.

Kategoria alarmySposób użycia Zmienna.LoLimit

Parametr Opis

Zmienna Dowolna zmienna typu Integer lub Real, lub zmienna typu Indirect Analog.

Uwagi Zaznaczenie opcji Zachowaj param. na liście zmiennych powoduje automatyczne zapisywanie zmian wartości tego pola przez połączenia animacyjne lub skrypty programu WindowViewer.

Typ danych Analog (odczyt/zapis)Zakres wartości Musi mieścić się w zdefiniowanym dla danej zmiennej zakresie wartości.Przykład(y) Zamieszczone poniżej wyrażenie powoduje zmniejszenie dolnej wartości

limitu alarmu progowego o 10 dla zmiennej o nazwie MyTag.MyTag.LoLimit=MyTag.LoLimit - 10;

Patrz również .Alarm, .AlarmValue, .Ack, .LoStatus, .LoSet, .AlarmDisabled, .AlarmEnabled, .AlarmLoDisabled, .AlarmLoEnabled, .AlarmLoInhibitor

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 109

.LoLoLimit

.LoSet

Pole to służy do monitorowania i/lub zmiany drugiej dolnej wartości progowej LoLo dla alarmu progowego.

Kategoria alarmySposób użycia Zmienna. LoLoLimit

Parametr Opis

Zmienna Dowolna zmienna typu Integer lub Real, lub zmienna typu Indirect Analog.

Uwagi Zaznaczenie opcji Zachowaj param. na liście zmiennych powoduje automatyczne zapisywanie zmian wartości tego pola przez połączenia animacyjne lub skrypty programu WindowViewer.

Typ danych Analog (odczyt/zapis)Zakres wartości Musi mieścić się w zdefiniowanym dla danej zmiennej zakresie wartości.Przykład(y) Zamieszczone poniżej wyrażenie powoduje zmniejszenie dolnej wartości

limitu (LoLo limit) alarmu progowego o 10 dla zmiennej o nazwie MyTag.

MyTag.LoLoLimit=MyTag.LoLoLimit - 10;

Patrz również .Alarm, .AlarmValue, .Ack, .LoLoStatus, .LoLoSet, .AlarmDisabled, .AlarmEnabled, .AlarmLoLoDisabled, .AlarmLoLoEnabled, .AlarmLoLoInhibitor

Zwraca wartość 0 (false) lub 1 (true) w zależności od tego, czy limit Low został ustawiony dla zmiennej typu Analog.

Kategoria alarmySposób użycia Zmienna. LoSet

Parametr Opis

Zmienna Dowolna zmienna typu AnalogUwagi Pole to może być użyte dla zmiennych Integer lub Real.Typ danych DiscreteZakres wartości 1 (true) lub 0 (false)Przykład(y) Przykładowa instrukcja zamieszczona poniżej może być wykorzystana w

analogowym połączeniu wyświetlającym do ustalenia, czy limit Low dla alarmu jest przypisany do zmiennej MyTag:

MyTag.LoSet;

{Kiedy zwrócone zostanie 0, limit nie jest ustawiony ; je żeli zwrócone zostanie 1, limit jest ustawiony.}

Patrz również .Alarm, .AlarmValue, .Ack, .LoStatus, .LoLimit, .AlarmDisabled, .AlarmEnabled, .AlarmLoDisabled, .AlarmLoEnabled, .AlarmLoInhibitor

Opis funkcji, pól i zmiennych systemowych

110 Rozdział 2

.LoLoSetZwraca wartość 0 (false) lub 1 (true) w zależności od tego, czy limit LoLo został ustawiony dla zmiennej typu Analog.

Kategoria alarmySposób użycia Zmienna. LoLoSet

Parametr Opis

Zmienna Dowolna zmienna typu AnalogUwagi Pole to może być użyte dla zmiennych Integer lub Real.Typ danych DiscreteZakres wartości 1 (true) lub 0 (false)Przykład(y) Przykładowa instrukcja zamieszczona poniżej może być wykorzystana w

analogowym połączeniu wyświetlającym do ustalenia, czy limit LoLo dla alarmu jest przypisany do zmiennej MyTag:

MyTag.LoLoSet;

{Kiedy zwrócone zostanie 0, limit nie jest ustawiony ; je żeli zwrócone zostanie 1, limit jest ustawiony.}

Patrz również .Alarm, .AlarmValue, .Ack, .LoLoStatus, .LoLoLimit, .AlarmDisabled, .AlarmEnabled, .AlarmLoLoDisabled, .AlarmLoLoEnabled, .AlarmLoLoInhibitor

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 111

.LoLoStatusPole to określa, czy w systemie występuje drugi dolny alarm progowy LoLoLimit.

Kategoria alarmySposób użycia Zmienna. LoLoStatus

Parametr Opis

Zmienna Dowolna zmienna typu Integer lub Real, lub zmienna typu Indirect Analog.

Uwagi Wartość tego pola przeznaczonego wyłącznie do odczytu jest zwykle równa 0, w przypadku wystąpienia alarmu progowego typu LoLo dla zmiennej z którą pole to jest skojarzone, wartość pola zostaje zmieniona przez system na 1. Pole to ma wartość równą 1 do czasu, gdy zniknie przyczyna alarmu. Pole to jest często używane w połączeniu z polami .Alarm oraz .Ack, w celu określenia dokładnej przyczyny generowania alarmu dla danej zmiennej.

Typ danych Discrete (tylko odczyt)Zakres wartości 0 = Stan alarmowy nie występuje

1 = Stan alarmowy występujePrzykład(y) Wyrażenia zawarte w poniższej instrukcji IF-THEN będą wykonywane, gdy

pole .LoLoStatus (alarm progowy LoLo) dla zmiennej MyTag będzie miało wartość ustawioną na 1.

IF (MyTag.LoLoStatus == 1) THENOperatorMessage="MyTag has gone into LoLo Alarm";

ENDIF;

Patrz również .Alarm, .AlarmValue, .Ack, .LoLoLimit, .LoLoSet, .AlarmDisabled, .AlarmEnabled, .AlarmLoLoDisabled, .AlarmLoLoEnabled, .AlarmLoLoInhibitor

Opis funkcji, pól i zmiennych systemowych

112 Rozdział 2

.LoStatus

.MajorDevPct

Pole to określa, czy w systemie występuje alarm progowy Low.Kategoria alarmySposób użycia Zmienna.LoStatus

Parametr Opis

Zmienna Dowolna zmienna typu Integer lub Real, lub zmienna typu Indirect Analog.

Uwagi Wartość tego pola przeznaczonego wyłącznie do odczytu jest zwykle równa 0, w przypadku wystąpienia alarmu progowego typu Low dla zmiennej z którą pole to jest skojarzone, wartość pola zostaje zmieniona przez system na 1. Pole to ma wartość równą 1 do czasu, gdy zniknie przyczyna alarmu. Pole to jest często używane w połączeniu z polami .Alarm oraz .Ack, w celu określenia dokładnej przyczyny generowania alarmu dla danej zmiennej.

Typ danych Discrete (tylko odczyt)Zakres wartości 0 = Stan alarmowy nie występuje

1 = Stan alarmowy występujePrzykład(y) IF (WaterLevelTank1.LoStatus == 1) THEN

PumpShutdown = 1;WaterFillValue = 1;

ENDIF;

Patrz również .Alarm, .AlarmValue, .Ack, .LoLimit, .LoSet, .AlarmDisabled, .AlarmEnabled, .AlarmLoDisabled, .AlarmLoEnabled, .AlarmLoInhibitor

Monitoruje i/lub zmienia wartość procentowego odchylenia dla alarmu. Kategoria alarmySposób użycia Zmienna. MajorDevPct

Parametr Opis

Zmienna Dowolna zmienna typu Integer lub Real, lub zmienna typu Indirect Analog.

Uwagi Zaznaczenie opcji Zachowaj param. na liście zmiennych powoduje automatyczne zapisywanie zmian wartości tego pola przez połączenia animacyjne lub skrypty programu WindowViewer.

Typ danych Real (odczyt/zapis)Zakres wartości Od 0 do 100%Przykład(y) Przykładowe wyrażenie zamieszczone poniżej zmienia wartość pola

.MajorDeviation zmiennej MyTag na 25%.

MyTag.MajorDevPct=25;

Patrz również .AckDev, .AlarmDev, .AlarmMajDevDisabled, .AlarmMajDevEnabled, .AlarmMajDevInhibitor, .MajorDevSet, .MajorDevStatus

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 113

.MajorDevSetZwraca wartość 0 (false) lub 1 (true) w zależności od tego, czy został ustawiony limit procentowy dużego odchylenia dla zmiennej typu Analog.

Kategoria alarmySposób użycia Zmienna. MajorDevSet

Parametr Opis

Zmienna Dowolna zmienna typu AnalogUwagi Pole to może być użyte dla zmiennych Integer lub Real.Typ danych DiscreteZakres wartości 1 (true) lub 0 (false)Przykład(y) Przykładowa instrukcja zamieszczona poniżej może być wykorzystana w

analogowym połączeniu wyświetlającym do ustalenia, czy limit procentowy dla alarmu typu odchyleniowy duży jest przypisany do zmiennej MyTag:

MyTag.MajorDevSet;

{Kiedy zwrócone zostanie 0, limit nie jest ustawiony ; je żeli zwrócone zostanie 1, limit jest ustawiony.}

Patrz również .AckDev, .AlarmDev, .AlarmMajDevDisabled, .AlarmMajDevEnabled, .AlarmMajDevInhibitor, .MajorDevPct, .MajorDevStatus

Opis funkcji, pól i zmiennych systemowych

114 Rozdział 2

.MajorDevStatusPole to określa, czy w systemie występuje alarm dużego odchylenia.

Kategoria alarmySposób użycia Zmienna.MajorDevStatus

Parametr Opis

Zmienna Dowolna zmienna typu Integer lub Real, lub zmienna typu Indirect Analog.

Uwagi Wartość tego pola przeznaczonego wyłącznie do odczytu jest zwykle równa 0,a w przypadku wystąpienia alarmu dla zmiennej pole powiązane z tą zmienną jest ustawiane przez system na wartość 1. Pole to ma wartość równą 1 do czasu, gdy zniknie przyczyna alarmu.

Pole to jest często używane w połączeniu z polami .Alarm oraz .Ack, w celu określenia dokładnej przyczyny generowania alarmu dla danej zmiennej.

Typ danych Discrete (tylko odczyt)Zakres wartości 0 = Stan alarmowy nie występuje

1 = Stan alarmowy występujePrzykład(y) Wyrażenia zawarte w poniższej instrukcji IF-THEN będą wykonywane, gdy

pole .MajorDevStatus (alarm odchyleniowy duży) dla zmiennej MyTag będzie miało wartość ustawioną na 1.

IF (MyTag.MajorDevStatus == 1) THENOperatorMessage="MyTag has gone into a Major Deviation Alarm";

ENDIF;

Patrz również .AckDev, .AlarmDev, .AlarmMajDevDisabled, .AlarmMajDevEnabled, .AlarmMajDevInhibitor, .MajorDevPct, .MajorDevSet

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 115

.MaxEUPole to zawiera maksymalną wartość w jednostkach inżynierskich (EU) dla danej zmiennej.

Kategoria zmiennaSposób użycia Zmienna. MaxEU

Parametr Opis

Zmienna Dowolna zmienna typu Integer lub Real, lub zmienna typu Indirect Analog.

Uwagi Wartość odczytana z programu komunikacyjnego uważana jest za surową, jeżeli została ona przysłana do programu WindowViewer po raz pierwszy. Wartości surowe mogą wymagać skalowania. Do skalowania wartości surowych przeznaczone są pola .MinEu i .MaxEu. Rozważmy typowy przykład - załóżmy, że wskaźnik poziomu cieczy dostarcza informacje do sterownika PLC. Czujnik dołączony do sterownika przesyła sygnał o wartości od 4 do 20 mA. Sterownik PLC przekształca ten sygnał (za pomocą przetwornika analogowo-cyfrowego) na wartość całkowitą z zakresu od 0 do 4096. Wartość ta zostaje przypisana do zmiennej TankTwoLevel.

Wyświetlenie wartości "surowej " (z zakresu od 0 do 4096) nie dostarcza żadnej użytecznej informacji operatorowi. Konieczne jest zatem przekształcenie tej wartości na jednostki inżynierskie. W tym celu należy prawidłowo skonfigurować pola MaxEU i MinEU, określające granice zakresu jednostek inżynierskich. W rozważanym przykładzie, wartość surowa równa 0 (z pola odczytano 4 mA) zostanie przekształcona na "0 Galonów", a wartość 4096 (z pola odczytano 20 mA) zostanie przekształcona na "100 Galonów". W celu wyświetlenia tych poprawnych wartości na ekranie należy wprowadzić następujące instrukcje:

Minimum surowe=0, Maximum surowe = 4096Minimum w jednostkach in ż.=0, Maximum w jednostkach in ż.=100

Po wprowadzeniu tych instrukcji, jeżeli wartość surowa pola będzie równa 4096, na ekranie wyświetlona zostanie liczba 100.

Typ danych Real – dla zmiennych rzeczywistych i Integer dla zmiennych całkowitych (tylko do odczytu).

Zakres wartości Zależy od typu rozważanej zmiennej.Przykład(y) Ponieważ pole to jest przeznaczone tylko do odczytu, nie można mu

przypisywać wartości. Wyświetlenie wartości .MinEU oraz .MaxEU lub wykorzystanie ich w obliczeniach jest bardzo użyteczne i może ułatwić zrozumienie operatorowi zasad konwersji wartości uzyskiwanych np. ze sterowników lub innych urządzeń.

DialogValueEntry ("IO_Point_717", IO_Point_717.MinEU, IO_Point_717.MaxEU, "Please Enter a New Value:");

Patrz również .EngUnits, .MinEU, .MaxRange, .MinRange, .MinRaw, .MaxRaw, .RawValue

Opis funkcji, pól i zmiennych systemowych

116 Rozdział 2

.MaxRangePole to określa procentową wartość zakresu jednostek inżynierskich zmiennej, który powinien być wyświetlany na trendzie dla zmiennej.

Kategoria dane historyczneSposób użycia Zmienna. MaxRange

Parametr Opis

Zmienna Dowolna zmienna typu Hist Trend.Uwagi Ponieważ wiele różnych zmiennych może być wyświetlanych na wykresach

trendów historycznych jednocześnie, podawanie dolnej i górnej granicy zakresu wyświetlanych wartości (pola .MinRange oraz .MaxRange) w jednostkach inżynierskich staje się niemożliwe, gdyż każda zmienna może mieć (i zwykle ma) zupełnie inny zakres wartości wyrażony w takich jednostkach. Dlatego też granice zakresu wyraża się jako procentową część zakresu wartości każdej zmiennej, wyrażonego w jednostkach inżynierskich. W ten sposób, niezależnie od wielkości całego zakresu dla każdej zmiennej, na trendzie historycznym wyświetlana będzie tylko zadana procentowo część zakresu wartości danej zmiennej.

Typ danych Real (odczyt/zapis)Zakres wartości Wartości limitów w polach .MaxRange i .MinRange są wartościami z

zakresu od 0 do 100. Wartości w polach .MinRange i .MaxRange są wyrażone w procentach. Wartość .MinRange musi być mniejsza od .MaxRange. Jeśli wartość wprowadzona do któregoś z tych pól będzie mniejsza niż 0, lub większa niż 100, zostanie automatycznie zmieniona na 0 lub 100. Jeżeli wartość w polu .MinRange jest większa lub równa wartości w polu .MaxRange, na wykresie nie zostaną wyświetlone żadne dane.

Przykład(y) Zamieszczone poniżej, przykładowe wyrażenie, zmienia maksymalny, procentowy zakresu trendu historycznego związanego ze zmienną o nazwie MyHistTrendTag na wartość równą 25%.

MyHistTrendTag.MaxRange=25;

Patrz również .ChartStart, .ChartLength, .DisplayMode, .EngUnits, .MinEU, .MaxEU, .MinRange, .MinRaw, .MaxRaw, .RawValue

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 117

.MaxRawPole to zawiera górną wartość graniczną dla rzeczywistej wartości surowej odczytywanej z programu komunikacyjnego przez program WindowViewer, pracujący jako klient. Wartość pola .MaxRaw określana jest na podstawie definicji maksymalnej wartości źródłowej zmiennej, podanej na liście zmiennych dla określonej zmiennej I/O. Każda zmienna o większej wartości zostaje zmniejszona do wartości tego pola.

Kategoria zmiennaSposób użycia Zmienna. MaxRaw

Parametr Opis

Zmienna Dowolna zmienna typu I/O Discrete, Indirect Discrete, I/O Integer, Memory Real, Indirect Analog, I/O Message i Indirect Message.

Uwagi Pole to przeznaczone wyłącznie do odczytu wykorzystywane jest do wyświetlania górnej wartości granicznej dla zmiennej źródłowej.

Typ danych Dowolna zmienna typu Integer lub Real (przeznaczona wyłącznie do odczytu).

Zakres wartości Dowolna zmienna analogowa.Przykład(y) Zamieszczone poniżej wyrażenie umożliwia sprawdzenie czy zmienna nie

wyszła poza zakres normalnych wartości, a więc czy jej wartość nie została obcięta.

IF ((Temp01.RawValue > Temp01.MaxRaw) OR (Temp01.RawValue Temp01.MinRaw))THENShow "Instrument Failure Window";

ENDIF;

Patrz również .EngUnits, .MinEU, .MaxEU, .MaxRange, .MinRange, .MinRaw, .RawValue

Opis funkcji, pól i zmiennych systemowych

118 Rozdział 2

.MinEUPole to zawiera minimalną wartość w jednostkach inżynierskich (EU) dla danej zmiennej.

Kategoria zmiennaSposób użycia Zmienna. MinEU

Parametr Opis

Zmienna Dowolna zmienna typu Integer i Real, lub zmienna typu Indirect Analog.

Uwagi Wartość odczytana z programu komunikacyjnego uważana jest za surową, jeżeli została ona przysłana do programu WindowViewer po raz pierwszy. Wartości surowe mogą wymagać skalowania. Do skalowania wartości surowych przeznaczone są pola .MinEu i .MaxEu. Rozważmy typowy przykład - załóżmy, że wskaźnik poziomu cieczy dostarcza informacje do sterownika PLC. Czujnik dołączony do sterownika przesyła sygnał o wartości od 4 do 20 mA. Sterownik PLC przekształca ten sygnał (za pomocą przetwornika analogowo-cyfrowego) na wartość całkowitą z zakresu od 0 do 4096. Wartość ta zostaje przypisana do zmiennej TankTwoLevel.

Wyświetlenie wartości surowej (z zakresu od 0 do 4096) nie dostarcza żadnej użytecznej informacji operatorowi. Konieczne jest zatem przekształcenie tej wartości na jednostki inżynierskie. W tym celu należy prawidłowo skonfigurować pola MaxEU i MinEU, określające granice zakresu jednostek inżynierskich. W rozważanym przykładzie, wartość surowa równa 0 (z pola odczytano 4 mA) zostanie przekształcona na "0 Galonów", a wartość 4096 (z pola odczytano 20 mA) zostanie przekształcona na "100 Galonów". W celu wyświetlenia tych poprawnych wartości na ekranie należy wprowadzić następujące instrukcje:

Minimum surowe=0, Maximum surowe = 4096Minimum w jednostkach in ż.=0, Maximum w jednostkach in ż.=100

Po wprowadzeniu tych instrukcji, jeżeli wartość surowa pola będzie równa 4096, na ekranie wyświetlona zostanie liczba 100.

Typ danych Real – dla zmiennych rzeczywistych i Integer dla zmiennych całkowitych (tylko do odczytu).

Zakres wartości Zależy od typu rozważanej zmiennej.Przykład(y) AbsoluteTagRange = (Tag.MaxEU - Tag.MinEU);

Patrz również .EngUnits, .MaxEU, .MaxRange, .MinRange, .MinRaw, .MaxRaw, .RawValue

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 119

.MinorDevPct

.MinorDevSet

Pole to służy do monitorowania i/lub zmieniania wartości małego alarmu odchyleniowego (Minor Deviation).

Kategoria alarmySposób użycia Zmienna. MinorDevPct

Parametr Opis

Zmienna Dowolna zmienna typu Integer lub Real, lub zmienna typu Indirect Analog.

Uwagi Zaznaczenie opcji Zachowaj param. na liście zmiennych powoduje automatyczne zapisywanie zmian wartości tego pola za pomocą połączeń animacyjnych lub skryptów programu WindowViewer.

Typ danych Real (odczyt/zapis)Zakres wartości Od 0 do 100%Przykład(y) Przykładowe wyrażenie zamieszczone poniżej zmienia wartość pola

.MinorDeviation zmiennej MyTag na 25%.

MyTag.MinorDevPct=25;

Patrz również .AckDev, .AlarmDev, .AlarmMinDevDisabled, .AlarmMinDevEnabled, .AlarmMinDevInhibitor, .MinorDevSet, .MinorDevStatus

Zwraca wartość 0 (false) lub 1 (true) w zależności od tego, czy został ustawiony limit procentowy dla małego alarmu odchyleniowego dla zmiennej typu Analog.

Kategoria alarmySposób użycia Zmienna. MinorDevSet

Parametr Opis

Zmienna Dowolna zmienna typu AnalogUwagi Pole to może być użyte dla zmiennych Integer lub Real.Typ danych DiscreteZakres wartości 1 (true) lub 0 (false)Przykład(y) Przykładowa instrukcja zamieszczona poniżej może być wykorzystana w

analogowym połączeniu wyświetlającym do ustalenia, czy limit procentowy dla alarmu typu Odchyleniowy Mały jest przypisany do zmiennej MyTag:

MyTag.MinorDevSet;

{Kiedy zwrócone zostanie 0, limit nie jest ustawiony ; je żeli zwrócone zostanie 1, limit jest ustawiony.}

Patrz również .AckDev, .AlarmDev, .AlarmMinDevDisabled, .AlarmMinDevEnabled, .AlarmMinDevInhibitor, .MinorDevPct, .MinorDevStatus

Opis funkcji, pól i zmiennych systemowych

120 Rozdział 2

.MinorDevStatusPole to określa, czy w systemie występuje alarm małego odchylenia wartości.

Kategoria alarmySposób użycia Zmienna. MinorDevStatus

Parametr OpisZmienna Dowolna zmienna typu Integer lub Real, lub

zmienna typu Indirect Analog.Uwagi Wartość tego pola przeznaczonego wyłącznie do odczytu jest zwykle równa

0,a w przypadku wystąpienia alarmu dla zmiennej pole powiązane z tą zmienną jest ustawiane przez system na wartość 1. Pole to ma wartość równą 1 do czasu, gdy zniknie przyczyna alarmu.

Typ danych Discrete (tylko odczyt)Zakres wartości 0 = Stan alarmowy nie występuje

1 = Stan alarmowy występujePrzykład(y) Wyrażenia zawarte w poniższej instrukcji IF-THEN będą wykonywane, gdy

pole .MinorDevStatus (alarm odchyleniowy mały) dla zmiennej MyTag będzie miało wartość ustawioną na 1.

IF (MyTag.MinorDevStatus == 1) THENOperatorMessage="MyTag has gone into a Minor Deviation Alarm";

ENDIF;

Uwagi Pole to jest często używane w połączeniu z polami .Alarm oraz .Ack, w celu określenia dokładnej przyczyny generowania alarmu dla danej zmiennej.

Patrz również .AckDev, .AlarmDev, .AlarmMinDevDisabled, .AlarmMinDevEnabled, .AlarmMinDevInhibitor, .MinorDevPct

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 121

.MinRangePole to podaje w procentach dolną granicę zakresu wartości zmiennej, która ma być wyświetlona w oknie trendu historycznego.

Kategoria dane historyczneSposób użycia Zmienna. MinRange

Parametr Opis

Zmienna Dowolna zmienna typu Hist Trend.Uwagi Ponieważ wiele różnych zmiennych może być wyświetlanych na wykresach

trendów historycznych jednocześnie, podawanie dolnej i górnej granicy zakresu wyświetlanych wartości (pola .MinRange oraz .MaxRange) w jednostkach inżynierskich staje się niemożliwe, gdyż każda zmienna może mieć (i zwykle ma) zupełnie inny zakres wartości wyrażony w takich jednostkach. Dlatego też granice zakresu wyraża się jako procentową część zakresu wartości każdej zmiennej, wyrażonego w jednostkach inżynierskich. W ten sposób, niezależnie od wielkości całego zakresu dla każdej zmiennej, na trendzie historycznym wyświetlana będzie tylko zadana procentowo część zakresu wartości danej zmiennej.

Typ danych Real (odczyt/zapis)Zakres wartości Wartości limitów w polach .MaxRange i .MinRange są wartościami z

zakresu od 0 do 100. Wartości w polach .MinRange i .MaxRange są wyrażone w procentach. Wartość .MinRange musi być mniejsza od .MaxRange. Jeśli wartość wprowadzona do któregoś z tych pól będzie mniejsza niż 0, lub większa niż 100, zostanie automatycznie zmieniona na 0 lub 100. Jeżeli wartość w polu .MinRange jest większa lub równa wartości w polu .MaxRange, na wykresie nie zostaną wyświetlone żadne dane.

Przykład(y) TotalChartHeight=MyHistTrendTag.MaxRange -MyHistTrendTag.MinRange;

Patrz również .ChartStart, .ChartLength, .DisplayMode, .EngUnits, .MinEU, .MaxEU, .MaxRange, .MinRaw, .MaxRaw, .RawValue

Opis funkcji, pól i zmiennych systemowych

122 Rozdział 2

.MinRaw

.Name

Minimalna, surowa wartość zmiennej odczytywanej z programu komunikacyjnego przez program WindowViewer pracujący jako klient. Wartość pola .MinRaw jest wprowadzana na liście zmiennych w polu Min. I/O, w czasie definiowania zmiennej typu I/O. Każdej zmienna o mniejszej wartości przypisywana będzie wartość tego pola.

Kategoria zmiennaSposób użycia Zmienna.MinRaw

Parametr Opis

Zmienna Dowolna zmienna typu I/O Discrete, Indirect Discrete, I/O Integer, Memory Real, Indirect Analog, I/O Message i Indirect Message.

Uwagi Pole to przeznaczone wyłącznie do odczytu wykorzystywane jest do wyświetlania dolnej,surowej wartości granicznej dla zmiennej.

Typ danych Dowolna zmienna typu Integer lub Real (przeznaczona wyłącznie do odczytu).

Zakres wartości Dowolna zmienna analogowa.Przykład(y) Zamieszczone poniżej wyrażenie umożliwia sprawdzenie czy zmienna nie

wyszła poza zakres normalnych wartości, a więc czy jej wartość nie została obcięta.

IF ((Temp01.RawValue > Temp01.MaxRaw) OR (Temp01.RawValue < Temp01.MinRaw)) THEN Show "Instrument Failure Window"; ENDIF;

Patrz również .EngUnits, .MinEU, .MaxEU, .MaxRange, .MinRange, .MaxRaw, .RawValue

Pole to zawiera nazwę zmiennej w postaci łańcucha znaków.Kategoria zmiennaSposób użycia Zmienna. Name

Parametr Opis

Zmienna Dowolny typ zmiennej.Typ danych Message (odczyt/zapis)Zakres wartości Wartość pola .Name może być zmieniana wyłącznie w przypadku zmiennych

typu pośredniego, a więc zmiennych typu Alarm Group i TagID. W czasie przypisywania wartości do tego pola należy pamiętać o obowiązującej konwencji nazewnictwa, włączając w to zakres dopuszczalnych znaków, oraz fakt, że pierwszym znakiem musi być litera alfabetu.

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 123

Uwagi Pole to przeznaczone jest wyłącznie do odczytu w przypadku następujących typów zmiennych: Hist Trend, dowolne zmienne Memory, dowolne zmienne I/O. Pole to przeznaczone jest do odczytu/ zapisu w przypadku następujących typów zmiennych: Tag ID oraz dowolne zmienne typu pośredniego (Indirect).Jeżeli dla danej zmiennej pole to przeznaczone jest wyłącznie do odczytu, może być wykorzystane do podawania nazwy zmiennej, bez korzystania ze znaków cudzysłowu np. wyrażenie MyTag.Name jest równoważne wyrażeniu „MyTag” Jest to bardzo korzystne przy wyborze polecenia Uaktualnij liczbę wystąpień zmiennych z menu Specjalne w programie WindowMaker, lub przy wykonywaniu sprawdzania integralności dla użytych zmiennych. Zmienne aktualnie używane, znajdujące się w cudzysłowie, nie są „widoczne”. Z tego powodu, jeżeli nazwa zmiennej ujęta zostanie w cudzysłów, a następnie wybrane zostaną polecenia Uaktualnij liczbę wystąpień zmiennych i Usuń nieużywane zmienne z menu Specjalne, zmienna zostanie usunięta, ponieważ nie znalezione zostaną miejsca jej wykorzystywania. W celu "odwołania" uprzednio przypisanej wartości do zmiennej typu pośredniego można wprowadzić "".

W przypadku zmiennych, dla których wartość tego pola może być zarówno odczytywana jak i zmieniana, możliwości wykorzystania są jeszcze większe. Pole to pozwala na zamianę zmiennych typu pośredniego. Jeżeli pole .Name zmiennej typu pośredniego zostanie przypisane do nazwy innej zmiennej, oraz jeżeli obydwie zmienne są tego samego typu, zmienna pośrednia w rzeczywistości staje się inną zmienną, i może być używana we wszystkich miejscach programu InTouch, w których wykorzystywana była oryginalna zmienna.

Przykład(y) Instrukcja zamieszczona poniżej wykorzystuje pole .Name przeznaczone wyłącznie do odczytu i pole komentarza tej samej zmiennej w celu utworzenia komunikatu dla operatora:

MyMessageTag="The tagnamenamed "+ MyTag.Name+ "has a comment of "+ MyTag.Comment";

Opis zastosowania: Należy utworzyć okno graficzne do przedstawiania trzech parametrów jednego ze 100 odwiertów naftowych. Zamieszczony poniżej QuickScript związany ze zmianą wartości pozwala na uaktualnianie informacji wyświetlanych w oknie graficznym, stosownie do odwiertu naftowego wybranego przez operatora. W skrypcie związanym z przyciskiem stosowana jest zmienna o nazwie OilWellNumber.

IndOilWellPump.Name="OilWellPump"+Text(OilWellNumber,"#");

IndOilWellTEP.Name="OilWellTemp"+Text(OilWellNumber, "#");

IndOilWellPressure.Name = "OilWellPressure" + Text(OilWellNumber, "#");

W celu wykonania skryptu należy utworzyć przycisk z połączeniem dotykowym do wprowadzania wartości analogowej ze zmienną OilWellNumber. Wówczas, jeżeli w trakcie wykonywania aplikacji operator kliknie ten przycisk a następnie wprowadzi numer odwiertu, wykonany zostanie powyższy skrypt.

Opis funkcji, pól i zmiennych systemowych

124 Rozdział 2

.NewIndex

.NextPage

Zwraca liczbę całkowitą (zmienną) będącą indeksem elementu, ostatnio dodanego do listy za pomocą funkcji wcAddItem() lub wcInsertItem().

Kategoria obiekty sterujące WindowsSposób użycia [ErrorNumber=]GetPropertyI(" NazwaObiektu. NewIndex ", Zmienn

a);

Parametr Opis

NazwaObiektu Nazwa wizarda Na przykład ListBox_4.Zmienna Zmienna typu całkowitego zawierająca indeks

elementu ostatnio dodanego do pola listy lub listy rozwijalnej. W przypadku pustych list pole = -1.

Uwagi Pole to jest dostępne tylko w czasie pracy aplikacji.Typ danych Integer (tylko odczyt)Zastosowanie Listy i listy rozwijalne.Przykład Zamieszczona poniżej instrukcja odczytuje indeks elementu ostatnio

dodanego do listy o nazwie "ListBox_1" i przypisuje tę wartość do zmiennej typu Memory Integer o nazwie "NewItemIndex."GetPropertyI("ListBox_1.NewIndex",NewItemIndex);

Patrz również GetPropertyI(), wcAddItem(), wcInsertItem(), .ListIndex, .TopIndex

Pole to powoduje przewinięcie obiektu wyświetlania alarmu o jedną stronę ekranu w dół, w momencie , gdy wartość pola ulega zmianie z 1 na 0.

Kategoria alarmySposób użycia [ErrorNumber=]GetPropertyD(“ NazwaObiektu. NextPage ”, Zmienn

a);[ErrorNumber=]SetPropertyD(" NazwaObiektu. NextPage ", Wartość);

Parametr Opis

NazwaObiektu Nazwa obiektu alarmów rozproszonych Przykładowo, AlmObj_1.

Zmienna Nazwa zmiennej dyskretnej wykorzystywanej do pamiętania wartości właściwości w momencie gdy funkcja jest realizowana, stosowana jako „Tagname" lub Tagname.Name.

Wartość Wartość dyskretna, lub zmienna typu Discrete przechowująca wartość do zapisu w momencie wykonywania funkcji.

Uwagi Zawsze, gdy wartość tego pola ulega zmianie z 1 na 0, obiekt do wyświetlania alarmów wyświetli następną stronę na ekranie. Po wyświetleniu tej strony wartość zmiennej zostaje automatycznie ustawiona na 1, chyba że osiągnięty został początek listy. W tym przypadku wartośćwynosi 0.

Typ danych Discrete (odczyt/zapis)Patrz również GetPropertyD(), SetPropertyD(), .PrevPage, .PageNum, .TotalPages

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 125

.NormalWartość pola .Normal jest równa 1, jeżeli zmienna nie jest w stanie alarmowym.

Kategoria alarmySposób użycia Zmienna. Normal

Parametr Opis

Zmienna Dowolna zmienna typu Discrete, Integer lub Real, albo zmienna typu Indirect Analog.

Uwagi Pole to używane jest w skryptach lub połączeniach animacyjnych do zasygnalizowania, że dana zmienna znajduje się w stanie "normalnym", tzn. nie jest aktywny żaden alarm dla tej zmiennej. Jeśli dla zmiennej tej aktywny jest jeden lub więcej alarmów, wartość tego pola jest ustawiana na 0.

Typ danych Discrete (tylko odczyt)Zakres wartości 0 = Aktywny jest jeden lub więcej alarmów dla zmiennej.

1 = Brak aktywnych alarmów dla danej zmiennej (wartość domyślna).Przykład(y) Wyrażenia zawarte w poniższej instrukcji IF-THEN będą wykonywane,

jeżeli nie są aktywne żadne alarmy powiązane ze zmienną o nazwie Tag1. Jeżeli dla zmiennej o nazwie Tag1 aktywny będzie jeden lub więcej alarmów, wykonywana będzie część "ELSE" instrukcji:

IF (Tag1.Normal==1) THENMyOperatorMessage="Tag1 is OK - No alarms associatedwith it";

ELSEMyOperatorMessage="Tag1 has one or more alarms active!";

ENDIF;

Patrz również .Alarm, .AlarmDev, .AlarmROC, .AlarmValue

Opis funkcji, pól i zmiennych systemowych

126 Rozdział 2

.NumAlarms

.OffMsg

Pole to zawiera informację o ilości alarmów w Obiekcie Alarmu Rozproszonego.

Kategoria alarmySposób użycia [ErrorNumber=]GetPropertyI(" NazwaObiektu. NumAlarms ", Zmien

na);

Parametr Opis

NazwaObiektu Nazwa obiektu alarmów rozproszonych Przykładowo, AlmObj_1.

Zmienna Zmienna typu Integer, przechowująca wartość właściwości w momencie realizacji funkcji.

Uwagi Pole to przeznaczone jest tylko do odczytu i zawiera bieżącą liczbę alarmów zarejestrowanych w alarmowaniu rozproszonym przez obiekt alarmowy o podanej nazwie. Liczba ta obejmuje nie tylko alarmy wyświetlane, ale wszystkie alarmy zarejestrowane.

Typ danych Integer (tylko odczyt)Przykład(y) Instrukcja podana poniżej zwraca aktualną ilość alarmów obiektu

alarmowego AlmObj_1 do zmiennej typu Integer AlarmCount.

GetPropertyI("AlmObj_1.NumAlarms",AlarmCount);

Patrz również GetPropertyI()

Pole .OffMsg umożliwia użytkownikowi odwoływanie się do pola tekstu wyświetlanego przy stanie 0 dla zmiennej dyskretnej.

Kategoria zmiennaSposób użycia Zmienna.OffMsg

Parametr Opis

Zmienna Dowolna zmienna typu Discrete.Typ danych Message (odczyt/zapis) Wartości wpisane do tego pola nie są zachowywane.Zakres wartości Dowolny łańcuch znaków zawierający od 0 do 15 znaków.Przykład(y) Jeżeli zmienna MyDiscrete ma wartość 0, zamieszczona poniżej instrukcja

spowoduje przypisanie łańcucha znaków zawartego w polu OffMsg zmiennej MyDiscrete na liście zmiennych do zmiennej StateMessage.

StateMessage=Dtext (MyDiscrete, MyDiscrete.OnMsg, MyDiscrete.OffMsg);

Patrz również .OnMsg

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 127

.OnMsg

.PageNum

Pole .OnMsg umożliwia użytkownikowi odwoływanie się do pola tekstu wyświetlanego przy stanie 1 dla zmiennej dyskretnej.

Kategoria zmiennaSposób użycia Zmienna. OnMsg

Parametr Opis

Zmienna Dowolna zmienna typu Discrete.Typ danych Message (odczyt/zapis) Wartości wpisane do tego pola nie są zachowywane.Zakres wartości Dowolny łańcuch znaków zawierający od 0 do 15 znaków.Przykład(y) IF IndAnalog.OnMsg == "Running" THEN

TypeOfTag = "IndAnalog was assigned a Motor Starter";

ENDIF;

Patrz również .OffMsg

Pole to zawiera numer strony aktualnie wyświetlanej w obiekcie alarmowym.Kategoria alarmySposób użycia [ErrorNumber=]GetPropertyI(" NazwaObiektu. PageNum", Zmienna

);

Parametr Opis

NazwaObiektu Nazwa obiektu alarmów rozproszonych Przykładowo, AlmObj_1.

Zmienna Zmienna typu Integer, przechowująca wartość właściwości w momencie realizacji funkcji.

Uwagi Pole to przeznaczone jest tylko do odczytu i zawiera numer strony aktualnie wyświetlanej w obiekcie wyświetlania alarmów rozproszonych o określonej nazwie.

Typ danych Integer (tylko odczyt)Przykład(y) Instrukcja podana poniżej zwraca aktualny numer strony wykorzystywanej

przez obiekt alarmu rozproszonego AlmObj_1 do zmiennej typu Integer AlarmPage.

GetPropertyI("AlmObj_1.PageNum",AlarmPage);

Patrz również GetPropertyI(), .NextPage, .PrevPage, .TotalPages

Opis funkcji, pól i zmiennych systemowych

128 Rozdział 2

.Pen1-.Pen8Pola te określają przyporządkowanie zmiennych do poszczególnych pisaków na wykresie trendów historycznych.

Kategoria dane historyczneSposób użycia Zmienna{.Pen1 | .Pen2 | .Pen3 | .Pen4 | .Pen5 | .Pen6 |

.Pen7 | .Pen8};

Parametr Opis

Zmienna Dowolna zmienna typu Hist Trend.Uwagi Ze względu na skomplikowane zasady wykorzystania pola .PenX zaleca się,

o ile to jest możliwe, stosowanie funkcji HTSetPenName i HTGetPenName.

Uwaga Do pola .PenX można przypisywać wyłącznie zmienne lokalne. Nie można korzystać ze składni, w której określane jest źródło zmiennej. Składnia, w której podawane jest źródło zmiennej, może być stosowana wyłącznie w przypadku funkcji HTSetPenName.

Dobrą metodą nauki korzystania z funkcji operujących na tych polach jest analiza umieszczonego na ekranie, a następnie rozdzielonego na elementy składowe wizarda trendów historycznych. Analiza taka umożliwia zrozumienie w jaki sposób pola te powinny być wykorzystywane.

Typ danych TagID (odczyt/zapis)Zakres wartości Typem danych obowiązującym w tym polu jest typ TagID. Oznacza to, że do

tego pola można przypisać "adres" zmiennej. Do pola tego nie można przypisać nazwy zmiennej. Musi być przypisane wyłącznie pole .TagID zmiennej. Pełne zrozumienie tego opisu może wymagać skorzystania z informacji o polu .TagID. Ogólnie ujmując, zmienna typu TagID może być porównywana wyłącznie z inną zmienną typu TagID. Nie można korzystać z niej w połączeniu ze zmienną innego typu, chyba że do zmiennej innego typu dodane zostanie pole .TagID.

Chociaż pole to przeznaczone jest do odczytu/ zapisu, jego wartość nie może być bezpośrednio wyświetlona na ekranie.

Przykład(y) Zamieszczone poniżej, przykładowe wyrażenie, przypisuje nową zmienną do pola Pen1 trendu historycznego związanego ze zmienną typu Hist Trend o nazwie MyHistTrendTag. Zamieszczona poniżej instrukcja skryptu Pen1 trendu historycznego powiązanego ze zmienną MyHistTrendTag rozpocznie wyświetlanie danych archiwalnych zarejestrowanych dla zmiennej o nazwie MyLoggedTag. Należy zwrócić uwagę w jaki sposób pole .TagID łączone jest z nazwą zmiennej MyLoggedTag w celu przypisania jej do Pen1. Jest to konieczne, ponieważ pole .Pen1 jest typu TagID a operacja przypisania wymaga zgodności typów (tj. DiscreteTag = DiscreteTag, natomiast błędne jest wyrażenie DiscreteTag = MessageTag), należy więc przypisać temu polu obiekt typu TagID.

MyHistTrendTag.Pen1=MyLoggedTag.TagID;

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 129

Opierając się na powyższym przykładzie, rozważmy w jaki sposób można wyświetlić NAZWĘ zmiennej przypisanej do MyHistTrendTag.Pen1. Informacja taka byłaby bardzo użyteczna dla operatora. Dodatkowo, wyświetlanie nazwy zmiennej rysowanej na trendzie historycznym zwiększa funkcjonalność aplikacji. Pozornie, najłatwiejszym sposobem wyświetlenia wartości wspomnianego pola MyHistTrendTag.Pen1 jest skorzystanie z połączenia wyświetlającego, ale operacja taka (o czym można się przekonać samodzielnie) nie daje przewidywanego wyniku. Powodem takiej sytuacji jest fakt, że rzeczywista wartość pola .Pen1 jest typu całkowitego i zapisana jest w pewnym obszarze pamięci programu WindowViewer, w formacie nie nadającym się do bezpośredniego wyświetlania na ekranie. Rozwiązanie wymaga nieco więcej pracy. Najpierw należy utworzyć nową zmienną typu TagID, na przykład o nazwie Pen01. Poniżej instrukcji z poprzedniego przykładu należy umieścić następującą instrukcję:

Pen01=MyHistTrendTag.Pen1;

W pierwszym przykładzie, zmienna MyLoggedTag została przypisana do pola Pen1 zmiennej MyHistTrendTag. W niniejszym przykładzie, zrealizowana została bardziej zaawansowana operacja, polegająca na przypisaniu wartości Pen1 zmiennej MyHistTrendTag, obecnie równej TagID zmiennej MyLoggedTag do zmiennej Pen01. Powodem takiego działania jest potrzeba dotarcia do pola .Name. Nie można w prosty sposób wyświetlić na ekranie MyHistTrendTag.Name, ponieważ pokazywany będzie zawsze tekst MyHistTrendTag. Próba wyświetlenia na ekranie MyHistTrendTag.Pen1 zakończy się niepowodzeniem ponieważ edytor połączeń nie zezwoli na wyświetlenie Pen1 typu TagID. Konieczne jest więc stworzenie zmiennej pomocniczej, stanowiącej połączenie pomiędzy systemem wyświetlania a systemem historycznym. Przypisując wartość MyHistTrendTag.Pen1 do zmiennej typu TagID o nazwie Pen01, w rzeczywistości do zmiennej Pen01 przypisana została zmienna MyLoggedTag. Przedstawione powyżej zadanie można również zrealizować za pomocą pojedynczej instrukcji przedstawionej poniżej. Obydwa rozwiązania są funkcjonalnie identyczne.

Pen01=MyLoggedTag.TagID;

Opis funkcji, pól i zmiennych systemowych

130 Rozdział 2

Preferowane jest pierwsze z przedstawionych rozwiązań. Jest ono bardziej naturalne. Dodatkowo, można po prostu umieścić MyHistTrendTag.Pen1 jako "zmienną" w skrypcie zmiany wartości w miejscu: Pen01 = MyHistTrendTag.Pen1 Dzięki temu, nie wiedząc jak zmienna została przypisana do Pen1, można ją przypisać do zmiennej Pen01. Pozwala to na ustawiczne wyświetlanie na ekranie nazwy zmiennej przypisanej do pola Pen1 trendu historycznego, nawet jeżeli zmienna zostanie zmieniona przez użytkownika (poprzez kliknięcie na trendzie w WindowViewer) lub też przez QuickScript wykonywany przez system.

Analizując głębiej ten przykład, można zażądać wyświetlenia maksymalnej i minimalnej wartości, wyrażonych w jednostkach inżynierskich, dla rysowanej zmiennej. Z możliwości tej korzysta wizard trendu historycznego. Zalecamy umieszczenie na ekranie wizarda trendu historycznego, a następnie rozdzielenie go i analizę sposobu w jaki został on zaprojektowany. Jest to dobry przykład sposobu korzystania z tych pól.

Ponieważ zmienne typu TagID, jak na przykład Pen01, nie mają pól podających wartość w jednostkach inżynierskich, jak również innych pól zwykle dostępnych w zmiennych, nie można wykorzystać ich do wyświetlania wartości zmiennej w jednostkach inżynierskich. Przykładowo, nie jest możliwe wyświetlenie Pen01.MaxEu ponieważ edytor połączeń poinformuje, że nie można odwoływać się do pola .MaxEU w przypadku zmiennej Pen01, typu TagID.

W celu rozwiązania tego problemu, wystarczy skorzystać ze zmiennej pomocniczej, której zadaniem jest zapewnienie łączności pomiędzy typem TagID a systemem wyświetlania. Najpierw należy utworzyć zmienną typu Indirect Analog, np. IndirectAnalogPen1. W takim samym skrypcie zmiany wartości jak np. w przykładzie nr 2, wprowadzić następującą instrukcję:

IndirectAnalogPen1.Name=Pen01.Name;

Nazwa zmiennej Pen01 (w tym momencie równej MyLoggedTag) jest przypisana do zmiennej typu pośredniego IndirectAnalogPen1. Jeżeli zrealizowane zostaną te czynności, można odwoływać się do wszystkich pól zmiennych dostępnych dla zmiennych analogowych, w naszym przypadku, dla zmiennej typu całkowitego o nazwie MyLoggedTag. W tym momencie, w połączeniu wyświetlającym wartości analogowe można wprowadzić:

IndirectAnalogPen1.MaxEU

Spowoduje to wyświetlenie maksymalnej wartości wyrażonej w jednostkach inżynierskich dla zmiennej przypisanej w danej chwili do zmiennej IndirectAnalogPen1. Ponieważ zostało do niej przypisane w skrypcie zmiany wartości zamieszczonym powyżej pole Pen01.Name, można z całą pewnością stwierdzić, że maksymalna wartość wyrażona w jednostkach inżynierskich zmiennej jest w tym momencie przypisana do pola Pen1 zmiennej MyHistTrendTag.

Patrz również .TagID, HTGetPenName( ), HTSetPenName( )

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 131

.PendingUpdatesWskazuje, czy występują jakiekolwiek nie zakończone aktualizacje dla Obiektu Alarmu Rozproszonego.

Kategoria alarmySposób użycia [ErrorMessage=]GetPropertyI(“ NazwaObiektu. PendingUpdates ”

, Zmienna);

Parametr Opis

NazwaObiektu Nazwa obiektu alarmów rozproszonych Przykładowo, AlmObj_1.

Zmienna Zmienna typu Integer, przechowująca wartość właściwości w momencie realizacji funkcji.

Uwagi Pole to jest tylko do odczytu i zawiera informację o niezakończonych aktualizacjach dla obiektu wyświetlania alarmu rozproszonego o podanej nazwie. Każda wartość większa niż zero wskazuje, że obiekt alarmu rozproszonego ma nowe dane alarmowe. Wartość ta jest zerowana za każdym razem, gdy obiekt jest ponownie rysowany.

Typ danych Integer (tylko odczyt)Przykład(y) Zamieszczone poniżej wyrażenie zwraca do zmiennej typu Integer o nazwie

AlarmPendingUpdates informację, czy występują jakiekolwiek nie zakończone aktualizacje dla obiektu wyświetlania alarmu rozproszonego o nazwie "AlmObj_1”.

GetPropertyI(“AlmObj_1.PendingUpdates”,AlarmPendingUpdates);

Patrz również GetProperty

Opis funkcji, pól i zmiennych systemowych

132 Rozdział 2

.PrevPagePole to powoduje przewinięcie obiektu wyświetlania alarmu rozproszonego o jedną stronę ekranu w górę, w momencie , gdy wartość pola ulega zmianie z 1 na 0.

Kategoria alarmySposób użycia [ErrorNumber=]GetPropertyD(" NazwaObiektu. PrevPage ", Zmienn

a);[ErrorNumber=]SetPropertyD(" NazwaObiektu. PrevPage ", Wartość);

Parametr Opis

NazwaObiektu Nazwa obiektu alarmów rozproszonych Przykładowo, AlmObj_1.

Zmienna Zdefiniowana zmienna programu InTouch (takiego samego typu jak typ zwracany), przechowująca wartość właściwości w momencie realizacji funkcji.

Wartość Wartość dyskretna, lub zmienna typu Discrete przechowująca wartość do zapisu w momencie wykonywania funkcji.

Uwagi Zawsze, gdy wartość tego pola ulega zmianie z 1 na 0, obiekt do wyświetlania alarmów wyświetli poprzednią stronę na ekranie. Po wyświetleniu poprzedniej strony wartość zmiennej zostaje automatycznie ustawiona na 1, chyba że osiągnięty został początek listy. W takim przypadku wartość ta pozostaje równa 0.

Typ danych Discrete (odczyt/zapis)Patrz również GetPropertyD(), SetPropertyD(), .NextPage, .PageNum, .TotalPages

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 133

.PriFrom

.PriTo

Pole to zawiera wartość niższego priorytetu używaną przez bieżące zapytanie.

Kategoria alarmySposób użycia [ErrorNumber=]GetPropertyI(" NazwaObiektu. PriFrom ", Zmienna

);

Parametr Opis

NazwaObiektu Nazwa obiektu alarmów rozproszonych Przykładowo, AlmObj_1.

Zmienna Zmienna typu Integer, przechowująca wartość właściwości w momencie realizacji funkcji.

Uwagi Pole to, tylko do odczytu, zawiera wartość minimalnego priorytetu wykorzystywaną do filtrowania alarmów w oknie obiektu wyświetlania alarmów rozproszonych.

Typ danych Integer (tylko odczyt)Przykład(y) Zamieszczone poniżej wyrażenie ustawia wartość zmiennej typu Integer

MinPri na minimalną wartość priorytetu, wykorzystywaną przez obiekt alarmów rozproszonych AlmObj_1.

GetPropertyI("AlmObj_1.PriFrom",MinPri);

Patrz również GetPropertyI(), .PriTo, .AlarmPri

Pole to zawiera wartość górnego priorytetu używaną przez bieżące zapytanie.Kategoria alarmySposób użycia [ErrorNumber=]GetPropertyI(" NazwaObiektu. PriTo ", Zmienna);

Parametr Opis

NazwaObiektu Nazwa obiektu alarmów rozproszonych Przykładowo, AlmObj_1.

Zmienna Zmienna typu Integer, przechowująca wartość właściwości w momencie realizacji funkcji.

Uwagi Pole to, tylko do odczytu, zawiera górną wartość priorytetu wykorzystywaną do filtrowania alarmów na oknie obiektu do wyświetlania alarmów rozproszonych.

Typ danych Integer (tylko odczyt)Przykład(y) Zamieszczone poniżej wyrażenie ustawia wartość zmiennej typu Integer

MaxPri na maksymalną wartość priorytetu, wykorzystywaną przez obiekt alarmów rozproszonych AlmObj_1.

GetPropertyI("AlmObj_1.PriTo",MaxPri);

Patrz również GetPropertyI(), .PriFrom, .AlarmPri

Opis funkcji, pól i zmiennych systemowych

134 Rozdział 2

.ProviderReq

.ProviderRet

Pole to zawiera łączną liczbę aplikacji uruchomionych na innych komputerach, aktualnie odpytywanych pod kątem występowania alarmów.

Kategoria alarmySposób użycia [ErrorNumber=]GetPropertyI(" NazwaObiektu. ProviderReq ",

Zmienna);

Parametr Opis

NazwaObiektu Nazwa obiektu alarmów rozproszonych Przykładowo, AlmObj_1.

Zmienna Zmienna typu Integer, przechowująca wartość właściwości w momencie realizacji funkcji.

Uwagi Pole to przeznaczone jest tylko do odczytu i zawiera łączną liczbę aplikacji uruchomionych na innych komputerach, aktualnie odpytywanych pod kątem występowania alarmów w obiektach alarmowania rozproszonego.

Typ danych Integer (tylko odczyt)Przykład(y) Zamieszczona poniżej instrukcja zwraca liczbę dostawców alarmów

wymaganą przez bieżące zapytanie, wykorzystywaną przez obiekt AlmObj_1. Wartość ta jest przypisywana zmiennej typu Integer TotalProv:

GetPropertyI("AlmObj_1.ProviderReq",TotalProv);

Patrz również GetPropertyI(), .ProviderRet

Pole to zawiera liczbę aplikacji uruchomionych na innych komputerach, które udzieliły odpowiedzi na pytanie o występowanie alarmów.

Kategoria alarmySposób użycia [ErrorNumber=]GetPropertyI(" NazwaObiektu. ProviderRet ",

Zmienna);

Parametr Opis

NazwaObiektu Nazwa obiektu alarmów rozproszonych Przykładowo, AlmObj_1.

Zmienna Zmienna typu Integer, przechowująca wartość właściwości w momencie realizacji funkcji.

Uwagi Pole to przeznaczone jest tylko do odczytu i zawiera łączną liczbę aplikacji uruchomionych na innych komputerach, które udzieliły odpowiedzi na pytanie o występowanie alarmów w obiektach alarmowania rozproszonego.

Typ danych Integer (tylko odczyt)Przykład(y) Zamieszczona poniżej instrukcja zwraca do obiektu alarmu rozproszonego

AlmObj_1, liczbę dostawców alarmów którzy pomyślnie przesłali informacje o alarmach. Wartość ta jest przypisywana zmiennej typu Integer RetProv:

GetPropertyI("AlmObj_1.ProviderRet",RetProv);

Patrz również GetPropertyI(), .ProviderReq

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 135

.QualityW celu pełnego zrozumienia właściwości pola .Quality wykorzystywanego w pakiecie Wonderware, poniżej podano krótką definicję normy jakości. Norma jakości Wonderware oparta jest na standardzie OLE for Process Control, (OPC), który z kolei bazuje na normie Fieldbus Data Quality Specifications.

Flagi jakości reprezentują jakość wartości danych. Takie rozwiązanie umożliwia zarówno aplikacjom serwera jak i klienta wyznaczenie żądanego zakresu funkcjonalności do implementowania.

8 mniej znaczących bitów flagi Jakości składa się obecnie z trzech pól bitowych: Quality, Substatus i Limit, o następującym układzie:

QQSSSSLL

Pole Quality udostępnia użytkownikowi informację o jakości zmiennej typu I/O, w postaci dostarczonej przez program komunikacyjny.

Uwaga: W przypadku zakłóceń pracy programu komunikacyjnego, pola związane z jakością zmiennej są automatycznie ustawiane na wartość 0. Równocześnie wartość 0 przypisywana jest do flagi .ReferenceComplete.

Kategoria zmiennaSposób użycia Zmienna. Quality

Parametr Opis

Zmienna Dowolna zmienna typu Discrete, Integer lub Real, albo zmienna typu Indirect Message.

Typ danych Integer (tylko odczyt)Zakres wartości Wartość może należeć do przedziału od 0 do 255.Przykład(y) IF I0Tag.Quality <> 192 THEN

LogMessage("Dane nie s ą prawidłowe!");

ENDIF;

Program komunikacyjny Wonderware może sygnalizować sześć (6) wzajemnie wykluczających się statusów jakości danych przesyłanych do klientów. Statusy te są następujące:

Bajty jakości OPCBity jakości OPC .QualityStatusMSByte LSByte .QualitySubstatus

Statusy jakości War. heks. xxxxxxxx QQSSSSLL .QualityLimit1. Dobry 0x00C0 00000000 00000000 Q=3 S=0 L=02. Obcięcie od góry

0x0056 00000000 00000000 Q=1 S=5 L=2

3. Obcięcie od dołu

0x0055 00000000 00000000 Q=1 S=5 L=1

4. Brak możliwości konwersji

0x0040 00000000 00000000 Q=1 S=0 L=0

Opis funkcji, pól i zmiennych systemowych

136 Rozdział 2

5. Brak dostępu 0x0004 00000000 00000000 Q=0 S=1 L=06. Przerwana komunikacja

0x0018 00000000 00000000 Q=0 S=6 L=0

Jeżeli aplikacja klienta nie może nawiązać łączności z programem komunikacyjnym, wartość QualityStatus jest równa 0.0x0000 00000000 00000000 Q=0 S=0 L=0

Poszczególne statusy jakości sygnalizowane są po spełnieniu następujących warunków:

1. Dobry Połączenie komunikacyjne zostało zweryfikowane.

Żądanie dostarczenia danych zostało odebrane pomyślnie przez sterownik PLC, który w odpowiedzi wysłał poprawny pakiet informacji.

W trakcie operacji zapisu, o ile taka była realizowana, nie wystąpił błąd.

Nie wystąpiły żadne zakłócenia w czasie konwersji danych zawartych w zwrotnym pakiecie danych.

Przykład Zwrócona została wartość 0x0000A z rejestru zawierającego 10 (w postaci decymalnej).

2. Obcięcie od góry

Połączenie komunikacyjne zostało zweryfikowane.

Żądanie dostarczenia danych zostało odebrane pomyślnie przez sterownik PLC, który w odpowiedzi wysłał poprawny pakiet informacji.

Operacja zapisu lub odczytu rejestru została pomyślnie zrealizowana.

Konieczne było zmniejszenie wartości, ponieważ przekroczono maksymalną, górną wartość graniczną.

W przypadku łańcucha znaków oznacza to usunięcie części znaków.

Przykład 16 bitowa liczba całkowita jest zmniejszana do wartości 65535.3. Obcięcie od dołu

Połączenie komunikacyjne zostało zweryfikowane.

Żądanie dostarczenia danych zostało odebrane pomyślnie przez sterownik PLC, który w odpowiedzi wysłał poprawny pakiet informacji.

Operacja zapisu lub odczytu rejestru została pomyślnie zrealizowana.

Konieczne było zwiększenie wartości, ponieważ przekroczono minimalną, dolną wartość graniczną.

Przykład 16 bitowa liczba całkowita jest zmniejszana do wartości 0.

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 137

4. Brak możliwości konwersji

Połączenie komunikacyjne zostało zweryfikowane.

Żądanie dostarczenia danych zostało odebrane pomyślnie przez sterownik PLC, który w odpowiedzi wysłał poprawny pakiet informacji.

Dostarczone przez sterownik PLC dane nie mogą zostać przekonwertowane na żądany format.

Przyczynami zakłóceń w konwersji mogą być przykładowo:

Wysłanie przez program komunikacyjny stałej zamiast danych, lub wysłanie wyłącznie informacji o jakości.

Nieprzydatność danych.

Brak informacji czy wartość jest zbyt duża, czy też zbyt mała.

Dostarczenie przez sterownik PLC niewłaściwego typu danych.

Nadesłanie liczby zmiennoprzecinkowej, ale nie wartości (przykładowo: Przykład Z rejestru BCD przetwornika PLC jest zwrócona wartości 0x000A.5. Brak dostępu Połączenie komunikacyjne zostało zweryfikowane.

Żądanie dostarczenia danych zostało odebrane pomyślnie przez sterownik PLC, który w odpowiedzi wysłał poprawny pakiet informacji.

Ze sterownika PLC został wysłany komunikat, o braku dostępu do żądanej wartości.

Przyczynami braku dostępu mogą być przykładowo:

Brak elementu w pamięci sterownika PLC.

Zablokowanie w danym momencie dostępu do elementu (na przykład przez mechanizm wspólnego korzystania z zasobów).

Niewłaściwy format/ typ danych.

Podjęcie próby zapisu do elementu przeznaczonego wyłącznie do odczytu.

W większości przypadków, wystąpienie zakłóceń w stosunku do jednego elementu ma wpływ na całą grupę elementów. Jest to spowodowane przez schemat odczytu blokowego stosowany przez program komunikacyjny. Przykładowo, jeżeli jeden z elementów w bloku złożonym z 10 elementów będzie niepoprawny, cały blok zostanie zaznaczony przez sterownik PLC jako niepoprawny. Zasygnalizowanie przez program komunikacyjny niewłaściwej liczby elementów w bloku.

Nieużyteczność danych.Przykład Próba odczytu R40001, jeżeli R40001 nie jest zdefiniowane w mapie pamięci

PLC.

Opis funkcji, pól i zmiennych systemowych

138 Rozdział 2

.QualityLimit

6. Przerwana komunikacja

Dowolna kombinacja następujących przyczyn:

Przerwanie transmisji danych.

Temat w trybie wolnej wymiany danych (lub w równoważnym trybie).

Brak połączenia do sprawdzenia poprawności komunikatów.

Brak zasobów w programie komunikacyjnym. Przykładowo, brak możliwości alokowania pamięci przez program TSR (lub sterownik).

Brak zasobów w połączeniu komunikacyjnym.

Wyłączenie połączenia komunikacyjnego.

Wszystkie kanały komunikacyjne zajęte.

Brak możliwość wysłania poprzez sieć komunikatu do sterownika PLC.Przykład Próba odczytu danych z wyłączonego sterownika PLC.Patrz również .QualityLimit, .QualityStatus, .QualitySubstatus

Liczba całkowita wykorzystywana do wyświetlania wartości granicznych jakości zmiennej typu I/O, dostarczanej przez program komunikacyjny przy poprawnie funkcjonującym połączeniu.

Kategoria zmiennaSposób użycia Zmienna. QualityLimit

Parametr Opis

Zmienna Dowolna zmienna typu Discrete, Integer lub Real, albo zmienna typu Indirect Message.

Typ danych Integer (tylko odczyt)Zakres wartości (LL)

0 Bez ograniczenia1 Ograniczenie od dołu2 Ograniczenie od góry3 Stała

Patrz również .Quality

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 139

.QualityLimitString

.QualityStatus

.QualityStatusString

Pole wykorzystywane do wyświetlania tekstowej wartości granicznej jakości wartości zmiennej I/O, dostarczonej przez program komunikacyjny przy poprawnie funkcjonującym połączeniu.

Kategoria zmiennaSposób użycia Zmienna. QualityLimitString

Parametr Opis

Zmienna Dowolna zmienna typu Discrete, Integer lub Real, albo zmienna typu Indirect Message.

Typ danych Message (tylko odczyt)Patrz również .QualityLimit, .Quality

Liczba całkowita wykorzystywana do wyświetlania statusu jakości wartości zmiennej I/O, dostarczonej przez program komunikacyjny przy poprawnie funkcjonującym połączeniu.

Kategoria zmiennaSposób użycia Zmienna.QualityStatus

Parametr Opis

Zmienna Dowolna zmienna typu Discrete, Integer, Real, Indirect Analog lub Indirect Message.

Uwagi Wartość pola bitowego podstatusu (QQ) zależy od wartości pola jakości (QQSSSSLL).

Typ danych Integer (tylko odczyt)Zakres wartości (QQ)

0 Zły1 Niepewny3 Dobry

Patrz również .QualitySubStatus, .Quality

Pole wykorzystywane do wyświetlania tekstowej wartości statusu jakości wartości zmiennej I/O, dostarczonej przez program komunikacyjny przy poprawnie funkcjonującym połączeniu.

Kategoria zmiennaSposób użycia Zmienna. QualityStatusString

Parametr Opis

Zmienna Dowolna zmienna typu Discrete, Integer, Real, Indirect Analog lub Indirect Message.

Typ danych Message (tylko odczyt)Patrz również .QualityStatus, .QualitySubStatus, .Quality

Opis funkcji, pól i zmiennych systemowych

140 Rozdział 2

.QualitySubstatusLiczba całkowita wykorzystywana do wyświetlania wartości podstatusu jakości zmiennej typu I/O, dostarczanej przez program komunikacyjny przy poprawnie funkcjonującym połączeniu.

Kategoria zmiennaSposób użycia Zmienna. QualitySubstatus

Parametr Opis

Zmienna Dowolna zmienna typu Discrete, Integer lub Real, albo zmienna typu Indirect Message.

Typ danych Integer (tylko odczyt)Zakres wartości (SSSS) i (QQ)

Podstatus (SSSS) w przypadku gdy jakość jest zła (QQ=0):0 Nie określona1 Błąd w konfiguracji2 Brak połączenia3 Uszkodzenie sprzętowe4 Uszkodzenie czujnika5 Ostatnio odebrana

wartość6 Uszkodzenie portu7 WyłączeniePodstatus (SSSS) w przypadku gdy jakość jest niepewna (QQ=1):0 Nie określona1 Ostatnio odebrana

wartość4 Czujnik nie dokładny5 Przekroczenie

Jednostek inżynierskich6 Sub-normalnaREFSub

normalPodstatus (SSSS) w przypadku gdy jakość jest Dobra (QQ=2):0 Nie określona6 Lokalne przepisanie

Patrz również .QualityStatus, .Quality

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 141

.QualitySubstatusString

.QueryState

Pole wykorzystywane do wyświetlania podstatusu jakości wartości zmiennej I/O, dostarczonej przez program komunikacyjny przy poprawnie funkcjonującym połączeniu.

Kategoria zmiennaSposób użycia Zmienna. QualitySubstatusString

Parametr Opis

Zmienna Dowolna zmienna typu Discrete, Integer lub Real, albo zmienna typu Indirect Message.

Typ danych Message (tylko odczyt)Patrz również .QualityStatus, .QualitySubstatus, .Quality

Pole to zawiera aktualny filtr obowiązujący przy pytaniu o alarmy.Kategoria alarmySposób użycia [ErrorNumber=]GetPropertyI(" NazwaObiektu. QueryState ",

Zmienna);

Parametr Opis

NazwaObiektu Nazwa obiektu alarmów rozproszonych Przykładowo, AlmObj_1.

Zmienna Zmienna typu Integer, przechowująca wartość właściwości w momencie realizacji funkcji.

Uwagi Pole to przeznaczone jest tylko do odczytu i zawiera aktualny filtr stosowany przy zapytaniu o alarmy przez obiekt wyświetlania alarmów w alarmowaniu rozproszonym.

Typ danych Integer (tylko odczyt)Zakres wartości 0 = Wszystkie alarmy

1 = Alarmy niepotwierdzone2 = Alarmy potwierdzone

Przykład(y) Instrukcja podana poniżej zwraca wartość zmiennej typu Integer AlmQueryState na filtr bieżącego zapytana obiektu alarmu rozproszonego "AlmObj_1".

GetPropertyI("AlmObj_1.QueryState",AlmQueryState);

Patrz również GetPropertyI(), .QueryType

Opis funkcji, pól i zmiennych systemowych

142 Rozdział 2

.QueryTypePole to definiuje aktualnie obowiązujący sposób pytania o alarmy.

Kategoria alarmySposób użycia [ErrorNumber=]GetPropertyI(" NazwaObiektu. QueryType ", Zmien

na);

Parametr Opis

NazwaObiektu Nazwa obiektu alarmów rozproszonych Przykładowo, AlmObj_1.

Zmienna Zmienna typu Integer, przechowująca wartość właściwości w momencie realizacji funkcji.

Uwagi Pole to przeznaczone jest tylko do odczytu i określa aktualnie obowiązujący sposób pytania o alarmy przez obiekt wyświetlania alarmów w alarmowaniu rozproszonym.

Typ danych Integer (tylko odczyt)Zakres wartości 1 = Historia alarmów

2 = Alarmy bieżące (aktywne)Przykład(y) Instrukcja podana poniżej zwraca typ zapytania obiektu alarmowego

"AlmObj_1" i zapisuje go w zmiennej typu Integer AlmQueryType:

GetPropertyI("AlmObj_1.QueryType",AlmQueryType);

Patrz również GetPropertyI(), .QueryState

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 143

.RawValue

.ReadOnly

Rzeczywista wartość odczytana z programu komunikacyjnego przez program WindowViewer pracujący jako klient. Pole wartości surowej pozwala użytkownikowi na odczytanie wartości zmiennej I/O przed wyskalowaniem.

Kategoria zmiennaSposób użycia Zmienna. RawValue

Parametr Opis

Zmienna Dowolna zmienna typu I/O Discrete, Indirect Discrete, I/O Integer, Memory Real, Indirect Analog, I/O Message i Indirect Message.

Uwagi Pole przeznaczone wyłącznie do odczytu, wykorzystywane do wyświetlania aktualnej wartości zmiennej dyskretnej lub analogowej typu I/O, przed jej skalowaniem w programie InTouch.

Typ danych Dowolny typ danych. Na przykład, wartości rzeczywiste dla zmiennych typu Real, dyskretne dla zmiennych typu Discrete, itd (pole tylko do odczytu)

Zakres wartości Wszędzie tam gdzie mogą być stosowane wartości dyskretne lub analogowe.Przykład(y) Zamieszczone poniżej wyrażenie umożliwia sprawdzenie czy zmienna nie

wyszła poza zakres normalnych wartości.

IF ((IOtag.RawValue > IOtag.MaxRaw) OR (IOTag.RawValue IOTag.MinRaw))THENAlarmMessage = "Czujnik rozkalibrowany";ENDIF;

Patrz również .EngUnits, .MinEU, .MaxEU, .MinRaw, .MaxRaw

Określa, czy zawartość obiektu sterującego w postaci pola tekstowego ma być przeznaczona tylko do odczytu, czy może dopuszczać również zapis.

Kategoria obiekty sterujące WindowsSposób użycia [ErrorNumber=]GetPropertyD(" NazwaObiektu. ReadOnly ",

Zmienna);

Parametr Opis

ControlName Nazwa wizarda Na przykład, Textbox_1Zmienna Zmienna typu Discrete, w której zapisywana jest

wartość pola podczas wykonywania funkcji.Uwagi Pole to jest dostępne zarówno w czasie pracy aplikacji, jak i w czasie edycjiTyp danych Discrete (tylko odczyt)Zakres wartości 0 = Zawartość pola tekstowego umożliwia odczyt i zapis.

1 = Zawartość pola tekstowego jest przeznaczona tylko do odczytu.Zastosowanie Pola tekstu.Przykład(y) Poniższa instrukcja odczytuje status pola .ReadOnly obiektu "TextBox_1".

GetPropertyD( "TextBox_1.ReadOnly",A_Tagname );

Patrz również GetPropertyD(), SetPropertyD()

Opis funkcji, pól i zmiennych systemowych

144 Rozdział 2

.Reference

.ReferenceComplete

Pole to pozwala operatorowi na dynamiczną zmianę nazwy dostępu i/lub nazwy elementu w czasie pracy aplikacji.

Kategoria zmiennaSposób użycia Zmienna. Reference

Parametr OpisZmienna Dowolna zmienna I/O lub zmienna pośrednia

(Indirect) przypisana do zmiennej I/O.Uwagi Pole to zapewnia łatwą metodę dynamicznej zmiany nazwy dostępu i/lub

nazwy elementu. Typ danych Message (odczyt/zapis)Zakres wartości Dowolny łańcuch znaków zawierający nazwę dostępu i/lub nazwę elementu. Przykład(y) Instrukcja podana poniżej przypisuje do pola z nazwą elementu zmiennej I/O

nazwę elementu wygenerowaną przez funkcję tekstową w zależności od wartości zmiennej pamięciowej typu całkowitego. Instrukcja ta zastosowana zostanie w skrypcie warunkowym, do wykonywania operacji na sekwencji zmiennych, z wykorzystaniem do tego celu pola .ReferenceComplete.

MyIOTag.Reference="R" + Text( MyIndex, "#" );

{ If MyIndex=40001,w efekcie element b ędzie miał warto ść: R40001 }

ExcelTag.Reference="R"+Text(RowNum,"#")+"C"+Text(ColNum, "#");

Zwraca potwierdzenie w przypadku zmiany pola .Reference gdy zmienna odebrała wartość w polu .Value wynikającą z nowego adresu .Item.

Kategoria zmiennaSposób użycia Zmienna. ReferenceComplete;

Parametr Opis

Zmienna Dowolna zmienna I/O lub zmienna pośrednia (Indirect) przypisana do zmiennej I/O.

Uwagi Pole to jest bardzo użyteczne w połączeniu z polem .Reference. Pole .ReferenceComplete wskazuje, że nastąpiła modyfikacja nazwy elementu lub nazwy dostępu, i co ważniejsze, że nowe wartości zostały uzyskane z nowego źródła danych. Nawet jeżeli nowe źródło danych jest identyczne z poprzednio wykorzystywanym źródłem danych, w momencie pierwszego uaktualnienia wartości przez nowe źródło danych, pole to ustawiane jest przez system na wartość 1.

W czasie procesu uaktualniania, od momentu zmodyfikowania pola .Reference do momentu pierwszego uaktualnienia wartości przez nowe źródło danych, system ustawia wartość tego pola na 0.

Typ danych Discrete (tylko odczyt)

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 145

.ROCPct

.ROCSet

Pole to służy do monitorowania i/lub zmiany maksymalnej, dopuszczalnej zmiany wartości zmiennej w jednostce czasu.

Kategoria AlarmySposób użycia Zmienna. ROCPct

Parametr Opis

Zmienna Dowolna zmienna typu Integer lub Real, lub zmienna typu Indirect Analog.

Uwagi Pole to zawiera wartość wyrażoną w procentach. Jego wartość jest równa wartości odpowiedniego parametru, wprowadzonego w czasie definiowania zmiennej na liście zmiennych. Użytkownik może wyświetlić wartość tego pola lub wykorzystać ją w skrypcie. Ponadto wartość ta może zostać zmieniona w czasie pracy aplikacji.

Typ danych Integer (odczyt/zapis)Zakres wartości Od 0 do 100 %Przykład(y) Wyrażenie podane poniżej ustawia wartość pola Rate-of-Change dla

zmiennej MyTag na 25%.

MyTag.ROCPct=25;

Patrz również .ROCStatus, .ROCSet

Zwraca wartość 0 (false) lub 1 (true) w zależności od tego, czy limit alarmu szybkości zmiany dla zmiennej typu Analog został ustawiony w liście zmiennych.

Kategoria alarmySposób użycia Zmienna. ROCSet

Parametr Opis

Zmienna Dowolna zmienna typu AnalogUwagi Pole to może być użyte dla zmiennych Integer lub Real.Typ danych DiscreteZakres wartości 1 (true) lub 0 (false)Przykład Przykładowa instrukcja zamieszczona poniżej może być wykorzystana w

analogowym połączeniu wyświetlającym do ustalenia, czy limit Szybkości zmiany dla alarmu jest przypisany do zmiennej MyTag:

MyTag.ROCSet;

{Kiedy zwrócone zostanie 0, limit nie jest ustawiony ; je żeli zwrócone zostanie 1, limit jest ustawiony.}

Patrz również .Alarm, .Ack, .LoLimit, .LoLoLimit, .HiHiLimit, .HiLimit, .HiSet, .LoSet, .LoLoSet, .HiStatus, .HiHiStatus, .ROCPct, .ROCStatus

Opis funkcji, pól i zmiennych systemowych

146 Rozdział 2

.ROCStatusPole to określa, czy w systemie występuje alarm związany z szybkością zmian wartości danej zmiennej (Rate of Change).

Kategoria alarmySposób użycia Zmienna. ROCStatus

Parametr Opis

Zmienna Dowolna zmienna typu Integer lub Real, lub zmienna typu Indirect Analog.

Uwagi Wartość tego pola przeznaczonego wyłącznie do odczytu jest zwykle równa 0,a w przypadku wystąpienia alarmu typu prędkości zmiany dla danej zmiennej zostaje zmieniona przez system na 1. Pole to ma wartość równą 1 do czasu, gdy zniknie przyczyna alarmu.

Typ danych Discrete (tylko odczyt)Zakres wartości 0 = Stan alarmowy nie występuje

1 = Stan alarmowy występujePrzykład(y) Wyrażenia zawarte w poniższej instrukcji IF-THEN będą wykonywane, gdy

pole .ROCStatus (alarm typu Prędkości Zmiany) dla zmiennej MyTag będzie miało wartość ustawioną na 1.

IF (MyTag.ROCStatus == 1) THENOperatorMessage="MyTag has gone into a Rate-Of-Change-Alarm";

ENDIF;

Uwagi Pole to jest często używane w połączeniu z polami .Alarm oraz .Ack, w celu określenia dokładnej przyczyny generowania alarmu dla danej zmiennej.

Patrz również .ROCPct, .ROCSet

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 147

.ScooterLockLeft

.ScooterLockRight

Przypisanie do tego pola wartości 1 (True) uniemożliwi przesunięcie prawego suwaka na trendzie historycznym poza aktualne położenie lewego suwaka.

Kategoria dane historyczneSposób użycia Zmienna. ScooterLockLeft

Parametr Opis

Zmienna Dowolna zmienna typu Hist Trend.Uwagi Ogólnie ujmując, należy zapobiegać temu, aby operator miał możliwość

przesunięcia prawego suwaka w lewo, poza pozycję zajmowaną przez lewy suwak. Jeżeli lewy suwak nie jest zablokowany, w momencie gdy prawy suwak zostanie przesunięty w lewo poza pozycję zajmowaną przez lewy suwak, ich pozycje będą równe.

Typ danych Discrete (odczyt/zapis)Zakres wartości 0 = False = prawy suwak może zostać przesunięty poza lewy suwak.

1 = True = prawy suwak nie może zostać przesunięty poza lewy suwak.Przykład(y) Po wykonaniu zamieszczonej poniżej instrukcji, prawy suwak związany ze

zmienną typu HistTrendTag o nazwie MyHistTrendTag nie będzie mógł być przesunięty za pozycję zajmowaną przez lewy suwak.

MyHistTrendTag.ScooterLockLeft=1;

Patrz również .ScooterPosRight, .ScooterPosLeft, .ScooterLockRight

Przypisanie do tego pola wartości 1 (True) uniemożliwi przesunięcie lewego suwaka na wykresie trendu historycznego poza aktualne położenie prawego suwaka.

Kategoria dane historyczneSposób użycia Zmienna. ScooterLockRight

Parametr Opis

Zmienna Dowolna zmienna typu Hist Trend.Uwagi Ogólnie ujmując, należy zapobiegać temu, aby operator miał możliwość

przesunięcia lewego suwaka w prawo, poza pozycję zajmowaną przez prawy suwak. Jeżeli prawy suwak nie jest zablokowany, w momencie gdy lewy suwak zostanie przesunięty w prawo poza pozycję zajmowaną przez prawy suwak, ich pozycje będą równe.

Typ danych Discrete (odczyt/zapis)Zakres wartości 0 = False = lewy suwak może zostać przesunięty poza prawy suwak

1 = True = lewy suwak nie może zostać przesunięty poza prawy suwakPrzykład(y) Po wykonaniu zamieszczonej poniżej instrukcji, lewy suwak związany ze

zmienną typu HistTrendTag o nazwie MyHistTrendTag nie będzie mógł być przesunięty za pozycję zajmowaną przez prawy suwak.

MyHistTrendTag.ScooterLockRight=1;

Patrz również .ScooterPosRight, .ScooterPosLeft, .ScooterLockLeft

Opis funkcji, pól i zmiennych systemowych

148 Rozdział 2

.ScooterPosLeftPole to umożliwia odczyt i/lub zmianę położenia lewego suwaka na wykresie trendu historycznego.

Kategoria dane historyczneSposób użycia Zmienna. ScooterPosLeft

Parametr Opis

Zmienna Dowolna zmienna typu Hist Trend.Uwagi Pole to, przeznaczone do odczytu i zapisu, dynamicznie steruje położeniem

lewego suwaka na wykresie trendu historycznego. Pole to można wykorzystać w funkcji QuickScript do odczytania bieżącej pozycji lewego suwaka, albo też do przestawienia suwaka w inne położenie na wykresie, poprzez wpisanie zadanej wartości do tego pola.

Pole to jest wykorzystywane najczęściej w połączeniu z funkcją HTGetValue(). W przypadku korzystania z tego typu funkcji należy określić do którego trendu historycznego mają być wysyłane zapytania, jak również należy podać bieżące pozycje suwaków.

Typ danych Real (odczyt/zapis)Zakres wartości 0.0 do 1.0; gdzie 0.0 odpowiada lewemu krańcowi wykresu trendu

historycznego, natomiast 1.0 odpowiada prawemu krańcowi tego wykresu.Przykład(y) Podana poniżej instrukcja dokonuje przesunięcia lewego suwaka do nowej

lokacji. Lewy suwak zostanie przesunięty o 34% całkowitej długości wykresu związanego ze zmienną typu HistTrendTag o nazwie MyHistTrendTag, licząc od lewej strony.

MyHistTrendTag.ScooterPosLeft=.34;

W zamieszczonym poniżej QuickScript, funkcja HtGetValueAtScooter() została wykorzystana do odczytu wartości wskazywanej przez pisak Pen1 w miejscu, w którym znajduje się lewy suwak. Ponieważ zmiana każdego z parametrów funkcji powoduje ponowne wyznaczenie wartości funkcji, instrukcja ta wykonywana jest po każdej zmianie pozycji lewego suwaka.

MyRealTag=HTGetValueAtScooter(MyHistTrendTag,MyHistTrendTag.UpdateCount,1,MyHistTrendTag.ScooterPosLeft,1,"PenValue");

Patrz również .ScooterPosRight, .ScooterLockLeft, .ScooterLockRight

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 149

.ScooterPosRightPole to umożliwia odczyt i/lub zmianę położenia prawego suwaka na wykresie trendu historycznego.

Kategoria dane historyczneSposób użycia Zmienna. ScooterPosRight

Parametr Opis

Zmienna Dowolna zmienna typu Hist Trend.Uwagi Pole to, przeznaczone do odczytu i zapisu, dynamicznie steruje położeniem

prawego suwaka na wykresie trendu historycznego. Pole to można wykorzystać w funkcji QuickScript do odczytania bieżącej pozycji prawego suwaka, albo też do przestawienia suwaka w inne położenie na wykresie, poprzez wpisanie zadanej wartości do tego pola.

Pole to jest wykorzystywane najczęściej w połączeniu z funkcją HTGetValue(). W przypadku korzystania z tego typu funkcji należy określić do którego trendu historycznego mają być wysyłane zapytania, jak również należy podać bieżące pozycje suwaków. Patrz przykład poniżej.

Typ danych Real (odczyt/zapis)Zakres wartości 0.0 do 1.0; gdzie 0.0 odpowiada prawemu krańcowi wykresu trendu

historycznego, natomiast 1.0 odpowiada lewemu krańcowi tego wykresu.Przykład(y) Podana poniżej instrukcja dokonuje przesunięcia prawego suwaka do nowej

lokacji. Prawy suwak zostanie przesunięty o 34% całkowitej długości wykresu związanego ze zmienną typu HistTrendTag o nazwie MyHistTrendTag, licząc od prawej strony.

MyHistTrendTag.ScooterPosRight=.34;

W zamieszczonym poniżej QuickScript, funkcja HtGetValueAtScooter() została wykorzystana do odczytu wartości wskazywanej przez pisak Pen1 w miejscu, w którym znajduje się prawy suwak. Ponieważ zmiana każdego z parametrów funkcji powoduje ponowne wyznaczenie wartości funkcji, instrukcja ta będzie wykonywana po każdej zmianie pozycji prawego suwaka.

MyRealTag=HTGetValueAtScooter(MyHistTrendTag,MyHistTrendTag.UpdateCount,2,MyHistTrendTag.ScooterPosRight,1,"PenValue");

Patrz również .ScooterPosLeft, .ScooterLockLeft, .ScooterLockRight

Opis funkcji, pól i zmiennych systemowych

150 Rozdział 2

.Successful

.SuppressRetain

Pole to dostarcza informacji na temat przebiegu zapytania o alarmy.Kategoria alarmySposób użycia [ErrorNumber=]GetPropertyD(" NazwaObiektu. Successful ",

Zmienna);

Parametr Opis

NazwaObiektu Nazwa obiektu alarmów rozproszonych Przykładowo, AlmObj_1.

Zmienna Zmienna typu Discrete, w której zapisywana jest wartość pola podczas wykonywania funkcji.

Uwagi Pole to przeznaczone jest tylko do odczytu i dostarcza informacji na temat przebiegu zapytania o alarmy wysłanego przez obiekt wyświetlania alarmów rozproszonych o określonej nazwie.

Typ danych Discrete (tylko odczyt)Zakres wartości 0 = Błąd

1 = Odpytywanie wykonanePrzykład(y) Zamieszona poniżej instrukcja zwraca wartość statusu wykonania ostatniego

zapytania obiektu "AlmObj_1" i umieszcza ją w zmiennej AlmFlag:

GetPropertyD("AlmObj_1.Successful",AlmFlag);

Patrz również GetPropertyD()

Pole umożliwia odczyt/zapis statusu wstrzymywania wyświetlania alarmów obiektu alarmów rozproszonych.

Kategoria alarmySposób użycia [ErrorNumber=]GetPropertyD(“ NazwaObiektu.SuppressRetain” ,

Zmienna”);

[ErrorNumber=]SetPropertyD(“ NazwaObiektu. SuppressRetain ”,Zmienna”);

Parametr OpisNazwaObiektu Nazwa Obiektu Alarmu Rozproszonego

Przykładowo, AlmObj_1.Zmienna Zmienna typu Discrete, w której zapisywana jest

wartość pola podczas wykonywania funkcji.Typ danych Discrete (odczyt/zapis)Zakres wartości 0 = Wstrzymanie wyłączone (OFF)

1 = Wstrzymanie włączone (ON)Przykład(y) Zamieszczona poniżej instrukcja ustawia status wstrzymywania wyświetlania

alarmów dla obiektu “AlmObj_1” dla zmiennej typu Discrete o nazwie SupRtn:

SetPropertyD(“AlmObj_1.SuppressRetain”, SupRtn);

Patrz również GetPropertyD(), SetProperty()

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 151

.TagID

.TimeDate

.TimeDateString

Pole jest używane w połączeniu ze polami .Pen1-.Pen8 zmiennych trendu historycznego do monitorowania i kontrolowania zmiennych, których przebiegi są rysowane przez pisaki na wykresie trendu historycznego.

Kategoria zmiennaSposób użycia Zmienna. TagID

Parametr Opis

Zmienna Dowolna zmienna typu Discrete, Intege, Real, Indirect Discrete lub Indirect Analog.

Uwagi Pole .TagID zawiera adres zmiennej, wykorzystywane jest głównie w kontekście przypisywania zmiennych do pisaków w trakcie rysowania trendu historycznego.

Typ danych TagID (tylko odczyt)Przykład(y) MyHistTrendTag.Pen6=SomeAnalogTag.TagID;

Patrz również .Pen1-.Pen8

Pole typu całkowitego, zawierające liczbę dni, które upłynęły od momentu dostarczenia wartości typu I/O przez program komunikacyjny, przy poprawnie funkcjonującym połączeniu.

Kategoria zmiennaSposób użycia Zmienna. TimeDate

Parametr Opis

Zmienna Dowolna zmienna typu Discrete, Integer, Real, Indirect Message lub Indirect Analog.

Typ danych Integer (tylko odczyt)Patrz również .TimeDateString, .TimeDay, .TimeDateTime, .TimeHour, .TimeMinute,

.TimeMsec, .TimeMonth, .TimeSecond, .TimeTime, .TimeTimeString,

.TimeYear

Zmienna tekstowa zawierająca datę w formacie określonym w rejestrze.Kategoria zmiennaSposób użycia Zmienna. TimeDateString

Parametr Opis

Zmienna Dowolna zmienna typu Discrete, Integer, Real, Indirect Message lub Indirect Analog.

Typ danych Message (tylko odczyt)Patrz również .TimeDate, .TimeDay, .TimeDateTime, .TimeHour, .TimeMinute,

.TimeMsec, .TimeMonth, .TimeSecond, .TimeTime, .TimeTimeString,

.TimeYear

Opis funkcji, pól i zmiennych systemowych

152 Rozdział 2

.TimeDateTime

.TimeDay

.TimeHour

Pole typu liczba zmiennoprzecinkowa, zawierające resztę ułamkową z liczby dni, które upłynęły od momentu dostarczenia wartości typu I/O przez program komunikacyjny, przy poprawnie funkcjonującym połączeniu.

Kategoria zmiennaSposób użycia Zmienna. TimeDateTime

Parametr Opis

Zmienna Dowolna zmienna typu Discrete, Integer, Real, Indirect Message lub Indirect Analog.

Typ danych Real (tylko odczyt)Patrz również .TimeDate, .TimeDateString, .TimeDay, .TimeHour, .TimeMinute,

.TimeMsec, .TimeMonth, .TimeSecond, .TimeTime, .TimeTimeString,

.TimeYear

Pole typu całkowitego, zawierające dzień, w którym wartość I/O została dos-tarczona przez program komunikacyjny, przy poprawnym połączeniu.

Kategoria zmiennaSposób użycia Zmienna.TimeDay

Parametr Opis

Zmienna Dowolna zmienna typu Discrete, Integer, Real, Indirect Message lub Indirect Analog.

Typ danych Integer (tylko odczyt)Zakres wartości Z przedziału 1 - 31.Patrz również .TimeDate, .TimeDateString, .TimeDateTime, .TimeHour, .TimeMinute,

.TimeMsec, .TimeMonth, .TimeSecond, .TimeTime, .TimeTimeString,

.TimeYear

Pole typu całkowitego, zawierające liczbę godzin, które upłynęły od momentu dostarczenia wartości typu I/O przez program komunikacyjny, przy poprawnie funkcjonującym połączeniu I/O.

Kategoria zmiennaSposób użycia Zmienna. TimeHour

Parametr Opis

Zmienna Dowolna zmienna typu Discrete, Integer, Real, Indirect Message lub Indirect Analog.

Typ danych Integer (tylko odczyt)Zakres wartości Z przedziału 0 -23.Patrz również .TimeDate, .TimeDateString, .TimeDay, .TimeDateTime, .TimeMinute,

.TimeMsec, .TimeMonth, .TimeSecond, .TimeTime, .TimeTimeString,

.TimeYear

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 153

.TimeMinute

.TimeMonth

.TimeMsec

Pole typu całkowitego, zawierające minutę, w której wartość typu I/O została dostarczona przez program komunikacyjny, przy poprawnym połączeniu.

Kategoria zmiennaSposób użycia Zmienna. TimeMinute

Parametr Opis

Zmienna Dowolna zmienna typu Discrete, Integer, Real, Indirect Message lub Indirect Analog.

Typ danych Integer (tylko odczyt)Zakres wartości Z przedziału 0 -59.Patrz również .TimeDate, .TimeDateString, .TimeDay, .TimeDateTime, .TimeHour,

.TimeMsec, .TimeMonth, .TimeSecond, .TimeTime, .TimeTimeString,

.TimeYear

Pole typu całkowitego, zawierające miesiąc, w którym wartość typu I/O została dostarczona przez program komunikacyjny, przy poprawnie funkcjonującym połączeniu.

Kategoria zmiennaSposób użycia Zmienna. TimeMonth

Parametr Opis

Zmienna Dowolna zmienna typu Discrete, Integer, Real, Indirect Message lub Indirect Analog.

Typ danych Integer (tylko odczyt)Zakres wartości Z przedziału 1 -12.Patrz również .TimeDate, .TimeDateString, .TimeDay, .TimeDateTime, .TimeHour,

.TimeMinute, .TimeMsec, .TimeSecond, .TimeTime, .TimeTimeString,

.TimeYear

Pole typu całkowitego, zawierające liczbę milisekund, w momencie gdy wartość typu I/O została dostarczona przez program komunikacyjny, przy poprawnie funkcjonującym połączeniu.

Kategoria zmiennaSposób użycia Zmienna. TimeMsec

Parametr Opis

Zmienna Dowolna zmienna typu Discrete, Integer, Real, Indirect Message lub Indirect Analog.

Typ danych Integer (tylko odczyt)Zakres wartości Z przedziału 0 -999.Patrz również .TimeDate, .TimeDateString, .TimeDay, .TimeDateTime, .TimeHour,

.TimeMinute, .TimeMonth, .TimeSecond, .TimeTime, .TimeTimeString,

.TimeYear

Opis funkcji, pól i zmiennych systemowych

154 Rozdział 2

.TimeSecond

.TimeTime

.TimeTimeString

Pole typu całkowitego, zawierające liczbę sekund, w momencie gdy wartość typu I/O została dostarczona przez program komunikacyjny, przy poprawnie funkcjonującym połączeniu.

Kategoria zmiennaSposób użycia Zmienna. TimeSecond

Parametr Opis

Zmienna Dowolna zmienna typu Discrete, Integer, Real, Indirect Message lub Indirect Analog.

Typ danych Integer (tylko odczyt)Zakres wartości Z przedziału 0 -59.Patrz również .TimeDate, .TimeDateString, .TimeDay, .TimeDateTime, .TimeHour,

.TimeMinute, .TimeMsec, .TimeMonth, .TimeTime, .TimeTimeString,

.TimeYear

Pole typu całkowitego, zawierające liczbę milisekund (od północy), w momencie gdy wartość typu I/O została dostarczona przez program komunikacyjny, przy poprawnie funkcjonującym połączeniu.

Kategoria zmiennaSposób użycia Zmienna. TimeTime

Parametr Opis

Zmienna Dowolna zmienna typu Discrete, Integer lub Real, albo zmienna typu Indirect Message.

Typ danych Integer (tylko odczyt)Zakres wartości Z przedziału 0 -86399999.Patrz również .TimeDate, .TimeDateString, .TimeDay, .TimeDateTime, .TimeHour,

.TimeMinute, .TimeMsec, .TimeMonth, .TimeSecond, .TimeTimeString,

.TimeYear

Pole typu tekstowego zawierające godzinę i datę dostarczania przez program komunikacyjny wartości zmiennej typu I/O, przy poprawnym połączeniu.

Kategoria ZmiennaSposób użycia Zmienna. TimeTimeString

Parametr Opis

Zmienna Dowolna zmienna typu Discrete, Integer lub Real, albo zmienna typu Indirect Message.

Typ danych Message (tylko odczyt)Patrz również .TimeDate, .TimeDateString, .TimeDay, .TimeDateTime, .TimeHour,

.TimeMinute, .TimeMsec, .TimeMonth, .TimeSecond, .TimeTime,

.TimeYear

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 155

.TimeYear

.TopIndex

Pole typu całkowitego, zawierające rok zapisany w postaci czterech cyfr, w którym wartość zmiennej typu I/O została dostarczona przez program komunikacyjny, przy poprawnie funkcjonującym połączeniu.

Kategoria zmiennaSposób użycia Zmienna. TimeTime

Parametr Opis

Zmienna Dowolna zmienna typu Discrete, Integer lub Real, albo zmienna typu Indirect Message.

Typ danych Integer (tylko odczyt)Zakres wartości Dowolny rok w formacie ####. Przykładowo 1998.Patrz również .TimeDate, .TimeDateString, .TimeDay, .TimeDateTime, .TimeHour,

.TimeMinute, .TimeMsec, .TimeMonth, .TimeSecond, .TimeTime,

.TimeTimeString

Pole to zawiera odpowiedni indeks (zmienną lub liczbę całkowitą) pierwszego od góry elementu w polu listy.

Kategoria obiekty sterujące WindowsSposób użycia [ErrorNumber=]GetPropertyI(" NazwaObiektu. TopIndex ",

Zmienna);[ErrorNumber=]SetPropertyI(" NazwaObiektu. TopIndex" ,Wartość);

Parametr Opis

NazwaObiektu Nazwa wizarda Na przykład ListBox_1.Zmienna Zmienna typu Integer, przechowująca wartość

właściwości w momencie realizacji funkcji.Wartość Liczba definiująca pierwszy od góry element w

polu listy.Uwagi Pole to jest dostępne tylko w czasie pracy aplikacji.Typ danych Integer (odczyt/zapis)Zastosowanie Pola listy. Przykład(y) Zamieszczona poniżej instrukcja ustawia wartość pola .TopIndex obiektu o

nazwie "ListBox_1" na wartość 14:

SetPropertyI( "ListBox_1.TopIndex",14 );

Patrz również GetPropertyI(), SetPropertyI(), .ListIndex, .NewIndex

Opis funkcji, pól i zmiennych systemowych

156 Rozdział 2

.TotalPagesPole to zawiera łączną liczbę stron (wypełnionych alarmami) w obiekcie alarmów rozproszonych.

Kategoria alarmySposób użycia [ErrorNumber=]GetPropertyI(" NazwaObiektu. TotalPages ",

Zmienna);

Parametr Opis

NazwaObiektu Nazwa obiektu alarmów rozproszonych Przykładowo, AlmObj_1.

Zmienna Zmienna typu Integer, przechowująca wartość właściwości w momencie realizacji funkcji.

Uwagi Pole to przeznaczone jest tylko do odczytu i zawiera całkowitą liczbę stron z alarmami w obiekcie wyświetlania alarmów rozproszonych o podanej nazwie.

Typ danych Integer (tylko odczyt)Przykład(y) Pole to ustawia wartość zmiennej typu Integer AlmTotalPage na sumaryczną

liczbę stron w obiekcie alarmu rozproszonego "AlmObj_1".

GetPropertyI("AlmObj_1.TotalPages",AlmTotalPages);

Patrz również GetPropertyI(), .NextPage, .PrevPage, .PageNum

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 157

.UnAckPole to umożliwia potwierdzanie alarmów lokalnych.

Kategoria alarmySposób użycia Zmienna. UnAck=0

Parametr Opis

Zmienna Dowolna zmienna typu Discrete, Integer lub Real, zmienna Indirect Analog lub Grupa Alarmowa.

Uwagi Przypisanie temu polu zmiennej wartości 0 powoduje zatwierdzenie wszystkich aktywnych alarmów, związanych z daną zmienną lub grupą. Jeśli podana zmienna jest grupą alarmową, wszystkie nie potwierdzone alarmy związane ze zmiennymi wchodzącymi w skład określonej grupy zostają potwierdzone. W przypadku gdy zmienna jest innego typu, zatwierdzony zostanie tylko niezatwierdzony alarm związany ze zmienną. Ustawienie tego pola na wartość inną niż 0 nie ma żadnego znaczenia, a wynik takiej operacji jest nieokreślony.

Typ danych Discrete (tylko do odczytu/zerowania)Zakres wartości 0Przykład(y) Podane poniżej wyrażenie powoduje zatwierdzenie dowolnego alarmu

związanego ze zmienną o nazwie Tag1.

Tag1.Unack=0;

Podane poniżej polecenie służy do zatwierdzenia wszystkich nie zatwierdzonych alarmów w obrębie grupy alarmowej o nazwie PumpStation.

PumpStation.UnAck = 0;

Uwaga: Polem o wartości przeciwnej do .Ack jest pole .UnAck. Kiedy alarm zostanie zatwierdzony, pole .Ack ustawiane jest na wartość 1.

Patrz również .Ack, Ack(), .Alarm, .AlarmAckModel

Opis funkcji, pól i zmiennych systemowych

158 Rozdział 2

.UpdateCountWartość tego pola jest zwiększana o 1 każdorazowo, gdy następuje aktualizacja trendu historycznego związanego z daną zmienną.

Kategoria dane historyczneSposób użycia Zmienna. UpdateCount

Parametr Opis

Zmienna Dowolna zmienna typu Hist Trend.Uwagi Pole to jest powiązane bezpośrednio z systemem odczytu danych

historycznych. Każdorazowo, gdy program InTouch zażąda danych dla trendu historycznego związanego z określoną zmienną typu Hist Trend, żądane dane zostają odczytane z dysku przez system odczytu danych historycznych. Po zakończeniu procesu odczytu danych, wartość tego pola jest zwiększana o 1. Pole .UpdateCount jest używane w wielu wywołaniach funkcji związanych z trendami historycznymi do rozpoczęcia uaktualniania wyników przeprowadzonych wcześniej obliczeń.

Typ danych Integer (tylko odczyt)Zakres wartości Dowolna dodatnia liczba całkowita.Przykład(y) W zamieszczonym poniżej skrypcie, funkcja HtGetValueAtScooter()

została wykorzystana do odczytu wartości wskazywanej przez pisak Pen1 w miejscu, w którym znajduje się prawy suwak. Ponieważ zmiana jednego z parametrów funkcji powoduje ponowne wyznaczenie wartości funkcji, każdorazowo po aktualizacji danych (po odczycie tych danych z dysku) i zwiększeniu wartości pola .UpdateCount o 1, wartość poniższej funkcji jest wyznaczana na nowo.

MyRealTag=HTGetValueAtScooter(MyHistTrendTag,MyHistTrendTag.UpdateCount,2,MyHistTrendTag.ScooterPosRight,1,"PenValue");

Patrz również .UpdateInProgress, .UpdateTrend

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 159

.UpdateInProgressWartość tego pola jest równa 1 podczas odczytu danych historycznych; jeżeli operacja ta nie jest realizowana, wartość jest równa 0.

Kategoria dane historyczneSposób użycia Zmienna. UpdateInProgress

Parametr Opis

Zmienna Dowolna zmienna typu Hist Trend.Uwagi Pole to jest powiązane bezpośrednio z systemem odczytu danych

historycznych. Każdorazowo, gdy program InTouch zażąda danych dla trendu historycznego związanego z określoną zmienną typu Hist Trend, żądane dane zostają odczytane z dysku przez system odczytu danych historycznych. W czasie procesu odczytywania danych z dysku, wartość tego pola zostaje ustawiona na 1. Po zakończeniu odczytu danych, pole .UpdateInProgress jest ustawiane na 0. Pole .UpdateInProgress jest używane w wielu funkcjach związanych z danymi trendów historycznych.

Większość trendów historycznych wyświetlanych na ekranie jest wyposażona w mechanizm, używany przez operatora do przewijania wyświetlanych danych. Podczas przeglądania trendu przez operatora system odczytu danych historycznych sprawdza, czy dane wyświetlane na ekranie są aktualne. Jeśli operator przewinie trend na fragment, który nie jest wyświetlany na ekranie w danej chwili, ani nie znajduje się w pamięci, system odczytu danych historycznych pobiera żądane dane z dysku. Ponieważ proces ten wymaga pewnego czasu, system umożliwia projektantowi obiektu trendu historycznego poinformowanie operatora o trwającym odczycie danych z dysku. Bez tego typu informacji operator może nie być świadomy tego, że system wykonuje wydane polecenie.

Typ danych Discrete (tylko odczyt)Zakres wartości 0 = Operacja aktualizacji nie jest w tym momencie realizowana.

1 = Operacja aktualizacji jest w trakcie realizacji.Przykład(y) Instrukcja zamieszczona poniżej jest powszechnie używana jako wyrażenie w

połączeniu animacyjnym dla obiektu tekstowego, lub na przycisku przewijania wykresu trendu historycznego. W momencie gdy moduł prezentacji danych historycznych odczytuje wymagane dane, wyrażenie to ma wartość 1. W momencie, gdy trend historyczny zostanie zaktualizowany, wyrażeniu zostanie przypisana wartość 0.

MyHistTrendTag.UpdateInProgress

Patrz również .UpdateCount, .UpdateTrend

Opis funkcji, pól i zmiennych systemowych

160 Rozdział 2

.UpdateTrend

.Value

Pole to umożliwia aktualizację wykresu trendu historycznego.Kategoria dane historyczneSposób użycia Zmienna. UpdateTrend

Parametr Opis

Zmienna Dowolna zmienna typu Hist Trend.Uwagi Trendy historyczne nie są uaktualniane automatycznie. Aby uaktualnić i

wyświetlić wartości określonych zmiennych, musi zostać zmieniony punkt początkowy wykresu lub jego długość. Jeżeli pole to zostanie przypisane do przycisku skryptu typu QuickScript, operator może uaktualnić wykres w dowolnym momencie w czasie pracy. Pole to można również zastosować w skrypcie, jeśli inne pola związane ze zmienną trendu historycznego ulegają zmianom. Zapewni to wyświetlenie zaktualizowanego trendu. Przypisanie omawianemu polu wartości różnej od 1 nie ma żadnego znaczenia, a wynik takiej operacji jest nieokreślony. Ustawienie tego pola na wartość inną niż 1 nie ma żadnego znaczenia, a wynik takiej operacji jest nieokreślony.

Typ danych Discrete (tylko zapis)Zakres wartości 1Przykład(y) Instrukcja zamieszczona poniżej powoduje uaktualnienie trendu

historycznego związanego ze zmienną typu HistTrendTag o nazwie MyHistTrendTag.

MyHistTrendTag.UpdateTrend=1;

Pole to zawiera wartość danej zmiennej. Jest to również domyślne pole dla każdej zmiennej programu InTouch. Jeśli nie jest użyte inne pole, zakłada się, że użytkownik posługuje się tym polem.

Kategoria zmiennaSposób użycia Zmienna. Value

Parametr OpisZmienna Dowolna zmienna za wyjątkiem zmiennych typu

HistTrend.Uwagi Jest to domyślne pole dla każdej zmiennej programu InTouch. Jeśli nie jest

użyte inne pole, zakłada się, że użytkownik posługuje się tym polem. Rzadko występuje konieczność korzystania z tego pola. Jednakże, w niektórych przypadkach pole to umożliwia jaśniejszy zapis wyników obliczeń lub parametrów.

Typ danych Zależy od typu zmiennej (odczyt/ zapis).Przykład(y) Instrukcja zamieszczona poniżej ustawia wartość zmiennej typu Memory

Integer o nazwie MyTag na wartość 100:Tagname.Value=100;

Wyrażenie to jest funkcjonalnie identyczne z:Tagname=100;

Opis funkcji, pól i zmiennych systemowych

Pola zmiennych 161

.ValueDomyślna właściwość dla wszystkich wizardów obiektów sterujących Windows. Zmiany tej właściwości zsynchronizowane są z zmiennymi InTouch, oraz z wizardami obiektów sterujących Windows.

Kategoria obiekty sterujące WindowsSposób użycia [ErrorNumber=]GetPropertyM(" NazwaObiektu[ .Value ]", Zmienna

);[ErrorNumber=]SetPropertyM(" NazwaObiektu[ .Value ]", Wartość);[ErrorNumber=]GetPropertyI(" NazwaObiektu[. Value ]", Zmienna);[ErrorNumber=]SetPropertyI(" NazwaObiektu[ .Value ]", Wartość);[ErrorNumber=]GetPropertyD(" NazwaObiektu[ .Value ]", Zmienna);[ErrorNumber=]SetPropertyD(" NazwaObiektu[ .Value ]", Wartość);

Uwaga Wartość początkowa zmiennej powiązanej z polami listy, lub listą rozwijalną nie może być wykorzystana do inicjalizowania wartości tych pól listy lub listy rozwijalnej.Parametr Opis

NazwaObiektu Nazwa obiektu sterującego okna, np. ChkBox_4.Zmienna Zdefiniowana zmienna zawierająca liczbę

elementów na liście.[.Value] Właściwość ta jest opcjonalna. Jeżeli jej wartość nie

zostanie określona, funkcja będzie domyślnie przyjmować, że wykorzystywane jest pole .Value.

Wartość Aktualna wartość do zapisania lub zdefiniowana zmienna (takiego samego typu jak właściwość do zapisania), przechowująca wartość właściwości do zapisania w momencie wykonywania funkcji.

Uwagi Pole to umożliwia zapis i odczyt zarówno w czasie pracy aplikacji, jak i w czasie jej edycji. Jeśli pole .Value jest wykorzystywane w związku z polem listy (List box) lub listą rozwijalną (Combo box), umożliwia tylko odczyt. Jeśli pole .Value jest wykorzystywane w połączeniu z polem wyboru, polem wyboru wykluczającego lub polem tekstowym, można zarówno odczytywać jak również zmieniać jego wartość. Wartość wprowadzona w trakcie edycji aplikacji, przyjmowana jest jako wartość domyślna w trakcie pracy aplikacji.

Typ danych Message (zapis/ odczyt) dla pól tekstowych, pól listy i list rozwijalnych.Integer (zapis/ odczyt) dla pól wyboru wykluczającego.Discrete (zapis/ odczyt) dla pól wyboru.

Zastosowanie Pola tekstowe , pola list , listy rozwijane , pola wyboru i pola wyboru wykluczającego .

Przykład(y) Zamieszczona poniżej instrukcja ustawia wartość pola .Value obiektu pole wyboru wykluczającego o nazwie "RadioButton_1" na wartość 4.SetPropertyI( "RadioButton_1.Value",4 );

Patrz również GetPropertyM(), SetPropertyM(), GetPropertyI(), SetPropertyI(), GetPropertyD(), SetPropertyD()

Opis funkcji, pól i zmiennych systemowych

162 Rozdział 2

.VisibleWłaściwość ta określa, czy obiekt jest widoczny w oknie.

Kategoria obiekty sterujące WindowsSposób użycia [ErrorNumber=]GetPropertyD(" NazwaObiektu. Visible ", Zmienna

);[ErrorNumber=]SetPropertyD(" NazwaObiektu. Visible ", Wartość);

Parametr Opis

NazwaObiektu Nazwa wizarda Na przykład ListBox_1.Zmienna Zdefiniowana zmienna programu InTouch (takiego

samego typu jak typ zwracany), przechowująca wartość właściwości w momencie realizacji funkcji.

Number Wartość dyskretna, lub zmienna typu Discrete przechowująca wartość do zapisu w momencie wykonywania funkcji.

Uwagi Pole to przeznaczone jest do zapisu/ odczytu zarówno w trakcie edycji aplikacji jak również w momencie wykonywania aplikacji.

Typ danych Discrete (odczyt/zapis)Zakres wartości 0 = Obiekt jest niewidoczny

1 = Obiekt jest widocznyZastosowanie Pola tekstowe , pola list , listy rozwijane , pola wyboru i pola wyboru

wykluczającego . Przykład(y) Instrukcja zamieszczona poniżej ukrywa pole tekstowe o nazwie

"TextBox_1".

SetPropertyD( "TextBox_1.Visible",0 );

Patrz również GetPropertyD(), SetPropertyD()

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 163

R O Z D Z I A Ł 3

Funkcje skryptowe

Jednym z najbardziej istotnych elementów funkcjonalności aplikacji InTouch jest możliwość korzystania ze skryptów QuickScript. Skrypty dają możliwość wykonywania poleceń, oraz operacji logicznych, w zależności od spełnienia określonych kryteriów. Przykładowo, wciśnięcie klawisza może powodować otwarcie okna, zmianę wartości zmiennej, itd.

Funkcje QuickFunction są skryptami InTouch QuickScript wywoływanymi z innych skryptów QuickScript i wyrażeń połączeń animacyjnych. Kod źródłowy takiej funkcji zapisany jest w jednym miejscu, tak więc jej edycja umożliwia wprowadzenie zmian we wszystkich aplikacjach, w których funkcja taka jest wywoływana.

Uwaga: Aby wymusić uaktualnienie połączenia animacyjnego, jako parametr funkcji QuickFunction należy użyć zmiennej, pełniącej rolę wyzwalacza. Przykładowo, użycie jako parametru funkcji QuickFunction zmiennej $Second spowoduje, że wyrażenie przypisane do połączenia animacyjnego będzie sprawdzane każdorazowo przy zmianie wartości zmiennej $Second, dzięki czemu funkcja będzie wywoływana co 1 sekundę.

Skrypty QuickScript umożliwiają utworzenie szeregu zautomatyzowanych funkcji systemowych, dostosowanych do potrzeb użytkownika.

Opis funkcji, pól i zmiennych systemowych

164 Rozdział 3

Abs()

Ack()

Zwraca wartość bezwzględną danej liczby.Kategoria funkcje matematyczneSkładnia Result=Abs(Number);

Parametr OpisNumber Dowolna liczba, zmienna rzeczywista (Real) lub

całkowita (Integer) programu InTouch.Uwagi Obliczana jest wartość absolutna z Number i zwracana do zmiennej Result.Przykład(y) Abs(14) daje w wyniku 14

Abs(-7.5) daje w wyniku 7.5

Funkcja ta służy do zatwierdzania lokalnych alarmów programu InTouch.Kategoria alarmySkładnia Ack Tagname;

Parametr OpisZmienna Dowolna zmienna, grupa alarmowa (Alarm

Group) lub zmienna grupowa (Group Var).Uwagi Funkcja ta może być użyta w odniesieniu do zmiennej, grupy alarmowej

lub zmiennej grupowej. (Zmienna grupowa jest zmienną, której wartości są nazwami grup alarmowych).

Przykład(y) Poniższe instrukcje można zastosować w powiązaniu z przyciskiem, w celu zatwierdzenia dowolnego, nie potwierdzonego alarmu:Ack $System; (zatwierdzenie wszystkich alarmów)

Ack Tagname;

Ack GroupName;

Ack GroupVariable;

Patrz również almAckAll(), almAckGroup() almAckTag(), almAckDisplay(), almAckRecent(), almAckPriority(). almAckSelect(), almAckSelectedGroup(), almAckSelectedPriority(), almAckSelectedTag()

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 165

ActivateApp()

AddPermission()

Funkcja ta służy do uaktywnienia innej uruchomionej aplikacji Windows. Kategoria systemSkładnia ActivateApp TaskName;

Parametr OpisTaskName Nazwa aplikacji, która ma zostać uaktywniona za

pomocą funkcji.Uwagi TaskName jest ciągiem znaków (włącznie ze spacjami), który jest

wyświetlany na Pasku Zadań lub w Menadżerze Zadań (uruchamianym w Windows NT poprzez kliknięcie prawym klawiszem myszy na Pasku Zadań i wybraniu Menadżera Zadań, lub przez wciśnięcie kombinacji klawiszy Ctrl+Alt+Delete).

Przykład(y) Poniżej podano przykład sprawdzenia, czy linia poleceń jest aktywna. Jeżeli jest aktywna, jest przenoszona na pierwszy plan i aktywowana. W przeciwnym wypadku, linia poleceń jest uruchamiana, wraz z automatycznym wywoływaniem programu systemu DOS edit.com. IF InfoAppActive( InfoAppTitle("cmd")) == 1 THENActivateApp InfoAppTitle("cmd");ELSEStartApp "cmd /c edit";ENDIF;

Patrz również StartApp(), InfoAppTitle()

Próbuje uzyskać dostęp do konta znajdującego się w domenie Domain.Kategoria bezpieczeństwoSkładnia DiscreteTag=AddPermission( "Domena", "Grupa",

AccessLevel);

Parametr OpisDomena Nazwa domeny lub lokalnego komputera gdzie

znajduje się grupa.Grupa Grupa użytkowników Windows.AccessLevel Poziom dostępu programu InTouch, który jest

związany z podaną grupąUwagi Właściwy dla systemu bezpieczeństwa opartego na systemie operacyjnym.

Próbuje uzyskać dostęp do konta znajdującego się w domenie Domain. Jeżeli wywołanie zakończy się sukcesem, zwracana jest wartość PRAWDA a poziom dostępu AccessLevel zostaje przypisany do konta i wykorzystany gdy użytkownik zaloguje się. We wszystkich innych wypadkach zwracana jest wartość FAŁSZ.

Przykład(y) DiscreteTag=AddPermission( "wonderware_hq", "InTouchAdmins", 9000);DiscreteTag=AddPermission( "ravih01", "InTouchUsers", 5000);

Patrz również PostLogonDialog(), InvisibleVerifyCredentials(), IsAssignedRole(), AttemptInvisibleLogon(), QueryGroupMembership().

Opis funkcji, pól i zmiennych systemowych

166 Rozdział 3

almAckAll()

almAckDisplay()

Funkcja ta służy do potwierdzenia wszystkich alarmów z aktualnej kolejki alarmów, włącznie z tymi, które nie są aktualnie wyświetlane w oknie obiektu alarmowego.

Kategoria alarmySkładnia [Result=]almAckAll(ObjectName,Comment);

Parametr OpisObjectName Nazwa obiektu alarmowego. Przykładowo,

AlmObj_1.Comment Komentarz do zatwierdzania alarmu.

Uwagi Kody błędów dla funkcji tego typu można znaleźć w rozdziale Załącznik A.

Przykład(y) MessageTag = “Acknowledge All by” + $Operator;

almAckAll(“AlmObj_1”, MessageTag);

Patrz również Ack(), almAckGroup(), almAckTag(), almAckDisplay(), almAckRecent(), almAckSelect(), almAckSelectedGroup(), almAckSelectedPriority(), almAckSelectedTag()

Zatwierdzenie tylko tych alarmów, które aktualnie są widoczne na ekranie.Kategoria alarmySkładnia [Result=]almAckDisplay(ObjectName,Comment);

Parametr OpisObjectName Nazwa obiektu alarmowego. Przykładowo,

AlmObj_1.Comment Komentarz do zatwierdzania alarmu.

Uwagi Kody błędów dla funkcji tego typu można znaleźć w rozdziale Załącznik A.

Przykład(y) almAckDisplay(“AlmObj_1”, “Display Acknowledgement”);

Patrz również Ack(), almAckAll(), almAckGroup(), almAckTag(), almAckRecent(), almAckSelect(), almAckSelectedGroup(), almAckSelectedPriority(), almAckSelectedTag()

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 167

almAckGroup()Funkcja ta służy do zatwierdzania wszystkich alarmów zawartych w Instancji obiektu alarmów rozproszonych o określonej nazwie jako wynik ostatniego zapytania i gdzie powstały alarm zawiera tą samą nazwę grupy alarmu i dostawcy.

Kategoria alarmySkładnia [Result=]almAckGroup(ObjectName, ApplicationName,

GroupName, Comment);

Parametr OpisObjectName Nazwa obiektu alarmowego. Przykładowo,

AlmObj_1.ApplicationName Nazwa aplikacji wraz ze ścieżką dostępu,

przykładowo \\node1\IntouchGroupName Nazwa grupy alarmowej, przykładowo $SystemComment Komentarz do zatwierdzania alarmu.

Uwagi Kody błędów dla funkcji tego typu można znaleźć w rozdziale Załącznik A.

Przykład(y) MessageTag = “Acknowledge group, Turbines, by” + $Operator; almAckGroup(“AlmObj_1”, “\Intouch”, “Turbine”, MessageTag);

Patrz również Ack(), almAckAll(), almAckDisplay(), almAckTag(), almAckRecent(), almAckPriority(), almAckSelect(), almAckSelectedGroup(), almAckSelectedPriority(), almAckSelectedTag()

Opis funkcji, pól i zmiennych systemowych

168 Rozdział 3

almAckPriority()

almAckRecent()

Funkcja ta służy do zatwierdzania wszystkich alarmów wszystkich alarmów zawartych w instancji obiektu alarmów rozproszonych o określonej nazwie jako wynik wyświetlania ostatniego zapytania i gdzie powstałe alarmy są alarmami z określonego zakresu priorytetów, mających tą samą nazwę dostawcy i grupy.

Kategoria alarmySkładnia [Result=]almAckPriority(ObjectName, ApplicationName,

GroupName, FromPri, ToPri, Comment);

Parametr OpisObjectName Nazwa obiektu alarmowego. Przykładowo,

AlmObj_1.ApplicationName Nazwa aplikacji wraz ze ścieżką dostępu,

przykładowo \\node1\IntouchGroupName Nazwa grupy alarmowej, przykładowo $SystemFromPri Dolna wartość priorytetu alarmów. Przykładowo

100.ToPri Górna wartość priorytetu alarmów. Przykładowo

900.Comment Komentarz do zatwierdzania alarmu.

Uwagi Kody błędów dla funkcji tego typu można znaleźć w rozdziale Załącznik A.

Przykład(y) almAckPriority(“AlmObj_1”,“\\node1\Intouch”, “Turbines”, 10, 100, “almAckPriorityComment”);

Patrz również Ack(), almAckAll(), almAckGroup(), almAckTag(), almAckDisplay(), almAckSelect(), almAckSelectedGroup(), almAckSelectedPriority(), almAckSelectedTag()

Funkcja ta służy do zatwierdzania najnowszych alarmów.Kategoria alarmySkładnia [Result=]almAckRecent(ObjectName,Comment);

Parametr OpisObjectName Nazwa obiektu alarmowego. Przykładowo,

AlmObj_1.Comment Komentarz do zatwierdzania alarmu.

Uwagi Kody błędów dla funkcji tego typu można znaleźć w rozdziale Załącznik A.

Przykład(y) almAckRecent(“AlmObj_1”, $DateString);

Patrz również Ack(), almAckAll(), almAckGroup(), almAckTag(), almAckDisplay(), almAckSelect(), almAckSelectedGroup(), almAckSelectedPriority(), almAckSelectedTag()

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 169

almAckSelect()

almAckSelectedGroup()

Funkcja ta służy do zatwierdzania tylko alarmów zaznaczonych w oknie aktualnie aktywnego obiektu alarmowego.

Kategoria alarmySkładnia [Result=]almAckSelect(ObjectName,Comment);

Parametr OpisObjectName Nazwa obiektu alarmowego. Przykładowo,

AlmObj_1.Comment Komentarz do zatwierdzania alarmu.

Uwagi Kody błędów dla funkcji tego typu można znaleźć w rozdziale Załącznik A.

Przykład(y) IF ($Hour > 0 and $Hour < 8) THENAckTag = “NightShift”;

ELSEAckTag = “Day Shift”;

ENDIF;

almAckSelect (“AlmObj_1”,AckTag);

Patrz również Ack(), almAckAll(), almAckGroup(), almAckTag(), almAckDisplay(), almAckRecent(), almAckSelectedGroup(), almAckSelectedPriority(), almAckSelectedTag()

Funkcja ta służy do zatwierdzenia wszystkich alarmów z tymi samymi nazwami dostawcy i grupy, mających tą samą nazwę grupy jak jeden lub więcej alarmów wybranych w instancji obiektu alarmów rozproszonych o określonej nazwie.

Kategoria alarmySkładnia [Result=]almAckSelectedGroup(ObjectName,Comment);

Parametr OpisObjectName Nazwa obiektu alarmowego. Przykładowo,

AlmObj_1.Comment Komentarz do zatwierdzania alarmu.

UwagiPrzykład(y) MessageTag = “Acknowledge selected groups by” +

$Operator;

almAckSelectedGroup (“AlmObj_1”, MessageTag);

Patrz również Ack(), almAckAll(), almAckGroup(), almAckTag(), almAckDisplay(), almAckRecent(), almAckSelect(), almAckSelectedPriority(), almAckSelectedTag()

Opis funkcji, pól i zmiennych systemowych

170 Rozdział 3

almAckSelectedPriority()

almAckSelectedTag()

Funkcja ta służy do zatwierdzenia wszystkich alarmów z tymi samymi nazwami dostawcy i grupy, mających tą samą wartość priorytetu jak jeden lub więcej alarmów wybranych w instancji obiektu alarmów rozproszonych o określonej nazwie.

Kategoria alarmySkładnia [Result=]almAckSelectedPriority(ObjectName, Comment);

Parametr OpisObjectName Nazwa obiektu alarmowego. Przykładowo,

AlmObj_1.Comment Komentarz do zatwierdzania alarmu.

Uwagi Wartości priorytetów są obliczane na podstawie danych pobranych z wybranych rekordów alarmów. Pod uwagę brane są minimalne (Min) i maksymalne (Max) wartości priorytetów.

Przykład(y) MessageTag = “Acknowledge selected priorities by” + $Operator;

almAckSelectedPriority (“AlmObj_1”, MessageTag);

Patrz również Ack(), almAckAll(), almAckGroup(), almAckTag(), almAckDisplay(), almAckRecent(), almAckSelect(), almAckSelectedGroup(), almAckSelectedTag()

Funkcja ta służy do zatwierdzania wszystkich alarmów przypisanych do tej samej zmiennej, o tej samej nazwie dostawcy i grupy, mających tą samą wartość priorytetu jak jeden lub więcej alarmów wybranych w Instancji obiektu alarmów rozproszonych o określonej nazwie.

Kategoria alarmySkładnia [Result=]almAckSelectedTag(ObjectName,Comment);

Parametr OpisObjectName Nazwa obiektu alarmowego. Przykładowo,

AlmObj_1.Comment Komentarz do zatwierdzania alarmu.

UwagiPrzykład(y) MessageTag = “Acknowledge selected tagnames by” +

$Operator;

almAckSelectedTag (“AlmObj_1”, MessageTag);

Patrz również Ack(), almAckAll(), almAckGroup(), almAckTag(), almAckDisplay(), almAckRecent(), almAckSelect(), almAckSelectedGroup(), almAckSelectedPriority()

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 171

almAckTag()Funkcja ta służy do zatwierdzania wszystkich alarmów powstałych w instancji obiektu alarmów rozproszonych o określonej nazwie jako rezultat wyświetlania ostatniego zapytania i zmiennej.

Kategoria alarmySkładnia [Result=]almAckTag(ObjectName, ApplicationName,

GroupName, Tagname, FromPri, ToPri, Comment);

Parametr OpisObjectName Nazwa obiektu alarmowego. Przykładowo,

AlmObj_1.ApplicationName Nazwa aplikacji wraz ze ścieżką dostępu.

Przykładowo, \\node1\Intouch.GroupName Nazwa grupy. Przykładowo może to być $System.Tagname Nazwa zmiennej alarmu.FromPri Dolna wartość priorytetu alarmów. Przykładowo 100.ToPri Górna wartość priorytetu alarmów. Przykładowo

900.Comment Komentarz do zatwierdzania alarmu.

UwagiPrzykład(y) almAckTag(“AlmObj_1”, “\\node1\Intouch”, “Turbines”,

“Valve1”, 10, 100, “Value”, “LoLo”, “almAckTagComment”);

Patrz również Ack(), almAckAll(), almAckGroup(), almAckDisplay(), almAckRecent(), almAckSelect(), almAckSelectedGroup(), almAckSelectedPriority(), almAckSelectedTag()

Opis funkcji, pól i zmiennych systemowych

172 Rozdział 3

almDefQuery()

almMoveWindow()

Funkcja ta powoduje wykonanie zapytania w celu zaktualizowania instancji obiektu alarmów rozproszonych o określonej nazwie przy użyciu domyślnych parametrów.

Kategoria alarmySkładnia [Result=]almDefQuery(ObjectName);

Parametr OpisObjectName Nazwa obiektu alarmowego, np. AlmObj_1.

Uwagi Domyślne parametry zapytania o alarmy są podawane w czasie edycji aplikacji. Kody błędów dla funkcji tego typu można znaleźć w rozdziale Załącznik A.

Przykład(y) almDefQuery(“AlmObj_1”);

Patrz również almQuery(), almSetQueryByName()

Funkcja ta powoduje przewinięcie okna instancji obiektu alarmów rozproszonych o określonej nazwie.

Kategoria alarmySkładnia [Result=]almMoveWindow(ObjectName,Options,Repeat);

Parametr OpisObjectName Nazwa obiektu alarmowego. Przykładowo,

AlmObj_1.Option Rodzaj przewijania alarmówPAGEtype of alarm

acknowledge to perform.Typ OpisLineDn O jedną linię w dół.LineUp O jedną linię w górę.PageDn O jedną stronę w dół.PageUp O jedną stronę w górę.Up Do początku listy.Bottom Do końca listy.PageRt O jedna stronę w prawo.PageLf O jedna stronę w lewo.Right Do końca listy w prawą stronę.Left Do końca listy w lewą stronę.

Repeat Liczba powtórzeń operacji.Uwagi Kody błędów dla tych funkcji można znaleźć w rozdziale Załącznik A.Przykład(y) almMoveWindow(“AlmObj_1”, ”Bottom”, 0);

almMoveWindow(“AlmObj_1”, ”LineDn”, 3);

almMoveWindow(“AlmObj_1”, ”PageUp”, 0);

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 173

almQuery()Funkcja ta powoduje wysłanie zapytania w celu zaktualizowania instancji obiektu alarmów rozproszonych o określonej nazwie.

Kategoria alarmySkładnia [Result=]almDefQuery(ObjectName,AlarmList,FromPri,

ToPri,State,Type);

Parametr OpisObjectName Nazwa obiektu alarmowego. Przykładowo,

AlmObj_1.AlarmList Definiuje alias Alarm Query/Name Manager do

wykonania zapytania w oparciu np. o "\intouch!$System" lub o zmienną typu Message (tekstową).

FromPri Dolna wartość priorytetu alarmów do wyświetlania. Przykładowo, 100, lub zmienna typu integer.

ToPri Górna wartość priorytetu alarmów do wyświetlania. Przykładowo, 900, lub zmienna typu integer.

State Rodzaj alarmów, które mają być wyświetlone. Przykładowo, "UnAck" lub zmienna tekstowa. Dopuszczalnymi statusami są All, UnAck, oraz Ack.

Typ Określa typ zapytania, przykładowo, "Hist" (Alarmy historyczne"), lub "Summ" (Alarmy bieżące).PAGECzy Alarm Summary === Alarmy bieżące

Uwagi Kody błędów dla funkcji tego typu można znaleźć w rozdziale Załącznik A.

Przykład(y) Poniższa instrukcja powoduje wyświetlenie wszystkich alarmów historycznych określonych w grupie MyAlarmListGroup o priorytecie zawartym pomiędzy 500 i 600. Alarmy będą wyświetlane przez obiekt o nazwie "AlmObj_1."almQuery("AlmObj_1","MyAlarmListGroup",500,600,"All","Hist");

Poniżej podano przykłady prawidłowej składni parametrów AlarmList.MyAlarmList

Gdzie MyAlarmList jest listą alarmów konfigurowaną z poziomu Manager nazw.\intouch!GroupA

Gdzie GroupA oznacza grupę alarmową zdefiniowaną na stacji lokalnej. \\NodeXInTouch!GroupB

Gdzie GroupB oznacza grupę alarmową definiowaną na stacji X. Patrz również almDefQuery(), almSetQueryByName()

Opis funkcji, pól i zmiennych systemowych

174 Rozdział 3

almSelectAll()

almSelectGroup()

Funkcja ta zaznacza (podświetla) wszystkie alarmy w instancji obiektu alarmów rozproszonych o określonej nazwie.

Kategoria alarmySkładnia [Result=]almSelectAll(ObjectName);

Parametr OpisObjectName Nazwa obiektu alarmowego. Przykładowo,

AlmObj_1.Uwagi Kody błędów dla funkcji tego typu można znaleźć w rozdziale Załącznik

A.Przykład(y) If $AccessLevel > 8000 THEN

almSelectAll(“AlmObj_1”);almAckSelect(“AlmObj_1”, “Ack Selected by a Manager”);

ENDIF;

Patrz również almSelectItem(), almSelectGroup(), almSelectPriority(), almSelectTag(), almUnSelectAll()

Zaznacza (podświetla) wszystkie alarmy zawarte w instancji obiektu alarmów rozproszonych o określonej nazwie jako wynik wyświetlania ostatniego zapytania i gdzie powstały alarm zawiera tą samą nazwę grupy.

Kategoria alarmySkładnia [Result=]almSelectGroup(ObjectName, ApplicationName,

GroupName);

Parametr OpisObjectName Nazwa obiektu alarmowego. Przykładowo,

AlmObj_1.ApplicationName Nazwa aplikacji wraz ze ścieżką dostępu.

Przykładowo, \\node1\Intouch.GroupName Nazwa grupy. Przykładowo może to być $System.

Uwagi Kody błędów dla funkcji tego typu można znaleźć w rozdziale Załącznik A.

Przykład(y) almSelectGroup(“AlmObj_1”, “\InTouch”, “Turbine”);

Patrz również almSelectAll(), almSelectItem(), almSelectPriority(), almSelectTag(), almUnSelectAll()

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 175

almSelectionCount()

almSelectItem()

almSelectPriority()

Zwraca liczbę zaznaczonych w obiekcie alarmów.Składnia [Result=]almSelectionCount(ObjectName);

Parametr OpisObjectName Nazwa obiektu alarmowego, np. AlmObj_1.

Przykład(y) Tag1 = almSelectionCount(“AlmObj_1”);

Odwraca zaznaczenie podświetlonego elementu w obiekcie alarmowym.Kategoria alarmySkładnia [Result=]almSelectItem(ObjectName);

Parametr OpisObjectName Nazwa obiektu alarmowego. Przykładowo,

AlmObj_1.Uwagi Kody błędów dla tych funkcji można znaleźć w rozdziale Załącznik A.Przykład(y) almSelectItem(“AlmObj_1”);

Patrz również almSelectAll(), almSelectGroup(), almSelectPriority(), almSelectTag(), almUnSelectAll()

Funkcja ta zaznacza wszystkie alarmy zawarte w instancji obiektu alarmów rozproszonych o określonej nazwie jako wynik wyświetlania ostatniego zapytania i gdzie powstałe alarmy są alarmami o priorytecie z podanego zakresu.

Kategoria alarmySkładnia [Result=]almSelectPriority (ObjectName,

ApplicationName, GroupName, FromPri, ToPri);

Parametr OpisObjectName Nazwa obiektu alarmowego. Przykładowo,

AlmObj_1.ApplicationName Nazwa aplikacji wraz ze ścieżką dostępu.

Przykładowo, \\node1\Intouch.GroupName Nazwa grupy. Przykładowo może to być $System.FromPri Dolna wartość priorytetu alarmów. Przykładowo,

100, lub zmienna typu integer.ToPri Górna wartość priorytetu alarmów. Przykładowo,

900, lub zmienna typu integer.Przykład(y) almSelectPriority(“AlmObj_1”, “\\node1\Intouch”,

“Turbines”, 10, 100);

Patrz również almSelectAll(), almSelectItem(), almSelectGroup(), almSelectTag(), almUnSelectAll()

Opis funkcji, pól i zmiennych systemowych

176 Rozdział 3

almSelectTag()

almSetQueryByName()

Funkcja ta zaznacza wszystkie alarmy zawarte w obiekcie alarmów rozproszonych o określonej nazwie jako wynik wyświetlania ostatniego zapytania i danej zmiennej.

Kategoria alarmySkładnia [Result=]almSelectTag (ObjectName, ApplicationName,

GroupName, Tagname, FromPri, ToPri);

Parametr OpisObjectName Nazwa obiektu alarmowego. Przykładowo,

AlmObj_1.ApplicationName Nazwa aplikacji wraz ze ścieżką dostępu.

Przykładowo, \\node1\Intouch.GroupName Nazwa grupy. Przykładowo może to być $System.Tagname Nazwa zmiennej alarmu.FromPri Dolna wartość priorytetu alarmów. Przykładowo,

100, lub zmienna typu integer.ToPri Górna wartość priorytetu alarmów. Przykładowo,

900, lub zmienna typu integer.UwagiPrzykład(y) almSelectTag(“AlmObj_1”, “\\node1\Intouch”, “Turbines”,

“Valve1”, 10, 100);

Patrz również almSelectAll(), almSelectItem(), almSelectGroup(), almSelectPriority(), almUnSelectAll()

Funkcja ta powoduje rozpoczęcie nowego zapytania alarmowego dla obiektu alarmów rozproszonych o określonej nazwie z wykorzystaniem parametrów zapytania związanych z nazwą zapytania (wykorzystywanego najczęściej) zdefiniowanego przez użytkownika.

Kategoria alarmySkładnia [Result=]almSetQueryByName(ObjectName, QueryName);

Parametr OpisObjectName Nazwa obiektu alarmowego. Przykładowo,

AlmObj_1.QueryName Nazwa zapytania stworzona przy pomocy

"Ulubione".Uwagi Zapytanie to dotyczy określonego obiektu alarmów rozproszonych. Na

ekranie może być wyświetlane kilka obiektów, każdy z osobnym, własnym zapytaniem.

Przykład(y) almSetQueryByName(“AlmObj_1”, “Turbine Queries”);

Patrz również almQuery(), almDefQuery()

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 177

almShowStats()

almSuppressAll()

Wyświetla ekran z informacjami statystycznymi obiektu alarmowego.Kategoria alarmySkładnia [Result=]almShowStats(ObjectName);

Parametr OpisObjectName Nazwa obiektu alarmowego. Przykładowo,

AlmObj_1.Uwagi Kody błędów dla funkcji tego typu można znaleźć w rozdziale Załącznik

A.Przykład(y) almShowStats(“AlmObj_1”);

Funkcja ta wstrzymuje wyświetlanie wszystkich aktualnych i przyszłych alarmów w bieżącym zapytaniu, łącznie z tymi, które aktualnie nie są wyświetlane w oknie aktywnego obiektu wyświetlania alarmów.

Kategoria alarmySkładnia [Result=] almSuppressAll(ObjectName);

Parametr OpisObjectName Nazwa obiektu alarmowego. Przykładowo,

AlmObj_1.Uwagi Funkcja ta działa identycznie jak almAckAll(), identyfikując alarmy do

wstrzymania poprzez identyfikację wszystkich alarmów które byłyby widoczne na ekranie podczas przewijania.

Przykład(y) almSuppressAll(“AlmObj_1”);

Patrz również almSuppressGroup(), almSuppressTag(), almSuppressDisplay(), almSuppressPriority(), almSuppressRetain(), almSuppressSelected(), almSuppressSelectedGroup(), almSuppressSelectedPriority(), almSuppressSelectedTag(), almUnSuppressAll()

Opis funkcji, pól i zmiennych systemowych

178 Rozdział 3

almSuppressGroup()

almSuppressDisplay()

Funkcja ta wstrzymuje wyświetlanie bieżących i przyszłych zdarzeń alarmów należących do grupy alarmów o danej nazwie.

Kategoria alarmySkładnia [Result=]almSuppressGroup(ObjectName, ApplicationName,

GroupName);

Parametr OpisObjectName Nazwa obiektu alarmowego. Przykładowo,

AlmObj_1.ApplicationName Nazwa aplikacji wraz ze ścieżką dostępu.

Przykładowo, \\node1\InTouch.GroupName Nazwa grupy. Przykładowo $System.

Przykład(y) almSuppressGroup(“AlmObj_1”, “\InTouch”, “Turbines”);

Patrz również almSuppressAll(), almSuppressTag(), almSuppressDisplay(), almSuppressPriority(), almSuppressRetain(), almSuppressSelected(), almSuppressSelectedGroup(), almSuppressSelectedPriority(), almSuppressSelectedTag(), almUnSuppressAll()

Funkcja ta wstrzymuje wyświetlanie bieżących i przyszłych zdarzeń alarmów widocznych w oknie aktualnie aktywnego obiektu alarmowego.

Kategoria alarmySkładnia [Result=]almSuppressDisplay(ObjectName);

Parametr OpisObjectName Nazwa obiektu alarmowego. Przykładowo,

AlmObj_1.Uwagi Funkcja ta działa identycznie jak odpowiadająca jej funkcja

almAckDisplay() identyfikując alarmy do wstrzymania poprzez identyfikację wszystkich aktualnie wyświetlanych alarmów.

Przykład(y) almSuppressDisplay(“AlmObj_1”);

Patrz również almSuppressAll(), almSuppressGroup(), almSuppressTag(), almSuppressPriority(), almSuppressRetain(), almSuppressSelected(), almSuppressSelectedGroup(), almSuppressSelectedPriority(), almSuppressSelectedTag(), almUnSuppressAll()

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 179

almSuppressPriority()

almSuppressRetain()

Funkcja ta wstrzymuje wyświetlanie bieżących i przyszłych zdarzeń dowolnego alarmu z podanego zakresu priorytetu, mających tę samą nazwę dostawcy i nazwę grupy.

Kategoria alarmySkładnia [Result=]almSuppressPriority(ObjectName,

ApplicationName, GroupName, FromPri, ToPri);

Parametr OpisObjectName Nazwa obiektu alarmowego, np. AlmObj_1.ApplicationName Nazwa aplikacji wraz ze ścieżką dostępu.

Przykładowo, \\node1\Intouch.GroupName Nazwa grupy. Przykładowo może to być $System.FromPri Dolna wartość priorytetu alarmów. Przykładowo,

100, lub zmienna typu integer.ToPri Górna wartość priorytetu alarmów. Przykładowo,

900, lub zmienna typu integer.Przykład(y) almSuppressPriority(“AlmObj_1”, “\\node1\Intouch”,

“Turbines”, 10, 100);

Patrz również almSuppressAll(), almSuppressGroup(), almSuppressTag(), almSuppressDisplay(), almSuppressRetain(), almSuppressSelected(), almSuppressSelectedGroup(), almSuppressSelectedPriority(), almSuppressSelectedTag(), almUnSuppressAll()

Funkcja ta powstrzymuje wstrzymywanie wyświetlanie alarmu dla wszystkich nadchodzących zapytań alarmowych.

Kategoria alarmySkładnia [Result=]almSuppressRetain (ObjectName,

SuppressionRetainFlag);

Parametr OpisObjectName Nazwa obiektu alarmowego, np. AlmObj_1.SuppressionRetainFlag Dowolna zmienna typu Discrete lub Analog, 0

lub wartość różna od zera. Flaga przyjmuje wartość TRUE w przypadku gdy informacja o likwidacji jest powstrzymywana dla wszystkich nadchodzących zapytań, w przeciwnym wypadku przyjmuje wartość FALSE.

Uwagi Jeśli wartość flagi wynosi 0 i zapytanie alarmowe zmienia się, filtry wstrzymywania wyświetlania alarmów zostają odrzucone.

Przykład(y) almSuppressRetain(“AlmObj_1”, TRUE);

Patrz również almSuppressAll(), almSuppressGroup(), almSuppressTag(), almSuppressDisplay(), almSuppressPriority(), almSuppressSelected(), almSuppressSelectedGroup(), almSuppressSelectedPriority(), almSuppressSelectedTag(), almUnSuppressAll()

Opis funkcji, pól i zmiennych systemowych

180 Rozdział 3

almSuppressSelected()

almSuppressTag()

Funkcja ta wstrzymuje wyświetlanie przyszłych zdarzeń alarmów wybranych w oknie aktualnie aktywnego obiektu alarmowego.

Kategoria alarmySkładnia [Result=]almSuppressSelected (ObjectName);

Parametr OpisObjectName Nazwa obiektu alarmowego. Przykładowo,

AlmObj_1.Uwagi Funkcja ta działa tak samo jak funkcja almAckSelect(), identyfikując

alarmy poprzez alarmy wybrane w obiekcie wyświetlania.Przykład(y) almSuppressSelected(“AlmObj_1”);

Patrz również almSuppressAll(), almSuppressGroup(), almSuppressTag(), almSuppressDisplay(), almSuppressPriority(), almSuppressSelectedGroup(), almSuppressSelectedPriority(), almSuppressSelectedTag(), almUnSuppressAll()

Funkcja ta wyłącza wyświetlanie bieżących i przyszłych zdarzeń dla dowolnego alarmu emitowanego przez daną nazwę zmiennej, mających tego samego dostawcę, nazwę grupy i zakres priorytetów.

Kategoria alarmySkładnia [Result=]almSuppressTag(ObjectName, ApplicationName,

GroupName, TagName, FromPri, ToPri, AlarmClass, AlarmType);

Parametr OpisObjectName Nazwa obiektu alarmowego, np. AlmObj_1.ApplicationName Nazwa aplikacji wraz ze ścieżką dostępu.

Przykładowo, \\node1\Intouch.GroupName Nazwa grupy. Przykładowo może to być $System.TagName Nazwa zmiennej alarmu.FromPri Dolna wartość priorytetu alarmów. Przykładowo,

100, lub zmienna typu integer.ToPri Górna wartość priorytetu alarmów. Przykładowo,

900, lub zmienna typu integer.AlarmClass Klasa alarmu. Przykładowo, “Value.”AlarmType Typ alarmu. Przykładowo, “HiHi.”

UwagiPrzykład(y) almSuppressTag(“AlmObj_1”, “\\node1\Intouch”,

“Turbines”, “Valve1”, 10, 100, “Value”, “LoLo”);

Patrz również almSuppressAll(), almSuppressGroup(), almSuppressDisplay(), almSuppressPriority(), almSuppressRetain(), almSuppressSelected(), almSuppressSelectedGroup(), almSuppressSelectedPriority(), almSuppressSelectedTag(), almUnSuppressAll()

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 181

almSuppressSelectedGroup()

almSuppressSelectedPriority()

Funkcja ta wstrzymuje wyświetlanie bieżących i przyszłych zdarzeń alarmów należących do tych samych grup jednego lub więcej wybranych alarmów mających tą samą nazwę dostawcy w Obiekcie Wyświetlania Alarmu Rozproszonego o określonej nazwie.

Kategoria alarmySkładnia [Result=]almSuppressSelectedGroup(ObjectName);

Parametr OpisObjectName Nazwa obiektu alarmowego. Przykładowo,

AlmObj_1.Uwagi Funkcja ta działa tak samo jak funkcja almAckSelectedGroup(),

identyfikując wybrane alarmy, następnie identyfikując grupy do których należą i zawieszając przyszłe zdarzenia alarmów z tych grup.

Przykład(y) almSuppressSelectedGroup(“AlmObj_1”);

Patrz również almSuppressAll(), almSuppressGroup(), almSuppressTag(), almSuppressDisplay(), almSuppressSelected(), almSuppressSelectedPriority(), almSuppressSelectedTag()

Funkcja ta wstrzymuje wyświetlanie bieżących i przyszłych zdarzeń alarmów należących do tego samego priorytetu jednego lub więcej wybranych alarmów mających tą samą nazwę dostawcy w Obiekcie Wyświetlania Alarmu Rozproszonego o określonej nazwie.

Kategoria alarmySkładnia [Result=]almSuppressSelectedPriority(ObjectName);

Parametr OpisObjectName Nazwa obiektu alarmowego. Przykładowo,

AlmObj_1.Uwagi Wartości priorytetów są obliczane na podstawie danych pobranych z

wybranych rekordów alarmów. Pod uwagę brane są minimalne (Min) i maksymalne (Max) wartości priorytetów.

Funkcja ta działa tak samo jak funkcja almAckSelectedPriority(), identyfikując alarmy zaznaczone na ekranie, następnie identyfikując priorytety odpowiadające tym alarmom i likwidując przyszłe zdarzenia alarmów z tymi samymi priorytetami.

Przykład(y) almSuppressSelectedPriority(“AlmObj_1”);

Patrz również almSuppressAll(), almSuppressGroup(), almSuppressTagName(), almSuppressDisplay(), almSuppressSelected(), almSuppressSelectedGroup(), almSuppressSelectedTag(), almAckSelectedPriority()

Opis funkcji, pól i zmiennych systemowych

182 Rozdział 3

almSuppressSelectedTag()

almUnSelectAll()

Funkcja ta wyłącza wyświetlanie bieżących i przyszłych zdarzeń dowolnego alarmu, który należy do tej samej nazwy zmiennych jednego lub więcej wybranych alarmów mających tą samą nazwę dostawcy, grupy i zakres priorytetu.

Kategoria alarmySkładnia [Result=]almSuppressSelectedTag(ObjectName);

Parametr OpisObjectName Nazwa obiektu alarmowego. Przykładowo,

AlmObj_1.UwagiPrzykład(y) almSuppressSelectedTag(“AlmObj_1”);

Patrz również almSuppressAll(), almSuppressGroup(), almSuppressTag(), almSuppressDisplay(), almSuppressSelectedAlarm(), almSuppressSelectedGroup(), almSuppressSelectedPriority(), almAckSelectedTag(), almUnSuppressAll()

Funkcja ta odznacza wszystkie zaznaczone alarmy w obiekcie alarmów rozproszonych o określonej nazwie.

Kategoria alarmySkładnia [Result=]almUnSelectAll(ObjectName);

Parametr OpisObjectName Nazwa obiektu alarmowego. Przykładowo,

AlmObj_1.Uwagi Kody błędów dla funkcji tego typu można znaleźć w Dodatku A:

"Komunikaty o błędach dla obiektów sterujących Windows i funkcji związanych z alarmowaniem rozproszonym".

Przykład(y) If $AccessLevel == 9999 THENalmAckSelect(“AlmObj_1”, “Comment”);{Ten alarm mo¿e byæ potwierdzony tylko przez administratora}

ELSEalmUnSelectAll(“AlmObj_1”);

ENDIF;

Patrz również almSelectAll(), almSelectItem(), almSelectGroup(), almSelectPriority(), almSelectTag()

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 183

almUnSuppressAll()

ArcCos()

Funkcja ta zeruje wszystkie wstrzymane alarmy.Kategoria alarmySkładnia [Result=] almUnSupressAll(ObjectName);

Parametr OpisObjectName Nazwa obiektu alarmowego. Przykładowo,

AlmObj_1.Przykład(y) almUnSupressAll(“AlmObj_1”);

Patrz również almSuppressAll(), almSuppressGroup(), almSuppressTag(), almSuppressDisplay(), almSuppressPriority(), almSuppressRetain(), almSuppressSelected(), almSuppressSelectedGroup(), almSuppressSelectedPriority(), almSuppressSelectedTag()

Dla liczby z przedziału domkniętego [-1,1] funkcja ta oblicza wartość kąta (z zakresu od 0 do 180 stopni), którego cosinus jest równy tej liczbie.

Kategoria funkcje matematyczneSkładnia Result=ArcCos(Number);

Parametr OpisNumber Dowolna liczba, zmienna rzeczywista (Real) lub

całkowita (Integer) programu InTouch.Uwagi Obliczana jest wartość arc cosinus z Number i zwracana do zmiennej

Result.

Kody błędów dla funkcji tego typu można znaleźć w rozdziale Załącznik A.

Przykład(y) ArcCos(1) daje w wyniku 0

ArcCos(-1) daje w wyniku 180

Patrz również Cos(), Sin(), Tan(), ArcSin(), ArcTan()

Opis funkcji, pól i zmiennych systemowych

184 Rozdział 3

ArcSin()

ArcTan()

Dla liczby z przedziału domkniętego [-1,1] funkcja ta oblicza wartość kąta (z zakresu od -90 do 90 stopni), którego sinus jest równy tej liczbie.

Kategoria funkcje matematyczneSkładnia Result=ArcSin(Number);

Parametr OpisNumber Dowolna liczba, zmienna rzeczywista (Real) lub

całkowita (Integer) programu InTouch.Uwagi Obliczana jest wartość arc sinus z Number i zwracana do zmiennej Result.

Kody błędów dla funkcji tego typu można znaleźć w rozdziale Załącznik A.

Przykład(y) ArcSin(1) daje w wyniku 90

ArcSin(-1) daje w wyniku -90

Patrz również Cos(), Sin(), Tan(), ArcCos(), ArcTan()

Dla danej liczby funkcja ta oblicza wartość kąta (z zakresu od -90 st. do 90 st.), którego tangens jest równy tej liczbie.

Kategoria funkcje matematyczneSkładnia Result=ArcTan(Number);

Parametr OpisNumber Dowolna liczba, zmienna rzeczywista (Real) lub

całkowita (Integer) programu InTouch.Uwagi Obliczana jest wartość arc tangens z Number i zwracana do zmiennej

Result.

Kody błędów dla funkcji tego typu można znaleźć w rozdziale Załącznik A.

Przykład(y) ArcTan(1) daje w wyniku 45

ArcTan(0) daje w wyniku 0

Patrz również Cos(), Sin(), Tan(), ArcCos(), ArcSin()

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 185

AttemptInvisibleLogon()

ChangePassword()

Próbuje zalogować użytkownika używając podanych parametrów.Kategoria bezpieczeństwoSkładnia DiscreteTag=AttemptInvisibleLogon( "UserId",

"Password", "Domain" );

Parametr Opis UserId Prawidłowa nazwa użytkownika.Password Hasło użytkownika.Domain Nazwa komputera, grupy roboczej lub domeny

do której należy użytkownik. Ta kolumna ma znaczenie wtedy gdy system bezpieczeństwa oparty jest na systemie operacyjnym.

DiscreteTag Zwracana wartość: zwraca PRAWDA jeżeli autentykacja powiodła się. W przeciwnym wypadku zwracana jest wartość FAŁSZ.

Uwagi Następuje próba zalogowania użytkownika używając podanych parametrów (domena jest ignorowana gdy system bezpieczeństwa nie jest oparty na systemie operacyjnym). Jeżeli logowanie powiedzie się, zwracana jest wartość PRAWDA i są uaktualnione zmienne $OperatorDomain, $OperatorName, $AccessLevel oraz $Operator. Jeżeli logowanie nie powiedzie się zwracana jest wartość FAŁSZ a użytkownik zalogowany wcześniej pozostaje dalej zalogowany.

Przykład(y) AnalogTag=InvisibleVerifyCredentials( "ravi", "Password", "wonderware_hq" ); \\ bezp. oparte na Syst.Op. AnalogTag=InvisibleVerifyCredentials( "ravi", "Password", "" ); \\ bezp. oparte na systemie InTouch lub AppServer

Patrz również PostLogonDialog(), InvisibleVerifyCredentials(), IsAssignedRole(), QueryGroupMembership(), AddPermission().

Wyświetla okno dialogowe Zmiana hasła dostępu pozwalające operatorowi na zmianę swojego hasła.

Kategoria bezpieczeństwoSkładnia [Result=]ChangePassword();

Parametr Opis[Result] Przyjmuje jedną z następujących wartości:

0 = Naciśnięty został przycisk Anuluj1 = Naciśnięty został przycisk OK.

Uwagi W aplikacji z ekranem dotykowym można użyć klawiatury numercznej.Przykład(y) Errmsg=ChangePassword();

Jeśli taka instrukcja zostanie użyta w skrypcie związanym z przyciskiem, w skrypcie warunkowym lub wywoływanym wskutek zmiany wartości danych, spowoduje to otworzenie okna dialogowego umożliwiającego użytkownikowi wprowadzenie nowego hasła dostępu.

Opis funkcji, pól i zmiennych systemowych

186 Rozdział 3

Cos()

DialogStringEntry()

Zwraca cosinus kąta podanego w stopniach. Kategoria funkcje matematyczneSkładnia Result=Cos(Number);

Parametr OpisNumber Dowolna liczba, zmienna rzeczywista (Real) lub

całkowita (Integer) programu InTouch.Uwagi Obliczana jest wartość cosinus z Number i zwracana do zmiennej Result.Przykład(y) Cos(90) daje w wyniku 0

Cos(0) daje w wyniku 1

Wave = 50 * Cos(6 * $Second);

Patrz również Sin(), Tan(), ArcCos(), ArcSin(), ArcTan()

Wyświetla na ekranie klawiaturę alfanumeryczną umożliwiając użytkownikowi zmianę aktualnej wartości zmiennej tekstowej zdefiniowanej na liście zmiennych.

Kategoria różneSkładnia [Result=]DialogStringEntry(MessageTag_Text,

UserPrompt_Text);

Parametr Opis[Result] Przyjmuje jedną z następujących wartości:

0 = Naciśnięty został przycisk Anuluj1 = Naciśnięty został przycisk OK.-1=Błąd wewnętrzny.-2 = Brak możliwości inicjacji.-3 = Zmienna nie jest zdefiniowana.-4 = Zmienna nie jest zmienną typu Message-5 = Brak możliwości zapisu.

MessageTag_Text Podaje nazwę zmiennej typu Message, która ma zostać zmodyfikowana. Ten parametr funkcji musi zostać podany jako łańcuch znaków, dlatego nazwa zmiennej musi zostać podana w cudzysłowie albo przy użyciu pola .Name (wtedy bez cudzysłowu). Dopuszczalne jest również stosowanie jako wskaźnik zmiennej tekstowej. Porównać z zamieszczonym w dalszej części przykładem.

UserPrompt_Text Tekst użytkownika, który ma być wyświetlony w górnej części klawiatury.

Uwagi Funkcja jest stosowana głównie w aplikacjach z ekranem dotykowym.

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 187

Przykład Errmsg=DialogStringEntry(MyMessageTag.Name, "Enter a new string...");

Errmsg=DialogStringEntry("MyMessageTag","Enter a new string...");

Parametry mogą również działać jako wskaźniki, wskazujące na inne zmienne, co umożliwia dynamiczną zmianę parametrów w czasie pracy aplikacji.

Errmsg=DialogStringEntry(MessageTagX, MessageDisplay);

W przykładzie powyżej użytkownik może przed wykonaniem funkcji modyfikować jej parametry poprzez wykorzystanie zmiennych wskazujących w połączeniach do wprowadzania danych. Skrypt zamieszczony poniżej spowoduje wyświetlenie klawiatury alfanumerycznej, pozwalającą na zmodyfikowanie zmiennej MyMessageTag, wyświetlając jednocześnie komunikat "Enter a new string..." w górnej części klawiatury.

MessageTagX="MyMessageTag"; {przypisanie zmiennej MyMessageTagX ci¹gu znaków stanowiacego nazwê zmiennej, która ma zostaæ zmodyfikowana}

MessageDisplay="Enter a new string..."; {przypisanie nowego ci¹gu znaków do zmiennej typu Memory Message o nazwie MessageDisplay}

Errmsg=DialogStringEntry(MessageTagX, MessageDisplay); {cudzys³ów nie jest wymagany, poniewa¿ zmienna MessageTagX zosta³a zdefiniowana jako zmienna typu Message}

Patrz również DialogValueEntry()

Opis funkcji, pól i zmiennych systemowych

188 Rozdział 3

DialogValueEntry()Funkcja ta wyświetla na ekranie klawiaturę alfanumeryczną umożliwiając użytkownikowi zmianę aktualnej wartości zmiennej typu Discrete, Integer lub Real na liście zmiennych.

Kategoria różneSkładnia [Result=]DialogValueEntry(ValueTag_Text,

LowLimit,HighLimit,UserPrompt_Text);

Parametr Opis[Result] Przyjmuje jedną z następujących wartości:

0 = Naciśnięty został przycisk Anuluj1 = Naciśnięty został przycisk OK.-1 = Highlimit<=Lowlimit.-2 = Brak możliwości inicjacji.-3 = Zmienna nie jest zdefiniowana.-4 = Zmienna nie jest zmienną typu Discrete, Integer lub Real.-5 = Błąd zapisu.

ValueTag_Text Nazwa zmiennej typu Discrete, Integer lub Real, która ma zostać zmodyfikowana. Ten parametr funkcji musi zostać podany jako łańcuch znaków, dlatego nazwa zmiennej musi zostać podana w cudzysłowie albo przy użyciu pola .Name (wtedy bez cudzysłowu), lub przy użyciu zmiennej typu Message jako wskaźnika. Porównać z zamieszczonym w dalszej części przykładem.

LowLimit Określa minimalną dopuszczalną wartość zmiennej. (Powinna ona być >= od wartości podanych w czasie definiowania zmiennej wartości w polach Wartość minimalna, Min. I/O, oraz Min. inż, o ile są wprowadzane wartości do tych pól).

HighLimit Określa maksymalną dopuszczalną wartość zmiennej. (Powinna ona być <= od podanych w czasie definiowania zmiennej wartości w polach Wartość maksymalna, Maks. I/O, oraz Maks. inż, o ile są wprowadzane wartości do tych pól).

UserPrompt_Text Tekst (wprowadzony przez użytkownika), który ma zostać wyświetlony w górnej części klawiatury.

Uwagi Funkcja jest stosowana głównie w aplikacjach z ekranem dotykowym.Przykład(y) Errmsg=DialogValueEntry(MyIntegerTag.Name,

MyIntegerTag.MinEU, MyIntegerTag.MaxEU, "Enter a new value...");

Errmsg=DialogValueEntry("MyIntegerTag", -100, 100, "Enter a new value...");

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 189

Parametry mogą również działać jako wskaźniki, wskazujące na inne zmienne, co umożliwia dynamiczną zmianę parametrów w czasie pracy aplikacji.

Errmsg=DialogValueEntry(TagnameX, Min, Max, MessageDisplay);

W przykładzie powyżej użytkownik może przed wykonaniem funkcji modyfikować jej parametry poprzez wykorzystanie zmiennych wskazujących w połączeniach do wprowadzania danych.Skrypt zamieszczony poniżej spowoduje wyświetlenie klawiatury alfanumerycznej, pozwalającej na wprowadzenie nowej wartości zmiennej MyIntegerTag, mieszczącej się w granicach wyznaczonych przez Min i Max, wynoszących odpowiednio -100 i 100, wyświetlając jednocześnie komunikat "Enter a new value..." w górnej części klawiatury.TagnameX="MyIntegerTag"; {przypisanie zmiennej MyIntegerTag (zmienna, której warto ść ma by ć zmieniona) do zmiennej typu MemoryMessage o nazwie TagnameX}

Min=-100; {minimalna, dopuszczalna warto ść modyfikowanej zmiennej typu Integer/Real}

Max=100; {maksymalna, dopuszczalna warto ść modyfikowanej zmiennej typu Integer/Real}

MessageDisplay="Enter a new value..."; {przypisanie nowego ci ągu znaków do zmiennej typu Memory Message o nazwie MessageDisplay}

Errmsg=DialogValueEntry(TagnameX, Min, Max, MessageDisplay); {cudzysłów nie jest wymagany, poniewa ż zmienna TagnameX została zdefiniowana jako zmienna typu tekstowego. Je żeli do zmiennej TagnameX przypisana zostanie inna zmienna typu Discrete, Integer lub Real, funkcja zmodyfikuje warto ść przypisanej zmiennej}

Patrz również DialogStringEntry()

Opis funkcji, pól i zmiennych systemowych

190 Rozdział 3

DText()

EnableDisableKeys()

Funkcja ta dynamicznie zmienia zawartość zmiennej tekstowej w zależności od wartości innej zmiennej dyskretnej (typu Discrete).

Kategoria funkcje tekstoweSkładnia MsgTag=DText(Discrete_Tag,OnMsg,OffMsg);

Parametr OpisMsgTag Zmienna tekstowa.Discrete_Tag Zmienna dyskretna (typu Discrete).OnMsg Komunikat tekstowy, który będzie wyświetlany,

gdy wartość zmiennej Discrete_Tag wynosi 1 (Prawda, Wł, Tak).

OffMsg Komunikat tekstowy, który będzie wyświetlany, gdy wartość zmiennej Discrete_Tag wynosi 0 (Fałsz, Wył, Nie).

Przykład(y) MessageTag=Dtext(DiscreteTag, DiscreteTag.OnMsg, DiscreteTag.OffMsg);

If Dtext(D_Tag, “True”, “False”) == “True” THENMessage="D_Tag zawiera warto ść 1";

ELSEMessage="D_Tag zawiera warto ść 0";

ENDIF;

Włącza/wyłącza blokadę klawiatury dla klawiszy Alt,Escape oraz klawiszy systemu Windows

Kategoria ViewSkładnia EnableDisableKeys(int AltKey,int EscKey,int WinKey);

Parametr OpisAltKey Liczba, która określa czy włączyć czy wyłączyć

blokadę klawisza Alt, 0=wyłącza, 1=włączaEscKey Liczba, która określa czy włączyć czy wyłączyć

blokadę klawisza Escape, 0=wyłącza, 1=włączaWinKey Liczba, która określa czy włączyć czy wyłączyć

blokadę klawisza Win, 0=wyłącza, 1=włączaUwagi Włącza/wyłącza klawisze Alt,Escape oraz WindowsPrzykład(y) EnableDisableKeys(0,0,0); // wł ącza wszystkie trzy

klawisze EnableDisableKeys(1,1,1); // wył ącza wszystkie trzy klawisze EnableDisableKeys(0,0,1); // wł ącza Alt oraz Escape, wył ącza klawisze Windows.

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 191

Exp()

FileCopy()

Zwraca wartość e podniesioną do potęgi.Kategoria funkcje matematyczneSkładnia Result=Exp(Number);

Parametr OpisNumber Dowolna liczba lub zmienna rzeczywista (Real)

albo całkowita (Integer) programu InTouch.Uwagi Liczba e jest podnoszona do potęgi Number, a wynik jest zapisywany jako

Result.Przykład(y) Exp(1) daje w wyniku 2.718...

Zakres argumentów dla tej funkcji: od -88.72 do 88.72.

Kopiuje plik SourceFile do DestFile, podobnie jak polecenie copy systemu DOS czy funkcja copy systemu Windows.

Kategoria systemSkładnia [Result=]FileCopy(SourceFile,DestFile,DoneTag);

Parametr OpisSourceFile Nazwa pliku źródłowego (do przeniesienia),

włącznie z pełną ścieżką dostępu.DestFile Nazwa pliku wynikowego, włącznie z pełną

ścieżką dostępu, lub nazwa katalogu (patrz przykład poniżej).

DoneTag Nazwa zmiennej używanej przez funkcję FileCopy() do poinformowania o trwaniu procedury kopiowania. Parametr ten musi być łańcuchem znaków zawierającym nazwę zmiennej (a nie samą zmienną). Dlatego więc, jeśli zmienną służącą do komunikowania o przebiegu operacji jest zmienna Monitor, jako parametr należy podać "Monitor" lub Monitor.name, a nie Monitor.

Uwagi Funkcja FileCopy() zwraca natychmiast wartość 1, jeśli procedura kopiowania została pomyślnie zainicjowana. Funkcja zwraca 0, jeśli inna procedura znajduje się w trakcie realizacji (nowa procedura nie może zostać zainicjowana), oraz zwraca -1 w przypadku błędu. Wartość ta pozwala na monitorowania inicjalizacji funkcji FileCopy().Status=FileCopy("C:\*.TXT", "C:\BACKUP", "Monitor");

Opis funkcji, pól i zmiennych systemowych

192 Rozdział 3

Status jest zmienną typu Integer, o wartościach 1, -1 lub 0. Funkcja FileCopy() jest wykonywana w tle, dlatego też nie zakłóca innych operacji realizowanych prze program InTouch. Zmienna DoneTag umożliwia natomiast monitorowanie postępu operacji kopiowania, przez aplikację lub użytkownika. W ten sposób użytkownik może zostać ostrzeżony o wszelkich błędach, które mogą wystąpić po zainicjowaniu procedury. Nie jest ona równoważna zmiennej Status zastosowanej w przykładzie powyżej, która wskazuje tylko, czy procedura kopiowania została pomyślnie zainicjowana.Po pomyślnym zainicjowaniu procedury kopiowania ustawiana jest wartość zmiennej DoneTag. Wartość ta jest ustawiona na 0, gdy procedura trwa. Wartość tej zmiennej ustawiona jest na 1 gdy procedura zostanie pomyślnie zakończona lub-1 gdy w trakcie wykonywania wystąpił błąd.Zwykle nazwami plików są SourceFile i DestFile. Jeśli jednak za pomocą funkcji FileCopy() kopiowany jest pojedynczy plik, zamiast nazwy pliku wynikowego można użyć nazwy katalogu:

FileCopy("C:\DATA.TXT", "C:\BACKUP", "Monitor");

Instrukcja ta spowoduje skopiowanie pliku DATA.TXT do katalogu o nazwie BACKUP na dysku "C:\”. Po zakończeniu tej operacji zmienna Monitor przyjmie wartość 1.Jeżeli jednak nazwa SourceFile zawiera znaki wzorca, DestFile MUSI być kartoteką (nie plikiem), bowiem w przeciwnym wypadku zwrócony zostanie błąd:

FileCopy("C:\*.TXT", "C:\BACKUP", "Monitor");

Instrukcja ta spowoduje skopiowanie wszystkich plików o rozszerzeniu .TXT do katalogu C:\BACKUP. Po zakończeniu tej operacji zmienna Monitor przyjmie wartość 1.FileCopy() nie funkcjonuje z asynchronicznymi funkcjami QuickFunction. Z funkcji FileCopy() należy korzystać jedynie w funkcjach synchronicznych.

Patrz również FileDelete(), FileMove(), FileReadFields(), FileReadMessage(), FileWriteFields(), FileWriteMessage()

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 193

FileDelete()Usuwa niepotrzebne pliki.

Kategoria systemSkładnia [Result=]FileDelete(Filename);

Parametr OpisFilename Nazwa pliku do

usunięcia.Uwagi Jeśli podany plik zostanie znaleziony i pomyślnie usunięty, funkcja zwraca

wartość 1. W przeciwnym wypadku zwracana jest wartość 0.

Funkcja FileDelete() nie akceptuje znaków wieloznacznych. Przykładowo * i ?. Użycie znaków wieloznacznych spowoduje zwrócenie błędu (0) ) “Could not find file.”

FileDelete() nie funkcjonuje z asynchronicznymi funkcjami QuickFunction. Z funkcji FileDelete() należy korzystać jedynie w funkcjach synchronicznych.

Przykład(y) Status=FileDelete("C:\DATA.TXT");

Zmienna Status przyjmuje wartość 1, jeśli plik o nazwie "DATA.TXT” został znaleziony w katalogu głównym dysku C:, lub też 0, w wypadku przeciwnym.

Patrz również FileCopy(), FileMove(), FileReadFields(), FileReadMessage(), FileWriteFields(), FileWriteMessage()

Opis funkcji, pól i zmiennych systemowych

194 Rozdział 3

FileMove()Funkcja ta jest podobna do funkcji FileCopy() z tą różnicą, że powoduje ona przesunięcie pliku SourceFile.

Kategoria systemSkładnia [Result=]FileMove(SourceFile,DestFile,DoneTag);

Parametr OpisSourceFile Nazwa pliku źródłowego (do przeniesienia), włącznie

z pełną ścieżką dostępu.DestFile Nazwa pliku wynikowego, włącznie z pełną ścieżką

dostępu.DoneTag Nazwa zmiennej, która zostanie użyta przez funkcję

FileMove() do powiadamiania o postępie przenoszenia. Parametr ten musi być łańcuchem znaków zawierającym nazwę zmiennej (a nie samą zmienną). Dlatego więc, jeśli zmienną służącą do komunikowania o przebiegu operacji jest zmienna Monitor, jako parametr należy podać "Monitor" lub Monitor.name, a nie Monitor.

Uwagi Funkcja FileMove() zwraca wartość 1, jeśli procedura przesunięcia została pomyślnie zainicjowana. Funkcja zwraca 0, jeśli inna procedura jest aktualnie realizowana (i nowa procedura nie może zostać zainicjowana) oraz zwraca -1 w przypadku błędu. Używając tej wartości można monitorować inicjowanie funkcji FileMove():Status=FileMove("C:\DATA.TXT", "D:\DATA.TXT", "Monitor");

Status jest zmienną typu Integer, o wartościach 1, -1 lub 0. Funkcja FileMove() jest wykonywana w tle, dlatego też nie zakłóca funkcjonowania programu InTouch. Zmienna DoneTag umożliwia natomiast monitorowanie postępu operacji przenoszenia pliku, przez aplikację lub użytkownika. W ten sposób użytkownik może zostać ostrzeżony o wszelkich błędach, które mogą wystąpić po zainicjowaniu procedury. Nie jest ona równoważna zmiennej Status zastosowanej w przykładzie powyżej, która wskazuje tylko, czy procedura przenoszenia została pomyślnie zainicjowana.

FileMove() nie funkcjonuje z asynchronicznymi funkcjami QuickFunction. Z funkcji FileMove() należy korzystać jedynie w funkcjach synchronicznych. Po pomyślnym zainicjowaniu procedury przesuwania pliku ustawiana jest wartość zmiennej DoneTag Wartość ta jest ustawiona na 0, gdy procedura trwa. Wartość tej zmiennej ustawiona jest na 1 gdy procedura zostanie pomyślnie zakończona lub-1 gdy w trakcie wykonywania wystąpił błąd.

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 195

Uwaga: Funkcja Filemove() ma flagę DONE. Nie należy wywoływać innej funkcji Filemove zanim nie zakończy się poprzednia.

Jeśli SourceFile i DestFile znajdują się na tym samym dysku, funkcja zmienia tylko adres miejsca w pamięci, gdzie przechowywane są dane o pliku, bez faktycznego przemieszczania danych. W takim przypadku procedura jest wykonywana bardzo szybko, niezależnie od rozmiarów pliku. Jeżeli pliki SourceFile i DestFile umieszczone są na różnych dyskach, czas potrzebny na zrealizowanie operacji przesunięcia zależy od rozmiaru pliku. Jest to powodowane przez fakt, że dane muszą być przesunięte z jednego dysku fizycznego na drugi

Przykład(y) FileMove ("C:\DATA.TXT","C:\BACKUP\DATA.TXT","Monitor");

Instrukcja ta spowoduje przesunięcie pliku "DATA.TXT” z katalogu głównego dysku "C" do podkatalogu o nazwie BACKUP na tym dysku: Po zakończeniu tej operacji zmienna Monitor przyjmie wartość 1.

Jeżeli w SourceFile i Destfile podano tę samą kartotekę ale różne nazwy plików, funkcja ta spowoduje zmianę nazwy plików.FileMove ("C:\DATA.TXT","C:\DATA.BAK","Monitor");

Patrz również FileCopy(), FileDelete(), FileReadFields(), FileReadMessage(). FileWriteMessage(),FileWriteFields()

Opis funkcji, pól i zmiennych systemowych

196 Rozdział 3

FileReadFields()Odczytuje rekord z zadanego pliku w formacie CSV (Comma Separated Variable - zmienne oddzielone przecinkami).

Kategoria systemSkładnia [Result=]FileReadFields(Filename,FileOffset,StartTag,

NumberOfFields);

Parametr OpisFilename Nazwa pliku źródłowego do odczytu.FileOffset Miejsce rozpoczęcia odczytu (w pliku).StartTag Nazwa zmiennej zdefiniowanej w programie

InTouch, w której zostanie zapisany pierwszy element odczytany z pliku. Nazwa tej zmiennej musi kończyć się liczbą (np. MyTag1). Parametr ten musi być łańcuchem znaków zawierającym nazwę zmiennej (a nie samą zmienną). Dlatego więc, jeśli rozważaną zmienną ma być zmienna MyTag1, jako parametr należy podać "MyTag1" lub MyTag1.name, a nie MyTag1.

NumberOfFields Jest to liczba elementów do odczytu (liczba pól oddzielonych przecinkami w każdym rekordzie pliku).

Uwagi Jeśli parametrem StartTag jest zmienna MyTag1, a parametrem NumberOfFields jest 3, z pliku odczytane zostaną trzy elementy i zostaną zapisane jako wartości zmiennych MyTag1, MyTag2 i MyTag3. Zmienne te (o kolejnych numerach w nazwie) muszą zostać wcześniej utworzone w programie InTouch i mogą być różnych typów (Integer, Message, itp).

Przykład(y) Jeśli pierwsza linia pliku C:\DATA\FILE.CSV ma posta ć: To jest tekst, 3.1416, 5

to instrukcja ta zamieszczona w skrypcie QuickScript poniżej odczyta tę linię i zapisze "To jest tekst" jako zmienną MyTag1, 3.1416 jako zmienną MyTag2, a liczbę 5 jako zmienną MyTag3:BytePosition=FileReadFields ("C:\DATA\FILE.CSV", 0, "MyTag1", 3);

Funkcja ta po zakończeniu odczytu zwraca nową pozycję bajtu. Można użyć tej wartości jako parametru FileOffset do następnego odczytu.FileReadFields ("C:\DATA\FILE.CSV",BytePosition,"MyTag1",3);

Długość zmiennych tekstowych w programie InTouch nie może przekraczać 131 znaków.

Patrz również FileCopy(), FileMove(), FileDelete(), FileReadMessage(), FileWriteMessage(), FileWriteFields()

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 197

FileReadMessage()Odczytuje podaną liczbę bajtów, lub całą linię z podanego pliku.

Kategoria systemSkładnia [Result=]FileReadMessage(Filename,FileOffset,

Message_Tag, CharsToRead);

Parametr OpisFilename Nazwa pliku źródłowego do odczytu.FileOffset Miejsce rozpoczęcia odczytu (w pliku). Message_Tag Nazwa zmiennej programu InTouch, w której

zostanie zapisany pierwszy element odczytany z pliku. Maksymalnie można zapamiętać 131 znaków.

CharsToRead Jest to liczba bajtów do odczytu z pliku. Przy wykorzystaniu z tej funkcji dla plików tekstowych, CharsToRead może być ustawione na 0. Spowoduje to odczyt ciągu znaków do rozpoczęcia kolejnej linii (znak LF), lub odczyt do 131 pierwszych znaków.

Przykład(y) FileReadMessage ("C:\DATA\FILE.TXT", 0, MsgTag, 0);

Powyższa instrukcja spowoduje odczyt pierwszej linii z pliku "C:\data\fileTXT" i przypisanie jej do zmiennej o nazwie MsgTag. Funkcja ta po zakończeniu odczytu zwraca nową pozycję bajtu. Można użyć tej wartości jako parametru FileOffset do następnego odczytu.

Patrz również FileCopy(), FileMove(), FileDelete(), FileReadFields(), FileWriteFields(), FileWriteMessage()

Opis funkcji, pól i zmiennych systemowych

198 Rozdział 3

FileWriteFields()Zapisuje rekord do zadanego pliku w formacie CSV (Comma Separated Variable - zmienne oddzielone przecinkami).

Kategoria systemSkładnia [Result=]FileWriteFields(Filename,FileOffset,StartTag,

NumberOfFields);

Parametr OpisFilename Nazwa pliku źródłowego, w którym ma zostać

zapisany rekord. Jeśli plik o nazwie FileName nie istnieje, zostanie utworzony.

FileOffset Miejsce rozpoczęcia zapisu (w pliku). Jeśli wartość parametru FileOffset wynosi -1, funkcja dopisze rekord na końcu pliku.

StartTag Nazwa zmiennej programu InTouch, z której zostanie wzięty pierwszy element zapisany w pliku. Nazwa tej zmiennej musi kończyć się liczbą (np. MyTag1). Parametr ten musi być łańcuchem znaków zawierającym nazwę zmiennej (a nie samą zmienną). Dlatego więc, jeśli rozważaną zmienną ma być zmienna MyTag1, jako parametr należy podać "MyTag1" lub MyTag1.name, a nie MyTag1.

NumberOfFields Liczba elementów do zapisu (liczba pól oddzielonych przecinkami w każdym rekordzie pliku).

Uwagi Jeśli parametrem StartTag jest zmienna MyTag1, a parametrem NumberOfFields jest 3, w pliku zapisane zostaną trzy elementy przechowywane jako MyTag1, MyTag2 i MyTag3. Zmienne te (o kolejnych numerach w nazwie) muszą zostać wcześniej utworzone w programie InTouch i mogą być różnych typów (Integer, Message).

Przykład(y) Zamieszczony poniżej skrypt zapisuje linie "This is text, 3.1416,5" do pierwszej linii pliku C:\data\file.csv. "This is text" jest aktualną wartością zmiennej MyTag1, liczba 3.1416 jest wartością zmiennej MyTag2, a liczba 5 jest wartością zmiennej MyTag3:FileWriteFields ("C:\DATA\FILE.CSV", 0, "MyTag1", 3);

Po zapisie funkcja zwraca nową pozycję położenia bajtu w pliku. Można użyć tej wartości jako parametru FileOffset do następnego zapisu.Zamieszczony poniżej skrypt zapisuje linię "This is text, 3.1416, 5" do ostatniej linii pliku C:\data\file.csv. "This is text" jest aktualną wartością zmiennej MyTag1, liczba 3.1416 jest wartością zmiennej MyTag2, a liczba 5 jest wartością zmiennej MyTag3:FileWriteFields ("C:\DATA\FILE.CSV", -1, "MyTag1", 3);

Patrz również FileCopy(), FileDelete(), FileMove(), FileReadFields(), FileReadMessage(). FileWriteMessage()

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 199

FileWriteMessage()

GetNodeName()

Zapisuje podaną liczbę bajtów (lub całą linię) do podanego pliku.Kategoria systemSkładnia [Result=]FileWriteMessage(Filename,FileOffset,

Message_Tag,LineFeed);

Parametr OpisFilename Nazwa pliku, w którym ma zostać zapisany ciąg

znaków. Jeśli plik o nazwie FileName nie istnieje, zostanie utworzony.

FileOffset Miejsce rozpoczęcia zapisu (w pliku). Jeśli wartość parametru FileOffset wynosi -1, funkcja dopisze rekord na końcu pliku.

Message_Tag Ciąg znaków, który ma zostać zapisany w pliku. LineFeed Parametr ten określa, czy po operacji zapisu

przejść do następnej linii (znak LF). W przypadku zapisu do pliku tekstowego parametr LineFeed powinien mieć wartość 1.

Uwagi Po zapisie funkcja zwraca nową pozycję położenia bajtu w pliku. Można użyć tej wartości jako parametru FileOffset() do następnego zapisu.

Przykład(y) Poniższa instrukcja zapisuje zawartość zmiennej MsgTag na końcu pliku C:\data\file.txt:FileWriteMessage ("C:\DATA\FILE.TXT", -1, MsgTag, 1);

Patrz również FileCopy(), FileDelete(), FileMove(), FileReadFields(), FileReadMessage(), FileWriteFields()

Zwraca za pomocą zmiennej tekstowej nazwę stacji NetDDE.Kategoria systemSkładnia GetNodeName(Tagname,NodeNum);

Parametr OpisZmienna Nazwa zmiennej tekstowej programu InTouch,

w której zapisana zostanie nazwa komputera.NodeNum Zmienna całkowita, określająca długość

zmiennej tekstowej w znakach.Uwagi Funkcja GetNodeName() zastosowana w skrypcie QuickScript odczytuje

nazwę lokalnej stacji i zapisuje ją jako zmienną Tagname. (Parametr NodeNum podaje długość zmiennej w znakach).

Przykład(y) GetNodeName("MyNodeTag",131);

If MyNodeTag == “Master” THENMessageTag = “This is the Primary Machine!”;

ENDIF;

Opis funkcji, pól i zmiennych systemowych

200 Rozdział 3

GetPropertyD()

GetPropertyI()

Odczytuje wartość dyskretną określonej właściwości.Kategoria GOTSkładnia [ErrorNumber=]GetPropertyD("ControlName[.Property]",Tag

name);

Parametr OpisControlName Nazwa obiektu sterującego oknem. Przykładowo,

ChkBox_1 lub nazwa obiektu do wyświetlania alarmów. Przykładowo, AlmObj_1.

.Property Właściwość obiektu sterującego okna, lub obiektu do wyświetlania alarmów.

Aby dowiedzieć się więcej na temat tych właściwości, zobacz Rozdział 2, "Pola zmiennych."

Tagname Zdefiniowana zmienna programu InTouch, w której zostaje zapisana odczytana wartość pola (zmienna tego samego typu, co odczytana wartość).

Uwagi Kody błędów dla funkcji tego typu można znaleźć w rozdziale Załącznik A.

Patrz również GetPropertyI(), GetPropertyM(), SetPropertyD(), SetPropertyI(), SetPropertyM()

Odczytuje wartość całkowitą określonej właściwości.Kategoria GOTSkładnia [ErrorNumber=]GetPropertyI("ControlName.[Property]",Tag

name);

Parametr OpisControlName Nazwa obiektu sterującego oknem. Przykładowo,

ChkBox_1 lub nazwa obiektu do wyświetlania alarmów. Przykładowo, AlmObj_1.

.Property Właściwość obiektu sterującego okna, lub obiektu do wyświetlania alarmów.

Aby dowiedzieć się więcej na temat tych właściwości, zobacz Rozdział 2, "Pola zmiennych."

Tagname Zdefiniowana zmienna programu InTouch, w której zostaje zapisana odczytana wartość pola (zmienna tego samego typu, co odczytana wartość).

Uwagi Kody błędów dla funkcji tego typu można znaleźć w rozdziale Załącznik A.

Patrz również GetPropertyD(), GetPropertyM(), SetPropertyD(), SetPropertyI(), SetPropertyM()

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 201

GetPropertyM()Odczytuje wartość tekstową określonej właściwości.

Kategoria GOTSkładnia [ErrorNumber=]GetPropertyM("ControlName.[Property]",Tag

name);

Parametr OpisControlName Nazwa obiektu sterującego oknem. Przykładowo,

ChkBox_1 lub nazwa obiektu do wyświetlania alarmów. Przykładowo, AlmObj_1.

.Property Właściwość obiektu sterującego okna, lub obiektu do wyświetlania alarmów.

Aby dowiedzieć się więcej na temat tych właściwości, zobacz Rozdział 2, "Pola zmiennych."

Tagname Zdefiniowana zmienna programu InTouch, w której zostaje zapisana odczytana wartość pola (zmienna tego samego typu, co odczytana wartość).

Uwagi Kody błędów dla funkcji tego typu można znaleźć w rozdziale Załącznik A.

Patrz również GetPropertyD(), GetPropertyI(), SetPropertyD(), SetPropertyI(), SetPropertyM()

Opis funkcji, pól i zmiennych systemowych

202 Rozdział 3

Hide

HideSelf

Funkcja ta pozwala na ukrycie okna z poziomu skryptu QuickScript. Funkcja Hide() musi poprzedzać nazwę każdego okna, które ma być ukryte.

Kategoria różneSkładnia Hide Window;

Parametr OpisOkno Nazwa okna lub zmienna tekstowa zawierająca

nazwę okna.Uwagi W czasie pracy aplikacji, jeśli okno o podanej nazwie nie istnieje,

instrukcja jest ignorowana. Jeśli celem skryptu QuickScript jest wyłącznie ukrycie lub wyświetlenia okna, najlepszym rozwiązaniem jest wykorzystanie połączenia animacyjnego otwierania okna lub zamykania okna, związanego z przyciskiem.

Jeżeli jako parametr do ukrycia okna użyta zostanie zmienna lokalna typu Message, wyświetlony zostanie następujący komunikat o błędzie:

Spodziewana jest nazwa okna (wyrażenie tekstowe)

Aby tego uniknąć, zmienną typu Message należy poprzedzić znakiem plus (+). Przykładowo:

DIM Test AS message;Test = "MyWindow1";Hide ""+Test;

Przykład(y) Hide "My Popup Alarm Window";

Patrz również Hideself, Show, ShowAt(), ShowTopLeftAt(), ShowHome

Ukrywa aktywne okno.Kategoria różneSkładnia HideSelf;

Uwagi Funkcja ta może zostać użyta tylko w skrypcie QuickScript związanym z przyciskiem.

Patrz również Hide, Show

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 203

HTGetLastError()Określa, czy podczas ostatniego odczytu danych dla określonego pisaka trendu historycznego wystąpił błąd.

Kategoria dane historyczneSkładnia [Result=]HTGetLastError(Hist_Tag,UpdateCount,PenNum);

Parametr OpisHist_Tag Nazwa zmiennej typu HistTrend reprezentującej

trend historyczny.UpdateCount Liczba całkowita reprezentująca wartość pola

.UpdateCount zmiennej reprezentującej trend.PenNum Zmienna typu Integer lub liczba całkowita

określająca numer pisaka (od 1 do 8).[Result=] Funkcja zwraca następujące wyniki:

Result Opis0 Brak błędu.1 Generalny błąd serwera.2 Moduł trendów historycznych realizuje

poprzednie zapytanie.3 Błąd pliku.4 Serwer nie jest załadowany.5 Trend lub pisak podany jako parametr

funkcji nie istnieje.6 Nazwa zmiennej reprezentującej trend

nie występuje na liście zmiennych programu InTouch.

7 Numer pisaka podany jako parametr funkcji nie mieści się w dopuszczalnym zakresie (od 1 do 8).

8 Dla podanego numeru pisaka nie istnieje zmienna/zmienna nie jest zarejestrowana.

Przykład(y) Poniższa instrukcja powoduje odczytanie kodu błędu, który wystąpił podczas ostatniego odczytu danych historycznych dla pisaka Pen3 trendu związanego ze zmienną Trend1 i zapisanie tego kodu jako zmiennej całkowitej ResultCode:[ResultCode=]HTGetLastError("Trend1",Trend1.UpdateCount,3);

Poniższą instrukcję można wykorzystać w wyrażeniu połączenia animacyjnego do wyświetlania wartości analogowych:HTGetLastError("Trend1",Trend1.UpdateCount,3);

Opis funkcji, pól i zmiennych systemowych

204 Rozdział 3

HTGetPenName()

HTGetTimeAtScooter()

Odczytuje nazwę zmiennej aktualnie przypisanej do określonego pisaka danego trendu historycznego.

Kategoria dane historyczneSkładnia MessageResult=HTGetPenName(Hist_Tag,UpdateCount,PenNum)

;

Parametr OpisHist_Tag Nazwa zmiennej typu HistTrend reprezentującej

trend historyczny.UpdateCount Liczba całkowita reprezentująca wartość pola

.UpdateCount zmiennej reprezentującej trend.PenNum Zmienna typu Integer lub liczba całkowita

określająca numer pisaka (od 1 do 8). Funkcja zwraca nazwę zmiennej związanej z tym pisakiem w postaci zmiennej tekstowej (Message).

Przykład(y) Poniższa instrukcja powoduje odczytanie nazwy zmiennej przypisanej do pisaka Pen2 trendu związanego ze zmienną Trend1, a następnie zapisuje nazwę do zmiennej tekstowej TrendPen:TrendPen=HTGetPenName("Trend1",Trend1.UpdateCount,2);

Podaje w sekundach czas, jaki upłynął od godziny 00:00:00, 1 stycznia 1970 czasu GMT, dla podanej pozycji suwaka określonej przez ScootNum i ScootLoc.

Kategoria dane historyczneSkładnia IntegerResult=HTGetTimeAtScooter(Hist_Tag,UpdateCount,

ScootNum,ScootLoc);

Parametr OpisHist_Tag Nazwa zmiennej typu HistTrend reprezentującej

trend historyczny.UpdateCount Liczba całkowita reprezentująca wartość pola

.UpdateCount zmiennej reprezentującej trend.ScootNum Zmienna typu Integer lub liczba całkowita

określająca prawy lub lewy suwak.1=lewy suwak2=prawy suwak

ScootLoc Liczba rzeczywista oznaczająca wartość pola .ScooterPosRight lub .ScooterPosLeft zmiennej reprezentującej trend.

Uwagi W przypadku gdy parametry UpdateCount, ScootNum, i ScootLoc ulegną zmianie, wymuszane jest uaktualnienie wartości wyrażenia. Zapewnia to obliczanie wartości wyrażenia po znalezieniu nowych danych, lub po przemieszczeniu suwaka.

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 205

HTGetTimeStringAtScooter()

Przykład(y) Poniższa instrukcja powoduje odczytanie czasu (w sekundach) dla aktualnej pozycji lewego suwaka trendu reprezentowanego przez zmienną Trend1:HTGetTimeAtScooter("Trend1",Trend1.UpdateCount,1, Trend1.ScooterPosLeft);

Zwraca ciąg znaków zawierający czas/datę próbki w pozycji suwaka określonej przez ScootNum i ScootLoc.

Kategoria dane historyczneSkładnia MessageResult=HTGetTimeStringAtScooter(Hist_Tag,

UpdateCount,ScootNum,ScootLoc,Format_Text);

Parametr OpisHist_Tag Nazwa zmiennej typu HistTrend reprezentującej

trend historyczny.UpdateCount Liczba całkowita reprezentująca wartość pola

.UpdateCount zmiennej reprezentującej trend.ScootNum Zmienna typu Integer lub liczba całkowita

określająca prawy lub lewy suwak.1=lewy suwak2=prawy suwak

ScootLoc Liczba rzeczywista oznaczająca wartość pola .ScooterPosRight lub .ScooterPosLeft zmiennej reprezentującej trend.

Format_Text Łańcuch znaków określający format czasu/daty, który ma zostać użyty. Dopuszczalne są następujące wartości Format_Text:"Date" , "Time" , "DateTime" , "DOWShort" (dzień tygodnia w skrócie, np. Wed - środa), "DOWLong" (dzień tygodnia w całości, np. Wednesday - środa).

Uwagi W przypadku gdy parametry UpdateCount, ScootNum, i ScootLoc ulegną zmianie, wymuszane jest uaktualnienie wartości wyrażenia. Zapewnia to zaktualizowanie wartości po znalezieniu nowych danych, lub po przemieszczeniu suwaka. Format tekstu określa zawartość wartości zwracanej.

Przykład(y) Poniższa instrukcja powoduje odczytanie daty i czasu dla aktualnej pozycji prawego suwaka trendu reprezentowanego przez zmienną Trend1. Data i czas są zapisywane jako zmienna tekstowa o nazwie NewRightTimeString w formacie "Time":NewRightTimeString=HTGetTimeStringAtScooter ("Trend1",Trend1.UpdateCount,2,Trend1.ScooterPosRight, "Time");

Opis funkcji, pól i zmiennych systemowych

206 Rozdział 3

HTGetValue()Funkcja ta zwraca wartość określonego typu (np. maksymalna, minimalna, średnia, itp.) dla wykresu trendu historycznego dla danego pisaka. Parametr UpdateCount wymusza obliczanie wartości wyrażenia po odczytaniu danych.

Kategoria dane historyczneSkładnia RealResult=HTGetValue(Hist_Tag,UpdateCount,PenNum,

ValType_Text);

Parametr OpisHist_Tag Nazwa zmiennej typu HistTrend reprezentującej

trend historyczny.UpdateCount Liczba całkowita reprezentująca wartość pola

.UpdateCount zmiennej reprezentującej trend.PenNum Zmienna typu Integer lub liczba całkowita

określająca numer pisaka (od 1 do 8).ValType_Text Łańcuch znaków określający rodzaj wskaźnika, który

ma być obliczony przez funkcję:Typ Opis"PenAverageValue" Wartość średnia dla całego

trendu."PenMaxValue" Wartość maksymalna dla

całego trendu."PenMinValue" Wartość minimalna dla

całego trendu."PenMaxEU" Wartość maksymalna w

jednostkach inżynierskich dla całego trendu.

"PenMinEU" Wartość minimalna w jednostkach inżynierskich dla całego trendu.

"PenStdDev" Wartość odchylenia standardowego dla całego trendu.

W przypadku korzystania z parametru ValType_Text w połączeniu z funkcją HTGetValue, należy upewnić się, że wykorzystywany jest jeden z dopuszczalnych typów, wymienionych powyżej.

Uwagi Wynikiem obliczeń jest wartość rzeczywista obliczonego wskaźnika, którą można zapisać jako zmienną pamięciową typu Real.

Przykład(y) Następujące wyrażenie odczytuje odchylenie standardowe dla danych z trendu, Trend1, Pen2. Wartość zostaje zapisana w zmiennej Memory Real LeftHemisphereSD:LeftHemisphereSD=HTGetValue("Trend1",Trend1.UpdateCount,2, "PenStdDev");

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 207

HTGetValueAtScooter()Funkcja ta zwraca wartość odpowiedniego typu dla próbki wyznaczonej przez pozycje suwaka na trendzie oraz numer pisaka. Parametr UpdateCount wymusza obliczanie wartości wyrażenia po odczytaniu danych.

Kategoria dane historyczneSkładnia RealResult=HTGetValueAtScooter(Hist_Tag,UpdateCount,

ScootNum,ScootLoc,PenNum,ValType_Text);

Parametr OpisHist_Tag Nazwa zmiennej typu HistTrend reprezentującej

trend historyczny.UpdateCount Liczba całkowita reprezentująca wartość pola

.UpdateCount zmiennej reprezentującej trend.ScootNum Zmienna typu Integer lub liczba całkowita

określająca prawy lub lewy suwak.1=lewy suwak2=prawy suwak

ScootLoc Liczba rzeczywista oznaczająca wartość pola .ScooterPosRight lub .ScooterPosLeft zmiennej reprezentującej trend.

PenNum Zmienna typu Integer lub liczba całkowita określająca numer pisaka (od 1 do 8).

ValType_Text Łańcuch znaków określający rodzaj wartości, która ma być obliczona przez funkcję:Typ Opis"PenValue" Wartość na wykresie w pozycji

suwaka."PenValid" 0 - jeśli wartości nie można wyznaczyć,W przypadku korzystania z parametru ValType_Text w połączeniu z funkcją HTGetValueAtScooter należy upewnić się, że wykorzystywany jest jeden z dopuszczalnych typów, wymienionych powyżej.

Uwagi Zwracana jest zmienna typu Memory Real, reprezentująca wartość obliczoną dla "PenValue". Zwracana jest zmienna typu Discrete, reprezentująca wartość obliczoną dla "PenValid".

Przykład(y) Poniższa instrukcja powoduje zapisanie pod zmienną dyskretną o nazwie ValidFlag wartości 1, jeśli wartość próbki odpowiadającej bieżącej pozycji prawego suwaka dla pisaka Pen3 na wykresie trendu związanego ze zmienną Trend1 można wyznaczyć lub wartości 0, jeśli wartości próbki nie można wyznaczyć:ValidFlag=HTGetValueAtScooter("Trend1",Trend1.UpdateCount,2, Trend1.ScooterPosRight,3,"PenValid");

Opis funkcji, pól i zmiennych systemowych

208 Rozdział 3

HTGetValueAtZone()Funkcja ta zwraca wartość określonego typu (np. maksymalna, minimalna, średnia, itp.) dla danych zawartych pomiędzy lewym i prawym suwakiem na wykresie trendu historycznego, dla danego pisaka. Parametr UpdateCount wymusza obliczanie wartości wyrażenia po odczytaniu danych.

Kategoria dane historyczneSkładnia RealResult=HTGetValueAtZone(Hist_Tag,UpdateCount,

Scoot1Loc,Scoot2Loc,PenNum,ValType_Text);

Parametr OpisHist_Tag Nazwa zmiennej typu HistTrend reprezentującej

trend historyczny.UpdateCount Liczba całkowita reprezentująca wartość pola

.UpdateCount zmiennej reprezentującej trend.Scoot1Loc Liczba rzeczywista oznaczająca wartość pola

.ScooterPosLeft (pozycja lewego suwaka) zmiennej reprezentującej trend.

Scoot2Loc Liczba rzeczywista równa wartości pola .ScooterPosRight (pozycja prawego suwaka) zmiennej reprezentującej trend.

PenNum Zmienna typu Integer lub liczba całkowita określająca numer pisaka (od 1 do 8).

ValType_Text Łańcuch znaków określający rodzaj wskaźnika, który ma być obliczony przez funkcję:Typ Opis"PenAverageValue" Wartość średnia dla

obszaru pomiędzy lewym a prawym suwakiem.

"PenMaxValue" Wartość maksymalna dla obszaru pomiędzy lewym a prawym suwakiem.

"PenMinValue" Wartość minimalna dla obszaru pomiędzy lewym a prawym suwakiem.

"PenMaxEU" Wartość maksymalna w jednostkach inżynierskich dla obszaru pomiędzy lewym a prawym suwakiem.

"PenMinEU" Wartość minimalna w jednostkach inżynierskich dla obszaru pomiędzy lewym a prawym suwakiem.

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 209

"PenStdDev" Wartość odchylenia standardowego dla obszaru pomiędzy lewym a prawym suwakiem.

W przypadku korzystania z parametru ValType_Text w połączeniu z funkcją HTGetValueAtZone należy upewnić się, że wykorzystywany jest jeden z dopuszczalnych typów, wymienionych powyżej.

Uwagi Wynikiem obliczeń jest wartość rzeczywista obliczonego wskaźnika, którą można zapisać jako zmienną pamięciową typu Real. Podanie stałych wartości dla parametrów Scoot1Loc i Scoot2Loc nie daje żadnego rezultatu, i może być stosowane wyłącznie aby wywołać funkcję w celu uaktualnienia wyświetlanych linii. Funkcja ta, w celu wyznaczenia granic, korzysta bezpośrednio z pól trendu .ScooterPosLeft i .ScooterPosRight, przechowywanych w roboczej bazie danych.

Przykład(y) Zamieszczona poniżej instrukcja oblicza wartość średnią danych pomiędzy lewym a prawym suwakiem trendu "Trend1", dla pisaka Pen1. Wartość ta jest zapamiętywana w zmiennej typu Memory Real o nazwie AvgValue.AvgValue=HTGetValueAtZone("Trend1",Trend1.UpdateCount,Trend1.ScooterPosLeft,Trend1.ScooterPosRight,1,"PenAverageValue");

Opis funkcji, pól i zmiennych systemowych

210 Rozdział 3

HTScrollLeft()

HTScrollRight()

Funkcja ta przesuwa punkt początkowy wykresu trendu do tyłu, w stosunku do aktualnego punktu początkowego o czas stanowiący procentową część długości wykresu trendu. Powoduje to przewinięcie wykresu w lewo o określoną procentowo wartość.

Kategoria dane historyczneSkładnia HTScrollLeft(Hist_Tag,Percent);

Parametr OpisHist_Tag Nazwa zmiennej typu HistTrend reprezentującej

trend historyczny.Percent Liczba rzeczywista oznaczająca wartość przesunięcia

w procentach długości wykresu. (wartość zawiera się w zakresie od 0.0 do 100.0)

Przykład(y) Poniższa instrukcja powoduje przesunięcie wykresu trendu związanego ze zmienną Trend1 o 10% w prawo:HTScrollLeft("Trend1",10.0);

Jeśli aktualny wykres rozpoczyna się o 12:00:00, a długość wykresu w jednostkach czasu wynosi 60 sekund, to po wykonaniu tej operacji nowy wykres będzie zaczynał się o 11:59:54.

Funkcja ta przesuwa punkt początkowy wykresu trendu do przodu, w stosunku do aktualnego momentu początkowego o czas stanowiący procentową część długości wykresu trendu. Powoduje to przewinięcie wykresu w prawo o określoną procentowo wartość.

Kategoria dane historyczneSkładnia HTScrollRight(Hist_Tag,Percent);

Parametr OpisHist_Tag Nazwa zmiennej typu HistTrend reprezentującej

trend historyczny.Percent Liczba rzeczywista oznaczająca wartość przesunięcia

w procentach długości wykresu. (wartość zawiera się w zakresie od 0.0 do 100.0)

Przykład(y) Poniższa instrukcja powoduje przesunięcie wykresu trendu związanego ze zmienną Trend1 o 20% w prawo:HTScrollRight("Trend1",20.0);

Jeśli aktualny wykres rozpoczyna się o 12:00:00, a długość wykresu w jednostkach czasu wynosi 60 sekund, to po wykonaniu tej operacji nowy wykres będzie zaczynał się o 12:00:12.

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 211

HTSelectTag()

HTSetPenName()

Funkcja ta wyświetla okno dialogowe Wybierz zmienną, za pomocą którego operator może przypisać inną zmienną do danego pisaka. (W oknie tym wyświetlane są wyłącznie zmienne, które zostały włączone do logowania historycznego (zaznaczona została opcja Loguj dane)).

Kategoria dane historyczneSkładnia HTSelectTag();

Uwagi Funkcja HTSelectTag() wyświetla wszystkie zmienne, dla których ustawiono opcję Loguj dane. Można jednak za pomocą filtra, zdefiniowanego w przeglądarce zmiennych, ograniczyć liczbę wyświetlanych zmiennych. Na przykład wszystkie zmienne, których nazwa rozpoczyna się na "A." Nie można używać funkcji HTSelectTag() wszystkich zmiennych a jedynie zmiennych z włączoną opcją logowania historycznego.

Przykład(y) Skrypt QuickScript związany z przyciskiem może zawierać przedstawioną poniżej instrukcję. Powoduje ona wyświetlenie przeglądarki zmiennych w programie WindowViewer. Użytkownik może zaznaczyć jedną ze zmiennych, wyświetlanych na liście. Zmienna ta zostanie następnie przypisana do pisaka Pen1, trendu historycznego o nazwie HistTrend.HTSetPenName( "HistTrend", 1, HTSelectTag( ) );

Patrz również HTSetPenName()

Przypisanie innej zmiennej do pisaka trendu.Kategoria dane historyczneSkładnia HTSetPenName(Hist_Tag,PenNum,Tagname);

Parametr OpisHist_Tag Nazwa zmiennej typu HistTrend reprezentującej

trend historyczny.PenNum Zmienna typu Integer lub liczba całkowita równa

numerowi pisaka (od 1 do 8), który ma zostać związany z zmienną Tagname.

Zmienna Zmienna tekstowa oznaczająca nazwę zmiennej przypisanej danemu pisakowi.

Uwagi Jedyną metodą dodawania zmiennych, od dostawcy danych historycznych w czasie pracy aplikacji, jest korzystanie z funkcji skryptowych.

Przykład(y) Zamieszczona poniżej instrukcja powoduje przypisanie zmiennej OutletPressure do pola Pen3 trendu Trend1.HTSetPenName("Trend1",3,"OutletPressure");

Zamieszczona poniżej instrukcja powoduje przypisanie zmiennej rozproszonej HistPrv1.Tag1 do TrendPen4 trendu Trend1.HTSetPenName("Trend1",TrendPen4,"HistPrv1.Tag1");

Patrz również HTSelectTag();

Opis funkcji, pól i zmiennych systemowych

212 Rozdział 3

HTUpdateToCurrentTime()

HTZoomIn()

Funkcja ta odczytuje i wyświetla dane historyczne dla okresu kończącego się w bieżącej chwili. Punkt początkowy wykresu trendu historycznego będzie równy różnicy punktu końcowego i długości wykresu.

Kategoria dane historyczneSkładnia HTUpdateToCurrentTime(Hist_Tag);

Parametr OpisHist_Tag Nazwa zmiennej typu HistTrend reprezentującej

trend historyczny.Przykład(y) Poniższa instrukcja powoduje odczytanie i zaktualizowanie, aż do

bieżącego momentu, danych dla wykresu trendu historycznego związanego ze zmienną "Trend1" HTUpdateToCurrentTime("Trend1");

Jeśli wykres rozpoczyna się o 16:04, a długość wykresu w jednostkach czasu wynosi 60 sekund, to po wykonaniu tej instrukcji wykres będzie kończył się dla danych zebranych o godzinie 16.04. Nową godziną początkową będzie 16.03.LockString

Funkcja ta oblicza nową szerokość wykresu oraz punkt początkowy. Jeżeli wartość .ScooterPosLeft jest równa 0.0, a wartość ScooterPosRight jest równa 1.0, to nowa szerokość wykresu jest równa szerokości starego wykresu podzielonej przez dwa. Nowy punkt początkowy zostanie obliczony na podstawie wartości LockString.LockString

Kategoria dane historyczneSkładnia HTZoomIn(Hist_Tag,LockString);

Parametr OpisHist_Tag Nazwa zmiennej typu HistTrend reprezentującej

trend historyczny.LockString Łańcuch znaków określający sposób zmiany skali

wykresu.Typ Opis"StartTime" Punkt początkowy wykresu pozostaje

bez zmian."Center" Centralny punkt wykresu pozostaje bez

zmian."EndTime" Punkt końcowy wykresu pozostaje bez

zmian.Uwagi Jeśli pozycje suwaków nie odpowiadają krawędziom wykresu, nowa

długość okna wykresu będzie odpowiadała odległości pomiędzy suwakami (.ScooterPosLeft a .ScooterPosRight). W takim przypadku parametr LockString nie jest używany. Minimalna długość okna wykresu wynosi 1 sekundę. Po zmianie skali wykresu, suwaki przyjmą następujące pozycje: .ScooterPosLeft=0.0 oraz .ScooterPosRight=1.0.

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 213

HTZoomOut()

Przykład(y) Zamieszczona poniżej instrukcja powoduje dwukrotne powiększenie wyświetlanego wykresu, z zachowaniem tego punktu początkowego wykresu dla zmiennej "Trend1". Pole Trend1.ScooterPosRight jest równe 1.0, a pole Trend1.ScooterPosLeft jest równe 0.0. Jeśli punkt początkowy wykresu przypadał na godz. 13:25:00, długość wykresu w jednostkach czasu wynosiła 30 sekund, to po wykonaniu operacji powiększenia, nowy wykres będzie zaczynał się nadal o godz. 13:25:00, a jego długość wynosić będzie 15 sekund.HTZoomIn("Trend1","StartTime");

Funkcja ta oblicza nową szerokość wykresu oraz punkt początkowy. Nowa szerokość wykresu jest równa szerokości starego wykresu pomnożonej przez dwa. Nowy punkt początkowy zostanie obliczony na podstawie wartości LockString.

Kategoria dane historyczneSkładnia HTZoomOut(Hist_Tag,LockString);

Parametr OpisHist_Tag Nazwa zmiennej typu HistTrend reprezentującej

trend historyczny.LockString Łańcuch znaków określający sposób zmiany skali

wykresu.Typ Opis"StartTime" Punkt początkowy wykresu pozostaje

bez zmian."Center" Centralny punkt wykresu pozostaje bez

zmian."EndTime" Punkt końcowy wykresu pozostaje bez

zmian.Uwagi Pozycje suwaków nie mają wpływu na działanie funkcji HTZoomOut, ale

po wykonaniu operacji zmiany skali wykresu przyjmą one następujące wartości: .ScooterPosLeft=0.0 oraz .ScooterPosRight=1.0.

Przykład(y) Zamieszczona poniżej instrukcja powoduje dwukrotne powiększenie wyświetlanego wykresu, z zachowaniem tego samego punktu centralnego dla zmiennej trendu historycznego "Volume". If the start time before zooming was 2:15:00 PM and the chart width was 30 seconds, the start time after zooming will still be 2:14:45. The chart width will be 60 seconds and the center of the trend will remain at 2:15:15.HTZoomOut("Volume","Center");

Opis funkcji, pól i zmiennych systemowych

214 Rozdział 3

InfoAppActive()

InfoAppTitle()

Sprawdza czy podana aplikacja jest uruchomiona.Kategoria systemSkładnia DiscreteResult=InfoAppActive(AppTitle);

Parametr OpisAppTitle Nazwa sprawdzanej aplikacji podana jako

łańcuch znaków.Przykład(y) InfoAppActive("Calculator") zwróci 0

{o ile nie jest on uruchomiony}Nazwę danej aplikacji można uzyskać stosując funkcję InfoAppTitle().Zamieszczony poniżej skrypt QuickScript korzysta z funkcji InoAppActive do sprawdzenia listy zadań uruchomionych w systemie. Jeżeli jest uruchomione zadanie o nazwie Notatnik, zwracana jest wartość 1. Pozwala to na uniknięcie ponownego uruchomienia zadania o nazwie Notatnik. Jeżeli funkcja InfoAppActive zwraca wartość 0 (Notatnik nie jest uruchomiony), następuje jego uruchomienie.IF InfoAppActive( InfoAppTitle( "Notepad" ) ) == 1 THENActivateApp InfoAppTitle( "Notepad" );

ELSEStartApp "Notepad";

ENDIF;

Funkcja ta zwraca nazwę uruchomionej aplikacji (znajdującą się na pasku tytułowym).

Kategoria systemSkładnia MessageResult=InfoAppTitle(“ProgramEXEName”);

Parametr OpisProgramEXEName Łańcuch znaków zawierający nazwę pliku z

rozszerzeniem .EXE. Przykład(y) Zamieszczona poniżej przykładowa instrukcja z parametrem

ProgramEXEName równym "calc" zwróci wartość "Kalkulator". Nazwą programu jest calc.exe. W nazwie programu nie podawać rozszerzenia exe.InfoAppTitle("calc") zwróci tekst "Calculator"

InfoAppTitle("excel") zwróci tekst "Microsoft Excel"

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 215

InfoDisk()Zwraca informacje na temat lokalnego lub sieciowego napędu.

Kategoria systemSkładnia IntegerResult=InfoDisk(“Drive”,InfoType,Trigger);

Parametr OpisDrive Łańcuch znaków lub zmienna tekstowa z nazwą

dysku.InfoType Liczba całkowita określająca rodzaj informacji:

Typ Opis1 Całkowita pojemności dysku (bajty).2 Dostępny wolny obszaru na dysku

(bajty).3 Całkowita pojemność dysku (w

kilobajtach).4 Ilość wolnego obszaru na dysku (w

kilobajtach).Trigger Funkcja InfoDisk jest wykonywana po każdej

zmianie parametru Trigger. Parametr ten może być dowolną zmienną (bez ograniczenia do zmiennych systemowych). Parametr ten wykorzystywany jest wyłącznie w polach wyrażeń połączeń animacyjnych, można użyć dowolnej wartości w przypadku, gdy funkcja InfoDisk() wykorzystywana jest w skrypcie QuickScript, ponieważ parametr ten nie ma żadnego wpływu na wykonywanie skryptu.

Uwagi Informacje o dysku określonym parametrem Drive są zwracane jako wartość całkowita.

Przykład(y) Zamieszczona poniżej instrukcja jest wykonywana co minutę, zwracając bieżącą wartość. Po umieszczeniu w połączeniu wyświetlającym wartości analogowych, wartość będzie uaktualniana co minutę.InfoDisk("C", 1, $Minute) zwróci 233869345{rozmiar całkowity w bajtach}InfoDisk("C", 2, $Minute) zwróci 3238935{wolna przestrze ń w bajtach}InfoDisk("C", 3, $Minute) zwróci 228388{rozmiar całkowity w kilobajtach}InfoDisk("C", 4, $Minute) zwróci 3163{wolna przestrze ń w kilobajtach}

Komentarz 1 kilobajt = 1024 bajtówPodobnie jak w przypadku innych funkcji, które wykorzystują pojedyncze znaki, jeśli badany łańcuch znaków (lub zmienna tekstowa) użyty jako nazwa dysku w funkcji InfoDisk() zawiera więcej niż jeden znak, testowany jest tylko pierwszy znak tego łańcucha. Ponieważ funkcja ta korzysta z informacji dostarczanych przez system operacyjny, może zwracać błędne wartości w przypadku zainstalowania w komputerze pracującym w systemie operacyjnym Windows 95 dysku o pojemności większej niż 2 gigabajty.

Opis funkcji, pól i zmiennych systemowych

216 Rozdział 3

InfoFile()Zwraca informacje o określonym pliku lub kartotece.

Kategoria systemSkładnia IntegerResult=InfoFile(“Filename”,”InfoType”,Trigger);

Parametr OpisFilename Łańcuch znaków zawierający nazwę pliku lub

zmienna typu Message.InfoType Liczba całkowita określająca rodzaj informacji:

Typ Opis1 Sprawdza czy zadany plik istnieje.

Jeżeli parametr Filename jest plikiem, zwracana jest wartość 1. Jeżeli parametr Filename jest podkartoteką, zwracana jest wartość 2. W przypadku gdy funkcja nie może znaleźć pliku, zwracana jest wartość 0.

2 Rozmiar pliku (w bajtach).3 Data i czas zapisu pliku (w sekundach

od 1 stycznia 1970).4 Liczba plików odpowiadających

opisowi. Wartości większe od 1 zostaną zwrócone tylko w przypadku szukania z zastosowaniem znaków * lub ?, gdy znalezionych może zostać więcej plików odpowiadających opisowi.

Trigger Dowolna zmienna. Funkcja InfoFile jest wykonywana po każdej zmianie parametru Trigger. Parametr ten jest wyłącznie w polach wyrażeń animacyjnych. Można użyć dowolnej wartości w przypadku, gdy funkcja InfoFile() wykorzystywana jest w skrypcie QuickScript, ponieważ parametr ten nie ma żadnego wpływu na wykonywanie skryptu.

Uwagi Informacje o pliku określonym parametrem FileName są zwracane jako wartość całkowita. Parametr Filename musi zawierać pełną ścieżkę dostępu do pliku i może zawierać znaki * oraz ?.

Przykład(y) Zamieszczone poniżej przykładowe instrukcje zwracają co minutę następujące informacje:InfoFile("c:\IT56\view.exe", 1, $Minute) zwróci1 {plik odnaleziony}

InfoFile("c:\InTouch\view.exe", 2, $Minute) zwróci634960 {rozmiar pliku}

InfoFile("c:\InTouch\view.exe", 3, $Minute) zwróci736701852 {liczba sekund od 1-1-70}

InfoFile("c:\InTouch\*.exe", 4, $Minute) zwróci17 {odnaleziono 17 plików EXE}

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 217

InfoInTouchAppDir()

InfoResources()

Zwraca kartotekę aktualnej aplikacji InTouch.Kategoria systemSkładnia MessageResult=InfoInTouchAppDir();

Uwagi Nazwa katalogu aktualnie uruchomionej aplikacji InTouch'a jest zapisywana jako zmienna tekstowa MessageResult.

Przykład(y) InfoInTouchAppDir();zwróci "c:\ProgramFiles\FactorySuite\InTouch\DemoApp1\1024"

Funkcja ta dostarcza różnych informacji o zasobach systemu.Kategoria funkcje matematyczneSkładnia IntegerResult=InfoResources(ResourceType,Trigger);

Parametr OpisResourceType Liczba całkowita określająca rodzaj informacji.

Uwagi Ten zasób systemowy określony przez liczbę całkowitą jest zapisany w zmiennej całkowitej.

Przykład(y) Nast ępuj ące wyra żenie jest wywoływane co minut ę i zwraca bie żącą warto ść: InfoResources(1, $Minute) zwróci warto ść 54 {% wolnych zasobów} InfoResources(2, $Minute) zwróci warto ść 36 {% wolnych zasobów} InfoResources(3, $Minute) zwróci warto ść 11524093 {bajtów} InfoResources(4, $Minute) zwróci warto ść 14 {liczba aktywnych aplikacji} Informacje o zasobach systemu: Warto ść 1&Warto ść 2 Pami ęci GDI i U żytkownika zakodowane s ą na zwracanie 50% w systemach Windows NT i Windows 2000.

Warto ść 3) W systemie Windows NT i Windows 2000 zwracana jest "liczba wolnych bajtów pliku stronicowania".

Warto ść 4) W systemie Windows NT i Windows 2000 zwracany jest wynik przeszukiwania wszystkich okien umieszczonych na samej górze. Zliczane s ą wył ącznie okna widoczne, nie nale żące do innych okien. Nie jest to w rzeczywisto ści "liczba zada ń uruchomionych w danej chwili" w systemie. Najlepszym przybli żeniem tej liczby jest liczba elementów na zakładce Aplikacje dost ępnej po uruchomieniu Menad żera zada ń w systemie Windows NT, lub liczba pozycji wy świetlana na li ście po wci śni ęciu klawiszy ctrl+alt+del w systemie Windows 2000.

Opis funkcji, pól i zmiennych systemowych

218 Rozdział 3

Int()

InvisibleVerifyCredentials()

IOGetApplication()

Zwraca najbliższą liczbę całkowitą, mniejszą lub równą podanej liczbie.Kategoria funkcje matematyczneSkładnia IntegerResult=Int(Number);

Parametr OpisNumber Dowolna liczba, zmienna rzeczywista (Real) lub

całkowita (Integer) programu InTouch.Uwagi W przypadku podanej liczby ujemnej wynikiem działania funkcji jest

największa liczba całkowita mniejsza lub równa argumentowi funkcji.Przykład(y) Int(4.7) daje w wyniku 4

Int(-4.7) daje w wyniku –5

Sprawdza nazwę i hasło bez logowania go do aplikacji.Kategoria bezpieczeństwoSkładnia AnalogTag=InvisibleVerifyCredentials( "UserId",

"Password", "Domain" );

Parametr OpisUserId Nazwa konta użytkownika systemu Windows

Uwagi Jeżeli nazwa użytkownika, hasło i domena są prawidłowe zwrócony zostanie poziom dostępu powiązany z użytkownikiem, w innym wypadku zwrócona zostanie wartość -1. To wywołanie nie zmienia bieżąco zalogowanego użytkownika.

Przykład(y) AnalogTag=InvisibleVerifyCredentials( "john", "Password", "corporate_hq" );

Patrz również PostLogonDialog(), AttemptInvisibleLogon(), IsAssignedRole(), QueryGroupMembership(), AddPermission().

Funkcja ta zwraca nazwę aplikacji zdefiniowaną dla podanej nazwy dostępu do określonej zmiennej.

Kategoria różneSkładnia IOGetApplication(“AccessName”);

Parametr OpisAccessName Istniejąca nazwa dostępu.

Uwagi Nazwa dostępu może być łańcuchem znaków, wartością innej zmiennej programu InTouch lub wartością funkcji. Zamieszczona poniżej przykładowa instrukcja przypisze do zmiennej MyTag1 nazwę aplikacji zdefiniowaną dla nazwy dostępu MyAccess1.

Przykład(y) MyTag1 = IOGetApplication("MyAccess1");

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 219

IOGetNode()

IOGetTopic()

IOReinitialize()

Funkcja ta zwraca informację o stacji (adres) zdefiniowanym dla podanej nazwy dostępu do określonej zmiennej.

Kategoria różneSkładnia IOGetNode(“AccessName”);

Parametr OpisAccessName Istniejąca nazwa dostępu dla której zwracana jest

informacja.Uwagi Nazwa dostępu może być łańcuchem znaków, wartością innej zmiennej

programu InTouch lub wartością funkcji. Zamieszczona poniżej przykładowa instrukcja przypisze do zmiennej MyTag1 adres stacji zdefiniowany dla nazwy dostępu MyAccess1.

Przykład(y) MyTag1 = IOGetNode("MyAccess1");

Funkcja ta zwraca nazwę tematu zdefiniowanego dla podanej nazwy dostępu do określonej zmiennej.

Kategoria różneSkładnia IOGetTopic(“AccessName”);

Parametr OpisAccessName Istniejąca nazwa dostępu dla której będzie zwrócona

nazwa tematu.Uwagi Nazwa dostępu może być łańcuchem znaków, wartością innej zmiennej

programu InTouch lub wartością funkcji. Zamieszczona poniżej przykładowa instrukcja przypisze do zmiennej MyTag1 nazwę tematu zdefiniowaną dla nazwy dostępu MyAccess1.

Przykład(y) MyTag1 = IOGetTopic("MyAccess1");

Funkcja ta powoduje zamknięcie wymiany danych z wszystkimi istniejącymi programami komunikacyjnymi, a następnie ponowne wznowienie całego procesu przygotowywania do pracy z programami komunikacyjnymi. Funkcja ta dotyczy wszystkich programów komunikacyjnych.

Kategoria różneSkładnia IOReinitialize();

Uwagi Działanie tej funkcji powoduje wykonanie tej samej operacji, co polecenie Reinicjalizuj komunikację z menu Specjalne programu WindowViewer.

Opis funkcji, pól i zmiennych systemowych

220 Rozdział 3

IOSetAccessName()Zmodyfikowanie części application lub topic Nazwy dostępu w czasie wykonywania aplikacji, co pozwala na zaimplementowanie strategii hot- backup (rezerwacji komunikacji).

Kategoria różneSkładnia IOSetAccessName(“AccessName”, “NodeName”, “AppName”,

“TopicName”);

Parametr OpisAccessName Istniejąca nazwa dostępu, dla której mają być

przypisane nowe wartości parametrów AppName i TopicName. Łańcuch znaków lub zmienna tekstowa.

NodeName Nowa wartość parametru NodeName. Łańcuch znaków lub zmienna tekstowa.

Aby użyć istniejącej nazwy stacji, należy użyć "" bez łańcuch a znaków. Aby użyć istniejącej stacji lokalnej, należy użyć " ". (puste miejsce)

AppName Nowa wartość parametru AppName. Łańcuch znaków lub zmienna tekstowa.

TopicName Nowa wartość parametru TopicName. Łańcuch znaków lub zmienna tekstowa.

Uwagi Parametry AccessName, NodeName, AppName i TopicName mogą być łańcuchami znaków, wartościami innych zmiennych programu InTouch, lub wartościami funkcji. Przykładowo, nazwa dostępu MyAccess1 może zostać zmieniona tak, aby wskazywać na aplikację "EXCEL", oraz temat "Sheet1" przy pomocy polecenia:

Przykład(y) IOSetAccessName("MyAccess1","MyComputer1","EXCEL", "[Book1.xls]Sheet1");

lub,Number = 1;

AccNameString = “MyAccess” + Text(Number, "#");

IOSetAccessName(AccNameString, "", "EXCEL", "[Book1.xls]Sheet1");

W przypadku gdy jako temat wprowadzony zostanie pusty łańcuch znaków, nazwa tematu nie ulegnie zmianie, a nazwa aplikacji zostanie zaktualizowana. Zamieszczona poniżej instrukcja zmienia wartość aplikacji dla nazwy dostępu MyAccess2 na "excel", bez wprowadzania zmian w bieżącej wartości tematu.IOSetAccessName("MyAccess2", "", "excel", "");

Podobnie, jeżeli dla nazwy aplikacji wprowadzony zostanie pusty łańcuch znaków , bieżąca wartość aplikacji nie ulegnie zmianie, a parametr temat zostanie zaktualizowany. Zamieszczona poniżej instrukcja zmienia wartość tematu TopicName zmiennej MyAccess3 na "Sheet2", bez zmiany wartości aplikacji AppName.

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 221

IOSetItem()

IOSetAccessName("MyAccess3", "","", "[Book1.xls]Sheet2");

Wykonywaniu funkcji IOSetAccessName() towarzyszy krótka zwłoka czasowa, wymagana na przerwanie bieżącej konwersacji oraz zainicjowanie nowej. W czasie tej zwłoki, wszystkie próby odczytu lub zapisu wartości do nowego tematu kończą się niepowodzeniem.PAGEwill be lost

Funkcja ta zmienia nazwę dostępu i/lub nazwę pozycji w polu .Reference zmiennej typu I/O.

Kategoria różneSkładnia IOSetItem(“Tagname”,”AccessName”,”Item”);

Parametr OpisZmienna Dowolna zmienna typu I/O ujęta w cudzysłowy.AccessName Nowa nazwa dostępuElement Nowa nazwa pozycji

Przykład(y) IOSetItem(TagName, AccessName, Item)

Tagname, AccessName, and Item tematu mogą być łańcuchami znaków, wartościami innych zmiennych programu InTouch, lub wartościami funkcji. Przykładowo, instrukcja zamieszczona poniżej zmienia pole .Reference zmiennej MyTag1 na nazwę dostępu "excel" i pozycję "R1C1":IOSetItem("MyTag1", "[Book1.xls]excel", "R1C1");

lub poprzezNumber = 1;TagNameString = "MyTag" + Text(Number, "#");IOSetItem(TagNameString, "[Book1.xls]excel", "R1C1");

Jeżeli jako wartość parametrów AccessName i Item podany będzie pusty łańcuch znaków (""), zmienna zostanie dezaktywowana. Przykładowo, w celu dezaktywacji zmiennej MyTag2należy wpisać:IOSetItem("MyTag2", "", "");

Podobnie, jeżeli jako wartość parametry Item wprowadzony zostanie pusty łańcuch znaków, bieżąca wartość pozycji nie ulegnie zmianie, a parametr AccessName zostanie zaktualizowana. Zmiana nazwy dostępu dla zmiennej MyTag3 na "excel2", tak jak to przedstawiono poniżej, nie spowoduje zmiany bieżącej wartości pozycji:IOSetItem("MyTag3", "[Book1.xls]excel2", "");

Podobnie, jeżeli jako parametr AccessName wprowadzony zostanie pusty łańcuch znaków , bieżąca wartość nazwy dostępu nie ulegnie zmianie, a parametr element zostanie zaktualizowany. Zmiana nazwy elementu dla zmiennej MyTag3 na "R1C2", tak jak to przedstawiono poniżej, nie spowoduje zmiany bieżącej wartości nazwy dostępu:IOSetItem("MyTag4", "", "R1C2");

Opis funkcji, pól i zmiennych systemowych

222 Rozdział 3

IOStartUninitConversations()

IsAnyAsynchFunctionBusy()

Po uruchomieniu programu WindowViewer funkcja ta automatycznie próbuje zainicjować wymianę danych z programami komunikacyjnymi. Jeżeli program komunikacyjny nie odpowiada, można ponownie wydać polecenie zainicjowania wymiany danych przez program WindowViewer z programami komunikacyjnymi poprzez użycie tej funkcji w skrypcie QuickScript.

Kategoria różneSkładnia IOStartUninitConversations();

Uwagi Działanie tej funkcji powoduje wykonanie tej samej operacji, co polecenie Wznów niezainicjalizowane konwersacje z menu Specjalne programu WindowViewer.

Zadaniem tej funkcji jest sprawdzenie, czy w danej chwili uruchomiona jest jakakolwiek funkcja asynchroniczna. Funkcja ta może zostać użyta do wstrzymywania uruchamiania kolejnych funkcji asynchronicznych, aż do momentu zakończenia wykonywania już uruchomionych. Pozwala to na synchronizację pracy tych funkcji.

Kategoria systemSkładnia DiscreteTag=IsAnyAsynchFunctionBusy(timeout);

Parametr OpisDiscreteTag Zmienna typu dyskretnego której wartość ustalana

jest w następujący sposób:Jeżeli przekroczony został czas oczekiwania na zakończenie wykonywania wszystkich funkcji QuickFunction, wartość zmiennej DiscreteTag ustawiana jest na 1Jeżeli nie jest wykonywana żadna funkcja asynchroniczna, wartość tej zmiennej ustawiana jest natychmiast na 0, lub też funkcja QuickFunction będzie czekać przez okres czasu, podany w parametrze timeout. Jeżeli po upływie okresu czasu określonego parametrem timeout, żadna funkcja QuickFunction nie będzie w trakcie wykonywania, wartość tej zmiennej zostanie ustawiona na 0.

timeout Wartość całkowita podająca w sekundach okres czasu, w ciągu którego będzie sprawdzane, czy jest uruchomiona funkcja asynchroniczna.Wartość zero (0) oznacza brak oczekiwania.

Przykład(y) Załóżmy, że zachodzi potrzeba połączenia szeregu baz danych SQL za pomocą asynchronicznych funkcji QuickFunction, oraz , że operacja ta będzie wymagać 2 minut. Najpierw należy wywołać funkcję asynchroniczną QuickFunction w celu połączenia się z bazą danych SQL. Następnie, należy wywołać funkcję IsAnyAsynchFunctionBusy(120) w celu zapewnienia odpowiedniej ilości czasu na realizację funkcji.

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 223

IsAssignedRole()

Log()

Jeżeli jednakże po upływie dwóch minut połączenie nie zostanie nawiązane, a asynchroniczna funkcja QuickFunction nadal podejmuje próby realizacji połączenia, funkcja IsAnyAsynchFunctionBusy() zwracać będzie wartość 1 (true). Można w tym momencie wyświetlić komunikat informujący, że próba połączenia SQL nie powiodła się.Można skorzystać z następującego skryptu On Show związanego z oknem.IF IsAnyAsynchFunctionBusy(120) == 1 THENSHOW "Okno dialogowe - B³¹d w po³¹czeniu SQL";ENDIF;

Funkcja służy do sprawdzania czy bieżąco zalogowany użytkownik posiada przypisaną rolę.

Kategoria bezpieczeństwoSkładnia DiscreteTag=IsAssignedRole( "RoleName" );

Parametr OpisRoleName Rola przypisana użytkownikowi AppServer'a.

Uwagi Właściwa dla trybu zabezpieczeń zgodnym z Application Server'em i dotyczy bieżąco zalogowanego użytkownika. Jeżeli użytkownik jest zalogowany oraz jeżeli ma przypisaną w środowisku Galaxy IDE rolę lpszRoleName, zwracana jest wartość PRAWDA. We wszystkich innych wypadkach zwracana jest wartość FAŁSZ.

Przykład(y) DiscreteTag=IsAssignedRole( "Administrator" );

Patrz również AttemptInvisibleLogon(), PostLogonDialog(), InvisibleVerifyCredentials(), QueryGroupMembership(), AddPermission().

Funkcja ta oblicza wartość logarytmu naturalnego z podanej liczby.Kategoria funkcje matematyczneSkładnia RealResult=Log(Number);

Parametr OpisNumber Dowolna liczba, zmienna rzeczywista (Real) lub

całkowita (Integer) programu InTouch.Uwagi Logarytm naturalny z liczby Number jest obliczany i zapisywany jako

RealResult. Wartość logarytmu naturalnego z liczby 0 jest nie określona.Przykład(y) Log(100) daje w wyniku 4.605...

Log(1) daje w wyniku 0

Opis funkcji, pól i zmiennych systemowych

224 Rozdział 3

LogMessage()

LogN()

Zapisuje komunikat zdefiniowany przez użytkownika w programie Wonderware Logger.

Kategoria różneSkładnia LogMessage(“Message_Tag”);

Parametr OpisMessage_Tag Łańcuch znaków, który ma zostać zapisany w oknie

programu WWLogger. Łańcuch znaków lub zmienna tekstowa.

Uwagi Funkcja ta jest bardzo użytecznym narzędziem do szukania przyczyn niepoprawnego wykonywania skryptów. Umieszczenie funkcji LogMessage() w odpowiednim miejscu w skrypcie, pozwala na wyznaczenie kolejności wykonywania, ocenę pracy skryptów QuickScript, oraz identyfikację wartości zmiennych, przed ich zmianą, a po przekazaniu ich do skryptu. Każdy komunikat wysyłany do programu Wonderware Logger ma określoną dokładnie godzinę i datę.

Przykład(y) LogMessage("Report Script is Running");

Powyższa instrukcja powoduje zapisanie następującego komunikatu w oknie programu WWLogger:94/01/14 15:21:14 WWSCRIPT Message:Report Script is Running.

LogMessage(“The Value of MyTag is “ + Text(MyTag, “#”));

MyTag+MyTag + 10;

LogMessage(“The Value of MyTag is “ + Text(MyTag, “#”));

Więcej informacji na temat programu Wonderware Logger podano w podręczniku FactorySuite System Administrator's User Guide.

Zwraca logarytm x o podstawie n.Kategoria funkcje matematyczneSkładnia Result=LogN(Number,Base);

Parametr OpisNumber Dowolna liczba, zmienna rzeczywista (Real) lub

całkowita (Integer) programu InTouch.Base Podstawa logarytmu (liczba rzeczywista). Liczba

lub zmienna całkowita.Uwagi Wartość podstawy nie może być równa 1.Przykład(y) LogN(8, 3) daje w wyniku 1.89279

LogN(NumberTag, BaseTag) daje w wyniku 0.564 Jeœli wartoœci¹ NumberTag jest 3, a BaseTag 7.

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 225

Logoff()

Pi()

PlaySound()

Wylogowuje użytkownika aplikacji InTouch.Kategoria bezpieczeństwoSkładnia DiscreteTag = LogOff();

Parametr OpisN/A

Uwagi Wylogowuje bieżąco zalogowanego użytkownika i ustawia użytkownika na domyślną wartość none.

Przykład(y) DiscreteTag = LogOff();

Patrz również PostLogonDialog(), InvisibleVerifyCredentials(), IsAssignedRole(), AttemptInvisibleLogon(), QueryGroupMembership(), AddPermission().

Zwraca wartość liczby Pi.Kategoria funkcje matematyczneSkładnia RealResult=Pi();

Przykład(y) Pi() daje w wyniku 3.1415926

Odtwarza dźwięk zapisany w pliku .wav.Kategoria różneSkładnia PlaySound(“SoundName”,Flags);

Parametr OpisSoundName Łańcuch znaków lub zmienna tekstowa, zawierająca

nazwę pliku dźwiękowego do odtworzenia.Flags Parametr Flags może mieć jedną z następujących

wartości:Typ Opis0 Synchroniczne odtworzenie dźwięku

(opcja domyślna).1 Asynchroniczne odtworzenie dźwięku.2 Nie zostanie odtworzony dźwięk

domyślny. Jako SoundName można podać nazwę dowolnego pliku typu .wav. Może to być również dowolna nazwa z sekcji [Sounds] pliku win.ini. Przykładowo, jeśli w pliku znajduje się następujący wpis: MouseClick=C:\Sounds\Click.wav

Opis funkcji, pól i zmiennych systemowych

226 Rozdział 3

PostLogonDialog()

Można użyć pliku MouseClick jako SoundName.

3 Wartość ta nie jest używana!4 Wartość ta nie jest używana!5-7 Wartość ta nie jest używana!8 Powtarzanie dźwięku do momentu

ponownego wywołania funkcji PlaySound(). Wartość dostępna dla systemu Windows 2000.

9 Wywoływane jest PlaySound(). Wartość dostępna dla systemu Windows NT.

16 Aktualnie odtwarzany dźwięk nie będzie zatrzymany.

Przykład(y) PlaySound ("c:\horns.wav",1);

Uwaga: Dźwięk musi fizycznie zmieścić się w dostępnym obszarze pamięci i musi istnieć możliwość jego odtworzenia na zainstalowanym urządzeniu do odtwarzania. W celu znalezienia plików z dźwiękami, kartoteki przeszukiwane są w następującej kolejności: kartoteka bieżąca, kartoteka systemu Windows, podkartoteka System systemu Windows, oraz kartoteki podane w instrukcji PATH. Jeśli nie można znaleźć podanego pliku dźwiękowego (.WAV), należy wskazać Start, Ustawienia, Panel sterowania i podwójnie kliknąć na ikonie Dźwięki i skonfigurować domyślny dźwięk. Jeśli jednak pliku tego nie można znaleźć, żaden dźwięk nie zostanie odtworzony.

Wyświetla okno dialogowe logowania oraz zwraca wartość PRAWDA.Kategoria bezpieczeństwoSkładnia DiscreteTag=PostLogonDialog();

Uwagi Wyświetla okno dialogowe logowania oraz zwraca wartość PRAWDA.Przykład(y) DiscreteTag=PostLogonDialog();

Patrz również InvisibleVerifyCredentials(), AttemptInvisibleLogon(), IsAssignedRole(), QueryGroupMembership(), AddPermission().

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 227

PrintHT()Funkcja ta może być wykorzystana do drukowania wykresu trendu historycznego powiązanego z określoną zmienną typu Hist Trend. W czasie korzystania z tej funkcji, trend historyczny musi być widoczny na ekranie.

Kategoria dane historyczneSkładnia PrintHT("Trend_Tag");

Parametr OpisTrend_Tag Nazwa zmiennej typu HistTrend reprezentującej

trend historyczny. Łańcuch znaków lub zmienna tekstowa.

Uwagi -Przykład(y) PrintHT("HistTrend1");

Opis funkcji, pól i zmiennych systemowych

228 Rozdział 3

PrintScreen()Drukuje określony ekran.

Kategoria różneSkładnia PrintScreen(ScreenOption, PrintOption );

Parametr OpisScreenOption 1 – Obszar okna (bez menu)

2 – Obszar okna (zwartość okna WindowViewer, łącznie z menu).

Uwaga. Niewłaściwe opcje (włączając w to 0) powodują domyślnie wydruk obszaru okna (bez menu).

PrintOption 1 – Best Fit - dopasowanie do rozmiarów drukowanej strony (dopasowanie zarówno w kierunku pionowym jak i poziomym, z zachowaniem proporcji obrazu).

2 – Vert Fit - dopasowanie w kierunku pionowym (dopasowuje wydruk w kierunku pionowym do rozmiarów drukowanej strony z zachowaniem proporcji obrazu).

3 – Horz Fit - dopasowanie w kierunku poziomym (dopasowuje wydruk w kierunku poziomym do rozmiarów drukowanej strony z zachowaniem proporcji obrazu).

4 - Stretch to Page – rozciągnięcie obrazu do pełnej strony – proporcje obrazu mogą być zniekształcone.

Uwaga. Niewłaściwe opcje (włączając w to 0) powodują domyślne ustawienie tego parametru na wartość 1 (Best Fit).

Uwagi Rozwijalne okna z poza widocznego obszaru w każdym trybie są niewidoczne. Dodatkowo, inne aplikacje przykrywające normalnie inne okna, jak np. Debugger, będą drukowane, jeśli ich okna nachodzą na okno WindowViewer.

Ta funkcja skryptowa QuickScript zachowuje się identycznie jak funkcja PrintWindow(), jedyną różnicą jest ilość okien, które są drukowane. Okres oczekiwania można zmienić poprzez dodanie następującej linii w pliku InTouch.ini:PrintScreenWait=10000

gdzie 10000 jest czasem oczekiwania w milisekundach.

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 229

Czcionki są drukowane jako czcionki, obiekty jako mapy bitowe. Okna z białym tłem, zawierające tylko teksty są drukowane bardzo szybko. Okna z kolorowym tłem, zawierające wiele obiektów są drukowane znacznie wolniej.Aby zapewnić prawidłowy wydruk tekstu w oknach, zaleca się stosowanie czcionek "TrueType" we wszystkich polach tekstowych w oknach przeznaczonych do drukowania.

Przy drukowaniu przycisków może okazać się, że tekst na przyciskach zostanie obcięty, ponieważ czcionka zastosowana w tekście na przycisku jest czcionką systemową, nie będącą czcionką "TrueType". Czcionki systemowe na drukarce wyglądają nieco inaczej niż na ekranie. Jeśli sytuacja taka będzie miała miejsce, należy spróbować zwiększyć rozmiar przycisku.

Jeśli drukarka służy do drukowania alarmów, aby móc wykorzystywać funkcję PrintScreen() konieczna jest druga drukarka.

Funkcja PrinScreen() nie może drukować poprawnie, jeżeli jakiekolwiek okno nałożone jest na obiekt wyświetlania alarmu rozproszonego, listę rozwijalną, pole tekstowe, pole wyboru wykluczającego, pole wyboru, itd.

Opis funkcji, pól i zmiennych systemowych

230 Rozdział 3

PrintWindow()Drukuje określone okno.

Kategoria różneSkładnia PrintWindow("Window",Left,Top,Width,Height,Options);

Parametr OpisOkno Nazwa okna przeznaczonego do wydruku.

Łańcuch znaków lub zmienna tekstowa.Lewo Liczba zmiennoprzecinkowa oznaczająca

wielkość lewego marginesu w calach. Liczba lub zmienna typu rzeczywistego.

Góra Liczba zmiennoprzecinkowa oznaczająca wielkość górnego marginesu w calach. Liczba lub zmienna typu rzeczywistego.

Szerokość Liczba zmiennoprzecinkowa oznaczająca szerokość wydruku w calach. Może być ona równa 0 (co oznacza największą możliwą wielkość wydruku) lub może podawać konkretną szerokość. Liczba lub zmienna typu rzeczywistego.

Wysokość Liczba zmiennoprzecinkowa oznaczająca wysokość wydruku w calach. Może być ona równa 0 (co oznacza największą możliwą wielkość wydruku) lub może podawać konkretną wysokość. Liczba lub zmienna typu rzeczywistego.

Options Wartość dyskretna, przyjmująca wartość 0 lub 1, wykorzystywana jedynie gdy parametry Width i Height są równe 0. Jeśli wartość parametru Options wynosi 1, okno jest drukowane w powiększeniu stanowiącym całkowitą wielokrotność rozmiarów okna (przy zachowaniu stosunku długości boków). Wartość 0, 1, lub zmienna typu dyskretnego.Jeśli wartość parametru Options wynosi 0, okno jest drukowane w największym możliwym powiększeniu, tak, aby zmieściło się na stronie.

Jeśli okno zawiera mapę bitową, parametr Options należy ustawić na 1, aby zapobiec "rozciągnięciu" mapy bitowej.

Uwagi Można przytoczyć wiele przykładów użycia tej funkcji. W przypadku konieczności wydruku nie tylko wykresu trendu historycznego, ale całego ekranu w trybie Runtime, zamiast funkcji PrintHT() i wydruku inicjowanego przez operatora z poziomu okna dialogu trendu historycznego zaleca się używanie funkcji PrintWindow().

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 231

W czasie wykonywania tej funkcji, okno zapisywane jest poza obszarem pamięci ekranu. Kolejny etap to odczekanie 10 sekund w celu umożliwienia uaktualnienia wartości wszystkich zmiennych DDE. Następnie okno jest wysyłane do drukarki. W celu wydrukowania okna, nie musi ono być otwarte czy widoczne.. Okres oczekiwania można zmienić poprzez dodanie następującej linii w pliku InTouch.ini:PrintWindowWait=10000gdzie 10000 jest czasem oczekiwania w milisekundach.Czcionki są drukowane jako czcionki, obiekty jako mapy bitowe. Okna z białym tłem, zawierające tylko teksty są drukowane bardzo szybko. Okna z kolorowym tłem, zawierające wiele obiektów są drukowane znacznie wolniej.Aby zapewnić prawidłowy wydruk tekstu w oknach, zaleca się stosowanie czcionek "TrueType" we wszystkich polach tekstowych w oknach przeznaczonych do drukowania.Przy drukowaniu przycisków może okazać się, że tekst na przyciskach zostanie obcięty, ponieważ czcionka zastosowana w tekście na przycisku jest czcionką systemową, nie będącą czcionką "TrueType" a czcionka systemowa drukarki może się od niej różnić. Jeśli sytuacja taka będzie miała miejsce, należy spróbować zwiększyć rozmiar przycisku.

Jeśli drukarka służy do drukowania alarmów, aby móc wykorzystywać funkcję PrintWindow() konieczna jest druga drukarka.Funkcja PrintWindow() nie może drukować poprawnie, jeżeli jakiekolwiek okno nałożone jest na obiekt wyświetlania alarmu rozproszonego, listę rozwijalną, pole tekstowe, pole wyboru wykluczającego, pole wyboru, itd.

Jeśli drukowane okno nie znajduje się na pierwszym planie, listy rozwijalne i inne widoczne obiekty Windows/ActiveX (takie jak np. Active TagBrowser) nie zostaną wydrukowane. Jeżeli drukowane okno znajduje się na pierwszym planie, obiekty te nie będą widoczne na wydruku.

Inaczej ujmując, przycisk drukowania musi znajdować się w tym samym oknie, które będzie drukowane. Jeżeli przycisk drukowania znajduje się w innym oknie niż drukowane okno, Listy, Listy Rozwijalne i inne obiekty ActiveX, nie będą wydrukowane.Aby uniknąć tego problemu, przed skorzystaniem z funkcji PrintWindow() należy wywołać funkcje Show(), ShowAt() lub almMoveWindow().

Przykład(y) Zamieszczony poniżej przykładowy skrypt warunkowy typu "gdy prawda" codziennie o godzinie 8:30 drukuje trzystronicowy raport:

Warunkowy $Hour == 8 AND $Minute == 30

Skrypt: PrintWindow("1st Shift Summary",1,1,0,0,0);PrintWindow("2nd Shift Summary",1,1,0,0,0);PrintWindow("3rd Shift Summary",1,1,0,0,0);

Funkcja PrintWindow() zwraca wartość 1, jeśli okno o podanej nazwie istnieje i może zostać wydrukowane. W przeciwnym wypadku zwróci wartość 0. W ten sposób można monitorować wykonanie funkcji.Status=PrintWindow("Shift Summary",1,1,0,0,0);

Status jest zmienną dyskretną i może przyjmować wartości 0 lub 1.

Opis funkcji, pól i zmiennych systemowych

232 Rozdział 3

QueryGroupMembership()

RecipeDelete()

Kategoria bezpieczeństwoSkładnia DiscreteTag=QueryGroupMembership( "Domain", "Group" );

Parametr OpisDomena Nazwa domeny lub lokalnego komputera gdzie

znajduje się grupa.Grupa Nazwa domeny lub lokalnego komputera gdzie

znajduje się grupa.Uwagi Właściwa dla trybu zabezpieczeń zgodnym z systemem operacyjnym i

dotyczy bieżąco zalogowanego użytkownika. Jeżeli użytkownik jest zalogowany i jeżeli jest członkiem grupy lpszGroup, która jest zdefiniowana w domenie lpszDomain, zwrócona zostanie wartość PRAWDA natomiast w innych wypadkach wartość FAŁSZ.

Przykład(y) DiscreteTag=QueryGroupMembership( "corporate_hq", "InTouchAdmins" ); DiscreteTag=QueryGroupMembership( "JohnS01", "InTouchUsers" );

Patrz również BOOL PostLogonDialog(), InvisibleVerifyCredentials(), BOOL IsAssignedRole(), AttemptInvisibleLogon(), AddPermission().

Funkcja ta powoduje usunięcie receptury z zadanego pliku.Kategoria recepturySkładnia RecipeDelete("Filename","RecipeName");

Parametr OpisFileName Nazwa pliku z recepturami, których dotyczą

operacje wykonywane przez funkcję. Łańcuch znaków lub zmienna tekstowa.

RecipeName Nazwa receptury w pliku o podanej nazwie, którego dotyczą operacje wykonywane przez funkcję. Funkcje RecipeLoad(), RecipeSave() i RecipeDelete() wymagają od użytkownika podania parametru RecipeName. Funkcja RecipeSelectRecipe() natomiast zwraca wartość tego parametru. Łańcuch znaków lub zmienna tekstowa.

Przykład(y) Instrukcja zamieszczona poniżej powoduje usunięcie receptury "Recipe1" z pliku RECFILE.CSV.RecipeDelete("c:\recipe\recfile.csv", "Recipe1");

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 233

RecipeGetMessage()Funkcja ta zapisuje kod błędu zwrócony przez funkcję jako zmienną analogową, a związany z kodem komunikat jako zmienną tekstową.

Kategoria recepturySkładnia RecipeGetMessage(Analog_Tag,Message_Tag,Number);

Parametr OpisAnalog_Tag Zmienna analogowa zawierająca kod błędu.Message_Tag Zmienna tekstowa zawierająca komunikat związany

z kodem błędu.Number Parametr ten określa maksymalną długość łańcucha

znaków przypisywanego do zmiennej Message_Tag.. Zmienne tekstowe w programie InTouch mogą przyjmować maksymalną długość 131 znaków. Jeśli maksymalna długość zmiennej tekstowej nie jest ograniczona z innych względów, należy przyjmować wartość tego parametru równą 131. Parametr Number może być wartością stałą lub zmienną programu InTouch.

Przykład(y) Zastosowanie funkcji RecipeGetMessage() w skrypcie QuickScript związanym ze zmianą danych umożliwia zapisanie kodu błędu do zmiennej analogowej, a związanego z kodem komunikat może być przypisany do zmiennej tekstowej:Skrypt Zmiany Danych Zmienna[.pole]:ErrorCodeSkrypt: RecipeGetMessage(ErrorCode, ErrorMessage,131);

Skrypt ten będzie wykonywany po każdorazowej zmianie wartości zmiennej analogowej ErrorCode. Spowoduje on odczytanie przez funkcję RecipeGetMessage() aktualnej wartości zmiennej ErrorCode, oraz przypisanie komunikatu towarzyszącego tej wartości do zmiennej ErrorMessage.ErrorCode = RecipeLoad ("c:\App\recipe.csv","Unit1","cookies");

RecipeGetMessage(ErrorCode, ErrorMessageTag, 131);

Opis funkcji, pól i zmiennych systemowych

234 Rozdział 3

RecipeLoad()Funkcja ta powoduje załadowanie receptury (Recipe) dla podanego zestawu zmiennych (Unit).

Kategoria recepturySkładnia RecipeLoad("Filename","UnitName","RecipeName");

Parametr OpisFileName Nazwa pliku z recepturami, których dotyczą

operacje wykonywane przez funkcję. Parametrem FileName może być stałą tekstową, lub zmienną tekstową zawierająca nazwę pliku z szablonami receptur.

UnitName Nazwa zestawu zmiennych w pliku receptur, którego dotyczą operacje wykonywane przez funkcję. Argument UnitName wymagany jest przy wywoływaniu funkcji RecipeLoad(). Funkcja RecipeSelectUnit() zwraca wartość tego parametru. Parametrem UnitName może być stała tekstowa lub zmienna tekstowa zawierająca nazwę modułu.

RecipeName Nazwa określonej receptury w pliku receptur, którego dotyczą operacje wykonywane przez funkcję. Funkcje RecipeLoad(), RecipeSave() i RecipeDelete() wymagają od użytkownika podania parametru RecipeName. Funkcja RecipeSelectRecipe() natomiast zwraca wartość tego parametru. Parametr RecipeName może być zadany jako łańcuch znaków lub jako zmienna InTouch'a (pamięciowa lub DDE).

Przykład(y) Instrukcja zamieszczona poniżej powoduje załadowanie zestawu wartości zdefiniowanych jako receptura Recipe1 (w pliku recfile.csv) do zestawu zmiennych Unit.RecipeLoad("c:\recipe\recfile.csv", "Unit1", "Recipe1");

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 235

RecipeSave()Funkcja ta powoduje zapisanie nowo utworzonej lub zmodyfikowanej receptury (Recipe) w pliku receptur o podanej nazwie.

Kategoria recepturySkładnia RecipeSave("Filename","UnitName","RecipeName");

Parametr OpisFileName Nazwa pliku z recepturami, których dotyczą operacje

wykonywane przez funkcję. Parametrem FileName może być stałą tekstową, lub zmienną tekstową zawierająca nazwę pliku z szablonami receptur.

UnitName Nazwa zestawu zmiennych w pliku receptur, którego dotyczą operacje wykonywane przez funkcję. Argument UnitName wymagany jest przy wywoływaniu funkcji RecipeLoad(). Funkcja RecipeSelectUnit() zwraca wartość tego parametru. Parametrem UnitName może być stała tekstowa lub zmienna tekstowa zawierająca nazwę modułu.

RecipeName Nazwa określonej receptury w pliku receptur, którego dotyczą operacje wykonywane przez funkcję. Funkcje RecipeLoad(), RecipeSave() i RecipeDelete() wymagają od użytkownika podania parametru RecipeName. Funkcja RecipeSelectRecipe() natomiast zwraca wartość tego parametru. Parametr RecipeName może być zadany jako łańcuch znaków lub jako zmienna InTouch'a (pamięciowa lub DDE).

Przykład(y) Instrukcja zamieszczona poniżej powoduje zapisanie zmian dokonanych w recepturze o nazwie Recipe3 w pliku o nazwie RECFILE.CSV. Jeżeli w pliku recfile.csv nie ma receptury Recipe3, zostanie ona utworzona. Wartości zostaną przypisane zmiennym zdefiniowanym dla zestawu Unit2:RecipeSave("c:\recipe\recfile.csv", "Unit2", "Recipe3");

Opis funkcji, pól i zmiennych systemowych

236 Rozdział 3

RecipeSelectNextRecipe()Funkcja ta powoduje wybranie z pliku receptur receptury o kolejnej zdefiniowanej nazwie.

Kategoria recepturySkładnia RecipeSelectNextRecipe("Filename", RecipeName, Number);

Parametr OpisFileName Nazwa pliku z recepturami, których dotyczą operacje

wykonywane przez funkcję. Aktualna zmienna tekstowa.

RecipeName Nazwa określonej receptury w pliku receptur, którego dotyczą operacje wykonywane przez funkcję. Funkcje RecipeLoad(), RecipeSave() i RecipeDelete() wymagają od użytkownika podania parametru RecipeName. Funkcja RecipeSelectRecipe() natomiast zwraca wartość tego parametru. Parametr RecipeName może być zadany jako łańcuch znaków lub jako zmienna programu InTouch (pamięciowa lub DDE).

Number Jeśli zadaniem funkcji jest wypełnienie zmiennej tekstowej znakami, pole to służy do zadawania maksymalnej długości zapisywanego łańcucha znaków. Zmienne tekstowe w programie InTouch mogą przyjmować maksymalną długość 131 znaków. Jeśli maksymalna długość zmiennych nie jest ograniczona z innych względów, należy przyjmować wartość tego parametru równą 131. Liczba lub zmienna całkowita.

Przykład(y) Instrukcja zamieszczona poniżej powoduje odczytanie aktualnej wartości zmiennej tekstowej RecipeName i wybranie z pliku następnej receptury. Jeśli zmienna RecipeName nie ma żadnej przypisanej wartości lub nie może zostać znaleziona, funkcja zwraca nazwę pierwszej receptury w pliku. Jeśli zmienna RecipeName zawiera aktualnie nazwę ostatniej receptury w pliku, jej wartość pozostaje bez zmian. (Receptury są zapisywane w pliku w kolejności ich tworzenia.)RecipeSelectNextRecipe("c:\recipe\recfile.csv",RecipeName, 131);

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 237

RecipeSelectPreviousRecipe()Funkcja ta powoduje wybranie z pliku receptur poprzedniej receptury.

Kategoria recepturySkładnia RecipeSelectPreviousRecipe("Filename",RecipeName,

Number);

Parametr OpisFileName Nazwa pliku z recepturami, których dotyczą operacje

wykonywane przez funkcję. Aktualna zmienna tekstowa.

RecipeName Nazwa określonej receptury w pliku receptur, którego dotyczą operacje wykonywane przez funkcję. Funkcje RecipeLoad(), RecipeSave() i RecipeDelete() wymagają od użytkownika podania parametru RecipeName. Funkcja RecipeSelectRecipe() natomiast zwraca wartość tego parametru. Parametr RecipeName może być zadany jako łańcuch znaków lub jako zmienna programu InTouch (pamięciowa lub DDE).

Number Jeśli zadaniem funkcji jest wypełnienie zmiennej tekstowej znakami, pole to służy do zadawania maksymalnej długości zapisywanego łańcucha znaków. Zmienne tekstowe w programie InTouch mogą przyjmować maksymalną długość 131 znaków. Jeśli maksymalna długość zmiennych nie jest ograniczona z innych względów, należy przyjmować wartość tego parametru równą 131. Liczba lub zmienna całkowita.

Przykład(y) Instrukcja zamieszczona poniżej powoduje odczytanie aktualnej wartości zmiennej tekstowej RecipeName i wybranie z pliku poprzedniej receptury. Wrócona wartość zostanie zapamiętana w RecipeName, zastępując poprzednią wartość. Jeśli zmienna RecipeName nie ma żadnej przypisanej wartości lub nie może zostać znaleziona, funkcja zwraca nazwę ostatniej receptury w pliku. Jeśli zmienna RecipeName zawiera aktualnie nazwę ostatniej receptury w pliku, jej wartość pozostaje bez zmian. (Receptury są zapisywane w pliku w kolejności ich tworzenia.)RecipeSelectPreviousRecipe("c:\recipe\recfile.csv", RecipeName, 131);

Opis funkcji, pól i zmiennych systemowych

238 Rozdział 3

RecipeSelectRecipe()Funkcja ta powoduje wybranie z pliku receptur receptury o podanej nazwie.

Kategoria recepturySkładnia RecipeSelectRecipe("Filename",RecipeName,Number);

Parametr OpisFileName Nazwa pliku z recepturami, których dotyczą operacje

wykonywane przez funkcję. Aktualna zmienna tekstowa.

RecipeName Nazwa określonej receptury w pliku receptur, którego dotyczą operacje wykonywane przez funkcję. Funkcje RecipeLoad(), RecipeSave() i RecipeDelete() wymagają od użytkownika podania parametru RecipeName. Funkcja RecipeSelectRecipe() natomiast zwraca wartość tego parametru. Parametr RecipeName może być zadany jako łańcuch znaków lub jako zmienna programu InTouch (pamięciowa lub DDE).

Number Jeśli zadaniem funkcji jest wypełnienie zmiennej tekstowej znakami, pole to służy do zadawania maksymalnej długości zapisywanego łańcucha znaków. Zmienne tekstowe w programie InTouch mogą przyjmować maksymalną długość 131 znaków. Jeśli maksymalna długość zmiennych nie jest ograniczona z innych względów, należy przyjmować wartość tego parametru równą 131. Liczba lub zmienna całkowita.

Przykład(y) Zamieszczona poniżej instrukcja powoduje otwarcie okna dialogowego Wybierz recepturę:RecipeSelectRecipe("c:\recipe\recfile.csv", RecipeName, 131);

Po wybraniu pożądanej receptury, jej nazwa jest zapisywana jako wartosć zmiennej RecipeName.

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 239

RecipeSelectUnit()Funkcja ta powoduje wybranie z pliku receptur zestawu zmiennych, do którego zostanie załadowana bieżąca receptura.

Kategoria recepturySkładnia RecipeSelectUnit("Filename", UnitName,Number);

Parametr OpisFileName Nazwa pliku z recepturami, których dotyczą operacje

wykonywane przez funkcję. Aktualna zmienna tekstowa.

UnitName Nazwa zestawu zmiennych w pliku receptur, którego dotyczą operacje wykonywane przez funkcję. Argument UnitName wymagany jest przy wywoływaniu funkcji RecipeLoad(). Funkcja RecipeSelectUnit() zwraca wartość tego parametru. Parametr RecipeName może być zadany jako łańcuch znaków lub jako zmienna programu InTouch (pamięciowa lub DDE).

Number Jeśli zadaniem funkcji jest wypełnienie zmiennej tekstowej znakami, pole to służy do zadawania maksymalnej długości zapisywanego łańcucha znaków. Zmienne tekstowe w programie InTouch mogą przyjmować maksymalną długość 131 znaków. Jeśli maksymalna długość zmiennych nie jest ograniczona z innych względów, należy przyjmować wartość tego parametru równą 131. Liczba lub zmienna całkowita.

Przykład(y) Zamieszczona poniżej instrukcja powoduje otwarcie okna dialogowego Wybierz jednostkę:RecipeSelectUnit("c:\recipe\recfile.csv", UnitName, 131);

Po wybraniu z okna dialogowego zestawu, jego nazwa jest zwracana za pomocą zmiennej UnitName.Zarówno funkcja RecipeSelectRecipe() jak i funkcja RecipeSelectUnit() są używane w połączeniu z funkcją RecipeLoad().Więcej informacji na temat stosowania kombinacji funkcji można znaleźć w odpowiednim rozdziale podręcznika Podręcznik użytkownika - Menedżer receptur w wersji elektronicznej.

Opis funkcji, pól i zmiennych systemowych

240 Rozdział 3

ReloadWindowViewer()

RestartWindowViewer()

Funkcja ta pozwala użytkownikowi na przejęcie kontroli nad ponownym uruchomieniem programu WindowViewer.

Kategoria systemSkładnia ReloadWindowViewer();

Uwagi Funkcja ta powoduje automatyczne uaktualnienie programu WindowViewer. Pozwala to na uaktualnianie aplikacji w przypadku nie korzystania z funkcji automatycznego uaktualniania w architekturze NAD (Network Application Development). Funkcja ta może zostać wykorzystana wraz ze zmienną $ApplicationChanged do sprawdzenia czy aplikacja została uaktualniona i umożliwia uaktualnienie stacji bez przerywania ich pracy. Użycie polecenie Notify clients umożliwia operatorowi dokonanie uaktualnienia w późniejszym czasie. Funkcja ta może zostać użyta w skrypcie QuickScript związanym z przyciskiem. Pozwala to operatorowi na wykonanie dynamicznego uaktualniania programu WindowViewer w dogodnym momencie. Funkcja ta zastępuje funkcję RestartWindowViewer().

Patrz również $ApplicationChanged

Pozwala użytkownikowi na sterowane zamknięcie i ponowne uruchomienie programu WindowViewer.

Kategoria systemSkładnia RestartWindowViewer();

Uwagi Funkcja ta powoduje zamknięcie, a potem ponowne otwarcie programu WindowViewer. Pozwala to na uaktualnianie aplikacji w przypadku nie korzystania z funkcji automatycznego uaktualniania w architekturze NAD (Network Application Development). Funkcja ta może zostać wykorzystana wraz ze zmienną $ApplicationChanged do sprawdzenia czy aplikacja została uaktualniona i umożliwia uaktualnienie stacji poprzez zamknięcie i ponowne uruchomienie programu WindowViewer. Użycie polecenia powiadamiania o zmianach umożliwia operatorowi dokonanie uaktualnienia w późniejszym czasie. Funkcja ta może zostać użyta w skrypcie QuickScript związanym z przyciskiem. Pozwala to operatorowi na automatyczne zamknięcie i ponowne uruchomienie programu WindowViewer w dogodnym momencie. Funkcja ta generalnie została zastąpiona funkcją ReloadWindowViewer(), która umożliwia uaktualnienie oprogramowania na stacjach bez zamykania programu WindowViewer.

Patrz również $ApplicationChanged; ReloadWindowViewer()

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 241

Round()Zaokrągla liczbę rzeczywistą z podaną dokładnością.

Kategoria funkcje matematyczneSkładnia RealResult=Round(Number,Precision);

Parametr OpisNumber Dowolna liczba, zmienna rzeczywista (Real) lub

całkowita (Integer) programu InTouch.Precision Dokładność, z jaką podana liczba ma zostać

zaokrąglona. Liczba, zmienna rzeczywista lub całkowita.

Uwagi Parametr Precision określa do jakiej dokładności przybliżona zostanie wartość Number.

Przykład(y) Round(4.3, 1) daje w wyniku 4

Round(4.3, 0.01) daje w wyniku 4.30

Round(4.5, 1) daje w wyniku 5

Round(-4.5, 1) daje w wyniku -4

Round(106, 5) daje w wyniku 105

Round(43.7, .5) daje w wyniku 43.5

Patrz również Trunc()

Opis funkcji, pól i zmiennych systemowych

242 Rozdział 3

SendKeysFunkcja ta wysyła sekwencję klawiszy do aplikacji. Może symulować naciśnięcie większości klawiszy. Mechanizm ten pozwala na wprowadzanie danych do aplikacji, lub też wywoływanie jej poleceń. Za pomocą instrukcji SendKeys można wysłać większość klawiszy. Każdy klawisz jest reprezentowany przez jeden lub więcej znaków, np. litera A - przez A, klawisz Enter - przez ENTER.

Kategoria różneSkładnia SendKeys KeySequence;

Parametr OpisKeySequence Dowolna sekwencja klawiszy lub zmienna tekstowa

InToucha.Uwagi Aby zasymulować naciśnięcie kilku klawiszy, należy uszeregować kody

wprowadzanych znaków. Przykładowo, w celu wysłania symbolu dolara ($) i znaku (b), należy wprowadzić $b. Poniżej zamieszczono listę kodów różnych klawiszy klawiatury komputera:Klawisze Kod Klawisze KodBACKSPACE {BACKSPACE}

lub {BS}HOME {HOME}

BREAK {BREAK} INSERT {INSERT}CAPSLOCK {CAPSLOCK} LEFT {LEFT}DELETE {DELETE} or

{DEL}NUMLOCK {NUMLOCK}

DOWN {DOWN} PAGE DOWN {PGDN}END {END} PAGE UP {PGUP}ENTER {ENTER} lub ~

(tilde)PRTSC {PRTSC}

ESCAPE {ESCAPE} lub {ESC}

RIGHT {RIGHT}

F1 {F1}* TAB {TAB}UP {UP}

* W ten sposób budowane są nazwy dla pozostałych klawiszy funkcyjnych.Klawisze specjalne (SHIFT, CTRL oraz ALT) posiadają własne kody:Klawisze KodSHIFT +CTRL ^ALT %

Przykład(y) Jeśli dwa klawisze mają zostać wciśnięto jednocześnie, wymagany jest nawias przy kodzie drugiego klawisza. Instrukcja zamieszczona poniżej zastępuje przytrzymanie naciśniętego klawisza CTRL, naciśnięcie klawisza ALT, a po nim wprowadzenie litery p:SendKeys "^(%(p))";

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 243

SetPropertyD()

Powyższe polecenie może poprzedzać instrukcja zawierająca funkcję ActivateApp w celu skierowania kodów klawiszy do odpowiedniej aplikacji.Instrukcja zamieszczona poniżej uaktywnia arkusz kalkulacyjny Excel i wysyła do niego kombinację klawiszy CTRL+P (która może uruchamiać zdefiniowaną wcześniej makroinstrukcję drukowania, ze zdefiniowanym skrótem klawiszowym CTRL+P):ActivateApp "Microsoft Excel";

SendKeys "^(p)";

W celu wyświetlenia okna dialogowego logowania w programie WindowViewer można skorzystać z następującej instrukcji:SendKeys "%(SYL)";

Z przyciskiem o nazwie HELP można związać następujący skrypt:SendKeys "{F1}";

Rozszerzenia firmy Microsoft w zakresie sposobu obsługi sprzętu w systemie Windows mogą powodować że ta funkcja nie będzie działać na niektórych komputerach.

Funkcja ta nadaje właściwości wartość dyskretną w czasie wykonywania aplikacji.

Kategoria GOTSkładnia [ErrorNumber=]SetPropertyD("ControlName.Property",

DiscreteTag);

Parametr OpisControlName Nazwa obiektu sterującego okien, np. ChkBox_1, lub

nazwa obiektu do wyświetlania alarmów, np. AlmObj_1.

.Property Właściwość obiektu sterującego okna, lub obiektu do wyświetlania alarmów.

Aby dowiedzieć się więcej na temat tych właściwości, zobacz Rozdział 2, "Pola zmiennych."

DiscreteTag Wartość dyskretna (0 lub 1) lub zmienna dyskretna programu InTouch, której wartość zostanie zapisana jako wartość odpowiedniego pola wskutek wykonania funkcji. Typowe zastosowanie:0 = Obiekt sterujący jest nieaktywny1 = Obiekt sterujący jest aktywny

Uwagi Kody błędów dla funkcji tego typu można znaleźć w rozdziale Załącznik A.

Patrz również GetPropertyD(), GetPropertyI(), GetPropertyM(), SetPropertyI(), SetPropertyM()

Opis funkcji, pól i zmiennych systemowych

244 Rozdział 3

SetPropertyI()

SetPropertyM()

Funkcja ta nadaje właściwości wartość całkowitą w czasie wykonywania aplikacji.

Kategoria GOTSkładnia [ErrorNumber=]SetPropertyI("ControlName.Property",

Integer);

Parametr OpisControlName Nazwa obiektu sterującego oknem. Przykładowo,

ChkBox_1 lub nazwa obiektu do wyświetlania alarmów. Przykładowo, AlmObj_1.

Property Właściwość obiektu sterującego okna, lub obiektu do wyświetlania alarmów.

Aby dowiedzieć się więcej na temat tych właściwości, zobacz Rozdział 2, "Pola zmiennych."

Integer Liczba lub zmienna całkowita.Uwagi Kody błędów dla funkcji tego typu można znaleźć w rozdziale Załącznik

A.Patrz również GetPropertyD(), GetPropertyI(), GetPropertyM(), SetPropertyD(),

SetPropertyM()

Funkcja ta nadaje właściwości wartość tekstową w czasie wykonywania aplikacji.

Kategoria GOTSkładnia [ErrorNumber=]SetPropertyM("ControlName.Property",

"MessageTag");

Parametr OpisControlName Nazwa obiektu sterującego oknem. Przykładowo,

ChkBox_1 lub nazwa obiektu do wyświetlania alarmów. Przykładowo, AlmObj_1.

.Property Właściwość obiektu sterującego okna, lub obiektu do wyświetlania alarmów.

Aby dowiedzieć się więcej na temat tych właściwości, zobacz Rozdział 2, "Pola zmiennych."

MessageTag Łańcuch znaków, który zostanie przypisany do właściwości obiektu o nazwie ControlName. Łańcuch znaków lub zmienna tekstowa.

Uwagi Kody błędów dla funkcji tego typu można znaleźć w rozdziale Załącznik A.

Patrz również GetPropertyD(), GetPropertyI(), GetPropertyM(), SetPropertyI(), SetPropertyI()

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 245

Sgn()

Show

Określa znak podanej wartości (+,-,0).Kategoria funkcje matematyczneSkładnia IntegerResult=Sgn(Number);

Parametr OpisNumber Dowolna liczba, zmienna rzeczywista (Real) lub

całkowita (Integer) programu InTouch.Uwagi Jeżeli liczba wejściowa jest liczbą dodatnią, zwrócona zostanie wartość 1.

Dla liczby ujemnej zwrócone zostanie –1, zaś dla 0 – 0 (zero).Przykład(y) Sgn(425) daje w wyniku 1

Sgn(0) daje w wyniku 0

Sgn(-37.3) daje w wyniku –1

Funkcja ta umożliwia wyświetlenie określonego okna. (Nazwa okna musi być ujęta w cudzysłów.)

Kategoria różneSkładnia Show "Window";

Parametr OpisWindow Nazwa okna, które ma zostać wyświetlone. Łańcuch

znaków lub zmienna tekstowa.Uwagi Window musi być nazwą istniejącego okna lub okna, które zostanie

utworzone. W czasie pracy aplikacji, jeśli okno o podanej nazwie nie istnieje, instrukcja jest ignorowana. Jeśli nazwa okna zmieni się, musi ona zostać zmieniona również w skrypcie QuickScript.

Uwaga. Jeżeli jako parametr do wyświetlenia okna użyta zostanie zmienna lokalna typu Message, wyświetlony zostanie następujący komunikat o błędzie:"Spodziewana jest nazwa okna (wyrażenie tekstowe)"Aby tego uniknąć, zmienną typu Message należy poprzedzić znakiem plus (+). Przykładowo:

DIM Test AS message;

Test - "MyWindow1";

Show ""+Test;Przykład(y) Show "Alarm Summary Window";

Jeśli celem skryptu QuickScript jest tylko ukrywanie lub wyświetlanie okna, zaleca się wykorzystanie połączenia animacyjnego Show Window lub Hide Window. W przypadku używania tych połączeń, jeśli nazwa okna ulegnie zmianie, InTouch automatycznie dokona zmian.

Patrz również Hide, Hideself, ShowAt(), ShowHome, ShowTopLeftAt()

Opis funkcji, pól i zmiennych systemowych

246 Rozdział 3

ShowAt()

ShowHome

Określa w pikselach położenie okna w kierunku poziomym i pionowym w momencie jego wyświetlania.

Kategoria różneSkładnia ShowAt("Window",Horiz,Vert);

Parametr OpisWindow Nazwa okna. Łańcuch znaków lub zmienna tekstowa.Horiz Współrzędna pozioma Dowolna liczba lub zmienna

całkowita.Vert Współrzędna pionowa Dowolna liczba lub zmienna

całkowita.Uwagi Po otwarciu okna, jest ono ustawiane na środku względem współrzędnych

położenia poziomego i pionowego. Okno nie zostanie wycentrowane, jeśli jedna z jego krawędzi wykracza poza obszar ekranu. W takiej sytuacji zostanie ono wyrównane do krawędzi ekranu.

Przykład(y) W zamieszczonej poniżej instrukcji, 100 oznacza położenie piksela w kierunku poziomym, a 200 w kierunku pionowym:ShowAt("Window Name",100,200);

Aby móc zmieniać dynamicznie pozycję okna w trybie Runtime, ze zmiennymi pamięciowymi zastosowanymi jako parametry funkcji, np. TagHoriz i TagVert można powiązać obiekty służące do wprowadzania danych (połączenia animacyjne Touch Links, grupa User Inputs, Analog). W takim przypadku omawiana funkcja przyjmie postać:ShowAt("Boiler Room 7 Details",TagHoriz,TagVert);

Zamieszczona poniżej instrukcja umożliwia określenie położenia w pikselach, zmienne wewnętrzne $ObjHor i $ObjVer mogą zostać przypisane do analogowego połączenia wyświetlającego, dzięki czemu na ekranie wyświetlane będą współrzędne aktualnie zaznaczonego obiektu. Zastosowanie zmiennych $ObjHor i $ObjVer w skrypcie QuickScript lub przycisku pozwala na wyświetlenie okna w pozycji środkowej względem obiektu lub przycisku. ShowAt("Window Name",$ObjHor,$ObjVer);

Patrz również $ObjHor, $ObjVer, ShowTopLeftAt(), Show, ShowHome, Hide, Hideself

Funkcja ta umożliwia wyświetlenie okna (-okien) "startowych". Okna startowe to okna automatycznie otwierane po uruchomieniu programu WindowViewer. (Okna startowe ustawiane są za pomocą zakładki Właściwości WindowViewer - okna startowe.)

Kategoria różneSkładnia ShowHome;

Patrz również Show, ShowAt(), ShowTopLeftAt(), ShowHome, Hide, Hideself

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 247

ShowTopLeftAt()

Sin()

Określa w pikselach współrzędną poziomą i pionową lewego, górnego rogu okna, w momencie jego wyświetlania.

Kategoria różneSkładnia ShowTopLeftAt("Window",Horiz,Vert);

Parametr OpisWindow Nazwa okna. Łańcuch znaków lub zmienna

tekstowa.Horiz Współrzędna pozioma Dowolna liczba lub

zmienna całkowita.Vert Współrzędna pionowa Dowolna liczba lub

zmienna całkowita.Uwagi Po otwarciu okna, jego lewy, górny róg umieszczany jest w miejscu

wskazywanym przez współrzędną poziomą i pionową. (Współrzędne lewego, górnego narożnika ekranu wynoszą 0,0.) Działanie tej funkcji jest takie same jak funkcji ShowAt(), za wyjątkiem faktu, że steruje ona położeniem lewego, górnego okna.Uwaga. Funkcja ta ładuje okno w pamięci, a następnie umieszcza na nowej lokalizacji. Lokalizacja początkowa (ta, na której okno zostało zapisane w programie WindowMaker) pozostaje niezmieniona niezależnie od miejsca, w które okno zostało przeniesione.

Patrz również Show, ShowAt(), ShowHome(), Hide, Hideself

Zwraca sinus kąta podanego w stopniach.Kategoria funkcje matematyczneSkładnia Result=Sin(AngleNumber);

Parametr OpisAngleNumber Wartość kąta w stopniach. Dowolna liczba,

zmienna rzeczywista (Real) lub całkowita (Integer) programu InTouch.

Uwagi Obliczana jest wartość sinus z Number i zwracana do zmiennej Result.Przykład(y) Sin(90) daje w wyniku 1

Sin(0) daje w wyniku 0

wave = 100 * Sin (6 * $second);

Patrz również Cos(), Tan(), ArcCos(), ArcSin(), ArcTan()

Opis funkcji, pól i zmiennych systemowych

248 Rozdział 3

SPCConnect()

SPCDatasetDlg()

Funkcja ta jest używana w połączeniu z automatycznym zbieraniem zestawów danych. Przed rozpoczęciem automatycznego zbierania zestawów danych, należy wywołać tę funkcję w celu określenia, jaki użytkownik jest przy stanowisku.

Kategoria SPCSkładnia SPCConnect(“User”,”Password”);

Parametr OpisUser Nazwa użytkownika bazy danych użytkownika.

Łańcuch znaków lub zmienna tekstowa.Password Hasło użytkownika. Łańcuch znaków lub zmienna

tekstowa.Uwagi Wykonanie tej funkcji spowoduje połączenie użytkownika z baza danych,

oraz rozpoczęcie automatycznego odczytywania zestawów danych, w oparciu o wprowadzony przez użytkownika identyfikator. Jeżeli w bazie danych nie zostało zdefiniowane hasło, można wprowadzić następujący skrypt QuickScript:

Przykład(y) SPCConnect(“User1”, “”);

Patrz również SPCDisconnect()

Funkcja ta umożliwia wyświetlenie pola dialogowego Konfiguracja zestawu danych SPC w programie WindowViewer. Za jego pomocą można dodać lub usunąć zestaw danych. Nie są wymagane żadne parametry, nie są zwracane żadne wartości. W czasie pracy programu WindowViewer, aktualnie używany zestaw danych będzie wyświetlany w kolorze szarym, niektóre pola nie mogą być modyfikowane.

W czasie pracy programu WindowViewer można dodać nowe zestawy danych i produkty: jeżeli dodawane lub zapisywane są nowe zestawy danych i produkty, jeżeli praca odbywa się w trybie automatycznego zbierania danych (Autocollection), cykl automatycznego zbierania danych zostanie rozpoczęty ponownie, możliwa jest utrata danych w czasie fazy inicjowania zestawu danych.

Wskazane jest, aby dodawać nowe produkty poprzez element SPC DDE o nazwie NewProduct a nie poprzez funkcję SPCDatasetDlg() ponieważ to nie będzie wymagało włączenia trybu autozbierania danych.

Kategoria SPCSkładnia SPCDatasetDlg();

Uwagi Wykonanie tej funkcji spowoduje wyświetlenie okna dialogowego Konfiguracja zestawu danych SPC w programie WindowViewer.

Przykład(y) SPCDatasetDlg();

Patrz również SPCSelectDataset()

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 249

SPCDisconnect()

SPCDisplayData()

Funkcja ta służy do odłączania użytkownika od bazy danych SPC Pro. Wykonanie tej funkcji spowoduje przerwanie zbierania danych z wszystkich zestawów danych przypisanych do użytkownika.

Kategoria SPCSkładnia SPCDisconnect();

Uwagi Wykonanie tej funkcji spowoduje odłączenie użytkownika od bazy danych, oraz zatrzymanie automatycznego zbierania danych.

Przykład(y) SPCDisconnect();

Patrz również SPCConnect()

Funkcja ta zapewnia mechanizm wygodnego przewijania wykresu w celu wyświetlenia odpowiedniej daty lub godziny. Status przeszukiwania danych SPC można monitorować za pomocą zmiennej. Jeżeli SPC odszuka dane, zwracana jest wartość 0, jeżeli natomiast w ciągu określonego czasu dane nie zostaną znalezione, zwracana jest wartość 1.

Kategoria SPCSkładnia [Status=]SPCDisplayData("Dataset", "DateString",

"TimeString", RangeInHours );

Parametr OpisDataset Nazwa bieżącego zestawu danych. Łańcuch znaków

lub zmienna tekstowa.DateString Data w formacie mm/dd/rr. Łańcuch znaków lub

zmienna tekstowa.TimeString Godzina w formacie gg:mm:ss. Łańcuch znaków lub

zmienna tekstowa.RangeInHours Okres czasu, dla którego dane będą wyświetlane.

Dowolna liczba lub zmienna całkowita.Przykład(y) StatusTag = SPCDisplayData("Dataset", "DateString",

"TimeString" , RangeInHours);

Opis funkcji, pól i zmiennych systemowych

250 Rozdział 3

SPCLocateScooter()

SPCMoveScooter()

Funkcja ta zapewnia mechanizm wygodnego przewijania suwaka w celu wyświetlenia odpowiedniej próbki. Wartość zmiennej suwaka zostanie zaktualizowana, przypisana zostanie jej wartość próbki X-Bar. Przypisanie parametrowi SampleNumber wartości 0 powoduje ukrycie/ deaktywację suwaka.

Kategoria SPCSkładnia SPCLocateScooter( "Dataset", SampleNumber );

Parametr OpisDataset Nazwa bieżącego zestawu danych. Łańcuch znaków

lub zmienna tekstowa.SampleNumber Numer dowolnej, nie zawierającej błędów próbki.

Dowolna liczba lub zmienna całkowita.Patrz również SPCMoveScooter()

Funkcja ta zapewnia mechanizm wygodnego przewijania suwaka w celu wyświetlenia odpowiedniej próbki. Wartość zmiennej suwaka zostanie zaktualizowana, przypisana zostanie jej wartość próbki X-Bar.

Kategoria SPCSkładnia SPCMoveScooter( "Dataset", IncrementValue );

Parametr OpisDataset Nazwa bieżącego zestawu danych. Łańcuch znaków

lub zmienna tekstowa.IncrementValue Dowolny numer. W celu przewinięcia do przodu

należy wprowadzić wartość dodatnią, natomiast w celu przewinięcia do tyłu należ wyprowadzić wartość ujemną. Dowolna liczba lub zmienna całkowita.

Patrz również SPCLocateScooter()

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 251

SPCSaveSample()

SPCSelectDataset()

SPCSelectProduct()

Funkcja ta służy do ręcznego zapisu próbki wejściowej. Jest ona używana w połączeniu z funkcją SPCSetMeasurement().

Kategoria SPCSkładnia SPCSaveSample("Dataset");

Parametr OpisDataset Nazwa bieżącego zestawu danych. Łańcuch znaków

lub zmienna tekstowa.Uwagi Wykonanie instrukcji zawierającej tę funkcję spowoduje zapisanie próbki

jako zestawu danych (Dataset) o określonej nazwie. Funkcja ta korzysta z ręcznie wprowadzonych wartości pomiarów próbki. Wartości ustawiane są zarówno za pomocą zmiennych DDE MI_Mx (gdzie x numer pomiaru z przedziału od 1 do 25), jak i za pomocą funkcji SPCSetMeasurement() (pomiary 1 do 300). Koniecznym jest ponowne zainicjowanie konwersacji DDE aby uaktualnić wartości zmiennych MI_Mx.

Patrz również SPCSetMeasurement()

Funkcja ta wyświetla okno dialogowe pozwalające użytkownikowi na wybranie żądanego zestawu danych.

Kategoria SPCSkładnia DatasetName=SPCSelectDataset()

Uwagi Wykonanie tego skryptu QuickScript powoduje otwarcie okna dialogowego Wybierz zestaw.Po wybraniu nazwy zestawu danych, funkcja przypisuje go do zmiennej DatasetName. Funkcja ta może również służyć do zmiany nazwy zestawu danych opisanego zmienną pośrednią.

Patrz również SPCSelectProduct(), SPCDatasetDlg()

Funkcja ta wyświetla okno dialogowe pozwalające użytkownikowi na wybranie produktu w danym zestawie danych.

Kategoria SPCSkładnia ProductName=SPCSelectProduct(Dataset);

Uwagi Funkcja ta zastosowana w skrypcie QuickScript pozwala na otwarcie okna dialogowego Wybierz produkt.Po wybraniu nazwy wyrobu funkcja zapisuje ją pod zmienną ProductName. Funkcja ta może również służyć do zmiany nazwy produktu w zestawie danych Dataset.

Patrz również SPCSelectDataset(), SPCSetProductDisplayed(), SPCSetProductCollected()

Opis funkcji, pól i zmiennych systemowych

252 Rozdział 3

SPCSetControlLimits()

SPCSetMeasurement()

Funkcja ta umożliwia wygodne wprowadzenie (ręcznie lub w sposób automatyczny, w wyniku zaistnienia określonych zdarzeń) wartości granicznych dla wykresu kontrolnego (Control Chart).

Kategoria SPCSkładnia SPCSetControlLimits("Dataset",XUCL,XLCL);

Parametr OpisDataset Nazwa bieżącego zestawu danych. Łańcuch znaków

lub zmienna tekstowa.XUCL Wartość, która ma zostać wykorzystana jako górny

limit kontrolny (UCL) dla wykresu kontrolnego. Liczba lub zmienna typu rzeczywistego.

XLCL Wartość, która ma zostać wykorzystana jako dolny limit kontrolny (LCL) dla wykresu kontrolnego. Liczba lub zmienna typu rzeczywistego.

Uwagi Wyniki pomiarów są zapisywane w próbce za pomocą funkcji SPCSaveSample().

Patrz również SPCSaveSample(), SPCSetRangeLimits(), SPCSetSpecLimits(), SPCSetMeasurement()

Funkcja ta umożliwia wygodne wprowadzenie (ręcznie lub w sposób automatyczny, w wyniku zaistnienia określonych zdarzeń) analogowych wartości z pomiaru poprzez wykonanie skryptu.

Kategoria SPCSkładnia SPCSetMeasurement("Dataset",Measurement,Value);

Parametr OpisDataset Nazwa bieżącego zestawu danych. Łańcuch

znaków lub zmienna tekstowa.Measurement Numer pomiaru (od 1 do 300). Dowolna liczba

lub zmienna całkowita.Wartość Wartość która ma być zapisana do określonego

numeru pomiarów. Dowolna liczba lub zmienna rzeczywista (Real).

Uwagi Z funkcji SPCSaveSample() należy korzystać po uprzednim ustawieniu wszystkich pomiarów na zapisywanie danych w bazie danych. Koniecznym jest ponowne zainicjowanie konwersacji DDE aby uaktualnić wartości zmiennych MI_Mx.

Patrz również SPCSaveSample()

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 253

SPCSetProductCollected()

SPCSetProductDisplayed()

Funkcja ta umożliwia zmianę wyrobu (Product), dla którego zbierane są dane w obrębie danego zestawu danych (Dataset).

Kategoria SPCSkładnia SPCSetProductCollected("Dataset","Product");

Parametr OpisDataset Nazwa bieżącego zestawu danych. Łańcuch

znaków lub zmienna tekstowa.Product Nazwa Produktu, dla którego mają być zbierane

dane. Łańcuch znaków lub zmienna tekstowa.Uwagi Funkcja ta nie zmienia wyrobu, dla którego wyświetlane są dane. Możliwe

jest gromadzenie danych jednego produktu i wyświetlanie danych dla innego produktu, używając tej funkcji do gromadzenia a funkcji SPCSetProductDisplayed() do wyświetlania:

Przykład(y) SPCSetProductCollected("Data5838", "Widgets");

Patrz również SPCSelectProduct(), SPCSetProductDisplayed()

Funkcja ta umożliwia zmianę wyrobu (Product), dla którego wyświetlane są dane w obrębie danego zestawu zmiennych (Dataset).

Kategoria SPCSkładnia SPCSetProductDisplayed("Dataset","Product");

Parametr OpisDataset Nazwa bieżącego zestawu danych. Łańcuch

znaków lub zmienna tekstowa.Product Nazwa wyrobu, dla którego mają być

wyświetlane dane. Łańcuch znaków lub zmienna tekstowa.

Przykład(y) SPCSetProductDisplayed("ADataSetName", "AProductName");

Patrz również SPCSelectProductt(), SPCSetProductCollected()

Opis funkcji, pól i zmiennych systemowych

254 Rozdział 3

SPCSetRangeLimits()

SPCSetSpecLimits()

Funkcja ta umożliwia wygodne wprowadzenie (ręcznie lub w sposób automatyczny, w wyniku zaistnienia określonych zdarzeń) wartości granicznych dla wykresu rozpiętościowego (Range Chart).

Kategoria SPCSkładnia SPCSetRangeLimits("Dataset",RUCL,RLCL);

Parametr OpisDataset Nazwa bieżącego zestawu danych. Łańcuch znaków

lub zmienna tekstowa.RUCL Wartość, która ma zostać wykorzystana jako górny

limit kontrolny (UCL) dla wykresu rozpiętościowego. Liczba lub zmienna typu rzeczywistego.

RLCL Wartość, która ma zostać wykorzystana jako dolny limit kontrolny (LCL) dla wykresu rozpiętościowego. Liczba lub zmienna typu rzeczywistego.

Patrz również SPCSetControlLimits(), SPCSetSpecLimits()

Funkcja ta umożliwia wygodne wprowadzenie (ręcznie lub w sposób automatyczny, w wyniku zaistnienia określonych zdarzeń) wartości granicznych specyfikacyjnych (dla wykresu kontrolnego (Control Chart).

Kategoria SPCSkładnia SPCSetSpecLimits("Dataset",XUSL,XLSL);

Parametr OpisDataset Nazwa bieżącego zestawu danych. Łańcuch

znaków lub zmienna tekstowa.XUSL Wartość, która ma zostać wykorzystana jako

górny limit specyfikacyjny (USL) dla wykresu rozpiętościowego. Liczba lub zmienna typu rzeczywistego.

XLSL Wartość, która ma zostać wykorzystana jako dolny limit specyfikacyjny (LSL) dla wykresu rozpiętościowego. Liczba lub zmienna typu rzeczywistego.

Patrz również SPCSetControlLimits(), SPCSetRangeLimits()

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 255

SQLAppendStatement()

SQLClearParam()

SQLClearStatement()

Dalsza część instrukcji SQL zawarta w zmiennej tekstowej. Funkcja ta zwraca kody błędów.

Kategoria SQLSkładnia [ResultCode=] SQLAppendStatement ( ConnectionID,

" SQLStatement");

Parametr Opis

ConnectionID Zmienna typu Memory Integer, utworzona przez użytkownika do pamiętania numeru (ID) przypisywanego przez funkcję SQLConnect do każdego połączenia z bazą danych.

SQLStatement Łańcuch znaków, który ma zostać dołączony do instrukcji.

Przykład(y) ResultCode=SQLAppendStatement(ConnectionID,"where tablename.columnname=(dowolna warto ść lub ła ńcuch znaków)");

Patrz również SQLConnect(), SQLClearStatement()

Funkcja ta powoduje usunięcie wartości danego parametru. Przed wykonaniem funkcji SQLExecute() musi zostać wywołana ponownie funkcja SQLSetParam().

Kategoria SQLSkładnia [ResultCode=] SQLClearParam ( SQLHandle,ParameterNumber);

Parametr Opis

SQLHandle Wartość całkowita zwracana przez SQL po użyciu funkcji SQLPrepareStatement().

ParameterNumber Parametr do zmodyfikowania w instrukcji SQL.Patrz również SQLPrepareStatement(),SQLExecute()

Funkcja ta zwalnia zasoby związane z instrukcją określoną w SQLHandle.Kategoria SQLSkładnia [ResultCode=] SQLClearStatement (ConnectionID,SQLHandle);

Opis funkcji, pól i zmiennych systemowych

256 Rozdział 3

SQLClearTable()

Parametr Opis

ConnectionID Zmienna typu Memory Integer, utworzona przez użytkownika do pamiętania numeru (ID) przypisywanego przez funkcję SQLConnect do każdego połączenia z bazą danych.

SQLHandle Wartość całkowita zwracana przez SQL po użyciu funkcji SQLPrepareStatement().

Patrz również SQLConnect(),SQLPrepareStatement()

Funkcja ta usuwa wszystkie rekordy z tablicy w bazie danych, ale nie usuwa samej tablicy.

Kategoria SQLSkładnia [ResultCode=] SQLClearTable (ConnectionID,"TableName");

Parametr Opis

ConnectionID Zmienna typu Memory Integer, utworzona przez użytkownika do pamiętania numeru (ID) przypisywanego przez funkcję SQLConnect do każdego połączenia z bazą danych.

TableName Nazwa tablicy w bazie danych, której dotyczy operacja usuwania rekordów.

Przykład(y) Aby usunąć wszystkie rekordy z tablicy BATCH1, można użyć następującej instrukcji:

ResultCode=SQLClearTable(ConnectionID,"BATCH1");

Patrz również SQLConnect(), SQLClearStatement()

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 257

SQLCommit()Funkcja SQLCommit() definiuje koniec zestawu transakcji. Grupa poleceń zawierających się pomiędzy funkcjami SQLTransact() i SQLCommit() nosi nazwę zestawu transakcji. Zestaw transakcji jest traktowany jak pojedyncza transakcja. Po wykonaniu polecenia SQLTransact(), wszystkie kolejne operacje nie będą kierowane do bazy danych, aż do momentu kolejnego wywołania polecenia SQLCommit().

Kategoria SQLSkładnia [ResultCode=] SQLCommit(ConnectionID);

Parametr Opis

ConnectionID Zmienna typu Memory Integer, utworzona przez użytkownika do pamiętania numeru (ID) przypisywanego przez funkcję SQLConnect do każdego połączenia z bazą danych.

Uwaga: Przy tworzeniu skryptów QuickScript zawierających funkcję SQLCommit() należy zachować dużą ostrożność. Ponieważ czas wykonania skryptu jest mnożony przez liczbę transakcji w zestawie transakcji, włączanie wielu poleceń do zestawu transakcji istotnie zwalnia działanie aplikacji.

Przykład ResultCode =SQLTransact( ConnectionID);

ResultCode = SQLInsertPrepare( ConnectionID, TableName, BindList, SQLHandle );

ResultCode = SQLInsertExecute( ConnectionID, BindList, SQLHandle );

ResultCode = SQLInsertExecute( ConnectionID, BindList, SQLHandle );

ResultCode = SQLInsertExecute( ConnectionID, BindList, SQLHandle );

ResultCode = SQLInsertEnd( ConnectionID, SQLHandle );

ResultCode = SQLCommit( ConnectionID);

{Baza danych zapisze 3 komendy Insert }

Patrz również SQLRollback(), SQLTransact(), SQLCommit()

Opis funkcji, pól i zmiennych systemowych

258 Rozdział 3

SQLConnect()Funkcja ta nawiązuje połączenie programu InTouch z bazą danych określoną w ConnectString.

Kategoria SQLSkładnia [ResultCode=] SQLConnect (ConnectionID,"ConnectString");

Parametr Opis

ConnectionID Zmienna typu Memory Integer, utworzona przez użytkownika do pamiętania numeru (ID) przypisywanego przez funkcję SQLConnect do każdego połączenia z bazą danych.

ConnectString Nazwa bazy danych oraz dodatkowe informacje potrzebne do ustanowienia połączenia przy użyciu funkcji SQLConnect().

Przykład(y) Instrukcja zamieszczona poniżej łączy program InTouch z programem IBM OS/2 Database Manager, z bazą danych o nazwie SAMPLE:

[ResultCode=]SQLConnect(ConnectionID,"DSN=OS2DM;DB=SAMPLE");

Funkcja ta zwraca wartość zmiennej ConnectionID, wykorzystywanej jako parametr we wszystkich, następujących w dalszej kolejności, wywołaniach funkcji z grupy SQL.

Parametr ConnectString identyfikuje bazę danych i zawiera dodatkowe informacje potrzebne do ustanowienia połączenia z tą bazą. Posiada on następujący format:

"DSN=nazwa żródła danych[;atrybut=warto ść[;atrybut=warto ść]...]"

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 259

Każda z baz danych może wymagać podania innych atrybutów. QUELIB rozpoznaje następujące atrybuty:Atrybut Wartoœæ

DSN Nazwa źródła danych (Data Source Name) skonfigurowana w programie Microsoft ODBC Administrator.

DLG Jeżeli DLG=1, wyświetlane jest okno dialogowe pozwalające na wpisanie informacji potrzebnych do ustanowienia połączenia.

DRV W celu zachowania zgodności z SQL Access w programie InTouch v. 4.11, wartość ta jest wykorzystywana jeżeli nazwa źródła danych (DSN) nie została podana w łańcuchu znaków połączenia. QELIB zmienia ten atrybut na nazwę źródła danych.

UID Nazwa identyfikacyjna do logowania.PWD Hasło.MODIFYSQL Atrybut wykorzystywany przez QELIB w

celu zapewnienia kompatybilności języka SQL używanego w aplikacji i języka SQL używanego w bazie danych. Gdy wartość tego atrybutu jest ustawiona na 1 (wartość domyślna), sterownik bazy danych oczekuje składni instrukcji zgodnej z ODBC, którą zmodyfikuje w razie potrzeby w celu dostosowania jej do bazy danych. Gdy wartość tego atrybutu jest ustawiona na 0, sterownik bazy danych oczekuje składni instrukcji zgodnej ze składnią bazy danych. Mechanizm ten pozwala na używanie aplikacji opracowanych z zastosowaniem SQL opartego na sterownikach QELIB 1.0.

REREADAFTERUPDATE Jeżeli wartość tego atrybutu jest ustawiona na 1, QELIB ponownie odczytuje rekord z bazy danych po jego aktualizacji. Mechanizm ten jest użyteczny w przypadku pobierania właściwej wartości z aktualizowanych kolumn, zawierających np. czas.

REREADAFTERINSERT Jeżeli wartość tego atrybutu jest ustawiona na 1, QELIB ponownie odczytuje rekord z bazy danych po jego wstawieniu. Mechanizm ten jest użyteczny w przypadku pobierania właściwej wartości z aktualizowanych kolumn, zawierających np. czas.

Więcej informacji na temat atrybutów obsługiwanych przez określone bazy danych podano w elektronicznej wersji podręcznika SQL Access Manager User's Guide.

Patrz również SQLDisconnect()

Opis funkcji, pól i zmiennych systemowych

260 Rozdział 3

SQLCreateTable()Funkcja ta tworzy tablicę w bazie danych przy wykorzystaniu parametrów z szablonu tabeli (Table Template) o określonej nazwie. Wzorce tablic, zdefiniowane w pliku SQL.DEF, określają strukturę tablic.

Kategoria SQLSkładnia [ResultCode=] SQLCreateTable ( ConnectionID,TableName,

TemplateName);

Parametr Opis

ConnectionID Zmienna typu Memory Integer, utworzona przez użytkownika do pamiętania numeru (ID) przypisywanego przez funkcję SQLConnect do każdego połączenia z bazą danych.

TableName Nazwa tablicy w bazie danych, której dotyczy operacja.

TemplateName Nazwa zdefiniowanego wzorca tablicy, który ma zostać użyty przez funkcję.

Przykład(y) Instrukcja zamieszczona poniżej powoduje utworzenie tablicy o nazwie BATCH1, dla której nazwy i typy kolumn zdefiniowane są we wzorcu o nazwie TEMPLATE.

ResultCode=SQLCreateTable(ConnectionID,"BATCH1","TEMPLATE");

Jeżeli parametr wprowadzony w skrypcie QuickScript ujęty jest w cudzysłów, np. "Parametr1", jako parametr użyty zostanie wprowadzony łańcuch znaków. Jeżeli znaki cudzysłowów nie są używane, system przyjmuje, ze Parameter1 jest zmienną, po czym przeszukuje bazę danych programu InTouch w celu znalezienia wartości zmiennej Parameter1. Przykładowo:

"c:\main\file" vs. location

Gdzie location jest zmienną tekstowa programu InTouch.

"c:\main\file" jest ła ńcuchem znaków

Patrz również SQLConnect()

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 261

SQLDelete()Funkcja ta usuwa rekord lub kilka rekordów.

Kategoria SQLSkładnia [ResultCode=] SQLDelete (ConnectionID,TableName,

WhereExpr);

Uwaga: Funkcja SQLDelete() nie może zawierać pustego argumentu WhereExpression.Parametr Opis

ConnectionID Zmienna typu Memory Integer, utworzona przez użytkownika do pamiętania numeru (ID) przypisywanego przez funkcję SQLConnect do każdego połączenia z bazą danych.

TableName Nazwa tablicy w bazie danych, której dotyczy operacja.

WhereExpression Warunek, który może być spełniony lub niespełniony dla każdego wiersza tablicy. Funkcja aktualizuje tylko te wiersze w tablicy, dla których warunek jest spełniony. Warunek musi mieć następujący format:

Nazwa_kolumny operator_porównania wyrażenie. Uwaga Jeśli w kolumnie znajdują się dane typu tekstowego, wyrażenie musi zostać wpisane w apostrofach.

Przykład(y) Poniższy przykład służy do wybrania wszystkich wierszy, w których w kolumnie name występuje ciąg znaków EmployeeID:

name='EmployeeID'

Kolejny przykład służy do wybrania wszystkich wierszy, w których w kolumnie partno występuje liczba od 100 do 199:

partno>=100 and partno<200

Następny przykład służy do wybrania wszystkich wierszy, w których w kolumnie temperature występuje liczba większa od 350:

temperature>350

Instrukcja zamieszczona poniżej powoduje usunięcie z tablicy o nazwie BATCH1 wszystkich rekordów, w których w kolumnie lotno występuje liczba równa 65:

ResultCode=SQLDelete(ConnectionID,"BATCH1","lotno=65");

Patrz również SQLConnect()

Opis funkcji, pól i zmiennych systemowych

262 Rozdział 3

SQLDisconnect()

SQLDropTable()

SQLEnd()

Funkcja ta służy do odłączenia użytkownika od bazy danych. Kategoria SQLSkładnia [ResultCode=] SQLDisconnect (ConnectionID);

Parametr Opis

ConnectionID Zmienna typu Memory Integer, utworzona przez użytkownika do pamiętania numeru (ID) przypisywanego przez funkcję SQLConnect do każdego połączenia z bazą danych.

Patrz również SQLConnect()

Funkcja ta usuwa tablicę z bazy danych.Kategoria SQLSkładnia [ResultCode=] SQLDropTable (ConnectionID,TableName);

Parametr Opis

ConnectionID Zmienna typu Memory Integer, utworzona przez użytkownika do pamiętania numeru (ID) przypisywanego przez funkcję SQLConnect do każdego połączenia z bazą danych.

TableName Nazwa tablicy w bazie danych, której dotyczy operacja.

Przykład(y) Zamieszczona poniżej instrukcja usuwa tablicę BATCH1, po wykonaniu jej tablica ta nie będzie dostępna i nie będzie reagować na żadne polecenia.

ResultCode=SQLDropTable(ConnectionID,"BATCH1");

Patrz również SQLConnect()

Funkcja ta jest wykorzystywana po funkcji SQLSelect() w celu zwolnienia zasobów, które były użyte do zapamiętania tablicy wynikowej.

Kategoria SQLSkładnia [ResultCode=] SQLEnd(ConnectionID);

Parametr Opis

ConnectionID Zmienna typu Memory Integer, utworzona przez użytkownika do pamiętania numeru (ID) przypisywanego przez funkcję SQLConnect do każdego połączenia z bazą danych.

Patrz również SQLConnect(), SQLSelect()

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 263

SQLErrorMsg()

SQLExecute()

Funkcja ta odczytuje tekst komunikatu o błędzie związanym z zadanym kodem błędu ResultCode. ErrorMsg jest zmienną typu Memory Message (maksymalnie 131 znaków), powiązaną z parametrem ResultCode.

Kategoria SQLSkładnia SQLErrorMsg (ResultCode);

Parametr Opis

ResultCode Zmienna całkowita zwracana przez większość funkcji SQL. Jej wartość wynosi 0, jeśli funkcja została wykonana pomyślnie oraz jest liczbą ujemną, jeśli funkcja nie została wykonana.

Aby dowiedzieć się więcej na temat tych kodów, zobacz Załącznik A,"Usuwanie problemów przy korzystaniu z funkcji skryptowych."

Przykład(y) ErrorMsg=SQLErrorMsg(ResultCode);

Patrz również SQLConnect()

Funkcja ta wykonuje instrukcję SQL. Jeśli instrukcja służy do wyboru danych z bazy, parametr BindList określa nazwę listy powiązań między kolumnami bazy danych, a zmiennymi programu InTouch. Jeśli lista powiązań jest pusta, żadne zmienne nie zostaną powiązane z kolumnami w bazie danych. Na przykład: instrukcja SQL mogłaby być Utworzona, Wyświetlona, Wklejona, itd.. Błędy są zwracane w wartości funkcji. Jeśli instrukcja została przygotowana za funkcją SQLPepareStatement(), jako parametru SQLHandle należy użyć wartości zwróconej przez tę funkcję. Jeśli instrukcja nie została "przygotowana", wartość parametru SQLHandle powinna wynosić zero.

Kategoria SQLSkładnia [ResultCode=] SQLExecute (ConnectionID,BindList,

SQLHandle);

Parametr Opis

ConnectionID Zmienna typu Memory Integer, utworzona przez użytkownika do pamiętania numeru (ID) przypisywanego przez funkcję SQLConnect do każdego połączenia z bazą danych.

BindList Lista powiązań między kolumnami bazy danych i zmiennymi programu InTouch

SQLHandle Wartość całkowita zwracana przez SQL po użyciu funkcji SQLPrepareStatement().

Patrz również SQLConnect(),SQLPrepareStatement()

Uwaga Funkcja SQLExecute() może być wywołana jeden raz dla instrukcji, która nie została przygotowana. Jeśli instrukcja została przygotowana, może być wywoływana wiele razy.

Opis funkcji, pól i zmiennych systemowych

264 Rozdział 3

SQLFirst()

SQLGetRecord()

Funkcja ta wybiera pierwszy rekord z tablicy wynikowej utworzonej poprzez wykonanie ostatniej funkcji SQLSelect(). Przed wykonaniem tego polecenia musi być wywołana funkcja SQLSelect().

Kategoria SQLSkładnia [ResultCode=] SQLFirst (ConnectionID);

Parametr Opis

ConnectionID Zmienna typu Memory Integer, utworzona przez użytkownika do pamiętania numeru (ID) przypisywanego przez funkcję SQLConnect do każdego połączenia z bazą danych.

Patrz również SQLConnect(), SQLSelect()

Funkcja ta odczytuje z bufora rekord określony przez parametr RecordNumber.

Kategoria SQLSkładnia [ResultCode=] SQLGetRecord (ConnectionID,Record Number);

Parametr Opis

ConnectionID Zmienna typu Memory Integer, utworzona przez użytkownika do pamiętania numeru (ID) przypisywanego przez funkcję SQLConnect do każdego połączenia z bazą danych.

RecordNumber Numer rekordu, który ma zostać odczytany.Przykład(y) ResultCode=SQLGetRecord(ConnectionID,3);

Patrz również SQLConnect()

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 265

SQLInsert()

SQLInsertEnd()

Funkcja ta wstawia nowy rekord do tablicy o podanej nazwie, wykorzystując wartości zmiennych z podanej listy powiązań. Parametr BindList definiuje wykorzystywane zmienne programu InTouch, oraz powiązania pomiędzy nimi, a kolumnami bazy danych.

Kategoria SQLSkładnia [ResultCode=] SQLInsert (ConnectionID,TableName,

BindList);

Parametr Opis

ConnectionID Zmienna typu Memory Integer, utworzona przez użytkownika do pamiętania numeru (ID) przypisywanego przez funkcję SQLConnect do każdego połączenia z bazą danych.

TableName Nazwa tablicy w bazie danych, której dotyczy operacja.

BindList Lista powiązań między kolumnami bazy danych i zmiennymi programu InTouch

Przykład(y) Instrukcja zamieszczona poniżej powoduje wstawienie nowego rekordu do tablicy o nazwie ORG przy wykorzystaniu wartości zmiennych z listy o nazwie List1.

ResultCode=SQLInsert(ConnectionID,"ORG","List1");

Uwaga Do szybkiego wstawiania rekordów do tablicy zamiast funkcji SQLInsert() można użyć trzech innych funkcji. Funkcja SQLInsert() w jednej operacji przygotowuje instrukcję wstawienia, wykonuje ją i zwalnia wykorzystywane zasoby. Przy ponownym wywołaniu funkcji SQLInsert() wszystkie te operacje są wykonywane ponownie. Zabiera to znacznie więcej czasu, niż wykorzystanie trzech funkcji wymienionych poniżej, które realizują poszczególne etapy omawianego zadania. Po wykonaniu funkcji SQLInsertPrepare() (przygotowanie) można wykonać dowolną liczbę razy funkcję SQLInsertExecute() (wstawienie rekordu), a następnie zakończyć wstawianie wywołując SQLInsertEnd().

Zakończenie tworzenia wyrażeniaKategoria SQLSkładnia [ResultCode=] SQLInsertEnd (ConnectionID,SQLHandle);

Parametr Opis

ConnectionID Zmienna typu Memory Integer, utworzona przez użytkownika do pamiętania numeru (ID) przypisywanego przez funkcję SQLConnect do każdego połączenia z bazą danych.

SQLHandle Wartość całkowita zwracana przez SQL po użyciu funkcji SQLPrepareStatement().

Patrz również SQLConnect(),SQLPrepareStatement()

Opis funkcji, pól i zmiennych systemowych

266 Rozdział 3

SQLInsertExecute()

SQLInsertPrepare()

Funkcja ta wykonuje przygotowaną instrukcję wstawiania rekordów do tablicy.

Kategoria SQLSkładnia [ResultCode=] SQLInsertExecute (ConnectionID,BindList,

SQLHandle);

Parametr Opis

ConnectionID Zmienna typu Memory Integer, utworzona przez użytkownika do pamiętania numeru (ID) przypisywanego przez funkcję SQLConnect do każdego połączenia z bazą danych.

BindList Lista powiązań między kolumnami bazy danych i zmiennymi programu InTouch

SQLHandle Wartość całkowita zwracana przez SQL po użyciu funkcji SQLPrepareStatement().

Patrz również SQLConnect(),SQLPrepareStatement()

Funkcja ta tworzy i przygotowuje instrukcję wstawiania rekordów do tablicy. Instrukcja wstawiania nie jest wykonywana. Parametr SQLHandle jest zmienną całkowitą, której wartość jest ustalana po wykonaniu instrukcji.

Kategoria SQLSkładnia [ResultCode=] SQLInsertPrepare

(ConnectionID,TableName,BindList,SQLHandle);

Parametr Opis

ConnectionID Zmienna typu Memory Integer, utworzona przez użytkownika do pamiętania numeru (ID) przypisywanego przez funkcję SQLConnect do każdego połączenia z bazą danych.

TableName Nazwa tablicy w bazie danych, której dotyczy operacja.

BindList Lista powiązań między kolumnami bazy danych i zmiennymi programu InTouch

SQLHandle Wartość całkowita zwracana przez SQL po użyciu funkcji SQLPrepareStatement().

Patrz również SQLConnect(),SQLPrepareStatement()

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 267

SQLLast()

SQLLoadStatement()

Funkcja ta wybiera ostatni rekord z tablicy wynikowej utworzonej poprzez wykonanie ostatniej funkcji SQLSelect(). Przed wykonaniem tego polecenia musi być wywołana funkcja SQLSelect().

Kategoria SQLSkładnia [ResultCode=] SQLLast (ConnectionID);

Parametr Opis

ConnectionID Zmienna typu Memory Integer, utworzona przez użytkownika do pamiętania numeru (ID) przypisywanego przez funkcję SQLConnect do każdego połączenia z bazą danych.

Przykład(y) ResultCode=SQLLast(ConnectionID);

Patrz również SQLConnect(), SQLSelect()

Funkcja ta odczytuje instrukcję zapisaną w pliku FileName. W tym momencie funkcja ta wykazuje podobieństwo do instrukcji utworzonej za pomocą funkcji SQLSetStatement(), oraz może być dołączana za pomocą funkcji SQLAppendStatement(), lub wykonywana za pomocą funkcji SQLExecute(). W jednym pliku może znajdować się wyłącznie jedna instrukcja. funkcja SQLAppendStatement() może być jednak wykorzystana do dołączania do instrukcji, jeżeli nie były wywoływane funkcje SQLPrepareStatement() lub SQLExecute().

Kategoria SQLSkładnia [ResultCode=] SQLLoadStatement (ConnectionID,FileName);

Parametr Opis

ConnectionID Zmienna typu Memory Integer, utworzona przez użytkownika do pamiętania numeru (ID) przypisywanego przez funkcję SQLConnect do każdego połączenia z bazą danych.

FileName Nazwa pliku zawierającego odczytywaną instrukcję.

Uwagi Przygotowuje instrukcję SQL utworzoną za pomocą funkcji: SQLSetStatement lub SQLLoadStatement. Funkcja zwraca parametr SQLHandle.

Przykład(y) ResultCode=SQLLoadStatement(ConnectionID,”C:\InTouchAppname\SQL.txt”)

SQL.txt = Select ColumnName from TableName where ColumnName>100;

Patrz również SQLConnect(), SQLAppendStatement(), SQLExecute(), SQLPrepareStatement

Opis funkcji, pól i zmiennych systemowych

268 Rozdział 3

SQLManageDSN()

SQLNext()

SQLNumRows()

Funkcja ta uruchamia program Microsoft ODBC Manager. Można go wykorzystać do dodawania, usuwania i modyfikacji nazw źródeł danych.

Kategoria SQLSkładnia SQLManageDSN(ConnectionID);

Parametr Opis

ConnectionID Zmienna typu Memory Integer, utworzona przez użytkownika do pamiętania numeru (ID) przypisywanego przez funkcję SQLConnect do każdego połączenia z bazą danych.

Funkcja ta wybiera następny rekord z tablicy wynikowej utworzonej poprzez wykonanie ostatniej funkcji SQLSelect() Przed wykonaniem tego polecenia musi być wywołana funkcja SQLSelect().

Kategoria SQLSkładnia [ResultCode=] SQLNext(ConnectionID);

Parametr Opis

ConnectionID Zmienna typu Memory Integer, utworzona przez użytkownika do pamiętania numeru (ID) przypisywanego przez funkcję SQLConnect do każdego połączenia z bazą danych.

Przykład(y) ResultCode=SQLNext(ConnectionID);

Patrz również SQLConnect(), SQLSelect()

Funkcja ta oblicza, ile wierszy spełnia kryteria podane w ostatnio użytej funkcji SQLSelect(). Przykładowo, warunek WhereExpression może zostać wykorzystany do zaznaczenia wszystkich wierszy z kolumnami o nazwie AGE, gdzie AGE jest równe 45, ilość zwróconych rekordów może wynosić 40 lub 4000. Może to być wykorzystane do określenia, która funkcja będzie wykonywana jako następna.

Kategoria SQLSkładnia SQLNumRows(ConnectionID);

Parametr Opis

ConnectionID Zmienna typu Memory Integer, utworzona przez użytkownika do pamiętania numeru (ID) przypisywanego przez funkcję SQLConnect do każdego połączenia z bazą danych.

Przykład(y) Instrukcja zamieszczona poniżej powoduje przypisanie liczby wybranych wierszy do zmiennej całkowitej NumRows:

NumRows=SQLNumRows(ConnectionID);

Patrz również SQLConnect()

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 269

SQLPrepareStatement()

SQLPrev()

Funkcja SQLPrepareStatement() przygotowuje istniejącą instrukcję SQL do wykorzystania jej przez funkcję SQLSetParam(). Instrukcja może zostać utworzona zarówno za pomocą SQLSetStatement(), jak i SQLLoadStatement(). Funkcja zwraca parametr SQLHandle.

Kategoria SQLSkładnia [ResultCode=] SQLPrepareStatement (ConnectionID,

SQLHandle);

Parametr Opis

ConnectionID Zmienna typu Memory Integer, utworzona przez użytkownika do pamiętania numeru (ID) przypisywanego przez funkcję SQLConnect do każdego połączenia z bazą danych.

SQLHandle Wartość całkowita zwracana przez SQL po użyciu funkcji SQLPrepareStatement().

Uwagi Aby zwolnić zasoby systemowe należy użyć odpowiedniej funkcji SQLClearStatement().

Aby prawidłowo wywołać procedurę zachowaną należy użyć następującego przypisania:

ResultCode = SQLSetStatement(ConnectionID, "exec sp_MyStoredProc");

Przykład(y) ResultCode=SQLPrepareStatement(ConnectionID,SQLHandle);

Patrz również SQLConnect(), SQLSelect(), SQLSetStatement(), SQLLoadStatement()

Funkcja ta wybiera poprzedni rekord z tablicy wynikowej utworzonej poprzez wykonanie ostatniej funkcji SQLSelect().

Kategoria SQLSkładnia [ResultCode=] SQLPrev(ConnectionID);

Parametr Opis

ConnectionID Zmienna typu Memory Integer, utworzona przez użytkownika do pamiętania numeru (ID) przypisywanego przez funkcję SQLConnect do każdego połączenia z bazą danych.

Uwagi Przed wykonaniem tego polecenia musi być wywołana funkcja SQLSelect()

Przykład(y) ResultCode=SQLPrev(ConnectionID);

Patrz również SQLConnect(), SQLSelect()

Opis funkcji, pól i zmiennych systemowych

270 Rozdział 3

SQLRollback()Funkcja SQLRollback() cofa ostatnio wykonany zestaw transakcji. Grupa poleceń zawartych pomiędzy funkcjami SQLTransact() i SQLCommit() lub SQLRollback() nosi nazwę zestawu transakcji. Zestaw transakcji jest traktowany jak pojedyncza transakcja. Po wykonaniu polecenia SQLTransact(), wszystkie kolejne operacje nie będą kierowane do bazy danych, aż do momentu kolejnego wywołania polecenia SQLCommit().

Kategoria SQLSkładnia [ResultCode=] SQLRollback (ConnectionID,);

Parametr Opis

ConnectionID Zmienna typu Memory Integer, utworzona przez użytkownika do pamiętania numeru (ID) przypisywanego przez funkcję SQLConnect do każdego połączenia z bazą danych.

Przykład(y) ResultCode =SQLTransact( ConnectionID);

ResultCode = SQLInsertPrepare( ConnectionID, TableName, BindList, SQLHandle );

ResultCode = SQLInsertExecute( ConnectionID, BindList, SQLHandle );

ResultCode = SQLInsertEnd( ConnectionID, SQLHandle );

ResultCode =SQLRollback( ConnectionID);

{Ignoruje wszystkie polecenia po funkcji Transact() Baza danych pozostaje nie zmieniona}

Patrz również SQLCommit(), SQLTransact()

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 271

SQLSelect()Funkcja ta wybiera informacje z wyszczególnionej tablicy w bazie danych. Podczas wykonywania funkcji SQLSelect() w pamięci tworzona jest tymczasowa tablica wynikowa, zawierająca rekordy, które można przeszukiwać używając funkcji SQLFirst(), SQLLast(), SQLNext() i SQLPrev().

Uwaga Po wykonaniu funkcji SQLSelect() zawsze należy użyć funkcji SQLEnd() w celu zwolnienia zasobów, które były użyte do zapamiętania tablicy wynikowej.

Kategoria SQLSkładnia [ResultCode=] SQLSelect (ConnectionID,TableName,BindList,

WhereExpr,OrderByExpr);

Parametr Opis

ConnectionID Zmienna typu Memory Integer, utworzona przez użytkownika do pamiętania numeru (ID) przypisywanego przez funkcję SQLConnect do każdego połączenia z bazą danych.

TableName Nazwa tablicy w bazie danych, której dotyczy operacja.

BindList Lista powiązań między kolumnami bazy danych i zmiennymi programu InTouch

WhereExpression Warunek, który może być spełniony lub niespełniony dla każdego wiersza tablicy. Funkcja wybiera z tablicy tylko te wiersze, dla których warunek jest spełniony. Warunek musi mieć następujący format:

Nazwa_kolumny operator_porównania wyrażenie.Uwaga Jeśli w kolumnie znajdują się dane typu tekstowego, wyrażenie musi zostać wpisane w apostrofach.Poniższy przykład służy do wybrania wszystkich wierszy, w których w kolumnie name występuje ciąg znaków EmployeeID:

name='EmployeeID'

Kolejny przykład służy do wybrania wszystkich wierszy, w których w kolumnie partno występuje liczba od 100 do 199:

partno>=100 and partno<200

Następny przykład służy do wybrania wszystkich wierszy, w których w kolumnie temperature występuje liczba większa od 350:

temperature>350

Opis funkcji, pól i zmiennych systemowych

272 Rozdział 3

Przyklady warunku WhereExpression

WhereExpr - zmienna typu Memory Message.OrderByExpr - zmienna typu Memory Message.Speed_Input - Memory Real - liczba wprowadzana przez użytkownikaSerial_Input - Memory Message - Tekst wprowadzony przez użytkownika

Przykład dla danych typu analogowego

WhereExpr = "Speed = " + text(Speed_Input,"#.##");

Porada Ponieważ Speed_Input jest liczbą, musi ona zostać przekonwertowana na tekst, co pozwoli na dołączenie jej do wyrażenia tekstowego.

Przykład dla danych typu tekstowego

WhereExpr = "Ser_No = ‘" +Serial_input + "’";

Porada Ponieważ Serial_Input jest łańcuchem znaków, wartość ujęta musi być w apostrofy, np:WhereExpr = “Ser_No=’125gh’”;

Przykłady dla danych typu tekstowego z wykorzystaniem instrukcji like

WhereExpr = "Ser_No like ‘" + "125%’"

Porada W przypadku korzystania z słowa Like można stosować znak % jako filtr.

Przykłady dla danych typu tekstowego i analogowego, stosowanych z operatorem And:

WhereExpr = "Ser_No = ‘" + Serial_input + "’" + " and " + "Speed = " + text(Speed_Input,"#.##");OrderByExpr = "";

Porada Jeżeli kolejność nie odgrywa żadnej roli, wpisać pusty łańcuch znaków, tak jak w przykładzie powyżej.

SQLSelect z zastosowaniem zmiennej WhereExpr

ResultCode = SQLSelect(Connect_Id,TableName,BindList,

WhereExpr,OrderByExpr);

Error_msg = SQLErrorMsg( ResultCode );

SQLSelect, WhereExpr wbudowane w funkcję

ResultCode = SQLSelect(Connect_Id,TableName,BindList,

“Ser_No = ‘" + Serial_input + "’", OrderByExpr);

Error_msg = SQLErrorMsg( ResultCode );

Po zakończeniu SQLSelect() należy zawsze wywoływać funkcję SQLEnd(Connect_Id). Jeżeli funkcja SQLEnd() nie zostanie wywołana, zasoby nie zostaną zwolnione, co może spowodować brak wolnej pamięci w czasie wykonywania aplikacji.

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 273

OrderByExpression Definiuje kolumnę i kierunek sortowania. Do sortowania można korzystać wyłącznie z nazw kolumn, a wyrażenie musi mieć postać:

Nazwa_kolumny [ASC|DESC]

Poniższe wyrażenie spowoduje uporządkowanie wybranej tablicy względem kolumny manager, w porządku rosnącym:

"manager ASC"

W celu posortowania kilku kolumn, wyrażenie musi mieć postać:

Nazwa_kolumny [ASC|DESC],Nazwa_kolumny [ASC|DESC]

Kolejne wyrażenie spowoduje uporządkowanie wybranej tablicy względem kolumny temperature w porządku rosnącym i względem kolumny time w porządku malejącym:

" temperature ASC, time DESC"Przykład(y) Instrukcja zamieszczona poniżej powoduje wybranie z tablicy o nazwie

BATCH (przy wykorzystaniu listy powiązań o nazwie List1) wszystkich rekordów, w których w kolumnie type znajduje się słowo cookie. Odczytana tablica zostanie uporządkowana rosnąco względem kolumny amount i malejąco względem kolumny sugar:

ResultCode=SQLSelect(ConnectionID,"BATCH","List1","type='cookie'","amount ASC, sugar DESC");

Kolejna przykładowa instrukcja powoduje wybranie wszystkich danych z bazy danych, bez określania warunków WhereExpression i OrderByExpression:

ResultCode=SQLSelect(ConnectionID,"BATCH","List1", "","");

Patrz również SQLFirst(), SQLConnect(), SQLLast(), SQLNext(), SQLPrev(), SQLEnd(), SQLSelect()

Opis funkcji, pól i zmiennych systemowych

274 Rozdział 3

SQLSetParamChar()

SQLSetParamDate()

Funkcja ta powoduje przypisanie łańcucha znaków określonemu parametrowi tekstowemu. Funkcja SQLSetParamChar() może być wywoływana wiele razy przed wykonaniem instrukcji SQL, w wyniku czego parametr może być złożeniem kolejno przypisywanych łańcuchów znaków. Puste łańcuchy znaków są ignorowane.

Kategoria SQLSkładnia [ResultCode=] SQLSetParamChar (SQLHandle,ParameterNumber,

ParameterValue,MaxLen);

Parametr Opis

SQLHandle Wartość całkowita zwracana przez SQL po użyciu funkcji SQLPrepareStatement().

ParameterNumber Numer parametru w instrukcji SQL.ParameterValue Wartość parametru.MaxLen Maksymalny rozmiar kolumny, z którą związany

jest parametr. Opcja ta wyznacza czy parametr jest typu o różnej liczbie znaków, czy też typu o znacznie różnej liczbie znaków. Jeżeli parametr MaxLen ma długość równą lub większą od maksymalnej wartości dopuszczalnej w bazie danych, to parametr jest typu VARYINGPAGEvarying character, long varying character.PAGEvarying character, long varying character Jeżeli jest dłuższy, jest typu LONG VARYING .

Przykład(y) ResultCode=SQLSetParamChar(SQLHandle,ParameterNumber, ParameterValue,MaxLen);

Patrz również SQLPrepareStatement()

Funkcja ta powoduje przypisanie łańcucha znaków określonemu parametrowi reprezentującemu datę.

Kategoria SQLSkładnia [ResultCode=] SQLSetParamDate (SQLHandle,ParameterNumber,

ParameterValue);

Parametr Opis

SQLHandle Wartość całkowita zwracana przez SQL po użyciu funkcji SQLPrepareStatement().

ParameterNumber Numer parametru w instrukcji SQL.ParameterValue Wartość parametru.

Przykład(y) ResultCode=SQLSetParamDate(SQLHandle,ParameterNumber,ParameterValue);

Patrz również SQLPrepareStatement()

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 275

SQLSetParamDateTime()

SQLSetParamDecimal()

Funkcja ta powoduje przypisanie łańcucha znaków określonemu parametrowi zawierającemu datę i czas.

Kategoria SQLSkładnia [ResultCode=] SQLSetParamDateTime (SQLHandle,

ParameterNumber,ParameterValue,Precision);

Parametr Opis

SQLHandle Wartość całkowita zwracana przez SQL po użyciu funkcji SQLPrepareStatement().

ParameterNumber Numer parametru w instrukcji SQL.ParameterValue Wartość parametru.Precision Długość wartości daty-czasu do przypisania. Jest

to liczba znaków, wykorzystywanych w ParameterValue.

Przykład(y) ResultCode=SQLSetParamDateTime(SQLHandle,ParameterNumber,ParameterValue,Precision);

Patrz również SQLPrepareStatement()

Funkcja ta powoduje przypisanie łańcucha znaków (cyfr) określonemu parametrowi dziesiętnemu. Precision jest liczbą cyfr, a Scale jest liczbą cyfr po kropce dziesiętnej.

Kategoria SQLSkładnia [ResultCode=] SQLSetParamDecimal ( SQLHandle,

ParameterNumber,ParameterValue,Precision,Scale);

Parametr Opis

SQLHandle Wartość całkowita zwracana przez SQL po użyciu funkcji SQLPrepareStatement().

ParameterNumber Numer parametru w instrukcji SQL.ParameterValue Wartość parametru.Precision Długość wartości daty-czasu do przypisania. Jest

to liczba znaków, wykorzystywanych w ParameterValue.

Scale Liczba cyfr po kropce dziesiętnej.Przykład(y) ResultCode=SQLSetParamDecimal(SQLHandle,

ParameterNumber,ParameterValue,Precision, Scale);

Patrz również SQLPrepareStatement()

Opis funkcji, pól i zmiennych systemowych

276 Rozdział 3

SQLSetParamFloat()

SQLSetParamInt()

SQLSetParamLong()

Funkcja ta powoduje przypisanie parametrowi wartości ParameterValue .Kategoria SQLSkładnia [ResultCode=] SQLSetParamFloat ( SQLHandle,

ParameterNumber,ParameterValue);

Parametr Opis

SQLHandle Wartość całkowita zwracana przez SQL po użyciu funkcji SQLPrepareStatement().

ParameterNumber Numer parametru w instrukcji SQL.ParameterValue Wartość parametru.

Przykład(y) ResultCode=SQLSetParamFloat(SQLHandle,ParameterNumber,ParameterValue);

Patrz również SQLPrepareStatement()

Funkcja ta powoduje przypisanie parametrowi wartości ParameterValue.Kategoria SQLSkładnia [ResultCode=] SQLSetParamInt (SQLHandle,ParameterNumber,

ParameterValue);

Parametr OpisSQLHandle Wartość całkowita zwracana przez SQL po użyciu

funkcji SQLPrepareStatement().ParameterNumber Numer parametru w instrukcji SQL.ParameterValue Wartość parametru.

Przykład(y) ResultCode=SQLSetParamInt(SQLHandle,ParameterNumber,ParameterValue);

Patrz również SQLPrepareStatement()

Funkcja ta powoduje przypisanie parametrowi wartości ParameterValue.Kategoria SQLSkładnia [ResultCode=] SQLSetParamLong (SQLHandle,ParameterNumber,

ParameterValue);

Parametr Opis

SQLHandle Wartość całkowita zwracana przez SQL po użyciu funkcji SQLPrepareStatement().

ParameterNumber Numer parametru w instrukcji SQL.ParameterValue Wartość parametru.

Przykład(y) ResultCode=SQLSetParamLong(SQLHandle,ParameterNumber,ParameterValue);

Patrz również SQLPrepareStatement()

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 277

SQLSetParamNull()Funkcja ta powoduje przypisanie parametrowi wartości zerowej (pustej).

Kategoria SQLSkładnia [ResultCode=] SQLSetParamNull (SQLHandle,ParameterNumber,

ParameterType,Precision,Scale);

Parametr Opis

SQLHandle Wartość całkowita zwracana przez SQL po użyciu funkcji SQLPrepareStatement().

ParameterNumber Numer parametru w instrukcji SQL.ParameterType Typ danych określonego parametru:

Typ Opis

Char Łańcuch znaków o stałej długości wypełniony znakami pustymi

Var Char Łańcuch znaków o zmiennej długości

Decimal Liczba dziesiętna w kodzie BCD

Integer 4-bajtowa liczba całkowita ze znakiem

Small Integer 2-bajtowa liczba całkowita ze znakiem

Float 4-bajtowa liczba zmiennoprzecinkowa

Double Precision Float

8-bajtowa liczba zmiennoprzecinkowa

DateTime 4-bajtowa reprezentacja daty i czasu

Date 2-bajtowa reprezentacja daty i czasu

Czas 2-bajtowa reprezentacja daty i czasu

No Type Brak typu danychPrecision Dokładność wartości podawanych w systemie

dziesiętnym, maksymalna liczba znaków, lub długość bajtów przeznaczonych do zapisu daty i czasu.

Scale Liczba cyfr po kropce dziesiętnej. Jest wymagana tylko w przypadku, gdy dotyczy zerowanego parametru.

Uwagi Jeśli dla tego samego parametru została wywołana już funkcja SQLSetParam(), nie można użyć żadnego typu danych.

Przykład(y) ResultCode=SQLSetParamNull(SQLHandle,ParameterNumber,ParameterType,Precision,Scale);

Patrz również SQLPrepareStatement()

Opis funkcji, pól i zmiennych systemowych

278 Rozdział 3

SQLSetParamTime()

SQLSetStatement()

Funkcja ta powoduje przypisanie łańcucha znaków określonemu parametrowi reprezentującemu czas.

Kategoria SQLSkładnia [ResultCode=] SQLSetParamTime (SQLHandle,ParameterNumber,

ParameterValue);

Parametr Opis

SQLHandle Wartość całkowita zwracana przez SQL po użyciu funkcji SQLPrepareStatement().

ParameterNumber Numer parametru w instrukcji SQL.ParameterValue Wartość parametru.

Przykład(y) ResultCode=SQLSetParamTime(SQLHandle,ParameterNumber,ParameterValue);

Patrz również SQLPrepareStatement()

Funkcja ta tworzy bufor instrukcji SQL wykorzystując do tego celu wartość SQLStatement, dla ustanowionego połączenia ConnectionID. Jedno połączenie ConnectionID może korzystać tylko z jednego bufora. Funkcja ta zwraca kody błędów.

Kategoria SQLSkładnia [ResultCode=] SQLSetStatement (ConnectionID,SQLStatement)

;

Parametr Opis

ConnectionID Zmienna typu Memory Integer, utworzona przez użytkownika do pamiętania numeru (ID) przypisywanego przez funkcję SQLConnect do każdego połączenia z bazą danych.

SQLStatement Właściwa instrukcja SQL, jak w poniższym przykładzie.

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 279

SQLTransact()

Przykład(y) ResultCode=SQLSetStatement(ConnectionID,"Select LotNo, LotName from LotInfo");

W zamieszczonym poniżej przykładzie, wartość SQLHandle ustawiona zostaje na 0, dzięki czemu instrukcja nie wywołuje SQLPrepare(Connect_Id,SQLHandle) przed wykonaniem instrukcji. Ponieważ SQLHandle nie została utworzona przez SQLPrepare w celu poprawnego zakończenia tego zaznaczania, skorzystać z funkcji SQLEnd w miejsce SQLClearStatement().

SQLSetStatement( Connect_Id, “Select Speed, Ser_No from tablename where Ser_No =’” + Serial_input + “’”);

SQLExceute(Connect_Id,0);

W zamieszczonym poniżej przykładzie, SQLHandle jest tworzona za pomocą SQLPrepareStatement, i wykorzystywana w funkcji SQLExecute. W celu zakończenia tej instrukcji zaznaczania skorzystać z funkcji SQLClearStatement w celu uwolnienia zasobów, oraz zwolnienia SQLHandle.

SQLSetStatement( Connect_Id, “Select Speed, Ser_No from tablename where Ser_No =’” + Serial_input + “’”);

SQLPrepareStatement(Connect_Id,SQlHandle);

SQLExceute(Connect_Id,SqlHandle);

SQLSetStatement( Connect_Id, “Select Speed, Ser_No from tablename where Ser_No =’” + Serial_input + “’”);

SQLPrepareStatement(Connect_Id,SQlHandle);

SQLExceute(Connect_Id,SqlHandle);

Patrz również SQLConnect()

Funkcja SQLTransact() określa początek zestawu transakcji. Grupa poleceń zawierających się pomiędzy funkcjami SQLTransact() i SQLCommit() nosi nazwę zestawu transakcji. Zestaw transakcji jest traktowany jak pojedyncza transakcja. Po wykonaniu polecenia SQLTransact(), wszystkie kolejne operacje nie będą kierowane do bazy danych, aż do momentu kolejnego wywołania polecenia SQLCommit().

Kategoria SQLSkładnia [ResultCode=] SQLTransact (ConnectionID);

Opis funkcji, pól i zmiennych systemowych

280 Rozdział 3

Parametr Opis

ConnectionID Zmienna typu Memory Integer, utworzona przez użytkownika do pamiętania numeru (ID) przypisywanego przez funkcję SQLConnect do każdego połączenia z bazą danych.

Uwaga Przy tworzeniu skryptów QuickScript zawierających funkcję SQLTransact() należy zachować dużą ostrożność. Ponieważ czas wykonania skryptu jest mnożony przez liczbę transakcji w zestawie transakcji, włączanie wielu poleceń do zestawu transakcji istotnie zwalnia działanie aplikacji.

Patrz również SQLCommit(), SQLRollback()

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 281

SQLUpdate()Funkcja ta powoduje zmodyfikowanie rekordu w wyszczególnionej tablicy w bazie danych przy użyciu bieżących wartości zmiennych powiązanych z kolumnami tablicy.

Kategoria SQLSkładnia [ResultCode=] SQLUpdate(ConnectionID,TableName,BindList,

WhereExpr);

Parametr Opis

ConnectionID Zmienna typu Memory Integer, utworzona przez użytkownika do pamiętania numeru (ID) przypisywanego przez funkcję SQLConnect do każdego połączenia z bazą danych.

TableName Nazwa tablicy w bazie danych, której dotyczy operacja.

BindList Lista powiązań między kolumnami bazy danych i zmiennymi programu InTouch

WhereExpression Warunek, który może być spełniony lub niespełniony dla każdego wiersza tablicy. Funkcja aktualizuje tylko te wiersze w tablicy, dla których warunek jest spełniony. Warunek musi mieć następujący format:

Nazwa_kolumny operator_porównania wyrażenie.

Uwaga Jeśli w kolumnie znajdują się dane typu tekstowego, wyrażenie musi zostać wpisane w apostrofach.

Poniższy przykład służy do wybrania wszystkich wierszy, w których w kolumnie name występuje ciąg znaków EmployeeID:

name='EmployeeID'

Kolejny przykład służy do wybrania wszystkich wierszy, w których w kolumnie partno występuje liczba od 100 do 199:

partno>=100 and partno<200

Następny przykład służy do wybrania wszystkich wierszy, w których w kolumnie temperature występuje liczba większa od 350:

temperature>350

Opis funkcji, pól i zmiennych systemowych

282 Rozdział 3

SQLUpdateCurrent()

Sqrt()

Przykład(y) Zamieszczone poniżej wyrażenie powoduje uaktualnienie wszystkich rekordów tablicy BATCH, dla których numer serii jest równy 65, do bieżącej wartości zmiennych określonych za pomocą parametru BindList "List1".

ResultCode=SQLUpdate(ConnectionID,"BATCH","List1","lotno=65");

Uwaga Należy sprawdzić, czy rekordy nie powtarzają się. W przypadku gdy w tabeli będą znajdować się identyczne rekordy, zostaną one wszystkie uaktualnione.

Patrz również SQLConnect()

Funkcja ta pobiera zaznaczony rekord i uaktualnia go wartościami zmiennych InTouch Zamieszczony poniżej przykład spowoduje uaktualnienie zaznaczonego w danym momencie rekordu.

Kategoria SQLSkładnia [ResultCode=] SQLUpdateCurrent (ConnectionID);

Parametr Opis

ConnectionID Zmienna typu Memory Integer, utworzona przez użytkownika do pamiętania numeru (ID) przypisywanego przez funkcję SQLConnect do każdego połączenia z bazą danych.

Przykład(y) ResultCode=SQLUpdateCurrent(ConnectionID);

Patrz również SQLConnect()

Funkcja ta oblicza pierwiastek kwadratowy z podanej liczby.Kategoria funkcje matematyczneSkładnia RealResult=Sqrt(Number);

Parametr OpisNumber Dowolna liczba, zmienna rzeczywista (Real) lub

całkowita (Integer) programu InTouch.Przykład(y) AnalogTag1=Sqrt(AnalogTag2);

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 283

StartApp

StringASCII()

Automatyczne uruchomienie innej aplikacji Windows.Kategoria systemSkładnia StartApp "AppName";

Parametr OpisAppName Nazwa programu (pliku z rozszerzeniem .EXE)

aplikacji do uruchomienia, (np. Wordpad.EXE).Chociaż rozszerzenie .EXE w nazwie pliku nie jest wymagane, zaleca się jego wpisywanie. Można również wprowadzać parametry, w przypadkach gdy aplikacja je obsługuje. Długie nazwy plików nie działają. Jednakże można stosować poniższy przykład zastępowania długich nazw.

Jeżeli długa nazwa dostępu ma postać: :C:\Program files\Microsoft Office\Office\Excel. Wówczas należy wprowadzić: C:\Progra~1\Micros~2\Office\Excel (postać w systemie Dos).StartApp "C:\Progra~1\Micros~2\Office\Excel";

Jeżeli wykorzystywany jest plik windows i pokazywane są wszystkie informacje o pliku, w środkowej kolumnie umieszczona będzie nazwa w postaci, w jakiej jest ona reprezentowana w systemie Dos.

Przykład(y) Zamieszczona poniżej instrukcja powoduje uruchomienie programu Microsoft Windows Wordpad.StartApp "Wordpad.exe";

Patrz również ActivateAPP()

Zwraca kod ASCII pierwszego znaku zadanej zmiennej tekstowejKategoria funkcje tekstoweSkładnia IntegerResult=StringASCII("Char");

Parametr OpisChar Zmienna tekstowa lub łańcuch znaków

alfanumerycznych.Uwagi Kod ASCII pierwszego znaku ciągu znaków Char zostanie zapisany jako

IntegerResult. W czasie wykonywania funkcji, testowany lub zmieniany jest wyłącznie pojedynczy znak. Jeśli łańcuch znaków lub zmienna tekstowa podana jako parametr funkcji StringASCII() zawiera więcej niż jeden znak, podany zostanie tylko kod pierwszego znaku.

Przykład(y) StringASCII("A") zwróci 65StringASCII("A Mixer is Running") zwróci 65StringASCII("a mixer is running") zwróci 97

Patrz również StringChar(), StringFromIntg(), StringFromReal(), StringFromTime(), StringFromTimeLocal(), StringInString(), StringLeft(), StringLen(), StringLower(), StringMid(), StringReplace(), StringRight(), StringSpace(), StringTest(), StringToIntg(), StringToReal(), StringTrim(), StringUpper(), Text()

Opis funkcji, pól i zmiennych systemowych

284 Rozdział 3

StringChar()

StringFromIntg()

Zwraca znak dla zadanego kodu ASCII.Kategoria funkcje tekstoweSkładnia MessageResult=StringChar(ASCII);

Parametr OpisASCII Kod ASCII lub zmienna typu całkowitego.

Uwagi Znak o podanym (jako parametr ASCII) kodzie ASCII zostanie zapisany jako MessageResult. Jednym z zastosowań tej funkcji jest dołączanie do zmiennych tekstowych znaków ASCII, które nie są reprezentowane na klawiaturze.

Przykład(y) ControlString=MessageTag+StringChar(13)+StringChar(10);

W przykładzie powyżej, do zmiennej MessageTag dołączone zostały znaki [CR(13)] i [LF(10)], a całość została zapisana jako ControlString. Wstawianie znaków o kodach spoza normalnego zakresu 32-126 może być bardzo użyteczne przy tworzeniu kodów sterujących dla urządzeń zewnętrznych, takich jak drukarki lub modemy.Funkcja ta jest często wykorzystywana do tworzenia poleceń SQL. W wyrażeniu WhereExpression wartości tekstowe muszą często ujęte być w znaki cudzysłowów, można je wstawić za pomocą funkcji StringChar(34).

Patrz również StringASCII(), StringFromIntg(), StringFromReal(), StringFromTime(), StringFromTimeLocal(), StringInString(), StringLeft(), StringLen(), StringLower(), StringMid(), StringReplace(), StringRight(), StringSpace(), StringTest(), StringToIntg(), StringToReal(), StringTrim(), StringUpper(), Text()

Zamienia wartość całkowitą na odpowiadający jej ciąg znaków.Kategoria funkcje tekstoweSkładnia MessageResult=StringFromIntg(Number,Base);

Parametr OpisNumber Liczba do konwersji. Dowolna liczba lub zmienna

całkowita.Base Parametr określający system zapisu. Dowolna liczba

lub zmienna całkowita.Uwagi Liczba całkowita jest przekształcana na system określony przez parametr

Base (dwójkowy, szesnastkowy, itp.), a wynik tej operacji jest zapisywany jako MessageResult.

Przykład(y) StringFromIntg(26, 2) da w wyniku "11010"StringFromIntg(26, 8) da w wyniku "32"StringFromIntg(26, 16) da w wyniku "1A"

Patrz również StringASCII(), StringChar(), StringFromReal(), StringFromTime(), StringFromTimeLocal(), StringInString(), StringLeft(), StringLen(), StringLower(), StringMid(), StringReplace(), StringRight(), StringSpace(), StringTest(), StringToIntg(), StringToReal(), StringTrim(), StringUpper(), Text()

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 285

StringFromReal()Przekształca liczbę w formacie rzeczywistym na odpowiadający jej ciąg znaków, zapisując ją w formacie zmiennoprzecinkowym lub w formacie wykładniczym.

Kategoria funkcje tekstoweSkładnia MessageResult=StringFromReal(Number,Precision,"Type");

Parametr OpisNumber Jest konwertowany zgodnie z parametrami Precision

i Type, a wartość przypisywana jest do MessageResult. Liczba lub zmienna typu rzeczywistego.

Precision Podaje ile miejsc dziesiętnych należy wyświetlić. Dowolna liczba lub zmienna całkowita.

Typ Parametr określający system zapisu:Typ Opis"f" 8-bajtowa liczba zmiennoprzecinkowa"e" Notacja "naukowa" z małym e."E" Notacja "naukowa" z dużym E.

Przykład(y) StringFromReal(263.355, 2,"f") da w wyniku "263.36"StringFromReal(263.355, 2,"e") da w wyniku "2.63e2"StringFromReal(263.55, 3,"E") da w wyniku "2.636E2"

Patrz również StringASCII(), StringChar(), StringFromIntg(), StringFromTime(), StringFromTimeLocal(), StringInString(), StringLeft(), StringLen(), StringLower(), StringMid(), StringReplace(), StringRight(), StringSpace(), StringTest(), StringToIntg(), StringToReal(), StringTrim(), StringUpper(), Text()

Opis funkcji, pól i zmiennych systemowych

286 Rozdział 3

StringFromTime()Funkcja ta przekształca czas (wyrażany w sekundach licząc od 01-01-1970) na ciąg znaków. Wartość czasu powinna odpowiadać standardowi UTC (ilość sekund które upłynęły od 01 – 01 – 1970 czasu GMT). Zwrócona wartość jest czasem lokalnym.

Kategoria funkcje tekstoweSkładnia MessageResult=StringFromTime

(SecsSince1-1-70,StringType);

Parametr OpisSecsSince1-1-70 Konwersja na ciąg znaków przeprowadzana jest

zgodnie z parametrem StringType, a wynik zwracany za pomocą MessageResult.

StringType Parametr określający system zapisu:Typ Opis1 Zapis daty w formacie ustawionym w

Panelu sterowania Windows. (Podobny do formatu zmiennej systemowej $DateString.)

2 Zapis czasu w formacie ustawionym w Panelu sterowania Windows. (Podobny do formatu zmiennej systemowej $TImeString.)

3 Wyświetlenie tekstu składającego się z 24 znaków, podającego zarówno datę jak i godzinę. "Wed Jan 02 02:03:55 1993"

4 Wyświetlenie skrótowego oznaczenia dla dnia tygodnia. "Wed"

5 Wyświetlenie pełnej nazwy dnia tygodnia. "Wednesday"

Przykład(y) StringFromTime(86400, 1) zwraca "1/2/70"

StringFromTime(86400, 2) zwraca "12:00:00 AM"

StringFromTime(86400, 3) zwraca "Fri Jan 02 00:00:00 1970"

StringFromTime(86400, 4) zwraca "Fri"

StringFromTime(86400, 5) zwraca "Friday"

Patrz również StringASCII(), StringChar(), StringFromIntg(), StringFromReal(), StringFromTime(), StringFromTimeLocal(), StringInString(), StringLeft(), StringLen(), StringLower(), StringMid(), StringReplace(), StringRight(), StringSpace(), StringTest(), StringToIntg(), StringToReal(), StringTrim(), StringUpper(), Text()

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 287

StringFromTimeLocal()Funkcja ta przekształca czas (wyrażany w sekundach licząc od 01-01-1970) na ciąg znaków. Zwrócona wartość jest czasem lokalnym.

Kategoria funkcje tekstoweSkładnia MessageResult=StringFromTimeLocal(SecsSince1-1-70,

StringType);

Parametr OpisSecsSince1-1-70 Konwersja na ciąg znaków przeprowadzana jest

zgodnie z parametrem StringType, a wynik zwracany za pomocą MessageResult.

StringType Parametr określający system zapisu:Typ Opis1 Zapis daty w formacie ustawionym w

Panelu sterowania Windows. (Podobny do formatu zmiennej systemowej $DateString.)

2 Zapis czasu w formacie ustawionym w Panelu sterowania Windows. (Podobny do formatu zmiennej systemowej $TImeString.)

3 Wyświetlenie tekstu składającego się z 24 znaków, podającego zarówno datę jak i godzinę. "Wed Jan 02 02:03:55 1993"

4 Wyświetlenie skrótowego oznaczenia dla dnia tygodnia. "Wed"

5 Wyświetlenie pełnej nazwy dnia tygodnia. "Wednesday"

Przykład(y) StringFromTimeLocal(86400, 1) zwraca "1/2/70"

StringFromTimeLocal (86400, 2) zwraca "12:00:00 AM"

StringFromTimeLocal (86400, 3) zwraca "Fri Jan 02 00:00:00 1970"

StringFromTimeLocal (86400, 4) zwraca "Fri"

StringFromTimeLocal (86400, 5) zwraca "Friday"

Patrz również StringASCII(), StringChar(), StringFromIntg(), StringFromReal(), StringFromTime(), StringInString(), StringLeft(), StringLen(), StringLower(), StringMid(), StringReplace(), StringRight(), StringSpace(), StringTest(), StringToIntg(), StringToReal(), StringTrim(), StringUpper(), Text()

Opis funkcji, pól i zmiennych systemowych

288 Rozdział 3

StringInString()Pozycja wystąpienia szukanego ciągu znaków w zadanym tekście.

Kategoria funkcje tekstoweSkładnia IntegerResult=StringInString("Text","SearchFor",

StartPos,CaseSens);

Parametr OpisTekst Łańcuch znaków przeszukiwany pod kątem

występowania grupy znaków SearchFor. Jeśli grupa ta występuje w kilku miejscach, do zmiennej IntegerResult przypisywane jest miejsce pierwszego wystąpienia. Łańcuch znaków lub zmienna tekstowa.

SearchFor Poszukiwany ciąg znaków w Text. Łańcuch znaków lub zmienna tekstowa.

StartPos Liczba całkowita określająca miejsce początkowe przeszukiwania łańcucha Text. Dowolna liczba lub zmienna całkowita.

CaseSens Parametr określający, czy przy przeszukiwaniu łańcucha znaków mają być rozróżniane duże i małe litery (0=nie, 1=tak). Dowolna liczba lub zmienna całkowita.

Przykład(y) Instrukcja StringInString("The mixer is running","mix", 1, 0)zwróci wartoœæ 5

StringInString("Today is Thursday", "day", 1, 0)zwróci wartoœæ 3

StringInString("Today is Thursday", "day", 10, 0)zwróci wartoœæ 15

Instrukcja StringInString("Today is Veteran's Day","Day",1, 1)zwróci wartoœæ 20

Instrukcja StringInString("Today is Veteran's Day","Night",1, 1)zwróci wartoœæ 0

Patrz również StringASCII(), StringChar(), StringFromIntg(), StringFromReal(), StringFromTime(), StringFromTimeLocal(), StringLeft(), StringLen(), StringLower(), StringMid(), StringReplace(), StringRight(), StringSpace(), StringTest(), StringToIntg(), StringToReal(), StringTrim(), StringUpper(), Text()

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 289

StringLeft()Zwraca liczbę znaków określoną przez Chars, począwszy od znaku umieszczonego skrajnie po lewej stronie.

Kategoria funkcje tekstoweSkładnia MessageResult=StringLeft("Text",Chars);

Parametr OpisTekst Łańcuch znaków lub zmienna tekstowa.Chars Liczba znaków, które ma zwrócić funkcja, lub

zmienna typu całkowitego.Uwagi Jeśli wartość parametru Chars wynosi 0, funkcja zwraca cały łańcuch

znaków.Przykład(y) Instrukcja StringLeft("The Control Pump is On", 3)

zwróci"The"

StringLeft("Pump 01 is On", 4) zwróci"Pump"

StringLeft("Pump 01 is On", 96) zwróci"Pump 01 is On"

Instrukcja StringLeft("The Control Pump is On", 0) zwróci"The Control Pump is On"

Patrz również StringASCII(), StringChar(), StringFromIntg(), StringFromReal(), StringFromTime(), StringInString(), StringLen(), StringLower(), StringMid(), StringReplace(), StringRight(), StringSpace(), StringTest(), StringToIntg(), StringToReal(), StringTrim(), StringUpper(), Text()

Opis funkcji, pól i zmiennych systemowych

290 Rozdział 3

StringLen()

StringLower()

Zwraca liczbę całkowitą określającą długość zadanej zmiennej tekstowej.Kategoria funkcje tekstoweSkładnia IntegerResult=StringLen("Text");

Parametr OpisTekst Łańcuch znaków lub zmienna tekstowa.

Uwagi Długość tekstu Text (w znakach) przypisywana jest do zmiennej IntegerTag. Zliczane są wszystkie znaki w zmiennej tekstowej, włączając w to znaki standardowo nie wyświetlane.

Przykład(y) StringLen("Twelve percent") zwróci wartoœæ 14

StringLen("12%") zwróci wartoœæ 3

StringLen("The end." + StringChar(13)) zwróci wartoœæ 9

Uwaga. [CR] jest znakiem powrotu karetki o kodzie ASCII 13Patrz również StringASCII(), StringChar(), StringFromIntg(), StringFromReal(),

StringFromTime(), StringFromTimeLocal(), StringInString(), StringLeft(), StringLower(), StringMid(), StringReplace(), StringRight(), StringSpace(), StringTest(), StringToIntg(), StringToReal(), StringTrim(), StringUpper(), Text()

Zamienia wszystkie znaki pisane duże literą na znaki pisane małą literą, a wynik tej operacji umieszczany jest w zmiennej MessageResult.

Kategoria funkcje tekstoweSkładnia MessageResult=StringLower("Text");

Parametr OpisTekst Tekst, w którym duże litery mają być zmienione

na małe. Łańcuch znaków lub zmienna tekstowa.Uwagi Funkcja nie zmienia małych liter, cyfr, symboli i znaków specjalnych (a

także, polskich dużych liter na małe). Przykład(y) StringLower("TURBINE")zwróci lancuch "turbine"

StringLower("22.2 Is The Value") zwróci"22.2 is the value."

Patrz również StringASCII(), StringChar(), StringFromIntg(), StringFromReal(), StringFromTime(), StringFromTimeLocal(), StringInString(), StringLeft(), StringLen(), StringMid(), StringReplace(), StringRight(), StringSpace(), StringTest(), StringToIntg(), StringToReal(), StringTrim(), StringUpper(), Text()

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 291

StringMid()Funkcja ta zwraca liczbę znaków określoną parametrem Chars, rozpoczynając od pozycji określonej przez parametr StartChar. Funkcja ta nieznacznie różni się od swoich odpowiedników: funkcji StringLeft() i StringRight(), ponieważ umożliwia ona określenie zarówno początku jak i końca wyjściowego łańcucha znaków.

Kategoria funkcje tekstoweSkładnia MessageResult=StringMid("Text",StartChar,Chars);

Parametr OpisTekst Łańcuch znaków lub zmienna tekstowa.StartChar Liczba całkowita określająca miejsce pierwszego

znaku z grupy. Dowolna liczba lub zmienna całkowita.

Chars Liczba znaków do odczytania. Dowolna liczba lub zmienna całkowita.

Przykład(y) Instrukcja StringMid("The Furnace is Overheating",5,7) zwróci"Furnace"

Instrukcja StringMid("The Furnace is Overheating",13,3) zwróci"is "

Instrukcja StringMid("The Furnace is Overheating",16,50) zwróci"Overheating"

Patrz również StringASCII(), StringChar(), StringFromIntg(), StringFromReal(), StringFromTime(), StringFromTimeLocal(), StringInString(), StringLeft(), StringLen(), StringLower(), StringReplace(), StringRight(), StringSpace(), StringTest(), StringToIntg(), StringToReal(), StringTrim(), StringUpper(), Text()

Opis funkcji, pól i zmiennych systemowych

292 Rozdział 3

StringReplace()Funkcja ta zastępuje określoną grupę znaków w podanym łańcuchu znaków (lub zmiennej tekstowej). Dzięki tej funkcji można zastępować znaki, słowa lub frazy w łańcuchach znaków i zmiennych tekstowych.

Kategoria funkcje tekstoweSkładnia MessageResult=StringReplace(Text,SearchFor,ReplaceWith,

CaseSens,NumToReplace,MatchWholeWords);

Parametr OpisTekst Łańcuch znaków lub zmienna tekstowa podlegające

modyfikacjom. Łańcuch znaków lub zmienna tekstowa.

SearchFor Poszukiwana grupa znaków, która ma zostać wymieniona na inną. Łańcuch znaków lub zmienna tekstowa.

ReplaceWith Dowolny tekst który będzie wstawiony. Łańcuch znaków lub zmienna tekstowa.

CaseSens Parametr określający, czy przy przeszukiwaniu łańcucha znaków mają być rozróżniane duże i małe litery . (0-nie i 1=tak.) Liczba lub zmienna typu całkowitego.

NumToReplace Liczba wystąpień, w których ma być wprowadzona zamiana. (-1 = wszystkie) Dowolna liczba lub zmienna całkowita.

MatchWholeWords Określa czy działanie funkcji ograniczone zostanie do zastępowania całych słów. (0-nie i 1=tak.) Liczba lub zmienna typu całkowitego.Jeżeli parametr MatchWholeWords zostanie ustawiony na 1, a SearchFor na "and", znaki "and" w słowie "handle" nie zostaną zastąpione. Jeśli natomiast parametr MatchWholeWords ma wartość 0, grupa znaków "and" występująca w słowie "handle" zostanie zamieniona.

Przykład(y) StringReplace("In From Within","In","Out",0,1,0) zwróci"Out From Within" (zast ępowany jest tylko pierwszy)

StringReplace("In From Within","In","Out",0,-1,0) zwróci"Out From without" (zast ępowane wszystkie wyst ąpienia)

StringReplace("In From Within","In","Out",1,-1,0) zwróci"Out From Within" (zast ępowane wszystkie wyst ąpienia ze zgodn ą wielko ści ą liter)

StringReplace("In From Within","In","Out",0,-1.1) zwróci"Out From Within" (zast ępowane wszystkie wyst ąpienia ze zgodno ści ą całych wyrazów)

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 293

StringRight()

Funkcja StringReplace() nie rozpoznaje znaków specjalnych, np. @#$%&*(). Traktuje je jako znaki rozdzielające. Przykładowo, wywołanie funkcji StringReplace() (abc#,abc#,1234,0,1,1) nie spowoduje żadnego zastąpienia. Znak # zostanie odczytywany jako znak rozdzielający.

Patrz również StringASCII(), StringChar(), StringFromIntg(), StringFromReal(), StringFromTime(), StringFromTimeLocal(), StringInString(), StringLeft(), StringLen(), StringLower(), StringMid(), StringRight(), StringSpace(), StringTest(), StringToIntg(), StringToReal(), StringTrim(), StringUpper(), Text()

Zwraca liczbę znaków określoną przez parametr Chars, począwszy od znaku umieszczonego skrajnie po prawej stronie.

Kategoria funkcje tekstoweSkładnia MessageResult=StringRight("Text",Chars);

Parametr OpisTekst Łańcuch znaków lub zmienna tekstowa. Chars Liczba znaków, które ma zwrócić funkcja, lub

zmienna typu całkowitego.Uwagi Jeśli wartość parametru Chars wynosi 0, funkcja zwraca cały łańcuch

znaków.Przykład(y) StringRight("The Pump is On", 2) zwróci

"On"

StringRight("The Pump is On", 5) zwróci"is On"

StringRight("The Pump is On", 87) zwróci"The Pump is On"

StringRight("The Pump is On", 0) zwróci"The Pump is On"

Patrz również StringASCII(), StringChar(), StringFromIntg(), StringFromReal(), StringFromTime(), StringFromTimeLocal(), StringInString(), StringLeft(), StringLen(), StringLower(), StringMid(), StringReplace(), StringSpace(), StringTest(), StringToIntg(), StringToReal(), StringTrim(), StringUpper(), Text()

Opis funkcji, pól i zmiennych systemowych

294 Rozdział 3

StringSpace()Funkcja ta ustawia łańcuch spacji do zmiennej tekstowej lub do wyrażenia.

Kategoria funkcje tekstoweSkładnia MessageResult=StringSpace(NumSpaces);

Parametr OpisNumSpaces Liczba spacji do wygenerowania. Dowolna liczba lub

zmienna całkowita.Uwagi Funkcja StringSpace() zwraca łańcuch spacji o długości zadanej za

pomocą parametru NumSpaces.Przykład(y) Wszystkie spacje reprezentowane są za pomocą znaku "×".

StringSpace(4) zwróci łancuch "××××"

"Pump" + StringSpace(1) + "Station" zwróci"Pump×Station"

Patrz również StringASCII(), StringChar(), StringFromIntg(), StringFromReal(), StringFromTime(), StringFromTimeLocal(), StringInString(), StringLeft(), StringLen(), StringLower(), StringMid(), StringReplace(), StringRight(), StringTest(), StringToIntg(), StringToReal(), StringTrim(), StringUpper(), Text()

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 295

StringTest()Sprawdza typ pierwszego znaku łańcucha znaków.

Kategoria funkcje tekstoweSkładnia DiscreteResult=StringTest("Text",TestType)

Parametr OpisTekst Łańcuch znaków na którym operuje funkcja. Łańcuch

znaków lub zmienna tekstowa.TestType Kryterium usuwania, zgodnie z poniższym

zestawieniem:Typ Opis1 Znak alfanumeryczny ('A'-'Z', 'a-z' i '0-

9')2 Cyfra (od '0' do '9')3 Litera alfabetu (od 'A' do 'Z', od 'a' do

'z')4 Duża litera alfabetu (od 'A' do 'Z')5 Mała litera alfabetu (od 'a' do 'z')6 Znak interpunkcyjny (0x21-0x2F)7 Znak ASCII (0x00-0x7F)8 Znak heksadecymalny ('A'-'F' or 'a'-'f'

or '0'-'9')9 Znak drukowany (0x21-0x2F)10 Znak sterujący (0x00-0x1F lub 0x7F)11 Znaki spacji (0x09-0x0D lub 0x20)

Uwagi Jeśli pierwszy znak łańcucha znaków Text jest znakiem zgodnym z kryterium określonym za pomocą TestType, funkcja StringTest() ustawia DiscreteResult na 1. Jeżeli funkcja StringTest() zawiera większą liczbę znaków, sprawdzany jest typ wyłącznie pierwszego znaku.

Przykład(y) StringTest("ACB123",1) zwróci warto ść 1

StringTest("ABC123",5) zwróci warto ść 0

Patrz również StringASCII(), StringChar(), StringFromIntg(), StringFromReal(), StringFromTime(), StringFromTimeLocal(), StringInString(), StringLeft(), StringLen(), StringLower(), StringMid(), StringReplace(), StringRight(), StringSpace(), StringToIntg(), StringToReal(), StringTrim(), StringUpper(), Text()

Opis funkcji, pól i zmiennych systemowych

296 Rozdział 3

StringToIntg()Funkcja ta przekształca wartość numeryczną łańcucha znaków (lub zmiennej tekstowej) na wartość całkowitą, która może być użyta do obliczeń matematycznych.

Kategoria funkcje tekstoweSkładnia IntegerResult=StringToIntg("Text");

Parametr OpisTekst Łańcuch znaków na którym operuje funkcja. Łańcuch

znaków lub zmienna tekstowa.Uwagi Gdy określana jest wartość łańcucha znaków, system odczytuje pierwszy

znak łańcucha i określa jego wartość numeryczną. Jeśli pierwszy znak nie jest cyfrą ani znakiem minus "-" (puste miejsca są ignorowane), wartość numeryczna łańcucha znaków wynosi 0. Jeśli pierwszy znak jest cyfrą lub znakiem minus "-", system odczytuje kolejne znaki do czasu napotkania znaku nie będącego cyfrą.

Przykład(y) Jeśli Text="ABCD", wówczas IntegerTag=0.

Jeśli Text="22.2 is the Value", wówczas IntegerTag=22 (je żeli zmienna IntegerTag jest zdefiniowana jako liczba całkowita).

Jeśli Text="The Value is 22", wówczas IntegerTag=0.

Patrz również StringASCII(), StringChar(), StringFromIntg(), StringFromReal(), StringFromTime(), StringFromTimeLocal(), StringInString(), StringLeft(), StringLen(), StringLower(), StringMid(), StringReplace(), StringRight(), StringSpace(), StringTest(), StringToReal(), StringTrim(), StringUpper(), Text()

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 297

StringToReal()Przekształca zmienną tekstową na wartość rzeczywistą (liczbę zmiennoprzecinkową), na której mogą być przeprowadzone obliczenia matematyczne..

Kategoria funkcje tekstoweSkładnia RealResult=StringToReal("Text");

Parametr OpisTekst Łańcuch znaków na którym operuje funkcja. Łańcuch

znaków lub zmienna tekstowa.Uwagi Gdy określana jest wartość łańcucha znaków, system odczytuje pierwszy

znak łańcucha i określa jego wartość numeryczną. Jeśli pierwszy znak nie jest cyfrą ani znakiem minus "-" (puste miejsca są ignorowane), wartość numeryczna łańcucha znaków wynosi 0. Jeśli pierwszy znak jest cyfrą lub znakiem minus "-", system odczytuje kolejne znaki do czasu napotkania znaku nie będącego cyfrą.

Przykład(y) Jeśli Text ="ABCD", wówczas RealTag=0.

Jeśli Text="22.261 is the Value", wówczas RealTag=22.261.

Jeśli Text="The Value is 22", wówczas RealTag=0.

Patrz również StringASCII(), StringChar(), StringFromIntg(), StringFromReal(), StringFromTime(), StringFromTimeLocal(), StringInString(), StringLeft(), StringLen(), StringLower(), StringMid(), StringReplace(), StringRight(), StringSpace(), StringTest(), StringToIntg(), StringTrim(), StringUpper(), Text()

Opis funkcji, pól i zmiennych systemowych

298 Rozdział 3

StringTrim()Usuwa niepotrzebne spacje z łańcucha znaków.

Kategoria funkcje tekstoweSkładnia MessageResult=StringTrim("Text",TrimType);

Parametr OpisText Łańcuch znaków z którego będą usuwane spacje.

Łańcuch znaków lub zmienna tekstowa.TrimType Kryterium usuwania, zgodnie z poniższym

zestawieniem:Typ Opis1 Spacje zostaną usunięte z początku

łańcucha znaków (wszystkie spacje na lewo od pierwszego znaku, który nie jest spacją).

2 Spacje zostaną usunięte z końca łańcucha znaków (wszystkie spacje na prawo od ostatniego znaku, który nie jest spacją).

3 Usunięte zostaną wszystkie spacje z wyjątkiem pojedynczych spacji pomiędzy słowami.

Uwagi Text jest przeszukiwany pod kątem występowania spacji o kodach ASCII 0x09-0x0D lub 0x20, które zostaną usunięte. Parametr TrimType określa, które spacje zostaną usunięte.

Przykład(y) Wszystkie spacje reprezentowane są za pomocą znaku "×".StringTrim("×××××This×is×a××test×××××", 1) zwróci"This×is×a××test×××××"

StringTrim("×××××This×is×a××test×××××", 2) zwróci"×××××This×is×a××test"

StringTrim("×××××This×is×a××test×××××", 3) zwróci"This×is×a×test"

Funkcja StringReplace() pozwala na usunięcie WSZYSTKICH spacji z zadanej zmiennej tekstowej. W tym celu należy zamienić wszystkie spacje na pusty łańcuch znaków.

Patrz również StringASCII(), StringChar(), StringFromIntg(), StringFromReal(), StringFromTime(), StringFromTimeLocal(), StringInString(), StringLeft(), StringLen(), StringLower(), StringMid(), StringReplace(), StringRight(), StringSpace(), StringTest(), StringToIntg(), StringToReal(), StringUpper(), Text()

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 299

StringUpper()

Tan()

Przekształca wszystkie małe litery w podanym tekście na duże.Kategoria funkcje tekstoweSkładnia MessageResult=StringUpper("Text");

Parametr OpisTekst Tekst, w którym małe litery mają być zmienione

na duże. Łańcuch znaków lub zmienna tekstowa.Uwagi Funkcja nie zmienia dużych liter, cyfr, symboli i znaków specjalnych (a

także, niestety, polskich małych liter na duże). Przykład(y) StringUpper("abcd") zwróci ła ńcuch "ABCD."

StringUpper("22.2 is the value") zwróci ła ńcuch "22.2 IS THE VALUE"

Patrz również StringASCII(), StringChar(), StringFromIntg(), StringFromReal(), StringFromTime(), StringFromTimeLocal(), StringInString(), StringLeft(), StringLen(), StringLower(), StringMid(), StringReplace(), StringRight(), StringSpace(), StringTest(), StringToIntg(), StringToReal(), StringTrim(), Text()

Zwraca tangens kąta podanego w stopniach.Kategoria funkcje matematyczneSkładnia Result=Tan(AngleNumber);

Parametr OpisAngleNumber Wartość kąta w stopniach. Dowolna liczba, zmienna

rzeczywista (Real) lub całkowita (Integer) programu InTouch.

Przykład(y) Wave = 10 + 50 * Tan(6 * $Second);Tan(45) zwróci 1Tan(0) zwróci 0

Patrz również Cos(), Sin(), ArcCos(), ArcSin(), ArcTan()

Opis funkcji, pól i zmiennych systemowych

300 Rozdział 3

Text()

Trunc()

Funkcja ta powoduje zapisanie w zmiennej tekstowej wartości zmiennej analogowej (całkowitej lub rzeczywistej) w postaci łańcucha znaków, z zastosowaniem formatu określonego w Format_Text.

Kategoria funkcje tekstoweSkładnia MessageResult=Text(Analog_Tag,"Format_Text");

Parametr OpisAnalog_Tag Wartość zmiennej analogowej, która będzie poddana

konwersji. Dowolna liczba lub zmienna rzeczywista (Real) albo całkowita (Integer) programu InTouch.

Format_Text Parametr określający format zapisu. Łańcuch znaków lub zmienna tekstowa.

Przykład(y) MessageTag=Text(Analog_Tag,"#.00");

Message_Tag jest zmienną tekstową (typu Message), 66 jest wartością zmiennej całkowitej lub rzeczywistej, a "#0.00" reprezentuje format zapisu wartości zmiennej:Jeśli Analog_Tag=66, wówczas MessageTag=66.00.

Jeśli Analog_Tag=22.269, wówczas MessageTag=22.27.

Jeśli Analog_Tag=9.999, wówczas MessageTag=10.00.

LogMessage("The current value of FreezerRoomTemp is:" + Text (FreezerRoomTemp, "#.#")); -

W zamieszczonym poniżej przykładzie, zmienna MessageTag zostanie ustawiona na wartość "One=1 Two=2".MessageTag = "One + " + Text(1,"#") + StringChar(32) +"Two +" + Text(2,"#");

Patrz również StringFromIntg(), StringToIntg(), StringFromReal(), StringToReal()

Przybliża liczbę rzeczywistą przez odrzucenie części po prawej stronie kropki dziesiętnej.

Kategoria funkcje matematyczneSkładnia ResultNumericTag=Trunc(Number);

Parametr OpisNumber Dowolna liczba, zmienna rzeczywista (Real) lub

całkowita (Integer) programu InTouch.Uwagi Wynik wykonania tej funkcji jest taki sam, jak zapisania wartości zmiennej

rzeczywistej jako zmiennej całkowitej . Przykład(y) Trunc(4.3) daje w wyniku 4

Trunc(-4.3) daje w wyniku –4

Patrz również Round()

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 301

TseGetClientId()

TseQueryRunningOnConsole()

Zwraca wersję łańcucha znaków ID klienta (adres TCP/IP klienta) jeżeli aplikacja jest uruchomiona na stanowisku klienckim Terminal Serwera. W przeciwnym przypadku zwraca pusty ciąg znaków.

Kategoria Usługi terminaloweSkładnia MessageResult=TseGetClientId();

Parametr OpisMessageResult Zmienna typu message, która zwraca ID klienta.

Uwagi To ID jest używane wewnętrznie do generowania nazw serwera SuiteLink i nazw plików Logger’a.

Przykład MsgTag=TseGetClientID();

Adres IP klienta, na przykład: 10.103.202.1 zostanie zwrócony do MsgTag.

Zwraca niezerową liczbę całkowitą, jeżeli aplikacja jest uruchomiona na konsoli Terminal Serwera . W przeciwnym przypadku zwraca zero (0).

Kategoria Usługi terminaloweSkładnia Result=TseQueryRunningOnConsole();

Parametr OpisResult Zwraca 0 jeżeli aplikacja nie jest uruchomiona na

konsoli TSUwagi -Przykład IntTag=TseQueryRunningOnConsole();

Zwraca IntTag=1 jeżeli aplikacja jest uruchomiona na konsoli Terminala Serwera.

Opis funkcji, pól i zmiennych systemowych

302 Rozdział 3

TseQueryRunningOnClient()

wcAddItem()

Funkcja ta zwraca niezerową liczbę całkowitą, jeżeli aplikacja jest uruchomiona na stanowisku klienckim Terminal Serwera. W przeciwnym przypadku zwraca zero (0).

Kategoria Usługi terminaloweSkładnia Result=TseQueryRunningOnClient();

Parametr OpisResult Zwraca 0 jeżeli aplikacja nie jest uruchomiona na

stanowisku klienckim serwera.Uwagi -Przykład IntTag=TseQueryRunningOnClient();

Zwraca IntTag=1 jeżeli aplikacja jest uruchomiona na stanowisku klienckim Terminal Serwera.

Dodaje łańcuch znaków do listy lub listy rozwijalnej. Jeśli lista lub lista rozwijalna nie zostały utworzone jako posortowane, tekst jest dodawany na końcu listy. W przeciwnym wypadku, tekst jest wstawiany do listy, po czym jest ona ponownie sortowana.

Kategoria obiekty sterujące WindowsSkładnia [ErrorNumber=]wcAddItem("ControlName","MessageTag");

Parametr OpisControlName Nazwa obiektu sterującego oknem. Przykładowo,

ListBox_1. Łańcuch znaków lub zmienna tekstowa.MessageTag Łańcuch znaków do wyświetlania. Łańcuch znaków

lub zmienna tekstowa.Uwagi Kody błędów dla funkcji tego typu można znaleźć w rozdziale Załącznik

A.Zastosowanie Listy i listy rozwijalne.Przykład(y) Instrukcja zamieszczona poniżej dodaje łańcuch znaków do listy po

otwarciu okna (przy użyciu skryptu QuickScript związanego z oknem OnShow), zawierającego obiekt List:wcAddItem("ListBox_1", "Chocolate");

wcAddItem("ListBox_1", "Vanilla");

wcAddItem("ListBox_1", "Strawberry");

Patrz również wcInsertItem()

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 303

wcClear()

wcDeleteItem()

Funkcja ta usuwa wszystkie elementy z listy (List box) lub listy rozwijalnej (Combo box).

Kategoria obiekty sterujące WindowsSkładnia [ErrorNumber=]wcClear("ControlName");

Parametr OpisControlName Nazwa obiektu sterującego oknem. Przykładowo,

ListBox_1. Łańcuch znaków lub zmienna tekstowa.

Uwagi Kody błędów dla funkcji tego typu można znaleźć w rozdziale Załącznik A.

Zastosowanie Listy i listy rozwijalne.Przykład(y) Jeśli instrukcja zamieszczona poniżej zostanie np. zapisana w skrypcie

QuickScript związanym z przyciskiem, wciśnięcie tego przycisku spowoduje usunięcie wszystkich elementów listy ListBox_1:wcClear("ListBox_1");

Funkcja ta usuwa pole listy lub element listy rozwijalnej o podanym indeksie.

Kategoria obiekty sterujące WindowsSkładnia [ErrorNumber=]wcDeleteItem("ControlName",ItemIndex);

Parametr OpisControlName Nazwa obiektu sterującego oknem. Przykładowo,

ListBox_1. Łańcuch znaków lub zmienna tekstowa.ItemIndex Numer oznaczający pozycję elementu na liście.

Dowolna liczba lub zmienna całkowita.Uwagi Kody błędów dla funkcji tego typu można znaleźć w rozdziale Załącznik

A.Zastosowanie Listy i listy rozwijalne.Przykład(y) Zamieszczona poniżej instrukcja, umieszczona w skrypcie QuickScript i

powiązana z przyciskiem, po jego naciśnięciu powoduje usunięcie 3-go elementu listy.wcDeleteItem("ListBox_1", 3);

Opis funkcji, pól i zmiennych systemowych

304 Rozdział 3

wcDeleteSelection()

wcErrorMessage()

Usuwa aktualnie wybrany element z listy lub listy rozwijalnej.Kategoria obiekty sterujące WindowsSkładnia [ErrorNumber =]wcDeleteSelection("ControlName");

Parametr OpisControlName Nazwa obiektu sterującego oknem. Przykładowo,

ListBox_1. Łańcuch znaków lub zmienna tekstowa.Uwagi Kody błędów dla funkcji tego typu można znaleźć w rozdziale Załącznik

A.Zastosowanie Listy i listy rozwijalne.Przykład(y) Jeżeli wciśnięty zostanie przycisk zawierający zamieszczoną poniżej

instrukcję, usunięte zostaną wszystkie, zaznaczone w danym momencie elementy listy rozwijalnej:wcDeleteSelection("ListBox_1");

Funkcja ta zwraca komunikat tekstowy opisujący błąd.Kategoria obiekty sterujące WindowsSkładnia ErrorMessage=wcErrorMessage(ErrorNumber);

Parametr OpisErrorMessage Zmienna tekstowa.ErrorNumber Liczba zwracana przez obiekty sterujące okien.

Dowolna liczba lub zmienna całkowita.Uwagi Kody błędów dla funkcji tego typu można znaleźć w rozdziale Załącznik

A.Zastosowanie Pola tekstu, listy, listy rozwijalne, pola wyboru i pola wyboru

wykluczającego.Przykład(y) Jeśli podczas ładowania listy wystąpi błąd, opis błędu w formie

komunikatu tekstowego zostanie zapisany jako zmienna tekstowa ErrorDescription. W poniższym przykładzie wykorzystano połączenie animacyjne String Value Output do wyświetlenia komunikatu o błędzie, czyli wartości zmiennej ErrorDescription.Skrypt QuickScript związany z oknem On Show:ErrorNumber=wcLoadList("ListBox_1","c:\InTouch\recipe.txt");

ErrorDescription=wcErrorMessage(errornumber);

Funkcja ta może również zostać wykorzystana do wyświetlania komunikatów o błędach dla wszystkich funkcji związanych z obiektami sterującymi Windows:ErrorNumber=wcAddItem("ListBox_1","United States");

ErrorMsg=wcErrorMessage(ErrorNumber);

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 305

wcFindItem()Funkcja ta wyznacza indeks pierwszego elementu listy lub listy rozwijalnej, który odpowiada podanemu łańcuchowi znaków Message.

Kategoria obiekty sterujące WindowsSkładnia [ErrorNumber=]wcFindItem

("ControlName","MessageTag",DiscreteTag,Tagname);

Parametr OpisControlName Nazwa obiektu sterującego oknem. Przykładowo,

ListBox_1. Łańcuch znaków lub zmienna tekstowa.MessageTag Łańcuch znaków do celów porównawczych. Łańcuch

znaków lub zmienna tekstowa.DiscreteTag Określa sposób w jaki będą porównywane łańcuchy

znaków. Przyjmuje jedną z następujących wartości:0 = przy porównywaniu nie są rozróżniane litery duże i małe1 = litery duże i małe są rozróżniane przy porównywaniu

Zmienna Nazwa zmiennej typu całkowitego.Uwagi Kody błędów dla funkcji tego typu można znaleźć w rozdziale Załącznik

A.Zastosowanie Pola tekstu, listy, listy rozwijalne, pola wyboru i pola wyboru

wykluczającego.Przykład(y) Jeśli podczas ładowania listy wystąpi błąd, opis błędu w formie

komunikatu tekstowego zostanie zapisany jako zmienna tekstowa ErrorDescription. W poniższym przykładzie wykorzystano połączenie animacyjne String Value Output do wyświetlenia komunikatu o błędzie, czyli wartości zmiennej ErrorDescription.

Opis funkcji, pól i zmiennych systemowych

306 Rozdział 3

wcGetItem()Funkcja ta odczytuje łańcuch znaków związany z elementem pola listy (List box) lub listy rozwijalnej (Combo box) określonym przez parametr ItemIndex.

Kategoria obiekty sterujące WindowsSkładnia [ErrorNumber=]wcGetItem("ControlName",ItemIndex,

Zmienna);

Parametr OpisControlName Nazwa obiektu sterującego oknem. Przykładowo,

ListBox_1. Łańcuch znaków lub zmienna tekstowa.ItemIndex Numer oznaczający pozycję elementu na liście.

Dowolna liczba lub zmienna całkowita.Zmienna Nazwa zmiennej typu całkowitego lub

rzeczywistego. funkcja wcGetItem przypisuje do tej zmiennej wartość numeryczną, odpowiadającą elementowi.

Uwagi Kody błędów dla funkcji tego typu można znaleźć w rozdziale Załącznik A.

Zastosowanie Listy i listy rozwijalne.Przykład(y) Wciśnięcie przycisku z którym powiązane jest zamieszczone poniżej

wyrażenie powoduje przypisanie łańcucha znaków, odpowiadającego 10-u elementowi listy rozwijalnej zmiennej tekstowej ListSelection.wcGetItem("Combobox_1", 10, ListSelection);

Jeśli dziesiątym elementem listy jest "Vanilia", zmiennej ListSelection będzie odpowiadał łańcuch znaków "Vanilia".

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 307

wcGetItemData()Funkcja ta określa wartość całkowitą związaną z elementem pola listy (List box) lub listy rozwijalnej (Combo box) określonym przez parametr ItemIndex.

Kategoria obiekty sterujące WindowsSkładnia [ErrorNumber=]wcGetItemData("ControlName",ItemIndex,

Zmienna);

Parametr OpisControlName Nazwa obiektu sterującego oknem. Przykładowo,

ListBox_1. Łańcuch znaków lub zmienna tekstowa.ItemIndex Numer oznaczający pozycję elementu na liście.

Dowolna liczba lub zmienna całkowita.Zmienna Nazwa zmiennej typu całkowitego lub

rzeczywistego. funkcja wcGetItemData przypisuje do tej zmiennej wartość numeryczną, odpowiadającą elementowi.

Uwagi Kody błędów dla funkcji tego typu można znaleźć w rozdziale Załącznik A.

Zastosowanie Listy i listy rozwijalne.Przykład(y) Jeśli instrukcja zamieszczona poniżej zostanie np. zapisana w skrypcie

QuickScript związanym z przyciskiem (połączenie animacyjne Touch Pushbutton, Action), po naciśnięciu tego przycisku odczytuje ona wartość numeryczną związaną z piątym elementem pola listy ListBox_1 i przypisuje ją do zmiennej ItemValue:wcGetItemData("ListBox_1", 5, ItemValue);

Jeśli piątemu elementowi listy przypisana jest wartość całkowita 4500, zmiennej ItemValue zostanie przypisana wartość 4500.

Patrz również wcSetItemData()

Opis funkcji, pól i zmiennych systemowych

308 Rozdział 3

wcInsertItem()Funkcja ta wstawia do listy łańcuch znaków. ItemIndex jest numerem indeksu odpowiadającym pozycji na liście, gdzie będzie umieszczony łańcuch znaków. W przeciwieństwie do funkcji wcAddItem() funkcja wcInsertItem() nie sortuje listy, nawet jeśli pole listy lub lista rozwijalna zostały utworzone jako posortowane.

Kategoria obiekty sterujące WindowsSkładnia [ErrorNumber=]wcInsertItem("ControlName",ItemIndex,

"MessageTag");

Parametr OpisControlName Nazwa obiektu sterującego oknem. Przykładowo,

ListBox_1. Łańcuch znaków lub zmienna tekstowa.ItemIndex Numer oznaczający pozycję elementu na liście. Jeśli

ten parametr ma wartość -1, łańcuch znaków zostanie dodany na końcu listy. Dowolna liczba lub zmienna całkowita.

MessageTag Zawiera łańcuch znaków, który ma być wstawiony w miejscu określonym przez ItemIndex. Łańcuch znaków lub zmienna tekstowa.

Uwagi Kody błędów dla funkcji tego typu można znaleźć w rozdziale Załącznik A.

Zastosowanie Listy i listy rozwijalne.Przykład(y) Jeśli instrukcja zamieszczona poniżej zostanie np. umieszczona w skrypcie

QuickScript związanym z przyciskiem, naciśnięcie tego przycisku powoduje wstawienie nowego elementu o nazwie "Blueberry" do listy, na czwartym miejscu od góry:wcInsertItem("ListBox_1", 4, "Blueberry");

Patrz również wcAddItem()

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 309

wcLoadList()Funkcja ta zastępuje zawartość elementów listy lub listy rozwijalnej elementami wczytanymi z pliku FileName.

Kategoria obiekty sterujące WindowsSkładnia [ErrorNumber=]wcLoadList("ControlName","Filename");

Parametr OpisControlName Nazwa obiektu sterującego oknem. Przykładowo,

ListBox_1. Łańcuch znaków lub zmienna tekstowa.Filename Nazwa pliku z zawartością listy w formacie ASCII.

Jeśli nie zostanie tu podana pełna ścieżka dostępu do pliku, a tylko jego nazwa, funkcja będzie poszukiwać pliku w katalogu aplikacji. Łańcuch znaków lub zmienna tekstowa.

Uwagi Kody błędów dla funkcji tego typu można znaleźć w rozdziale Załącznik A.

Zastosowanie Listy i listy rozwijalne.Przykład(y) Instrukcja zamieszczona poniżej wczytuje poprawnie sformatowaną listę

(umieszczoną w pliku c:\InTouch.32\wclist.txt.) do listy rozwijalnej, w momencie otwarcia okna zawierającego tę listę (wykorzystywany jest o tego celu skrypt QuickScript związany z oknem On Show)REFOn Show :wcLoadList("Combobox_1", "c:\InTouch.32\wclist.txt");

Patrz również wcAddItem(), wcSaveList()

Opis funkcji, pól i zmiennych systemowych

310 Rozdział 3

wcLoadText()Funkcja ta zastępuje zawartość pola tekstowego zawartością pliku o nazwie FileName.

Kategoria obiekty sterujące WindowsSkładnia [ErrorNumber=]wcLoadText("ControlName", "Filename");

Parametr OpisControlName Nazwa obiektu sterującego oknem. Przykładowo,

ListBox_1. Łańcuch znaków lub zmienna tekstowa.Filename Nazwa pliku z zawartością listy w formacie ASCII.

Jeśli nie zostanie tu podana pełna ścieżka dostępu do pliku, a tylko jego nazwa, funkcja będzie poszukiwać pliku w katalogu aplikacji. Łańcuch znaków lub zmienna tekstowa.

Uwagi Funkcja wcLoadText() obsługuje pliki zawierające dane w formacie ASCII, np. utworzone za pomocą programu Microsoft Notatnik.

Kody błędów dla funkcji tego typu można znaleźć w rozdziale Załącznik A.Więcej informacji na temat zaawansowanych metod wyświetlania plików podano w opisie przeglądarki dokumentów, wchodzącej w skład pakietu Factory Suite's Productivity PackPAGEdocument viewer.

Zastosowanie Pola tekstu.Przykład(y) Instrukcja zamieszczona poniżej wczytuje zawartość pliku tekstowego

(c:\InTouch.32\readme.txt) do pola tekstowego w momencie po otwarciu okna zawierającego pole tekstowe (przy użyciu skryptu QuickScript związanego z oknem On Show):wcLoadText("Textbox_1", "c:\InTouch.32\readme.txt");

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 311

wcSaveList()Funkcja ta zastępuje zawartość pliku FileName elementami obiektu lista lub lista rozwijalna.

Kategoria obiekty sterujące WindowsSkładnia [ErrorNumber=]wcSaveList("ControlName","Filename");

Parametr OpisControlName Nazwa obiektu sterującego oknem. Przykładowo,

ListBox_1. Łańcuch znaków lub zmienna tekstowa.Filename Nazwa pliku z zawartością listy w formacie ASCII.

Jeśli plik nie istnieje, to zostaje utworzony. Tekst zapisany w pliku może zostać następnie załadowany do pola tekstu przy użyciu funkcji wcLoadList(). Łańcuch znaków lub zmienna tekstowa.

Uwagi Kody błędów dla funkcji tego typu można znaleźć w rozdziale Załącznik A.

Zastosowanie Listy i listy rozwijalne.Przykład(y) Zamieszczona poniżej instrukcja powoduje zapisanie elementów listy w

pliku (c:\InTouch.32\newlist.txt), w momencie naciśnięcia przycisku związanego ze skryptem QuickScript Touch Pushbutton Action:wcSaveList("ListBox_1", "c:\InTouch.32\newlist.txt");

Jeżeli pliki ASCII wykorzystywane do tworzenia listy lub listy rozwijalnej zostały utworzone przy pomocy innego programu, muszą być odpowiednio sformatowane, oraz zawierać wszystkie, wymagane dodatkowo informacje. Format:TypObiektu, LiczbaElementówElementListy, WartośćElementuElementListy, WartośćElementu : : : :ElementListy, WartośćElementuPrzykładowo: Zamieszczony poniżej plik, wczytywany do listy, zawiera trzy elementy, elementy nie mają przyporządkowanych wartości (więcej informacji na temat wartości danych elementów podano w opisie funkcji wcSetItemData()). Plik ten ma następujący format:COMBOBOX, 3Czekolada, 0Wanilia, 0Truskawki, 0Opis: COMBOBOX jest typem obiektu. ListCount jest równy 3, ponieważ lista zawiera następujące elementy: Chocolate, Vanilla i Strawberry. Chocolate jest umieszczona na liście jako pierwszy element lub index 1. Vanilla jako drugi, Strawberry zaś jako 3. Każdy z tych indeksów ma przypisaną wartość 0.

Patrz również wcLoadList(), wcSetItemData()

Opis funkcji, pól i zmiennych systemowych

312 Rozdział 3

wcSaveText()Funkcja ta zapisuje tekst z pola tekstu do pliku FileName. Jeśli plik nie istnieje, to zostaje utworzony. Jeśli istnieje, musi być to plik umożliwiający odczyt i zapis.

Kategoria obiekty sterujące WindowsSkładnia [ErrorNumber=]wcSaveText("ControlName","Filename");

Parametr OpisControlName Nazwa obiektu sterującego oknem. Przykładowo,

ListBox_1. Łańcuch znaków lub zmienna tekstowa.Filename Nazwa pliku z zawartością listy w formacie ASCII.

Jeśli nie zostanie tu podana pełna ścieżka dostępu do pliku, a tylko jego nazwa, funkcja zapisze plik w katalogu aplikacji. Jeśli plik nie istnieje, to zostaje utworzony. Tekst zapisany w pliku może zostać następnie załadowany do pola tekstu przy użyciu funkcji wcLoadList(). Łańcuch znaków lub zmienna tekstowa.

Uwagi Kody błędów dla funkcji tego typu można znaleźć w rozdziale Załącznik A.

Zastosowanie Pola tekstu.Przykład(y) Wciśnięcie przycisku z którym powiązany jest zamieszczony poniżej

skrypt QuickScript powoduje zapisanie informacji wprowadzonej w polu tekstowym do pliku (c:\InTouch.32\newtext.txt).wcSaveText("Textbox_1", "c:\InTouch.32\newtext.txt");

Funkcja wcSaveText()zapisuje pliki w formacie ASCII, tak, jak np. Notatnik systemu Windows.

Patrz również wcLoadList()

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 313

wcSetItemData()Funkcja ta przypisuje wartości Integer (Number) elementom pola listy (List box) lub listy rozwijalnej (Combo box) określonym przez parametr ItemIndex. Funkcja umożliwia przypisanie liczby do łańcucha znaków.

Kategoria obiekty sterujące WindowsSkładnia [ErrorNumber=]wcSetItemData("ControlName",ItemIndex,

Number);

Parametr OpisControlName Nazwa obiektu sterującego oknem. Przykładowo,

ListBox_1. Łańcuch znaków lub zmienna tekstowa.ItemIndex Wartość całkowita określająca kolejność

zapisywanych elementów. Dowolna liczba lub zmienna całkowita.

Number Liczba całkowita zawierająca wartość elementu. Dowolna liczba lub zmienna całkowita.

Uwagi Pełna lista zawierająca elementy może być utworzona za pomocą innego programu (np. Notatnika), a następnie wczytana poprzez wywołanie odpowiedniej funkcji. Pliki te musza być odpowiednio sformatowane, zgodnie z instrukcjami, podanymi przy opisie funkcji wcSaveList().

Kody błędów dla funkcji tego typu można znaleźć w rozdziale Załącznik A.

Przykład(y) Trzyskładnikowa receptura, zawierającą mąkę, cukier i sól. Dane: ilość mąki to 4500 gramów, cukru 1500 gramów a soli 325 gramów. Wartości te są przypisywane poszczególnym elementom w polu listy przy użyciu skryptu QuickScript typu DataChange wykonywanego po wybraniu receptury o określonej nazwie:wcSetItemData("ListBox_1", 1, 4500); {pierwszy element listy (maka)=4500}

wcSetItemData("ListBox_1", 2, 1500); {drugi element listy (cukier)=1500}

wcSetItemData("ListBox_1", 3, 325); {trzeci element listy (sól)=325}

Funkcja wcGetItemData() zwraca wartość elementu o podanym indeksie. Ta wartość numeryczna przypisywana jest do parametru Tagname. Parametr ten może być zmienną typu I/O Integer, zapisującą swoją wartość bezpośrednio do urządzenia.

Patrz również wcLoadList(), wcSaveList(), wcGetItemData()

Opis funkcji, pól i zmiennych systemowych

314 Rozdział 3

WWControl()Pozwala na Przywrócenie,. Zminimalizowanie, Maksymalizowanie lub Zamknięcie aplikacji z poziomu pakietu InTouch.

Kategoria różneSkładnia WWControl("AppTitle","ControlType");

Parametr OpisAppTitle Nazwa sterowanej aplikacji. Nazwę danej aplikacji

można uzyskać stosując funkcję InfoAppTitle(). Łańcuch znaków lub zmienna tekstowa.

ControlType Określa w jaki sposób ma zachowywać się aplikacja po uruchomieniu (działanie jest identyczne z wybraniem odpowiedniego polecenia z menu do sterowania oknem). Łańcuch znaków lub zmienna tekstowa.Typ Opis"Restore" Uaktywnienie i wyświetlenie okna

danej aplikacji w postaci zmaksymalizowanej .

"Minimize" Uaktywnienie okna danej aplikacji i zmniejszenie go do ikony.

"Maximize" Uaktywnienie i wyświetlenie okna danej aplikacji w postaci zmaksymalizowanej .

"Close" Zamknięcie danej aplikacji.Przykład(y) WWControl("Calculator","Restore");

WWControl(InfoAppTitle("View"), "Close");

Patrz również InFoAppTitle(), ActivateApp(), StartApp()

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 315

WWExecute()Funkcja ta wysyła polecenie (DDE Execute) do podanej aplikacji i tematu (Topic).

Kategoria WWDDESkładnia [Status=]WWExecute("Application","Topic","Command");

Parametr OpisApplication Nazwa aplikacji, do której jest wysyłane polecenie.

Łańcuch znaków lub zmienna tekstowa.Topic Nazwa tematu w obrębie aplikacji, do której jest

wysyłane polecenie. Łańcuch znaków lub zmienna tekstowa.

Command Polecenie, które ma zostać wysłane. Łańcuch znaków lub zmienna tekstowa.

Uwagi Łańcuch znaków Command zostanie przesłany do określonej aplikacji i tematu.

Przykład(y) Poniższa instrukcja spowoduje wykonanie makroinstrukcji w Excelu:Macro="Macro1!TestMacro";

Command="[Run(" + StringChar(34) + Macro + StringChar(34) + ",0)]";

WWExecute("excel","system",Command);

Wykonanie instrukcji WWExecute("excel","system",Command); spowoduje wysłanie do Excela następującego polecenia (i uruchomienie makra TestMacro):[Run("Macro1!TestMacro")]

Poniższa instrukcja skryptu QuickScript spowoduje wykonanie makroinstrukcji w bazie danych Access:WWExecute("MSAccess","system","MyMacro");

Funkcja WWExecute zwraca wartość 1, jeśli aplikacja jest uruchomiona, podany temat (Topic) istnieje i polecenie zostało pomyślnie przesłane. Funkcja zwraca wartość 0, jeśli aplikacja jest zajęta oraz -1 lub jeśli wystąpi błąd. Tak więc można monitorować status polecenia: Funkcja WWExecute zwraca wartość 1, jeśli aplikacja jest uruchomiona, podany temat (Topic) istnieje i polecenie zostało pomyślnie przesłane. Funkcja zwraca wartość 0, jeśli aplikacja jest zajęta oraz -1 lub jeśli wystąpi błąd. Tak więc można monitorować status polecenia:Status=WWExecute("excel","system",Command);

Status jest zmienną typu Integer, o wartościach 1, -1 lub 0.

Opis funkcji, pól i zmiennych systemowych

316 Rozdział 3

WWPoke()Funkcja ta wysyła wartość (za pomocą protokołu DDE) do zadanej aplikacji, tematu i elementu.

Kategoria WWDDESkładnia [Status=]WWPoke("Application","Topic","Item",

"TextValue");

Parametr OpisApplication Nazwa aplikacji, do której wysyłany jest łańcuch

znaków. Łańcuch znaków lub zmienna tekstowa.Topic Nazwa tematu w obrębie aplikacji, do której jest

wysyłane polecenie. Łańcuch znaków lub zmienna tekstowa.

Item Nazwa pozycji w obrębie tematu. Łańcuch znaków lub zmienna tekstowa.

TextValue Zmienna tekstowa lub łańcuch znaków. Jeśli zachodzi potrzeba przesłania liczby, można przekształcić ją na łańcuch znaków używając jednej z funkcji: Text(), StringFromIntg() lub StringFromReal(). Łańcuch znaków lub zmienna tekstowa.

Uwagi Zamieszczona poniżej instrukcja powoduje wysłanie wartości TextValue do określonej aplikacji, tematu i elementu.

Przykład(y) Poniższa instrukcja przekształca wartość numeryczną na łańcuch znaków i przesyła ją do komórki arkusza kalkulacyjnego Excel:String=Text(Value,"0");

WWPoke("excel","[Book1.xls]sheet1","r1c1",String);

Więcej informacji na temat współpracy arkusza kalkulacyjnego Excel 5.0 z programem InTouch (przy pomocy DDE) podano w podręczniku InTouch - Podręcznik Użytkownika.Wynik działania funkcji WWPoke() przy przesyłaniu danych w obrębie tej samej aplikacji InTouch jest nieokreślony. Nie jest gwarantowane pomyślne wykonanie polecenia WWPoke(), a najbardziej prawdopodobne jest wystąpienie błędu przekroczenia dopuszczalnego okresu oczekiwania.Funkcja WWPoke() zwraca wartość 1, jeśli aplikacja jest uruchomiona, podany temat (Topic) istnieje i łańcuch znaków został pomyślnie przesłany. Funkcja zwraca wartość 0, jeśli aplikacja jest zajęta oraz -1 lub jeśli wystąpi błąd. Tak więc można monitorować status polecenia:Status=WWPoke("excel","[Book1.xls]sheet1","r1c1",String);

Status jest zmienną typu Integer, o wartościach 1, -1 lub 0.Patrz również Text(), StringFromIntg(), StringFromReal()

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 317

WWRequest()Funkcja ta wysyła jedno polecenie odczytu wartości (za pomocą protokołu DDE) z określonej aplikacji, tematu i elementu.

Kategoria WWDDESkładnia WWRequest(Application,Topic,Item,ValueMsg_Tag);

Parametr OpisApplication Nazwa aplikacji, z której ma być przesłany łańcuch

znaków. Łańcuch znaków lub zmienna tekstowa.Topic Nazwa tematu w obrębie aplikacji, z której ma być

przesłany łańcuch znaków. Łańcuch znaków lub zmienna tekstowa.

Item Pozycja w obrębie tematu z której odczytywane będą dane. Łańcuch znaków lub zmienna tekstowa.

ValueMsg_Tag Zmienna tekstowa ujęta w cudzysłowy, zawierająca żądane dane czytane z określonej aplikacji (Application), tematu (Topic) i pozycji (Item). Łańcuch znaków lub zmienna tekstowa.

Uwagi Zamieszczona poniżej instrukcja przypisuje zmiennej ValueMsg_Tag wartość DDE odczytaną z określonego elementu, tematu i aplikacji. Wartość będzie zwrócona jako łańcuch znaków do zmiennej tekstowej. Jeżeli otrzymana wartość jest wartością numeryczną, należy ją przekonwertować za pomocą funkcji StringToIntg() lub StringToReal().

Przykład(y) Poniższa instrukcja wysyła żądanie przesłania zawartości komórki Excela i przekształca przesłany łańcuch znaków na wartość liczbową:WWRequest("excel","[Book1.xls]sheet1","r1c1",Result);

Value=StringToReal(Result);

Funkcja WWRequest() zwraca wartość 1, jeśli aplikacja jest uruchomiona, podany temat istnieje i łańcuch znaków został pomyślnie przesłany. Funkcja zwraca wartość 0, jeśli aplikacja jest zajęta oraz –1 lub jeśli wystąpi błąd. Tak więc można monitorować status polecenia:Status=WWRequest("excel","[Book1.xls]sheet1","r1c1",Result);

Status jest zmienną typu Integer, o wartościach 1, -1 lub 0.Patrz również StringToIntg(), StringToReal()

Opis funkcji, pól i zmiennych systemowych

318 Rozdział 3

Opis funkcji, pól i zmiennych systemowych

Automatyzacja OLE w programie InTouch 319

R O Z D Z I A Ł 4

Automatyzacja OLE w programie InTouch

Technika Object Linking and Embedding (OLE) obsługuje szereg metod wymiany i przetwarzania informacji pomiędzy stacją klienta a serwerem. InTouch może pełnić rolę klienta dla wielu serwerów. Aplikacja InTouch może informować serwer o zmianie wartości zmiennej oraz umożliwić serwerowi wykonywanie wszystkich zaprogramowanych czynności. Funkcjonalność ta może zostać wykorzystana do rozszerzenia możliwości InTouch, ponad te już wbudowane

Rozdział ten zawiera zwięzły opis architektury automatyzacji techniki OLE. Opisano również procedury korzystania z automatyzacji OLE przez rozszerzenia InTouch. Ponieważ InTrack jest serwerem automatyzacji OLE , jest użyty w wielu przykładach.

Elementy OLE AutomationW bardzo uproszczonej formie, OLE umożliwia znormalizowaną komunikację pomiędzy klientem a serwerem.

Automatyka obiektowa – element OLE – zapewnia możliwości programowania zorientowanego obiektowo w środowisku klient/serwer. Serwer umożliwia wykonywanie określonych obliczeń poprzez wykorzystanie klas obiektów. Stacja kliencka wykorzystuje to, tworząc obiekty i wykorzystując ich elementy. OLE zapewnia komunikację pomiędzy klientem a serwerem.

Aby zrozumieć obiekty automatyzacji, należy zapoznać się z podstawowymi pojęciami programowania zorientowanego obiektowo.

• Obiekty są identyfikowalnymi i unikalnymi elementami, które mogą być tworzone w oparciu o klasę obiektu.

• Klasy definiują powiązany z obiektem zestaw właściwości (danych) i metod (funkcji). Wszystkie obiekty tej samej klasy mają ten sam zestaw właściwości i metod, jednakże każdy obiekt może mieć różne wartości właściwości.

Opis funkcji, pól i zmiennych systemowych

320 Rozdział 4

Obsługa OLE Automation w programie InTouchInTouch umożliwia łatwy dostęp do obiektów automatyzacji InTrack przy użyciu trzech podstawowych elementów:

• Ośmiu dodatkowych wbudowanych funkcji, które zostały dodane do InTouch.

• Operatora wskazującego początek wyrażenia OLE Automation

• Przeglądarki OLE zawierającej szablony i szczegółowe informacje dla wszystkich klas obiektów automatyzacji InTrack. Dostęp do przeglądarki OLE jest możliwy po naciśnięciu przycisku InTrack OLE, znajdującego się w prawym, dolnym rogu okna dialogowego edytora skryptów.

Format wyrażeńWszystkie odwołania do obiektów automatyzacji w programie InTouch rozpoczynają się od znaku procent (%), po którym podawana jest nazwa odwołania do obiektu. Nazwa musi rozpoczynać się znaku alfabetu, może składać się ze znaków liter, wyrażeń numerycznych i podkreśleń. Nazwy są globalne, rozróżniana jest wielkość liter. Przykładami różnych nazw obiektów są:

• %ObjectName (lub %objectName lub %objectname)

• %Lot5

• %lot_5

• %aMachine

• %A_Machine

• %Sublot

Nie należy mylić nazw obiektów ze zmiennymi InTouch. Możliwe jest występowanie obiektu automatyzacji OLE i zmiennej InTouch z tą samą nazwą (jedyną różnicą jest znak procent).

Odwołania do obiektówNazwy poprzedzone znakiem procent odnoszą się do odwołań do obiektów, ponieważ są one wskaźnikami, wskazującymi na obiekty automatyzacji. Jeżeli zostanie zastosowana podana poniżej instrukcja skryptu, dwie różne nazwy mogą odnosić się do tego samego obiektu:%Object1 = %Object2;

Po wykonaniu tej instrukcji, oba odwołania wskazują ten sam obiekt automatyzacji.

OLE_CreateObject OLE_IsObjectValidOLE_GetLastObjectError OLE_ReleaseObjectOLE_GetLastObjectErrorMessage OLE_ResetObjectErrorOLE_IncrementOnObjectError OLE_ShowMessageOnObjectError

Opis funkcji, pól i zmiennych systemowych

Automatyzacja OLE w programie InTouch 321

Nazwy odwołań do obiektów są automatycznie definiowane przy pierwszym użyciu w czasie pracy. Są one globalne – zainicjowane w jednym skrypcie mogą zostać wykorzystane w innym skrypcie.

Jak w większości języków programowania zorientowanych obiektowo, znak kropki wykorzystywany jest przy odnoszeniu się do właściwości i metod obiektu. Podana poniżej przykładowa instrukcja pokazuje przykład wykorzystania znak kropki do przypisania wartości właściwości obiektu na wartość 5.%Object.Property = 5;

Obiekty zagnieżdżone (znak kropki)Jeżeli obiekty są elementami innych obiektów, znaku kropki można użyć wielokrotnie. Ustawienia właściwości na wartość 6 dla obiektu zagnieżdżonego można dokonać przy pomocy instrukcji podanej poniżej:%Object.Property_For_Nested_Object.Property = 6;

Poniżej podano określone zasady wykorzystywania znaku kropki:

1. Nie są dozwolone spacje pomiędzy określeniem odwołania do obiektu a odwołaniem do żadnego innego elementu.

• Nie są dozwolone spacje pomiędzy znakiem procent (%) a początkiem nazwy odwołania do obiektu..

• Nie są dozwolone spacje pomiędzy nazwą odwołania do obiektu, znakiem kropki i nazwą elementu klasy.

• Nie są dozwolone spacje pomiędzy nazwą właściwości obiektu zagnieżdżonego, znakiem kropki i nazwą właściwości następnego obiektu zagnieżdżonego.

2. Ilość znaków całego określenia nie może być większa niż 98, licząc od znaku procent (łącznie ze znakiem) do ostatniego znaku wywołania elementu.

Przykładowo, długość określenia %Object.Property jest równa 16 znakom, zaś długość określenia %Object.Property_For_Nested_Object.Property jest równa 44 znakom.

Konwersja typów danych przesyłanych z programu InTouch do OLENie wszystkie typy danych InTouch są akceptowane przez rozszerzenia OLE. Poniżej przedstawiono akceptowane typy danych i konwersji danych. Należy pamiętać, że konwersja następuje w czasie pracy, nie jest przeprowadzana w programie WindowMaker. Dlatego też, konwersja danych może zaowocować trudnymi do przewidzenia wynikami, a powstałe błędy nie są zgłaszane.

Integer Wartość 32 bitowa ze znakiem. Możliwa jest konwersja na następujące typy danych:Real Wartość jest

zmiennoprzecinkowa..

Opis funkcji, pól i zmiennych systemowych

322 Rozdział 4

Message Standardowa konwersja na sekwencję cyfr dziesiętnych – możliwe jest poprzedzenie znakiem minus.

Discrete Konwersja na TRUE (1) jeśli wartość nie jest zerem, w przeciwnym wypadku FALSE (0).

Real Dokładność 64 bitów. InTouch dokonuje obliczeń z dokładnością 64 bitów, ale wyniki są zapamiętywane w zmiennych 32 bitowych. Interfejs obiektu automatyzacji pracuje z wyższą rozdzielczością. Możliwa jest konwersja na następujące typy danych:Integer Wartość rzeczywista jest

ograniczana.Message Standardowa konwersja na

sekwencję cyfr dziesiętnych z przecinkami – możliwe jest poprzedzenie znakiem minus.

Discrete Konwersja na TRUE (1) jeśli wartość nie jest zerem, w przeciwnym wypadku FALSE (0).

Message Łańcuch znaków o długości ograniczonej do 131 znaków (ograniczenie InTouch). Dla tego typu danych konwersja jest bardziej złożona i jest bardzo prawdopodobnym źródłem błędów w czasie pracy.Integer Odpowiada funkcji

StringToIntg, która jest wbudowana w programie InTouch. Jeżeli łańcuch znaków rozpoczyna się od liczby (pomijając spacje, ale z uwzględnieniem znaku minus), liczba jest przekształcana. Przekształcenie łańcucha rozpoczynającego się od znaku innego niż liczba da w wyniku wartość zerową.

Opis funkcji, pól i zmiennych systemowych

Automatyzacja OLE w programie InTouch 323

Real Odpowiada funkcji StringToReal, która jest wbudowana w programie InTouch. Jeżeli łańcuch znaków rozpoczyna się od liczby (pomijając spacje, ale z uwzględnieniem znaku minus), liczba jest przekształcana. Przekształcenie łańcucha rozpoczynającego się od znaku innego niż liczba da w wyniku wartość zerową.

Discrete Zamienia na wartość całkowitą, a następnie stosuje reguły do zamiany wartości całkowitej na dyskretną.

Na odwołanie do obiektu

Ten typ konwersji wymagany jest jedynie w paru specyficznych przypadkach, należy unikać tego typu konwersji. Złe użycie tej konwersji może spowodować zamknięcie programu WindowViewer przez błąd krytyczny. Konwersja ta zgłosi błąd, jeżeli dana wejściowa będzie inna niż łańcuch wygenerowany przez konwersję odwołania do obiektu.

Discrete Możliwa jest konwersja na następujące typy danych:Integer Jeden (One) jeśli TRUE, w

przeciwnym wypadku zero.Real Jeden (One) jeśli TRUE, w

przeciwnym wypadku zero.Message Zero (0) jeśli FALSE i –1 jeśli

TRUE.Na odwołanie do obiektu

Ogólnie, odwołania do obiektów nie powinny być wykorzystywane w kontekście, gdzie może wystąpić konwersja danych. Możliwa jest konwersja na następujące typy danych:Message Łańcuch tekstowy w

specjalnym formacie, zawierający reprezentację odwołania do obiektu w postaci heksadecymalnej.

Opis funkcji, pól i zmiennych systemowych

324 Rozdział 4

OgraniczeniaKorzystanie z rozszerzeń obiektów automatyzacji InTouch jest ograniczone przez następujące warunki:

• Rozszerzenia są dostępne tylko wewnątrz skryptów InTouch.

• Rozszerzenia stosują “późne łączenie”---większość błędów nie może zostać zidentyfikowana, do momentu zakończenia wykonywania skryptu.

Tworzenie obiektu: OLE_CreateObjectObiekty automatyzacji tworzone są przez wbudowaną w programie InTouch funkcję o nazwie OLE_CreateObject Składnia tej funkcji jest następująca:

OLE_CreateObject(%Object, “className”);

gdzie:

Funkcja ta nie zwraca wartości.

Przykład

Przykładowo, aby utworzyć obiekt InTrack klasy Sublot, instrukcja może mieć następującą postać:

OLE_CreateObject(%Sublot, “InTrack.Sublot”);

Błąd w pisowni w pozycji “className” jest częstym błędem, który nie będzie zidentyfikowany w programie WindowMaker. Błąd ten nie zostanie zidentyfikowany i zgłoszony do momentu wykonania funkcji w programie WindowViewer. Aby uniknąć tego błędu, należy skorzystać z szablonu dostępnego w przeglądarce OLE InTrack.

Kiedy obiekt jest tworzony po raz pierwszy, jego właściwości są automatycznie ustawiane przez serwer na odpowiednie wartości domyślne.

Uwaga: Nazwa odwołania do obiektu nie wymaga inicjalizacji przy odwołaniu do OLE_CreateObject. W poprzednim przykładzie instrukcja przypisania została wykorzystana do połączenia odwołania do obiektu z obiektem.

OLE_CreateObject Funkcja tworząca obiekt automatyzacji%Object Nazwa wykorzystywana przy odwoływaniu się do

obiektu automatyzacji.className Nazwa klasy dostarczona przez serwer OLE..

Opis funkcji, pól i zmiennych systemowych

Automatyzacja OLE w programie InTouch 325

Zarządzanie obiektem: OLE_ReleaseObjectObiekt jest aktywny tak długo, jak długo przynajmniej jeden obiekt odwołuje się do niego. Niemniej jednak, dobrą praktyką jest zwolnić nie używany obiekt, aby oszczędzić zasoby systemowe. W celu zwolnienia obiektu:

1. Utworzyć nowy obiekt z tą samą nazwą odwołania do obiektu.

Kiedy tworzony jest nowy obiekt automatyzacji z tą samą nazwą jak istniejące odwołanie do obiektu, pierwotny obiekt automatyzacji jest zwalniany, a nowy obiekt jest związany z nazwą początkową. Przykładowo:OLE_CreateObject(%Object, “InTrack.Sublot”);

OLE_CreateObject(%Object, “InTrack.DateTime”);

Pierwsza instrukcja tworzy obiekt klasy Sublot, wywoływany przez %Object. Druga instrukcja zwalnia obiekt klasy Sublot, a następnie tworzy obiekt klasy DateTime, przypisując go do %Object.

2. Wykorzystać wbudowaną funkcję systemową OLE_ReleaseObject. Składnia tej funkcji jest następująca:OLE_ReleaseObject(%objectName);

gdzie:

Funkcja ta nie zwraca wartości i zawsze jest wykonywana poprawnie.

3. Przypisać odwołanie do drugiego obiektu.

Składnia przypisania obiektu automatyzacji do innego obiektu automatyzacji jest następująca:

%object1 = %object2;

gdzie:

W przykładzie tym, dowolny obiekt stowarzyszony z %object1 będzie zwolniony.

%objectName Nazwa odwołania do obiektu automatyzacji

%object1 Jest odwołaniem do obiektu wskazującym na ten sam obiekt, co %object2. Obiekt automatyzacji powiązany poprzednio z %object1 zostanie zwolniony.

%object2 Obiekt automatyzacji, który będzie wywoływany z nazwą %object1. Obiekt ten musi być tego samego typu.

Opis funkcji, pól i zmiennych systemowych

326 Rozdział 4

Sprawdzanie aktywności obiektu: OLE_IsObjectValid

Kiedy związek pomiędzy odwołaniem do obiektu a obiektem automatyzacji OLE zostanie przerwane przez funkcję OLE_ReleaseObject, odwołanie staje się „nieaktywne”. Użycie nieaktywnego odwołania w dowolnym wyrażeniu obiektu spowoduje błąd w czasie pracy.

Wbudowana funkcja systemowa InTouch o nazwie OLE_IsObjectValid pozwala na kontrolę poprawności odwołania do obiektu. Składnia tej funkcji jest następująca:OLE_IsObjectValid(%objectName);

gdzie:

Funkcja ta zwraca wartość dyskretną (typu Boolean) wskazującą, czy %objectName jest aktualnie powiązany z aktywnym obiektem automatyzacji.

Odczytywanie wartości właściwościWłaściwość jest atrybutem o określonej nazwie, definiującym charakterystyki obiektu lub sposób zachowania. Znak kropki oddziela odwołanie do obiektu od nazwy właściwości. Jeśli dozwolone jest użycie zmiennej w skrypcie InTouch, wartość właściwości obiektu automatyzacji może zostać zwrócona przez użycie instrukcji o następującej składni:%Object.Property

gdzie:

Jeśli właściwość obiektu jest obiektem sama w sobie, znak kropki może być użyty wielokrotnie, jak w poniższym przykładzie:%Object.Property1.Property2

gdzie:

%objectName Nazwa odwołania do obiektu automatyzacji, który ma

%Object Odwołanie do obiektu automatyzacji.Właściwość Atrybut obiektu.

%Object Odwołanie do obiektu automatyzacji.Property1 Właściwość odwołania do obiektu automatyzacji

%Object. Właściwość może być obiektem obsadzonym lub odwołaniem do innego obiektu. InTouch i OLE automatycznie rozpoznają i obsługują oba przypadki.

Property2 Właściwość zagnieżdżonego obiektu, z którego będzie odczytana wartość.

Opis funkcji, pól i zmiennych systemowych

Automatyzacja OLE w programie InTouch 327

Wykorzystanie wielu znaków kropki przekształca tą instrukcję w wiele operacji „odczytywania właściwości”. W tym przykładzie, wykonana jest pojedyncza operacja odczytania dla %Object.Property1, która, zgodnie ze standardami automatyzacji OLE, zwróci odwołanie do obiektu zagnieżdżonego. Zwrócone odwołanie jest wykorzystane do wykonania następnej pojedynczej operacji odczytania dla Property2. To samo można by wykonać za pomocą dwóch instrukcji skryptu InTouch:%tempObject = %Object.Property1;

%tempObject.Property2;

Kolejność czynności jest ważna z następujących powodów:

1. Błędy związane z odczytem wartości właściwości mogą wystąpić dla każdej zagnieżdżonej właściwości.

2. Wiele operatorów kropki może być użyte w wielu kontekstach w celu uproszczenia kodowania takich operacji jak odczytywanie właściwości, ustawianie właściwości i wywoływanie metod.

Przykład 1

Celem jest zwiększenie wartości zmiennej, jeżeli jest to pierwszy dzień miesiąca, pomiędzy godziną 1 a 2 w nocy. Ten fragment kodu ilustruje kilka koncepcji:

OLE_CreateObject(%DateTime, "InTrack.DateTime");

%DateTime.SetLocalTime();

IF (%DateTime.Day == 1) AND (%DateTime.Hour > 1) AND (%DateTime.Hour < 2)

THENTag = Tag + 1;

ENDIF;

OLE_ReleaseObject(%DateTime);

Przykład 2

Poniższy przykład ilustruje wykorzystanie wielu znaków kropki. Celem tego przykładu jest wczytanie do zmiennych InTouch informacji o zasobach komputera, a następnie wyświetlenie tej informacji operatorowi. Przykład ten jest bardzo wymyślny, ale ilustruje odczyt właściwości w różnych kontekstach wyrażeń InTouch.

Aby uprościć przykład, założono, że obiekt %Machine został stworzony jako instancja InTrack.Machine, a odpowiednia informacja została załadowana z bazy danych InTrack (mechanizmy te są opisane w późniejszych sekcjach). NumerUnitsTag = %Machine.Capacity.Quantity;

TypicalWeightTag = %Machine.Capacity.Quantity * 40.6;

ContrivedLoadingTag = Log(%Machine.Capacity.Quantity) + 1;

UnitsNameTag = %Machine.Capacity.Units;

Opis funkcji, pól i zmiennych systemowych

328 Rozdział 4

Ustawianie właściwościWartość wejściowej lub wyjściowej właściwości obiektu może zostać ustawiona przy użyciu trzech metod:

• Używając instrukcji przypisania (co zostało opisane w tej sekcji),

• Przekazać referencję właściwości jako parametr wyjściowy metody,

• Wywołując metodę aby jednorazowo przypisać jedną lub wiele właściwości obiektu (nowe wartości są przekazywane jako parametry). Te właściwości zależą od klasy. Więcej informacji na ten temat znajduje się w dalszej części tego rozdziału.

Uwaga: Odwołania do właściwości obiektów automatyzacji nie mogą być przekazywane jako parametry wyjściowe do funkcji DLL, które są wywoływane z poziomu skryptów InTouch. Wartość właściwości obiektu nie może zostać zmieniona przez funkcję DLL.

Podstawowa składnia instrukcji przypisania właściwości obiektu jest następująca: %Object.Property = Value;

gdzie:

Tak jak w przypadku odczytu właściwości obiektu, jeśli właściwość obiektu sama w sobie jest obiektem, znak kropki może być użyty wielokrotnie.%Object.Property1.Property2 = Value;

gdzie:

Ta jedna instrukcja InTouch wykorzystująca wiele znaków kropki odpowiada wyrażeniu:%tempObject = %Object.Property1;

%tempObject.Property2 = Value;

Przykład

W pierwszej linijce tego przykładu tworzony jest obiekt automatyzacji klasy Amount o nazwie %PrimaryAmt. W drugiej i trzeciej linijce skryptu właściwości obiektu automatyzacji %PrimaryAmt zostają ustawione na wartości: Quantity na wartość 100, zaś Units – na wartość „each”.OLE_CreateObject(%PrimaryAmt, “InTrack.Amount”);

%PrimaryAmt.Quantity = 100;

%PrimaryAmt.Units = “each”;

%Object Odwołanie do obiektu automatyzacji.Właściwość Atrybut obiektu.Wartość Wartość, która ma być przypisana do atrybutu obiektu.

%Object Odwołanie do obiektu automatyzacji.Property1 Właściwość %Object która jest typem obiektu.Property2 Właściwość obiektu zagnieżdżonego, którego wartość

ma zostać ustawiona.

Opis funkcji, pól i zmiennych systemowych

Automatyzacja OLE w programie InTouch 329

Wywoływanie metodyWywołanie metody elementu obiektu automatyzacji jest typowym sposobem, w jaki stacja klientowska „prosi” serwer o wykonanie zadania przeznaczonego dla stacji. Poniżej podano składnię stosowaną do wywołania metody w obiekcie automatyzacji.

resultValue = %Object.Method(Parameter1, Parameter2, ...);

%Object.Method(Parameter1, Parameter2, ...);

gdzie:

OgraniczeniaPrzy korzystaniu z wywoływania metody należy uwzględnić następujące ograniczenia:

• Metody mogą być wywoływane jako procedury (bez zwracania wartości), Jeśli metoda zwraca wartość, jest ona odrzucana.

• Jeśli zwrócona wartość będzie wykorzystywana, musi zostać przypisana jako niezmodyfikowana, Wywołanie metody nie może być warunkiem w wyrażeniu,

• Wykonanie skryptu jest zablokowane do momentu zakończenia przetwarzania metody, chyba, że metoda wykonuje transakcje wymagające współpracy z użytkownikiem, przeprowadzanej przy pomocy pól dialogowych

• Należy upewnić się, że przekazywana jest właściwa ilość parametrów, Opcjonalne parametry OLE nie są obsługiwane.

Typy parametrówTypy danych, które są przekazywane z InTouch do metody automatyzacji, są obwarowane pewnymi ograniczeniami.

resultValue Wartość danej zwrócona przez metodę,%Object Odwołanie do obiektu automatyzacji.Method Działanie realizowane przez obiekt automatyzacji,Parameters Informacje, które będą przekazane do metody lub

zwrócone z metody. Ilość parametrów definiowana jest przez metodę w czasie wywołania. Parametry przeznaczone są wyłącznie do zapisu, lub są typu Input/Output.

Typ danych Może być przedstawiony jakoInteger Stała, wyrażenie, zmienna tylko do odczytu, zmienna do

odczytu/zapisu, właściwość automatyzacji OLE do odczytu/zapisu.

Real Stała, wyrażenie, zmienna tylko do odczytu, zmienna do odczytu/zapisu, właściwość automatyzacji OLE do odczytu/zapisu.

Opis funkcji, pól i zmiennych systemowych

330 Rozdział 4

Należy pamiętać o tym, że niektóre metody są polimorficzne i mogą pobrać kilka różnych typów danych dla tego samego parametru. InTouch obsługuje to udogodnienie dla tylko dla parametrów wejściowych.

Parametry wyjścioweParametry metody, będące parametrami typu Input, a także parametry typu Input/Output nie są odróżniane od siebie. Jeżeli parametr może zostać uaktualniony, zapisywana jest do niego wartość.

Parametr może być uaktualniony jeśli:

• Parametrem jest nazwa zmiennej programu InTouch która może być odczytywana/zapisywana,

• Parametrem jest nazwa odwołania do obiektu,

• Parametr określa właściwość obiektu.

W poniższym przykładzie instrukcji pierwsze trzy parametry zostaną uaktualnione, ponieważ każdy spełnia jeden z warunków podanych powyżej. Pozostałe parametry nie zostaną uaktualnione.%Obj1.Method(tag1, %obj2, %obj3.property1.property2, tag1

+ 3, %obj4.property + 0);

Wartości zwracaneAby przechwycić zwróconą wartość metody, lewa strona instrukcji przypisania musi być:

• nazwą zmiennej programu InTouch która może być odczytywana/zapisywana,

• nazwą odwołania do obiektu,

• określeniem właściwości obiektu.

Przykład 1

W poniższym przykładzie założono, że utworzony jest obiekt automatyzacji klasy SerialNumbers, o nazwie %SerialNumbers. Instrukcja podana poniżej spowoduje dodanie numeru seryjnego “1234” do numerów seryjnych w zbiorze obiektu %SerialNumbers. returnCode = %SerialNumbers.Add(“1234”);

Message Stała, wyrażenie, zmienna tylko do odczytu, zmienna do odczytu/zapisu, właściwość automatyzacji OLE do odczytu/zapisu.

Discrete Stała, wyrażenie, zmienna tylko do odczytu, zmienna do odczytu/zapisu, właściwość automatyzacji OLE do odczytu/zapisu.

Obiekt Nazwa odwołania do obiektu, właściwość automatyzacji OLE do odczytu/zapisu

Typ danych Może być przedstawiony jako

Opis funkcji, pól i zmiennych systemowych

Automatyzacja OLE w programie InTouch 331

Przykład 2

W poniższym przykładzie założono, że utworzony jest obiekt automatyzacji klasy Sublot, o nazwie %Sublot_Object. Należy skorzystać z metody Sublot Ship, zawierającej dwa parametry %PrimaryAmt i %SecondaryAmt, będące obiektami automatyzacji:ReturnCode = %Sublot_Object.Ship (%PrimaryAmt,

%SecondaryAmt, “customerName”) ;

gdzie:

Przykład

Należy wysłać do klienta (Wonderware) 100 podręczników (wielkość pierwszoplanowa), z których każdy waży 2 funty (wielkość drugoplanowa). Przed wywołaniem metody Ship, należy utworzyć obiekty automatyzacji, będące parametrami o nazwach %PrimaryAmt and %SecondaryAmt, a następnie ustawić ich właściwości. Kolejność kroków podano poniżej.

1. 1. Utworzyć obiekt ilościowy reprezentujący wielkość pierwszoplanową i ustawić jego właściwości:OLE_CreateObject(%PrimaryAmt, “InTrack.Amount”);%PrimaryAmt.Quantity = 100;%PrimaryAmt.Units = “each”;

2. 2. Utworzyć obiekt ilościowy reprezentujący wielkość drugoplanową i ustawić jego właściwości:OLE_CreateObject(%SecondaryAmt, “InTrack.Amount”);%SecondaryAmt.Quantity = 2;%SecondaryAmt.Units = “pounds”;

3. 3. Wywołać metodę Ship dla %Sublot_Object używając polecenia o następującej składni:returnCode = %Sublot_Object.Ship(%PrimaryAmt,

%SecondaryAmt,“Wonderware”);

%PrimaryAmt Obiekt ilościowy, identyfikujący wielkość pierwszoplanową, która ma zostać wysłana.

%SecondaryAmt Obiekt ilościowy, identyfikujący wielkość drugoplanową do wysłania.

customerName Nazwa klienta, dla którego przeznaczona jest przesyłka.

Opis funkcji, pól i zmiennych systemowych

332 Rozdział 4

Obsługa błędów w programie InTouch.Obsługa błędów ustala, czy błąd został spowodowany niepoprawnym użyciem OLE Automation, czy też został zwrócony przez serwer OLE. Program InTouch wyświetla błędy OLE w polu dialogowym i rejestruje je w programie WWLogger.

Wystąpienie błędu OLE nie przerywa wykonywania skryptu InTouch. Działanie, które będzie podjęte zależy od zadania, które jest wykonywane w momencie wystąpienia błędu:

• Jeżeli błąd wystąpi w czasie odczytywania właściwości, zwracane jest zero lub pusty łańcuch.

• Jeżeli błąd wystąpi w czasie operacji przypisywania właściwości, właściwość pozostanie nie zmieniona.

• Jeżeli błąd wystąpi w momencie wywoływania metody, metoda nie zostanie wywołana, nie zostaną zmienione żadne wartości parametrów, wartość zwrócona wynosi zero, lub zwracany jest pusty łańcuch.

Do obsługi błędów przeznaczonych jest pięć funkcji:

• OLE_GetLastObjectError

• OLE_GetLastObjectErrorMessage

• OLE_ResetObjectError

• OLE_ShowMessageOnObjectError

• OLE_IncrementOnObjectError

Szczegóły dotyczące tych funkcji podano poniżej.

OLE_GetLastObjectErrorFunkcja ta służy do odczytania numeru błędu, który został zaraportowany przez zmienną „last error”. value = OLE_GetLastObjectError();

gdzie:

value Wartość całkowita, w której zapisywany jest numer błędu.Numery błędów są wewnętrznymi, 32 bitowymi liczbami bez znaku. Program InTouch nie wykorzystuje tego samego zakresu liczb całkowitych, dlatego więc kody błędów używające bitów na wyższych pozycjach nie będą poprawnie zwracane.

Opis funkcji, pól i zmiennych systemowych

Automatyzacja OLE w programie InTouch 333

OLE_GetLastObjectErrorMessageFunkcja ta służy do odczytania wiadomości o ostatnim zgłoszonym błędzie (opis błędu).value = OLE_GetLastObjectErrorMessage();

gdzie:

OLE_ResetObjectError Wartość zmiennej “last error” jest zmieniana tylko w przypadku wystąpienia błędu. Nie jest resetowana po udanym zakończeniu działania Automatyzacji OLE. W niektórych wypadkach tworzenia aplikacji znacznie prostszym jest ustawienie zmiennej „last error”na znany stan, wykonanie kilku działań automatyzacji OLE, a następnie sprawdzenie, czy wartośc zmiennej „last error” uległa zmianie. Funkcja ta ustawi wartość wewnętrznej zmiennej „last error” na zero. Składnia tej funkcji jest następująca:OLE_ResetObjectError();

OLE_ShowMessageOnObjectErrorFunkcja ta kontroluje wyświetlanie informacji o błędzie i wprowadzanie przez operatora wymaganych danych w przypadku wystąpienia błędu lub wyjątku interfejsu OLE. W czasie wyświetlania pola dialogowego, wykonanie skryptu, który spowodował wystąpienie błędu jest zablokowane do momentu zatwierdzenia pola dialogowego (przykładowo, do momentu kliknięcia przycisku OK.). Wykonywanie skryptów działających w tle jest kontynuowane.

Błąd OLE oznacza błąd komunikacji w systemie operacyjnym Microsoft Windows. Nie odzwierciedla to błędu przetwarzania zidentyfikowanego przez serwer OLE.

Wyjątek OLE może być spowodowany przez infrastrukturę OLE lub przez serwer OLE.

Składnia tej funkcji jest następująca:OLE_ShowMessageOnObjectError( discreteTag);

gdzie:

value Łańcuch znaków (zawierający opis błędu). Ten tekst jest tekstem, który jest wyświetlany w polu z komunikatem o błędzie. Zawiera znaki powrotu karetki i przejścia do następnej linii. Jeżeli długość tekstu przekracza 131 znaków (limit długości ustalony przez program InTouch), wyświetlany tekst jest ograniczany do tej długości.

discreteTag Definiuje nazwę wartości typu Boolean (dyskretnej), wskazującej czy pole dialogowe jest wyświetlane, jeśli wystąpi błąd lub wyjątek OLE, przyjmuje następujące wartości:-1 = wyświetlić komunikat (domyślne) 0 = nie wyświetlić komunikatu

Opis funkcji, pól i zmiennych systemowych

334 Rozdział 4

Podany poniżej skrypt wyłącza wyświetlanie pola dialogowego błędu OLE wywołania metody Create obiektu %Lot. Po wywołaniu metody, wyświetlanie pola dialogowego błędu OLE jest ponownie włączane w przypadku każdego następnego błędu.

OLE_ShowMessageOnObjectError(0);

%Lot.Create("abc");

OLE_ShowMessageOnObjectError(1);

OLE_IncrementOnObjectErrorFunkcja ta zwiększa wartość zmiennej całkowitej przy wystąpieniu błędu interfejsu OLE lub wyjątku OLE.

Uwaga: Jeśli funkcja OLE_ShowMessageOnObjectError wykonywana jest ze zmienną dyskretną, wartość jest zwiększana po wyświetleniu i zatwierdzeniu pola dialogowego błędu OLE.

Błąd OLE oznacza błąd komunikacji w systemie operacyjnym Microsoft Windows. Nie odzwierciedla to błędu przetwarzania zidentyfikowanego przez serwer OLE.

Wyjątek OLE może być spowodowany przez infrastrukturę OLE lub przez serwer OLE.

Wartość zmiennej określonej przez tą funkcję będzie zwiększana przy każdym wystąpieniu błędu do momentu następnego wywołania określającego inną zmienną. Zmienna nie jest zapamiętywana w czasie wykonywania programu WindowViewer.

Składnia tej funkcji jest następująca:OLE_IncrementOnObjectError( integerTag);

gdzie:

Wykonanie poniższego skryptu spowoduje zwiększenie wartości zmiennej reprezentowanej przez errorCount o 1, za każdym razem, gdy wystąpi błąd interfejsu lub wyjątek OLE.

OLE_IncrementOnObjectError(errorCount);

integerTag Definiuje nazwę zmiennej całkowitej, której wartość będzie zwiększana w przypadku wystąpienia błędu lub wyjątku.

Opis funkcji, pól i zmiennych systemowych

Automatyzacja OLE w programie InTouch 335

Najczęstsze błędy automatyzacji obiektów.Poniżej podano wykaz błędów występujących najczęściej przy korzystaniu z automatyzacji OLE, oraz sposoby zapobiegania tym błędom.

• OLE object reference name has not been defined.

Nazwa odwołania do obiektu została użyta w odniesieniu do właściwości (%object.property) lub wywołania metody (%object.method(parametr) ) przed przypisaniem ich do obiektu. Należy sprawdzić, czy nazwa odwołania do obiektu nie została podana z błędem w pisowni. Należy zweryfikować nazwę przypisaną do obiektu przez użycie funkcji systemowej InTouch OLE_CreateObject, lub przez przypisanie wywołania obiektu do innego obiektu.

• Unknown property or method name.

Należy sprawdzić, czy nazwa właściwości lub metody została wprowadzona poprawnie (bez błędów w pisowni).

• Attempt to update read-only property.

Błąd ten wystąpi zawsze, gdy właściwość przeznaczona tylko do odczytu zostanie umieszczona po lewej stronie instrukcji przypisania. Jest to trudne do zlokalizowania, gdy właściwość zostanie zaktualizowana jako parametr zwracany z wywołania metody.

• Type mismatch.

Błąd ten oznacza, że dana przekazana jako parametr uaktualnienia jest nieprawidłowa. Oznacza to, że mechanizm automatycznej konwersji danych nie posiada wystarczającej ilości informacji, aby wprowadzić działania korygujące. Należy ręcznie przypisać daną do zmiennej InTouch poprawnego typu, a następnie użyć tej zmiennej.

• Invalid class string.

Błąd ten wskazuje, że nazwa klasy (drugi parametr) w wywołaniu funkcji OLE_CreateObject została wprowadzona nieprawidłowo (z błędem w pisowni).

• Parameter not optional.

Należy sprawdzić, czy przekazywana jest właściwa ilość parametrów,

• Unexpected results but no error reported.

Konwersja typu danych wykonywana jest w czasie pracy. W niektórych przypadkach przypisanie łańcucha do liczby całkowitej nie spowoduje wygenerowania błędu, jednakże, jeżeli łańcuch nie rozpoczyna się od liczby, rezultatem może być zero.

• Object reference path element is not an OLE object.

Błąd ten występuje przy korzystaniu ze znaku kropki, jeżeli jedna z właściwości w ścieżce dostępu nie jest obiektem obsadzonym lub wywołaniem obiektu.

Opis funkcji, pól i zmiennych systemowych

336 Rozdział 4

Opis funkcji, pól i zmiennych systemowych

Usuwanie problemów przy korzystaniu z funkcji skryptowych 337

Z a ł ą c z n i k A

Usuwanie problemów przy korzystaniu z funkcji skryptowych

Szereg funkcji skryptowych zwraca wartość, zależną od wyniku ich działania. Wartość ta nazywana jest kodem wynikowym, lub kodem błędu, i może być zastosowana do określenia rezultatu działania funkcji. W niniejszym załączniku opisano kody wynikowe dla funkcji skryptowych obiektów sterujących okien, receptur, oraz funkcji skryptowych modułu SQL. Opisano również elementy DDE SPC, które mogą być zastosowane do odczytywania zestawów danych, oraz do sterowania wykresami.

Funkcje związane z obiektami sterującymi okien i z alarmowaniem rozproszonym zwracają wartość zależną od wyniku działania funkcji. Zwracana wartość jest wykorzystywana do diagnozowania błędów i może być podstawiona pod zmienną całkowitą. Przykładowo:

ErrorNumber = wcGetItem("ControlName", Number, Tagname);

gdzie:

ErrorNumber jest zmienną typu Integer w której zapisany jest kod błędu. Wartość zwrócona przez funkcję może być przekazana do funkcji wcErrorMessage(). Funkcja wcErrorMessage() zwraca opis tekstowy błędu. Przykładowo:

ErrorMsg = wcErrorMessge(ErrorNumber);

gdzie:

ErrorMsg jest zmienną typu tekstowego zawierającą opis zwróconego błędu.

Podana poniżej tabela przedstawia wartości numeryczne zmiennej ErrorNumber.

ErrorNumber Opis 0 Powodzenie-1 Błąd ogólny-2 Brak pamięci-3 Właściwość jest tylko do odczytu-4 Określony element już istnieje-5 Nieznana nazwa obiektu

Opis funkcji, pól i zmiennych systemowych

338 Dodatek A

* -x jest dowolnym numerem.

Usuwanie problemów przy korzystaniu z funkcji do obsługi receptur

W celu odczytania kodu błędu zwracanego przez funkcje receptur należy go przypisać do zmiennej całkowitej, zdefiniowanej w programie InTouch. Przykładowo:

ErrorCode = RecipeLoad(FileName, UnitName, RecipeName);

Funkcja RecipeLoad() ustawia wartość zmiennej ErrorCode na 0, o ile jej działanie zakończyło się pomyślnie. W przypadku wystąpienia błędu w czasie wykonywania funkcji RecipeLoad(), jego kod zostanie przypisany do zmiennej analogowej ErrorCode. Poniżej zamieszczono zestawienie wszystkich kodów błędów, oraz odpowiadające im komunikaty, wraz z ich opisem.

-6 Nieznana nazwa właściwości-x* Błąd nieznany

Wartość Komunikat Opis0 Success Pomyślne wykonanie wywołanej

funkcji receptur.-1 No Such Recipe

TemplateBrak pliku z określonym szablonem receptury

-2 View Not Active Funkcja receptur została wywołana przez inny program, ale nie może zostać wykonana ponieważ program WindowViewer nie jest uruchomiony

-3 Out of memory Zbyt mało pamięci na zakończenie wykonywanego działania

-4 Line too long in recipe template file

Liczba znaków w wierszu pliku z szablonem receptury przekracza maksymalną, dopuszczalną wartość.

-5 Truncated line in the recipe file

Linia w pliku z szablonem receptury została obcięta

-6 Not a valid recipe template file

Wskazany plik nie jest poprawnym plikiem z szablonami receptur .CSV.

Więcej informacji na temat zestawów i nazw receptur podano w podręczniku w wersji elektronicznej Recipe Manager User's Guide.

ErrorNumber Opis

Opis funkcji, pól i zmiennych systemowych

Usuwanie problemów przy korzystaniu z funkcji skryptowych 339

-7 Expecting unit" or "recipe"

W pliku z szablonami receptur brakuje nazwy zestawu lub nazwy receptury.

Więcej informacji na temat zestawów i nazw receptur podano w podręczniku w wersji elektronicznej Recipe Manager User's Guide.

-8 No units defined in recipe template file

W pliku z szablonami receptur nie zostały zdefiniowane zestawy danych.

-9 Recipe name not found in recipe template file

Określona nazwa receptury nie została zdefiniowana w pliku z szablonami receptur.

-10 Unit name not found in recipe template file

Określona nazwa zestawu nie została zdefiniowana w pliku z szablonami receptur.

-12 Expecting "Analog", "Discrete", "Message"

Wprowadzony został niewłaściwy typ elementu w pliku z szablonami receptur. Dopuszczalne jest stosowanie wyłącznie typów Analog, Discrete i Message.

-13 Type of tagname mismatches "Analog," "Discrete," or "Message"

Niezgodność typów pomiędzy zadaną zmienną a typem elementu np. element receptury jest typu analogowego, a w zestawie zdefiniowano dla niego zmienną typu tekstowego.

-14 Invalid discrete value, expecting "0", "1"

W pliku z szablonami receptur wprowadzona została niewłaściwa wartość dla typu dyskretnego. Dopuszczalnymi wartościami typu dyskretnego są 0 lub 1.

-15 Unable to open temporary file

Plik tymczasowy nie może zostać otworzony, prawdopodobnie z powodu braku wolnego miejsca na dysku.

-16 Write error while saving recipe template file

W czasie zapisywania do pliku z szablonem receptury wystąpił błąd

-17 User did not select Użytkownik wybrał polecenie w oknie dialogowym recepturę, a nie nazwę receptury.

-19 Recipe template in use by another application

Żądany szablon receptury jest już otwarty, przez co nie jest dostępny dla programu WindowViewer.

Wartość Komunikat Opis

Opis funkcji, pól i zmiennych systemowych

340 Dodatek A

Wyświetlanie komunikatów dla kodów błędów recepturKażda funkcja receptur zwraca numer kodu błędu. Podanie tego kodu w funkcji RecipeGetMessage() pozwala na przypisanie komunikatu o błędzie do zmiennej tekstowej.

W tym celu można skorzystać z następującego skryptu QuickScript związanego ze zmianą wartości:

RecipeGetMessage(ErrorCode, ErrorMessage, 131);

Skrypt ten będzie wykonywany po każdorazowej zmianie wartości zmiennej analogowej ErrorCode. Spowoduje on odczytanie przez funkcję RecipeGetMessage() aktualnej wartości zmiennej ErrorCode, oraz przypisanie komunikatu towarzyszącego tej wartości do zmiennej ErrorMessage.

Nazwy elementów SPC DDEZ elementów DDE SPC można skorzystać w celu uzyskania informacji o zestawach danych, oraz w celu sterowania wykresami. Nazwa aplikacji to SPC. Nazwa tematu jest nazwą zestawu danych.

Uwaga: Wszystkie elementy SPC DDE traktowane są tak samo zarówno w przypadku rozproszonego jak i w przypadku nie rozproszonego SPC, jednak w przypadku rozproszonego SPC nazwa tematu musi być typu Indirect Dataset.

Elementy DDE SPC do sterowania i wyświetlaniaElementy DDE sterowania i wyświetlania przeznaczone są do sterowania i wyświetlania informacji o zestawie danych. Z elementów DDE sterowania korzystają wszystkie stanowiska. Są to wartości zestawów danych zebranych produktów dla zdalnego zestawu danych. Każde stanowisko korzysta ze swoich elementów wyświetlania DDE. Są to wartości próbek dla produktu wyświetlanego na lokalnym stanowisku.

Zmodyfikowane próbki mogą być wykorzystane w odniesieniu do zebranych wyświetlanych produktów lokalnego zestawu danych. Zmiany wprowadzone poprzez kliknięcie na wyświetlanym wykresie są uwzględniane w wyświetlanym produkcie. Elementy SPC DDE wprowadzają zmiany w zebranych produktach. Wyświetlany produkt, oraz zebrane produkty muszą posiadać swoje własne wartości próbne, którymi są ostatnio zebrane próbki.

Dla zebranych i wyświetlanych produktów oceniane są i pamiętane alarmy. Są one sygnalizowane dla zebranych produktów wyłącznie w czasie pracy aplikacji.

Opis funkcji, pól i zmiennych systemowych

Usuwanie problemów przy korzystaniu z funkcji skryptowych 341

Uwaga: Poza zebranymi i wyświetlanymi produktami, wiele elementów SPC DDE może być stosowanych wyłącznie w odniesieniu do zebranych produktów. Elementy te oznaczone są przez umieszczenie znaku (*) przed nazwą elementu SPC DDE na liście.

Nazwa elementu Typ DDE Dostęp OpisAutoCollection Discrete O/Z Aktywowanie/ deaktywowanie

automatycznego zbierania danych.*CalculateControlLimits Discrete O/Z Ustawienie wartości 1 powoduje

rozpoczęcie obliczania wartości granicznych sterowania.

DatasetName Message(32)

O/Z Ustawia parametr DatasetName, wykorzystywany przez zestaw pośredni.

HistogramLCL Real O Wyświetla dolne wartości graniczne sterowania histogramu, w oparciu o populację.

HistogramUCL Real O Wyświetla górne wartości graniczne sterowania histogramu, w oparciu o populację.

Kurtosis Real O Kształt dystrybucji histogramów.LastSampleDisplayed Integer O/Z Ustawia numer ostatniej próbki

wyświetlanej przez Zestaw danych.*ManualInputDialog Discrete O/Z Ustawienie wartości 1 powoduje

wyświetlanie wbudowanego okna dialogowego do ręcznego wprowadzania danych.

MeasurementsPerSample Integer O Wyświetlenie skonfigurowanej liczby pomiarów przypadających na próbkę

NewProduct Message(32)

O/Z Wykorzystywana do tworzenia nowej nazwy produktu.

NewProductCtrlTitle Message(32)

O/Z Wykorzystywany do przypisywania tytułu wykresu kontrolnego dla nowego produktu stworzonego przy pomocy funkcji NewProduct.

NewProductParetoTitle Message(32)

O/Z Wykorzystywany do przypisywania tytułu wykresu Pareto dla nowego produktu stworzonego przy pomocy funkcji NewProduct.

NewProductHistTitle Message(32)

O/Z Wykorzystywany do przypisywania tytułu histogramu dla nowego produktu stworzonego przy pomocy funkcji NewProduct.

*ProductCollected Message(32)

O/Z Zmienia nazwę produktu zebranego przez Zestaw danych.

ProductDisplayed Message(32)

O/Z Zmienia nazwę produktu wyświetlanego przez Zestaw danych.

SampleSize Integer O Rozmiar próbki dla Zestawu danych NP.

Opis funkcji, pól i zmiennych systemowych

342 Dodatek A

SamplesPerControlChart Integer O/Z Ustawia liczbę próbek wyświetlanych na Wykresie kontrolnym.

SamplesPerHistogram Integer O/Z Ustawia liczbę próbek wyświetlanych na histogramie.

SamplesPerLimitCalc Integer O/Z Ustawia liczbę próbek wykorzystywanych przy obliczaniu kontrolnych wartości granicznych.

SamplesPerPareto Integer O/Z Ustawia liczbę próbek wykorzystywanych do wyświetlania na wykresie kontrolnym Pareto.

SelSPCOutSpecMsg Message O Zmienna tekstowa dla alarmu "Próbka poza dopuszczalnymi wartościami granicznymi."

Skewness Real O Wyświetla odchylenie od średniej na Histogramie.

SPCAllowSampDelMod Discrete O/Z Włączenie/ wyłączenie opcji Usuń i Modyfikuj menu rozwijanego po wciśnięciu prawego przycisku myszy.

SPCConnection Discrete O Wartość 0 oznacza przerwanie połączenia z serwerem.

SPCConnectType Message O Informuje, czy stacja pracuje jako Serwer czy też jako Klient.

SPCLowDBSpace Discrete O Pozycja wykorzystywana do monitorowania bazy danych Microsoft SQL Server. Pozycja ta ma zastosowanie wyłącznie do baz danych Microsoft SQL Server. Wartość 1 oznacza brak wolnego miejsca dla bazy danych. Może być wykorzystana do zatrzymania automatycznego zbierania danych, oraz poinformowania użytkownika o konieczności przydzielenia większej ilości wolnego miejsca na dysku dla programu SPC. Pozycja ta przyjmuje naprzemiennie wartości 1 i 0, w zależności od statusu bazy danych SQL.

SPCResetRunRules Discrete O/Z Wykorzystywany do wyłączenia stosowania reguł pracy dla nadchodzących próbek. Jest to ważne przy zbieraniu danych dla nowej serii, ponieważ użytkownik może nie chcieć uruchamiać korzystania z reguł dla próbek z nowej serii. Dla nowej serii reguły mogą zostać ponownie zdefiniowane.

Nazwa elementu Typ DDE Dostęp Opis

Opis funkcji, pól i zmiennych systemowych

Usuwanie problemów przy korzystaniu z funkcji skryptowych 343

Elementy DDE SPC dla bieżącej próbkiWszystkie elementy DDE bieżącej próbki odnoszą się do ostatnio zebranej próbki zadanego Zestawu danych. Mogą one być zastosowane do zmodyfikowania źródłowych danych, oraz wartości granicznych dla nazwy zestawu danych. W celu zmiany informacji o bieżącej próbce należy ją zapisać do odpowiednich elementów DDE, a następnie ustawić wartość elementu DDE CurrentUpdate na 1. Efekt będzie identyczny jak w przypadku ponownego wprowadzenia próbki, i spowoduje ponowne wykonanie odpowiednich obliczeń. Po wprowadzeniu próbki, program SPC ustawi wartość elementu i DDE CurrentUpdate na 0. Rozpoczęcie przez następną próbkę cyklu zbierania, blokuje możliwość uaktualnienia elementu DDE bieżącej próbki.

Z elementów DDE bieżącej próbki korzystają wspólnie wszystkie stacje. Wartości tych elementów reprezentują ostatnio zebraną próbkę zebranego produktu.

W przypadku rozproszonego SPC, na początku wszystkie wartości ustawiane są na zero. SPC co 5 sekund łączy się z bazą danych oraz sprawdza nowe dane. Zawsze w przypadku znalezienia nowych informacji, wartości elementów są uaktualniane. Modyfikacje odnoszące się do bieżącej próbki są buforowane lokalnie, do momentu, gdy wartość elementu CurrentUpdate zostanie ustawiona na 1. Wartości umieszczane są w pakiecie bieżącej próbki i przesłane do sieciowego stanowiska zestawu danych w celu przeprowadzenia analizy i zapisu. Modyfikacje bieżących próbek wskazujące na inny zebrany produkt, oraz bieżące próbki o numerze różnym od ostatnio zapisanej próbki są odrzucane przez Serwer.

Uwaga: Poza zebranymi i wyświetlanymi produktami, wszystkie bieżące elementy DDE SPC mają zastosowanie wyłącznie w odniesieniu do zebranych produktów.

Nazwa elementu Typ DDE Dostęp OpisCurrentCauseCode Integer O/Z Ustawia wartość SpecialCauseCode

dla bieżącej próbki.CurrentCauseString Message

(128)O Wyświetla opis numeru

SpecialCauseCode dla bieżącej próbki.CurrentComment Message

(50)O/Z Element wykorzystywany do

zapisu/odczytu różnych komentarzy powiązanych z bieżącą próbką.

CurrentCp Real O Element ten wyświetla możliwości dla bieżącej próbki.

CurrentCpk Real O Element ten wyświetla wypośrodkowane możliwości dla bieżącej próbki.

CurrentDate Message(8)

O/Z Ustawia datę dla bieżącej próbki w formacie DD/MM/YY. Jeżeli data zostanie niepoprawnie wprowadzona, przyjęta zostanie data bieżąca.

CurrentFlag Discrete O/Z Ustawia flagę dla bieżącej próbki.

Opis funkcji, pól i zmiennych systemowych

344 Dodatek A

CurrentIgnoreValue Discrete O/Z Ustawia ignorowanie bieżącej próbki w momencie gdy Wykres kontrolny jest automatycznie skalowany.

CurrentMx Real O/Z Ustawia indywidualny pomiar wartości dla bieżącej próbki. (x=1 do 25.)

CurrentR Real O Element ten wyświetla zakres dla bieżącej próbki.

CurrentRBar Real O/Z Element ten ustawia średni zakres dla bieżącej próbki.

CurrentRLCL Real O/Z Element ten ustawia dolne, kontrolne wartości graniczne.

CurrentRUCL Real O/Z Element ten ustawia górne, kontrolne wartości graniczne.

CurrentSample Real O Element ten wyświetla wartość ostatniego punktu próbkowania (tj. X, C, P).

CurrentSampleBar Real O/Z Ustawia średnią bieżącej próbki w danym punkcie próbkowania.

CurrentSampleNumber Integer O Wyświetla numer ostatnio zebranej próbki.

CurrentTarget Real O/Z Ustawia wartość docelową w danym punkcie próbkowania.

CurrentTime Message(8)

O/Z Ustawia czas dla bieżącej próbki w formacie HH:MM:SS. Jeżeli czas zostanie niepoprawnie wprowadzony, przyjęty zostanie czas bieżący.

CurrentUpdate Discrete O/Z Element ten należy ustawić na 1 w celu wprowadzenia zmian w informacji o próbce, w dowolnym z bieżących pól.

CurrentXLCL Real O/Z Ustawia Dolną, kontrolną wartość graniczną (LCL - Lower Control Limit) dla bieżącej próbki.

CurrentXLSL Real O/Z Ustawia Dolną, wartość graniczną specyfikowaną (LSL - Lower Specification Limit) dla bieżącej próbki.

CurrentXUCL Real O/Z Ustawia Górną , kontrolną wartość graniczną (UCL - Upper Control Limit) dla bieżącej próbki.

CurrentXUSL Real O/Z Ustawia Górną, wartość graniczną specyfikowaną (USL - Upper Specification Limit) dla bieżącej próbki.

Nazwa elementu Typ DDE Dostęp Opis

Opis funkcji, pól i zmiennych systemowych

Usuwanie problemów przy korzystaniu z funkcji skryptowych 345

SPC2L3Out2SD Integer O Licznik alarmów dla alarmu "2 z 3 ostatnich próbek poza 2 odchyleniem standardowym SS."

SPC2L3Out2SDMsg Message O Zmienna tekstowa dla alarmu "2 z 3 ostatnich próbek poza 2 odchyleniami standardowymi SS."

SPC4L5Out1SD Integer O Licznik alarmów dla alarmu "4 z 5 ostatnich próbek poza 1 odchyleniem standardowym SS."

SPC4L5Out1SDMsg Message O Zmienna tekstowa dla alarmu "4 z 5 ostatnich próbek poza 1 odchyleniami standardowymi SS."

SPCConSampAltUpDn Integer O Licznik alarmów dla alarmu "Wartość kolejnych próbek naprzemiennie zmniejsza się i zwiększa."

SPCConSampAltUpDnMsg Message O Zmienna tekstowa dla alarmu "Wartość kolejnych próbek naprzemiennie zmniejsza się i zwiększa."

SPCConSampln1SD Integer O Licznik alarmów dla alarmu "Kolejne próbki znajdują się wewnątrz 1 Odchylenia standardowego."

SPCConSampln1SDMsg Message O Zmienna tekstowa dla alarmu "Kolejne próbki znajdują się wewnątrz 1 Odchylenia standardowego."

SPCConSamplncDec Integer O Licznik alarmów dla alarmu "Wartość kolejnych próbek zmniejsza się lub zwiększa."

SPCConSamplncDecMsg Message O Zmienna tekstowa dla alarmu "Wartość kolejnych próbek zmniejsza się lub zwiększa."

SPCConSampOneSideCL Integer O Licznik alarmów dla alarmu "Wartość kolejnych próbek znajduje się po jednej stronie osi symetrii."

SPCConSampOneSideCLMsg Message O Zmienna tekstowa dla alarmu "Wartość kolejnych próbek znajduje się po jednej stronie osi symetrii."

SPCConSampOut1SD Integer O Licznik alarmów dla alarmu "Kolejne próbki znajdują się poza 1 Odchyleniem standardowym."

SPCConSampOut1SDMsg Message O Zmienna tekstowa dla alarmu "Kolejne próbki znajdują się poza 1 Odchyleniem standardowym."

SPCNLNOutNSD Integer O Licznik alarmów dla alarmu "? z ostatnich ? próbek poza ? odchyleniami standardowymi."

Nazwa elementu Typ DDE Dostęp Opis

Opis funkcji, pól i zmiennych systemowych

346 Dodatek A

SPCNLNOutNSDMsg Message O Zmienna tekstowa dla alarmu "? z ostatnich ? próbek poza ? odchyleniami standardowymi."

SPCNLNOutNSDSS Integer O Licznik alarmów dla alarmu "? z ostatnich ? próbek poza ? odchyleniami standardowymi SS."

SPCNLNOutNSDSSMsg Message O Zmienna tekstowa dla alarmu "? z ostatnich ? próbek poza ? odchyleniami standardowymi SS."

SPCOutRCtrl Integer O Licznik alarmów dla alarmu Wykresu "Zakres poza kontrolnymi wartościami granicznymi."

SPCOutRCtrlMsg Message O Zmienna tekstowa dla alarmu Wykresu "Zakres poza kontrolnymi wartościami granicznymi."

SPCOutXCtrl Integer O Licznik alarmów dla alarmu Wykresu X "Próbka poza kontrolnymi wartościami granicznymi."

SPCOutXCtrlMsg Message O Zmienna tekstowa dla alarmu Wykresu X "Próbka poza kontrolnymi wartościami granicznymi."

SPCOutSpec Integer O Licznik alarmów dla alarmu "Próbka poza dopuszczalnymi wartościami specyfikowanymi."

SPCOutSpecMsg Message O Zmienna tekstowa dla alarmu "Próbka poza dopuszczalnymi wartościami granicznymi."

SPCRecalculateCp Discrete O/Z Gdy wartość tego elementu ustawiona jest na 1, po zebraniu następnej próbki mechanizm dokona ponownego obliczenia wartości współczynników Cp i Cpk dla bieżącego zestawu danych. Po zebraniu próbki, wartość tego elementu zostanie ustawiona na 0. Ponowne ustawienie wartości tego elementu na 1 spowoduje ponowne obliczenie wartości współczynników Cp i Cpk. Po ustawieniu na wartość 1, dla następnej zebranej próbki wartości Cp i Cpk zostaną ponownie obliczone. Po zebraniu próbki wartość tego elementu zostanie ponownie automatycznie ustawiona na 0.

Uwaga Element ten odnosi się TYLKO na wartości współczynników Cp i Cpk. Nie odnosi się natomiast do wartości granicznych i reguł pracy.

Nazwa elementu Typ DDE Dostęp Opis

Opis funkcji, pól i zmiennych systemowych

Usuwanie problemów przy korzystaniu z funkcji skryptowych 347

Elementy DDE SPC do ręcznego wprowadzaniaElementy DDE ręcznego wprowadzania stosowane są do tworzenia okien użytkownika do ręcznego wprowadzania danych. W celu zastosowania elementów ręcznego wprowadzania danych, należy ustawić wartości odpowiednich elementów, a następnie ustawić element DDE MI_Save na wartość 1. Spowoduje to wprowadzenie informacji zawartych w innych polach MI jako nowej próbki. Po wprowadzeniu próbki, program SPC ustawi wartość elementu DDE MI_Save na 0 (zero).

W przypadku rozproszonego SPC, elementy ręcznego wprowadzania danych mają zasięg lokalny dla każdego ze stanowisk. Wartości są lokalnie buforowane na każdym ze stanowisk, aż do momentu kiedy element DDE MI_Save zostanie ustawiona na 1. Po ustawieniu MI_Save na 1, wartości umieszczane są w pakiecie ręcznie wprowadzonych danych i wysyłane do sieciowego stanowisk zestawu danych w celu przeprowadzenia analizy i ich zapisania.

Uwaga Poza zebranymi i wyświetlanymi produktami, wszystkie elementy DDE do ręcznego wprowadzania mają zastosowanie wyłącznie w odniesieniu do zebranych produktów.

SPCResetAlarmCounters Discrete O/Z Zeruje wszystkie liczniki alarmów.SPCResetRunRules Discrete O/Z Wykorzystywany do wyłączenia

stosowania reguł pracy dla nadchodzących próbek. Dotyczy aktualnie zebranych produktów. W momencie włączenia, reguły są resetowane i poprzednie próbki nie będą uwzględniane w obliczeniach alarmów typu "4 z 5 ostatnich próbek poza 1 odchyleniem standardowym” Działanie takie jest wykonywane jednokrotnie, po czym reguły pracy rozpoczną pracę ponownie. Element ten musi zostać zresetowany, następnie włączony ponownie, aby nastąpiło zresetowanie reguł.

Nazwa elementu Typ DDE Dostęp OpisMI_CauseCode Integer O/Z Ustawia wartość

SpecialCauseCode dla ręcznie wprowadzanej próbki.

MI_CauseString Message(127)

O Wyświetla opis numeru wejściowego SpecialCauseCode dla próbki.

Nazwa elementu Typ DDE Dostęp Opis

Opis funkcji, pól i zmiennych systemowych

348 Dodatek A

MI_Comment Message(50)

O/Z Element ten wykorzystywany do zapisu/ odczytu różnych komentarzy wprowadzonych dla próbki.

MI_Date Message(8)

O/Z Ustawia datę dla bieżącej próbki. Data musi być wprowadzona w formacie DD/MM/YY. Jeżeli data zostanie niepoprawnie wprowadzona, przyjęta zostanie data bieżąca.

MI_Flag Discrete O/Z Ustawia flagę dla ręcznie wprowadzanej próbki.

MI_IgnoreValue Discrete O/Z Ustawia ignorowanie bieżącej próbki w momencie gdy Wykres kontrolny jest automatycznie skalowany.

MI_Mx Real O/Z Ustawia wartość dla oznaczonego ręcznie wprowadzonego pomiaru (x=1 do 25).

MI_Save Discrete O/Z Zapisuje wprowadzoną ręcznie w innych polach MI informację jako nową próbkę.Uwaga Jeżeli element MI_Save ustawiony jest na 1, wartości wszystkich elementów MI zapisywane są do odpowiednich elementów i DDE Current, a element CurrentSampleNumber jest inkrementowana o 1.

MI_Time Message(8)

O/Z Ustawia czas dla bieżącej próbki. Czas musi być wprowadzona w formacie HH:MM:SS. Jeżeli czas zostanie niepoprawnie wprowadzony, przyjęty zostanie domyślnie czas bieżący.

Nazwa elementu Typ DDE Dostęp Opis

Opis funkcji, pól i zmiennych systemowych

Usuwanie problemów przy korzystaniu z funkcji skryptowych 349

Elementy DDE SPC do zaznaczaniaElementy DDE do zaznaczania mogą być wykorzystane do uzyskiwania szczegółowych informacji o dowolnej z próbek. Elementy DDE do zaznaczania umożliwiają wprowadzenie numeru próbki, która ma być wyświetlana. Po wprowadzeniu, program SPC zaktualizuje wszystkie elementy do zaznaczania, wprowadzając szczegółowe informacje o zaznaczonym numerze próbki.

Nie można zmienić starych danych, ale można dodać elementy Special Cause Code, Flags i/lub Comments poprzez wprowadzenie wartości do odpowiednich elementowi, i następnie ustawienie elementu SelectionUpdate na 1.

Spowoduje to wprowadzenie do rekordu zaznaczonej próbki nowych wartości. Po wprowadzeniu próbki, program SPC ustawi wartość elementu DDE SelectionUpdate na 0 (zero).

W przypadku rozproszonego SPC, elementy DDE do zaznaczania mają zasięg lokalny dla każdego ze stanowisk. Są to wartości próbek zarejestrowane na stanowisku sieciowym dla określonego numeru próbki zebranego produktu. Po ustawieniu elementu DDE do zaznaczania na numer próbki, z pliku z próbkami na stanowisku sieciowym odczytywane są dane. Nie można zmienić starych danych, ale można dodać elementy Special Cause Code, Flags i/lub Comments poprzez wprowadzenie wartości do odpowiednich elementów, i następnie ustawienie elementu SelectionUpdate na 1. Po ustawieniu wartości SelectionUpdate na 1, następuje wysłanie elementów Special Cause Code, Comment, Flag i Ignore Value w formie pakietu do stanowiska sieciowego w celu zapisu.

Uwaga Poza zebranymi i wyświetlanymi produktami, wszystkie elementy DDE do zaznaczania mają zastosowanie wyłącznie w odniesieniu do zebranych produktów.

Nazwa elementu Typ DDE Dostęp OpisSelection Integer O/Z Ustawienie tego elementu na

numer próbki powoduje wprowadzenie do wszystkich zaznaczonych elementów odpowiednich danych.

SelectionCauseCode Integer O/Z Ustawia wartość SpecialCauseCode dla zaznaczonej próbki.

SelectionCauseString Message(128)

O Wyświetla opis wprowadzonego Special Cause Code.

SelectionComment Message(50)

O/Z Element ten wykorzystywany do zapisu/ odczytu różnych komentarzy, wprowadzonych dla zaznaczonej próbki.

Opis funkcji, pól i zmiennych systemowych

350 Dodatek A

SelectionCp Real O Element ten wyświetla możliwości dla zaznaczonej próbki.

SelectionCpk Real O Element ten wyświetla wypośrodkowane możliwości dla zaznaczonej próbki.

SelectionDate Message(8)

O Element ten wyświetla datę dla zaznaczonej próbki.

SelectionFlag Discrete O/Z Ustawia flagę dla zaznaczonej próbki.

SelectionIgnoreValue Discrete O/Z Ustawia ignorowanie zaznaczonej próbki w momencie gdy Wykres kontrolny jest automatycznie skalowany.

SelectionMx Real O Wyświetla wartość dla indywidualnego pomiaru (x=1 - 25), zawierającego próbkę.

SelectionProduct Message(32)

O Wyświetla nazwę produktu dla zaznaczonej próbki.

SelectionRUCL Real O Wyświetla zakres UCL dla zaznaczonej próbki.

SelectionRLCL Real O Wyświetla zakres LCL dla zaznaczonej próbki.

SelectionR Real O Wyświetla zakres dla zaznaczonej próbki.

SelectionRBAR Real O Wyświetla średni zakres dla zaznaczonej próbki.

SelectionSample Real O Wyświetla wartość zaznaczonego punktu próbki.

SelectionSampleBar Real O Wyświetla średnią zaznaczonej próbki w zaznaczonym punkcie próbki.

SelectionTarget Real O Wyświetla docelową wartość dla zaznaczonej próbki.

SelectionTime Message(8)

O Element ten wyświetla Czas dla zaznaczonej próbki.

SelectionUpdate Discrete O/Z Aktualizuje zmiany wprowadzone w polach Zaznaczonej próbki

SelectionXUSL Real O Wyświetla Górną wartość specyfikowaną próbki.

SelectionXLSL Real O Wyświetla Dolną wartość specyfikowaną próbki.

Nazwa elementu Typ DDE Dostęp Opis

Opis funkcji, pól i zmiennych systemowych

Usuwanie problemów przy korzystaniu z funkcji skryptowych 351

SelectionXUCL Real O Wyświetla Górną wartość graniczną próbki.

SelectionXLCL Real O Wyświetla Dolną wartość graniczną próbki.

SelSPC2L3Out2SDMsg Message O Zmienna tekstowa dla alarmu "2 z 3 ostatnich próbek poza 2 odchyleniami standardowymi SS."

SelSPC4L5Out1SDMsg Message O Zmienna tekstowa dla alarmu "4 z 5 ostatnich próbek poza 1 odchyleniami standardowymi SS."

SelSPCConSampAltUpDnMsg Integer O Zmienna tekstowa dla alarmu "Wartość kolejnych próbek naprzemiennie zmniejsza się i zwiększa."

SelSPCConSampln1SDMsg Message O Zmienna tekstowa dla alarmu "Kolejne próbki znajdują się wewnątrz 1 Odchylenia standardowego."

SelSPCConSamplncDecMsg Message O Zmienna tekstowa dla alarmu "Wartość kolejnych próbek zmniejsza się lub zwiększa."

SelSPCConSampOneSideCLMsg Message O Zmienna tekstowa dla alarmu "Wartość kolejnych próbek znajduje się po jednej stronie osi symetrii."

SelSPCConSampOut1SDMsg Message O Zmienna tekstowa dla alarmu "Kolejne próbki znajdują się poza 1 Odchyleniem standardowym."

SelSPCNLNOutNSDMsg Message O Zmienna tekstowa dla alarmu "? z ostatnich ? próbek poza ? odchyleniami standardowymi."

SelSPCNLNOutNSDSSMsg Message O Zmienna tekstowa dla alarmu "? z ostatnich ? próbek poza ? odchyleniami standardowymi SS."

SelSPCOutRCtrlMsg Message O Zmienna tekstowa dla alarmu Wykresu "Zakres poza kontrolnymi wartościami granicznymi."

Nazwa elementu Typ DDE Dostęp Opis

Opis funkcji, pól i zmiennych systemowych

352 Dodatek A

Uwaga Wiele pośrednich zestawów danych może być ustawionych i połączonych z tym samym, rzeczywistym zestawem danych. Można wtedy Zaznaczoną wartość każdego z pośrednich zestawów danych ustawić na inny numer próbki. Pozwala to użytkownikowi na podglądanie informacji o wielu próbkach w obrębie jednego zestawu danych.

Usuwanie problemów przy korzystaniu z funkcji skryptowych SQL

Wszystkie funkcje SQL zwracają parametr ResultCode, który może zostać wykorzystany przy usuwaniu problemów. Funkcja SQLErrorMsg() zwraca komunikat o błędzie, dla zadanego kodu ResultCode. Przykładowo:ErrorMsg=SQLErrorMsg( ResultCode) ;

gdzie:

ErrorMsg jest zmienną typu Memory Message.

ResultCode jest zmienną całkowitą, z wartością dostarczoną przez odpowiednią funkcję SQL.

Komunikaty o błędachW niniejszym dokumencie nie omówiono znaczenia poszczególnych wartości ResultCode, więcej informacji na temat tych wartości podano w dokumentacji do bazy danych. Należy również pamiętać o sprawdzeniu informacji wyświetlanych przez program diagnostyczny Wonderware Logger.

Funkcja SQLErrorMsg()ErrorMsg() przypisuje wartość zmiennej tekstowej ErrorMsg. Poniżej zamieszczono zestawienie wybranych kodów błędów, oraz odpowiadające im komunikaty, wraz z ich opisem.

SelSPCOutXCtrlMsg Message O Zmienna tekstowa dla alarmu Wykresu X "Próbka poza kontrolnymi wartościami granicznymi."

SelSPCOutSpecMsg Message O Zmienna tekstowa dla alarmu "Próbka poza dopuszczalnymi wartościami granicznymi."

Kod błędu Komunikat Opis0 No errors occurred Instrukcja została zakończona pomyślnie, bez

wystąpienia błędu-5 No more rows to fetch Odczytany został ostatni rekord bazy danych-1001 Out of memory Brak wolnej pamięci na zakończenie instrukcji-1002 Invalid connection Niepoprawny parametr ConnectionID

przekazany do funkcji-1003 No bind list found Lista powiązań o zadanej nazwie nie istnieje-1004 No template found Szablon o zadanej nazwie nie istnieje

Nazwa elementu Typ DDE Dostęp Opis

Opis funkcji, pól i zmiennych systemowych

Usuwanie problemów przy korzystaniu z funkcji skryptowych 353

-1005 Internal Error Wystąpił błąd wewnętrzny. Skontaktować się z Serwisem.

-1006 String is null Ostrzeżenie - z bazy danych odczytano pusty łańcuch znaków

-1007 String is truncated Ostrzeżenie - łańcuch znaków odczytany z bazy danych ma więcej niż 131 znaków w związku z czym został on obcięty

-1008 No Where clause Brak klauzuli Where dla DeleteREFWhere clause on Delete

-1009 Connection failed Błąd w komunikacji, szczegółowy opis zakłócenia podany jest w programie diagnostycznym Wonderware Logger

-1010 The database specified on the DB= portion of the connect string does not exist

Określona baza danych nie istnieje

-1011 No rows were selected Podjęto próbę wykonania polecenia SQLNumRows(), SQLFirst(), SQLNext(), lub SQLPrev(), bez uprzedniego wykonania polecenia SQLSelect().

-4149 The connection, statement, or query handle you provided is not valid

Przyczyną może być niewłaściwie zdefiniowany typ kolumny. Przykładowo, jeżeli w pliku dBASE zdefiniowany zostanie szablon tabeli z kolumną typu character, a nie typu char, zasygnalizowany zostanie błądREF!!!!!!!!with a column type of character instead of char

Kod błędu Komunikat Opis

Opis funkcji, pól i zmiennych systemowych

354 Dodatek A

Komunikaty błędów dla poszczególnych baz danych

Oracle

Komunikat RozwiązanieORA-03112 - Host String Syntax error

Jeżeli uruchamiany jest program NETINIT.EXE należy umieścić go w grupie Autostart systemu Windows. Jeżeli uruchamiany jest program NETINIT.EXE, i nawiązywane jest więcej niż jedno połączenie, lub też uruchamianych jest więcej niż jedna sesja, należy przydzielić więcej pamięci. W tym celu należy ustawić parametr WIN_REMOTE_SESSIONS w pliku CONFIG.ORA na wartość równa liczbie żądanych połączeń. Zamieszczona poniżej instrukcja przydziela pamięć dla 4 połączeń:WIN_REMOTE_SESSIONS=4

ORA-3121 - No interface driver connected

Przed uruchomieniem Windows, oraz przed korzystaniem z InTouch SQL Access należy uruchomić program SQL *NET TSR, odpowiedni dla systemu sieciowego.

ORA-6435 - NetBIOS: Unable to add local name to name table‰

Musi być uruchomiony system sieciowy (Novell, LAN Manager, itp.)

ORA-09301 - Local kernel only supported in standard mode

W łańcuchu znaków do ustanowienia połączenia określić nazwę serwera ("SRVR=").

ORA-06430 - Unable to make connection

Zweryfikować poprawność i kolejność atrybutów w łańcuchu znaków do ustanowienia połączenia.

Opis funkcji, pól i zmiennych systemowych

Usuwanie problemów przy korzystaniu z funkcji skryptowych 355

Sybase or Microsoft SQL Server

dBASE

Komunikat RozwiązanieYou cannot have more than one statement active at a time

Próba wykonania polecenia SQL po wykonaniu SQLSelect(). Wywołać polecenie SQLEnd() w celu zwolnienia zasobów systemu po wywołaniu SQLSelect(), lub też przeznaczyć dla drugiej instrukcji oddzielny parametr ConnectionID.

There is not enough memory available to process the command

Spróbować ponownie uruchomić stację kliencką

Invalid object name table name Nazwa tablicy nie istnieje w używanej bazie danych. Spróbować skorzystać z instrukcji DB=nazwa bazy danych.

Komunikat RozwiązanieFile or DLL not found W przypadku systemu Windows, plik

QEDBF.DLL musi znajdować się w bieżącej kartotece, lub w kartotece systemu Windows podanej w ścieżce DOS.

Invalid connection Należy sprawdzić, czy w kartotece znajdują się odpowiednie pliki dll. W przypadku DBF, potrzebny jest plik QLDBF.DLL.

The connection or statement handle you provided is not valid

Więcej informacji na ten temat podano w programie Wonderware Logger . Instrukcja SQL może zawierać błąd w składni.

Opis funkcji, pól i zmiennych systemowych

356 Dodatek A

Opis funkcji, pól i zmiennych systemowych

357

Indeks

Symbols$AccessLevel 21$AlarmPrinterError 22$AlarmPrinterNoPaper 22$AlarmPrinterOffline 23$AlarmPrinterOverflow 23$ApplicationChanged 24$ApplicationVersion 24$ChangePassword 25$ConfigureUsers 25$Date 26$DateString 26$DateTime 26$Day 27$HistoricalLogging 27$Hour 28$InactivityTimeout 28$InactivityWarning 29$LogicRunning 29$Minute 30$Month 30$Msec 30$NewAlarm 31$ObjHor 31$ObjVer 31$Operator 32$OperatorEntered 33$PasswordEntered 34$Second 34$StartDdeConversations 34$System 35$Time 35$TimeString 35, 36$Year 36

AAlarmów Funkcje

AalmSelectGroup 174Ack 164almAckAll 166almAckDisplays 166almAckGroup 167almAckPriority 168almAckRecent 168almAckSelect 169almAckSelectedGroup 169almAckSelectedPriority 170almAckSelectedTag 170almAckTag 171almDefQuery 172almMoveWindow 172almQuery 173almSelectAll 174almSelectionCount 175almSelectItem 175almSelectPriority 175almSelectTag 176almSetQueryByName 176almShowStats 177

almSuppressDisplay 178almSuppressGroup 178almSuppressPriority 179almSuppressRetain 179almSuppressSelected 180almSuppressSelectedGroup 181almSuppressSelectedPriority 181almSuppressSelectedTag 182almSuppressTag 180almUnSelectAll 182almUnSuppressAll 183Error Numbers 337Komunikaty o b³êdach 337

Alarmów zmienne systemowe$AlarmPrinterError 22$AlarmPrinterNoPaper 22$AlarmPrinterOffline 23$AlarmPrinterOverflow 23$NewAlarm 31$System 35

Aplikacji zmienne systemowe$ApplicationChanged 24$ApplicationVersion 24

EError Numbers

Alarmów Funkcje 337Funkcje receptur 338Obiekty steruj¹ce okien - Funkcje 337

FFlagi jakoœci 135Funkcja OLE_IsObjectValid 326Funkcja OLE_ReleaseObject 325Funkcje

Abs 164Ack 164ActivateApp 165almAckAll 166almAckDisplay 166almAckGroup 167almAckPriority 168almAckRecent 168almAckSelect 169almAckSelectedGroup 169almAckSelectedPriority 170almAckSelectedTag 170almAckTag 171almDefQuery 172almMoveWindow 172almQuery 173almSelectAll 174almSelectGroup 174almSelectionCount 175almSelectItem 175almSelectPriority 175almSelectTag 176almSetQueryByName 176almShowStats 177

Opis funkcji, pól i zmiennych systemowych

358

almSuppressDisplay 178almSuppressGroup 178almSuppressPriority 179almSuppressRetain 179almSuppressSelected 180almSuppressSelectedGroup 181almSuppressSelectedPriority 181almSuppressSelectedTag 182almSuppressTag 180almUnSelectAll 182almUnSuppressAll 183ArcCos 183ArcSin 184ArcTan 184ChangePassword 185Cos 186DialogStringEntry 186DialogValueEntry 188DText 190Exp 191FileCopy 191FileDelete 193FileMove 194FileReadFields 196FileReadMessage 197FileWriteFields 198FileWriteMessage 199GetNodeName 199GetPropertyD 200GetPropertyI 200GetPropertyM 201Hide 202Hideself 202HTGetLastError 203HTGetPenName 204HTGetTimeAtScooter 204HTGetTimeStringAtScooter 205HTGetValue 206HTGetValueAtScooter 207HTGetValueAtZone 208HTScrollLeft 210HTScrollRight 210HTSelectTag 211HTSetPenName 211HTUpdateToCurrentTime 212HTZoomIn 212HTZoomOut 213InfoAppActive 214InfoAppTitle 214InfoDisk 215InfoFile 216InfoInTouchAppDir 217InfoResources 217Int 218IOGetApplication 218IOGetNode 219IOGetTopic 219IOReinitialize 219IOSetAccessName 220IOSetItem 221IOStartUninitConversations 222

IsAnyAsynchFunctionBusy 222Log 223LogMessage 224LogN 224Logoff 225OLE_CreateObject 324OLE_IsObjectValid 326OLE_ReleaseObject 325Pi 225PlaySound 225PrintHT 227PrintWindow 228, 230RecipeDelete 232RecipeGetMessage 233RecipeLoad 234RecipeSave 235RecipeSelectNextRecipe 236RecipeSelectPreviousRecipe 237RecipeSelectRecipe 238RecipeSelectUnit 239ReloadWindowViewer 240RestartWindowViewer 240Round 241SendKeys 242SetPropertyD 243SetPropertyI 244SetPropertyM 244Sgn 245Show 245ShowAt 246ShowHome 246ShowTopLeftAt 247Sin 247SLQRollback 270SPCConnect 248SPCDatasetDlg 248SPCDisconnect 249SPCDisplayData 249SPCLocateScooter 250SPCMoveScooter 250SPCSaveSample 251SPCSelectDataset 251SPCSelectProduct 251SPCSetControlLimits 252SPCSetMeasurement 252SPCSetProductCollected 253SPCSetProductDislpayed 253SPCSetRangeLimits 254SPCSetSpecLimits 254SQLAppendStatement 255SQLClearParam 255SQLClearStatement 255SQLClearTable 256SQLCommit 257SQLConnect 258SQLCreateTable 260SQLDelete 261SQLDisconnect 262SQLDropTable 262SQLEnd 262SQLErrorMsg 263

Opis funkcji, pól i zmiennych systemowych

359

SQLExecute 263SQLFirst 264SQLGetRecord 264SQLInsert 265SQLInsertEnd 265SQLInsertExecute 266SQLInsertPrepare 266SQLLast 267SQLLoadStatement 267SQLManageDSN 268SQLNext 268SQLNumRows 268SQLPrepareStatement 269SQLPrev 269SQLSelect 271SQLSetParamChar 274SQLSetParamDate 274SQLSetParamDateTime 275SQLSetParamDecimal 275SQLSetParamFloat 276SQLSetParamLong 276SQLSetParamNull 277SQLSetParamTime 278SQLSetStatement 278SQLTransact 279SQLUpdate 281SQLUpdateCurrent 282Sqrt 282StartApp 283StringASCII 283StringChar 284StringFromIntg 284StringFromReal 285StringFromTime 286StringFromTimeLocal 287StringInString 288StringLeft 289StringLen 290StringLow 290StringMid 291StringReplace 292StringRight 293StringSpace 294StringTest 295StringToInt 296StringToReal 297StringTrim 298StringUpper 299Tan 299Tekst 300Trunc 300TseGetClientID 301TseQueryRunningOnClient 302TseQueryRunningOnConsole 301wcAddItem 302wcClear 303wcDelete 303wcDeleteSelection 304wcErrorMessage 304wcFindItem 305wcGetItem 306

wcGetItemData 307wcInsertItem 308wcLoadList 309wcLoadText 310wcSaveList 311wcSaveText 312wsSetItemData 313WWControl 314WWExecute 315WWPoke 316WWRequest 317

Funkcje matematyczneAbs 164ArcCos 183ArcSin 184ArcTan 184Cos 186Exp 191Int 217, 218Log 223LogN 224Pi 225Round 241Sgn 245Sin 247Sqrt 282Tan 299Trunc 300

Funkcje recepturError Numbers 338Komunikaty o b³êdach 338RecipeDelete 232RecipeGetMessage 233, 340RecipeLoad 234RecipeSave 235RecipeSelectNextRecipe 236RecipeSelectPreviousRecipe 237RecipeSelectRecipe 238RecipeSelectUnit 239Usuwanie problemów 338Wyœwietlanie komunikatów b³êdów 340

Funkcje skryptowe QuickScript 163Funkcje SPC

SPCConnect 248SPCDatasetDlg 248SPCDisconnect 249SPCDisplayData 249SPCLocateScooter 250SPCMoveScooter 250SPCSaveSample 251SPCSelectDataset 251SPCSelectProduct 251SPCSetControlLimits 252SPCSetMeasurement 252SPCSetProductCollected 253SPCSetProductDislpayed 253SPCSetRangeLimits 254SPCSetSpecLimits 254

Funkcje systemoweActivateApp 165FileCopy 191

Opis funkcji, pól i zmiennych systemowych

360

FileDelete 193FileMove 194FileReadFields 196FileReadMessage 197FileWriteFields 198FileWriteMessage 199GetNodeName 199InfoAppActive 214InfoAppTitle 214InfoDisk 215InfoFile 216InfoInTouchAppDir 217IsAnyAsynchFunctionBusy 222ReloadWindowViewer 240RestartWindowViewer 240StartApp 283

Funkcje systemu bezpieczeñstwaChangePassword 185, 225

Funkcje tekstoweDText 190StringASCII 283StringChar 284StringFromIntg 284StringFromReal 285StringFromTime 286StringFromTimeLocal 287StringInString 288StringLeft 289StringLen 290StringLow 290StringMid 291StringReplace 292StringRight 293StringSpace 294StringTest 295StringToInt 296StringToReal 297StringTrim 298StringUpper 299Tekst 300

Funkcje trendów historycznychHTGetLastError 203HTGetPenName 204HTGetTimeAtScooter 204HTGetTimeStringAtScooter 205HTGetValue 206HTGetValueAtScooter 207HTGetValueAtZone 208HTScrollLeft 210HTScrollRight 210HTSelectTag 211HTSetPenName 211HTUpdateToCurrentTime 212HTZoomIn 212HTZoomOut 213PrintHT 227

Funkcje us³ugi terminalaTseGetClientID 301TseQueryRunningOnClient 302TseQueryRunningOnConsole 301

GGOT - Funkcje

GetPropertyD 200GetPropertyI 200GetPropertyM 201SetPropertyD 243SetPropertyI 244SetPropertyM 244

II/O

Typy zmiennych 39

KKody b³êdów baz danych Sybase 355Komunikaty b³êdów dBase 355Komunikaty b³êdów SQL Serwer 355Komunikaty o b³êdach

Alarmów Funkcje 337Baza danych Oracle 354Baza danych Sybase 355dBase 355Funkcje receptur 338Obiekty steruj¹ce okien - Funkcje 337SQL Server 355Wyœwietlanie komunikatów b³êdów receptur 340

Komunikaty o b³êdach bazy danych Oracle 354

MMatryca typów zmiennych 40

NNazwy elementów SPC DDE

Bie¿¹ca próbka 343Rêczne wprowadzanie danych 347Selection 349Sterowanie i wyœwietlanie 340

OObiekty steruj¹ce okien - Funkcje

Error Numbers 337Komunikaty o b³êdach 337wcAddItem 302wcClear 303wcDelete 303wcDeleteSelection 304wcErrorMessage 304, 337wcFindItem 305wcGetItem 306wcGetItemData 307wcInsertItem 308wcLoadList 309wcLoadText 310wcSaveList 311wcSaveText 312

Opis funkcji, pól i zmiennych systemowych

361

wsSetItemData 313Obiekty steruj¹ce okien - Pola

.Caption 98

.Enabled 102

.ListCount 107

.NewIndex 124

.ReadOnly 143

.TopIndex 155

.Value 161

.Visible 162OLE for Process Control (OPC) 135OLE_CreateObject Function 324

PPola alarmów

.Ack 46

.AckDev 48, 49

.AckROC 50

.AckValue 51

.Alarm 52

.AlarmAccess 53

.AlarmAckModel 54

.AlarmClass 55

.AlarmComment 56

.AlarmDate 57

.AlarmDev 58

.AlarmDevCount 59

.AlarmDevDeadband 59

.AlarmDevUnAckCount 60

.AlarmDisabled 60

.AlarmDsc 61

.AlarmDscCount 62

.AlarmDscDisabled 62

.AlarmDscEnaabled 63

.AlarmDscInhibitor 64

.AlarmDscUnAckCount 65

.AlarmEnabled 65

.AlarmGroup 66

.AlarmGroupSel 67

.AlarmHiDisabled 67

.AlarmHiEnabled 68

.AlarmHiHiDisabled 68

.AlarmHiHiEnabled 69

.AlarmHiInhibitor 70, 71

.AlarmLimit 72

.AlarmLoDisabled 72

.AlarmLoEnabled 73

.AlarmLoInhibitor 74

.AlarmLoLoDisabled 75

.AlarmLoLoEnabled 75

.AlarmLoLoInhibitor 76

.AlarmMajDevDisabled 77

.AlarmMajDevEnabled 77

.AlarmMajDevInhibitor 78

.AlarmMinDevDisabled 79

.AlarmMinDevEnabled 79

.AlarmMinDevInhibitor 80

.AlarmName 81

.AlarmOprName 82

.AlarmOprNode 83

.AlarmPri 84

.AlarmProv 85

.AlarmROC 86

.AlarmROCCount 87

.AlarmROCDisabled 87

.AlarmROCEnabled 88

.AlarmROCInhibitor 89

.AlarmROCUnAckCount 90

.AlarmState 90

.AlarmTime 91

.AlarmTotalCount 91

.AlarmType 92

.AlarmUnAckCount 92

.AlarmUserDefNum1 93

.AlarmUserDefNum2 94

.AlarmUserDefStr 95

.AlarmValDeadband 96

.AlarmValue 96

.AlarmValueCount 97

.AlarmValueUnAckCount 97

.DevTarget 101

.Freeze 103

.HiHiLimit 104

.HiHiSet 104

.HiHiStatus 105

.HiLimit 105

.HiSet 106

.HiStatus 106

.ListChanged 107

.LoLimit 108

.LoLoLimit 109

.LoLoSet 110

.LoLoStatus 111

.LoSet 109

.LoStatus 112

.MajorDevPct 112

.MajorDevSet 113

.MajorDevStatus 114

.MinorDevPct 119

.MinorDevSet 119

.MinorDevStatus 120

.NextPage 124

.Normal 125

.NumAlarms 126

.PageNum 127

.PendingUpdates 131

.PrevPage 132

.PriFrom 133

.PriTo 133

.ProviderReq 134

.ProviderRet 134

.QueryState 141

.QueryType 142

.ROCPct 145

.ROCSet 145

.ROCStatus 146

.Successful 150

.TotalPages 156

.UnAck 157Pola trendów historycznych

.ChartLength 99

Opis funkcji, pól i zmiennych systemowych

362

.ChartStart 100

.DisplayMode 101

.MaxRange 116

.MinRange 121

.Pen1-.Pen8 128

.ScooterLockLeft 147

.ScooterLockRight 147

.ScooterPosLeft 148

.ScooterPosRight 149

.UpdateCount 158

.UpdateInProgress 159

.UpdateTrend 160Pola zmiennych

.Ack 46

.AckDev 48, 49

.AckROC 50

.AckValue 51

.Alarm 52

.AlarmAccess 53

.AlarmAckModel 54

.AlarmClass 55

.AlarmComment 56

.AlarmDate 57

.AlarmDev 58

.AlarmDevCount 59

.AlarmDevDeadband 59

.AlarmDevUnAckCount 60

.AlarmDisabled 60

.AlarmDsc 61

.AlarmDscCount 62

.AlarmDscDisabled 62

.AlarmDscEnabled 63

.AlarmDscInhibitor 64

.AlarmDscUnAckCount 65

.AlarmEnabled 65

.AlarmGroup 66

.AlarmGroupSel 67

.AlarmHiDisabled 67

.AlarmHiEnabled 68

.AlarmHiHiDisabled 68

.AlarmHiHiEnabled 69

.AlarmHiInhibitor 70, 71

.AlarmLimit 72

.AlarmLoDisabled 72

.AlarmLoEnabled 73

.AlarmLoInhibitor 74

.AlarmLoLoDisabled 75

.AlarmLoLoEnabled 75

.AlarmLoLoInhibitor 76

.AlarmMajDevDisabled 77

.AlarmMajDevEnabled 77

.AlarmMajDevInhibitor 78

.AlarmMinDevDisabled 79

.AlarmMinDevEnabled 79

.AlarmMinDevInhibitor 80

.AlarmName 81

.AlarmOprName 82

.AlarmOprNode 83

.AlarmPri 84

.AlarmProv 85

.AlarmROC 86

.AlarmROCCount 87

.AlarmROCDisabled 87

.AlarmROCEnabled 88

.AlarmROCInhibitor 89

.AlarmROCUnAckCount 90

.AlarmState 90

.AlarmTime 91

.AlarmTotalCount 91

.AlarmType 92

.AlarmUnAckCOunt 92

.AlarmUserDefNum1 93

.AlarmUserDefNum2 94

.AlarmUserDefStr 95

.AlarmValDeadband 96

.AlarmValue 96

.AlarmValueCount 97

.AlarmValueUnAckCount 97

.Caption 98

.ChartLength 99

.ChartStart 100

.Comment 100

.DevTarget 101

.DisplayMode 101

.Enabled 102

.EngUnits 103

.Freeze 103

.HiHiLimit 104

.HiHiSet 104

.HiHiStatus 105

.HiLimit 105

.HiSet 106

.HiStatus 106

.ListChanged 107

.ListCount 107

.LoLimit 108

.LoLoLimit 109

.LoLoSet 110

.LoLoStatus 111

.LoSet 109

.LoStatus 112

.MajorDevPct 112

.MajorDevSet 113

.MajorDevStatus 114

.MaxEU 115

.MaxRange 116

.MaxRaw 117

.MinEU 118

.MinorDevPct 119

.MinorDevSet 119

.MinorDevStatus 120

.MinRange 121

.MinRaw 122

.Name 122

.NewIndex 124

.NextPage 124

.Normal 125

.NumAlarms 126

.OffMsg 126

.OnMsg 127

.PageNum 127

.Pen1-.Pen8 128

Opis funkcji, pól i zmiennych systemowych

363

.PendingUpdates 131

.PrevPage 132

.PriFrom 133

.PriTo 133

.ProviderReq 134

.ProviderRet 134

.Quality 135

.QualityLimit 138

.QualityLimitString 139

.QualityStatus 139

.QualityStatusString 139

.QualitySubstatus 140

.QualitySubstatusString 141

.QueryState 141

.QueryType 142

.RawValue 143

.ReadOnly 143

.Reference 144

.ReferenceComplete 144

.ROCPct 145

.ROCSet 145

.ROCStatus 146

.ScooterLockLeft 147

.ScooterLockRight 147

.ScooterPosLeft 148

.ScooterPosRight 149

.Successful 150

.TagID 151

.TimeDate 151

.TimeDateString 151

.TimeDateTime 152

.TimeDay 152

.TimeHour 152

.TimeMinute 153

.TimeMonth 153

.TimeMsec 153

.TimeSecond 154

.TimeTime 154

.TimeTimeString 154

.TimeYear 155

.TopIndex 155

.TotalPages 156

.UnAck 157

.UpdateCount 158

.UpdateInProgress 159

.UpdateTrend 160

.Value 160, 161

.Visible 162Pole bitowe pod-statusu 139

RRecipeGetMessage 340Ró¿ne funkcje

DialogStringEntry 186DialogValueEntry 188Hide 202Hideself 202IOGetApplication 218IOGetNode 219IOGetTopic 219

IOReinitialize 219IOSetAccessName 220IOSetItem 221IOStartUninitConversations 222LogMessage 224PlaySound 225PrintWindow 228, 230SendKeys 242Show 245ShowAt 246ShowHome 246ShowTopLeftAt 247WWControl 314

SSpecyfikacja jakoœci danych Fieldbus 135SQLErrorMsg 352statusy jakoœci 135System rejestrowania danych historycznych - Zmienne

$HistoricalLogging 27

TTypy zmiennych 37

I/O 39I/O Discrete 39I/O Integer 39I/O Real 39

IndirectIndirect Analog 39Indirect Discrete 39Indirect Message 39

Inne 39Hist Trend (Trend historyczny) 40Tag ID (Identyfikator zmiennej) 40Zmienne typu SuperTag 40

Memory 38Memory Discrete 38Memory Integer 38Memory Message 38Memory Real 38

UUsuwanie problemów

Funkcje receptur 338Zestawienie funkcji SQL 352

WWewnêtrzne zmienne systemowe 21WWDDE Functions

WWExecute 315WWPoke 316WWRequest 317

ZZabezpieczaj¹ce zmienne systemowe

Opis funkcji, pól i zmiennych systemowych

364

$AccessLevel 21$ChangePassword 25$ConfigureUsers 25$InactivityTimeout 28$InactivityWarning 29$Operator 32$OperatorEntered 33$PasswordEntered 34

Zestawienie funkcji SQLConnectionID Variable 258ConnectString Variable 258Komunikaty o b³êdach 352ResultCode 352SLQRollback 270SQLAppendStatement 255SQLClearParam 255SQLClearStatement 255SQLClearTable 256SQLCommit 257SQLConnect 258SQLCreateTable 260SQLDelete 261SQLDisconnect 262SQLDropTable 262SQLEnd 262SQLErrorMsg 263, 352SQLExecute 263SQLFirst 264SQLGetRecord 264SQLInsert 265SQLInsertEnd 265SQLInsertExecute 266SQLInsertPrepare 266SQLLast 267SQLLoadStatement 267SQLManageDSN 268SQLNext 268SQLNumRows 268SQLPrepareStatement 269SQLPrev 269SQLSelect 271SQLSetParamChar 274SQLSetParamDate 274SQLSetParamDateTime 275SQLSetParamDecimal 275SQLSetParamFloat 276SQLSetParamInt 276SQLSetParamLong 276SQLSetParamNull 277SQLSetParamTime 278SQLSetStatement 278SQLTransact 279SQLUpdate 281SQLUpdateCurrent 282

Zmienne systemowe$AccessLevel 21$AlarmPrinterError 22$AlarmPrinterNoPaper 22$AlarmPrinterOffline 23$AlarmPrinterOverflow 23$ApplicationChanged 24

$ApplicationVersion 24$ChangePassword 25$ConfigureUsers 25$Date 26$DateString 26$DateTime 26$Day 27$HistoricalLogging 27$Hour 28$InactivityTimeout 28$InactivityWarning 29$LogicRunning 29$Minute 30$Month 30$Msec 30$NewAlarm 31$ObjHor 31$ObjVer 31$Operator 32$OperatorEntered 33$PasswordEntered 34$Second 34$StartDdeConversations 34$System 35$Time 35$TimeString 35$VerifiedUserName 36$Year 36

Opis funkcji, pól i zmiennych systemowych