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.

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 mTag1mTag1 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 .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 .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 są 
wyrażone w procentach. Wartość .MinRange musi być mniejsza od 
.MaxRange. Jeśli wartość wprowadzona do któregoś z tych pól będzie 
mniejsza niż 0, lub większa niż 100, zostanie automatycznie zmieniona na 0 
lub 100. Jeżeli wartość w polu .MinRange jest większa lub równa wartości w 
polu .MaxRange, na wykresie nie zostaną wyświetlone żadne dane.

Przykład(y)

Zamieszczone poniżej, przykładowe wyrażenie, zmienia maksymalny, 
procentowy zakresu trendu historycznego związanego ze zmienną o nazwie 
MyHistTrendTag na wartość równą 25%.

MyHistTrendTag.MaxRange=25;

Patrz również

.ChartStart, .ChartLength, .DisplayMode, .EngUnits, .MinEU, .MaxEU, 
.MinRange, .MinRaw, .MaxRaw, .RawValue

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 są 
wyrażone w procentach. Wartość .MinRange musi być mniejsza od 
.MaxRange. Jeśli wartość wprowadzona do któregoś z tych pól będzie 
mniejsza niż 0, lub większa niż 100, zostanie automatycznie zmieniona na 0 
lub 100. Jeżeli wartość w polu .MinRange jest większa lub równa wartości w 
polu .MaxRange, na wykresie nie zostaną wyświetlone żadne dane.

Przykład(y)

TotalChartHeight=MyHistTrendTag.MaxRange -

MyHistTrendTag.MinRange;

Patrz również

.ChartStart, .ChartLength, .DisplayMode, .EngUnits, .MinEU, .MaxEU, 
.MaxRange, .MinRaw, .MaxRaw, .RawValue

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 
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ść 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 MyTag1MyTag2 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 MyTag1MyTag2 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, Trend1Pen2. 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) 
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ć StartUstawieniaPanel 
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ą 
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 ResultCodeErrorMsg 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() 
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() 
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ówItemIndex 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 
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 aplikacjitematu 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 elementutematu 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