LI ASK OF IT800

background image

Wonderware

®

FactorySuite™

InTouch

®

Opis funkcji, pól i zmiennych

systemowych

Wersja A

Ostatnia wersja: Wrzesień 2002

background image

Invensys Systems, Inc.

background image

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 Street
Foxboro, MA 02035
(949) 727-3200
http://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.

background image
background image

Spis treści

5

Opis funkcji, pól i zmiennych systemowych

Spis treści

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

Konwencja opisu .................................................................................. 17
Informacje o Podręczniku użytkownika............................................... 18
Pomoc techniczna................................................................................. 19
Licencja 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....................................................................... 3
4

background image

6

Spis treści

Opis funkcji, pól i zmiennych systemowych

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

ROZDZIAŁ 2: Pola zmiennych.........................37

Typy zmiennych ....................................................................................37
Zmienne typu pamięciowego (Memory)...............................................38

Zmienne typu I/O ..............................................................................38
Indirect Discrete, Indirect Analog, Indirect Message........................39
Pozostał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

background image

Spis treści

7

Opis funkcji, pól i zmiennych systemowych

.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

background image

8

Spis treści

Opis funkcji, pól i zmiennych systemowych

.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

background image

Spis treści

9

Opis funkcji, pól i zmiennych systemowych

.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

background image

10

Spis treści

Opis funkcji, pól i zmiennych systemowych

.Value...................................................................................................160
.Value...................................................................................................161
.Visible ................................................................................................162

ROZDZIAŁ 3: Funkcje skryptowe .................163

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

background image

Spis treści

11

Opis funkcji, pól i zmiennych systemowych

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

background image

12

Spis treści

Opis funkcji, pól i zmiennych systemowych

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

background image

Spis treści

13

Opis funkcji, pól i zmiennych systemowych

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

background image

14

Spis treści

Opis funkcji, pól i zmiennych systemowych

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

background image

Spis treści

15

Opis funkcji, pól i zmiennych systemowych

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

ROZDZIAŁ 4: Automatyzacja OLE w programie

InTouch.............................................................319

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

Format wyrażeń .............................................................................. 320
Tworzenie obiektu: OLE_CreateObject ......................................... 324
Zarządzanie obiektem: OLE_ReleaseObject.................................. 325
Sprawdzanie aktywności obiektu: OLE_IsObjectValid ................. 326
Odczytywanie wartości właściwości .............................................. 326
Ustawianie właściwości.................................................................. 328
Wywoływanie metody .................................................................... 329
Obsługa błędów w programie InTouch........................................... 332
Najczę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 ............... 338

Nazwy elementów SPC DDE............................................................. 340

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

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

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

background image

16

Spis treści

Opis funkcji, pól i zmiennych systemowych

background image

Wprowadzenie

17

Opis funkcji, pól i zmiennych systemowych

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.

background image

18

Zanim rozpoczniesz

Opis funkcji, pól i zmiennych systemowych

Informacje o Podręczniku użytkownika

Jeż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ści

W 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.

background image

Wprowadzenie

19

Opis funkcji, pól i zmiennych systemowych

Pomoc techniczna

Dział 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 FactorySuite

Informacje 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.

background image

20

Zanim rozpoczniesz

Opis funkcji, pól i zmiennych systemowych

background image

Zmienne systemowe

21

Opis funkcji, pól i zmiennych systemowych

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.

$AccessLevel

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

Kategoria

bezpieczeństwo

Sposó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 9999

Przykł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 THEN

Show "Access Denied"; {Wy

ś

wietlenie komunikatu

informuj

ą

cego o braku mo

ż

liwo

ś

ci zalogowania}

ELSE

Show "Access Denied"; {Wy

ś

wietlenie komunikatu

informuj

ą

cego o mo

ż

liwo

ś

ci zalogowania}

ENDIF;

Patrz również

$Operator, $OperatorEntered, $PasswordEntered; $ConfigureUsers

background image

22

Rozdział 1

Opis funkcji, pól i zmiennych systemowych

$AlarmPrinterError

$AlarmPrinterNoPaper

Błąd drukarki alarmów.

Kategoria

alarmy

Sposó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łąd

Przykł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 THEN

DisplayMessageTag = "Error on alarm printer";

ELSE

DisplayMessageTag = "No error on alarm printer";

ENDIF;

Patrz również

$AlarmPrinterNoPaper, $AlarmPrinterOffline, $AlarmPrinterOverflow

Zmienna ta sygnalizuje brak papieru w drukarce alarmów.

Kategoria

alarmy

Sposó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 papieru

Przykł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

background image

Zmienne systemowe

23

Opis funkcji, pól i zmiennych systemowych

$AlarmPrinterOffline

$AlarmPrinterOverflow

Zmienna ta sygnalizuje brak gotowości do pracy drukarki alarmów.

Kategoria

alarmy

Sposó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 THEN

Call 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

alarmy

Sposó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łniony

Przykł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

background image

24

Rozdział 1

Opis funkcji, pól i zmiennych systemowych

$ApplicationChanged

$ApplicationVersion

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

Kategoria

aplikacja

Sposó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

aplikacja

Sposó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

background image

Zmienne systemowe

25

Opis funkcji, pól i zmiennych systemowych

$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ństwo

Sposó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

1

Przykł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ństwo

Sposó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

1

Przykł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

background image

26

Rozdział 1

Opis funkcji, pól i zmiennych systemowych

$Date

$DateString

$DateTime

Wartością tej zmiennej jest całkowita liczba dni, które upłynęły od 1/1/70.

Kategoria

system

Sposó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

system

Sposó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

system

Sposób użycia

$DateTime

Uwagi

-

Typ danych

Real (tylko odczyt)

Przykład(y)

dayvalue = 86400 * $DateTime;

If StringFromTime(Dayvalue,4) == "Fri" THEN

DisplayMessageTag = "It's Friday!";

ENDIF;

Patrz również

$Date, $DateString, $Day, $Month, $Year, $Time, $TimeString

background image

Zmienne systemowe

27

Opis funkcji, pól i zmiennych systemowych

$Day

$HistoricalLogging

Wartością tej zmiennej jest bieżący dzień miesiąca.

Kategoria

system

Sposó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 historyczne

Sposó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;

background image

28

Rozdział 1

Opis funkcji, pól i zmiennych systemowych

$Hour

$InactivityTimeout

Wartością tej zmiennej jest bieżąca godzina dnia.

Kategoria

system

Sposó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ństwo

Sposó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ż

$InactivityWarning

Przykł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

background image

Zmienne systemowe

29

Opis funkcji, pól i zmiennych systemowych

$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ństwo

Sposó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 THEN

Show "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

system

Sposó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)

background image

30

Rozdział 1

Opis funkcji, pól i zmiennych systemowych

$Minute

$Month

$Msec

Wartością tej zmiennej jest bieżąca minuta godziny.

Kategoria

system

Sposó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 THEN

LogMessage("Plik istnieje!");

ENDIF;

Patrz również

$DateTime, $Hour, $Msec, $Second, $Time, $TimeString

Wartością tej zmiennej jest bieżący miesiąc roku.

Kategoria

system

Sposó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

system

Sposó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

background image

Zmienne systemowe

31

Opis funkcji, pól i zmiennych systemowych

$NewAlarm

$ObjHor

$ObjVer

Zmienna ta sygnalizuje wystąpienie nowego alarmu.

Kategoria

alarmy

Sposó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

system

Sposó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

system

Sposób użycia

$ObjVer

Uwagi

-

Typ danych

Integer (tylko odczyt)

Patrz również

$ObjHor

background image

32

Rozdział 1

Opis funkcji, pól i zmiennych systemowych

$Operator

$OperatorDomain

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

Kategoria

bezpieczeństwo

Sposó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" THEN

Show "Control Panel Window";

ELSE

Show "Wrong Operator";

ENDIF;

Patrz również

$OperatorEntered, $AccessLevel, $PasswordEntered,
$ChangePassword, $ConfigureUsers

Kategoria

Bezpieczeństwo

Sposó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/A

Typ danych

String

Przykład(y)

$Operator = "john";

$OperatorDomain="CORPORATE_HQ";

Patrz również

$Operator

background image

Zmienne systemowe

33

Opis funkcji, pól i zmiennych systemowych

$OperatorDomainEntered

$OperatorEntered

$OperatorName

Kategoria

Bezpieczeństwo

Sposó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/A

Typ danych

String

Przykł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ństwo

Sposó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ństwo

Sposó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/A

Typ danych

String

Przykład(y)

$Operator = "john";

$OperatorName = "John Smith";

Patrz również

$Operator

background image

34

Rozdział 1

Opis funkcji, pól i zmiennych systemowych

$PasswordEntered

$Second

$StartDdeConversations

Zmienna ta służy do wprowadzania właściwego hasła.

Kategoria

bezpieczeństwo

Sposó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

system

Sposó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

system

Sposób użycia

$StartDdeConversations

Uwagi

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

Typ danych

Discrete (odczyt/zapis)

background image

Zmienne systemowe

35

Opis funkcji, pól i zmiennych systemowych

$System

$Time

$TimeString

Standardowa, nadrzędna grupa alarmowa.

Kategoria

alarmy

Sposó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

system

Sposó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

system

Sposó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

background image

36

Rozdział 1

Opis funkcji, pól i zmiennych systemowych

$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ństwo

Sposó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

String

Zakres 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

system

Sposó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

background image

Pola zmiennych

37

Opis funkcji, pól i zmiennych systemowych

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 zmiennych

Przy 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.

background image

38

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

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 Discrete

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

Memory Integer

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

Memory Real

Zmienna typu rzeczywistego. Zmienna typu rzeczywistego może przyjmować
wartości między +3.4e

38

. 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 Message

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

Zmienne typu I/O

Wszystkie 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.

background image

Pola zmiennych

39

Opis funkcji, pól i zmiennych systemowych

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 Discrete

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

I/O Integer

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

I/O Real

Zmienna typu rzeczywistego. Zmienna typu rzeczywistego może przyjmować
wartości między +3.4e

38

. 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 Message

Zmienna 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 zmiennych

Dostę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.

background image

40

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

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 SuperTag

InTouch 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 zmiennych

Tabela 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.

background image

Pola zmiennych

41

Opis funkcji, pól i zmiennych systemowych

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

Typy zmiennych:

Memory

I/O

Indirect

Inne

Discrete

Integer

Real

Discrete

Integer

Real

Discrete

Analog

Alarm Gr

oup

Hist

T

ren

d

Alarmowanie r

o

zproszone

Obiekt/ kontrolka

Ta

g

ID

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

background image

42

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

.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

Discrete

Integer

Real

Discrete

Integer

Real

Discrete

Analog

Alarm Gr

oup

Hist

T

ren

d

Alarmowanie rozproszone Obiekt/ kontrolka

Ta

g

ID

background image

Pola zmiennych

43

Opis funkcji, pól i zmiennych systemowych

.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

Di

sc

re

te

In

te

ger

Re

al

Di

sc

re

te

In

te

ger

Re

al

Di

sc

re

te

An

al

og

Alarm Group

H

ist

T

ren

d

Alarmowanie rozproszone O

b

iekt/ kontrolka

Ta

g

ID

background image

44

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

.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

Discrete

Integer

Real

Discrete

Integer

Real

Discrete

Analog

Alarm Gr

oup

Hist

T

ren

d

Alarmowanie rozproszone Obiekt/ kontrolka

Ta

g

ID

background image

Pola zmiennych

45

Opis funkcji, pól i zmiennych systemowych

.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

Di

sc

re

te

In

te

ger

Re

al

Di

sc

re

te

In

te

ger

Re

al

Di

sc

re

te

An

al

og

Alarm Group

H

ist

T

ren

d

Alarmowanie rozproszone O

b

iekt/ kontrolka

Ta

g

ID

background image

46

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

.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

alarmy

Sposó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

Discrete

Integer

Real

Discrete

Integer

Real

Discrete

Analog

Alarm Gr

oup

Hist

T

ren

d

Alarmowanie rozproszone Obiekt/ kontrolka

Ta

g

ID

background image

Pola zmiennych

47

Opis funkcji, pól i zmiennych systemowych

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

1

Przykł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

background image

48

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

.AckDev

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

Kategoria

alarmy

Sposó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

1

Przykł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

background image

Pola zmiennych

49

Opis funkcji, pól i zmiennych systemowych

.AckDsc

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

Kategoria

alarmy

Sposó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

1

Przykł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

background image

50

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

.AckROC

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

Kategoria

alarmy

Sposó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

1

Przykł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

background image

Pola zmiennych

51

Opis funkcji, pól i zmiennych systemowych

.AckValue

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

Kategoria

alarmy

Sposó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

1

Przykł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

background image

52

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

.Alarm

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

Kategoria

alarmy

Sposó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 1

Przykł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) THEN

MyAlarmMessage="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()

background image

Pola zmiennych

53

Opis funkcji, pól i zmiennych systemowych

.AlarmAccess

Pole 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

alarmy

Sposób użycia

GetPropertyM("NazwaObiektu.AlarmAccess",Zmienna);

Parametr

Opis

NazwaObiektu

Nazwa Obiektu Alarmu Rozproszonego

Zmienna

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,

background image

54

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

.AlarmAckModel

Monitorowanie modelu potwierdzenia związanego ze zmienną:

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

Kategoria

alarmy

Sposó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) THEN

MyAlarmMessage="PumpStation is an Event alarm";

ENDIF;

Patrz również

.Alarm, .Ack, .UnAck, .AckDev, .AckDSC, .AckROC

background image

Pola zmiennych

55

Opis funkcji, pól i zmiennych systemowych

.AlarmClass

Pole 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

alarmy

Sposó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

background image

56

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

.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

alarmy

Pierwszy 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",Zm

ienna);

Parametr

Opis

Zmienna

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

background image

Pola zmiennych

57

Opis funkcji, pól i zmiennych systemowych

.AlarmDate

Pole 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

alarmy

Sposób użycia

[ErrorNumber=]GetPropertyM("NazwaObiektu.AlarmDate",

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.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

background image

58

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

.AlarmDev

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

Kategoria

alarmy

Sposó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 1

Przykł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) THEN

MyAlarmMessage="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

background image

Pola zmiennych

59

Opis funkcji, pól i zmiennych systemowych

.AlarmDevCount

.AlarmDevDeadband

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

Kategoria

alarmy

Sposó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

alarmy

Sposó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

background image

60

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

.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

alarmy

Sposó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

alarmy

Sposó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łączone

Przykład(y)

Zamieszczone poniżej wyrażenie włącza alarmy zmiennej Tag1.

Tag1.AlarmDisabled=0;

Patrz również

.AlarmEnabled

background image

Pola zmiennych

61

Opis funkcji, pól i zmiennych systemowych

.AlarmDsc

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

Kategoria

alarmy

Sposó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 1

Przykład(y)

Zamieszczone poniżej wyrażenie sprawdza, czy zmienna Tag1 jest w stanie
alarmu typu Discrete.

IF (Tag1.AlarmDsc == 1) THEN

MyAlarmMessage="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

background image

62

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

.AlarmDscCount

.AlarmDscDisabled

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

Kategoria

alarmy

Sposó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

alarmy

Sposó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łączone

Przykład(y)

Zamieszczone poniżej wyrażenie włącza alarmy typu Discrete zmiennej
Tag1:

Tag1.AlarmDscDisabled=0;

Patrz również

.AlarmDscEnabled

background image

Pola zmiennych

63

Opis funkcji, pól i zmiennych systemowych

.AlarmDscEnabled

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

Kategoria

alarmy

Sposó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

background image

64

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

.AlarmDscInhibitor

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

Kategoria

alarmy

Sposó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 wstrzymywanie
Alarmy dyskretne są wyłączone dla zmiennej alarmowanej

SomeIndirectTag = 0;

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

background image

Pola zmiennych

65

Opis funkcji, pól i zmiennych systemowych

.AlarmDscUnAckCount

.AlarmEnabled

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

Kategoria

alarmy

Sposó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

alarmy

Sposó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

background image

66

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

.AlarmGroup

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

Kategoria

alarmy

Sposó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

background image

Pola zmiennych

67

Opis funkcji, pól i zmiennych systemowych

.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

alarmy

Sposó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

alarmy

Sposó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

background image

68

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

.AlarmHiEnabled

.AlarmHiHiDisabled

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

Kategoria

alarmy

Sposó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

alarmy

Sposó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

background image

Pola zmiennych

69

Opis funkcji, pól i zmiennych systemowych

.AlarmHiHiEnabled

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

Kategoria

alarmy

Sposó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

background image

70

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

.AlarmHiHiInhibitor

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

Kategoria

alarmy

Sposó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 wstrzymywanie
Alarmy HiHi są wyłączone dla zmiennej alarmowanej

SomeIndirectTag = 0;

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

Patrz również

.AlarmHiInhibitor, .AlarmLoInhibitor, .AlarmLoLoInhibitor

background image

Pola zmiennych

71

Opis funkcji, pól i zmiennych systemowych

.AlarmHiInhibitor

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

Kategoria

alarmy

Sposó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 wstrzymywanie
Alarmy typu Hi są wyłączone dla zmiennej alarmowanej

SomeIndirectTag = 0;

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

Patrz również

.AlarmHiHiInhibitor, .AlarmLoInhibitor, .AlarmLoLoInhibitor

background image

72

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

.AlarmLimit

.AlarmLoDisabled

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

Kategoria

alarmy

Sposó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

alarmy

Sposó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

background image

Pola zmiennych

73

Opis funkcji, pól i zmiennych systemowych

.AlarmLoEnabled

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

Kategoria

alarmy

Sposó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

background image

74

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

.AlarmLoInhibitor

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

Kategoria

alarmy

Sposó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 wstrzymywanie
Alarmy typu Lo są wyłączone dla zmiennej alarmowanej

SomeIndirectTag = 0;

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

Patrz również

.AlarmHiInhibitor, .AlarmHiHiInhibitor, .AlarmLoLoInhibitor

background image

Pola zmiennych

75

Opis funkcji, pól i zmiennych systemowych

.AlarmLoLoDisabled

.AlarmLoLoEnabled

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

Kategoria

alarmy

Sposó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

alarmy

Sposó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

background image

76

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

.AlarmLoLoInhibitor

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

Kategoria

alarmy

Sposó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 wstrzymywanie
Alarmy typu LoLo są wyłączone dla zmiennej alarmowanej

SomeIndirectTag = 0;

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

Patrz również

.AlarmHiInhibitor, .AlarmHiHiInhibitor, .AlarmLoInhibitor

background image

Pola zmiennych

77

Opis funkcji, pól i zmiennych systemowych

.AlarmMajDevDisabled

.AlarmMajDevEnabled

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

Kategoria

alarmy

Sposó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

alarmy

Sposó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

background image

78

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

.AlarmMajDevInhibitor

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

Kategoria

alarmy

Sposó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 wstrzymywanie
Alarmy typu odchyleniowy duży są wyłączone dla zmiennej alarmowanej

SomeIndirectTag = 0;

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

Patrz również

.AlarmMinDevInhibitor

background image

Pola zmiennych

79

Opis funkcji, pól i zmiennych systemowych

.AlarmMinDevDisabled

.AlarmMinDevEnabled

Wyłącza i/lub włącza zdarzenia i alarmy typu odchyleniowy mały.

Kategoria

alarmy

Sposó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

alarmy

Sposó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

background image

80

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

.AlarmMinDevInhibitor

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

Kategoria

alarmy

Sposó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 wstrzymywanie
Alarmy typu odchyleniowy mały są wyłączone dla zmiennej alarmowanej

SomeIndirectTag = 0;

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

Patrz również

.AlarmMajDevInhibitor

background image

Pola zmiennych

81

Opis funkcji, pól i zmiennych systemowych

.AlarmName

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

Kategoria

alarmy

Sposó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

background image

82

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

.AlarmOprName

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

Kategoria

alarmy

Sposó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

background image

Pola zmiennych

83

Opis funkcji, pól i zmiennych systemowych

.AlarmOprNode

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

Kategoria

alarmy

Sposó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

background image

84

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

.AlarmPri

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

Kategoria

alarmy

Sposób użycia

[ErrorNumber=]GetPropertyM("NazwaObiektu.AlarmPri",

Zmienna);

Parametr

Opis

NazwaObiektu

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

Zmienna

Dowolna zmienna typu Analog

Typ 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

background image

Pola zmiennych

85

Opis funkcji, pól i zmiennych systemowych

.AlarmProv

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

Kategoria

alarmy

Sposó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

background image

86

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

.AlarmROC

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

Kategoria

alarmy

Sposó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 1

Przykł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) THEN

MyAlarmMessage="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

background image

Pola zmiennych

87

Opis funkcji, pól i zmiennych systemowych

.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

alarmy

Sposó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

alarmy

Sposó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

background image

88

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

.AlarmROCEnabled

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

Kategoria

alarmy

Sposó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

background image

Pola zmiennych

89

Opis funkcji, pól i zmiennych systemowych

.AlarmROCInhibitor

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

Kategoria

alarmy

Sposó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 wstrzymywanie
Alarmy szybkości zmiany są wyłączone dla zmiennej alarmowanej

SomeIndirectTag = 0;

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

background image

90

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

.AlarmROCUnAckCount

.AlarmState

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

Kategoria

Alarmy

Sposó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

alarmy

Sposób użycia

[ErrorNumber=]GetPropertyM("NazwaObiektu.AlarmState",

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.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

background image

Pola zmiennych

91

Opis funkcji, pól i zmiennych systemowych

.AlarmTime

.AlarmTotalCount

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

Kategoria

alarmy

Sposó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

alarmy

Sposó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

background image

92

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

.AlarmType

.AlarmUnAckCount

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

Kategoria

alarmy

Sposó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

alarmy

Sposó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

background image

Pola zmiennych

93

Opis funkcji, pól i zmiennych systemowych

.AlarmUserDefNum1

Po 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

alarmy

Sposó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

background image

94

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

.AlarmUserDefNum2

Po 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

alarmy

Sposó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

background image

Pola zmiennych

95

Opis funkcji, pól i zmiennych systemowych

.AlarmUserDefStr

Po 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

alarmy

Sposó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

background image

96

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

.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

alarmy

Sposó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

alarmy

Sposó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

background image

Pola zmiennych

97

Opis funkcji, pól i zmiennych systemowych

.AlarmValueCount

.AlarmValueUnAckCount

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

Kategoria

alarmy

Sposó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

alarmy

Sposó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

background image

98

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

.Caption

Pole to definiuje informację, która ma zostać wyświetlona jako opis pola
wyboru.

Kategoria

obiekty sterujące Windows

Sposó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()

background image

Pola zmiennych

99

Opis funkcji, pól i zmiennych systemowych

.ChartLength

Pole to definiuje długość (w jednostkach czasu) wykresu trendu
historycznego.

Kategoria

dane historyczne

Sposó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

background image

100

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

.ChartStart

.Comment

Pole to definiuje datę i czas początku wykresu trendu historycznego.

Kategoria

dane historyczne

Sposó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

zmienna

Sposó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.

background image

Pola zmiennych

101

Opis funkcji, pól i zmiennych systemowych

.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

alarmy

Sposó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 historyczne

Sposó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

background image

102

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

.Enabled

Pole to określa, czy obiekt sterujący może reagować na zdarzenia
wygenerowane przez użytkownika.

Kategoria

obiekty sterujące Windows

Sposó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 nieaktywny
1 = Obiekt sterujący jest aktywny
lub,
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()

background image

Pola zmiennych

103

Opis funkcji, pól i zmiennych systemowych

.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

zmienna

Sposó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

alarmy

Sposó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()

background image

104

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

.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

alarmy

Sposó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

alarmy

Sposób użycia

Zmienna.HiHiSet

Parametr

Opis

Zmienna

Dowolna zmienna typu Analog

Uwagi

Pole to może być użyte dla zmiennych Integer lub Real.

Typ danych

Discrete

Zakres 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

background image

Pola zmiennych

105

Opis funkcji, pól i zmiennych systemowych

.HiHiStatus

.HiLimit

Pole to określa, czy wystąpił alarm typu HiHi.

Kategoria

alarmy

Sposó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ępuje

Przykł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) THEN

OperatorMessage="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

alarmy

Sposób użycia

Zmienna.HiLimit

Parametr

Opis

Zmienna

Dowolna zmienna typu 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)

Temperature.HiLimit = 212;

Patrz również

.Alarm, .AlarmValue, .Ack, .HiStatus, .HiSet, .AlarmDisabled,
.AlarmEnabled, .AlarmHiDisabled, .AlarmHiEnabled, .AlarmHiInhibitor

background image

106

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

.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

alarmy

Sposób użycia

Zmienna.HiSet

Parametr

Opis

Zmienna

Dowolna zmienna typu Analog

Uwagi

Pole to może być użyte dla zmiennych Integer lub Real.

Typ danych

Discrete

Zakres 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

alarmy

Sposó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ępuje

Przykł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

background image

Pola zmiennych

107

Opis funkcji, pól i zmiennych systemowych

.ListChanged

.ListCount

Wskazuje, czy występują jakieś nowe alarmy lub aktualizacje dla obiektu
alarmów rozproszonych

Kategoria

alarmy

Sposó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świetlania

Przykł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 okien

Sposó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

background image

108

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

.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 Windows

Sposó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

alarmy

Sposó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

background image

Pola zmiennych

109

Opis funkcji, pól i zmiennych systemowych

.LoLoLimit

.LoSet

Pole to służy do monitorowania i/lub zmiany drugiej dolnej wartości
progowej LoLo dla alarmu progowego.

Kategoria

alarmy

Sposó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

alarmy

Sposób użycia

Zmienna.LoSet

Parametr

Opis

Zmienna

Dowolna zmienna typu Analog

Uwagi

Pole to może być użyte dla zmiennych Integer lub Real.

Typ danych

Discrete

Zakres 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

background image

110

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

.LoLoSet

Zwraca wartość 0 (false) lub 1 (true) w zależności od tego, czy limit LoLo
został ustawiony dla zmiennej typu Analog.

Kategoria

alarmy

Sposób użycia

Zmienna.LoLoSet

Parametr

Opis

Zmienna

Dowolna zmienna typu Analog

Uwagi

Pole to może być użyte dla zmiennych Integer lub Real.

Typ danych

Discrete

Zakres 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

background image

Pola zmiennych

111

Opis funkcji, pól i zmiennych systemowych

.LoLoStatus

Pole to określa, czy w systemie występuje drugi dolny alarm progowy
LoLoLimit.

Kategoria

alarmy

Sposó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ępuje

Przykł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) THEN

OperatorMessage="MyTag has gone into LoLo Alarm";

ENDIF;

Patrz również

.Alarm, .AlarmValue, .Ack, .LoLoLimit, .LoLoSet, .AlarmDisabled,
.AlarmEnabled, .AlarmLoLoDisabled, .AlarmLoLoEnabled,
.AlarmLoLoInhibitor

background image

112

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

.LoStatus

.MajorDevPct

Pole to określa, czy w systemie występuje alarm progowy Low.

Kategoria

alarmy

Sposó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ępuje

Przykł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

alarmy

Sposó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

background image

Pola zmiennych

113

Opis funkcji, pól i zmiennych systemowych

.MajorDevSet

Zwraca 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

alarmy

Sposób użycia

Zmienna.MajorDevSet

Parametr

Opis

Zmienna

Dowolna zmienna typu Analog

Uwagi

Pole to może być użyte dla zmiennych Integer lub Real.

Typ danych

Discrete

Zakres 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

background image

114

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

.MajorDevStatus

Pole to określa, czy w systemie występuje alarm dużego odchylenia.

Kategoria

alarmy

Sposó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ępuje

Przykł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) THEN

OperatorMessage="MyTag has gone into a Major Deviation

Alarm";

ENDIF;

Patrz również

.AckDev, .AlarmDev, .AlarmMajDevDisabled, .AlarmMajDevEnabled,
.AlarmMajDevInhibitor, .MajorDevPct, .MajorDevSet

background image

Pola zmiennych

115

Opis funkcji, pól i zmiennych systemowych

.MaxEU

Pole to zawiera maksymalną wartość w jednostkach inżynierskich (EU) dla
danej zmiennej.

Kategoria

zmienna

Sposó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 = 4096

Minimum 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

background image

116

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

.MaxRange

Pole to określa procentową wartość zakresu jednostek inżynierskich
zmiennej, który powinien być wyświetlany na trendzie dla zmiennej.

Kategoria

dane historyczne

Sposó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
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

background image

Pola zmiennych

117

Opis funkcji, pól i zmiennych systemowych

.MaxRaw

Pole 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

zmienna

Sposó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))THEN

Show "Instrument Failure Window";

ENDIF;

Patrz również

.EngUnits, .MinEU, .MaxEU, .MaxRange, .MinRange, .MinRaw, .RawValue

background image

118

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

.MinEU

Pole to zawiera minimalną wartość w jednostkach inżynierskich (EU) dla
danej zmiennej.

Kategoria

zmienna

Sposó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 = 4096

Minimum 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

background image

Pola zmiennych

119

Opis funkcji, pól i zmiennych systemowych

.MinorDevPct

.MinorDevSet

Pole to służy do monitorowania i/lub zmieniania wartości małego alarmu
odchyleniowego (Minor Deviation).

Kategoria

alarmy

Sposó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

alarmy

Sposób użycia

Zmienna.MinorDevSet

Parametr

Opis

Zmienna

Dowolna zmienna typu Analog

Uwagi

Pole to może być użyte dla zmiennych Integer lub Real.

Typ danych

Discrete

Zakres 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

background image

120

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

.MinorDevStatus

Pole to określa, czy w systemie występuje alarm małego odchylenia wartości.

Kategoria

alarmy

Sposób użycia

Zmienna.MinorDevStatus

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.

Typ danych

Discrete (tylko odczyt)

Zakres wartości

0 = Stan alarmowy nie występuje
1 = Stan alarmowy występuje

Przykł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) THEN

OperatorMessage="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

background image

Pola zmiennych

121

Opis funkcji, pól i zmiennych systemowych

.MinRange

Pole to podaje w procentach dolną granicę zakresu wartości zmiennej, która
ma być wyświetlona w oknie trendu historycznego.

Kategoria

dane historyczne

Sposó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
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

background image

122

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

.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

zmienna

Sposó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

zmienna

Sposó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.

background image

Pola zmiennych

123

Opis funkcji, pól i zmiennych systemowych

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.

background image

124

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

.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 Windows

Sposó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

alarmy

Sposó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

background image

Pola zmiennych

125

Opis funkcji, pól i zmiennych systemowych

.Normal

Wartość pola .Normal jest równa 1, jeżeli zmienna nie jest w stanie
alarmowym.

Kategoria

alarmy

Sposó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) THEN

MyOperatorMessage="Tag1 is OK - No alarms associated

with it";

ELSE

MyOperatorMessage="Tag1 has one or more alarms active!";

ENDIF;

Patrz również

.Alarm, .AlarmDev, .AlarmROC, .AlarmValue

background image

126

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

.NumAlarms

.OffMsg

Pole to zawiera informację o ilości alarmów w Obiekcie Alarmu
Rozproszonego.

Kategoria

alarmy

Sposó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

zmienna

Sposó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

background image

Pola zmiennych

127

Opis funkcji, pól i zmiennych systemowych

.OnMsg

.PageNum

Pole .OnMsg umożliwia użytkownikowi odwoływanie się do pola tekstu
wyświetlanego przy stanie 1 dla zmiennej dyskretnej.

Kategoria

zmienna

Sposó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

alarmy

Sposó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

background image

128

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

.Pen1-.Pen8

Pola te określają przyporządkowanie zmiennych do poszczególnych pisaków
na wykresie trendów historycznych.

Kategoria

dane historyczne

Sposó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;

background image

Pola zmiennych

129

Opis funkcji, pól i zmiennych systemowych

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;

background image

130

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

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( )

background image

Pola zmiennych

131

Opis funkcji, pól i zmiennych systemowych

.PendingUpdates

Wskazuje, czy występują jakiekolwiek nie zakończone aktualizacje dla
Obiektu Alarmu Rozproszonego.

Kategoria

alarmy

Sposó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”,AlarmPendingUpdate

s);

Patrz również

GetProperty

background image

132

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

.PrevPage

Pole 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

alarmy

Sposó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

background image

Pola zmiennych

133

Opis funkcji, pól i zmiennych systemowych

.PriFrom

.PriTo

Pole to zawiera wartość niższego priorytetu używaną przez bieżące
zapytanie.

Kategoria

alarmy

Sposó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

alarmy

Sposó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

background image

134

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

.ProviderReq

.ProviderRet

Pole to zawiera łączną liczbę aplikacji uruchomionych na innych
komputerach, aktualnie odpytywanych pod kątem występowania alarmów.

Kategoria

alarmy

Sposó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

alarmy

Sposó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

background image

Pola zmiennych

135

Opis funkcji, pól i zmiennych systemowych

.Quality

W 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

zmienna

Sposó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 OPC

Bity jakości OPC

.QualityStatus

MSByte

LSByte

.QualitySubstatus

Statusy jakości

War. heks.

xxxxxxxx

QQSSSSLL

.QualityLimit

1. Dobry

0x00C0

00000000

00000000

Q=3

S=0

L=0

2. 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

background image

136

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

5. Brak dostępu

0x0004

00000000

00000000

Q=0

S=1

L=0

6. 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.

background image

Pola zmiennych

137

Opis funkcji, pól i zmiennych systemowych

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.

background image

138

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

.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

zmienna

Sposó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 ograniczenia

1

Ograniczenie od dołu

2

Ograniczenie od góry

3

Stała

Patrz również

.Quality

background image

Pola zmiennych

139

Opis funkcji, pól i zmiennych systemowych

.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

zmienna

Sposó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

zmienna

Sposó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ły

1

Niepewny

3

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

zmienna

Sposó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

background image

140

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

.QualitySubstatus

Liczba 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

zmienna

Sposó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ślona

1

Błąd w konfiguracji

2

Brak połączenia

3

Uszkodzenie sprzętowe

4

Uszkodzenie czujnika

5

Ostatnio odebrana
wartość

6

Uszkodzenie portu

7

Wyłączenie

Podstatus (SSSS) w przypadku gdy jakość jest niepewna (QQ=1):
0

Nie określona

1

Ostatnio odebrana
wartość

4

Czujnik nie dokładny

5

Przekroczenie
Jednostek inżynierskich

6

Sub-normalnaREFSub
normal

Podstatus (SSSS) w przypadku gdy jakość jest Dobra (QQ=2):
0

Nie określona

6

Lokalne przepisanie

Patrz również

.QualityStatus, .Quality

background image

Pola zmiennych

141

Opis funkcji, pól i zmiennych systemowych

.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

zmienna

Sposó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

alarmy

Sposó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 niepotwierdzone
2 = 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

background image

142

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

.QueryType

Pole to definiuje aktualnie obowiązujący sposób pytania o alarmy.

Kategoria

alarmy

Sposó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

background image

Pola zmiennych

143

Opis funkcji, pól i zmiennych systemowych

.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

zmienna

Sposó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))THEN

AlarmMessage = "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 Windows

Sposób użycia

[ErrorNumber=]GetPropertyD("NazwaObiektu.ReadOnly",

Zmienna);

Parametr

Opis

ControlName

Nazwa wizarda Na przykład, Textbox_1

Zmienna

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 edycji

Typ 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()

background image

144

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

.Reference

.ReferenceComplete

Pole to pozwala operatorowi na dynamiczną zmianę nazwy dostępu i/lub
nazwy elementu w czasie pracy aplikacji.

Kategoria

zmienna

Sposób użycia

Zmienna.Reference

Parametr

Opis

Zmienna

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

zmienna

Sposó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)

background image

Pola zmiennych

145

Opis funkcji, pól i zmiennych systemowych

.ROCPct

.ROCSet

Pole to służy do monitorowania i/lub zmiany maksymalnej, dopuszczalnej
zmiany wartości zmiennej w jednostce czasu.

Kategoria

Alarmy

Sposó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

alarmy

Sposób użycia

Zmienna.ROCSet

Parametr

Opis

Zmienna

Dowolna zmienna typu Analog

Uwagi

Pole to może być użyte dla zmiennych Integer lub Real.

Typ danych

Discrete

Zakres 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

background image

146

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

.ROCStatus

Pole to określa, czy w systemie występuje alarm związany z szybkością zmian
wartości danej zmiennej (Rate of Change).

Kategoria

alarmy

Sposó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ępuje

Przykł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) THEN

OperatorMessage="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

background image

Pola zmiennych

147

Opis funkcji, pól i zmiennych systemowych

.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 historyczne

Sposó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 historyczne

Sposó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 suwak

Przykł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

background image

148

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

.ScooterPosLeft

Pole to umożliwia odczyt i/lub zmianę położenia lewego suwaka na wykresie
trendu historycznego.

Kategoria

dane historyczne

Sposó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

background image

Pola zmiennych

149

Opis funkcji, pól i zmiennych systemowych

.ScooterPosRight

Pole to umożliwia odczyt i/lub zmianę położenia prawego suwaka na
wykresie trendu historycznego.

Kategoria

dane historyczne

Sposó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

background image

150

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

.Successful

.SuppressRetain

Pole to dostarcza informacji na temat przebiegu zapytania o alarmy.

Kategoria

alarmy

Sposó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 wykonane

Przykł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

alarmy

Sposób użycia

[ErrorNumber=]GetPropertyD(“NazwaObiektu.SuppressRetain”,

Zmienna”);

[ErrorNumber=]SetPropertyD(“NazwaObiektu.SuppressRetain”,

Zmienna”);

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.

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()

background image

Pola zmiennych

151

Opis funkcji, pól i zmiennych systemowych

.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

zmienna

Sposó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

zmienna

Sposó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

zmienna

Sposó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

background image

152

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

.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

zmienna

Sposó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

zmienna

Sposó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

zmienna

Sposó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

background image

Pola zmiennych

153

Opis funkcji, pól i zmiennych systemowych

.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

zmienna

Sposó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

zmienna

Sposó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

zmienna

Sposó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

background image

154

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

.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

zmienna

Sposó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

zmienna

Sposó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

Zmienna

Sposó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

background image

Pola zmiennych

155

Opis funkcji, pól i zmiennych systemowych

.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

zmienna

Sposó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 Windows

Sposó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

background image

156

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

.TotalPages

Pole to zawiera łączną liczbę stron (wypełnionych alarmami) w obiekcie
alarmów rozproszonych.

Kategoria

alarmy

Sposó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

background image

Pola zmiennych

157

Opis funkcji, pól i zmiennych systemowych

.UnAck

Pole to umożliwia potwierdzanie alarmów lokalnych.

Kategoria

alarmy

Sposó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

0

Przykł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

background image

158

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

.UpdateCount

Wartość tego pola jest zwiększana o 1 każdorazowo, gdy następuje
aktualizacja trendu historycznego związanego z daną zmienną.

Kategoria

dane historyczne

Sposó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

background image

Pola zmiennych

159

Opis funkcji, pól i zmiennych systemowych

.UpdateInProgress

Wartość tego pola jest równa 1 podczas odczytu danych historycznych; jeżeli
operacja ta nie jest realizowana, wartość jest równa 0.

Kategoria

dane historyczne

Sposó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

background image

160

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

.UpdateTrend

.Value

Pole to umożliwia aktualizację wykresu trendu historycznego.

Kategoria

dane historyczne

Sposó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

1

Przykł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

zmienna

Sposób użycia

Zmienna.Value

Parametr

Opis

Zmienna

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;

background image

Pola zmiennych

161

Opis funkcji, pól i zmiennych systemowych

.Value

Domyś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 Windows

Sposó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()

background image

162

Rozdział 2

Opis funkcji, pól i zmiennych systemowych

.Visible

Właściwość ta określa, czy obiekt jest widoczny w oknie.

Kategoria

obiekty sterujące Windows

Sposó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 widoczny

Zastosowanie

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()

background image

Funkcje skryptowe

163

Opis funkcji, pól i zmiennych systemowych

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.

background image

164

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

Abs()

Ack()

Zwraca wartość bezwzględną danej liczby.

Kategoria

funkcje matematyczne

Składnia

Result=Abs(Number);

Parametr

Opis

Number

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

alarmy

Składnia

Ack Tagname;

Parametr

Opis

Zmienna

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()

background image

Funkcje skryptowe

165

Opis funkcji, pól i zmiennych systemowych

ActivateApp()

AddPermission()

Funkcja ta służy do uaktywnienia innej uruchomionej aplikacji Windows.

Kategoria

system

Składnia

ActivateApp TaskName;

Parametr

Opis

TaskName

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 THEN
ActivateApp InfoAppTitle("cmd");
ELSE
StartApp "cmd /c edit";
ENDIF;

Patrz również

StartApp(), InfoAppTitle()

Próbuje uzyskać dostęp do konta znajdującego się w domenie Domain.

Kategoria

bezpieczeństwo

Składnia

DiscreteTag=AddPermission( "Domena", "Grupa",

AccessLevel);

Parametr

Opis

Domena

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().

background image

166

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

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

alarmy

Składnia

[Result=]almAckAll(ObjectName,Comment);

Parametr

Opis

ObjectName

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

alarmy

Składnia

[Result=]almAckDisplay(ObjectName,Comment);

Parametr

Opis

ObjectName

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()

background image

Funkcje skryptowe

167

Opis funkcji, pól i zmiennych systemowych

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

alarmy

Składnia

[Result=]almAckGroup(ObjectName, ApplicationName,

GroupName, Comment);

Parametr

Opis

ObjectName

Nazwa obiektu alarmowego. Przykładowo,
AlmObj_1.

ApplicationName

Nazwa aplikacji wraz ze ścieżką dostępu,
przykładowo \\node1\Intouch

GroupName

Nazwa grupy alarmowej, przykładowo $System

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 group, Turbines, by” +

$Operator; almAckGroup(“AlmObj_1”, “\Intouch”,

“Turbine”, MessageTag);

Patrz również

Ack(), almAckAll(), almAckDisplay(), almAckTag(), almAckRecent(),
almAckPriority(), almAckSelect(), almAckSelectedGroup(),
almAckSelectedPriority(), almAckSelectedTag()

background image

168

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

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

alarmy

Składnia

[Result=]almAckPriority(ObjectName, ApplicationName,

GroupName, FromPri, ToPri, Comment);

Parametr

Opis

ObjectName

Nazwa obiektu alarmowego. Przykładowo,
AlmObj_1.

ApplicationName

Nazwa aplikacji wraz ze ścieżką dostępu,
przykładowo \\node1\Intouch

GroupName

Nazwa grupy alarmowej, przykładowo $System

FromPri

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

alarmy

Składnia

[Result=]almAckRecent(ObjectName,Comment);

Parametr

Opis

ObjectName

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()

background image

Funkcje skryptowe

169

Opis funkcji, pól i zmiennych systemowych

almAckSelect()

almAckSelectedGroup()

Funkcja ta służy do zatwierdzania tylko alarmów zaznaczonych w oknie
aktualnie aktywnego obiektu alarmowego.

Kategoria

alarmy

Składnia

[Result=]almAckSelect(ObjectName,Comment);

Parametr

Opis

ObjectName

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) THEN

AckTag = “NightShift”;

ELSE

AckTag = “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

alarmy

Składnia

[Result=]almAckSelectedGroup(ObjectName,Comment);

Parametr

Opis

ObjectName

Nazwa obiektu alarmowego. Przykładowo,
AlmObj_1.

Comment

Komentarz do zatwierdzania alarmu.

Uwagi
Przykład(y)

MessageTag = “Acknowledge selected groups by” +

$Operator;

almAckSelectedGroup (“AlmObj_1”, MessageTag);

Patrz również

Ack(), almAckAll(), almAckGroup(), almAckTag(), almAckDisplay(),
almAckRecent(), almAckSelect(), almAckSelectedPriority(),
almAckSelectedTag()

background image

170

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

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

alarmy

Składnia

[Result=]almAckSelectedPriority(ObjectName, Comment);

Parametr

Opis

ObjectName

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

alarmy

Składnia

[Result=]almAckSelectedTag(ObjectName,Comment);

Parametr

Opis

ObjectName

Nazwa obiektu alarmowego. Przykładowo,
AlmObj_1.

Comment

Komentarz do zatwierdzania alarmu.

Uwagi
Przykład(y)

MessageTag = “Acknowledge selected tagnames by” +

$Operator;

almAckSelectedTag (“AlmObj_1”, MessageTag);

Patrz również

Ack(), almAckAll(), almAckGroup(), almAckTag(), almAckDisplay(),
almAckRecent(), almAckSelect(), almAckSelectedGroup(),
almAckSelectedPriority()

background image

Funkcje skryptowe

171

Opis funkcji, pól i zmiennych systemowych

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

alarmy

Składnia

[Result=]almAckTag(ObjectName, ApplicationName,

GroupName, Tagname, FromPri, ToPri, Comment);

Parametr

Opis

ObjectName

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.

Uwagi
Przykł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()

background image

172

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

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

alarmy

Składnia

[Result=]almDefQuery(ObjectName);

Parametr

Opis

ObjectName

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

alarmy

Składnia

[Result=]almMoveWindow(ObjectName,Options,Repeat);

Parametr

Opis

ObjectName

Nazwa obiektu alarmowego. Przykładowo,
AlmObj_1.

Option

Rodzaj przewijania alarmówPAGEtype of alarm
acknowledge to perform.
Typ

Opis

LineDn

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);

background image

Funkcje skryptowe

173

Opis funkcji, pól i zmiennych systemowych

almQuery()

Funkcja ta powoduje wysłanie zapytania w celu zaktualizowania instancji
obiektu alarmów rozproszonych o określonej nazwie.

Kategoria

alarmy

Składnia

[Result=]almDefQuery(ObjectName,AlarmList,FromPri,

ToPri,State,Type);

Parametr

Opis

ObjectName

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()

background image

174

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

almSelectAll()

almSelectGroup()

Funkcja ta zaznacza (podświetla) wszystkie alarmy w instancji obiektu
alarmów rozproszonych o określonej nazwie.

Kategoria

alarmy

Składnia

[Result=]almSelectAll(ObjectName);

Parametr

Opis

ObjectName

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

alarmy

Składnia

[Result=]almSelectGroup(ObjectName, ApplicationName,

GroupName);

Parametr

Opis

ObjectName

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()

background image

Funkcje skryptowe

175

Opis funkcji, pól i zmiennych systemowych

almSelectionCount()

almSelectItem()

almSelectPriority()

Zwraca liczbę zaznaczonych w obiekcie alarmów.

Składnia

[Result=]almSelectionCount(ObjectName);

Parametr

Opis

ObjectName

Nazwa obiektu alarmowego, np. AlmObj_1.

Przykład(y)

Tag1 = almSelectionCount(“AlmObj_1”);

Odwraca zaznaczenie podświetlonego elementu w obiekcie alarmowym.

Kategoria

alarmy

Składnia

[Result=]almSelectItem(ObjectName);

Parametr

Opis

ObjectName

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

alarmy

Składnia

[Result=]almSelectPriority (ObjectName,

ApplicationName, GroupName, FromPri, ToPri);

Parametr

Opis

ObjectName

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()

background image

176

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

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

alarmy

Składnia

[Result=]almSelectTag (ObjectName, ApplicationName,

GroupName, Tagname, FromPri, ToPri);

Parametr

Opis

ObjectName

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.

Uwagi
Przykł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

alarmy

Składnia

[Result=]almSetQueryByName(ObjectName, QueryName);

Parametr

Opis

ObjectName

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()

background image

Funkcje skryptowe

177

Opis funkcji, pól i zmiennych systemowych

almShowStats()

almSuppressAll()

Wyświetla ekran z informacjami statystycznymi obiektu alarmowego.

Kategoria

alarmy

Składnia

[Result=]almShowStats(ObjectName);

Parametr

Opis

ObjectName

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

alarmy

Składnia

[Result=] almSuppressAll(ObjectName);

Parametr

Opis

ObjectName

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()

background image

178

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

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

alarmy

Składnia

[Result=]almSuppressGroup(ObjectName, ApplicationName,

GroupName);

Parametr

Opis

ObjectName

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

alarmy

Składnia

[Result=]almSuppressDisplay(ObjectName);

Parametr

Opis

ObjectName

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()

background image

Funkcje skryptowe

179

Opis funkcji, pól i zmiennych systemowych

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

alarmy

Składnia

[Result=]almSuppressPriority(ObjectName,

ApplicationName, GroupName, FromPri, ToPri);

Parametr

Opis

ObjectName

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

alarmy

Składnia

[Result=]almSuppressRetain (ObjectName,

SuppressionRetainFlag);

Parametr

Opis

ObjectName

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()

background image

180

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

almSuppressSelected()

almSuppressTag()

Funkcja ta wstrzymuje wyświetlanie przyszłych zdarzeń alarmów
wybranych w oknie aktualnie aktywnego obiektu alarmowego.

Kategoria

alarmy

Składnia

[Result=]almSuppressSelected (ObjectName);

Parametr

Opis

ObjectName

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

alarmy

Składnia

[Result=]almSuppressTag(ObjectName, ApplicationName,

GroupName, TagName, FromPri, ToPri, AlarmClass,

AlarmType);

Parametr

Opis

ObjectName

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.”

Uwagi
Przykł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()

background image

Funkcje skryptowe

181

Opis funkcji, pól i zmiennych systemowych

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

alarmy

Składnia

[Result=]almSuppressSelectedGroup(ObjectName);

Parametr

Opis

ObjectName

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

alarmy

Składnia

[Result=]almSuppressSelectedPriority(ObjectName);

Parametr

Opis

ObjectName

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()

background image

182

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

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

alarmy

Składnia

[Result=]almSuppressSelectedTag(ObjectName);

Parametr

Opis

ObjectName

Nazwa obiektu alarmowego. Przykładowo,
AlmObj_1.

Uwagi
Przykł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

alarmy

Składnia

[Result=]almUnSelectAll(ObjectName);

Parametr

Opis

ObjectName

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 THEN

almAckSelect(“AlmObj_1”, “Comment”);{Ten alarm mo¿e byæ

potwierdzony tylko przez administratora}

ELSE

almUnSelectAll(“AlmObj_1”);

ENDIF;

Patrz również

almSelectAll(), almSelectItem(), almSelectGroup(),
almSelectPriority(), almSelectTag()

background image

Funkcje skryptowe

183

Opis funkcji, pól i zmiennych systemowych

almUnSuppressAll()

ArcCos()

Funkcja ta zeruje wszystkie wstrzymane alarmy.

Kategoria

alarmy

Składnia

[Result=] almUnSupressAll(ObjectName);

Parametr

Opis

ObjectName

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 matematyczne

Składnia

Result=ArcCos(Number);

Parametr

Opis

Number

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()

background image

184

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

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 matematyczne

Składnia

Result=ArcSin(Number);

Parametr

Opis

Number

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 matematyczne

Składnia

Result=ArcTan(Number);

Parametr

Opis

Number

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()

background image

Funkcje skryptowe

185

Opis funkcji, pól i zmiennych systemowych

AttemptInvisibleLogon()

ChangePassword()

Próbuje zalogować użytkownika używając podanych parametrów.

Kategoria

bezpieczeństwo

Skł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ństwo

Składnia

[Result=]ChangePassword();

Parametr

Opis

[Result]

Przyjmuje jedną z następujących wartości:
0 = Naciśnięty został przycisk Anuluj
1 = 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.

background image

186

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

Cos()

DialogStringEntry()

Zwraca cosinus kąta podanego w stopniach.

Kategoria

funkcje matematyczne

Składnia

Result=Cos(Number);

Parametr

Opis

Number

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óżne

Składnia

[Result=]DialogStringEntry(MessageTag_Text,

UserPrompt_Text);

Parametr

Opis

[Result]

Przyjmuje jedną z następujących wartości:
0 = Naciśnięty został przycisk Anuluj
1 = 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.

background image

Funkcje skryptowe

187

Opis funkcji, pól i zmiennych systemowych

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()

background image

188

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

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óżne

Skł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 Anuluj
1 = 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...");

background image

Funkcje skryptowe

189

Opis funkcji, pól i zmiennych systemowych

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()

background image

190

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

DText()

EnableDisableKeys()

Funkcja ta dynamicznie zmienia zawartość zmiennej tekstowej w
zależności od wartości innej zmiennej dyskretnej (typu Discrete).

Kategoria

funkcje tekstowe

Składnia

MsgTag=DText(Discrete_Tag,OnMsg,OffMsg);

Parametr

Opis

MsgTag

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” THEN

Message="D_Tag zawiera warto

ść

1";

ELSE

Message="D_Tag zawiera warto

ść

0";

ENDIF;

Włącza/wyłącza blokadę klawiatury dla klawiszy Alt,Escape oraz klawiszy
systemu Windows

Kategoria

View

Składnia

EnableDisableKeys(int AltKey,int EscKey,int WinKey);

Parametr

Opis

AltKey

Liczba, która określa czy włączyć czy wyłączyć
blokadę klawisza Alt, 0=wyłącza, 1=włącza

EscKey

Liczba, która określa czy włączyć czy wyłączyć
blokadę klawisza Escape, 0=wyłącza, 1=włącza

WinKey

Liczba, która określa czy włączyć czy wyłączyć
blokadę klawisza Win, 0=wyłącza, 1=włącza

Uwagi

Włącza/wyłącza klawisze Alt,Escape oraz Windows

Przykł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.

background image

Funkcje skryptowe

191

Opis funkcji, pól i zmiennych systemowych

Exp()

FileCopy()

Zwraca wartość e podniesioną do potęgi.

Kategoria

funkcje matematyczne

Składnia

Result=Exp(Number);

Parametr

Opis

Number

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

system

Składnia

[Result=]FileCopy(SourceFile,DestFile,DoneTag);

Parametr

Opis

SourceFile

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");

background image

192

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

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()

background image

Funkcje skryptowe

193

Opis funkcji, pól i zmiennych systemowych

FileDelete()

Usuwa niepotrzebne pliki.

Kategoria

system

Składnia

[Result=]FileDelete(Filename);

Parametr

Opis

Filename

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()

background image

194

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

FileMove()

Funkcja ta jest podobna do funkcji FileCopy() z tą różnicą, że powoduje
ona przesunięcie pliku SourceFile.

Kategoria

system

Składnia

[Result=]FileMove(SourceFile,DestFile,DoneTag);

Parametr

Opis

SourceFile

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.

background image

Funkcje skryptowe

195

Opis funkcji, pól i zmiennych systemowych

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()

background image

196

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

FileReadFields()

Odczytuje rekord z zadanego pliku w formacie CSV (Comma Separated
Variable - zmienne oddzielone przecinkami).

Kategoria

system

Składnia

[Result=]FileReadFields(Filename,FileOffset,StartTag,

NumberOfFields);

Parametr

Opis

Filename

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()

background image

Funkcje skryptowe

197

Opis funkcji, pól i zmiennych systemowych

FileReadMessage()

Odczytuje podaną liczbę bajtów, lub całą linię z podanego pliku.

Kategoria

system

Składnia

[Result=]FileReadMessage(Filename,FileOffset,

Message_Tag, CharsToRead);

Parametr

Opis

Filename

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()

background image

198

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

FileWriteFields()

Zapisuje rekord do zadanego pliku w formacie CSV (Comma Separated
Variable - zmienne oddzielone przecinkami).

Kategoria

system

Składnia

[Result=]FileWriteFields(Filename,FileOffset,StartTag,

NumberOfFields);

Parametr

Opis

Filename

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()

background image

Funkcje skryptowe

199

Opis funkcji, pól i zmiennych systemowych

FileWriteMessage()

GetNodeName()

Zapisuje podaną liczbę bajtów (lub całą linię) do podanego pliku.

Kategoria

system

Składnia

[Result=]FileWriteMessage(Filename,FileOffset,

Message_Tag,LineFeed);

Parametr

Opis

Filename

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

system

Składnia

GetNodeName(Tagname,NodeNum);

Parametr

Opis

Zmienna

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” THEN

MessageTag = “This is the Primary Machine!”;

ENDIF;

background image

200

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

GetPropertyD()

GetPropertyI()

Odczytuje wartość dyskretną określonej właściwości.

Kategoria

GOT

Składnia

[ErrorNumber=]GetPropertyD("ControlName[.Property]",Tag

name);

Parametr

Opis

ControlName

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

GOT

Składnia

[ErrorNumber=]GetPropertyI("ControlName.[Property]",Tag

name);

Parametr

Opis

ControlName

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()

background image

Funkcje skryptowe

201

Opis funkcji, pól i zmiennych systemowych

GetPropertyM()

Odczytuje wartość tekstową określonej właściwości.

Kategoria

GOT

Składnia

[ErrorNumber=]GetPropertyM("ControlName.[Property]",Tag

name);

Parametr

Opis

ControlName

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()

background image

202

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

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óżne

Składnia

Hide Window;

Parametr

Opis

Okno

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óżne

Składnia

HideSelf;

Uwagi

Funkcja ta może zostać użyta tylko w skrypcie QuickScript związanym z
przyciskiem.

Patrz również

Hide, Show

background image

Funkcje skryptowe

203

Opis funkcji, pól i zmiennych systemowych

HTGetLastError()

Określa, czy podczas ostatniego odczytu danych dla określonego pisaka
trendu historycznego wystąpił błąd.

Kategoria

dane historyczne

Składnia

[Result=]HTGetLastError(Hist_Tag,UpdateCount,PenNum);

Parametr

Opis

Hist_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

Opis

0

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);

background image

204

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

HTGetPenName()

HTGetTimeAtScooter()

Odczytuje nazwę zmiennej aktualnie przypisanej do określonego pisaka
danego trendu historycznego.

Kategoria

dane historyczne

Składnia

MessageResult=HTGetPenName(Hist_Tag,UpdateCount,PenNum)

;

Parametr

Opis

Hist_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 historyczne

Składnia

IntegerResult=HTGetTimeAtScooter(Hist_Tag,UpdateCount,

ScootNum,ScootLoc);

Parametr

Opis

Hist_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 suwak
2=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.

background image

Funkcje skryptowe

205

Opis funkcji, pól i zmiennych systemowych

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 historyczne

Składnia

MessageResult=HTGetTimeStringAtScooter(Hist_Tag,

UpdateCount,ScootNum,ScootLoc,Format_Text);

Parametr

Opis

Hist_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 suwak
2=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");

background image

206

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

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 historyczne

Składnia

RealResult=HTGetValue(Hist_Tag,UpdateCount,PenNum,

ValType_Text);

Parametr

Opis

Hist_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");

background image

Funkcje skryptowe

207

Opis funkcji, pól i zmiennych systemowych

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 historyczne

Składnia

RealResult=HTGetValueAtScooter(Hist_Tag,UpdateCount,

ScootNum,ScootLoc,PenNum,ValType_Text);

Parametr

Opis

Hist_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 suwak
2=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.UpdateCou

nt,

2, Trend1.ScooterPosRight,3,"PenValid");

background image

208

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

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 historyczne

Składnia

RealResult=HTGetValueAtZone(Hist_Tag,UpdateCount,

Scoot1Loc,Scoot2Loc,PenNum,ValType_Text);

Parametr

Opis

Hist_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.

background image

Funkcje skryptowe

209

Opis funkcji, pól i zmiennych systemowych

"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");

background image

210

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

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 historyczne

Składnia

HTScrollLeft(Hist_Tag,Percent);

Parametr

Opis

Hist_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 historyczne

Składnia

HTScrollRight(Hist_Tag,Percent);

Parametr

Opis

Hist_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.

background image

Funkcje skryptowe

211

Opis funkcji, pól i zmiennych systemowych

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 historyczne

Skł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 historyczne

Składnia

HTSetPenName(Hist_Tag,PenNum,Tagname);

Parametr

Opis

Hist_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();

background image

212

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

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 historyczne

Składnia

HTUpdateToCurrentTime(Hist_Tag);

Parametr

Opis

Hist_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 historyczne

Składnia

HTZoomIn(Hist_Tag,LockString);

Parametr

Opis

Hist_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.

background image

Funkcje skryptowe

213

Opis funkcji, pól i zmiennych systemowych

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 historyczne

Składnia

HTZoomOut(Hist_Tag,LockString);

Parametr

Opis

Hist_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");

background image

214

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

InfoAppActive()

InfoAppTitle()

Sprawdza czy podana aplikacja jest uruchomiona.

Kategoria

system

Składnia

DiscreteResult=InfoAppActive(AppTitle);

Parametr

Opis

AppTitle

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 THEN

ActivateApp InfoAppTitle( "Notepad" );

ELSE

StartApp "Notepad";

ENDIF;

Funkcja ta zwraca nazwę uruchomionej aplikacji (znajdującą się na pasku
tytułowym).

Kategoria

system

Składnia

MessageResult=InfoAppTitle(“ProgramEXEName”);

Parametr

Opis

ProgramEXEName Ł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"

background image

Funkcje skryptowe

215

Opis funkcji, pól i zmiennych systemowych

InfoDisk()

Zwraca informacje na temat lokalnego lub sieciowego napędu.

Kategoria

system

Składnia

IntegerResult=InfoDisk(“Drive”,InfoType,Trigger);

Parametr

Opis

Drive

Łańcuch znaków lub zmienna tekstowa z nazwą
dysku.

InfoType

Liczba całkowita określająca rodzaj informacji:
Typ

Opis

1

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ów
Podobnie 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.

background image

216

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

InfoFile()

Zwraca informacje o określonym pliku lub kartotece.

Kategoria

system

Składnia

IntegerResult=InfoFile(“Filename”,”InfoType”,Trigger);

Parametr

Opis

Filename

Łańcuch znaków zawierający nazwę pliku lub
zmienna typu Message.

InfoType

Liczba całkowita określająca rodzaj informacji:
Typ

Opis

1

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óci

1 {plik odnaleziony}

InfoFile("c:\InTouch\view.exe", 2, $Minute) zwróci

634960 {rozmiar pliku}

InfoFile("c:\InTouch\view.exe", 3, $Minute) zwróci

736701852 {liczba sekund od 1-1-70}

InfoFile("c:\InTouch\*.exe", 4, $Minute) zwróci

17 {odnaleziono 17 plików EXE}

background image

Funkcje skryptowe

217

Opis funkcji, pól i zmiennych systemowych

InfoInTouchAppDir()

InfoResources()

Zwraca kartotekę aktualnej aplikacji InTouch.

Kategoria

system

Skł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 matematyczne

Składnia

IntegerResult=InfoResources(ResourceType,Trigger);

Parametr

Opis

ResourceType

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.

background image

218

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

Int()

InvisibleVerifyCredentials()

IOGetApplication()

Zwraca najbliższą liczbę całkowitą, mniejszą lub równą podanej liczbie.

Kategoria

funkcje matematyczne

Składnia

IntegerResult=Int(Number);

Parametr

Opis

Number

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ństwo

Składnia

AnalogTag=InvisibleVerifyCredentials( "UserId",

"Password", "Domain" );

Parametr

Opis

UserId

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óżne

Składnia

IOGetApplication(“AccessName”);

Parametr

Opis

AccessName

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");

background image

Funkcje skryptowe

219

Opis funkcji, pól i zmiennych systemowych

IOGetNode()

IOGetTopic()

IOReinitialize()

Funkcja ta zwraca informację o stacji (adres) zdefiniowanym dla podanej
nazwy dostępu do określonej zmiennej.

Kategoria

różne

Składnia

IOGetNode(“AccessName”);

Parametr

Opis

AccessName

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óżne

Składnia

IOGetTopic(“AccessName”);

Parametr

Opis

AccessName

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óżne

Składnia

IOReinitialize();

Uwagi

Działanie tej funkcji powoduje wykonanie tej samej operacji, co polecenie
Reinicjalizuj komunikację z menu Specjalne programu WindowViewer.

background image

220

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

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óżne

Składnia

IOSetAccessName(“AccessName”, “NodeName”, “AppName”,

“TopicName”);

Parametr

Opis

AccessName

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.

background image

Funkcje skryptowe

221

Opis funkcji, pól i zmiennych systemowych

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óżne

Składnia

IOSetItem(“Tagname”,”AccessName”,”Item”);

Parametr

Opis

Zmienna

Dowolna zmienna typu I/O ujęta w cudzysłowy.

AccessName

Nowa nazwa dostępu

Element

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 poprzez

Number = 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");

background image

222

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

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óżne

Skł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

system

Składnia

DiscreteTag=IsAnyAsynchFunctionBusy(timeout);

Parametr

Opis

DiscreteTag

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 1
Jeż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.

background image

Funkcje skryptowe

223

Opis funkcji, pól i zmiennych systemowych

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 THEN

SHOW "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ństwo

Składnia

DiscreteTag=IsAssignedRole( "RoleName" );

Parametr

Opis

RoleName

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 matematyczne

Składnia

RealResult=Log(Number);

Parametr

Opis

Number

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

background image

224

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

LogMessage()

LogN()

Zapisuje komunikat zdefiniowany przez użytkownika w programie
Wonderware Logger.

Kategoria

różne

Składnia

LogMessage(“Message_Tag”);

Parametr

Opis

Message_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 matematyczne

Składnia

Result=LogN(Number,Base);

Parametr

Opis

Number

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.

background image

Funkcje skryptowe

225

Opis funkcji, pól i zmiennych systemowych

Logoff()

Pi()

PlaySound()

Wylogowuje użytkownika aplikacji InTouch.

Kategoria

bezpieczeństwo

Składnia

DiscreteTag = LogOff();

Parametr

Opis

N/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 matematyczne

Składnia

RealResult=Pi();

Przykład(y)

Pi() daje w wyniku 3.1415926

Odtwarza dźwięk zapisany w pliku .wav.

Kategoria

różne

Składnia

PlaySound(“SoundName”,Flags);

Parametr

Opis

SoundName

Ł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

Opis

0

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

background image

226

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

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ństwo

Skł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().

background image

Funkcje skryptowe

227

Opis funkcji, pól i zmiennych systemowych

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 historyczne

Składnia

PrintHT("Trend_Tag");

Parametr

Opis

Trend_Tag

Nazwa zmiennej typu HistTrend reprezentującej
trend historyczny. Łańcuch znaków lub zmienna
tekstowa.

Uwagi

-

Przykład(y)

PrintHT("HistTrend1");

background image

228

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

PrintScreen()

Drukuje określony ekran.

Kategoria

różne

Składnia

PrintScreen(ScreenOption, PrintOption );

Parametr

Opis

ScreenOption

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.

background image

Funkcje skryptowe

229

Opis funkcji, pól i zmiennych systemowych

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.

background image

230

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

PrintWindow()

Drukuje określone okno.

Kategoria

różne

Składnia

PrintWindow("Window",Left,Top,Width,Height,Options);

Parametr

Opis

Okno

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().

background image

Funkcje skryptowe

231

Opis funkcji, pól i zmiennych systemowych

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=10000

gdzie 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.

background image

232

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

QueryGroupMembership()

RecipeDelete()

Kategoria

bezpieczeństwo

Składnia

DiscreteTag=QueryGroupMembership( "Domain", "Group" );

Parametr

Opis

Domena

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

receptury

Składnia

RecipeDelete("Filename","RecipeName");

Parametr

Opis

FileName

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");

background image

Funkcje skryptowe

233

Opis funkcji, pól i zmiennych systemowych

RecipeGetMessage()

Funkcja ta zapisuje kod błędu zwrócony przez funkcję jako zmienną
analogową, a związany z kodem komunikat jako zmienną tekstową.

Kategoria

receptury

Składnia

RecipeGetMessage(Analog_Tag,Message_Tag,Number);

Parametr

Opis

Analog_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]:ErrorCode

Skrypt: 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);

background image

234

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

RecipeLoad()

Funkcja ta powoduje załadowanie receptury (Recipe) dla podanego
zestawu zmiennych (Unit).

Kategoria

receptury

Składnia

RecipeLoad("Filename","UnitName","RecipeName");

Parametr

Opis

FileName

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");

background image

Funkcje skryptowe

235

Opis funkcji, pól i zmiennych systemowych

RecipeSave()

Funkcja ta powoduje zapisanie nowo utworzonej lub zmodyfikowanej
receptury (Recipe) w pliku receptur o podanej nazwie.

Kategoria

receptury

Składnia

RecipeSave("Filename","UnitName","RecipeName");

Parametr

Opis

FileName

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");

background image

236

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

RecipeSelectNextRecipe()

Funkcja ta powoduje wybranie z pliku receptur receptury o kolejnej
zdefiniowanej nazwie.

Kategoria

receptury

Składnia

RecipeSelectNextRecipe("Filename", RecipeName, Number);

Parametr

Opis

FileName

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);

background image

Funkcje skryptowe

237

Opis funkcji, pól i zmiennych systemowych

RecipeSelectPreviousRecipe()

Funkcja ta powoduje wybranie z pliku receptur poprzedniej receptury.

Kategoria

receptury

Składnia

RecipeSelectPreviousRecipe("Filename",RecipeName,

Number);

Parametr

Opis

FileName

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);

background image

238

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

RecipeSelectRecipe()

Funkcja ta powoduje wybranie z pliku receptur receptury o podanej
nazwie.

Kategoria

receptury

Składnia

RecipeSelectRecipe("Filename",RecipeName,Number);

Parametr

Opis

FileName

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.

background image

Funkcje skryptowe

239

Opis funkcji, pól i zmiennych systemowych

RecipeSelectUnit()

Funkcja ta powoduje wybranie z pliku receptur zestawu zmiennych, do
którego zostanie załadowana bieżąca receptura.

Kategoria

receptury

Składnia

RecipeSelectUnit("Filename", UnitName,Number);

Parametr

Opis

FileName

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.

background image

240

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

ReloadWindowViewer()

RestartWindowViewer()

Funkcja ta pozwala użytkownikowi na przejęcie kontroli nad ponownym
uruchomieniem programu WindowViewer.

Kategoria

system

Skł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

system

Skł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()

background image

Funkcje skryptowe

241

Opis funkcji, pól i zmiennych systemowych

Round()

Zaokrągla liczbę rzeczywistą z podaną dokładnością.

Kategoria

funkcje matematyczne

Składnia

RealResult=Round(Number,Precision);

Parametr

Opis

Number

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()

background image

242

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

SendKeys

Funkcja 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óżne

Składnia

SendKeys KeySequence;

Parametr

Opis

KeySequence

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

Kod

BACKSPACE

{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

Kod

SHIFT

+

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))";

background image

Funkcje skryptowe

243

Opis funkcji, pól i zmiennych systemowych

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

GOT

Składnia

[ErrorNumber=]SetPropertyD("ControlName.Property",

DiscreteTag);

Parametr

Opis

ControlName

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 nieaktywny
1 = 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()

background image

244

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

SetPropertyI()

SetPropertyM()

Funkcja ta nadaje właściwości wartość całkowitą w czasie wykonywania
aplikacji.

Kategoria

GOT

Składnia

[ErrorNumber=]SetPropertyI("ControlName.Property",

Integer);

Parametr

Opis

ControlName

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

GOT

Składnia

[ErrorNumber=]SetPropertyM("ControlName.Property",

"MessageTag");

Parametr

Opis

ControlName

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()

background image

Funkcje skryptowe

245

Opis funkcji, pól i zmiennych systemowych

Sgn()

Show

Określa znak podanej wartości (+,-,0).

Kategoria

funkcje matematyczne

Składnia

IntegerResult=Sgn(Number);

Parametr

Opis

Number

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óżne

Składnia

Show "Window";

Parametr

Opis

Window

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()

background image

246

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

ShowAt()

ShowHome

Określa w pikselach położenie okna w kierunku poziomym i pionowym w
momencie jego wyświetlania.

Kategoria

różne

Składnia

ShowAt("Window",Horiz,Vert);

Parametr

Opis

Window

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óżne

Składnia

ShowHome;

Patrz również

Show, ShowAt(), ShowTopLeftAt(), ShowHome, Hide, Hideself

background image

Funkcje skryptowe

247

Opis funkcji, pól i zmiennych systemowych

ShowTopLeftAt()

Sin()

Określa w pikselach współrzędną poziomą i pionową lewego, górnego
rogu okna, w momencie jego wyświetlania.

Kategoria

różne

Składnia

ShowTopLeftAt("Window",Horiz,Vert);

Parametr

Opis

Window

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 matematyczne

Składnia

Result=Sin(AngleNumber);

Parametr

Opis

AngleNumber

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()

background image

248

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

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

SPC

Składnia

SPCConnect(“User”,”Password”);

Parametr

Opis

User

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

SPC

Skł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()

background image

Funkcje skryptowe

249

Opis funkcji, pól i zmiennych systemowych

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

SPC

Skł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

SPC

Składnia

[Status=]SPCDisplayData("Dataset", "DateString",

"TimeString", RangeInHours );

Parametr

Opis

Dataset

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);

background image

250

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

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

SPC

Składnia

SPCLocateScooter( "Dataset", SampleNumber );

Parametr

Opis

Dataset

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

SPC

Składnia

SPCMoveScooter( "Dataset", IncrementValue );

Parametr

Opis

Dataset

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()

background image

Funkcje skryptowe

251

Opis funkcji, pól i zmiennych systemowych

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

SPC

Składnia

SPCSaveSample("Dataset");

Parametr

Opis

Dataset

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

SPC

Skł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

SPC

Skł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()

background image

252

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

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

SPC

Składnia

SPCSetControlLimits("Dataset",XUCL,XLCL);

Parametr

Opis

Dataset

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

SPC

Składnia

SPCSetMeasurement("Dataset",Measurement,Value);

Parametr

Opis

Dataset

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()

background image

Funkcje skryptowe

253

Opis funkcji, pól i zmiennych systemowych

SPCSetProductCollected()

SPCSetProductDisplayed()

Funkcja ta umożliwia zmianę wyrobu (Product), dla którego zbierane są
dane w obrębie danego zestawu danych (Dataset).

Kategoria

SPC

Składnia

SPCSetProductCollected("Dataset","Product");

Parametr

Opis

Dataset

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

SPC

Składnia

SPCSetProductDisplayed("Dataset","Product");

Parametr

Opis

Dataset

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()

background image

254

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

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

SPC

Składnia

SPCSetRangeLimits("Dataset",RUCL,RLCL);

Parametr

Opis

Dataset

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

SPC

Składnia

SPCSetSpecLimits("Dataset",XUSL,XLSL);

Parametr

Opis

Dataset

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()

background image

Funkcje skryptowe

255

Opis funkcji, pól i zmiennych systemowych

SQLAppendStatement()

SQLClearParam()

SQLClearStatement()

Dalsza część instrukcji SQL zawarta w zmiennej tekstowej. Funkcja ta
zwraca kody błędów.

Kategoria

SQL

Skł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

SQL

Skł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

SQL

Składnia

[ResultCode=]SQLClearStatement(ConnectionID,SQLHandle);

background image

256

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

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

SQL

Skł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()

background image

Funkcje skryptowe

257

Opis funkcji, pól i zmiennych systemowych

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

SQL

Skł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()

background image

258

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

SQLConnect()

Funkcja ta nawiązuje połączenie programu InTouch z bazą danych określoną
w ConnectString.

Kategoria

SQL

Skł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

ść

]...]"

background image

Funkcje skryptowe

259

Opis funkcji, pól i zmiennych systemowych

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()

background image

260

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

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

SQL

Skł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()

background image

Funkcje skryptowe

261

Opis funkcji, pól i zmiennych systemowych

SQLDelete()

Funkcja ta usuwa rekord lub kilka rekordów.

Kategoria

SQL

Skł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()

background image

262

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

SQLDisconnect()

SQLDropTable()

SQLEnd()

Funkcja ta służy do odłączenia użytkownika od bazy danych.

Kategoria

SQL

Skł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

SQL

Skł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

SQL

Skł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()

background image

Funkcje skryptowe

263

Opis funkcji, pól i zmiennych systemowych

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

SQL

Skł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

SQL

Skł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.

background image

264

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

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

SQL

Skł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

SQL

Skł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()

background image

Funkcje skryptowe

265

Opis funkcji, pól i zmiennych systemowych

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

SQL

Skł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żenia

Kategoria

SQL

Skł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()

background image

266

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

SQLInsertExecute()

SQLInsertPrepare()

Funkcja ta wykonuje przygotowaną instrukcję wstawiania rekordów do
tablicy.

Kategoria

SQL

Skł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

SQL

Skł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()

background image

Funkcje skryptowe

267

Opis funkcji, pól i zmiennych systemowych

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

SQL

Skł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

SQL

Skł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

background image

268

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

SQLManageDSN()

SQLNext()

SQLNumRows()

Funkcja ta uruchamia program Microsoft ODBC Manager. Można go
wykorzystać do dodawania, usuwania i modyfikacji nazw źródeł danych.

Kategoria

SQL

Skł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

SQL

Skł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

SQL

Skł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()

background image

Funkcje skryptowe

269

Opis funkcji, pól i zmiennych systemowych

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

SQL

Skł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

SQL

Skł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()

background image

270

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

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

SQL

Skł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()

background image

Funkcje skryptowe

271

Opis funkcji, pól i zmiennych systemowych

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

SQL

Skł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

background image

272

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

Przyklady
warunku
WhereExpression

WhereExpr - zmienna typu Memory Message.
OrderByExpr - zmienna typu Memory Message.
Speed_Input - Memory Real - liczba wprowadzana
przez użytkownika
Serial_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.

background image

Funkcje skryptowe

273

Opis funkcji, pól i zmiennych systemowych

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()

background image

274

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

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

SQL

Skł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

SQL

Skł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,Pa

rameterValue);

Patrz również

SQLPrepareStatement()

background image

Funkcje skryptowe

275

Opis funkcji, pól i zmiennych systemowych

SQLSetParamDateTime()

SQLSetParamDecimal()

Funkcja ta powoduje przypisanie łańcucha znaków określonemu
parametrowi zawierającemu datę i czas.

Kategoria

SQL

Skł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,ParameterNumbe

r,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

SQL

Skł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()

background image

276

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

SQLSetParamFloat()

SQLSetParamInt()

SQLSetParamLong()

Funkcja ta powoduje przypisanie parametrowi wartości ParameterValue .

Kategoria

SQL

Skł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

SQL

Składnia

[ResultCode=]SQLSetParamInt(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=SQLSetParamInt(SQLHandle,ParameterNumber,

ParameterValue);

Patrz również

SQLPrepareStatement()

Funkcja ta powoduje przypisanie parametrowi wartości ParameterValue.

Kategoria

SQL

Skł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()

background image

Funkcje skryptowe

277

Opis funkcji, pól i zmiennych systemowych

SQLSetParamNull()

Funkcja ta powoduje przypisanie parametrowi wartości zerowej (pustej).

Kategoria

SQL

Skł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 danych

Precision

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()

background image

278

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

SQLSetParamTime()

SQLSetStatement()

Funkcja ta powoduje przypisanie łańcucha znaków określonemu
parametrowi reprezentującemu czas.

Kategoria

SQL

Skł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

SQL

Skł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.

background image

Funkcje skryptowe

279

Opis funkcji, pól i zmiennych systemowych

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

SQL

Składnia

[ResultCode=]SQLTransact(ConnectionID);

background image

280

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

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()

background image

Funkcje skryptowe

281

Opis funkcji, pól i zmiennych systemowych

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

SQL

Skł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

background image

282

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

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

SQL

Skł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 matematyczne

Składnia

RealResult=Sqrt(Number);

Parametr

Opis

Number

Dowolna liczba, zmienna rzeczywista (Real) lub
całkowita (Integer) programu InTouch.

Przykład(y)

AnalogTag1=Sqrt(AnalogTag2);

background image

Funkcje skryptowe

283

Opis funkcji, pól i zmiennych systemowych

StartApp

StringASCII()

Automatyczne uruchomienie innej aplikacji Windows.

Kategoria

system

Składnia

StartApp "AppName";

Parametr

Opis

AppName

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 tekstowej

Kategoria

funkcje tekstowe

Składnia

IntegerResult=StringASCII("Char");

Parametr

Opis

Char

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 65

StringASCII("A Mixer is Running") zwróci 65

StringASCII("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()

background image

284

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

StringChar()

StringFromIntg()

Zwraca znak dla zadanego kodu ASCII.

Kategoria

funkcje tekstowe

Składnia

MessageResult=StringChar(ASCII);

Parametr

Opis

ASCII

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 tekstowe

Składnia

MessageResult=StringFromIntg(Number,Base);

Parametr

Opis

Number

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()

background image

Funkcje skryptowe

285

Opis funkcji, pól i zmiennych systemowych

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 tekstowe

Składnia

MessageResult=StringFromReal(Number,Precision,"Type");

Parametr

Opis

Number

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()

background image

286

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

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 tekstowe

Składnia

MessageResult=StringFromTime

(SecsSince1-1-70,StringType);

Parametr

Opis

SecsSince1-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

Opis

1

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()

background image

Funkcje skryptowe

287

Opis funkcji, pól i zmiennych systemowych

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 tekstowe

Składnia

MessageResult=StringFromTimeLocal(SecsSince1-1-70,

StringType);

Parametr

Opis

SecsSince1-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

Opis

1

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()

background image

288

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

StringInString()

Pozycja wystąpienia szukanego ciągu znaków w zadanym tekście.

Kategoria

funkcje tekstowe

Składnia

IntegerResult=StringInString("Text","SearchFor",

StartPos,CaseSens);

Parametr

Opis

Tekst

Ł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()

background image

Funkcje skryptowe

289

Opis funkcji, pól i zmiennych systemowych

StringLeft()

Zwraca liczbę znaków określoną przez Chars, począwszy od znaku
umieszczonego skrajnie po lewej stronie.

Kategoria

funkcje tekstowe

Składnia

MessageResult=StringLeft("Text",Chars);

Parametr

Opis

Tekst

Ł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()

background image

290

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

StringLen()

StringLower()

Zwraca liczbę całkowitą określającą długość zadanej zmiennej tekstowej.

Kategoria

funkcje tekstowe

Składnia

IntegerResult=StringLen("Text");

Parametr

Opis

Tekst

Ł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 13

Patrz 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 tekstowe

Składnia

MessageResult=StringLower("Text");

Parametr

Opis

Tekst

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()

background image

Funkcje skryptowe

291

Opis funkcji, pól i zmiennych systemowych

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 tekstowe

Składnia

MessageResult=StringMid("Text",StartChar,Chars);

Parametr

Opis

Tekst

Ł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()

background image

292

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

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 tekstowe

Składnia

MessageResult=StringReplace(Text,SearchFor,ReplaceWith,

CaseSens,NumToReplace,MatchWholeWords);

Parametr

Opis

Tekst

Ł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)

background image

Funkcje skryptowe

293

Opis funkcji, pól i zmiennych systemowych

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 tekstowe

Składnia

MessageResult=StringRight("Text",Chars);

Parametr

Opis

Tekst

Ł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()

background image

294

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

StringSpace()

Funkcja ta ustawia łańcuch spacji do zmiennej tekstowej lub do wyrażenia.

Kategoria

funkcje tekstowe

Składnia

MessageResult=StringSpace(NumSpaces);

Parametr

Opis

NumSpaces

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()

background image

Funkcje skryptowe

295

Opis funkcji, pól i zmiennych systemowych

StringTest()

Sprawdza typ pierwszego znaku łańcucha znaków.

Kategoria

funkcje tekstowe

Składnia

DiscreteResult=StringTest("Text",TestType)

Parametr

Opis

Tekst

Ł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

Opis

1

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()

background image

296

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

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 tekstowe

Składnia

IntegerResult=StringToIntg("Text");

Parametr

Opis

Tekst

Ł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()

background image

Funkcje skryptowe

297

Opis funkcji, pól i zmiennych systemowych

StringToReal()

Przekształca zmienną tekstową na wartość rzeczywistą (liczbę
zmiennoprzecinkową), na której mogą być przeprowadzone obliczenia
matematyczne..

Kategoria

funkcje tekstowe

Składnia

RealResult=StringToReal("Text");

Parametr

Opis

Tekst

Ł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()

background image

298

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

StringTrim()

Usuwa niepotrzebne spacje z łańcucha znaków.

Kategoria

funkcje tekstowe

Składnia

MessageResult=StringTrim("Text",TrimType);

Parametr

Opis

Text

Ł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

Opis

1

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()

background image

Funkcje skryptowe

299

Opis funkcji, pól i zmiennych systemowych

StringUpper()

Tan()

Przekształca wszystkie małe litery w podanym tekście na duże.

Kategoria

funkcje tekstowe

Składnia

MessageResult=StringUpper("Text");

Parametr

Opis

Tekst

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 matematyczne

Składnia

Result=Tan(AngleNumber);

Parametr

Opis

AngleNumber

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 1
Tan(0) zwróci 0

Patrz również

Cos(), Sin(), ArcCos(), ArcSin(), ArcTan()

background image

300

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

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 tekstowe

Składnia

MessageResult=Text(Analog_Tag,"Format_Text");

Parametr

Opis

Analog_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 matematyczne

Składnia

ResultNumericTag=Trunc(Number);

Parametr

Opis

Number

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()

background image

Funkcje skryptowe

301

Opis funkcji, pól i zmiennych systemowych

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 terminalowe

Składnia

MessageResult=TseGetClientId();

Parametr

Opis

MessageResult

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 terminalowe

Składnia

Result=TseQueryRunningOnConsole();

Parametr

Opis

Result

Zwraca 0 jeżeli aplikacja nie jest uruchomiona na
konsoli TS

Uwagi

-

Przykład

IntTag=TseQueryRunningOnConsole();

Zwraca IntTag=1 jeżeli aplikacja jest uruchomiona na konsoli Terminala
Serwera.

background image

302

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

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 terminalowe

Składnia

Result=TseQueryRunningOnClient();

Parametr

Opis

Result

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 Windows

Składnia

[ErrorNumber=]wcAddItem("ControlName","MessageTag");

Parametr

Opis

ControlName

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()

background image

Funkcje skryptowe

303

Opis funkcji, pól i zmiennych systemowych

wcClear()

wcDeleteItem()

Funkcja ta usuwa wszystkie elementy z listy (List box) lub listy rozwijalnej
(Combo box).

Kategoria

obiekty sterujące Windows

Składnia

[ErrorNumber=]wcClear("ControlName");

Parametr

Opis

ControlName

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 Windows

Składnia

[ErrorNumber=]wcDeleteItem("ControlName",ItemIndex);

Parametr

Opis

ControlName

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);

background image

304

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

wcDeleteSelection()

wcErrorMessage()

Usuwa aktualnie wybrany element z listy lub listy rozwijalnej.

Kategoria

obiekty sterujące Windows

Składnia

[ErrorNumber =]wcDeleteSelection("ControlName");

Parametr

Opis

ControlName

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 Windows

Składnia

ErrorMessage=wcErrorMessage(ErrorNumber);

Parametr

Opis

ErrorMessage

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);

background image

Funkcje skryptowe

305

Opis funkcji, pól i zmiennych systemowych

wcFindItem()

Funkcja ta wyznacza indeks pierwszego elementu listy lub listy
rozwijalnej, który odpowiada podanemu łańcuchowi znaków Message.

Kategoria

obiekty sterujące Windows

Składnia

[ErrorNumber=]wcFindItem

("ControlName","MessageTag",DiscreteTag,Tagname);

Parametr

Opis

ControlName

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łe
1 = 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.

background image

306

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

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 Windows

Składnia

[ErrorNumber=]wcGetItem("ControlName",ItemIndex,

Zmienna);

Parametr

Opis

ControlName

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".

background image

Funkcje skryptowe

307

Opis funkcji, pól i zmiennych systemowych

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 Windows

Składnia

[ErrorNumber=]wcGetItemData("ControlName",ItemIndex,

Zmienna);

Parametr

Opis

ControlName

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()

background image

308

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

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 Windows

Składnia

[ErrorNumber=]wcInsertItem("ControlName",ItemIndex,

"MessageTag");

Parametr

Opis

ControlName

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()

background image

Funkcje skryptowe

309

Opis funkcji, pól i zmiennych systemowych

wcLoadList()

Funkcja ta zastępuje zawartość elementów listy lub listy rozwijalnej
elementami wczytanymi z pliku FileName.

Kategoria

obiekty sterujące Windows

Składnia

[ErrorNumber=]wcLoadList("ControlName","Filename");

Parametr

Opis

ControlName

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()

background image

310

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

wcLoadText()

Funkcja ta zastępuje zawartość pola tekstowego zawartością pliku o nazwie
FileName.

Kategoria

obiekty sterujące Windows

Składnia

[ErrorNumber=]wcLoadText("ControlName", "Filename");

Parametr

Opis

ControlName

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");

background image

Funkcje skryptowe

311

Opis funkcji, pól i zmiennych systemowych

wcSaveList()

Funkcja ta zastępuje zawartość pliku FileName elementami obiektu lista
lub lista rozwijalna.

Kategoria

obiekty sterujące Windows

Składnia

[ErrorNumber=]wcSaveList("ControlName","Filename");

Parametr

Opis

ControlName

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ów
ElementListy, WartośćElementu
ElementListy, WartośćElementu
: :
: :
ElementListy, WartośćElementu
Przykł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, 3
Czekolada, 0
Wanilia, 0
Truskawki, 0
Opis: 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()

background image

312

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

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 Windows

Składnia

[ErrorNumber=]wcSaveText("ControlName","Filename");

Parametr

Opis

ControlName

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()

background image

Funkcje skryptowe

313

Opis funkcji, pól i zmiennych systemowych

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 Windows

Składnia

[ErrorNumber=]wcSetItemData("ControlName",ItemIndex,

Number);

Parametr

Opis

ControlName

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()

background image

314

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

WWControl()

Pozwala na Przywrócenie,. Zminimalizowanie, Maksymalizowanie lub
Zamknięcie aplikacji z poziomu pakietu InTouch.

Kategoria

różne

Składnia

WWControl("AppTitle","ControlType");

Parametr

Opis

AppTitle

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()

background image

Funkcje skryptowe

315

Opis funkcji, pól i zmiennych systemowych

WWExecute()

Funkcja ta wysyła polecenie (DDE Execute) do podanej aplikacji i tematu
(Topic).

Kategoria

WWDDE

Składnia

[Status=]WWExecute("Application","Topic","Command");

Parametr

Opis

Application

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.

background image

316

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

WWPoke()

Funkcja ta wysyła wartość (za pomocą protokołu DDE) do zadanej
aplikacji, tematu i elementu.

Kategoria

WWDDE

Składnia

[Status=]WWPoke("Application","Topic","Item",

"TextValue");

Parametr

Opis

Application

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()

background image

Funkcje skryptowe

317

Opis funkcji, pól i zmiennych systemowych

WWRequest()

Funkcja ta wysyła jedno polecenie odczytu wartości (za pomocą protokołu
DDE) z określonej aplikacji, tematu i elementu.

Kategoria

WWDDE

Składnia

WWRequest(Application,Topic,Item,ValueMsg_Tag);

Parametr

Opis

Application

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()

background image

318

Rozdział 3

Opis funkcji, pól i zmiennych systemowych

background image

Automatyzacja OLE w programie InTouch

319

Opis funkcji, pól i zmiennych systemowych

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 Automation

W 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.

background image

320

Rozdział 4

Opis funkcji, pól i zmiennych systemowych

Obsługa OLE Automation w programie InTouch

InTouch 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ów

Nazwy 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_IsObjectValid

OLE_GetLastObjectError

OLE_ReleaseObject

OLE_GetLastObjectErrorMessage

OLE_ResetObjectError

OLE_IncrementOnObjectError

OLE_ShowMessageOnObjectError

background image

Automatyzacja OLE w programie InTouch

321

Opis funkcji, pól i zmiennych systemowych

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 OLE

Nie 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..

background image

322

Rozdział 4

Opis funkcji, pól i zmiennych systemowych

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ą.

background image

Automatyzacja OLE w programie InTouch

323

Opis funkcji, pól i zmiennych systemowych

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.

background image

324

Rozdział 4

Opis funkcji, pól i zmiennych systemowych

Ograniczenia

Korzystanie 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_CreateObject

Obiekty 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..

background image

Automatyzacja OLE w programie InTouch

325

Opis funkcji, pól i zmiennych systemowych

Zarządzanie obiektem: OLE_ReleaseObject

Obiekt 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.

background image

326

Rozdział 4

Opis funkcji, pól i zmiennych systemowych

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ści

Wł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ść.

background image

Automatyzacja OLE w programie InTouch

327

Opis funkcji, pól i zmiennych systemowych

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)

THEN

Tag = 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;

background image

328

Rozdział 4

Opis funkcji, pól i zmiennych systemowych

Ustawianie właściwości

Wartość 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.

background image

Automatyzacja OLE w programie InTouch

329

Opis funkcji, pól i zmiennych systemowych

Wywoływanie metody

Wywoł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:

Ograniczenia

Przy 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ów

Typy 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 jako

Integer

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.

background image

330

Rozdział 4

Opis funkcji, pól i zmiennych systemowych

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ściowe

Parametry 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 zwracane

Aby 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

background image

Automatyzacja OLE w programie InTouch

331

Opis funkcji, pól i zmiennych systemowych

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.

background image

332

Rozdział 4

Opis funkcji, pól i zmiennych systemowych

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_GetLastObjectError

Funkcja 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.

background image

Automatyzacja OLE w programie InTouch

333

Opis funkcji, pól i zmiennych systemowych

OLE_GetLastObjectErrorMessage

Funkcja 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_ShowMessageOnObjectError

Funkcja 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

background image

334

Rozdział 4

Opis funkcji, pól i zmiennych systemowych

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_IncrementOnObjectError

Funkcja 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.

background image

Automatyzacja OLE w programie InTouch

335

Opis funkcji, pól i zmiennych systemowych

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.

background image

336

Rozdział 4

Opis funkcji, pól i zmiennych systemowych

background image

Usuwanie problemów przy korzystaniu z funkcji skryptowych

337

Opis funkcji, pól i zmiennych systemowych

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

background image

338

Dodatek A

Opis funkcji, pól i zmiennych systemowych

* -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

Opis

0

Success

Pomyślne wykonanie wywołanej
funkcji receptur.

-1

No Such Recipe
Template

Brak 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

background image

Usuwanie problemów przy korzystaniu z funkcji skryptowych

339

Opis funkcji, pól i zmiennych systemowych

-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

background image

340

Dodatek A

Opis funkcji, pól i zmiennych systemowych

Wyświetlanie komunikatów dla kodów błędów
receptur

Każ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 DDE

Z 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świetlania

Elementy 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.

background image

Usuwanie problemów przy korzystaniu z funkcji skryptowych

341

Opis funkcji, pól i zmiennych systemowych

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

Opis

AutoCollection

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.

background image

342

Dodatek A

Opis funkcji, pól i zmiennych systemowych

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

background image

Usuwanie problemów przy korzystaniu z funkcji skryptowych

343

Opis funkcji, pól i zmiennych systemowych

Elementy DDE SPC dla bieżącej próbki

Wszystkie 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 Opis

CurrentCauseCode

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.

background image

344

Dodatek A

Opis funkcji, pól i zmiennych systemowych

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

background image

Usuwanie problemów przy korzystaniu z funkcji skryptowych

345

Opis funkcji, pól i zmiennych systemowych

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

background image

346

Dodatek A

Opis funkcji, pól i zmiennych systemowych

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

background image

Usuwanie problemów przy korzystaniu z funkcji skryptowych

347

Opis funkcji, pól i zmiennych systemowych

Elementy DDE SPC do ręcznego wprowadzania

Elementy 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

Opis

MI_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

background image

348

Dodatek A

Opis funkcji, pól i zmiennych systemowych

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

background image

Usuwanie problemów przy korzystaniu z funkcji skryptowych

349

Opis funkcji, pól i zmiennych systemowych

Elementy DDE SPC do zaznaczania

Elementy 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

Opis

Selection

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.

background image

350

Dodatek A

Opis funkcji, pól i zmiennych systemowych

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

background image

Usuwanie problemów przy korzystaniu z funkcji skryptowych

351

Opis funkcji, pól i zmiennych systemowych

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

background image

352

Dodatek A

Opis funkcji, pól i zmiennych systemowych

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łędach

W 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

Opis

0

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

background image

Usuwanie problemów przy korzystaniu z funkcji skryptowych

353

Opis funkcji, pól i zmiennych systemowych

-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

background image

354

Dodatek A

Opis funkcji, pól i zmiennych systemowych

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

Oracle

Komunikat

Rozwiązanie

ORA-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.

background image

Usuwanie problemów przy korzystaniu z funkcji skryptowych

355

Opis funkcji, pól i zmiennych systemowych

Sybase or Microsoft SQL Server

dBASE

Komunikat

Rozwiązanie

You 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ązanie

File 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.

background image

356

Dodatek A

Opis funkcji, pól i zmiennych systemowych

background image

357

Opis funkcji, pól i zmiennych systemowych

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

A

Alarmów Funkcje

AalmSelectGroup 174
Ack 164

almAckAll 166
almAckDisplays 166
almAckGroup 167

almAckPriority 168
almAckRecent 168
almAckSelect 169

almAckSelectedGroup 169
almAckSelectedPriority 170
almAckSelectedTag 170

almAckTag 171
almDefQuery 172
almMoveWindow 172

almQuery 173
almSelectAll 174
almSelectionCount 175

almSelectItem 175
almSelectPriority 175
almSelectTag 176

almSetQueryByName 176
almShowStats 177

almSuppressDisplay 178
almSuppressGroup 178
almSuppressPriority 179

almSuppressRetain 179
almSuppressSelected 180
almSuppressSelectedGroup 181

almSuppressSelectedPriority 181
almSuppressSelectedTag 182
almSuppressTag 180

almUnSelectAll 182
almUnSuppressAll 183
Error Numbers 337

Komunikaty 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

E

Error Numbers

Alarmów Funkcje 337

Funkcje receptur 338
Obiekty steruj¹ce okien - Funkcje 337

F

Flagi jakoœci 135
Funkcja OLE_IsObjectValid 326
Funkcja OLE_ReleaseObject 325

Funkcje

Abs 164
Ack 164

ActivateApp 165
almAckAll 166
almAckDisplay 166

almAckGroup 167
almAckPriority 168
almAckRecent 168

almAckSelect 169
almAckSelectedGroup 169
almAckSelectedPriority 170

almAckSelectedTag 170
almAckTag 171
almDefQuery 172

almMoveWindow 172
almQuery 173
almSelectAll 174

almSelectGroup 174
almSelectionCount 175
almSelectItem 175

almSelectPriority 175
almSelectTag 176
almSetQueryByName 176

almShowStats 177

background image

358

Opis funkcji, pól i zmiennych systemowych

almSuppressDisplay 178
almSuppressGroup 178
almSuppressPriority 179

almSuppressRetain 179
almSuppressSelected 180
almSuppressSelectedGroup 181

almSuppressSelectedPriority 181
almSuppressSelectedTag 182
almSuppressTag 180

almUnSelectAll 182
almUnSuppressAll 183
ArcCos 183

ArcSin 184
ArcTan 184
ChangePassword 185

Cos 186
DialogStringEntry 186
DialogValueEntry 188

DText 190
Exp 191
FileCopy 191

FileDelete 193
FileMove 194
FileReadFields 196

FileReadMessage 197
FileWriteFields 198
FileWriteMessage 199

GetNodeName 199
GetPropertyD 200
GetPropertyI 200

GetPropertyM 201
Hide 202
Hideself 202
HTGetLastError 203

HTGetPenName 204
HTGetTimeAtScooter 204
HTGetTimeStringAtScooter 205

HTGetValue 206
HTGetValueAtScooter 207
HTGetValueAtZone 208

HTScrollLeft 210
HTScrollRight 210
HTSelectTag 211

HTSetPenName 211
HTUpdateToCurrentTime 212
HTZoomIn 212

HTZoomOut 213
InfoAppActive 214
InfoAppTitle 214

InfoDisk 215
InfoFile 216
InfoInTouchAppDir 217

InfoResources 217
Int 218
IOGetApplication 218

IOGetNode 219
IOGetTopic 219
IOReinitialize 219

IOSetAccessName 220
IOSetItem 221
IOStartUninitConversations 222

IsAnyAsynchFunctionBusy 222
Log 223
LogMessage 224

LogN 224
Logoff 225
OLE_CreateObject 324

OLE_IsObjectValid 326
OLE_ReleaseObject 325
Pi 225

PlaySound 225
PrintHT 227
PrintWindow 228, 230

RecipeDelete 232
RecipeGetMessage 233
RecipeLoad 234

RecipeSave 235
RecipeSelectNextRecipe 236
RecipeSelectPreviousRecipe 237

RecipeSelectRecipe 238
RecipeSelectUnit 239
ReloadWindowViewer 240

RestartWindowViewer 240
Round 241
SendKeys 242

SetPropertyD 243
SetPropertyI 244
SetPropertyM 244

Sgn 245
Show 245
ShowAt 246

ShowHome 246
ShowTopLeftAt 247
Sin 247
SLQRollback 270

SPCConnect 248
SPCDatasetDlg 248
SPCDisconnect 249

SPCDisplayData 249
SPCLocateScooter 250
SPCMoveScooter 250

SPCSaveSample 251
SPCSelectDataset 251
SPCSelectProduct 251

SPCSetControlLimits 252
SPCSetMeasurement 252
SPCSetProductCollected 253

SPCSetProductDislpayed 253
SPCSetRangeLimits 254
SPCSetSpecLimits 254

SQLAppendStatement 255
SQLClearParam 255
SQLClearStatement 255

SQLClearTable 256
SQLCommit 257
SQLConnect 258

SQLCreateTable 260
SQLDelete 261
SQLDisconnect 262

SQLDropTable 262
SQLEnd 262
SQLErrorMsg 263

background image

359

Opis funkcji, pól i zmiennych systemowych

SQLExecute 263
SQLFirst 264
SQLGetRecord 264

SQLInsert 265
SQLInsertEnd 265
SQLInsertExecute 266

SQLInsertPrepare 266
SQLLast 267
SQLLoadStatement 267

SQLManageDSN 268
SQLNext 268
SQLNumRows 268

SQLPrepareStatement 269
SQLPrev 269
SQLSelect 271

SQLSetParamChar 274
SQLSetParamDate 274
SQLSetParamDateTime 275

SQLSetParamDecimal 275
SQLSetParamFloat 276
SQLSetParamLong 276

SQLSetParamNull 277
SQLSetParamTime 278
SQLSetStatement 278

SQLTransact 279
SQLUpdate 281
SQLUpdateCurrent 282

Sqrt 282
StartApp 283
StringASCII 283

StringChar 284
StringFromIntg 284
StringFromReal 285
StringFromTime 286

StringFromTimeLocal 287
StringInString 288
StringLeft 289

StringLen 290
StringLow 290
StringMid 291

StringReplace 292
StringRight 293
StringSpace 294

StringTest 295
StringToInt 296
StringToReal 297

StringTrim 298
StringUpper 299
Tan 299

Tekst 300
Trunc 300
TseGetClientID 301

TseQueryRunningOnClient 302
TseQueryRunningOnConsole 301
wcAddItem 302

wcClear 303
wcDelete 303
wcDeleteSelection 304

wcErrorMessage 304
wcFindItem 305
wcGetItem 306

wcGetItemData 307
wcInsertItem 308
wcLoadList 309

wcLoadText 310
wcSaveList 311
wcSaveText 312

wsSetItemData 313
WWControl 314
WWExecute 315

WWPoke 316
WWRequest 317

Funkcje matematyczne

Abs 164
ArcCos 183
ArcSin 184

ArcTan 184
Cos 186
Exp 191

Int 217, 218
Log 223
LogN 224

Pi 225
Round 241
Sgn 245

Sin 247
Sqrt 282
Tan 299

Trunc 300

Funkcje receptur

Error Numbers 338

Komunikaty o b³êdach 338
RecipeDelete 232
RecipeGetMessage 233, 340
RecipeLoad 234

RecipeSave 235
RecipeSelectNextRecipe 236
RecipeSelectPreviousRecipe 237

RecipeSelectRecipe 238
RecipeSelectUnit 239
Usuwanie problemów 338

Wyœwietlanie komunikatów b³êdów 340

Funkcje skryptowe QuickScript 163
Funkcje SPC

SPCConnect 248
SPCDatasetDlg 248
SPCDisconnect 249

SPCDisplayData 249
SPCLocateScooter 250
SPCMoveScooter 250

SPCSaveSample 251
SPCSelectDataset 251
SPCSelectProduct 251

SPCSetControlLimits 252
SPCSetMeasurement 252
SPCSetProductCollected 253

SPCSetProductDislpayed 253
SPCSetRangeLimits 254
SPCSetSpecLimits 254

Funkcje systemowe

ActivateApp 165
FileCopy 191

background image

360

Opis funkcji, pól i zmiennych systemowych

FileDelete 193
FileMove 194
FileReadFields 196

FileReadMessage 197
FileWriteFields 198
FileWriteMessage 199

GetNodeName 199
InfoAppActive 214
InfoAppTitle 214

InfoDisk 215
InfoFile 216
InfoInTouchAppDir 217

IsAnyAsynchFunctionBusy 222
ReloadWindowViewer 240
RestartWindowViewer 240

StartApp 283

Funkcje systemu bezpieczeñstwa

ChangePassword 185, 225

Funkcje tekstowe

DText 190
StringASCII 283

StringChar 284
StringFromIntg 284
StringFromReal 285

StringFromTime 286
StringFromTimeLocal 287
StringInString 288

StringLeft 289
StringLen 290
StringLow 290

StringMid 291
StringReplace 292
StringRight 293
StringSpace 294

StringTest 295
StringToInt 296
StringToReal 297

StringTrim 298
StringUpper 299
Tekst 300

Funkcje trendów historycznych

HTGetLastError 203
HTGetPenName 204

HTGetTimeAtScooter 204
HTGetTimeStringAtScooter 205
HTGetValue 206

HTGetValueAtScooter 207
HTGetValueAtZone 208
HTScrollLeft 210

HTScrollRight 210
HTSelectTag 211
HTSetPenName 211

HTUpdateToCurrentTime 212
HTZoomIn 212
HTZoomOut 213

PrintHT 227

Funkcje us³ugi terminala

TseGetClientID 301

TseQueryRunningOnClient 302
TseQueryRunningOnConsole 301

G

GOT - Funkcje

GetPropertyD 200
GetPropertyI 200
GetPropertyM 201

SetPropertyD 243
SetPropertyI 244
SetPropertyM 244

I

I/O

Typy zmiennych 39

K

Kody b³êdów baz danych Sybase 355
Komunikaty b³êdów dBase 355
Komunikaty b³êdów SQL Serwer 355

Komunikaty o b³êdach

Alarmów Funkcje 337
Baza danych Oracle 354

Baza danych Sybase 355
dBase 355
Funkcje receptur 338

Obiekty steruj¹ce okien - Funkcje 337
SQL Server 355
Wyœwietlanie komunikatów b³êdów receptur 340

Komunikaty o b³êdach bazy danych Oracle 354

M

Matryca typów zmiennych 40

N

Nazwy elementów SPC DDE

Bie¿¹ca próbka 343
Rêczne wprowadzanie danych 347
Selection 349

Sterowanie i wyœwietlanie 340

O

Obiekty steruj¹ce okien - Funkcje

Error Numbers 337
Komunikaty o b³êdach 337

wcAddItem 302
wcClear 303
wcDelete 303

wcDeleteSelection 304
wcErrorMessage 304, 337
wcFindItem 305

wcGetItem 306
wcGetItemData 307
wcInsertItem 308

wcLoadList 309
wcLoadText 310
wcSaveList 311

wcSaveText 312

background image

361

Opis funkcji, pól i zmiennych systemowych

wsSetItemData 313

Obiekty steruj¹ce okien - Pola

.Caption 98

.Enabled 102
.ListCount 107
.NewIndex 124

.ReadOnly 143
.TopIndex 155
.Value 161

.Visible 162

OLE for Process Control (OPC) 135
OLE_CreateObject Function 324

P

Pola 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 157

Pola trendów historycznych

.ChartLength 99

background image

362

Opis funkcji, pól i zmiennych systemowych

.ChartStart 100
.DisplayMode 101
.MaxRange 116

.MinRange 121
.Pen1-.Pen8 128
.ScooterLockLeft 147

.ScooterLockRight 147
.ScooterPosLeft 148
.ScooterPosRight 149

.UpdateCount 158
.UpdateInProgress 159
.UpdateTrend 160

Pola 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

background image

363

Opis funkcji, pól i zmiennych systemowych

.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 162

Pole bitowe pod-statusu 139

R

RecipeGetMessage 340

Ró¿ne funkcje

DialogStringEntry 186
DialogValueEntry 188

Hide 202
Hideself 202
IOGetApplication 218

IOGetNode 219
IOGetTopic 219

IOReinitialize 219
IOSetAccessName 220
IOSetItem 221

IOStartUninitConversations 222
LogMessage 224
PlaySound 225

PrintWindow 228, 230
SendKeys 242
Show 245

ShowAt 246
ShowHome 246
ShowTopLeftAt 247

WWControl 314

S

Specyfikacja jakoœci danych Fieldbus 135
SQLErrorMsg 352
statusy jakoœci 135

System rejestrowania danych historycznych -
Zmienne

$HistoricalLogging 27

T

Typy zmiennych 37

I/O 39

I/O Discrete 39
I/O Integer 39

I/O Real 39

Indirect

Indirect Analog 39
Indirect Discrete 39

Indirect Message 39

Inne 39

Hist Trend (Trend historyczny) 40

Tag ID (Identyfikator zmiennej) 40
Zmienne typu SuperTag 40

Memory 38

Memory Discrete 38
Memory Integer 38
Memory Message 38

Memory Real 38

U

Usuwanie problemów

Funkcje receptur 338
Zestawienie funkcji SQL 352

W

Wewnêtrzne zmienne systemowe 21

WWDDE Functions

WWExecute 315
WWPoke 316

WWRequest 317

Z

Zabezpieczaj¹ce zmienne systemowe

background image

364

Opis funkcji, pól i zmiennych systemowych

$AccessLevel 21
$ChangePassword 25
$ConfigureUsers 25

$InactivityTimeout 28
$InactivityWarning 29
$Operator 32

$OperatorEntered 33
$PasswordEntered 34

Zestawienie funkcji SQL

ConnectionID Variable 258
ConnectString Variable 258
Komunikaty o b³êdach 352

ResultCode 352
SLQRollback 270
SQLAppendStatement 255

SQLClearParam 255
SQLClearStatement 255
SQLClearTable 256

SQLCommit 257
SQLConnect 258
SQLCreateTable 260

SQLDelete 261
SQLDisconnect 262
SQLDropTable 262

SQLEnd 262
SQLErrorMsg 263, 352
SQLExecute 263

SQLFirst 264
SQLGetRecord 264
SQLInsert 265

SQLInsertEnd 265
SQLInsertExecute 266
SQLInsertPrepare 266
SQLLast 267

SQLLoadStatement 267
SQLManageDSN 268
SQLNext 268

SQLNumRows 268
SQLPrepareStatement 269
SQLPrev 269

SQLSelect 271
SQLSetParamChar 274
SQLSetParamDate 274

SQLSetParamDateTime 275
SQLSetParamDecimal 275
SQLSetParamFloat 276

SQLSetParamInt 276
SQLSetParamLong 276
SQLSetParamNull 277

SQLSetParamTime 278
SQLSetStatement 278
SQLTransact 279

SQLUpdate 281
SQLUpdateCurrent 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


Document Outline


Wyszukiwarka

Podobne podstrony:
LI ASK OF IT800
LI ASK PK IT800
LI ASK OF IT700
LI ASK SPC IT800
LI ASK MR IT800
LI ASK CSC GE1
Phantom Of The Opera All I Ask Of You
LI ASK RT IT711
LI ASK SA IT900
LI ASK MR IT900
li ask pmev pk AGTUXSMD4Z24FKRG7EOTAFWK7CKL2YXJBVHPQLQ

więcej podobnych podstron