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

438
Wonderware ® FactorySuite™ InTouch ® Opis funkcji, pól i zmiennych systemowych Wersja C Ostatnia wersja: Sierpień 2005 Invensys Systems, Inc.

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

Wonderware® FactorySuite™InTouch® Opis funkcji, pól i zmiennych systemowych

Wersja C

Ostatnia wersja: Sierpień 2005

Invensys Systems, Inc.

Wszystkie prawa zastrzeżone. Żaden fragment niniejszej publikacji nie może być kopiowany, przechowywany w systemie do wyszukiwania informacji, przesyłany za pomocą jakichkolwiek metod: elektronicznych, mechanicznych, fotokopiowania, nagrywania, lub też w jakikolwiek inny sposób, bez uprzedniego otrzymania pisemnej zgody Invensys Systems, Inc. Dołożono wszelkich starań, aby informacje zawarte w tej publikacji były kompletne i rzetelne, jednakże ani dostawca ani autor nie ponoszą odpowiedzialności za błędy i omyłkowe pominięcia. Nie jest również ponoszona 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.26561 Rancho Parkway SouthLake Forest, CA 92630 U.S.A.(949) 727-3200http://www.wonderware.com

Znaki handlowe

Terminy używane w niniejszej dokumentacji, 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 dokumentacji nie może być traktowane jako naruszanie praw do tych znaków handlowych lub oznaczeń usług.

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

Spis treści 5

Spis treści

Wprowadzenie ..................................................19

Konwencja opisu .................................................................................. 19Informacje o podręczniku użytkownika............................................... 20Pomoc techniczna................................................................................. 21Licencja FactorySuite........................................................................... 21

ROZDZIAŁ 1: Zmienne systemowe.................23$AccessLevel ....................................................................................... 24$ApplicationChanged........................................................................... 25$ApplicationVersion............................................................................. 25$ChangePassword ................................................................................ 26$ConfigureUsers................................................................................... 27$Date .................................................................................................... 27$DateString........................................................................................... 28$DateTime ............................................................................................ 28$Day ..................................................................................................... 28$False ................................................................................................... 29$HistoricalLogging............................................................................... 29$Hour.................................................................................................... 30$InactivityTimeout ............................................................................... 30$InactivityWarning............................................................................... 31$Language ............................................................................................ 31$LogicRunning..................................................................................... 32$Minute ................................................................................................ 32$Month ................................................................................................. 32$Msec ................................................................................................... 33$NewAlarm .......................................................................................... 33$ObjHor................................................................................................ 33$ObjVer ................................................................................................ 34$Operator.............................................................................................. 34$OperatorDomain................................................................................. 35$OperatorDomainEntered .................................................................... 35$OperatorEntered ................................................................................. 36$OperatorName .................................................................................... 36$PasswordEntered ................................................................................ 37$Second ................................................................................................ 37$StartDdeConversations....................................................................... 37$System ................................................................................................ 38$Time.................................................................................................... 38

Opis funkcji, pól i zmiennych systemowych

6 Contents

$TimeString...........................................................................................38$VerifiedUserName...............................................................................39$Year .....................................................................................................39

ROZDZIAŁ 2: Pola i właściwości ....................41Typy zmiennych ....................................................................................41Zmienne typu pamięciowego (Memory)...............................................42

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

Zestawienie typów pól zmiennych........................................................44.Ack .......................................................................................................51.AckDev ................................................................................................52.AckDsc ................................................................................................53.AckROC...............................................................................................54.AckValue..............................................................................................55.Alarm ...................................................................................................56.AlarmAccess ........................................................................................57.AlarmAckModel ..................................................................................58.AlarmClass...........................................................................................59.AlarmComment....................................................................................60.AlarmDate............................................................................................61.AlarmDev.............................................................................................62.AlarmDevCount ...................................................................................63.AlarmDevDeadband.............................................................................63.AlarmDevUnAckCount .......................................................................64.AlarmDisabled .....................................................................................65.AlarmDsc .............................................................................................66.AlarmDscCount ...................................................................................67.AlarmDscDisabled ...............................................................................68.AlarmDscEnabled ................................................................................69.AlarmDscInhibitor ...............................................................................70.AlarmDscUnAckCount ........................................................................71.AlarmEnabled ......................................................................................71.AlarmGroup .........................................................................................72.AlarmGroupSel ....................................................................................73.AlarmHiDisabled .................................................................................74.AlarmHiEnabled ..................................................................................74.AlarmHiHiDisabled .............................................................................75.AlarmHiHiEnabled .............................................................................75.AlarmHiHiInhibitor .............................................................................76.AlarmHiInhibitor .................................................................................77.AlarmLimit...........................................................................................78

Opis funkcji, pól i zmiennych systemowych

Spis treści 7

.AlarmLoDisabled ................................................................................ 78

.AlarmLoEnabled ................................................................................. 79

.AlarmLoInhibitor ................................................................................ 80

.AlarmLoLoDisabled............................................................................ 81

.AlarmLoLoEnabled............................................................................. 81

.AlarmLoLoInhibitor............................................................................ 82

.AlarmMajDevDisabled ....................................................................... 83

.AlarmMajDevEnabled ........................................................................ 83

.AlarmMajDevInhibitor........................................................................ 84

.AlarmMinDevDisabled ....................................................................... 85

.AlarmMinDevEnabled ........................................................................ 86

.AlarmMinDevInhibitor ....................................................................... 87

.AlarmName ......................................................................................... 88

.AlarmOprName................................................................................... 89

.AlarmOprNode.................................................................................... 90

.AlarmPri .............................................................................................. 91

.AlarmProv ........................................................................................... 92

.AlarmROC .......................................................................................... 93

.AlarmROCCount................................................................................. 94

.AlarmROCDisabled ............................................................................ 94

.AlarmROCEnabled ............................................................................. 95

.AlarmROCInhibitor ............................................................................ 96

.AlarmROCUnAckCount ..................................................................... 97

.AlarmState........................................................................................... 97

.AlarmTime .......................................................................................... 98

.AlarmTotalCount................................................................................. 99

.AlarmType........................................................................................... 99

.AlarmUnAckCount ........................................................................... 100

.AlarmUserDefNum1 ......................................................................... 101

.AlarmUserDefNum2 ......................................................................... 102

.AlarmUserDefStr .............................................................................. 103

.AlarmValDeadband ........................................................................... 104

.AlarmValue........................................................................................ 104

.AlarmValueCount.............................................................................. 105

.AlarmValueUnAckCount .................................................................. 105

.Caption .............................................................................................. 106

.ChartLength....................................................................................... 107

.ChartStart .......................................................................................... 108

.Comment ........................................................................................... 109

.DevTarget ...........................................................................................110

.DisplayMode ......................................................................................110

.Enabled...............................................................................................111

.EngUnits.............................................................................................112

Opis funkcji, pól i zmiennych systemowych

8 Contents

.Freeze .................................................................................................113

.HiHiLimit...........................................................................................114

.HiHiSet...............................................................................................114

.HiHiStatus ..........................................................................................115

.HiLimit...............................................................................................115

.HiSet...................................................................................................116

.HiStatus ..............................................................................................117

.ListChanged .......................................................................................118

.ListCount............................................................................................118

.ListIndex ............................................................................................119

.LoLimit ..............................................................................................120

.LoLoLimit ..........................................................................................120

.LoSet ..................................................................................................121

.LoLoSet..............................................................................................121

.LoLoStatus .........................................................................................122

.LoStatus .............................................................................................123

.MajorDevPct ......................................................................................123

.MajorDevSet ......................................................................................124

.MajorDevStatus .................................................................................125

.MaxEU ...............................................................................................126

.MaxRange ..........................................................................................127

.MaxRaw .............................................................................................128

.MinEU................................................................................................129

.MinorDevPct ......................................................................................130

.MinorDevSet ......................................................................................130

.MinorDevStatus .................................................................................131

.MinRange...........................................................................................132

.MinRaw..............................................................................................133

.Name ..................................................................................................134

.NewIndex ...........................................................................................136

.NextPage ............................................................................................136

.Normal ...............................................................................................137

.NumAlarms........................................................................................138

.OffMsg ...............................................................................................138

.OnMsg................................................................................................139

.PageNum............................................................................................139

.Pen1-.Pen8 .........................................................................................140

.PendingUpdates .................................................................................143

.PrevPage.............................................................................................144

.PriFrom ..............................................................................................144

.PriTo...................................................................................................145

.ProvidersReq......................................................................................145

.ProvidersRet.......................................................................................146

Opis funkcji, pól i zmiennych systemowych

Spis treści 9

.Quality............................................................................................... 147

.QualityLimit ...................................................................................... 151

.QualityLimitString ............................................................................ 151

.QualityStatus ..................................................................................... 152

.QualityStatusString ........................................................................... 152

.QualitySubstatus................................................................................ 153

.QualitySubstatusString...................................................................... 154

.QueryState......................................................................................... 154

.QueryType......................................................................................... 155

.RawValue .......................................................................................... 156

.ReadOnly........................................................................................... 157

.Reference........................................................................................... 158

.ReferenceComplete ........................................................................... 158

.ROCPct.............................................................................................. 159

.ROCSet.............................................................................................. 159

.ROCStatus......................................................................................... 160

.ScooterLockLeft................................................................................ 161

.ScooterLockRight.............................................................................. 162

.ScooterPosLeft .................................................................................. 163

.ScooterPosRight ................................................................................ 164

.Successful.......................................................................................... 165

.SuppressRetain .................................................................................. 166

.TagID................................................................................................. 166

.TimeDate ........................................................................................... 167

.TimeDateString ................................................................................. 167

.TimeDateTime................................................................................... 167

.TimeDay............................................................................................ 168

.TimeHour .......................................................................................... 168

.TimeMinute ....................................................................................... 169

.TimeMonth........................................................................................ 169

.TimeMsec.......................................................................................... 170

.TimeSecond....................................................................................... 170

.TimeTime .......................................................................................... 171

.TimeTimeString ................................................................................ 171

.TimeYear ........................................................................................... 172

.TopIndex............................................................................................ 172

.TotalPages ......................................................................................... 173

.UnAck ............................................................................................... 174

.UpdateCount...................................................................................... 175

.UpdateInProgress .............................................................................. 176

.UpdateTrend...................................................................................... 177

.Value.................................................................................................. 178

.Value.................................................................................................. 179

Opis funkcji, pól i zmiennych systemowych

10 Contents

.Visible ................................................................................................180

ROZDZIAŁ 3: Funkcje skryptowe .................181Abs()....................................................................................................182Ack() ...................................................................................................182ActivateApp()......................................................................................183AddPermission() .................................................................................184almAckAll() ........................................................................................185almAckDisplay() .................................................................................185almAckGroup() ...................................................................................186almAckPriority() .................................................................................187almAckRecent() ..................................................................................187almAckSelect()....................................................................................188almAckSelectedGroup()......................................................................188almAckSelectedPriority()....................................................................189almAckSelectedTag()..........................................................................189almAckTag() .......................................................................................190almDefQuery() ....................................................................................190almMoveWindow() .............................................................................191almQuery() ..........................................................................................192almSelectAll() .....................................................................................193almSelectGroup() ................................................................................193almSelectionCount() ...........................................................................194almSelectItem() ...................................................................................194almSelectPriority() ..............................................................................195almSelectTag() ....................................................................................196almSetQueryByName().......................................................................196almShowStats() ...................................................................................197almSuppressAll() ................................................................................197almSuppressDisplay() .........................................................................198almSuppressGroup() ...........................................................................198almSuppressPriority() .........................................................................199almSuppressRetain() ...........................................................................200almSuppressSelected() ........................................................................200almSuppressSelectedGroup()..............................................................201almSuppressSelectedPriority()............................................................201almSuppressSelectedTag() ..................................................................202almSuppressTag()................................................................................203almUnSelectAll() ................................................................................204almUnSuppressAll()............................................................................204AnnotateLayout() ................................................................................205O funkcjach APU ................................................................................205

Opis funkcji, pól i zmiennych systemowych

Spis treści 11

APUFindAlarmGroupInstance() ........................................................ 207APUFindFileInstance() ...................................................................... 208APUFindPrinterInstance().................................................................. 209APUGetAlarmGroupText() ................................................................ 210APUGetConfigurationFilePath().........................................................211APUGetInstanceCount() .................................................................... 212APUGetPrinterJobCount() ................................................................. 213APUGetPrinterName() ....................................................................... 214APUGetPrinterStatus()....................................................................... 215APUGetQueryAlarmState() ............................................................... 216APUGetQueryFromPriority()............................................................. 216APUGetQueryProcessingState() ........................................................ 217APUGetQueryToPriority() ................................................................. 217APUIsInstanceUsed()......................................................................... 218APUSetAlarmGroupText()................................................................. 219APUSetQueryAlarmState()................................................................ 220APUSetQueryFromPriority() ............................................................. 221APUSetQueryToPriority().................................................................. 222APUSetTimeoutValues() .................................................................... 223APUStartInstance() ............................................................................ 224APUStartQuery()................................................................................ 225APUStopInstance()............................................................................. 226APUStopQuery() ................................................................................ 226APUTranslateErrorCode().................................................................. 227ArcCos() ............................................................................................. 227ArcSin() .............................................................................................. 228ArcTan() ............................................................................................. 228AttemptInvisibleLogon().................................................................... 229ChangePassword().............................................................................. 230ChangeWindowColor() ...................................................................... 231Cos() ................................................................................................... 231DateTimeGMT() ................................................................................ 232DialogStringEntry()............................................................................ 232DialogValueEntry() ............................................................................ 233DText() ............................................................................................... 236EnableDisableKeys().......................................................................... 237Exp()................................................................................................... 237FileCopy() .......................................................................................... 238FileDelete()......................................................................................... 239FileMove().......................................................................................... 240FileReadFields() ................................................................................. 242FileReadMessage()............................................................................. 243FileWriteFields() ................................................................................ 244

Opis funkcji, pól i zmiennych systemowych

12 Contents

FileWriteMessage().............................................................................245GetAccountStatus() .............................................................................246GetNodeName() ..................................................................................247GetPropertyD()....................................................................................247GetPropertyI() .....................................................................................248GetPropertyM() ...................................................................................248Hide.....................................................................................................249HideSelf ..............................................................................................249HTGetLastError()................................................................................250HTGetPenName() ...............................................................................251HTGetTimeAtScooter() ......................................................................252HTGetTimeStringAtScooter().............................................................253HTGetValue()......................................................................................254HTGetValueAtScooter()......................................................................255HTGetValueAtZone()..........................................................................256HTScrollLeft() ....................................................................................257HTScrollRight() ..................................................................................258HTSelectTag() .....................................................................................258HTSetPenName() ................................................................................259HTUpdateToCurrentTime() ................................................................259HTZoomIn()........................................................................................260HTZoomOut() .....................................................................................261InfoAppActive()..................................................................................262InfoAppTitle() .....................................................................................262InfoDisk()............................................................................................263InfoFile() .............................................................................................264InfoInTouchAppDir()..........................................................................265InfoResources() ...................................................................................265Int()......................................................................................................266InTouchVersion() ................................................................................266InvisibleVerifyCredentials()................................................................267IODisableFailover() ............................................................................267IOForceFailover() ...............................................................................268IOGetAccessNameStatus() .................................................................268IOGetActiveSourceName().................................................................269IOGetApplication() .............................................................................269IOGetNode() .......................................................................................270IOGetTopic() .......................................................................................270IOReinitAccessName() .......................................................................271IOReinitialize() ...................................................................................271IOSetAccessName()............................................................................272IOSetItem() .........................................................................................274IOSetRemoteReferences() ..................................................................275

Opis funkcji, pól i zmiennych systemowych

Spis treści 13

IOStartUninitConversations() ............................................................ 276IsAnyAsyncFunctionBusy()............................................................... 277IsAssignedRole() ................................................................................ 278Log()................................................................................................... 278LogMessage()..................................................................................... 279LogN()................................................................................................ 279Logoff() .............................................................................................. 280LogonCurrentUser() ........................................................................... 280OpenWindowsList() ........................................................................... 281Pi() ...................................................................................................... 281PlaySound() ........................................................................................ 282PostLogonDialog() ............................................................................. 283PrintHT() ............................................................................................ 283PrintScreen()....................................................................................... 283PrintWindow().................................................................................... 285ptGetTrendType() ............................................................................... 287ptLoadTrendCfg() .............................................................................. 287ptPanCurrentPen().............................................................................. 288ptPanTime()........................................................................................ 289ptPauseTrend() ................................................................................... 289ptSaveTrendCfg() ............................................................................... 290ptSetCurrentPen()............................................................................... 290ptSetPen() ........................................................................................... 290ptSetPenEx()....................................................................................... 291ptSetTimeAxis() ................................................................................. 291ptSetTimeAxisToCurrent()................................................................. 292ptSetTrend()........................................................................................ 292ptSetTrendType()................................................................................ 292ptZoomCurrentPen() .......................................................................... 293ptZoomTime() .................................................................................... 293QueryGroupMembership()................................................................. 294RecipeDelete().................................................................................... 294RecipeGetMessage() .......................................................................... 295RecipeLoad() ...................................................................................... 296RecipeSave() ...................................................................................... 297RecipeSelectNextRecipe() ................................................................. 298RecipeSelectPreviousRecipe() ........................................................... 299RecipeSelectRecipe() ......................................................................... 300RecipeSelectUnit() ............................................................................. 301ReloadWindowViewer()..................................................................... 302RestartWindowViewer()..................................................................... 302Round()............................................................................................... 303SendKeys............................................................................................ 303

Opis funkcji, pól i zmiennych systemowych

14 Contents

SetPropertyD() ....................................................................................305SetPropertyI()......................................................................................306SetPropertyM()....................................................................................306SetWindowPrinter() ............................................................................307Sgn()....................................................................................................307Show....................................................................................................308ShowAt() .............................................................................................309ShowHome..........................................................................................309ShowTopLeftAt() ................................................................................310Sin().....................................................................................................310SPCConnect()......................................................................................311SPCDatasetDlg() .................................................................................312SPCDisconnect() .................................................................................312SPCDisplayData() ...............................................................................313SPCLocateScooter()............................................................................313SPCMoveScooter() .............................................................................314SPCSaveSample() ...............................................................................314SPCSelectDataset() .............................................................................315SPCSelectProduct().............................................................................315SPCSetControlLimits() .......................................................................316SPCSetMeasurement() ........................................................................316SPCSetProductCollected() ..................................................................317SPCSetProductDisplayed() .................................................................317SPCSetRangeLimits() .........................................................................318SPCSetSpecLimits()............................................................................318SQLAppendStatement()......................................................................319SQLClearParam()................................................................................319SQLClearStatement()..........................................................................320SQLClearTable() .................................................................................320SQLCommit() .....................................................................................321SQLConnect() .....................................................................................322SQLCreateTable() ...............................................................................324SQLDelete() ........................................................................................325SQLDisconnect() ................................................................................326SQLDropTable() .................................................................................326SQLEnd() ............................................................................................326SQLErrorMsg() ...................................................................................327SQLExecute()......................................................................................328SQLFirst() ...........................................................................................328SQLGetRecord() .................................................................................329SQLInsert() .........................................................................................330SQLInsertEnd() ...................................................................................331SQLInsertExecute() ............................................................................331

Opis funkcji, pól i zmiennych systemowych

Spis treści 15

SQLInsertPrepare() ............................................................................ 332SQLLast()........................................................................................... 332SQLLoadStatement() ......................................................................... 333SQLManageDSN()............................................................................. 333SQLNext() .......................................................................................... 334SQLNumRows()................................................................................. 334SQLPrepareStatement() ..................................................................... 335SQLPrev() .......................................................................................... 335SQLRollback() ................................................................................... 336SQLSelect() ........................................................................................ 336SQLSetParamChar()........................................................................... 340SQLSetParamDate()........................................................................... 340SQLSetParamDateTime() .................................................................. 341SQLSetParamDecimal()..................................................................... 341SQLSetParamFloat() .......................................................................... 342SQLSetParamInt().............................................................................. 342SQLSetParamLong() .......................................................................... 343SQLSetParamNull() ........................................................................... 344SQLSetParamTime() .......................................................................... 345SQLSetStatement()............................................................................. 346SQLTransact() .................................................................................... 347SQLUpdate() ...................................................................................... 348SQLUpdateCurrent() .......................................................................... 349Sqrt()................................................................................................... 349StartApp ............................................................................................. 350StringASCII() ..................................................................................... 351StringChar()........................................................................................ 352StringCompare()................................................................................. 353StringCompareEncrypted() ................................................................ 353StringCompareNoCase() .................................................................... 354StringFromGMTTimeToLocal() ........................................................ 354StringFromIntg() ................................................................................ 356StringFromReal() ............................................................................... 357StringFromTime() .............................................................................. 357StringFromTimeLocal() ..................................................................... 359StringInString() .................................................................................. 360StringLeft()......................................................................................... 361StringLen() ......................................................................................... 362StringLower() ..................................................................................... 362StringMid()......................................................................................... 363StringReplace()................................................................................... 363StringRight()....................................................................................... 365StringSpace() ...................................................................................... 366

Opis funkcji, pól i zmiennych systemowych

16 Contents

StringTest()..........................................................................................367StringToIntg()......................................................................................368StringToReal().....................................................................................369StringTrim() ........................................................................................370StringUpper() ......................................................................................371SwitchDisplayLanguage()...................................................................371Tan() ....................................................................................................372Text() ...................................................................................................372Trunc().................................................................................................373TseGetClientId()..................................................................................373TseQueryRunningOnClient() ..............................................................374TseQueryRunningOnConsole()...........................................................374UTCDateTime() ..................................................................................375wcAddItem() .......................................................................................376wcClear().............................................................................................376wcDeleteItem()....................................................................................377wcDeleteSelection() ............................................................................377wcErrorMessage() ...............................................................................378wcFindItem().......................................................................................379wcGetItem() ........................................................................................380wcGetItemData().................................................................................381wcInsertItem() .....................................................................................382wcLoadList() .......................................................................................383wcLoadText() ......................................................................................384wcSaveList() .......................................................................................385wcSaveText() ......................................................................................386wcSetItemData() .................................................................................387WindowState() ....................................................................................388WWControl() ......................................................................................389WWExecute()......................................................................................390WWIsDayLightSaving() .....................................................................390WWMoveWindow() ...........................................................................391WWPoke() ..........................................................................................392WWRequest()......................................................................................393WWStringFromTime()........................................................................394

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

Elementy OLE Automation ................................................................395Obsługa OLE Automation w programie InTouch...............................396

Format wyrażeń ...............................................................................396Tworzenie obiektu: OLE_CreateObject ..........................................400Zarządzanie obiektem: OLE_ReleaseObject...................................401

Opis funkcji, pól i zmiennych systemowych

Spis treści 17

Sprawdzanie aktywności obiektu: OLE_IsObjectValid ................. 402Odczytywanie wartości właściwości .............................................. 402Ustawianie właściwości.................................................................. 404Wywoływanie metody .................................................................... 405Obsługa błędów w programie InTouch........................................... 408Najczęstsze błędy automatyzacji obiektów. ....................................411

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

Komunikaty o błędach dla obiektów sterujących okien i alarmów rozproszonych................................................................................. 413Usuwanie problemów przy korzystaniu z funkcji receptur ............ 414Komunikaty błędów funkcji skryptowych narzędzia Alarm Printer.............................................................................................. 416

Nazwy elementów SPC DDE............................................................. 417Elementy DDE SPC do sterowania i wyświetlania ........................ 418Elementy DDE SPC dla bieżącej próbki ........................................ 420Elementy DDE SPC do ręcznego wprowadzania........................... 425Elementy DDE SPC do zaznaczania .............................................. 426Rozwiązywanie problemów związanymi z funkcjami SQL........... 429

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

Indeks..............................................................433

Opis funkcji, pól i zmiennych systemowych

18 Contents

Opis funkcji, pól i zmiennych systemowych

Wprowadzenie 19

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 alarmów, zmiennych systemowych i funkcji QuickScript zawartych w programie InTouch. Zawiera również opis dodatkowych modułów oprogramowania: Menedż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, alarmów rozproszonych 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:

Przykład Opis.ChartStart Czcionką pogrubioną oznaczone są pola,

zmienne systemowe lub funkcje.Zmienna Przy opisie składni, czcionką pochyloną

zaznaczono miejsca, gdzie należy wprowadzić własne dane.

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

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

Opis funkcji, pól i zmiennych systemowych

20 Zanim rozpoczniesz

$AccessLevel bezpieczeństwo

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

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

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

Szczegółowe informacje o środowisku pracy programu 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 Menedżer Receptur podano w Podręczniku Użytkownika Menedżera Receptur.

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

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

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

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

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

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

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

Opis funkcji, pól i zmiennych systemowych

Wprowadzenie 21

• Posiada doświadczenie w zakresie programowania lub języka makr. 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.

Pomoc technicznaDział Pomocy Technicznej Wonderware oferuje różne metody wsparcia 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 wydruki z programu Wonderware Logger, narzędzi diagnostycznych Microsoft Diagnostic (MSD), czy innych aplikacji diagnostycznych, które mogą być pomocne.

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

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

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

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

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

W celu otwarcia programu narzędziowego licencji:

1. W menu Help (Pomoc) programu WindowMaker, wybrać polecenie About (Informacje o).

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

Opis funkcji, pól i zmiennych systemowych

22 Zanim rozpoczniesz

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

Opis funkcji, pól i zmiennych systemowych

Zmienne systemowe 23

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.

Opis funkcji, pól i zmiennych systemowych

24 Rozdział 1

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

Kategoria bezpieczeństwoSposób użycia $AccessLevel

Uwagi Jest to zmienna przeznaczona tylko do odczytu, której wartość jest określana przez poziom dostępu przypisany do aktualnie zalogowanych w programie InTouch użytkowników. Uprawnienia te dla konkretnego użytkownika są dostępne z poziomu menu Configure Users (Konfiguracja użytkowników) w programie WindowViewer.

Bieżąca wartość zmiennej $AccessLevel nie ma wpływu na program WindowViewer, za wyjątkiem sytuacji, gdy wartość ta wynosi 9000 lub więcej, co oznacza uprawnienia administratora i powoduje udostępnienie menu zabezpieczeń w programie WindowViewer. Dodatkowe zabezpieczenia muszą zostać skonfigurowane przez projektanta aplikacji. Korzystając z poziomu dostępu $AccessLevel, można dostosować system bezpieczeństwa aplikacji.

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

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

$AccessLevel >= 2000;{Obiekt może mieć również przypisane połączenie animacyjne do deaktywacji, w którym wykorzystywane jest wyrażenie zawierające zmienną $AccessLevel.}$AccessLevel < 5411;

IF $AccessLevel <=500 THENShow "Access Denied"; {Wyświetlenie komunikatu informującego o braku możliwości zalogowania}

ELSEShow "Access Denied"; {Wyświetlenie komunikatu informującego o możliwości zalogowania}

ENDIF;

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

Opis funkcji, pól i zmiennych systemowych

Zmienne systemowe 25

$ApplicationChanged

$ApplicationVersion

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

Kategoria aplikacjaSposób użycia $ApplicationChanged

Uwagi Zmienna ta przyjmuje wartość 1 w przypadku otrzymania sygnału generowanego po wybraniu polecenia Notify Clients (Aktualizacja aplikacji w sieci) z menu Special (Specjalne) programu WindowMaker. 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 skrypcie

związanym ze zmianą wartości pola zmiennej, spowoduje to wykonanie instrukcji tego skryptu. Skrypt 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. Jej wartość zmienia się wraz z każdą zmianą wersji aplikacji.

Kategoria aplikacjaSposób użycia $ApplicationVersion

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

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

$ApplicationVersion

Patrz również $ApplicationChanged

Opis funkcji, pól i zmiennych systemowych

26 Rozdział 1

$ChangePasswordZmienna ta służy do wyświetlenia pola dialogowego do zmiany hasła. Działanie jest równoważne wybraniu menu Security (Zabezpieczenia), a następnie Change Password (Zmiana hasła), z menu Special (Specjalne) programu WindowMaker.

Kategoria bezpieczeństwoSposób użycia $ChangePassword

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

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

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

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

Opis funkcji, pól i zmiennych systemowych

Zmienne systemowe 27

$ConfigureUsers

$Date

Zmienna ta służy do wyświetlenia okna dialogowego służącego do konfigurowania użytkowników. Działanie jest równoważne wybraniu menu Security (Zabezpieczenia), a następnie Change Password (Zmiana hasła), z menu Special (Specjalne) programu WindowMaker.Ta funkcja działa tylko w trybie bezpieczeństwa ustawionym na InTouch.

Kategoria bezpieczeństwoSposób użycia $ConfigureUsers

Uwagi Przypisanie tej zmiennej wartości 1 powoduje wyświetlenie okna dialogowego Configure Users (Konfiguracja użytkowników). Po zamknięciu okna dialogowego, InTouch automatycznie ustawia wartość na 0. Aby wyświetlić to okno 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. Ta funkcja jest dostępna tylko w przypadku, gdy wybrany typ systemu zabezpieczeń to "InTouch".

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

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

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

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

Uwagi None (Brak)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

Opis funkcji, pól i zmiennych systemowych

28 Rozdział 1

$DateString

$DateTime

$Day

Zawiera datę w systemowym formacie 'krótkiej daty' (zdefiniowanym w ustawieniach regionalnych).

Kategoria systemSposób użycia $DateString

Uwagi Format wyświetlania daty ustawiany jest za pomocą Panelu sterowania systemu Windows.

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

LogMessage("The Year 2000!");

ENDIF;

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

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

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

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

ENDIF;

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

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

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

Show "Mid-Month Washdown Window";

ENDIF;

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

Opis funkcji, pól i zmiennych systemowych

Zmienne systemowe 29

$False

$HistoricalLogging

Zmienna $False zwraca wartość FALSE. Jest ona także wykorzystywana do oznaczania nieistniejących zmiennych systemowych, gdy aplikacja jest uaktualniana do nowszej wersji programu InTouch. Zmienne systemowe, których nie ma w najnowszej wersji programu InTouch to $AlarmPrinterError, $AlarmPrinterOffline, $AlarmPrinterOverflow oraz $AlarmPrinterNoPaper.

Kategoria systemSposób użycia $False

Uwagi Zmiena $False ma wartość False. Ta zmienna jest stosowana tylko wtedy, gdy aplikacja InTouch jest konwertowana ze starszej wersji programu InTouch.

Typ danych Discrete (tylko odczyt)

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

Kategoria dane historyczneSposób użycia $HistoricalLogging

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

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

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

ENDIF;

Opis funkcji, pól i zmiennych systemowych

30 Rozdział 1

$Hour

$InactivityTimeout

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

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

$Hour == 20 AND $Second == 30

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

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

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

Kategoria bezpieczeństwoSposób użycia $InactivityTimeout

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

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

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

Warunkowy:$InactivityTimeout == 1

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

Patrz również $InactivityWarning

Opis funkcji, pól i zmiennych systemowych

Zmienne systemowe 31

$InactivityWarning

$Language

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

Kategoria bezpieczeństwoSposób użycia $InactivityWarning

Uwagi Zmienna ta przyjmuje wartość 1, gdy upłynął czas, po którym użytkownik jest ostrzegany o braku aktywności. Licznik czasu braku aktywności użytkownika może być wyzerowany wyłącznie poprzez kliknięcie myszką lub wciśnięcie klawisza. W celu skonfigurowania tego czasu, z menu Special (Specjalne) wybrać Configure (Konfiguracja), a następnie kliknąć WindowViewer, lub rozwinąć grupę Configure (Konfiguracja) w eksploratorze aplikacji, a następnie podwójnie kliknąć WindowViewer. Wyświetlone zostanie okno dialogowe WindowViewer Properties (Właściwości WindowViewer) z aktywną zakładką właściwości General (Ogólne): W grupie Inactivity (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 On True (Jeżeli prawda).

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

ENDIF;

Patrz również $InactivityTimeOut

Jeżeli w aplikacji InTouch zdefiniowano wiele języków, zmienna $Language zawiera identyfikator bieżącego języka. Domyślnie jest to identyfikator języka (locale ID) programu InTouch (E/F/G/J/SC). Ustawienie tej zmiennej na inną wartość spowoduje zmianę języka aplikacji.

Kategoria systemTyp danych Integer (odczyt/zapis)

Opis funkcji, pól i zmiennych systemowych

32 Rozdział 1

$LogicRunning

$Minute

$Month

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

Kategoria systemSposób użycia $LogicRunning

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

Typ danych Discrete (odczyt/zapis)

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

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

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

ENDIF;

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

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

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

CurrentMonthName = "Październik";

ENDIF;

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

Opis funkcji, pól i zmiennych systemowych

Zmienne systemowe 33

$Msec

$NewAlarm

$ObjHor

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

Kategoria systemSposób użycia $Msec

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

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

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

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

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

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

Kategoria systemSposób użycia $ObjHor

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

Opis funkcji, pól i zmiennych systemowych

34 Rozdział 1

$ObjVer

$Operator

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

Kategoria systemSposób użycia $ObjVer

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

Zwraca nazwę zalogowanego użytkownika. Kategoria bezpieczeństwoSposób użycia $Operator

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

następującego skryptu:.

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

ELSEShow "Wrong Operator";

ENDIF;

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

Opis funkcji, pól i zmiennych systemowych

Zmienne systemowe 35

$OperatorDomain

$OperatorDomainEntered

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

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

Uwagi -Typ danych Message (tylko odczyt)Przykład(y) IF $OperatorDomain == "PRODUCTION" THEN

{Zmiana możliwa}ELSE{Zmiana niemożliwa}ENDIF;

Patrz również $Operator

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

bez użycia interfejsu użytkownika. Logowanie odbywa się przy użyciu zmiennych $*Entered, które służą do wprowadzania parametrów logowania oraz zmiennej $OperatorDomainEntered, w której wprowadza się nazwę domeny (używana tylko wtedy, 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 -Typ danych Message (tylko zapis)Przykład(y) $OperatorEntered="john";

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

Patrz również $Operator

Opis funkcji, pól i zmiennych systemowych

36 Rozdział 1

$OperatorEntered

$OperatorName

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

Uwagi Umożliwia utworzenie okna użytkownika do logowania. Powiązanie z tą zmienną obiektów do wprowadzania danych reagujących na naciskanie i/lub skryptó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 (tylko zapis)Patrz również $AccessLevel, $Operator, $PasswordEntered, $ChangePassword,

$ConfigureUsers

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

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

Uwagi -Typ danych Message (tylko odczyt)Przykład(y) IF $OperatorName <> "" THEN

{Konfiguracja domyślnych wartości}ENDIF;

Patrz również $Operator

Opis funkcji, pól i zmiennych systemowych

Zmienne systemowe 37

$PasswordEntered

$Second

$StartDdeConversations

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

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

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

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

$ConfigureUsers

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

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

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

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

Kategoria systemSposób użycia $StartDdeConversations

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

Typ danych Discrete (odczyt/zapis)

Opis funkcji, pól i zmiennych systemowych

38 Rozdział 1

$System

$Time

$TimeString

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

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

Typ danych Grupa alarmowa SystemPrzykład(y) $System.Ack = 1;{Zatwierdzenie wszystkich alarmów}

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

Uwagi None (Brak)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

Zawiera czas w tym samym formacie, który jest zdefiniowany w ustawieniach regionalnych w panelu sterowania.

Kategoria systemSposób użycia $TimeString

Uwagi Format wyświetlania czasu ustawiany jest za pomocą Panelu sterowania systemu Windows.

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

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

Opis funkcji, pól i zmiennych systemowych

Zmienne systemowe 39

$VerifiedUserName

$Year

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

Kategoria bezpieczeństwoSposób użycia $VerifiedUserName

Uwagi Gdy wartość tej zmiennej ulega zmianie, generowane jest zdarzenie.Typ danych Message (tylko odczyt)Zakres wartości Pełna nazwa użytkownika

Przykład(y) Tag = InvisibleVerifyCredentials( "john","password", "Plant_Floor");{Jeżeli wywołanie zakończy się sukcesem, zmienna $VerifiedUserName zostanie ustawiona na "John Smith" oraz zostanie wygenerowane zdarzenie. Jeżeli wywołanie zakończy się błędem, wartość zmiennej $VerifiedUserName zostanie ustawiona na "".}

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

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

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

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

NoYrsTill2010 = 2010 - CurrentYear;

Patrz również $Day, $Month

Opis funkcji, pól i zmiennych systemowych

40 Rozdział 1

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 41

R O Z D Z I A Ł 2

Pola i właściwości

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 Funkcje skryptowe

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

Opis funkcji, pól i zmiennych systemowych

42 Rozdział 2

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

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

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

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

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

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

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 43

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 Tagname Dictionary (Lista zmiennych). Istnieją cztery rodzaje zmiennych typu I/O:

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

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

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

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

Indirect Discrete, Indirect Analog, Indirect Message

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

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

Opis funkcji, pól i zmiennych systemowych

44 Rozdział 2

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

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

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

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

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

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

Jeżeli te zmienne typu Memory mają być przesyłane ze stacji klienckiej jako zmienne typu I/O, stacja serwera dołącza do nich informacje o czasie wysłania wartości do stacji klienckiej. Zmienne typu memory zawsze mają dobrą jakość i nie posiadają metki czasowej. 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.

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

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 45

Typy zmiennych: Memory I/O Indirect Inne

Dis

cret

e

Inte

ger

Rea

l

Dis

cret

e

Inte

ger

Rea

l

Dis

cret

e

Ana

log

Ala

rm G

ourp

His

t Tre

nd

Ala

rmow

anie

rozp

rosz

one

Obi

ekt/

kont

rolk

a

TagI

D

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

X X X X X X X X X X

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

X

.AlarmDate** X

.AlarmDev X X X X X X

.AlarmDevCount X X X X X X

.AlarmDevDeadband X X X X X

.AlarmDevUnAckCount X X X X X X

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

.AlarmDsc X X X X

.AlarmDscCount X X X X

.AlarmDscDisabled X X X X

.AlarmDscEnabled X X X X

.AlarmDscInhibitor X X X X

.AlarmDscUnAckCount X X X X

.AlarmEnabled X X X X X X X X X

.AlarmGroup** X

.AlarmGroupSel ** X

.AlarmHiDisabled*** X X X X X X

Opis funkcji, pól i zmiennych systemowych

46 Rozdział 2

.AlarmHiEnabled*** X X X X X X

.AlarmHiHiDisabled*** X X X X X X

.AlarmHiHiEnabled*** X X X X X X

.AlarmHiHiInhibitor*** X X X X X X

.AlarmHiInhibitor*** X X X X X X

.AlarmLimit ** X

.AlarmLoDisabled*** X X X X X X

.AlarmLoEnabled*** X X X X X X

.AlarmLoInhibitor*** X X X X X X

.AlarmLoLoDisabled*** X X X X X X

.AlarmLoLoEnabled*** X X X X X X

.AlarmLoLoInhibitor*** X X X X X X

.AlarmMajDevDisabled*** X X X X X X

.AlarmMajDevEnabled*** X X X X X X

.AlarmMajDevInhibitor*** X X X X X X

.AlarmMinDevDisabled*** X X X X X X

.AlarmMinDevEnabled*** X X X X X X

.AlarmMinDevInhibitor*** X X X X X X

.AlarmName ** X

.AlarmOprName ** X

.AlarmOprNode ** X

.AlarmPri ** X

.AlarmProv ** X

.AlarmROC X X X X X X

.AlarmROCCount X X X X X X

.AlarmROCDisabled*** X X X X X X

.AlarmROCEnabled*** X X X X X X

.AlarmROCInhibitor*** X X X X X X

.AlarmROCUnAckCount X X X X X X

.AlarmState ** X

Typy zmiennych: Memory I/O Indirect Inne

Dis

cret

e

Inte

ger

Rea

l

Dis

cret

e

Inte

ger

Rea

l

Dis

cret

e

Ana

log

Ala

rm G

ourp

His

t Tre

nd

Ala

rmow

anie

rozp

rosz

one

Obi

ekt/

kont

rolk

a

TagI

D

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 47

.AlarmTime ** X

.AlarmTotalCount X X X X X X X X X

.AlarmType ** X

.AlarmUnAckCount X X X X X X X X X

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

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

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

.AlarmValDeadband X X X X X

.AlarmValue ** X

.AlarmValueCount X X X X X X

.AlarmValueUnAckCount X X X X X X

.Caption X

.ChartLength X

.ChartStart X

.Comment X X X X X X X X X

.DevTarget X X X X X

.DisplayMode X

.Enabled X X X X X X X X

.EngUnits * X X X X X

.Freeze X

.HiHiLimit X X X X X

.HiHiSet ** X X X X X

.HiHiStatus X X X X X

.HiLimit X X X X X

.HiSet ** X X X X X

.HiStatus X X X X X

.ListChanged X

.ListCount X

.ListIndex X

.LoLimit X X X X X

Typy zmiennych: Memory I/O Indirect Inne

Dis

cret

e

Inte

ger

Rea

l

Dis

cret

e

Inte

ger

Rea

l

Dis

cret

e

Ana

log

Ala

rm G

ourp

His

t Tre

nd

Ala

rmow

anie

rozp

rosz

one

Obi

ekt/

kont

rolk

a

TagI

D

Opis funkcji, pól i zmiennych systemowych

48 Rozdział 2

.LoLoLimit ** X X X X X

.LoLoSet X X X X X

.LoLoStatus X X X X X

.LoSet ** X X X X X

.LoStatus X X X X X

.MajorDevPct X X X X X

.MajorDevSet ** X X X X X

.MajorDevStatus X X X X X

.MaxEU X X X X X

.MaxRange X

.MaxRaw * X X X

.MinEU X X X X X

.MinorDevPct X X X X X

.MinorDevSet ** X X X X X

.MinorDevStatus X X X X X

.MinRange X

.MinRaw * X X X

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

.NewIndex X X

.NextPage X

.Normal X X X X X X X X X

.NumAlarms X

.OffMsg * X X X

.OnMsg * X X X

.PageNum X

.Pen1 through .Pen8 X

.PendingUpdates X

.PrevPage X

.PriFrom X

.PriTo X

Typy zmiennych: Memory I/O Indirect Inne

Dis

cret

e

Inte

ger

Rea

l

Dis

cret

e

Inte

ger

Rea

l

Dis

cret

e

Ana

log

Ala

rm G

ourp

His

t Tre

nd

Ala

rmow

anie

rozp

rosz

one

Obi

ekt/

kont

rolk

a

TagI

D

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 49

.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

.TimeMinute * X X X X X X X X

.TimeMonth * X X X X X X X X

Typy zmiennych: Memory I/O Indirect Inne

Dis

cret

e

Inte

ger

Rea

l

Dis

cret

e

Inte

ger

Rea

l

Dis

cret

e

Ana

log

Ala

rm G

ourp

His

t Tre

nd

Ala

rmow

anie

rozp

rosz

one

Obi

ekt/

kont

rolk

a

TagI

D

Opis funkcji, pól i zmiennych systemowych

50 Rozdział 2

.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

Typy zmiennych: Memory I/O Indirect Inne

Dis

cret

e

Inte

ger

Rea

l

Dis

cret

e

Inte

ger

Rea

l

Dis

cret

e

Ana

log

Ala

rm G

ourp

His

t Tre

nd

Ala

rmow

anie

rozp

rosz

one

Obi

ekt/

kont

rolk

a

TagI

D

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 51

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

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

Parametr Opis

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

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 niepotwierdzone alarmy związane ze zmiennymi wchodzącymi w skład określonej grupy zostają potwierdzone. W przypadku, gdy zmienna jest innego typu niż grupa alarmowa, potwierdzany jest wyłącznie alarm powiązany z daną zmienną. Ustawienie tego pola na wartość inną niż 1 nie ma żadnego znaczenia, a wynik takiej operacji jest nieokreślony.

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

zmienną o nazwie Tag1.

Tag1.Ack=1;

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

PumpStation.Ack=1;

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

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

Opis funkcji, pól i zmiennych systemowych

52 Rozdział 2

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

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

Parametr Opis

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

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

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

związanego ze zmienną o nazwie Tag1.

Tag1.AckDev=1;

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

PumpStation.AckDev=1;

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

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 53

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

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

Parametr Opis

Zmienna Dowolna zmienna typu Indirect Discrete lub grupa alarmowa.

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

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

związanego ze zmienną o nazwie Tag1.

Tag1.AckDsc=1;

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

PumpStation.AckDsc=1;

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

Opis funkcji, pól i zmiennych systemowych

54 Rozdział 2

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

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

Parametr Opis

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

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

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

związanego ze zmienną o nazwie Tag1.

Tag1.AckROC=1;

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

PumpStation.AckROC=1;

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

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 55

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

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

Parametr Opis

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

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

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

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

Tag1.AckValue=1;

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

PumpStation.AckValue=1;

Do potwierdzania alarmów typu przekroczenia wartości można skorzystać ze 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 niepotwierdzonych alarmów typu przekroczenia wartości w grupie alarmów PumpStation, która powiązana jest aktualnie ze zmienną typu grupa alarmowa o nazwie StationAlarms.

StationAlarms.AckValue=1

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

Opis funkcji, pól i zmiennych systemowych

56 Rozdział 2

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

Kategoria alarmySposób użycia Zmienna.Alarm

Parametr Opis

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

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

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

alarmowym.

IF (Tag1.Alarm == 1) THEN

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

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

ENDIF;

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

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

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 57

.AlarmAccessPole to zwraca nazwę dostępu zmiennej związanej z wybranym alarmem. Alarm musi być wybrany przez kliknięcie na bieżącym wyświetlanym obiekcie alarmów rozproszonych.

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

Parametr Opis

Objectname Nazwa obiektu alarmów rozproszonych.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 alarmów rozproszonych, almAccess jest zmienną typu Memory Message zawierającą nazwę dostępu zmiennej powiązanej z wybranym alarmem.

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

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

Opis funkcji, pól i zmiennych systemowych

58 Rozdział 2

.AlarmAckModelMonitorowanie modelu potwierdzeń związanego ze zmienną:

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

Kategoria alarmySposób użycia Zmienna.AlarmAckModel

Parametr Opis

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

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

PumpStation ma zdefiniowany zdarzeniowy model potwierdzeń.

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

ENDIF;

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

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 59

.AlarmClassPole to zawiera klasę zmiennej związanej z wybranym alarmem. Alarm musi być wybrany przez kliknięcie na bieżącym wyświetlanym obiekcie alarmów rozproszonych.

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

Zmienna);

Parametr Opis

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

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

alarmem.

GetPropertyM("AlmObj_1.AlarmClass",almClass);

Gdzie AlmObj_1 jest nazwą obiektu alarmów rozproszonych, almClass jest zmienną typu Memory Message zawierającą klasę zmiennej powiązanej z wybranym alarmem.

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

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

Opis funkcji, pól i zmiennych systemowych

60 Rozdział 2

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

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

Kategoria alarmyPierwszy sposób użycia.

Zmienna.AlarmComment

Parametr Opis

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

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

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

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

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

mTag1=Tag1.AlarmComment;

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

GetPropertyM(AlmObj_1.AlarmComment”, almComment);

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

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 61

.AlarmDatePole to zwraca datę zmiennej związanej z wybranym alarmem. Alarm musi być wybrany przez kliknięcie na bieżącym wyświetlanym obiekcie alarmów rozproszonych.

Kategoria alarmySposó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

Opis funkcji, pól i zmiennych systemowych

62 Rozdział 2

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

Kategoria alarmySposób użycia Zmienna.AlarmDev

Parametr Opis

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

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

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

alarmu odchyleniowego.

IF (Tag1.AlarmDev == 1) THEN

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

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

ENDIF;

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

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

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 63

.AlarmDevCount

.AlarmDevDeadband

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

Kategoria alarmySposób użycia Zmienna.AlarmDevCount

Parametr Opis

Zmienna Dowolna zmienna typu Integer, Real lub grupa alarmowa.

Uwagi Zawiera ilość „małych” (Minor Deviation) i „dużych” (Major Deviation) alarmów odchyleniowych. Zawiera ilość zarówno alarmów zatwierdzonych, jak i niezatwierdzonych. Dla zmiennych innych niż zmienne o trybie rozszerzonym, 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 niepotwierdzonych jak i potwierdzonych) istniejących w Tag1.

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

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

Kategoria alarmySposób użycia Zmienna.AlarmDevDeadband

Parametr Opis

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

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

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

nieczułości na 25%.

Tagname.AlarmDevDeadband=25;

Patrz również .AlarmValDeadband, .AlarmDev

Opis funkcji, pól i zmiennych systemowych

64 Rozdział 2

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

Kategoria alarmySposób użycia Zmienna.AlarmDevUnAckCount

Parametr Opis

Zmienna Dowolna zmienna typu Integer, Real lub Grupa Alarmowa.

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

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

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

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 65

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

Kategoria alarmySposób użycia Zmienna.AlarmDisabled

Parametr Opis

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

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

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

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

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

Tag1.AlarmDisabled=0;

Patrz również .AlarmEnabled

Opis funkcji, pól i zmiennych systemowych

66 Rozdział 2

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

Kategoria alarmySposób użycia Zmienna.AlarmDsc

Parametr Opis

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

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

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

alarmu typu Discrete.

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

ENDIF;

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

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

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 67

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

Kategoria alarmySposób użycia Zmienna.AlarmDscCount

Parametr Opis

Zmienna Dowolna zmienna typu Discrete lub Grupa Alarmowa.

Uwagi Zawiera ilość zarówno alarmów zatwierdzonych, jak i niezatwierdzonych. Dla zmiennych innych niż zmienne o rozszerzonym trybie alarmowania ta ilość będzie zawsze równa 1.

Typ danych Integer (tylko odczyt)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, zawierają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

Opis funkcji, pól i zmiennych systemowych

68 Rozdział 2

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

Kategoria alarmySposób użycia Zmienna.AlarmDscDisabled

Parametr Opis

Zmienna Dowolna zmienna typu Discrete lub Grupa Alarmowa.

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

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

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

Tag1:

Tag1.AlarmDscDisabled=0;

Patrz również .AlarmDscEnabled

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 69

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

Kategoria alarmySposób użycia Zmienna.AlarmDscEnabled

Parametr Opis

Zmienna Dowolna zmienna typu Discrete lub Grupa Alarmowa.

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

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

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

Tag1:

Tag1.AlarmDscEnabled=0;

Patrz również .AlarmDscDisabled

Opis funkcji, pól i zmiennych systemowych

70 Rozdział 2

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

Kategoria alarmySposób użycia Zmienna.AlarmDscInhibitor

Parametr Opis

Zmienna Dowolna zmienna typu Discrete lub Grupa Alarmowa.

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

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

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

SomeIndirectTag.Name = AlarmedTag.AlarmDscInhibitor;

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

SomeIndirectTag = 1;

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

SomeIndirectTag = 0;

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

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 71

.AlarmDscUnAckCount

.AlarmEnabled

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

Kategoria alarmySposób użycia Zmienna.AlarmDscUnAckCount

Parametr Opis

Zmienna Dowolna zmienna typu Discrete lub Grupa Alarmowa.

Typ danych Integer (tylko odczyt)Zakres wartości 0 lub dodatnia wartość całkowitaPrzykł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ść niezatwierdzonych alarmów dyskretnych istniejących w Tag1.

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

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

Parametr Opis

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

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

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

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

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

Tag1.AlarmEnabled=0;

Patrz również .AlarmDisabled

Opis funkcji, pól i zmiennych systemowych

72 Rozdział 2

.AlarmGroupPole to zawiera aktualne zapytanie użyte do wyświetlenia alarmów w obiekcie alarmowym.

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

Zmienna);

Parametr Opis

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

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

Uwagi Pole to przeznaczone jest tylko do odczytu i zawiera bieżące zapytanie alarmowe wykorzystywane przez obiekt wyświetlania alarmów rozproszonych 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 alarmów rozproszonych "AlmObj_1”.

GetPropertyM("AlmObj_1.AlarmGroup",CurrentQuery);

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

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 73

.AlarmGroupSelPole to zwraca nazwę grupy alarmu zmiennej związanej z wybranym alarmem. Alarm musi być wybrany przez kliknięcie na bieżącym wyświetlanym obiekcie alarmów rozproszonych.

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

Zmienna);

Parametr Opis

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

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

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

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

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

Opis funkcji, pól i zmiennych systemowych

74 Rozdział 2

.AlarmHiDisabled

.AlarmHiEnabled

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

Kategoria alarmySposób użycia Zmienna.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

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

Kategoria alarmySposób użycia Zmienna.AlarmHiEnabled

Parametr Opis

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

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

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

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

Tag1.AlarmHiEnabled=0;

Patrz również .AlarmHiDisabled, .AlarmEnabled

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 75

.AlarmHiHiDisabled

.AlarmHiHiEnabled

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

Kategoria alarmySposób użycia Zmienna.AlarmHiHiDisabled

Parametr Opis

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

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

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

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

Tag1.AlarmHiHiDisabled=0;

Patrz również .AlarmHiHiEnabled, .AlarmDisabled

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

Kategoria alarmySposób użycia Zmienna.AlarmHiHiEnabled

Parametr Opis

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

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

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

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

Tag1.AlarmHiHiEnabled=0;

Patrz również .AlarmHiHiDisabled, .AlarmEnabled

Opis funkcji, pól i zmiennych systemowych

76 Rozdział 2

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

Kategoria alarmySposób użycia Zmienna.AlarmHiHiInhibitor

Parametr Opis

Zmienna Analogowe zmienne z alarmami lub grupa alarmowa.

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

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

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

SomeIndirectTag = 1;

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

SomeIndirectTag = 0;

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

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

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 77

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

Kategoria alarmySposób użycia Zmienna.AlarmHiInhibitor

Parametr Opis

Zmienna Analogowe zmienne z alarmami lub grupa alarmowa.

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

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

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

SomeIndirectTag.Name = AlarmedTag.AlarmHiInhibitor;

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

SomeIndirectTag = 1;

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

SomeIndirectTag = 0;

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

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

Opis funkcji, pól i zmiennych systemowych

78 Rozdział 2

.AlarmLimit

.AlarmLoDisabled

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

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

Zmienna);

Parametr Opis

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

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

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

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

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

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

Kategoria alarmySposób użycia Zmienna.AlarmLoDisabled

Parametr Opis

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

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

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

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

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

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 79

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

Kategoria alarmySposób użycia Zmienna.AlarmLoEnabled

Parametr Opis

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

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

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

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

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

Opis funkcji, pól i zmiennych systemowych

80 Rozdział 2

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

Kategoria alarmySposób użycia Zmienna.AlarmLoInhibitor

Parametr Opis

Zmienna Analogowe zmienne z alarmami lub grupa alarmowa.

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

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

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

SomeIndirectTag.Name = AlarmedTag.AlarmLoInhibitor;

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

SomeIndirectTag = 1;

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

SomeIndirectTag = 0;

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

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

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 81

.AlarmLoLoDisabled

.AlarmLoLoEnabled

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

Kategoria alarmySposób użycia Zmienna.AlarmLoLoDisabled

Parametr Opis

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

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

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

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

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

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

Kategoria alarmySposób użycia Zmienna.AlarmLoLoEnabled

Parametr Opis

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

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

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

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

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

Opis funkcji, pól i zmiennych systemowych

82 Rozdział 2

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

Kategoria alarmySposób użycia Zmienna.AlarmLoLoInhibitor

Parametr Opis

Zmienna Analogowe zmienne z alarmami lub grupa alarmowa.

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

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

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

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

SomeIndirectTag = 1;

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

SomeIndirectTag = 0;

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

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

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 83

.AlarmMajDevDisabled

.AlarmMajDevEnabled

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

Kategoria alarmySposób użycia Zmienna.AlarmMajDevDisabled

Parametr Opis

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

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

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

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

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

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

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

Kategoria alarmySposób użycia Zmienna.AlarmMajDevEnabled

Parametr Opis

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

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

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

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

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

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

Opis funkcji, pól i zmiennych systemowych

84 Rozdział 2

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

Kategoria alarmySposób użycia Zmienna.AlarmMajDevInhibitor

Parametr Opis

Zmienna Analogowe zmienne z alarmami lub grupa alarmowa.

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

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

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

SomeIndirectTag.Name = AlarmedTag.AlarmMajDevInhibitor;

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

SomeIndirectTag = 1;

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

SomeIndirectTag = 0;

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

Patrz również .AlarmMinDevInhibitor

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 85

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

Kategoria alarmySposób użycia Zmienna.AlarmMinDevDisabled

Parametr Opis

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

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

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

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

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

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

Opis funkcji, pól i zmiennych systemowych

86 Rozdział 2

.AlarmMinDevEnabledZałącza i/lub wyłącza zdarzenia i alarmy typu odchyleniowy mały.

Kategoria alarmySposób użycia Zmienna.AlarmMinDevEnabled

Parametr Opis

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

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

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

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

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

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

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 87

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

Kategoria alarmySposób użycia Zmienna.AlarmMinDevInhibitor

Parametr Opis

Zmienna Analogowe zmienne z alarmami lub grupa alarmowa.

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

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

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

SomeIndirectTag.Name = AlarmedTag.AlarmMinDevInhibitor;

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

SomeIndirectTag = 1;

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

SomeIndirectTag = 0;

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

Patrz również .AlarmMajDevInhibitor

Opis funkcji, pól i zmiennych systemowych

88 Rozdział 2

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

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

Zmienna);

Parametr Opis

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

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

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

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

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

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 89

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

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

Zmienna);

Parametr Opis

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

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

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

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

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

Opis funkcji, pól i zmiennych systemowych

90 Rozdział 2

.AlarmOprNodeZwraca nazwę operatora stacji dla zmiennej powiązanej z wybranym alarmem. Alarm musi być wybrany przez kliknięcie na obiekcie alarmów rozproszonych. Jeżeli alarm zostaje potwierdzony w środowisku terminalowym, w polu nazwa komputera znajdzie się nazwa komputera, z którego została zestawiona sesja terminalowa. Jeżeli nazwa komputera nie może zostać ustalona, w kolumnie pojawi się adres IP.

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

Zmienna);

Parametr Opis

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

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

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

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

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

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 91

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

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

Zmienna);

Parametr Opis

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

Zmienna Dowolna zmienna typu AnalogZakres wartości Integer (1-999) (tylko do odczytu)Przykład(y) GetPropertyM("AlmObj_1.AlarmPri", almPri);

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

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

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

Opis funkcji, pól i zmiennych systemowych

92 Rozdział 2

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

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

Zmienna);

Parametr Opis

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

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

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

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

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

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 93

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

Kategoria alarmySposób użycia Zmienna.AlarmROC

Parametr Opis

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

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

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

alarmu typu szybkości zmiany.

IF (Tag1.AlarmROC == 1) THEN

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

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

ENDIF;

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

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

Opis funkcji, pól i zmiennych systemowych

94 Rozdział 2

.AlarmROCCount

.AlarmROCDisabled

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

Kategoria alarmySposób użycia Zmienna.AlarmROCCount

Parametr Opis

Zmienna Dowolna zmienna typu Integer, Real lub Grupa Alarmowa.

Uwagi

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

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

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

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

Parametr Opis

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

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

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

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

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

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 95

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

Kategoria alarmySposób użycia Zmienna.AlarmROCEnabled

Parametr Opis

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

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

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

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

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

Opis funkcji, pól i zmiennych systemowych

96 Rozdział 2

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

Kategoria alarmySposób użycia Zmienna.AlarmROCInhibitor

Parametr Opis

Zmienna Analogowe zmienne z alarmami lub grupa alarmowa.

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

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

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

SomeIndirectTag.Name = AlarmedTag.AlarmROCInhibitor;

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

SomeIndirectTag = 1;

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

SomeIndirectTag = 0;

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

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 97

.AlarmROCUnAckCount

.AlarmState

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

Kategoria Alarms (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, zawierającą całkowitą ilość niezatwierdzonych alarmów typu prędkości zmiany istniejących w Tag1.

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

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

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

Zmienna);

Parametr OpisNazwaObiektu Nazwa obiektu alarmów rozproszonych

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

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

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

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

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

Opis funkcji, pól i zmiennych systemowych

98 Rozdział 2

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

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

Zmienna);

Parametr Opis

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

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

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

Przy wykorzystaniu w przycisku akcji, po naciśnięciu przycisku 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

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 99

.AlarmTotalCount

.AlarmType

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

Kategoria alarmySposób użycia Zmienna.AlarmTotalCount

Parametr Opis

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

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

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, zawierającą całkowitą ilość aktywnych alarmów (zarówno niezatwierdzonych jak i zatwierdzonych) istniejących w Tag1.

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

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

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

Zmienna);

Parametr Opis

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

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

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

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

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

Opis funkcji, pól i zmiennych systemowych

100 Rozdział 2

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

Kategoria alarmySposób użycia Zmienna.AlarmUnAckCount

Parametr Opis

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

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

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

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

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 101

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

Kategoria alarmySposób użycia Zmienna.AlarmUserDefNum1

Parametr Opis

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

Uwagi Te definiowane przez użytkownika pole umożliwia wykorzystanie szerokiego zakresu zmiennych, a zwłaszcza zmiennych typu Discrete, Analog i Grup Alarmowych (niezależnie od tego, czy posiadają 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 Dowolna wartość rzeczywistaPrzykł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 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śli 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. Jeżeli na żadnym poziomie, nie zostanie znalezione żadne przypisanie, dokonany zostanie pusty zapis do rekordu alarmu (zero dla liczb i pusty łańcuch dla łańcuchów).

Patrz również .AlarmUserDefNum2, .AlarmUserDefStr

Opis funkcji, pól i zmiennych systemowych

102 Rozdział 2

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

Kategoria alarmySposób użycia Zmienna.AlarmUserDefNum2

Parametr Opis

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

Uwagi Te definiowane przez użytkownika pole umożliwia wykorzystanie szerokiego zakresu zmiennych, a zwłaszcza zmiennych typu Discrete, Analog i Grup Alarmowych (niezależnie od tego, czy posiadają 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 Dowolna wartość rzeczywistaPrzykł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śli 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. Jeżeli na żadnym poziomie nie zostanie znalezione żadne przypisanie, dokonany zostanie pusty zapis do rekordu alarmu (zero dla liczb i pusty tekst dla tekstów).

Patrz również .AlarmUserDefNum1, .AlarmUserDefStr

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 103

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

Kategoria alarmySposób użycia Zmienna.AlarmUserDefStr

Parametr Opis

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

Uwagi Te definiowane przez użytkownika pole umożliwia wykorzystanie szerokiego zakresu zmiennych, a zwłaszcza zmiennych typu Discrete, Analog i Grup Alarmowych (niezależnie od tego, czy posiadają 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. 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śli 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. Jeżeli na żadnym poziomie nie zostanie znalezione żadne przypisanie, dokonany zostanie pusty zapis do rekordu alarmu (zero dla liczb i pusty tekst dla tekstów). 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, natomiast jej grupa nadrzędna posiada przypisanie dla .AlarmUserDefStr, te przypisanie będzie wykorzystane w rekordzie alarmu.

Patrz również .AlarmUserDefNum1, .AlarmUserDefNum2

Opis funkcji, pól i zmiennych systemowych

104 Rozdział 2

.AlarmValDeadband

.AlarmValue

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

Kategoria alarmySposób użycia Zmienna.AlarmValDeadband

Parametr Opis

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

Uwagi Zaznaczenie opcji Retentive Parameters (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 obiekcie alarmów rozproszonych.

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

Zmienna);

Parametr Opis

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

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

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

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

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

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 105

.AlarmValueCount

.AlarmValueUnAckCount

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

Kategoria alarmySposób użycia Zmienna.AlarmValueCount

Parametr Opis

Zmienna Dowolna zmienna typu Integer, Real lub Grupa Alarmowa.

Uwagi Zawiera ilość alarmów typy HiHi, Hi, Lo, LoLo. Zawiera ilość zarówno alarmów zatwierdzonych, jak i niezatwierdzonych. Dla zmiennych alarmów innych niż alarmy rozszerzone, ilość ta będzie zawsze równa 1. Jednakże, ilość ta 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ę niezatwierdzonych alarmów zmiany wartości w danej zmiennej lub grupie alarmowej. Zawiera ilość alarmów typu HiHi, Hi, Lo, LoLo.

Kategoria alarmySposób użycia Zmienna.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, zawierającą całkowitą ilość wszystkich niezatwierdzonych alarmów wartości istniejących w Tag1.

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

Opis funkcji, pól i zmiennych systemowych

106 Rozdział 2

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

Kategoria obiekty sterujące WindowsSposób użycia [ErrorNumber=]GetPropertyM ("NazwaObiektu.Caption",

Zmienna);

[ErrorNumber=]GetPropertyM ("NazwaObiektu.Caption","Tekst");

Parametr Opis

ControlName Nazwa wizarda Na przykład, ChkBox_4.Zmienna Zmienna tekstowa do przechowywania żądanej

właściwości."Message" Tekst komunikatu ujęty w cudzysłowy.

Uwagi Pole to jest zapisywane/odczytywane zarówno w czasie edycji, jak i w czasie pracy aplikacji.

Typ danych Message (odczyt/zapis)Zastosowanie Pola wyboru.Przykład Zamieszczona poniżej instrukcja ustawia pole .Caption obiektu

"CheckBox_1" na wartość "Blue Paint Option".

SetPropertyM( "CheckBox_1.Caption","Blue Paint Option" );

Patrz również GetPropertyM(), SetPropertyM()

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 107

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

Kategoria dane historyczneSposób użycia Zmienna.ChartLength

Parametr Opis

Zmienna Dowolna zmienna typu Hist Trend.Uwagi Pole to, przeznaczone do odczytu i zapisu, jest używane do zmiany (lub

weryfikacji) długości okna wykresu 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. Jeżeli chcemy odjąć "2 godziny" od bieżącej wartości pola .ChartLength, należy wcześniej zamienić "2 godziny" na liczbę sekund. Przykładowo:

(2 godziny ) * (60 minut/ godzinę) * (60 sekund/ minutę) = 7200 sekund.Typ danych Integer (odczyt/zapis)Zakres wartości Dowolna dodatnia liczba całkowita.Przykład(y) Zamieszczone poniżej wyrażenie ustawia długość wykresu na 1 godzinę:

HtTagname.ChartLength=3600 {60 minut * 60 sekund/ minutę};

Przedstawione poniżej wyrażenie powoduje przewinięcie wykresu w lewo o połowę:

HtTagname.ChartStart=HtTagname.ChartStart -HtTagname.ChartLength / 2;

To wyrażenie z kolei powoduje przewinięcie wykresu w lewo o 10%:

HtTagname.ChartStart=HtTagname.ChartStart - (.10 * HtTagname.ChartLength);

Patrz również .ChartStart

Opis funkcji, pól i zmiennych systemowych

108 Rozdział 2

.ChartStartPole to definiuje datę i czas początku (lewej krawędzi) okna wykresu trendu historycznego.

Kategoria dane historyczneSposób użycia Zmienna.ChartStart

Parametr Opis

Zmienna Dowolna zmienna typu Hist Trend.Uwagi Pole to przeznaczone do odczytu i zapisu używane jest do zmiany (lub

weryfikacji) daty i czasu początku (lewej krawędzi) okna wykresu trendu historycznego. Pole .ChartStart zawiera liczbę sekund od 0:00 1 stycznia 1970 i odpowiada prawemu krańcowi wykresu trendu historycznego.

Typ danych Integer (odczyt/zapis)Zakres wartości Dowolna dodatnia liczba całkowita.Przykład(y) Zamieszczone poniżej wyrażenie przesuwa początek wykresu w prawo o 1

minutę:

HtTagname.ChartStart=HtTagname.ChartStart + 60;

Patrz również .ChartLength

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 109

.CommentPole to zawiera komentarz wprowadzony dla danej zmiennej podczas jej definiowania na liście zmiennych.

Kategoria zmiennaSposób użycia Zmienna.Comment

Parametr Opis

Zmienna Dowolna zmienna.Uwagi Chociaż pole to w programie WindowMaker przeznaczone jest wyłącznie 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. Proszę 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 spowoduje zmiany wartości tego pola 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 + " has a comment of: " + MyTag.Comment;

Uwaga Wartość tego pola zapisywana jest do bazy danych pamiętanej w trakcie pracy aplikacji. Nie jest ona zapisywana do listy zmiennych.

Opis funkcji, pól i zmiennych systemowych

110 Rozdział 2

.DevTarget

.DisplayMode

Pole to służy do monitorowania i/lub zmiany wartości docelowej (od której jest obliczane odchylenie) dla "małego" (Minor Deviation) i "dużego" (Major Deviation) alarmu odchyleniowego.

Kategoria alarmySposób użycia Zmienna.DevTarget

Parametr Opis

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

Uwagi Zaznaczenie opcji Retentive Parameters (Zachowaj param.) na liście zmiennych powoduje automatyczne zapisywanie zmian wartości tego pola przez połączenia animacyjne lub skrypty programu WindowViewer.

Typ danych Analog (odczyt/zapis)Zakres wartości Musi mieścić się w zdefiniowanym dla danej zmiennej zakresie wartości.Przykład(y) Przykładowa instrukcja zamieszczona poniżej zmienia wartość pola

.DevTarget zmiennej MyTag na 500.

MyTag.DevTarget=500;

Patrz również .AckDev, .AlarmDev, .AlarmMajDevDisabled, .AlarmMajDevEnabled, .AlarmMajDevInhibitor, .MajorDevSet, .MajorDevStatus

Pole to określa sposób wyświetlania wartości na wykresie trendu historycznego.

Kategoria dane historyczneSposób użycia Zmienna.DisplayMode

Parametr Opis

Zmienna Dowolna zmienna typu Hist Trend.Typ danych Analog (odczyt/zapis)Zakres wartości 1 = Wyświetlanie wartości min/max dla każdego okresu próbkowania (tryb

domyślny).2 = Wyświetlanie wartości średniej dla każdego okresu próbkowania na tle rozrzutu wartości.3 = Wyświetlanie wartości średniej dla każdego okresu próbkowania na tle wykresu słupkowego.

Przykład(y) Zamieszczone poniżej wyrażenie powoduje wyświetlanie trendu historycznego powiązanego ze zmienną MyHistTrendTag w formie wykresu słupkowego.

MyHistTrendTag.DisplayMode=3;

Patrz również .ChartLength, .ChartStart

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 111

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

Kategoria obiekty sterujące WindowsSposób użycia [ErrorNumber=] GetPropertyD("NazwaObiektu.Enabled",

Zmienna);

[ErrorNumber=] SetPropertyD("NazwaObiektu.Enabled",Discrete);

Parametr Opis

ControlName Nazwa wizarda Na przykład, ChkBox_4.Zmienna Zmienna typu Discrete do przechowywania żądanej

właściwości.Discrete Wartość dyskretna.

0 = Obiekt sterujący jest nieaktywny1 = Obiekt sterujący jest aktywnylub,Zmienna dyskretna przechowująca wartość do zapisu w momencie wykonywania funkcji.

Uwagi Pole to jest zapisywane/odczytywane zarówno w czasie edycji, jak i w czasie pracy aplikacji.

Typ danych Discrete (odczyt/zapis)Zastosowanie Pola tekstowe , pola list , listy rozwijane , pola wyboru i pola wyboru

wykluczającego.Przykład(y) Zamieszczona poniżej instrukcja deaktywuje obiekt o nazwie: "ListBox_1."

SetPropertyD( "ListBox_1.Enabled",0 );

Patrz również GetPropertyD(), SetPropertyD()

Opis funkcji, pól i zmiennych systemowych

112 Rozdział 2

.EngUnitsPole EngUnits umożliwia użytkownikowi dostęp do jednostek inżynierskich zmiennych typu Analog, zgodnie z ich definicją wprowadzoną na liście zmiennych.

Kategoria zmiennaSposób użycia Zmienna.EngUnits

Parametr Opis

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

Uwagi Pole to przyjmuje wartości typu tekstowego i nie ma wpływu na skalowanie, konwersję, czy format wartości zmiennej.

Typ danych Message (odczyt/zapis)

Uwaga Wartości wpisane do tego pola nie są trwale zachowywane.Zakres wartości Dowolny łańcuch znaków zawierający od 0 do 31 znaków.Przykład(y) IF Temperature.EngUnits == "Celsius" THEN

CALL TempConvert(Temperature);{Funkcja QuickFunction, która może być użyta do konwersji stopni Celsjusza na Fahrenheita}

ENDIF;

Patrz również .MinEU, .MaxEU, .MaxRange, .MinRange, .MinRaw, .MaxRaw, .RawValue

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 113

.FreezeOdczyt/zapis statusu zamrożenia wyświetlania w obiekcie alarmów rozproszonych.

Kategoria alarmySposób użycia [ErrorNumber=]GetPropertyD(“NazwaObiektu.Freeze”,Zmienna)

[ErrorNumber=]SetPropertyD(“NazwaObiektu.Freeze”,Zmienna)

Parametr Opis

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

Zmienna Zmienna typu Discrete, w której zapisywana jest wartość pola podczas wykonywania funkcji.

Uwagi Pole to jest przeznaczone do zapisu i odczytu zawierające lub zmieniające status zamrożenia wyświetlania obiektu alarmów rozproszonych. Jeżeli obiekt alarmowy jest zamrożony, wyświetlane alarmy nie będą aktualizowane, a nowe alarmy nie będą się pojawiały. Zamrożenie nie ma żadnego wpływu na miganie alarmów.

Typ danych Discrete (odczyt/zapis)Zakres wartości 0 = Zamrożenie wyłączone (OFF)

1 = Zamrożenie włączone (ON)Przykład(y) Instrukcja zamieszczona poniżej ustawia właściwość Freeze dla “AlmObj_1”

ze zmiennej typu Discrete AlmFreeze.

SetPropertyD(“AlmObj_1.Freeze”,AlmFreeze);

Patrz również GetPropertyD(), SetPropertyD()

Opis funkcji, pól i zmiennych systemowych

114 Rozdział 2

.HiHiLimit

.HiHiSet

Pole to służy do monitorowania i/lub zmiany pierwszej górnej wartości progowej HiHi dla alarmu przekroczenia wartości.

Kategoria alarmySposób użycia Zmienna.HiHiLimit

Parametr Opis

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

Uwagi Zaznaczenie opcji Retentive Parameters (Zachowaj param.) na liście zmiennych powoduje automatyczne zapisywanie zmian wartości tego pola dokonywanych przez połączenia animacyjne lub skrypty programu WindowViewer.

Typ danych Analog (odczyt/zapis)Zakres wartości Musi mieścić się w zdefiniowanym dla danej zmiennej zakresie wartości.Przykład(y) Przykładowa instrukcja zamieszczona poniżej zwiększa wartość pola

.HiHiLimit (wartość progowa alarmu) zmiennej MyTag o 5.

MyTag.HiHiLimit=MyTag.HiHiLimit + 5;

Patrz również .Alarm, .AlarmValue, .Ack, .HiHiStatus, .HiHiSet, .AlarmDisabled, .AlarmEnabled, .AlarmHiHiDisabled, .AlarmHiHiEnabled, .AlarmHiHiInhibitor

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

Kategoria alarmySposób użycia Zmienna.HiHiSet

Parametr Opis

Zmienna Dowolna zmienna typu AnalogUwagi Pole to może być użyte dla zmiennych Integer lub Real.Typ danych DiscreteZakres wartości 1 (true) lub 0 (false)Przykład(y) Przykładowa instrukcja zamieszczona poniżej może być wykorzystana w

analogowym połączeniu wyświetlającym do ustalenia, czy limit HiHi dla alarmu jest przypisany do zmiennej MyTag:

MyTag.HiHiSet;

{Kiedy zwrócone zostanie 0, limit nie jest ustawiony ; jeżeli zwrócone zostanie 1, limit jest ustawiony.}

Patrz również .Alarm, .AlarmValue, .Ack, .HiHiStatus, .HiHiLimit, .AlarmDisabled, .AlarmEnabled, .AlarmHiHiDisabled, .AlarmHiHiEnabled, .AlarmHiHiInhibitor

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 115

.HiHiStatus

.HiLimit

Pole to określa, czy wystąpił alarm typu HiHi.Kategoria alarmySposób użycia Zmienna.HiHiStatus

Parametr Opis

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

Uwagi Wartość tego pola przeznaczonego wyłącznie do odczytu jest zwykle równa 0, w przypadku wystąpienia alarmu progowego typu HiHi dla zmiennej z którą pole to jest skojarzone, wartość pola zostaje zmieniona przez system na 1. Pole to ma wartość równą 1 do czasu, gdy zniknie przyczyna alarmu. Pole to jest często używane w połączeniu z polami .Alarm oraz .Ack, w celu określenia dokładnej przyczyny generowania alarmu dla danej zmiennej.

Typ danych Discrete (tylko odczyt)Zakres wartości 0 = Stan alarmowy nie występuje

1 = Stan alarmowy występujePrzykład(y) Wyrażenia zawarte w poniższej instrukcji IF-THEN będą wykonywane, gdy

pole .HiHiStatus (alarm progowy HiHi) dla zmiennej MyTag będzie miało wartość ustawioną na 1.

IF (MyTag.HiHiStatus == 1) THENOperatorMessage="MyTag has gone into HiHi Alarm";

ENDIF;

Patrz również .Alarm, .AlarmValue, .Ack, .HiHiLimit, .HiHiSet, .AlarmDisabled, .AlarmEnabled, .AlarmHiHiDisabled, .AlarmHiHiEnabled, .AlarmHiHiInhibitor

Pole to służy do monitorowania i/lub zmiany pierwszej górnej wartości progowej High dla alarmu przekroczenia wartości.

Kategoria alarmySposób użycia Zmienna.HiLimit

Parametr Opis

Zmienna Dowolna zmienna typu AnalogUwagi Zaznaczenie opcji Retentive Parameters (Zachowaj param.) na liście

zmiennych powoduje automatyczne zapisywanie zmian wartości tego pola dokonywanych przez połączenia animacyjne lub skrypty programu WindowViewer.

Typ danych Analog (odczyt/zapis)Zakres wartości Musi mieścić się w zdefiniowanym dla danej zmiennej zakresie wartości.Przykład(y) Temperature.HiLimit = 212;

Patrz również .Alarm, .AlarmValue, .Ack, .HiStatus, .HiSet, .AlarmDisabled, .AlarmEnabled, .AlarmHiDisabled, .AlarmHiEnabled, .AlarmHiInhibitor

Opis funkcji, pól i zmiennych systemowych

116 Rozdział 2

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

Kategoria alarmySposób użycia Zmienna.HiSet

Parametr Opis

Zmienna Dowolna zmienna typu AnalogUwagi Pole to może być użyte dla zmiennych Integer lub Real.Typ danych DiscreteZakres wartości 1 (true) lub 0 (false)Przykład(y) Przykładowa instrukcja zamieszczona poniżej może być wykorzystana w

analogowym połączeniu wyświetlającym do ustalenia, czy limit High dla alarmu jest przypisany do zmiennej MyTag:

MyTag.HiSet;

{Kiedy zwrócone zostanie 0, limit nie jest ustawiony ; jeżeli zwrócone zostanie 1, limit jest ustawiony.}

Patrz również .Alarm, .AlarmValue, .Ack, .HiStatus, .HiLimit, .AlarmDisabled, .AlarmEnabled, .AlarmHiDisabled, .AlarmHiEnabled, .AlarmHiInhibitor

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 117

.HiStatusPole to określa, czy w systemie występuje alarm progowy High.

Kategoria alarmySposób użycia Zmienna.HiStatus

Parametr Opis

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

Uwagi Wartość tego pola przeznaczonego wyłącznie do odczytu jest zwykle równa 0, w przypadku wystąpienia alarmu progowego typu High dla zmiennej, z którą pole to jest skojarzone, wartość pola zostaje zmieniona przez system na 1. Pole to ma wartość równą 1 do czasu, gdy zniknie przyczyna alarmu. Pole to jest często używane w połączeniu z polami .Alarm oraz .Ack, w celu określenia dokładnej przyczyny generowania alarmu dla danej zmiennej.

Typ danych Discrete (tylko odczyt)Zakres wartości 0 = Stan alarmowy nie występuje

1 = Stan alarmowy występujePrzykład(y) IF (MotorAmps.HiStatus == 1) THEN

CALL PumpShutdown( );

ENDIF;

{Funkcja QuickFunct która może zostać użyta do wyłączenia pompy}

Patrz również .Alarm, .AlarmValue, .Ack, .HiLimit, .HiSet, .AlarmDisabled, .AlarmEnabled, .AlarmHiDisabled, .AlarmHiEnabled, .AlarmHiInhibitor

Opis funkcji, pól i zmiennych systemowych

118 Rozdział 2

.ListChanged

.ListCount

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

Kategoria alarmySposób użycia [ErrorNumber=]GetPropertyD(“NazwaObiektu.ListChanged”,Zmi

enna);

Parametr Opis

NazwaObiektu Nazwa Obiektu Alarmu Rozproszonego Przykładowo, AlmObj_1.

Zmienna Zmienna typu Discrete, w której zapisywana jest wartość pola podczas wykonywania funkcji.

Uwagi To pole tylko do odczytu zawiera informację o wystąpieniu dowolnej zmiany i konieczności aktualizacji obiektu alarmów rozproszonych. Wartość tej właściwości jest automatycznie ustawiana w czasie jej odczytywania.

Typ danych Discrete (tylko odczyt)Zakres wartości 0 = brak nowych alarmów lub aktualizacji dla obiektu alarmu rozproszonego.

1 = konieczność aktualizacji obiektu wyświetlaniaPrzykład(y) Instrukcja zamieszczona poniżej zwróci do zmiennej typu Discrete o nazwie

AlmDispStat informację, czy występują jakieś nowe alarmy lub uaktualnienia dla obiektu alarmów rozproszonych o nazwie “AlmObj_1”.

GetPropertyD(“AlmObj_1.ListChanged”,AlmDispStat);

Patrz również Get PropertyD()

Pole to określa liczbę elementów w polu listy lub na liście rozwijalnej.Kategoria obiekty sterujące okienSposób użycia [ErrorNumber=]GetPropertyI("NazwaObiektu.ListCount",

Zmienna);

Parametr Opis

NazwaObiektu Nazwa wizarda Na przykład ListBox_4.Zmienna Zdefiniowana zmienna zawierająca liczbę

elementów na liście.Uwagi Pole to jest dostępne tylko w czasie pracy aplikacji.Typ danych Integer (tylko odczyt)Zastosowanie Listy i listy rozwijalne.Przykład(y) Zamieszczona poniżej instrukcja odczytuje liczbę elementów listy o nazwie

"ListBox_1" i zapisuje tę wartość do zmiennej typu Memory Integer o nazwie MyListBoxCount

GetPropertyI( "ListBox_1.ListCount",MyListBoxCount );

Patrz również GetPropertyI(), .ListIndex

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 119

.ListIndexPole to zawiera odpowiedni indeks (zmienną lub liczbę) aktualnie 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 aktualnie wybrany. W przypadku listy rozwijalnej indeks równy -1 oznacza, że użytkownik wprowadził nowy tekst w polu wprowadzania tekstu listy rozwijalnej.

Kategoria obiekty sterujące WindowsSposób użycia [ErrorNumber=]GetPropertyI("NazwaObiektu.ListIndex",

Zmienna);[ErrorNumber=]SetPropertyI("NazwaObiektu.ListIndex",Liczba);

Parametr Opis

NazwaObiektu Nazwa wizarda Na przykład ListBox_4.Zmienna Zdefiniowana zmienna zawierająca liczbę

elementów na liście.Number 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

Opis funkcji, pól i zmiennych systemowych

120 Rozdział 2

.LoLimit

.LoLoLimit

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

Kategoria alarmySposób użycia Zmienna.LoLimit

Parametr Opis

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

Uwagi Zaznaczenie opcji Retentive Parameters (Zachowaj param.) na liście zmiennych powoduje automatyczne zapisywanie zmian wartości tego pola dokonywane 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

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

Kategoria alarmySposób użycia Zmienna.LoLoLimit

Parametr Opis

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

Uwagi Zaznaczenie opcji Retentive Parameters (Zachowaj param.) na liście zmiennych powoduje automatyczne zapisywanie zmian wartości tego pola dokonywane 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

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 121

.LoSet

.LoLoSet

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

Kategoria alarmySposób użycia Zmienna.LoSet

Parametr Opis

Zmienna Dowolna zmienna typu AnalogUwagi Pole to może być użyte dla zmiennych Integer lub Real.Typ danych DiscreteZakres wartości 1 (true) lub 0 (false)Przykład(y) Przykładowa instrukcja zamieszczona poniżej może być wykorzystana

w analogowym połączeniu wyświetlającym do ustalenia, czy limit Low dla alarmu jest przypisany do zmiennej MyTag:

MyTag.LoSet;

{Kiedy zwrócone zostanie 0, limit nie jest ustawiony ; jeżeli zwrócone zostanie 1, limit jest ustawiony.}

Patrz również .Alarm, .AlarmValue, .Ack, .LoStatus, .LoLimit, .AlarmDisabled, .AlarmEnabled, .AlarmLoDisabled, .AlarmLoEnabled, .AlarmLoInhibitor

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

Kategoria alarmySposób użycia Zmienna.LoLoSet

Parametr Opis

Zmienna Dowolna zmienna typu AnalogUwagi Pole to może być użyte dla zmiennych Integer lub Real.Typ danych DiscreteZakres wartości 1 (true) lub 0 (false)Przykład(y) Przykładowa instrukcja zamieszczona poniżej może być wykorzystana

w analogowym połączeniu wyświetlającym do ustalenia, czy limit LoLo dla alarmu jest przypisany do zmiennej MyTag:

MyTag.LoLoSet;

{Kiedy zwrócone zostanie 0, limit nie jest ustawiony ; jeżeli zwrócone zostanie 1, limit jest ustawiony.}

Patrz również .Alarm, .AlarmValue, .Ack, .LoLoStatus, .LoLoLimit, .AlarmDisabled, .AlarmEnabled, .AlarmLoLoDisabled, .AlarmLoLoEnabled, .AlarmLoLoInhibitor

Opis funkcji, pól i zmiennych systemowych

122 Rozdział 2

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

Kategoria alarmySposób użycia Zmienna.LoLoStatus

Parametr Opis

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

Uwagi Wartość tego pola przeznaczonego wyłącznie do odczytu jest zwykle równa 0, w przypadku wystąpienia alarmu progowego typu LoLo dla zmiennej, z którą pole to jest skojarzone, wartość pola zostaje zmieniona przez system na 1. Pole to ma wartość równą 1 do czasu, gdy zniknie przyczyna alarmu. Pole to jest często używane w połączeniu z polami .Alarm oraz .Ack, w celu określenia dokładnej przyczyny generowania alarmu dla danej zmiennej.

Typ danych Discrete (tylko odczyt)Zakres wartości 0 = Stan alarmowy nie występuje

1 = Stan alarmowy występujePrzykład(y) Wyrażenia zawarte w poniższej instrukcji IF-THEN będą wykonywane, gdy

pole .LoLoStatus (alarm progowy LoLo) dla zmiennej MyTag będzie miało wartość ustawioną na 1.

IF (MyTag.LoLoStatus == 1) THENOperatorMessage="MyTag has gone into LoLo Alarm";

ENDIF;

Patrz również .Alarm, .AlarmValue, .Ack, .LoLoLimit, .LoLoSet, .AlarmDisabled, .AlarmEnabled, .AlarmLoLoDisabled, .AlarmLoLoEnabled, .AlarmLoLoInhibitor

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 123

.LoStatus

.MajorDevPct

Pole to określa, czy w systemie występuje alarm progowy Low.Kategoria alarmySposób użycia Zmienna.LoStatus

Parametr Opis

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

Uwagi Wartość tego pola przeznaczonego wyłącznie do odczytu jest zwykle równa 0, w przypadku wystąpienia alarmu progowego typu Low dla zmiennej, z którą pole to jest skojarzone, wartość pola zostaje zmieniona przez system na 1. Pole to ma wartość równą 1 do czasu, gdy zniknie przyczyna alarmu. Pole to jest często używane w połączeniu z polami .Alarm oraz .Ack, w celu określenia dokładnej przyczyny generowania alarmu dla danej zmiennej.

Typ danych Discrete (tylko odczyt)Zakres wartości 0 = Stan alarmowy nie występuje

1 = Stan alarmowy występujePrzykład(y) IF (WaterLevelTank1.LoStatus == 1) THEN

PumpShutdown = 1;WaterFillValue = 1;

ENDIF;

Patrz również .Alarm, .AlarmValue, .Ack, .LoLimit, .LoSet, .AlarmDisabled, .AlarmEnabled, .AlarmLoDisabled, .AlarmLoEnabled, .AlarmLoInhibitor

Monitoruje i/lub zmienia wartość procentowego odchylenia dla alarmu. Kategoria alarmySposób użycia Zmienna.MajorDevPct

Parametr Opis

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

Uwagi Zaznaczenie opcji Retentive Parameters (Zachowaj param.) na liście zmiennych powoduje automatyczne zapisywanie zmian wartości tego pola dokonywanych przez połączenia animacyjne lub skrypty programu WindowViewer.

Typ danych Real (odczyt/zapis)Zakres wartości Od 0 do 100%Przykład(y) Przykładowe wyrażenie zamieszczone poniżej zmienia wartość pola

.MajorDeviation zmiennej MyTag na 25%.

MyTag.MajorDevPct=25;

Patrz również .AckDev, .AlarmDev, .AlarmMajDevDisabled, .AlarmMajDevEnabled, .AlarmMajDevInhibitor, .MajorDevSet, .MajorDevStatus

Opis funkcji, pól i zmiennych systemowych

124 Rozdział 2

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

Kategoria alarmySposób użycia Zmienna.MajorDevSet

Parametr Opis

Zmienna Dowolna zmienna typu AnalogUwagi Pole to może być użyte dla zmiennych Integer lub Real.Typ danych DiscreteZakres wartości 1 (true) lub 0 (false)Przykład(y) Przykładowa instrukcja zamieszczona poniżej może być wykorzystana

w analogowym połączeniu wyświetlającym do ustalenia, czy limit procentowy dla alarmu typu odchyleniowy duży jest przypisany do zmiennej MyTag:

MyTag.MajorDevSet;

{Kiedy zwrócone zostanie 0, limit nie jest ustawiony ; jeżeli zwrócone zostanie 1, limit jest ustawiony.}

Patrz również .AckDev, .AlarmDev, .AlarmMajDevDisabled, .AlarmMajDevEnabled, .AlarmMajDevInhibitor, .MajorDevPct, .MajorDevStatus

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 125

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

Kategoria alarmySposób użycia Zmienna.MajorDevStatus

Parametr Opis

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

Uwagi Wartość tego pola przeznaczonego wyłącznie do odczytu jest zwykle równa 0, a w przypadku wystąpienia alarmu dla zmiennej pole powiązane z tą zmienną jest ustawiane przez system na wartość 1. Pole to ma wartość równą 1 do czasu, gdy zniknie przyczyna alarmu.

Pole to jest często używane w połączeniu z polami .Alarm oraz .Ack, w celu określenia dokładnej przyczyny generowania alarmu dla danej zmiennej.

Typ danych Discrete (tylko odczyt)Zakres wartości 0 = Stan alarmowy nie występuje

1 = Stan alarmowy występujePrzykład(y) Wyrażenia zawarte w poniższej instrukcji IF-THEN będą wykonywane, gdy

pole .MajorDevStatus (alarm odchyleniowy duży) dla zmiennej MyTag będzie miało wartość ustawioną na 1.

IF (MyTag.MajorDevStatus == 1) THENOperatorMessage="MyTag has gone into a Major Deviation Alarm";

ENDIF;

Patrz również .AckDev, .AlarmDev, .AlarmMajDevDisabled, .AlarmMajDevEnabled, .AlarmMajDevInhibitor, .MajorDevPct, .MajorDevSet

Opis funkcji, pól i zmiennych systemowych

126 Rozdział 2

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

Kategoria zmiennaSposób użycia Zmienna.MaxEU

Parametr Opis

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

Uwagi Wartość odczytana z programu komunikacyjnego uważana jest za surową, jeżeli została ona przysłana do programu WindowViewer po raz pierwszy. Wartości surowe mogą wymagać skalowania. Do skalowania wartości surowych przeznaczone są pola .MinEu i .MaxEu. Rozważmy typowy przykład - załóżmy, że wskaźnik poziomu cieczy dostarcza informacje do sterownika PLC. Czujnik dołączony do sterownika przesyła sygnał o wartości od 4 do 20 mA. Sterownik PLC przekształca ten sygnał (za pomocą przetwornika analogowo-cyfrowego) na wartość całkowitą z zakresu od 0 do 4096. Wartość ta zostaje przypisana do zmiennej TankTwoLevel.

Wyświetlenie wartości "surowej" (z zakresu od 0 do 4096) nie dostarcza żadnej użytecznej informacji operatorowi. Konieczne jest zatem przekształcenie tej wartości na jednostki inżynierskie. W tym celu należy prawidłowo skonfigurować pola MaxEU i MinEU, określające granice zakresu jednostek inżynierskich. W rozważanym przykładzie, wartość surowa równa 0 (z pola odczytano 4 mA) zostanie przekształcona na "0 Galonów", a wartość 4096 (z pola odczytano 20 mA) zostanie przekształcona na "100 Galonów". W celu wyświetlenia tych poprawnych wartości na ekranie należy wprowadzić następujące instrukcje:

Minimum Raw=0, Maximum Raw=4096Minimum w jednostkach inż.=0, Maximum w jednostkach inż.=100

Po wprowadzeniu tych instrukcji, jeżeli wartość surowa pola będzie równa 4096, na ekranie wyświetlona zostanie liczba 100.

Typ danych Real – dla zmiennych rzeczywistych i Integer dla zmiennych całkowitych (tylko do odczytu).

Zakres wartości Zależy od typu rozważanej zmiennej.Przykład(y) Ponieważ pole to jest przeznaczone tylko do odczytu, nie można mu

przypisywać wartości. Wyświetlenie wartości .MinEU oraz .MaxEU lub wykorzystanie ich w obliczeniach jest bardzo użyteczne i może ułatwić zrozumienie operatorowi zasad konwersji wartości uzyskiwanych np. ze sterowników lub innych urządzeń.

DialogValueEntry ("IO_Point_717", IO_Point_717.MinEU, IO_Point_717.MaxEU, "Please Enter a New Value:");

Patrz również .EngUnits, .MinEU, .MaxRange, .MinRange, .MinRaw, .MaxRaw, .RawValue

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 127

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

Kategoria dane historyczneSposób użycia Zmienna.MaxRange

Parametr Opis

Zmienna Dowolna zmienna typu Hist Trend.Uwagi Ponieważ wiele różnych zmiennych może być wyświetlanych na wykresach

trendów historycznych jednocześnie, podawanie dolnej i górnej granicy zakresu wyświetlanych wartości (pola .MinRange oraz .MaxRange) w jednostkach inżynierskich staje się niemożliwe, gdyż każda zmienna może mieć (i zwykle ma) zupełnie inny zakres wartości wyrażony w takich jednostkach. Dlatego też granice zakresu wyraża się jako procentową część zakresu wartości każdej zmiennej, wyrażonego w jednostkach inżynierskich. W ten sposób, niezależnie od wielkości całego zakresu dla każdej zmiennej, na trendzie historycznym wyświetlana będzie tylko zadana procentowo część zakresu wartości danej zmiennej.

Typ danych Real (odczyt/zapis)Zakres wartości Wartości limitów w polach .MaxRange i .MinRange są wartościami

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

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

MyHistTrendTag.MaxRange=25;

Patrz również .ChartStart, .ChartLength, .DisplayMode, .EngUnits, .MinEU, .MaxEU, .MinRange, .MinRaw, .MaxRaw, .RawValue

Opis funkcji, pól i zmiennych systemowych

128 Rozdział 2

.MaxRawPole to zawiera górną wartość graniczną dla rzeczywistej wartości surowej odczytywanej z programu komunikacyjnego przez program WindowViewer, pracujący jako klient. Wartość pola .MaxRaw określana jest na podstawie definicji maksymalnej wartości surowej zmiennej, podanej na liście zmiennych dla określonej zmiennej I/O. Każda zmienna o większej wartości zostaje zmniejszona do wartości tego pola.

Kategoria zmiennaSposób użycia Zmienna.MaxRaw

Parametr Opis

Zmienna Dowolna zmienna typu I/O Discrete, Indirect Discrete, I/O Integer, Memory Real, Indirect Analog, I/O Message i Indirect Message.

Uwagi Pole to przeznaczone wyłącznie do odczytu i wykorzystywane jest do wyświetlania górnej wartości granicznej dla zmiennej źródłowej.

Typ danych Dowolna zmienna typu Integer lub Real (przeznaczona wyłącznie do odczytu).

Zakres wartości Dowolna zmienna analogowa.Przykład(y) Zamieszczone poniżej wyrażenie umożliwia sprawdzenie, czy zmienna nie

wyszła poza zakres normalnych wartości, a więc czy jej wartość nie została obcięta.

IF ((Temp01.RawValue > Temp01.MaxRaw) OR (Temp01.RawValue Temp01.MinRaw))THENShow "Instrument Failure Window";

ENDIF;

Patrz również .EngUnits, .MinEU, .MaxEU, .MaxRange, .MinRange, .MinRaw, .RawValue

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 129

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

Kategoria zmiennaSposób użycia Zmienna.MinEU

Parametr Opis

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

Uwagi Wartość odczytana z programu komunikacyjnego uważana jest za surową, jeżeli została ona przysłana do programu WindowViewer po raz pierwszy. Wartości surowe mogą wymagać skalowania. Do skalowania wartości surowych przeznaczone są pola .MinEu i .MaxEu. Rozważmy typowy przykład - załóżmy, że wskaźnik poziomu cieczy dostarcza informacje do sterownika PLC. Czujnik dołączony do sterownika przesyła sygnał o wartości od 4 do 20 mA. Sterownik PLC przekształca ten sygnał (za pomocą przetwornika analogowo-cyfrowego) na wartość całkowitą z zakresu od 0 do 4096. Wartość ta zostaje przypisana do zmiennej TankTwoLevel.

Wyświetlenie wartości "surowej" (z zakresu od 0 do 4096) nie dostarcza żadnej użytecznej informacji operatorowi. Konieczne jest zatem przekształcenie tej wartości na jednostki inżynierskie. W tym celu należy prawidłowo skonfigurować pola MaxEU i MinEU, określające granice zakresu jednostek inżynierskich. W rozważanym przykładzie, wartość surowa równa 0 (z pola odczytano 4 mA) zostanie przekształcona na "0 Galonów", a wartość 4096 (z pola odczytano 20 mA) zostanie przekształcona na "100 Galonów". W celu wyświetlenia tych poprawnych wartości na ekranie, należy wprowadzić następujące instrukcje:

Minimum surowe=0, Maximum surowe = 4096Minimum w jednostkach inż.=0, Maximum w jednostkach inż.=100

Po wprowadzeniu tych instrukcji, jeżeli wartość surowa pola będzie równa 4096, na ekranie wyświetlona zostanie liczba 100.

Typ danych Real – dla zmiennych rzeczywistych i Integer dla zmiennych całkowitych (tylko do odczytu).

Zakres wartości Zależy od typu rozważanej zmiennej.Przykład(y) AbsoluteTagRange = (Tag.MaxEU - Tag.MinEU);

Patrz również .EngUnits, .MaxEU, .MaxRange, .MinRange, .MinRaw, .MaxRaw, .RawValue

Opis funkcji, pól i zmiennych systemowych

130 Rozdział 2

.MinorDevPct

.MinorDevSet

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

Kategoria alarmySposób użycia Zmienna.MinorDevPct

Parametr Opis

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

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

Typ danych Real (odczyt/zapis)Zakres wartości Od 0 do 100%Przykład(y) Przykładowe wyrażenie zamieszczone poniżej zmienia wartość pola

.MinorDeviation zmiennej MyTag na 25%.

MyTag.MinorDevPct=25;

Patrz również .AckDev, .AlarmDev, .AlarmMinDevDisabled, .AlarmMinDevEnabled, .AlarmMinDevInhibitor, .MinorDevSet, .MinorDevStatus

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

Kategoria alarmySposób użycia Zmienna.MinorDevSet

Parametr Opis

Zmienna Dowolna zmienna typu AnalogUwagi Pole to może być użyte dla zmiennych Integer lub Real.Typ danych DiscreteZakres wartości 1 (true) lub 0 (false)Przykład(y) Przykładowa instrukcja zamieszczona poniżej może być wykorzystana

w analogowym połączeniu wyświetlającym do ustalenia, czy limit procentowy dla alarmu typu odchyleniowy mały jest przypisany do zmiennej MyTag:

MyTag.MinorDevSet;

{Kiedy zwrócone zostanie 0, limit nie jest ustawiony ; jeżeli zwrócone zostanie 1, limit jest ustawiony.}

Patrz również .AckDev, .AlarmDev, .AlarmMinDevDisabled, .AlarmMinDevEnabled, .AlarmMinDevInhibitor, .MinorDevPct, .MinorDevStatus

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 131

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

Kategoria alarmySposób użycia Zmienna.MinorDevStatus

Parametr OpisZmienna Dowolna zmienna typu Integer lub Real, lub

zmienna typu Indirect Analog.Uwagi Wartość tego pola przeznaczonego wyłącznie do odczytu jest zwykle równa

0, a w przypadku wystąpienia alarmu dla zmiennej pole powiązane z tą zmienną jest ustawiane przez system na wartość 1. Pole to ma wartość równą 1 do czasu, gdy zniknie przyczyna alarmu.

Typ danych Discrete (tylko odczyt)Zakres wartości 0 = Stan alarmowy nie występuje

1 = Stan alarmowy występujePrzykład(y) Wyrażenia zawarte w poniższej instrukcji IF-THEN będą wykonywane, gdy

pole .MinorDevStatus (alarm odchyleniowy mały) dla zmiennej MyTag będzie miało wartość ustawioną na 1.

IF (MyTag.MinorDevStatus == 1) THENOperatorMessage="MyTag has gone into a Minor Deviation Alarm";

ENDIF;

Uwagi Pole to jest często używane w połączeniu z polami .Alarm oraz .Ack, w celu określenia dokładnej przyczyny generowania alarmu dla danej zmiennej.

Patrz również .AckDev, .AlarmDev, .AlarmMinDevDisabled, .AlarmMinDevEnabled, .AlarmMinDevInhibitor, .MinorDevPct

Opis funkcji, pól i zmiennych systemowych

132 Rozdział 2

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

Kategoria dane historyczneSposób użycia Zmienna.MinRange

Parametr Opis

Zmienna Dowolna zmienna typu Hist Trend.Uwagi Ponieważ wiele różnych zmiennych może być wyświetlanych na wykresach

trendów historycznych jednocześnie, podawanie dolnej i górnej granicy zakresu wyświetlanych wartości (pola .MinRange oraz .MaxRange) w jednostkach inżynierskich staje się niemożliwe, gdyż każda zmienna może mieć (i zwykle ma) zupełnie inny zakres wartości wyrażony w takich jednostkach. Dlatego też granice zakresu wyraża się jako procentową część zakresu wartości każdej zmiennej, wyrażonego w jednostkach inżynierskich. W ten sposób, niezależnie od wielkości całego zakresu dla każdej zmiennej, na trendzie historycznym wyświetlana będzie tylko zadana procentowo część zakresu wartości danej zmiennej.

Typ danych Real (odczyt/zapis)Zakres wartości Wartości limitów w polach .MaxRange i .MinRange są wartościami

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

Przykład(y) TotalChartHeight=MyHistTrendTag.MaxRange -MyHistTrendTag.MinRange;

Patrz również .ChartStart, .ChartLength, .DisplayMode, .EngUnits, .MinEU, .MaxEU, .MaxRange, .MinRaw, .MaxRaw, .RawValue

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 133

.MinRawMinimalna, 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 zmiennej o mniejszej wartości przypisywana będzie wartość tego pola.

Kategoria zmiennaSposób użycia Zmienna.MinRaw

Parametr Opis

Zmienna Dowolna zmienna typu I/O Discrete, Indirect Discrete, I/O Integer, Memory Real, Indirect Analog, I/O Message i Indirect Message.

Uwagi Pole to przeznaczone wyłącznie do odczytu wykorzystywane jest do wyświetlania dolnej, surowej wartości granicznej dla zmiennej.

Typ danych Dowolna zmienna typu Integer lub Real (przeznaczona wyłącznie do odczytu).

Zakres wartości Dowolna zmienna analogowa.Przykład(y) Zamieszczone poniżej wyrażenie umożliwia sprawdzenie, czy zmienna nie

wyszła poza zakres normalnych wartości, a więc czy jej wartość nie została obcięta.

IF ((Temp01.RawValue > Temp01.MaxRaw) OR (Temp01.RawValue < Temp01.MinRaw)) THEN Show "Instrument Failure Window"; ENDIF;

Patrz również .EngUnits, .MinEU, .MaxEU, .MaxRange, .MinRange, .MaxRaw, .RawValue

Opis funkcji, pól i zmiennych systemowych

134 Rozdział 2

.NamePole to zawiera nazwę zmiennej w postaci łańcucha znaków.

Kategoria zmiennaSposób użycia Zmienna.Name

Parametr Opis

Zmienna Dowolny typ zmiennej.Typ danych Message (odczyt/zapis)Zakres wartości Przypisanie może być dokonywane tylko poprzez pole .Name dostępne dla

zmiennych pośrednich. Dokonując przypisania należy pamiętać, iż składnia jest taka sama jak dla przypisywania wartości tekstowych.

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 Update Use Counts (Uaktualnij liczbę wystąpień zmiennych) z menu Special (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 Update Use Counts (Uaktualnij liczbę wystąpień zmiennych) i Delete Unused Tags (Usuń nieużywane zmienne) z menu Special (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.

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 135

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 skrypt 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. Jeżeli w trakcie wykonywania aplikacji operator kliknie ten przycisk, a następnie wprowadzi numer odwiertu, wykonany zostanie powyższy skrypt.

Opis funkcji, pól i zmiennych systemowych

136 Rozdział 2

.NewIndex

.NextPage

Zwraca liczbę całkowitą (zmienną) będącą indeksem elementu, ostatnio dodanego do listy za pomocą funkcji wcAddItem() lub wcInsertItem().

Kategoria obiekty sterujące WindowsSposób użycia [ErrorNumber=]GetPropertyI(NazwaObiektu.NewIndex,Zmienna)

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 to zawiera wartość -1.

Uwagi Pole to jest dostępne tylko w czasie pracy aplikacji.Typ danych Integer (tylko odczyt)Zastosowanie Listy i listy rozwijalne.Przykład Zamieszczona poniżej instrukcja odczytuje indeks elementu ostatnio

dodanego do listy o nazwie "ListBox_1" i przypisuje tę wartość do zmiennej typu Memory Integer o nazwie "NewItemIndex."

GetPropertyI("ListBox_1.NewIndex",NewItemIndex);

Patrz również GetPropertyI(), wcAddItem(), wcInsertItem(), .ListIndex, .TopIndex

Pole to powoduje przewinięcie obiektu wyświetlania alarmu o jedną stronę ekranu w dół, w momencie, gdy wartość pola ulega zmianie z 1 na 0.

Kategoria alarmySposób użycia [ErrorNumber=]GetPropertyD(NazwaObiektu.NextPage,Zmienna)

[ErrorNumber=]SetPropertyD(NazwaObiektu.NextPage,Wartość)

Parametr Opis

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

Zmienna Nazwa zmiennej dyskretnej wykorzystywanej do pamiętania wartości właściwości w momencie, gdy funkcja jest realizowana, stosowana jako „Tagname" lub Tagname.Name.

Wartość Wartość dyskretna, lub zmienna typu Discrete przechowująca wartość do zapisu w momencie wykonywania funkcji.

Uwagi Zawsze, gdy wartość tego pola ulega zmianie z 1 na 0, obiekt do wyświetlania alarmów wyświetli następną stronę na ekranie. Po wyświetleniu tej strony wartość zmiennej zostaje automatycznie ustawiona na 1, chyba że osiągnięty został początek listy. W tym przypadku wartośćwynosi 0.

Typ danych Discrete (odczyt/zapis)Patrz również GetPropertyD(), SetPropertyD(), .PrevPage, .PageNum, .TotalPages

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 137

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

Kategoria alarmySposób użycia Zmienna.Normal

Parametr Opis

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

Uwagi Pole to używane jest w skryptach lub połączeniach animacyjnych do zasygnalizowania, że dana zmienna znajduje się w stanie "normalnym", tzn. nie jest aktywny żaden alarm dla tej zmiennej. Jeśli dla zmiennej tej aktywny jest jeden lub więcej alarmów, wartość tego pola jest ustawiana na 0.

Typ danych Discrete (tylko odczyt)Zakres wartości 0 = Aktywny jest jeden lub więcej alarmów dla zmiennej.

1 = Brak aktywnych alarmów dla danej zmiennej (wartość domyślna).Przykład(y) Wyrażenia zawarte w poniższej instrukcji IF-THEN będą wykonywane,

jeżeli nie są aktywne żadne alarmy powiązane ze zmienną o nazwie Tag1. Jeżeli dla zmiennej o nazwie Tag1 aktywny będzie jeden lub więcej alarmów, wykonywana będzie część "ELSE" instrukcji:

IF (Tag1.Normal==1) THENMyOperatorMessage="Tag1 is OK - No alarms associatedwith it";

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

ENDIF;

Patrz również .Alarm, .AlarmDev, .AlarmROC, .AlarmValue

Opis funkcji, pól i zmiennych systemowych

138 Rozdział 2

.NumAlarms

.OffMsg

Pole to zawiera informację o ilości alarmów w obiekcie alarmów rozproszonych.

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

na);

Parametr Opis

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

Zmienna Zmienna typu Integer, przechowująca wartość właściwości w momencie realizacji funkcji.

Uwagi Pole to przeznaczone jest tylko do odczytu i zawiera bieżącą liczbę alarmów zarejestrowanych w systemie alarmowania rozproszonego przez obiekt alarmowy o podanej nazwie. Liczba ta obejmuje nie tylko alarmy wyświetlane, ale wszystkie alarmy zarejestrowane.

Typ danych Integer (tylko odczyt)Przykład(y) Instrukcja podana poniżej zwraca aktualną ilość alarmów obiektu

alarmowego AlmObj_1 do zmiennej typu Integer AlarmCount.

GetPropertyI("AlmObj_1.NumAlarms",AlarmCount);

Patrz również GetPropertyI()

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

Kategoria zmiennaSposób użycia Zmienna.OffMsg

Parametr Opis

Zmienna Dowolna zmienna typu Discrete.Typ danych Message (odczyt/zapis) Wartości wpisane do tego pola nie są zachowywane.Zakres wartości Dowolny łańcuch znaków zawierający od 0 do 15 znaków.Przykład(y) Jeżeli zmienna MyDiscrete ma wartość 0, zamieszczona poniżej instrukcja

spowoduje przypisanie łańcucha znaków zawartego w polu OffMsg zmiennej MyDiscrete na liście zmiennych do zmiennej StateMessage.

StateMessage=Dtext (MyDiscrete, MyDiscrete.OnMsg, MyDiscrete.OffMsg);

Patrz również .OnMsg

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 139

.OnMsg

.PageNum

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

Kategoria zmiennaSposób użycia Zmienna.OnMsg

Parametr Opis

Zmienna Dowolna zmienna typu Discrete.Typ danych Message (odczyt/zapis) Wartości wpisane do tego pola nie są zachowywane.Zakres wartości Dowolny łańcuch znaków zawierający od 0 do 15 znaków.Przykład(y) IF IndAnalog.OnMsg == "Running" THEN

TypeOfTag = "IndAnalog was assigned a Motor Starter";

ENDIF;

Patrz również .OffMsg

Pole to zawiera numer strony aktualnie wyświetlanej w obiekcie alarmowym.Kategoria alarmySposób użycia [ErrorNumber=]GetPropertyI(NazwaObiektu.PageNum,Zmienna);

Parametr Opis

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

Zmienna Zmienna typu Integer, przechowująca wartość właściwości w momencie realizacji funkcji.

Uwagi Pole to przeznaczone jest tylko do odczytu i zawiera numer strony aktualnie wyświetlanej w obiekcie wyświetlania alarmów rozproszonych o określonej nazwie.

Typ danych Integer (tylko odczyt)Przykład(y) Instrukcja podana poniżej zwraca aktualny numer strony wykorzystywanej

przez obiekt alarmu rozproszonego AlmObj_1 do zmiennej typu Integer AlarmPage.

GetPropertyI("AlmObj_1.PageNum",AlarmPage);

Patrz również GetPropertyI(), .NextPage, .PrevPage, .TotalPages

Opis funkcji, pól i zmiennych systemowych

140 Rozdział 2

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

Kategoria dane historyczneSposób użycia Zmienna{.Pen1 | .Pen2 | .Pen3 | .Pen4 | .Pen5 | .Pen6 |

.Pen7 | .Pen8};

Parametr Opis

Zmienna Dowolna zmienna typu Hist Trend.Uwagi Ponieważ korzystanie z pól .PenX jest złożone, zaleca się korzystanie

z funkcji HTSetPenName and HTGetPenName.

Uwaga Do pola .PenX można przypisywać wyłącznie zmienne lokalne. Nie można korzystać ze składni, w której określane jest źródło zmiennej. Składnia, w której podawane jest źródło zmiennej, może być stosowana wyłącznie w przypadku funkcji HTSetPenName.

Dobrą metodą nauki korzystania z funkcji operujących na tych polach jest analiza umieszczonego na ekranie, a następnie rozdzielonego na elementy składowe wizarda trendów historycznych. Analiza taka umożliwia zrozumienie, w jaki sposób pola te powinny być wykorzystywane.

Typ danych TagID (odczyt/zapis)Zakres wartości Typem danych obowiązującym w tym polu jest typ TagID. Oznacza to, że do

tego pola można przypisać "adres" zmiennej. Do pola tego nie można przypisać nazwy zmiennej. Musi być przypisane wyłącznie pole .TagID zmiennej. Pełne zrozumienie tego opisu może wymagać skorzystania z informacji o polu .TagID. Ogólnie ujmując, zmienna typu TagID może być porównywana wyłącznie z inną zmienną typu TagID. Nie można korzystać z niej w połączeniu ze zmienną innego typu, chyba że do zmiennej innego typu dodane zostanie pole .TagID.

Chociaż pole to przeznaczone jest do odczytu/ zapisu, jego wartość nie może być bezpośrednio wyświetlona na ekranie.

Przykład(y) Zamieszczone poniżej, przykładowe wyrażenie, przypisuje nową zmienną do pola Pen1 trendu historycznego związanego ze zmienną typu Hist Trend o nazwie MyHistTrendTag. Zamieszczona poniżej instrukcja skryptu Pen1 trendu historycznego powiązanego ze zmienną MyHistTrendTag rozpocznie wyświetlanie danych archiwalnych zarejestrowanych dla zmiennej o nazwie MyLoggedTag. Należy zwrócić uwagę, w jaki sposób pole .TagID łączone jest z nazwą zmiennej MyLoggedTag w celu przypisania jej do Pen1. Jest to konieczne, ponieważ pole .Pen1 jest typu TagID, a operacja przypisania wymaga zgodności typów (tj. DiscreteTag = DiscreteTag, natomiast błędne jest wyrażenie DiscreteTag = MessageTag), należy więc przypisać temu polu obiekt typu TagID.

MyHistTrendTag.Pen1=MyLoggedTag.TagID;

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 141

Opierając się na powyższym przykładzie rozważmy, w jaki sposób można wyświetlić NAZWĘ zmiennej przypisanej do MyHistTrendTag.Pen1. Informacja taka byłaby bardzo użyteczna dla operatora. Dodatkowo, wyświetlanie nazwy zmiennej rysowanej na trendzie historycznym zwiększa funkcjonalność aplikacji. Pozornie, najłatwiejszym sposobem wyświetlenia wartości wspomnianego pola MyHistTrendTag.Pen1 jest skorzystanie z połączenia wyświetlającego, ale operacja taka (o czym można się przekonać samodzielnie) nie daje przewidywanego wyniku. Powodem takiej sytuacji jest fakt, że rzeczywista wartość pola .Pen1 jest typu całkowitego i zapisana jest w pewnym obszarze pamięci programu WindowViewer, w formacie nie nadającym się do bezpośredniego wyświetlania na ekranie. Rozwiązanie wymaga nieco więcej pracy. Najpierw należy utworzyć nową zmienną typu TagID, na przykład o nazwie Pen01. Poniżej instrukcji z poprzedniego przykładu należy umieścić następującą instrukcję:

Pen01=MyHistTrendTag.Pen1;

W pierwszym przykładzie, zmienna MyLoggedTag została przypisana do pola Pen1 zmiennej MyHistTrendTag. W niniejszym przykładzie, zrealizowana została bardziej zaawansowana operacja, polegająca na przypisaniu wartości Pen1 zmiennej MyHistTrendTag, obecnie równej TagID zmiennej MyLoggedTag do zmiennej Pen01. Powodem takiego działania jest potrzeba dotarcia do pola .Name. Nie można w prosty sposób wyświetlić na ekranie MyHistTrendTag.Name, ponieważ pokazywany będzie zawsze tekst MyHistTrendTag. Próba wyświetlenia na ekranie MyHistTrendTag.Pen1 zakończy się niepowodzeniem, ponieważ edytor połączeń nie zezwoli na wyświetlenie Pen1 typu TagID. Konieczne jest więc stworzenie zmiennej pomocniczej, stanowiącej połączenie pomiędzy systemem wyświetlania a systemem historycznym. Przypisując wartość MyHistTrendTag.Pen1 do zmiennej typu TagID o nazwie Pen01, w rzeczywistości do zmiennej Pen01 przypisana została zmienna MyLoggedTag. Przedstawione powyżej zadanie można również zrealizować za pomocą pojedynczej instrukcji przedstawionej poniżej. Obydwa rozwiązania są funkcjonalnie identyczne.

Pen01=MyLoggedTag.TagID;

Opis funkcji, pól i zmiennych systemowych

142 Rozdział 2

Preferowane jest pierwsze z przedstawionych rozwiązań. Jest ono bardziej naturalne. Dodatkowo, można po prostu umieścić MyHistTrendTag.Pen1 jako "zmienną" w skrypcie zmiany wartości w miejscu: Pen01 = MyHistTrendTag.Pen1 Dzięki temu, nie wiedząc jak zmienna została przypisana do Pen1, można ją przypisać do zmiennej Pen01. Pozwala to na ustawiczne wyświetlanie na ekranie nazwy zmiennej przypisanej do pola Pen1 trendu historycznego, nawet jeżeli zmienna zostanie zmieniona przez użytkownika (poprzez kliknięcie na trendzie w WindowViewer) lub też przez skrypt wykonywany przez system.

Analizując głębiej ten przykład, można zażądać wyświetlenia maksymalnej i minimalnej wartości, wyrażonych w jednostkach inżynierskich, dla rysowanej zmiennej. Z możliwości tej korzysta wizard trendu historycznego. Zalecamy umieszczenie na ekranie wizarda trendu historycznego, a następnie rozdzielenie go i analizę sposobu, w jaki został on zaprojektowany. Jest to dobry przykład sposobu korzystania z tych pól.

Ponieważ zmienne typu TagID, jak na przykład Pen01, nie mają pól podających wartość w jednostkach inżynierskich, jak również innych pól zwykle dostępnych w zmiennych, nie można wykorzystać ich do wyświetlania wartości zmiennej w jednostkach inżynierskich. Przykładowo, nie jest możliwe wyświetlenie Pen01.MaxEu ponieważ edytor połączeń poinformuje, że nie można odwoływać się do pola .MaxEU w przypadku zmiennej Pen01, typu TagID.

W celu rozwiązania tego problemu, wystarczy skorzystać ze zmiennej pomocniczej, której zadaniem jest zapewnienie łączności pomiędzy typem TagID a systemem wyświetlania. Najpierw należy utworzyć zmienną typu Indirect Analog, np. IndirectAnalogPen1. W takim samym skrypcie zmiany wartości jak np. w przykładzie nr 2, wprowadzić następującą instrukcję:

IndirectAnalogPen1.Name=Pen01.Name;

Nazwa zmiennej Pen01 (w tym momencie równej MyLoggedTag) jest przypisana do zmiennej typu pośredniego IndirectAnalogPen1. Jeżeli zrealizowane zostaną te czynności, można odwoływać się do wszystkich pól zmiennych dostępnych dla zmiennych analogowych, w naszym przypadku, dla zmiennej typu całkowitego o nazwie MyLoggedTag. W tym momencie, w połączeniu wyświetlającym wartości analogowe można wprowadzić:

IndirectAnalogPen1.MaxEU

Spowoduje to wyświetlenie maksymalnej wartości wyrażonej w jednostkach inżynierskich dla zmiennej przypisanej w danej chwili do zmiennej IndirectAnalogPen1. Ponieważ zostało do niej przypisane w skrypcie zmiany wartości zamieszczonym powyżej pole Pen01.Name, można z całą pewnością stwierdzić, że maksymalna wartość wyrażona w jednostkach inżynierskich zmiennej jest w tym momencie przypisana do pola Pen1 zmiennej MyHistTrendTag.

Patrz również .TagID, HTGetPenName( ), HTSetPenName( )

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 143

.PendingUpdatesWskazuje, czy występują jakiekolwiek niezakończone aktualizacje dla obiektu alarmów rozproszonych.

Kategoria alarmySposób użycia [ErrorMessage=]GetPropertyI(“NazwaObiektu.PendingUpdates”

, Zmienna);

Parametr Opis

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

Zmienna Zmienna typu Integer, przechowująca wartość właściwości w momencie realizacji funkcji.

Uwagi Pole to jest tylko do odczytu i zawiera informację o niezakończonych aktualizacjach dla obiektu wyświetlania alarmu rozproszonego o podanej nazwie. Każda wartość większa niż zero wskazuje, że obiekt alarmu rozproszonego ma nowe dane alarmowe. Wartość ta jest zerowana za każdym razem, gdy obiekt jest ponownie rysowany.

Typ danych Integer (tylko odczyt)Przykład(y) Zamieszczone poniżej wyrażenie zwraca do zmiennej typu Integer o nazwie

AlarmPendingUpdates informację, czy występują jakiekolwiek nie zakończone aktualizacje dla obiektu wyświetlania alarmu rozproszonego o nazwie "AlmObj_1”.

GetPropertyI(“AlmObj_1.PendingUpdates”, AlarmPendingUpdates);

Patrz również GetProperty

Opis funkcji, pól i zmiennych systemowych

144 Rozdział 2

.PrevPage

.PriFrom

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 alarmySposób użycia [ErrorNumber=]GetPropertyD(NazwaObiektu.PrevPage,Zmienna)

[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

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

Kategoria alarmySposób użycia [ErrorNumber=]GetPropertyI(NazwaObiektu.PriFrom,Zmienna)

Parametr Opis

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

Zmienna Zmienna typu Integer, przechowująca wartość właściwości w momencie realizacji funkcji.

Uwagi Pole to, tylko do odczytu, zawiera wartość minimalnego priorytetu wykorzystywaną do filtrowania alarmów w oknie obiektu wyświetlania alarmów rozproszonych.

Typ danych Integer (tylko odczyt)Przykład(y) Zamieszczone poniżej wyrażenie ustawia wartość zmiennej typu Integer

MinPri na minimalną wartość priorytetu, wykorzystywaną przez obiekt alarmów rozproszonych AlmObj_1.

GetPropertyI("AlmObj_1.PriFrom",MinPri);

Patrz również GetPropertyI(), .PriTo, .AlarmPri

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 145

.PriTo

.ProvidersReq

Pole to zawiera wartość górnego priorytetu używaną przez bieżące zapytanie.Kategoria alarmySposób użycia [ErrorNumber=]GetPropertyI("NazwaObiektu.PriTo",Zmienna);

Parametr Opis

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

Zmienna Zmienna typu Integer, przechowująca wartość właściwości w momencie realizacji funkcji.

Uwagi Pole to, tylko do odczytu, zawiera górną wartość priorytetu wykorzystywaną do filtrowania alarmów na oknie obiektu do wyświetlania alarmów rozproszonych.

Typ danych Integer (tylko odczyt)Przykład(y) Zamieszczone poniżej wyrażenie ustawia wartość zmiennej typu Integer

MaxPri na maksymalną wartość priorytetu, wykorzystywaną przez obiekt alarmów rozproszonych AlmObj_1.

GetPropertyI("AlmObj_1.PriTo",MaxPri);

Patrz również GetPropertyI(), .PriFrom, .AlarmPri

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

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

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 alarmu rozproszonego AlmObj_1. Wartość ta jest przypisywana zmiennej typu Integer TotalProv:

GetPropertyI("AlmObj_1.ProvidersReq",TotalProv);

Patrz również GetPropertyI(), .ProvidersRet

Opis funkcji, pól i zmiennych systemowych

146 Rozdział 2

.ProvidersRetPole to zawiera liczbę aplikacji uruchomionych na innych komputerach, które udzieliły odpowiedzi na pytanie o występowanie alarmów.

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

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.ProvidersRet",RetProv);

Patrz również GetPropertyI(), .ProvidersReq

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 147

.QualityW celu pełnego zrozumienia właściwości pola Quality, poniżej podano krótką definicję pojęcia jakości wartości. Norma jakości Wonderware oparta jest na standardzie OLE for Process Control, (OPC), który z kolei bazuje na normie Fieldbus Data Quality Specifications.

Flagi jakości reprezentują jakość wartości danych. Takie rozwiązanie umożliwia zarówno aplikacjom serwera jak i klienta wyznaczenie żądanego zakresu funkcjonalności do implementowania.

8 mniej znaczących bitów flagi Jakości składa się obecnie z trzech pól bitowych: Quality, Substatus i Limit, o następującym układzie:

QQSSSSLL

Pole Quality udostępnia użytkownikowi informację o jakości zmiennej typu I/O w postaci dostarczonej przez program komunikacyjny.

Uwaga W przypadku zakłóceń pracy programu komunikacyjnego, pola związane z jakością zmiennej są automatycznie ustawiane na wartość 0. Równocześnie wartość 0 przypisywana jest do flagi .ReferenceComplete.

Kategoria zmiennaSposób użycia Zmienna.Quality

Parametr Opis

Zmienna Dowolna zmienna typu Discrete, Integer lub Real, albo zmienna typu Indirect Message.

Typ danych Integer (tylko odczyt)Zakres wartości Wartość może należeć do przedziału od 0 do 255.Przykład(y) IF I0Tag.Quality <> 192 THEN

LogMessage("Dane nie są prawidłowe!");

ENDIF;

Program komunikacyjny Wonderware może sygnalizować sześć (6) wzajemnie wykluczających się statusów jakości danych przesyłanych do klientów. Statusy te są następujące:

Bajty jakości OPCBity jakości OPC .QualityStatusMSByte LSByte .QualitySubstatus

Statusy jakości War. heks. xxxxxxxx QQSSSSLN .QualityLimit1. Dobry 0x00C0 00000000 11000000 Q=3 S=0 L=02. Obcięcie od góry

0x0056 00000000 01010110 Q=1 S=5 L=2

3. Obcięcie od dołu

0x0055 00000000 01010101 Q=1 S=5 L=1

4. Brak możliwości konwersji

0x0040 00000000 01000000 Q=1 S=0 L=0

Opis funkcji, pól i zmiennych systemowych

148 Rozdział 2

5. Brak dostępu 0x0004 00000000 00000100 Q=0 S=1 L=06. Przerwana komunikacja

0x0018 00000000 00011000 Q=0 S=6 L=0

Jeżeli aplikacja klienta nie może nawiązać łączności z programem komunikacyjnym, wartość QualityStatus jest równa 0.0x0000 00000000 00000000 Q=0 S=0 L=0

Poszczególne statusy jakości sygnalizowane są po spełnieniu następujących warunków:

1. Dobry Połączenie komunikacyjne zostało zweryfikowane.

Żądanie dostarczenia danych zostało odebrane pomyślnie przez sterownik PLC, który w odpowiedzi wysłał poprawny pakiet informacji.

W trakcie operacji zapisu, o ile taka była realizowana, nie wystąpił błąd.

Nie wystąpiły żadne zakłócenia w czasie konwersji danych zawartych w zwrotnym pakiecie danych.

Przykład Zwrócona została wartość 0x0000A z rejestru zawierającego 10 (w postaci decymalnej).

2. Obcięcie od góry

Połączenie komunikacyjne zostało zweryfikowane.

Żądanie dostarczenia danych zostało odebrane pomyślnie przez sterownik PLC, który w odpowiedzi wysłał poprawny pakiet informacji.

Operacja zapisu lub odczytu rejestru została pomyślnie zrealizowana.

Konieczne było zmniejszenie wartości, ponieważ przekroczono maksymalną, górną wartość graniczną.

W przypadku łańcucha znaków oznacza to usunięcie części znaków.

Przykład 16 bitowa liczba całkowita jest zmniejszana do wartości 65535.3. Obcięcie od dołu

Połączenie komunikacyjne zostało zweryfikowane.

Żądanie dostarczenia danych zostało odebrane pomyślnie przez sterownik PLC, który w odpowiedzi wysłał poprawny pakiet informacji.

Operacja zapisu lub odczytu rejestru została pomyślnie zrealizowana.

Konieczne było zwiększenie wartości, ponieważ przekroczono minimalną, dolną wartość graniczną.

Przykład 16 bitowa liczba całkowita jest zmniejszana do wartości 0.

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 149

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: Nie liczba).

Przykład Z rejestru BCD przetwornika PLC jest zwrócona wartości 0x000A.

Opis funkcji, pól i zmiennych systemowych

150 Rozdział 2

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

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 151

.QualityLimit

.QualityLimitString

Liczba całkowita wykorzystywana do wyświetlania wartości granicznych jakości zmiennej typu I/O, dostarczanej przez program komunikacyjny przy poprawnie funkcjonującym połączeniu.

Kategoria zmiennaSposób użycia Zmienna.QualityLimit

Parametr Opis

Zmienna Dowolna zmienna typu Discrete, Integer lub Real, albo zmienna typu Indirect Message.

Typ danych Integer (tylko odczyt)Zakres wartości (LL)

0 Bez ograniczenia1 Ograniczenie od dołu2 Ograniczenie od góry3 Stała

Patrz również .Quality

Pole wykorzystywane do wyświetlania tekstowej wartości granicznej jakości wartości zmiennej I/O, dostarczonej przez program komunikacyjny przy poprawnie funkcjonującym połączeniu.

Kategoria zmiennaSposób użycia Zmienna.QualityLimitString

Parametr Opis

Zmienna Dowolna zmienna typu Discrete, Integer lub Real, albo zmienna typu Indirect Message.

Typ danych Message (tylko odczyt)Patrz również .QualityLimit, .Quality

Opis funkcji, pól i zmiennych systemowych

152 Rozdział 2

.QualityStatus

.QualityStatusString

Liczba całkowita wykorzystywana do wyświetlania statusu jakości wartości zmiennej I/O, dostarczonej przez program komunikacyjny przy poprawnie funkcjonującym połączeniu.

Kategoria zmiennaSposób użycia Zmienna.QualityStatus

Parametr Opis

Zmienna Dowolna zmienna typu Discrete, Integer lub Real, albo zmienna typu Indirect Analog lub Indirect Message.

Uwagi Wartość pola bitowego podstatusu (QQ) zależy od wartości pola jakości (QQSSSSLL).

Typ danych Integer (tylko odczyt)Zakres wartości (QQ)

0 Zły1 Niepewny3 Dobry

Patrz również .QualitySubStatus, .Quality

Pole wykorzystywane do wyświetlania tekstowej wartości statusu jakości wartości zmiennej I/O, dostarczonej przez program komunikacyjny przy poprawnie funkcjonującym połączeniu.

Kategoria zmiennaSposób użycia Zmienna.QualityStatusString

Parametr Opis

Zmienna Dowolna zmienna typu Discrete, Integer lub Real, albo zmienna typu Indirect Analog lub Indirect Message.

Typ danych Message (tylko odczyt)Patrz również .QualityStatus, .QualitySubStatus, .Quality

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 153

.QualitySubstatusLiczba całkowita wykorzystywana do wyświetlania wartości podstatusu jakości zmiennej typu I/O, dostarczanej przez program komunikacyjny przy poprawnie funkcjonującym połączeniu.

Kategoria zmiennaSposób użycia Zmienna.QualitySubstatus

Parametr Opis

Zmienna Dowolna zmienna typu Discrete, Integer lub Real, albo zmienna typu Indirect Message.

Typ danych Integer (tylko odczyt)Zakres wartości (SSSS) i (QQ)

Podstatus (SSSS) w przypadku, gdy jakość jest ZŁA (QQ=0):0 Nie określona1 Błąd w konfiguracji2 Brak połączenia3 Uszkodzenie sprzętowe4 Uszkodzenie czujnika5 Ostatnio odebrana

wartość6 Uszkodzenie portu7 WyłączeniePodstatus (SSSS) w przypadku, gdy jakość jest NIEPEWNA (QQ=1):0 Nieokreślona1 Ostatnio odebrana

wartość4 Czujnik niedokładny5 Przekroczenie

Jednostek inżynierskich6 Sub-NormalPodstatus (SSSS) w przypadku, gdy jakość jest DOBRA (QQ=3):0 Nieokreślona6 Lokalne przepisanie

Patrz również .QualityStatus, .Quality

Opis funkcji, pól i zmiennych systemowych

154 Rozdział 2

.QualitySubstatusString

.QueryState

Pole wykorzystywane do wyświetlania podstatusu jakości wartości zmiennej I/O, dostarczonej przez program komunikacyjny przy poprawnie funkcjonującym połączeniu.

Kategoria zmiennaSposób użycia Zmienna.QualitySubstatusString

Parametr Opis

Zmienna Dowolna zmienna typu Discrete, Integer lub Real, albo zmienna typu Indirect Message.

Typ danych Message (tylko odczyt)Patrz również .QualityStatus, .QualitySubstatus, .Quality

Pole to zawiera aktualny filtr obowiązujący przy pytaniu o alarmy.Kategoria alarmySposób użycia [ErrorNumber=]GetPropertyI("NazwaObiektu.QueryState",

Zmienna);

Parametr Opis

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

Zmienna Zmienna typu Integer, przechowująca wartość właściwości w momencie realizacji funkcji.

Uwagi Pole to przeznaczone jest tylko do odczytu i zawiera aktualny filtr stosowany przy zapytaniu o alarmy przez obiekt wyświetlania alarmów w systemie alarmowania rozproszonego.

Typ danych Integer (tylko odczyt)Zakres wartości 0 = Wszystkie alarmy

1 = Alarmy niepotwierdzone2 = Alarmy potwierdzone

Przykład(y) Instrukcja podana poniżej zwraca wartość zmiennej typu Integer AlmQueryState na filtr bieżącego zapytana obiektu alarmów rozproszonych "AlmObj_1".

GetPropertyI("AlmObj_1.QueryState",AlmQueryState);

Patrz również GetPropertyI(), .QueryType

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 155

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

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

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 określa aktualnie obowiązujący sposób pytania o alarmy przez obiekt wyświetlania alarmów w systemie alarmowania rozproszonego.

Typ danych Integer (tylko odczyt)Zakres wartości 1 = Historia alarmów

2 = Alarmy bieżące (aktywne)Przykład(y) Instrukcja podana poniżej zwraca typ zapytania obiektu alarmowego

"AlmObj_1" i zapisuje go w zmiennej typu Integer AlmQueryType:

GetPropertyI("AlmObj_1.QueryType",AlmQueryType);

Patrz również GetPropertyI(), .QueryState

Opis funkcji, pól i zmiennych systemowych

156 Rozdział 2

.RawValueRzeczywista wartość odczytana z programu komunikacyjnego przez program WindowViewer pracujący jako klient. Pole wartości surowej pozwala użytkownikowi na odczytanie wartości zmiennej typu I/O przed wyskalowaniem jej przez program InTouch.

Kategoria zmiennaSposób użycia Zmienna.RawValue

Parametr Opis

Zmienna Dowolna zmienna typu I/O Discrete, Indirect Discrete, I/O Integer, Memory Real, Indirect Analog, I/O Message i Indirect Message.

Uwagi Pole przeznaczone wyłącznie do odczytu, wykorzystywane do wyświetlania aktualnej wartości zmiennej dyskretnej lub analogowej typu I/O, przed jej skalowaniem w programie InTouch.

Typ danych Dowolny typ danych. Na przykład, wartości rzeczywiste dla zmiennych typu Real, dyskretne dla zmiennych typu Discrete, itd (pole tylko do odczytu)

Zakres wartości Wszędzie tam gdzie mogą być stosowane wartości dyskretne lub analogowe.Przykład(y) Zamieszczone poniżej wyrażenie umożliwia sprawdzenie, czy zmienna nie

wyszła poza zakres normalnych wartości.

IF ((IOtag.RawValue > IOtag.MaxRaw) OR (IOTag.RawValue IOTag.MinRaw))THENAlarmMessage = "Czujnik rozkalibrowany lub wymaga wymiany.";

ENDIF;

Patrz również .EngUnits, .MinEU, .MaxEU, .MinRaw, .MaxRaw

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 157

.ReadOnlyOkreśla, czy zawartość obiektu sterującego w postaci pola tekstowego ma być przeznaczona tylko do odczytu, czy może dopuszczać również zapis.

Kategoria obiekty sterujące WindowsSposób użycia [ErrorNumber=]GetPropertyD("NazwaObiektu.ReadOnly",

Zmienna);

Parametr Opis

NazwaObiektu Nazwa wizarda Na przykład, Textbox_1Zmienna Zmienna typu Discrete, w której zapisywana jest

wartość pola podczas wykonywania funkcji.Uwagi Pole to jest dostępne zarówno w czasie pracy aplikacji, jak i w czasie jej

edycjiTyp danych Discrete (tylko odczyt)Zakres wartości 0 = Zawartość pola tekstowego umożliwia odczyt i zapis.

1 = Zawartość pola tekstowego jest przeznaczona tylko do odczytu.Zastosowanie Pola tekstu.Przykład(y) Poniższa instrukcja odczytuje status pola .ReadOnly obiektu o nazwie

"TextBox_1".

GetPropertyD( "TextBox_1.ReadOnly",A_Tagname );

Patrz również GetPropertyD(), SetPropertyD()

Opis funkcji, pól i zmiennych systemowych

158 Rozdział 2

.Reference

.ReferenceComplete

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

Kategoria zmiennaSposób użycia Zmienna.Reference

Parametr OpisZmienna Dowolna zmienna I/O lub zmienna pośrednia

(Indirect) przypisana do zmiennej I/O.Uwagi Pole to zapewnia łatwą metodę dynamicznej zmiany nazwy dostępu i/lub

nazwy elementu. Typ danych Message (odczyt/zapis)Zakres wartości Dowolny łańcuch znaków zawierający nazwę dostępu i/lub nazwę elementu. Przykład(y) Instrukcja podana poniżej przypisuje do pola z nazwą elementu zmiennej I/O

nazwę elementu wygenerowaną przez funkcję tekstową, w zależności od wartości zmiennej pamięciowej typu całkowitego. Instrukcja ta zastosowana zostanie w skrypcie warunkowym, do wykonywania operacji na sekwencji zmiennych, z wykorzystaniem do tego celu pola .ReferenceComplete.

MyIOTag.Reference="R" + Text( MyIndex, "#" );

{ If MyIndex=40001,w efekcie element będzie miał wartość: R40001 }

ExcelTag.Reference="R"+Text(RowNum,"#")+"C"+Text(ColNum, "#");

Zwraca potwierdzenie w przypadku zmiany pola .Reference, gdy zmienna odebrała wartość w polu .Value wynikającą z nowego adresu .Item.

Kategoria zmiennaSposób użycia Zmienna.ReferenceComplete;

Parametr Opis

Zmienna Dowolna zmienna I/O lub zmienna pośrednia (Indirect) przypisana do zmiennej I/O.

Uwagi Pole to jest bardzo użyteczne w połączeniu z polem .Reference. Pole .ReferenceComplete wskazuje, że nastąpiła modyfikacja nazwy elementu lub nazwy dostępu i co ważniejsze, że nowe wartości zostały uzyskane z nowego źródła danych. Nawet jeżeli nowe źródło danych jest identyczne z poprzednio wykorzystywanym źródłem danych, w momencie pierwszego uaktualnienia wartości przez nowe źródło danych, pole to ustawiane jest przez system na wartość 1.

W czasie procesu uaktualniania, od momentu zmodyfikowania pola .Reference do momentu pierwszego uaktualnienia wartości przez nowe źródło danych, system ustawia wartość tego pola na 0.

Typ danych Discrete (tylko odczyt)

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 159

.ROCPct

.ROCSet

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

Kategoria Alarms (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 alarmySposób użycia Zmienna.ROCSet

Parametr Opis

Zmienna Dowolna zmienna typu AnalogUwagi Pole to może być użyte dla zmiennych Integer lub Real.Typ danych DiscreteZakres wartości 1 (true) lub 0 (false)Przykład Przykładowa instrukcja zamieszczona poniżej może być wykorzystana

w analogowym połączeniu wyświetlającym do ustalenia, czy limit szybkości zmiany dla alarmu jest przypisany do zmiennej MyTag:

MyTag.ROCSet;

{Kiedy zwrócone zostanie 0, limit nie jest ustawiony ; jeżeli zwrócone zostanie 1, limit jest ustawiony.}

Patrz również .Alarm, .Ack, .LoLimit, .LoLoLimit, .HiHiLimit, .HiLimit, .HiSet, .LoSet, .LoLoSet, .HiStatus, .HiHiStatus, .ROCPct, .ROCStatus

Opis funkcji, pól i zmiennych systemowych

160 Rozdział 2

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

Kategoria alarmySposób użycia Zmienna.ROCStatus

Parametr Opis

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

Uwagi Wartość tego pola przeznaczonego wyłącznie do odczytu jest zwykle równa 0, w przypadku wystąpienia alarmu typu prędkości zmiany dla danej zmiennej zostaje zmieniona przez system na 1. Pole to ma wartość równą 1 do czasu, gdy zniknie przyczyna alarmu.

Typ danych Discrete (tylko odczyt)Zakres wartości 0 = Stan alarmowy nie występuje

1 = Stan alarmowy występujePrzykład(y) Wyrażenia zawarte w poniższej instrukcji IF-THEN będą wykonywane, gdy

pole .ROCStatus (alarm typu prędkości zmiany) dla zmiennej MyTag będzie miało wartość ustawioną na 1.

IF (MyTag.ROCStatus == 1) THENOperatorMessage="MyTag has gone into a Rate-Of-Change-Alarm";

ENDIF;

Uwagi Pole to jest często używane w połączeniu z polami .Alarm oraz .Ack, w celu określenia dokładnej przyczyny generowania alarmu dla danej zmiennej.

Patrz również .ROCPct, .ROCSet

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 161

.ScooterLockLeftPrzypisanie do tego pola wartości 1 (True) uniemożliwi przesunięcie prawego suwaka na wykresie trendu historycznego poza aktualne położenie lewego suwaka.

Kategoria dane historyczneSposób użycia Zmienna.ScooterLockLeft

Parametr Opis

Zmienna Dowolna zmienna typu Hist Trend.Uwagi Ogólnie ujmując, należy zapobiegać temu, aby operator miał możliwość

przesunięcia prawego suwaka w lewo, poza pozycję zajmowaną przez lewy suwak. Jeżeli lewy suwak nie jest zablokowany, w momencie, gdy prawy suwak zostanie przesunięty w lewo poza pozycję zajmowaną przez lewy suwak, ich pozycje będą równe.

Typ danych Discrete (odczyt/zapis)Zakres wartości 0 = False = prawy suwak może zostać przesunięty poza pozycję zajmowaną

przez lewy suwak.1 = True = prawy suwak nie może zostać przesunięty poza pozycję zajmowaną przez 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

Opis funkcji, pól i zmiennych systemowych

162 Rozdział 2

.ScooterLockRightPrzypisanie do tego pola wartości 1 (True) uniemożliwi przesunięcie lewego suwaka na wykresie trendu historycznego poza aktualne położenie prawego suwaka.

Kategoria dane historyczneSposób użycia Zmienna.ScooterLockRight

Parametr Opis

Zmienna Dowolna zmienna typu Hist Trend.Uwagi Ogólnie ujmując, należy zapobiegać temu, aby operator miał możliwość

przesunięcia lewego suwaka w prawo, poza pozycję zajmowaną przez prawy suwak. Jeżeli prawy suwak nie jest zablokowany, w momencie, gdy lewy suwak zostanie przesunięty w prawo poza pozycję zajmowaną przez prawy suwak, ich pozycje będą równe.

Typ danych Discrete (odczyt/zapis)Zakres wartości 0 = False = lewy suwak może zostać przesunięty poza pozycję zajmowaną

przez prawy suwak1 = True = lewy suwak nie może zostać przesunięty poza pozycję zajmowaną przez 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

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 163

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

Kategoria dane historyczneSposób użycia Zmienna.ScooterPosLeft

Parametr Opis

Zmienna Dowolna zmienna typu Hist Trend.Uwagi Pole to, przeznaczone do odczytu i zapisu, dynamicznie steruje położeniem

lewego suwaka na wykresie trendu historycznego. Pole to można wykorzystać w funkcji QuickScript do odczytania bieżącej pozycji lewego suwaka, albo też do przestawienia suwaka w inne położenie na wykresie, poprzez wpisanie zadanej wartości do tego pola.

Pole to jest wykorzystywane najczęściej w połączeniu z funkcją HTGetValue(). W przypadku korzystania z tego typu funkcji należy określić, do którego trendu historycznego mają być wysyłane zapytania, jak również należy podać bieżące pozycje suwaków.

Typ danych Real (odczyt/zapis)Zakres wartości 0.0 do 1.0; gdzie 0.0 odpowiada lewemu krańcowi wykresu trendu

historycznego, natomiast 1.0 odpowiada prawemu krańcowi tego wykresu.Przykład(y) Podana poniżej instrukcja dokonuje przesunięcia lewego suwaka do nowej

lokalizacji. 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 skrypcie, funkcja HtGetValueAtScooter() została wykorzystana do odczytu wartości wskazywanej przez pisak Pen1 w miejscu, w którym znajduje się lewy suwak. Ponieważ zmiana każdego z parametrów funkcji powoduje ponowne wyznaczenie wartości funkcji, instrukcja ta wykonywana jest po każdej zmianie pozycji lewego suwaka.

MyRealTag=HTGetValueAtScooter(MyHistTrendTag,MyHistTrendTag.UpdateCount,1,MyHistTrendTag.ScooterPosLeft,1,"PenValue");

Patrz również .ScooterPosRight, .ScooterLockLeft, .ScooterLockRight

Opis funkcji, pól i zmiennych systemowych

164 Rozdział 2

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

Kategoria dane historyczneSposób użycia Zmienna.ScooterPosRight

Parametr Opis

Zmienna Dowolna zmienna typu Hist Trend.Uwagi Pole to, przeznaczone do odczytu i zapisu, dynamicznie steruje położeniem

prawego suwaka na wykresie trendu historycznego. Pole to można wykorzystać w funkcji QuickScript do odczytania bieżącej pozycji prawego suwaka, albo też do przestawienia suwaka w inne położenie na wykresie, poprzez wpisanie zadanej wartości do tego pola.

Pole to jest wykorzystywane najczęściej w połączeniu z funkcją HTGetValue(). W przypadku korzystania z tego typu funkcji należy określić, do którego trendu historycznego mają być wysyłane zapytania, jak również należy podać bieżące pozycje suwaków. Patrz przykład poniżej.

Typ danych Real (odczyt/zapis)Zakres wartości 0.0 do 1.0; gdzie 0.0 odpowiada prawemu krańcowi wykresu trendu

historycznego, natomiast 1.0 odpowiada lewemu krańcowi tego wykresu.Przykład(y) Podana poniżej instrukcja dokonuje przesunięcia prawego suwaka do nowej

lokalizacji. 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 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 każdego z parametrów funkcji powoduje ponowne wyznaczenie wartości funkcji, instrukcja ta będzie wykonywana po każdej zmianie pozycji prawego suwaka.

MyRealTag=HTGetValueAtScooter(MyHistTrendTag,MyHistTrendTag.UpdateCount,2,MyHistTrendTag.ScooterPosRight,1,"PenValue");

Patrz również .ScooterPosLeft, .ScooterLockLeft, .ScooterLockRight

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 165

.SuccessfulPole to dostarcza informacji na temat przebiegu zapytania o alarmy.

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

Zmienna);

Parametr Opis

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

Zmienna Zmienna typu Discrete, w której zapisywana jest wartość pola podczas wykonywania funkcji.

Uwagi Pole to przeznaczone jest tylko do odczytu i dostarcza informacji na temat przebiegu zapytania o alarmy wysłanego przez obiekt wyświetlania alarmów rozproszonych o określonej nazwie.

Typ danych Discrete (tylko odczyt)Zakres wartości 0 = Błąd

1 = Odpytywanie wykonanePrzykład(y) Zamieszona poniżej instrukcja zwraca wartość statusu wykonania ostatniego

zapytania obiektu "AlmObj_1" i umieszcza ją w zmiennej dyskretnej AlmFlag:

GetPropertyD("AlmObj_1.Successful",AlmFlag);

Patrz również GetPropertyD()

Opis funkcji, pól i zmiennych systemowych

166 Rozdział 2

.SuppressRetain

.TagID

Pole umożliwia odczyt/zapis statusu wstrzymywania wyświetlania alarmów obiektu alarmów rozproszonych.

Kategoria alarmySposób użycia [ErrorNumber=]GetPropertyD(“NazwaObiektu.SuppressRetain”,

Zmienna”);

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

Parametr OpisNazwaObiektu Nazwa Obiektu Alarmu Rozproszonego

Przykładowo, AlmObj_1.Zmienna Zmienna typu Discrete, w której zapisywana jest

wartość pola podczas wykonywania funkcji.Typ danych Discrete (odczyt/zapis)Zakres wartości 0 = Wstrzymanie wyłączone (OFF)

1 = Wstrzymanie włączone (ON)Przykład(y) Zamieszczona poniżej instrukcja ustawia status wstrzymywania wyświetlania

alarmów dla obiektu “AlmObj_1” dla zmiennej typu Discrete o nazwie SupRtn:

SetPropertyD(“AlmObj_1.SuppressRetain”, SupRtn);

Patrz również GetPropertyD(), SetProperty()

Pole jest używane w połączeniu z polami .Pen1-.Pen8 zmiennych trendu historycznego do monitorowania i kontrolowania zmiennych, których przebiegi są rysowane przez pisaki na wykresie trendu historycznego.

Kategoria zmiennaSposób użycia Zmienna.TagID

Parametr Opis

Zmienna Dowolna zmienna typu Discrete, Integer lub Real, albo zmienna typu 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

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 167

.TimeDate

.TimeDateString

.TimeDateTime

Pole typu integer wykorzystywane do odczytania informacji o liczbie dni, które upłynęły od 1 stycznia 1970 roku do ostatniej aktualizacji wartości zmiennej. .

Kategoria zmiennaSposób użycia Zmienna.TimeDate

Parametr Opis

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

Typ danych Integer (tylko odczyt)Patrz również .TimeDateString, .TimeDay, .TimeDateTime, .TimeHour, .TimeMinute,

.TimeMsec, .TimeMonth, .TimeSecond, .TimeTime, .TimeTimeString,

.TimeYear

Zmienna tekstowa zawierająca datę w formacie określonym w rejestrze Windows.

Kategoria zmiennaSposób użycia Zmienna.TimeDateString

Parametr Opis

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

Typ danych Message (tylko odczyt)Patrz również .TimeDate, .TimeDay, .TimeDateTime, .TimeHour, .TimeMinute,

.TimeMsec, .TimeMonth, .TimeSecond, .TimeTime, .TimeTimeString,

.TimeYear

Pole typu real, wykorzystywane do odczytania szczegółowej informacji o liczbie dni, które upłynęły od 1 stycznia 1970 roku do ostatniej aktualizacji wartości zmiennej.

Kategoria zmiennaSposób użycia Zmienna.TimeDateTime

Parametr Opis

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

Typ danych Real (tylko odczyt)Patrz również .TimeDate, .TimeDateString, .TimeDay, .TimeHour, .TimeMinute,

.TimeMsec, .TimeMonth, .TimeSecond, .TimeTime, .TimeTimeString,

.TimeYear

Opis funkcji, pól i zmiennych systemowych

168 Rozdział 2

.TimeDay

.TimeHour

Pole typu całkowitego zawierające dzień, w którym wartość typu I/O została dostarczona przez program komunikacyjny, przy poprawnie funkcjonującym połączeniu.

Kategoria zmiennaSposób użycia Zmienna.TimeDay

Parametr Opis

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

Typ danych Integer (tylko odczyt)Zakres wartości Z przedziału 1 - 31.Patrz również .TimeDate, .TimeDateString, .TimeDateTime, .TimeHour, .TimeMinute,

.TimeMsec, .TimeMonth, .TimeSecond, .TimeTime, .TimeTimeString,

.TimeYear

Pole typu całkowitego, zawierające liczbę godzin, które upłynęły od momentu dostarczenia wartości typu I/O przez program komunikacyjny, przy poprawnie funkcjonującym połączeniu I/O.

Kategoria zmiennaSposób użycia Zmienna.TimeHour

Parametr Opis

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

Typ danych Integer (tylko odczyt)Zakres wartości Z przedziału 0 - 23.Patrz również .TimeDate, .TimeDateString, .TimeDay, .TimeDateTime, .TimeMinute,

.TimeMsec, .TimeMonth, .TimeSecond, .TimeTime, .TimeTimeString,

.TimeYear

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 169

.TimeMinute

.TimeMonth

Pole typu całkowitego zawierające minutę, w której wartość typu I/O została dostarczona przez program komunikacyjny, przy poprawnie funkcjonującym połączeniu.

Kategoria zmiennaSposób użycia Zmienna.TimeMinute

Parametr Opis

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

Typ danych Integer (tylko odczyt)Zakres wartości Z przedziału 0 - 59.Patrz również .TimeDate, .TimeDateString, .TimeDay, .TimeDateTime, .TimeHour,

.TimeMsec, .TimeMonth, .TimeSecond, .TimeTime, .TimeTimeString,

.TimeYear

Pole typu całkowitego zawierające miesiąc, w którym wartość typu I/O została dostarczona przez program komunikacyjny, przy poprawnie funkcjonującym połączeniu.

Kategoria zmiennaSposób użycia Zmienna.TimeMonth

Parametr Opis

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

Typ danych Integer (tylko odczyt)Zakres wartości Z przedziału 1 - 12.Patrz również .TimeDate, .TimeDateString, .TimeDay, .TimeDateTime, .TimeHour,

.TimeMinute, .TimeMsec, .TimeSecond, .TimeTime, .TimeTimeString,

.TimeYear

Opis funkcji, pól i zmiennych systemowych

170 Rozdział 2

.TimeMsec

.TimeSecond

Pole typu całkowitego zawierające liczbę milisekund w momencie, gdy wartość typu I/O została dostarczona przez program komunikacyjny, przy poprawnie funkcjonującym połączeniu.

Kategoria zmiennaSposób użycia Zmienna.TimeMsec

Parametr Opis

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

Typ danych Integer (tylko odczyt)Zakres wartości Z przedziału 0 - 999.Patrz również .TimeDate, .TimeDateString, .TimeDay, .TimeDateTime, .TimeHour,

.TimeMinute, .TimeMonth, .TimeSecond, .TimeTime, .TimeTimeString,

.TimeYear

Pole typu całkowitego zawierające liczbę sekund w momencie, gdy wartość typu I/O została dostarczona przez program komunikacyjny, przy poprawnie funkcjonującym połączeniu.

Kategoria zmiennaSposób użycia Zmienna.TimeSecond

Parametr Opis

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

Typ danych Integer (tylko odczyt)Zakres wartości Z przedziału 0 - 59.Patrz również .TimeDate, .TimeDateString, .TimeDay, .TimeDateTime, .TimeHour,

.TimeMinute, .TimeMsec, .TimeMonth, .TimeTime, .TimeTimeString,

.TimeYear

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 171

.TimeTime

.TimeTimeString

Pole typu całkowitego zawierające liczbę milisekund (od północy) w momencie, gdy wartość typu I/O została dostarczona przez program komunikacyjny, przy poprawnie funkcjonującym połączeniu.

Kategoria zmiennaSposób użycia Zmienna.TimeTime

Parametr Opis

Zmienna Dowolna zmienna typu Discrete, Integer lub Real, albo zmienna typu Indirect Message.

Typ danych Integer (tylko odczyt)Zakres wartości Z przedziału 0 - 86399999.Patrz również .TimeDate, .TimeDateString, .TimeDay, .TimeDateTime, .TimeHour,

.TimeMinute, .TimeMsec, .TimeMonth, .TimeSecond, .TimeTimeString,

.TimeYear

Pole typu tekstowego zawierające godzinę i datę dostarczania przez program komunikacyjny wartości zmiennej typu I/O, przy poprawnie funkcjonującym połączeniu.

Kategoria ZmiennaSposób użycia Zmienna.TimeTimeString

Parametr Opis

Zmienna Dowolna zmienna typu Discrete, Integer lub Real, albo zmienna typu Indirect Message.

Typ danych Message (tylko odczyt)Patrz również .TimeDate, .TimeDateString, .TimeDay, .TimeDateTime, .TimeHour,

.TimeMinute, .TimeMsec, .TimeMonth, .TimeSecond, .TimeTime,

.TimeYear

Opis funkcji, pól i zmiennych systemowych

172 Rozdział 2

.TimeYear

.TopIndex

Pole typu całkowitego zawierające rok zapisany w postaci czterech cyfr, w którym wartość zmiennej typu I/O została dostarczona przez program komunikacyjny, przy poprawnie funkcjonującym połączeniu.

Kategoria zmiennaSposób użycia Tagname.TimeYear

Parametr Opis

Zmienna Dowolna zmienna typu Discrete, Integer lub Real, albo zmienna typu Indirect Message.

Typ danych Integer (tylko odczyt)Zakres wartości Dowolny rok w formacie ####. Przykładowo 1998.Patrz również .TimeDate, .TimeDateString, .TimeDay, .TimeDateTime, .TimeHour,

.TimeMinute, .TimeMsec, .TimeMonth, .TimeSecond, .TimeTime,

.TimeTimeString

Pole to zawiera odpowiedni indeks (zmienną lub liczbę całkowitą) pierwszego od góry elementu w polu listy.

Kategoria obiekty sterujące WindowsSposób użycia [ErrorNumber=]GetPropertyI("NazwaObiektu.TopIndex",

Zmienna);[ErrorNumber=]SetPropertyI("NazwaObiektu.TopIndex",Wartość);

Parametr Opis

NazwaObiektu Nazwa wizarda Na przykład ListBox_1.Zmienna Zmienna typu Integer, przechowująca wartość

właściwości w momencie realizacji funkcji.Wartość Liczba definiująca pierwszy od góry element

w polu listy.Uwagi Pole to jest dostępne tylko w czasie pracy aplikacji.Typ danych Integer (odczyt/zapis)Zastosowanie Pola listy. Przykład(y) Zamieszczona poniżej instrukcja ustawia wartość pola .TopIndex obiektu

o nazwie "ListBox_1" na wartość 14:

SetPropertyI( "ListBox_1.TopIndex",14 );

Patrz również GetPropertyI(), SetPropertyI(), .ListIndex, .NewIndex

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 173

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

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

Zmienna);

Parametr Opis

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

Zmienna Zmienna typu Integer, przechowująca wartość właściwości w momencie realizacji funkcji.

Uwagi Pole to przeznaczone jest tylko do odczytu i zawiera całkowitą liczbę stron z alarmami w obiekcie wyświetlania alarmów rozproszonych o podanej nazwie.

Typ danych Integer (tylko odczyt)Przykład(y) Pole to ustawia wartość zmiennej typu Integer AlmTotalPage na sumaryczną

liczbę stron w obiekcie alarmu rozproszonego "AlmObj_1".

GetPropertyI("AlmObj_1.TotalPages",AlmTotalPages);

Patrz również GetPropertyI(), .NextPage, .PrevPage, .PageNum

Opis funkcji, pól i zmiennych systemowych

174 Rozdział 2

.UnAckPole to umożliwia potwierdzanie alarmów lokalnych.

Kategoria alarmySposób użycia Zmienna.UnAck=0

Parametr Opis

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

Uwagi Przypisanie temu polu zmiennej wartości 0 powoduje zatwierdzenie wszystkich aktywnych alarmów, związanych z daną zmienną lub grupą. Jeśli podana zmienna jest grupą alarmową, wszystkie niepotwierdzone alarmy związane ze zmiennymi wchodzącymi w skład określonej grupy zostają potwierdzone. W przypadku, gdy zmienna jest innego typu, zatwierdzony zostanie tylko niezatwierdzony alarm związany ze zmienną. Ustawienie tego pola na wartość inną niż 0 nie ma żadnego znaczenia, a wynik takiej operacji jest nieokreślony.

Typ danych Discrete (tylko do odczytu/zerowania)Zakres wartości 0Przykład(y) Podane poniżej wyrażenie powoduje zatwierdzenie dowolnego alarmu

związanego ze zmienną o nazwie Tag1.

Tag1.Unack=0;

Podane poniżej polecenie służy do zatwierdzenia wszystkich niezatwierdzonych alarmów w obrębie grupy alarmowej o nazwie PumpStation.

PumpStation.UnAck = 0;

Uwaga Polem o wartości przeciwnej do .Ack jest pole .UnAck. Kiedy alarm zostanie zatwierdzony, pole .Ack ustawiane jest na wartość 1.

Patrz również .Ack, Ack(), .Alarm, .AlarmAckModel

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 175

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

Kategoria dane historyczneSposób użycia Zmienna.UpdateCount

Parametr Opis

Zmienna Dowolna zmienna typu Hist Trend.Uwagi Pole to jest powiązane bezpośrednio z systemem odczytu danych

historycznych. Każdorazowo, gdy program InTouch zażąda danych dla trendu historycznego związanego z określoną zmienną typu Hist Trend, żądane dane zostają odczytane z dysku przez system odczytu danych historycznych. Po zakończeniu procesu odczytu danych, wartość tego pola jest zwiększana o 1. Pole .UpdateCount jest używane w wielu wywołaniach funkcji związanych z trendami historycznymi do rozpoczęcia uaktualniania wyników przeprowadzonych wcześniej obliczeń.

Typ danych Integer (tylko odczyt)Zakres wartości Dowolna dodatnia liczba całkowita.Przykład(y) W zamieszczonym poniżej skrypcie funkcja HtGetValueAtScooter() została

wykorzystana do odczytu wartości wskazywanej przez pisak Pen1 w miejscu, w którym znajduje się prawy suwak. Ponieważ zmiana jednego z parametrów funkcji powoduje ponowne wyznaczenie wartości funkcji, każdorazowo po aktualizacji danych (po odczycie tych danych z dysku) i zwiększeniu wartości pola .UpdateCount o 1, wartość poniższej funkcji jest wyznaczana na nowo.

MyRealTag=HTGetValueAtScooter(MyHistTrendTag,MyHistTrendTag.UpdateCount,2,MyHistTrendTag.ScooterPosRight,1,"PenValue");

Patrz również .UpdateInProgress, .UpdateTrend

Opis funkcji, pól i zmiennych systemowych

176 Rozdział 2

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

Kategoria dane historyczneSposób użycia Zmienna.UpdateInProgress

Parametr Opis

Zmienna Dowolna zmienna typu Hist Trend.Uwagi Pole to jest powiązane bezpośrednio z systemem odczytu danych

historycznych. Każdorazowo, gdy program InTouch zażąda danych dla trendu historycznego związanego z określoną zmienną typu Hist Trend, żądane dane zostają odczytane z dysku przez system odczytu danych historycznych. W czasie procesu odczytywania danych z dysku, wartość tego pola zostaje ustawiona na 1. Po zakończeniu odczytu danych, pole .UpdateInProgress jest ustawiane na 0. Pole .UpdateInProgress jest używane w wielu funkcjach związanych z danymi trendów historycznych.

Większość trendów historycznych wyświetlanych na ekranie jest wyposażona w mechanizm używany przez operatora do przewijania wyświetlanych danych. Podczas przeglądania trendu przez operatora system odczytu danych historycznych sprawdza, czy dane wyświetlane na ekranie są aktualne. Jeśli operator przewinie trend na fragment, który nie jest wyświetlany na ekranie w danej chwili, ani nie znajduje się w pamięci, system odczytu danych historycznych pobiera żądane dane z dysku. Ponieważ proces ten wymaga pewnego czasu, system umożliwia projektantowi obiektu trendu historycznego poinformowanie operatora o trwającym odczycie danych z dysku. Bez tego typu informacji operator może nie być świadomy tego, że system wykonuje wydane polecenie.

Typ danych Discrete (tylko odczyt)Zakres wartości 0 = Operacja aktualizacji nie jest w tym momencie realizowana.

1 = Operacja aktualizacji jest w trakcie realizacji.Przykład(y) Instrukcja zamieszczona poniżej jest powszechnie używana jako wyrażenie

w połączeniu animacyjnym dla obiektu tekstowego, lub na przycisku przewijania wykresu trendu historycznego. W momencie, gdy moduł prezentacji danych historycznych odczytuje wymagane dane, wyrażenie to ma wartość 1. W momencie, gdy trend historyczny zostanie zaktualizowany, wyrażeniu zostanie przypisana wartość 0.

MyHistTrendTag.UpdateInProgress

Patrz również .UpdateCount, .UpdateTrend

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 177

.UpdateTrendPole to umożliwia aktualizację wykresu trendu historycznego.

Kategoria dane historyczneSposób użycia Zmienna.UpdateTrend

Parametr Opis

Zmienna Dowolna zmienna typu Hist Trend.Uwagi Trendy historyczne nie są uaktualniane automatycznie. Aby uaktualnić

i wyświetlić bieżące wartości określonych zmiennych, musi zostać zmieniony punkt początkowy wykresu lub długość wykresu. 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 wykresu trendu. Przypisanie omawianemu polu wartości różnej od 1 nie ma żadnego znaczenia, a wynik takiej operacji jest nieokreślony.

Ustawienie tego pola na wartość inną niż 1 nie ma żadnego znaczenia, a wynik takiej operacji jest nieokreślony.

Typ danych Discrete (tylko zapis)Zakres wartości 1Przykład(y) Instrukcja zamieszczona poniżej powoduje uaktualnienie trendu

historycznego związanego ze zmienną typu HistTrendTag o nazwie MyHistTrendTag.

MyHistTrendTag.UpdateTrend=1;

Opis funkcji, pól i zmiennych systemowych

178 Rozdział 2

.ValuePole to zawiera wartość danej zmiennej. Jest to również domyślne pole dla każdej zmiennej programu InTouch. Jeśli nie jest użyte inne pole, zakłada się, że użytkownik posługuje się tym polem.

Kategoria zmiennaSposób użycia Zmienna.Value

Parametr OpisZmienna Dowolna zmienna za wyjątkiem zmiennych typu

HistTrend.Uwagi Jest to domyślne pole dla każdej zmiennej programu InTouch. Jeśli nie jest

użyte inne pole, zakłada się, że użytkownik posługuje się tym polem. Rzadko występuje konieczność korzystania z tego pola. Jednakże, w niektórych przypadkach pole to umożliwia jaśniejszy zapis wyników obliczeń lub parametrów.

Typ danych Zależy od typu zmiennej (odczyt/ zapis).Przykład(y) Instrukcja zamieszczona poniżej ustawia wartość zmiennej typu Memory

Integer o nazwie MyTag na wartość 100:

MyTag.Value=100;

Wyrażenie to jest funkcjonalnie identyczne z:

MyTag=100;

Opis funkcji, pól i zmiennych systemowych

Pola i właściwości 179

.ValueDomyślna właściwość dla wszystkich wizardów obiektów sterujących Windows. Zmiany tej właściwości zsynchronizowane są ze zmiennymi InTouch oraz z wizardami obiektów sterujących Windows.

Kategoria obiekty sterujące WindowsSposób użycia [ErrorNumber=]GetPropertyM(NazwaObiektu[.Value],Zmienna);

[ErrorNumber=]SetPropertyM(NazwaObiektu[.Value], Wartość);[ErrorNumber=]GetPropertyI(NazwaObiektu[.Value],Zmienna);[ErrorNumber=]SetPropertyI(NazwaObiektu[.Value],Wartość);[ErrorNumber=]GetPropertyD(NazwaObiektu[.Value],Zmienna);[ErrorNumber=]SetPropertyD("NazwaObiektu[.Value]",Wartość);

Uwaga Wartość początkowa zmiennej powiązanej z polami listy lub listą rozwijalną nie może być wykorzystana do inicjalizowania wartości tych pól listy lub listy rozwijalnej.Parametr Opis

NazwaObiektu Nazwa obiektu sterującego okna, np. ChkBox_4.Zmienna Zdefiniowana zmienna zawierająca liczbę

elementów na liście.[.Value] Właściwość ta jest opcjonalna. Jeżeli jej wartość nie

zostanie określona, funkcja będzie domyślnie przyjmować, że wykorzystywane jest pole .Value.

Wartość Aktualna wartość do zapisania lub zdefiniowana zmienna (takiego samego typu jak właściwość do zapisania), przechowująca wartość właściwości do zapisania w momencie wykonywania funkcji.

Uwagi Pole to umożliwia zapis i odczyt zarówno w czasie pracy aplikacji, jak i w czasie jej edycji. Jeśli pole .Value jest wykorzystywane w związku z polem listy (List box) lub listą rozwijalną (Combo box), umożliwia tylko odczyt. Jeśli pole .Value jest wykorzystywane w połączeniu z polem wyboru, polem wyboru wykluczającego lub polem tekstowym, można zarówno odczytywać jak również zmieniać jego wartość. Wartość wprowadzona w trakcie edycji aplikacji, przyjmowana jest jako wartość domyślna w trakcie pracy aplikacji.

Typ danych Message (zapis/ odczyt) dla pól tekstowych, pól listy i list rozwijalnych.Integer (zapis/ odczyt) dla pól wyboru wykluczającego.Discrete (zapis/ odczyt) dla pól wyboru.

Zastosowanie Pola tekstowe, pola list, listy rozwijane, pola wyboru i pola wyboru wykluczającego.

Przykład(y) Zamieszczona poniżej instrukcja ustawia wartość pola .Value obiektu pole wyboru wykluczającego o nazwie "RadioButton_1" na wartość 4.

SetPropertyI( "RadioButton_1.Value",4 );

Patrz również GetPropertyM(), SetPropertyM(), GetPropertyI(), SetPropertyI(), GetPropertyD(), SetPropertyD()

Opis funkcji, pól i zmiennych systemowych

180 Rozdział 2

.VisibleWłaściwość ta określa, czy obiekt jest widoczny na oknie.

Kategoria obiekty sterujące WindowsSposób użycia [ErrorNumber=]GetPropertyD(NazwaObiektu.Visible,Zmienna);

[ErrorNumber=]SetPropertyD(NazwaObiektu.Visible,Wartość);

Parametr Opis

NazwaObiektu Nazwa wizarda Na przykład ListBox_1.Zmienna Zdefiniowana zmienna programu InTouch (takiego

samego typu jak typ zwracany), przechowująca wartość właściwości w momencie realizacji funkcji.

Wartość Wartość dyskretna, lub zmienna typu Discrete przechowująca wartość do zapisu w momencie wykonywania funkcji.

Uwagi Pole to przeznaczone jest do zapisu/ odczytu zarówno w trakcie edycji aplikacji, jak również w momencie wykonywania aplikacji.

Typ danych Discrete (odczyt/zapis)Zakres wartości 0 = Obiekt jest niewidoczny

1 = Obiekt jest widocznyZastosowanie Pola tekstowe, pola list, listy rozwijane, pola wyboru i pola wyboru

wykluczającego. Przykład(y) Instrukcja zamieszczona poniżej ukrywa pole tekstowe o nazwie

"TextBox_1".

SetPropertyD( "TextBox_1.Visible",0 );

Patrz również GetPropertyD(), SetPropertyD()

Opis funkcji, pól i zmiennych systemowych

Funkcje skryptowe 181

R O Z D Z I A Ł 3

Funkcje skryptowe

Jednym z najbardziej istotnych elementów funkcjonalności aplikacji InTouch jest możliwość korzystania ze skryptów QuickScript. Skrypty dają możliwość wykonywania poleceń oraz operacji logicznych, w zależności od spełnienia określonych kryteriów. Przykładowo, wciśnięcie klawisza może powodować otwarcie okna, zmianę wartości zmiennej, itd.

Funkcje QuickFunction są skryptami InTouch QuickScript wywoływanymi z innych skryptów QuickScript i wyrażeń połączeń animacyjnych. Kod źródłowy takiej funkcji zapisany jest w jednym miejscu, tak więc jej edycja umożliwia wprowadzenie zmian we wszystkich aplikacjach, w których funkcja taka jest wywoływana.

Uwaga Aby wymusić uaktualnienie połączenia animacyjnego, jako parametr funkcji QuickFunction należy użyć zmiennej pełniącej rolę wyzwalacza. Przykładowo, użycie jako parametru funkcji QuickFunction zmiennej $Second spowoduje, że wyrażenie przypisane do połączenia animacyjnego będzie sprawdzane każdorazowo przy zmianie wartości zmiennej $Second, dzięki czemu funkcja będzie wywoływana co 1 sekundę.

Skrypty QuickScript umożliwiają utworzenie szeregu zautomatyzowanych funkcji systemowych, dostosowanych do potrzeb użytkownika.

Opis pól, funkcji i zmiennych systemowych

182 Rozdział 3

Abs()

Ack()

Zwraca wartość bezwzględną danej liczby.Kategoria funkcje matematyczneSkładnia Result=Abs(Number);

Parametr OpisNumber Dowolna liczba, zmienna rzeczywista (Real) lub

całkowita (Integer) programu InTouch.Uwagi Obliczana jest wartość absolutna z Number i zwracana do zmiennej Result.Przykład(y) Abs(14) daje w wyniku 14

Abs(-7.5) daje w wyniku 7.5

Funkcja ta służy do zatwierdzania lokalnych alarmów programu InTouch.Kategoria alarmySkładnia Ack Tagname;

Parametr OpisTagname Dowolna zmienna, grupa alarmowa (Alarm

Group) lub zmienna grupowa (Group Var).Uwagi Ta funkcja może zostać wykonana dla zmiennej lub grupy alarmowej.Przykład(y) Poniższe instrukcje można zastosować w powiązaniu z przyciskiem, w celu

zatwierdzenia dowolnego, niepotwierdzonego alarmu:Ack $System; (zatwierdzenie wszystkich alarmów)

Ack Tagname;

Ack GroupName;

Patrz również almAckAll(), almAckGroup() almAckTag(), almAckDisplay(), almAckRecent(), almAckPriority(). almAckSelect(), almAckSelectedGroup(), almAckSelectedPriority(), almAckSelectedTag()

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 183

ActivateApp()Funkcja ta służy do uaktywnienia innej aktualnie uruchomionej aplikacji Windows.

Kategoria systemSkładnia ActivateApp TaskName;

Parametr OpisTaskName Nazwa aplikacji, która ma zostać uaktywniona za

pomocą funkcji.Uwagi TaskName jest ciągiem znaków (włącznie ze spacjami), który jest

wyświetlany na Pasku Zadań lub w Menedżerze Zadań (uruchamianym w systemie Windows poprzez kliknięcie prawym klawiszem myszy na Pasku Zadań i wybraniu Menedżera Zadań, lub przez wciśnięcie kombinacji klawiszy Ctrl+Alt+Delete).

Przykład(y) Poniżej podano przykład sprawdzenia, czy linia poleceń jest aktywna. Jeżeli jest aktywna, jest przenoszona na pierwszy plan i aktywowana. W przeciwnym wypadku linia poleceń jest uruchamiana wraz z automatycznym wywoływaniem programu systemu DOS edit.com. IF InfoAppActive( InfoAppTitle("cmd")) == 1 THENActivateApp InfoAppTitle("cmd");

ELSEStartApp "cmd /c edit";

ENDIF;

Patrz również StartApp(), InfoAppTitle()

Opis pól, funkcji i zmiennych systemowych

184 Rozdział 3

AddPermission()Przypisuje do grupy użytkowników systemu Windows lub domeny określony poziom dostępu programu InTouch. Jeżeli po wywołaniu funkcji AddPermission, do aplikacji InTouch loguje się użytkownik należący do tej grupy, zostanie mu przydzielony ten poziom dostępu.

Kategoria bezpieczeństwoSkładnia DiscreteTag=AddPermission( "Domain", "Group",

AccessLevel);

Parametr OpisDomain Nazwa domeny lub lokalnego komputera gdzie

znajduje się grupa.Group Grupa użytkowników Windows.AccessLevel Poziom dostępu programu InTouch, który ma

zostać przypisany do podanej grupy.Uwagi Właściwa tylko dla systemu bezpieczeństwa opartego na systemie

operacyjnym. Po wywołaniu funkcji, sprawdzana jest obecność określonej grupy w domenie. Jeżeli wywołanie funkcji powiedzie się, zwracana jest wartość TRUE, a do grupy użytkowników przypisywany jest wskazany poziom dostępu. W innym wypadku, np. jeżeli w argumencie podana jest nieprawidłowa wartość, zwracana jest wartość FALSE.Funkcję tą zwykle wywołuje się w czasie uruchomienia aplikacji. Jej wywołanie nie ma wpływu na aktualnie zalogowanych użytkowników. Tylko użytkownikom, którzy zalogowali się po wywołaniu funkcji AddPermission, przydzielane są poziomy dostępu związane z grupą, do której należą.

Przykład(y) DiscreteTag=AddPermission( "wonderware_hq", "InTouchAdmins", 9000);DiscreteTag=AddPermission( "ravih01", "InTouchUsers", 5000);

Patrz również PostLogonDialog(), InvisibleVerifyCredentials(), IsAssignedRole(), AttemptInvisibleLogon(), QueryGroupMembership().

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 185

almAckAll()

almAckDisplay()

Funkcja ta służy do potwierdzenia wszystkich alarmów z aktualnej kolejki alarmów, włącznie z tymi, które nie są aktualnie wyświetlane w oknie obiektu alarmowego.

Kategoria alarmySkładnia [Result=]almAckAll(ObjectName,Comment);

Parametr OpisObjectName Nazwa obiektu alarmowego. Przykładowo,

AlmObj_1.Comment Komentarz do zatwierdzania alarmu.

Uwagi Kody błędów dla tych funkcji można znaleźć w rozdziale Appendix A, "Usuwanie problemów przy korzystaniu z funkcji skryptowych.".

Przykład(y) MessageTag = “Acknowledge All by” + $Operator;almAckAll(“AlmObj_1”, MessageTag);

Patrz również Ack(), almAckGroup(), almAckTag(), almAckDisplay(), almAckRecent(), almAckSelect(), almAckSelectedGroup(), almAckSelectedPriority(), almAckSelectedTag()

Zatwierdzenie tylko tych alarmów, które aktualnie są widoczne na ekranie.Kategoria alarmySkładnia [Result=]almAckDisplay(ObjectName,Comment);

Parametr OpisObjectName Nazwa obiektu alarmowego. Przykładowo,

AlmObj_1.Comment Komentarz do zatwierdzania alarmu.

Uwagi Kody błędów dla tych funkcji można znaleźć w rozdziale Appendix A, "Usuwanie problemów przy korzystaniu z funkcji skryptowych.".

Przykład(y) almAckDisplay(“AlmObj_1”, “Display Acknowledgement”);

Patrz również Ack(), almAckAll(), almAckGroup(), almAckTag(), almAckRecent(), almAckSelect(), almAckSelectedGroup(), almAckSelectedPriority(), almAckSelectedTag()

Opis pól, funkcji i zmiennych systemowych

186 Rozdział 3

almAckGroup()Funkcja ta służy do zatwierdzania wszystkich alarmów zawartych w instancji obiektu alarmów rozproszonych o określonej nazwie jako wynik ostatniego zapytania i gdzie powstały alarm zawiera tą samą nazwę grupy alarmu i dostawcy.

Kategoria alarmySkładnia [Result=]almAckGroup(ObjectName, ApplicationName,

GroupName, Comment);

Parametr OpisObjectName Nazwa obiektu alarmowego. Przykładowo,

AlmObj_1.ApplicationName Nazwa aplikacji wraz ze ścieżką dostępu,

przykładowo \\node1\IntouchGroupName Nazwa grupy alarmowej, przykładowo $SystemComment Komentarz do zatwierdzania alarmu.

Uwagi Kody błędów dla tych funkcji można znaleźć w rozdziale Appendix A, "Usuwanie problemów przy korzystaniu z funkcji skryptowych.".

Przykład(y) MessageTag = “Acknowledge group, Turbines, by” + $Operator; almAckGroup(“AlmObj_1”, “\Intouch”, “Turbine”, MessageTag);

Patrz również Ack(), almAckAll(), almAckDisplay(), almAckTag(), almAckRecent(), almAckPriority(), almAckSelect(), almAckSelectedGroup(), almAckSelectedPriority(), almAckSelectedTag()

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 187

almAckPriority()

almAckRecent()

Funkcja ta służy do zatwierdzania wszystkich alarmów zawartych w instancji obiektu alarmów rozproszonych o określonej nazwie jako wynik wyświetlania ostatniego zapytania i gdzie powstałe alarmy są alarmami z określonego zakresu priorytetów, mających tą samą nazwę dostawcy i grupy.

Kategoria alarmySkładnia [Result=]almAckPriority(ObjectName, ApplicationName,

GroupName, FromPri, ToPri, Comment);

Parametr OpisObjectName Nazwa obiektu alarmowego. Przykładowo,

AlmObj_1.ApplicationName Nazwa aplikacji wraz ze ścieżką dostępu,

przykładowo \\node1\IntouchGroupName Nazwa grupy alarmowej, przykładowo $SystemFromPri Dolna wartość priorytetu alarmów. Przykładowo

100.ToPri Górna wartość priorytetu alarmów. Przykładowo

900.Comment Komentarz do zatwierdzania alarmu.

Uwagi Kody błędów dla tych funkcji można znaleźć w rozdziale Appendix A, "Usuwanie problemów przy korzystaniu z funkcji skryptowych.".

Przykład(y) almAckPriority(“AlmObj_1”,“\\node1\Intouch”, “Turbines”, 10, 100, “almAckPriorityComment”);

Patrz również Ack(), almAckAll(), almAckGroup(), almAckTag(), almAckDisplay(), almAckSelect(), almAckSelectedGroup(), almAckSelectedPriority(), almAckSelectedTag()

Funkcja ta służy do zatwierdzania najnowszych alarmów.Kategoria alarmySkładnia [Result=]almAckRecent(ObjectName,Comment);

Parametr OpisObjectName Nazwa obiektu alarmowego. Przykładowo,

AlmObj_1.Comment Komentarz do zatwierdzania alarmu.

Uwagi Kody błędów dla tych funkcji można znaleźć w rozdziale Appendix A, "Usuwanie problemów przy korzystaniu z funkcji skryptowych.".

Przykład(y) almAckRecent(“AlmObj_1”, $DateString);

Patrz również Ack(), almAckAll(), almAckGroup(), almAckTag(), almAckDisplay(), almAckSelect(), almAckSelectedGroup(), almAckSelectedPriority(), almAckSelectedTag()

Opis pól, funkcji i zmiennych systemowych

188 Rozdział 3

almAckSelect()

almAckSelectedGroup()

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

Kategoria alarmySkładnia [Result=]almAckSelect(ObjectName,Comment);

Parametr OpisObjectName Nazwa obiektu alarmowego. Przykładowo,

AlmObj_1.Comment Komentarz do zatwierdzania alarmu.

Uwagi Kody błędów dla tych funkcji można znaleźć w rozdziale Appendix A, "Usuwanie problemów przy korzystaniu z funkcji skryptowych.".

Przykład(y) IF ($Hour > 0 and $Hour < 8) THENAckTag = “NightShift”;

ELSEAckTag = “Day Shift”;

ENDIF;

almAckSelect (“AlmObj_1”,AckTag);

Patrz również Ack(), almAckAll(), almAckGroup(), almAckTag(), almAckDisplay(), almAckRecent(), almAckSelectedGroup(), almAckSelectedPriority(), almAckSelectedTag()

Funkcja ta służy do zatwierdzenia wszystkich alarmów z tymi samymi nazwami dostawcy i grupy, mających tą samą nazwę grupy jak jeden lub więcej alarmów wybranych w instancji obiektu alarmów rozproszonych o określonej nazwie.

Kategoria alarmySkładnia [Result=]almAckSelectedGroup(ObjectName,Comment);

Parametr OpisObjectName Nazwa obiektu alarmowego. Przykładowo,

AlmObj_1.Comment Komentarz do zatwierdzania alarmu.

UwagiPrzykład(y) MessageTag = “Acknowledge selected groups by” +

$Operator;

almAckSelectedGroup (“AlmObj_1”, MessageTag);

Patrz również Ack(), almAckAll(), almAckGroup(), almAckTag(), almAckDisplay(), almAckRecent(), almAckSelect(), almAckSelectedPriority(), almAckSelectedTag()

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 189

almAckSelectedPriority()

almAckSelectedTag()

Funkcja ta służy do zatwierdzenia wszystkich alarmów z tymi samymi nazwami dostawcy i grupy, mających tą samą wartość priorytetu jak jeden lub więcej alarmów wybranych w instancji obiektu alarmów rozproszonych o określonej nazwie.

Kategoria alarmySkładnia [Result=]almAckSelectedPriority(ObjectName, Comment);

Parametr OpisObjectName Nazwa obiektu alarmowego. Przykładowo,

AlmObj_1.Comment Komentarz do zatwierdzania alarmu.

Uwagi Wartości priorytetów są obliczane na podstawie danych pobranych z wybranych rekordów alarmów. Pod uwagę brane są minimalne (Min) i maksymalne (Max) wartości priorytetów.

Przykład(y) MessageTag = “Acknowledge selected priorities by” + $Operator;

almAckSelectedPriority (“AlmObj_1”, MessageTag);

Patrz również Ack(), almAckAll(), almAckGroup(), almAckTag(), almAckDisplay(), almAckRecent(), almAckSelect(), almAckSelectedGroup(), almAckSelectedTag()

Funkcja ta służy do zatwierdzania wszystkich alarmów przypisanych do tej samej zmiennej, o tej samej nazwie dostawcy i grupy, mających tą samą wartość priorytetu jak jeden lub więcej alarmów wybranych w instancji obiektu alarmów rozproszonych o określonej nazwie.

Kategoria alarmySkładnia [Result=]almAckSelectedTag(ObjectName,Comment);

Parametr OpisObjectName Nazwa obiektu alarmowego. Przykładowo,

AlmObj_1.Comment Komentarz do zatwierdzania alarmu.

UwagiPrzykład(y) MessageTag = “Acknowledge selected tagnames by” +

$Operator;

almAckSelectedTag (“AlmObj_1”, MessageTag);

Patrz również Ack(), almAckAll(), almAckGroup(), almAckTag(), almAckDisplay(), almAckRecent(), almAckSelect(), almAckSelectedGroup(), almAckSelectedPriority()

Opis pól, funkcji i zmiennych systemowych

190 Rozdział 3

almAckTag()

almDefQuery()

Funkcja ta służy do zatwierdzania wszystkich alarmów powstałych w instancji obiektu alarmów rozproszonych o określonej nazwie jako rezultat wyświetlania ostatniego zapytania i zmiennej.

Kategoria alarmySkładnia [Result=]almAckTag(ObjectName, ApplicationName,

GroupName, Tagname, FromPri, ToPri, Comment);

Parametr OpisObjectName Nazwa obiektu alarmowego. Przykładowo,

AlmObj_1.ApplicationName Nazwa aplikacji wraz ze ścieżką dostępu.

Przykładowo, \\node1\Intouch.GroupName Nazwa grupy. Przykładowo może to być $System.Tagname Nazwa zmiennej alarmu.FromPri Dolna wartość priorytetu alarmów. Przykładowo 100.ToPri Górna wartość priorytetu alarmów. Przykładowo

900.Comment Komentarz do zatwierdzania alarmu.

UwagiPrzykład(y) almAckTag(“AlmObj_1”, “\\node1\Intouch”, “Turbines”,

“Valve1”, 10, 100, “Value”, “LoLo”, “almAckTagComment”);

Patrz również Ack(), almAckAll(), almAckGroup(), almAckDisplay(), almAckRecent(), almAckSelect(), almAckSelectedGroup(), almAckSelectedPriority(), Almackselectedtag()

Funkcja ta powoduje wykonanie zapytania w celu zaktualizowania instancji obiektu alarmów rozproszonych o określonej nazwie przy użyciu domyślnych parametrów.

Kategoria alarmySkładnia [Result=]almDefQuery(ObjectName);

Parametr OpisObjectName Nazwa obiektu alarmowego. Przykładowo,

AlmObj_1.Uwagi Domyślne parametry zapytania o alarmy są podawane w czasie edycji

aplikacji.

Kody błędów dla tych funkcji można znaleźć w rozdziale Appendix A, "Usuwanie problemów przy korzystaniu z funkcji skryptowych.".

Przykład(y) almDefQuery(“AlmObj_1”);

Patrz również almQuery(), almSetQueryByName()

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 191

almMoveWindow()Funkcja ta powoduje przewinięcie okna instancji obiektu alarmów rozproszonych o określonej nazwie.

Kategoria alarmySkładnia [Result=]almMoveWindow(ObjectName,Option,Repeat);

Parametr OpisObjectName Nazwa obiektu alarmowego. Przykładowo,

AlmObj_1.Option Rodzaj czynności

Typ OpisLineDn O jedną linię w dół.LineUp O jedną linię w górę.PageDn O jedną stronę w dół.PageUp O jedną stronę w górę.Top Do początku listy.Bottom Do końca listy.PageRt O jedną stronę w prawo.PageLf O jedną stronę w lewo.Right Do końca listy w prawą stronę.Left Do końca listy w lewą stronę.

Repeat Liczba określająca, ile razy operacja ma zostać powtórzona.

Uwagi Kody błędów dla tych funkcji można znaleźć w rozdziale Appendix A, "Usuwanie problemów przy korzystaniu z funkcji skryptowych.".

Przykład(y) almMoveWindow(“AlmObj_1”, ”Bottom”, 0);

almMoveWindow(“AlmObj_1”, ”LineDn”, 3);

almMoveWindow(“AlmObj_1”, ”PageUp”, 0);

Opis pól, funkcji i zmiennych systemowych

192 Rozdział 3

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

Kategoria alarmySkładnia [Result=]almDefQuery(ObjectName,AlarmList,FromPri,

ToPri,State,Type);

Parametr OpisObjectName Nazwa obiektu alarmowego. Przykładowo,

AlmObj_1.AlarmList Definiuje listy alarmowe np. "\intouch!$System"

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

Type Określa typ zapytania, przykładowo, "Hist" (Alarmy historyczne"), lub "Summ" (Alarmy bieżące).

Uwagi Kody błędów dla tych funkcji można znaleźć w rozdziale Appendix A, "Usuwanie problemów przy korzystaniu z funkcji skryptowych.".

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.\\NodeX\InTouch!GroupB

Gdzie GroupB oznacza grupę alarmową definiowaną na stacji X.Patrz również almDefQuery(), almSetQueryByName()

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 193

almSelectAll()

almSelectGroup()

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

Kategoria alarmySkładnia [Result=]almSelectAll(ObjectName);

Parametr OpisObjectName Nazwa obiektu alarmowego. Przykładowo,

AlmObj_1.Uwagi Kody błędów dla tych funkcji można znaleźć w rozdziale Appendix A,

"Usuwanie problemów przy korzystaniu z funkcji skryptowych.".Przykład(y) If $AccessLevel > 8000 THEN

almSelectAll(“AlmObj_1”);almAckSelect(“AlmObj_1”, “Ack Selected by a Manager”);

ENDIF;

Patrz również almSelectItem(), almSelectGroup(), almSelectPriority(), almSelectTag(), almUnSelectAll()

Zaznacza (podświetla) wszystkie alarmy zawarte w instancji obiektu alarmów rozproszonych o określonej nazwie, jako wynik wyświetlania ostatniego zapytania i gdzie powstały alarm zawiera tą samą nazwę grupy.

Kategoria alarmySkładnia [Result=]almSelectGroup(ObjectName, ApplicationName,

GroupName);

Parametr OpisObjectName Nazwa obiektu alarmowego. Przykładowo,

AlmObj_1.ApplicationName Nazwa aplikacji wraz ze ścieżką dostępu.

Przykładowo, \\node1\Intouch.GroupName Nazwa grupy. Przykładowo może to być $System.

Uwagi Kody błędów dla tych funkcji można znaleźć w rozdziale Appendix A, "Usuwanie problemów przy korzystaniu z funkcji skryptowych.".

Przykład(y) almSelectGroup(“AlmObj_1”, “\InTouch”, “Turbine”);

Patrz również almSelectAll(), almSelectItem(), almSelectPriority(), almSelectTag(), almUnSelectAll()

Opis pól, funkcji i zmiennych systemowych

194 Rozdział 3

almSelectionCount()

almSelectItem()

Zwraca liczbę zaznaczonych w obiekcie alarmów.Składnia [Result=]almSelectionCount(ObjectName);

Parametr OpisObjectName Nazwa obiektu alarmowego. Przykładowo,

AlmObj_1.Przykład(y) Tag1 = almSelectionCount(“AlmObj_1”);

Odwraca zaznaczenie podświetlonego elementu w obiekcie alarmowym.Kategoria alarmySkładnia [Result=]almSelectItem(ObjectName);

Parametr OpisObjectName Nazwa obiektu alarmowego. Przykładowo,

AlmObj_1.Uwagi Kody błędów dla tych funkcji można znaleźć w rozdziale Appendix A,

"Usuwanie problemów przy korzystaniu z funkcji skryptowych.".Przykład(y) almSelectItem(“AlmObj_1”);

Patrz również almSelectAll(), almSelectGroup(), almSelectPriority(), almSelectTag(), almUnSelectAll()

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 195

almSelectPriority()Funkcja ta zaznacza wszystkie alarmy zawarte w instancji obiektu alarmów rozproszonych o określonej nazwie, jako wynik wyświetlania ostatniego zapytania i gdzie powstałe alarmy są alarmami o priorytecie z podanego zakresu.

Kategoria alarmySkładnia [Result=]almSelectPriority (ObjectName,

ApplicationName, GroupName, FromPri, ToPri);

Parametr OpisObjectName Nazwa obiektu alarmowego. Przykładowo,

AlmObj_1.ApplicationName Nazwa aplikacji wraz ze ścieżką dostępu.

Przykładowo, \\node1\Intouch.GroupName Nazwa grupy. Przykładowo może to być $System.FromPri Dolna wartość priorytetu alarmów. Przykładowo,

100, lub zmienna typu integer.ToPri Górna wartość priorytetu alarmów. Przykładowo,

900, lub zmienna typu integer.Przykład(y) almSelectPriority(“AlmObj_1”, “\\node1\Intouch”,

“Turbines”, 10, 100);

Patrz również almSelectAll(), almSelectItem(), almSelectGroup(), almSelectTag(), almUnSelectAll()

Opis pól, funkcji i zmiennych systemowych

196 Rozdział 3

almSelectTag()

almSetQueryByName()

Funkcja ta zaznacza wszystkie alarmy zawarte w obiekcie alarmów rozproszonych o określonej nazwie jako wynik wyświetlania ostatniego zapytania i danej zmiennej.

Kategoria alarmySkładnia [Result=]almSelectTag (ObjectName, ApplicationName,

GroupName, Tagname, FromPri, ToPri);

Parametr OpisObjectName Nazwa obiektu alarmowego. Przykładowo,

AlmObj_1.ApplicationName Nazwa aplikacji wraz ze ścieżką dostępu.

Przykładowo, \\node1\Intouch.GroupName Nazwa grupy. Przykładowo może to być $System.Tagname Nazwa zmiennej alarmu.FromPri Dolna wartość priorytetu alarmów. Przykładowo,

100, lub zmienna typu integer.ToPri Górna wartość priorytetu alarmów. Przykładowo,

900, lub zmienna typu integer.UwagiPrzykład(y) almSelectTag(“AlmObj_1”, “\\node1\Intouch”, “Turbines”,

“Valve1”, 10, 100);

Patrz również almSelectAll(), almSelectItem(), almSelectGroup(), almSelectPriority(), almUnSelectAll()

Funkcja ta powoduje rozpoczęcie nowego zapytania alarmowego dla obiektu alarmów rozproszonych o określonej nazwie z wykorzystaniem parametrów zapytania związanych z nazwą zapytania (wykorzystywanego najczęściej) zdefiniowanego przez użytkownika.

Kategoria alarmySkładnia [Result=]almSetQueryByName(ObjectName, QueryName);

Parametr OpisObjectName Nazwa obiektu alarmowego. Przykładowo,

AlmObj_1.QueryName Nazwa zapytania stworzona przy pomocy

"Ulubione".Uwagi Zapytanie to dotyczy określonego obiektu alarmów rozproszonych. Na

ekranie może być wyświetlane kilka obiektów, każdy z osobnym, własnym zapytaniem.

Przykład(y) almSetQueryByName(“AlmObj_1”, “Turbine Queries”);

Patrz również almQuery(), almDefQuery()

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 197

almShowStats()

almSuppressAll()

Wyświetla ekran z informacjami statystycznymi obiektu alarmowego.Kategoria alarmySkładnia [Result=]almShowStats(ObjectName);

Parametr OpisObjectName Nazwa obiektu alarmowego. Przykładowo,

AlmObj_1.Uwagi Kody błędów dla tych funkcji można znaleźć w rozdziale Appendix A,

"Usuwanie problemów przy korzystaniu z funkcji skryptowych.".Przykład(y) almShowStats(“AlmObj_1”);

Funkcja ta wstrzymuje wyświetlanie wszystkich aktualnych i przyszłych alarmów w bieżącym zapytaniu, łącznie z tymi, które aktualnie nie są wyświetlane w oknie aktywnego obiektu wyświetlania alarmów.

Kategoria alarmySkładnia [Result=] almSuppressAll(ObjectName);

Parametr OpisObjectName Nazwa obiektu alarmowego. Przykładowo,

AlmObj_1.Uwagi Funkcja ta działa identycznie jak almAckAll(), identyfikując alarmy do

wstrzymania poprzez identyfikację wszystkich alarmów, które byłyby widoczne na ekranie podczas przewijania.

Przykład(y) almSuppressAll(“AlmObj_1”);

Patrz również almSuppressGroup(), almSuppressTag(), almSuppressDisplay(), almSuppressPriority(), almSuppressRetain(), almSuppressSelected(), almSuppressSelectedGroup(), almSuppressSelectedPriority(), almSuppressSelectedTag(), almUnSuppressAll()

Opis pól, funkcji i zmiennych systemowych

198 Rozdział 3

almSuppressDisplay()

almSuppressGroup()

Funkcja ta wstrzymuje wyświetlanie bieżących i przyszłych zdarzeń alarmów widocznych w oknie aktualnie aktywnego obiektu alarmowego.

Kategoria alarmySkładnia [Result=]almSuppressDisplay(ObjectName);

Parametr OpisObjectName Nazwa obiektu alarmowego. Przykładowo,

AlmObj_1.Uwagi Funkcja ta działa identycznie jak odpowiadająca jej funkcja

almAckDisplay(), identyfikując alarmy do wstrzymania poprzez identyfikację wszystkich aktualnie wyświetlanych alarmów.

Przykład(y) almSuppressDisplay(“AlmObj_1”);

Patrz również almSuppressAll(), almSuppressGroup(), almSuppressTag(), almSuppressPriority(), almSuppressRetain(), almSuppressSelected(), almSuppressSelectedGroup(), almSuppressSelectedPriority(), almSuppressSelectedTag(), almUnSuppressAll()

Funkcja ta wstrzymuje wyświetlanie bieżących i przyszłych zdarzeń alarmów należących do grupy alarmowej o danej nazwie.

Kategoria alarmySkładnia [Result=]almSuppressGroup(ObjectName, ApplicationName,

GroupName);

Parametr OpisObjectName Nazwa obiektu alarmowego. Przykładowo,

AlmObj_1.ApplicationName Nazwa aplikacji wraz ze ścieżką dostępu.

Przykładowo, \\node1\InTouch.GroupName Nazwa grupy. Przykładowo $System.

Przykład(y) almSuppressGroup(“AlmObj_1”, “\InTouch”, “Turbines”);

Patrz również almSuppressAll(), almSuppressTag(), almSuppressDisplay(), almSuppressPriority(), almSuppressRetain(), almSuppressSelected(), almSuppressSelectedGroup(), almSuppressSelectedPriority(), almSuppressSelectedTag(), almUnSuppressAll()

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 199

almSuppressPriority()Funkcja ta wstrzymuje wyświetlanie bieżących i przyszłych zdarzeń dowolnego alarmu z podanego zakresu priorytetu, mających tę samą nazwę dostawcy i nazwę grupy.

Kategoria alarmySkładnia [Result=]almSuppressPriority(ObjectName,

ApplicationName, GroupName, FromPri, ToPri);

Parametr OpisObjectName Nazwa obiektu alarmowego. 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) almSuppressPriority(“AlmObj_1”, “\\node1\Intouch”,

“Turbines”, 10, 100);

Patrz również almSuppressAll(), almSuppressGroup(), almSuppressTag(), almSuppressDisplay(), almSuppressRetain(), almSuppressSelected(), almSuppressSelectedGroup(), almSuppressSelectedPriority(), almSuppressSelectedTag(), almUnSuppressAll()

Opis pól, funkcji i zmiennych systemowych

200 Rozdział 3

almSuppressRetain()

almSuppressSelected()

Funkcja ta anuluje wstrzymanie wyświetlania alarmów dla wszystkich nadchodzących zapytań alarmowych.

Kategoria alarmySkładnia [Result=]almSuppressRetain (ObjectName,

SuppressionRetainFlag);

Parametr OpisObjectName Nazwa obiektu alarmowego. Przykładowo,

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 wstrzymaniu wyświetlania 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()

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

Kategoria alarmySkładnia [Result=]almSuppressSelected (ObjectName);

Parametr OpisObjectName Nazwa obiektu alarmowego. Przykładowo,

AlmObj_1.Uwagi Funkcja ta działa tak samo jak funkcja almAckSelect(), identyfikując

alarmy poprzez alarmy wybrane w obiekcie wyświetlania.Przykład(y) almSuppressSelected(“AlmObj_1”);

Patrz również almSuppressAll(), almSuppressGroup(), almSuppressTag(), almSuppressDisplay(), almSuppressPriority(), almSuppressSelectedGroup(), almSuppressSelectedPriority(), almSuppressSelectedTag(), almUnSuppressAll()

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 201

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 alarmów rozproszonych o określonej nazwie.

Kategoria alarmySkładnia [Result=]almSuppressSelectedGroup(ObjectName);

Parametr OpisObjectName Nazwa obiektu alarmowego. Przykładowo,

AlmObj_1.Uwagi Funkcja ta działa tak samo jak funkcja almAckSelectedGroup(),

identyfikując wybrane alarmy, następnie identyfikując grupy, do których należą i wstrzymują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 alarmów rozproszonych o określonej nazwie.

Kategoria alarmySkładnia [Result=]almSuppressSelectedPriority(ObjectName);

Parametr OpisObjectName Nazwa obiektu alarmowego. Przykładowo,

AlmObj_1.Uwagi Wartości priorytetów są obliczane na podstawie danych pobranych

z wybranych rekordów alarmów. Pod uwagę brane są minimalne (Min) i maksymalne (Max) wartości priorytetów.

Funkcja ta działa tak samo jak funkcja almAckSelectedPriority(), identyfikując alarmy zaznaczone na ekranie, następnie identyfikując priorytety odpowiadające tym alarmom i wstrzymując przyszłe zdarzenia alarmów z tymi samymi priorytetami.

Przykład(y) almSuppressSelectedPriority(“AlmObj_1”);

Patrz również almSuppressAll(), almSuppressGroup(), almSuppressTagName(), almSuppressDisplay(), almSuppressSelected(), almSuppressSelectedGroup(), almSuppressSelectedTag(), almAckSelectedPriority()

Opis pól, funkcji i zmiennych systemowych

202 Rozdział 3

almSuppressSelectedTag()Funkcja ta wyłącza wyświetlanie bieżących i przyszłych zdarzeń dowolnego alarmu, który należy do tej samej nazwy zmiennych jednego lub więcej wybranych alarmów mających tą samą nazwę dostawcy, grupy i zakres priorytetu.

Kategoria alarmySkładnia [Result=]almSuppressSelectedTag(ObjectName);

Parametr OpisObjectName Nazwa obiektu alarmowego. Przykładowo,

AlmObj_1.UwagiPrzykład(y) almSuppressSelectedTag(“AlmObj_1”);

Patrz również almSuppressAll(), almSuppressGroup(), almSuppressTag(), almSuppressDisplay(), almSuppressSelectedAlarm(), almSuppressSelectedGroup(), almSuppressSelectedPriority(), almAckSelectedTag(), almUnSuppressAll()

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 203

almSuppressTag()Funkcja ta wyłącza wyświetlanie bieżących i przyszłych zdarzeń dla dowolnego alarmu emitowanego przez daną nazwę zmiennej, mających tego samego dostawcę, nazwę grupy i zakres priorytetów.

Kategoria alarmySkładnia [Result=]almSuppressTag(ObjectName, ApplicationName,

GroupName, TagName, FromPri, ToPri, AlarmClass, AlarmType);

Parametr OpisObjectName Nazwa obiektu alarmowego. 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.AlarmClass Klasa alarmu. Przykładowo, “Value.”AlarmType Typ alarmu. Przykładowo, “HiHi.”

UwagiPrzykład(y) almSuppressTag(“AlmObj_1”, “\\node1\Intouch”,

“Turbines”, “Valve1”, 10, 100, “Value”, “LoLo”);

Patrz również almSuppressAll(), almSuppressGroup(), almSuppressDisplay(), almSuppressPriority(), almSuppressRetain(), almSuppressSelected(), almSuppressSelectedGroup(), almSuppressSelectedPriority(), almSuppressSelectedTag(), almUnSuppressAll()

Opis pól, funkcji i zmiennych systemowych

204 Rozdział 3

almUnSelectAll()

almUnSuppressAll()

Funkcja ta odznacza wszystkie zaznaczone alarmy w obiekcie alarmów rozproszonych o określonej nazwie.

Kategoria alarmySkładnia [Result=]almUnSelectAll(ObjectName);

Parametr OpisObjectName Nazwa obiektu alarmowego. Przykładowo,

AlmObj_1.Uwagi Kody błędów dla funkcji tego typu można znaleźć w Dodatku A:

"Komunikaty o błędach dla obiektów sterujących Windows i funkcji związanych z alarmowaniem rozproszonym".

Przykład(y) If $AccessLevel == 9999 THENalmAckSelect(“AlmObj_1”, “Comment”);{Ten alarm może być potwierdzony tylko przez administratora}

ELSEalmUnSelectAll(“AlmObj_1”);

ENDIF;

Patrz również almSelectAll(), almSelectItem(), almSelectGroup(), almSelectPriority(), almSelectTag()

Funkcja ta zeruje wszystkie wstrzymane alarmy.Kategoria alarmySkładnia [Result=] almUnSupressAll(ObjectName);

Parametr OpisObjectName Nazwa obiektu alarmowego. Przykładowo,

AlmObj_1.Przykład(y) almUnSupressAll(“AlmObj_1”);

Patrz również almSuppressAll(), almSuppressGroup(), almSuppressTag(), almSuppressDisplay(), almSuppressPriority(), almSuppressRetain(), almSuppressSelected(), almSuppressSelectedGroup(), almSuppressSelectedPriority(), almSuppressSelectedTag()

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 205

AnnotateLayout()

O funkcjach APUDla funkcji APU zwracana dodatnia wartość oznacza kod błędu, a wartość zero - brak błędu.

Ta funkcja skryptowa pozwala użytkownikowi graficznie skomentować zrzut ekranu aplikacji. Funkcja ta jest dostępna tylko w systemie operacyjnym Windows XP Tablet PC Edition.

Kategoria SystemoweSkładnia AnnotateLayout()

Uwagi Gdy funkcja AnnotateLayout zostanie wywołana, wyświetlone zostaje odpowiednie okno dialogowe. To okno dialogowe posiada następującą funkcjonalność:

• Tworzy zrzut ekranu aplikacji w momencie wyświetlenia okna dialogowego.

• Pozwala na graficzne skomentowanie zrzutu ekranu aplikacji za pomocą elementów menu oraz pisaka.

• Pozwala na zapisanie zrzutu ekranu z komentarzem użytkownika w postaci pliku GIF lub JPG.

• Pozwala na wydruk zrzutu ekranu z komentarzem użytkownika (jeżeli drukarka została skonfigurowana).

• Pozwala na wysłanie zrzutu ekranu z komentarzem użytkownika za pomocą poczty e-mail (jeżeli protokół SMTP został skonfigurowany).

Przykład(y) None (Brak)

Patrz również n/d

Numer błędu Komunikat0 Powodzenie1 Instance not found or not running (Instancja nie została

odnaleziona lub nie jest uruchomiona).2 Interface not initialized (Interfejs nie został zainicjalizowany).3 Failure to access virtual memory (Błąd dostępu do pamięci

wirtualnej).4 Invalid error code (Nieprawidłowy kod błędu).5 Too many instances already running (Zbyt dużo istniejących

instancji).6 Result string would be too long (Tekstowa wartość wynikowa

byłaby zbyt długa).7 Invalid instance index passed to function (Przekazany do

funkcji indeks instancji jest nieprawidłowy).

Opis pól, funkcji i zmiennych systemowych

206 Rozdział 3

8 Failed to post message to alarm printer program (Błąd podczas wysyłania komunikatu do narzędzia alarm printer).

9 Failed wait for response from alarm printer application (Błąd podczas oczekiwania na odpowiedź narzędzia alarm printer).

20 To priority must be greater or equal to From priority (Wartość "Do priorytetu" musi być większa lub równa wartości "Od priorytetu").

21 Invalid priority value (Nieprawidłowa wartość priorytetu).22 Invalid alarm state (Nieprawidłowy stan alarmu).23 Fail to execute command because query is running (Wykonanie

polecenia nie powiodło się ponieważ zapytanie trwa).24 Query String is not valid (Tekst zapytania jest nieprawidłowy).25 Invalid query processing state (Nieprawidłowy stan

przetwarzania zapytania).26 Invalid printer state selector (Nieprawidłowy stan drukarki).27 Command received by alarm printer window is not recognized

(Polecenie otrzymane przez narzędzie alarm printer nie zostało rozpoznane).

28 Query could not be started (Zapytanie nie mogło zostać wykonane).

Numer błędu Komunikat

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 207

APUFindAlarmGroupInstance()Funkcja pozwala odnaleźć pierwszą instancję programu Alarm Print korzystającą z podanej grupy alarmowej. W ten sposób można uzyskać dostęp do programu Alarm Print. Nazwa grupy alarmowej odczytywana jest z pliku ALC.

Kategoria ViewSkładnia [Result=] APUFindAlarmGroupInstance(sGroup, iInstance);

Parametr OpissGroup Nazwa grupyiInstance Integer - instancja

Uwagi Zwraca kod błędu.Przykład(y) Status = APUFindAlarmGroupInstance( "$System", 1);

Patrz również APUFindFieldInstance(), APUFindPrinterInstance(), APUGetAlarmGroupText(), APUGetConfigurationFilePath(), APUGetInstanceCount(), APUGetPrinterJobCount(), APUGetPrinterName(), APUGetPrinterStatus(), APUGetQueryAlarmState(), APUGetQueryFromPriority(), APUGetQueryProcessingState(), APUGetQueryToPriority(), APUIsInstanceUsed(), APUSetAlarmGroupText(), APUSetQueryAlarmState(), APUSetQueryFromPriority(), APUSetQueryToPriority(), APUSetTimeoutValues(), APUStartInstance(), APUStartQuery(), APUStopInstance(), APUStopQuery(), APUTranslateErrorCode().

Opis pól, funkcji i zmiennych systemowych

208 Rozdział 3

APUFindFileInstance()Funkcja pozwala odnaleźć pierwszą instancję programu Alarm Print korzystającą z podanego pliku ALC. W ten sposób można uzyskać dostęp do programu Alarm Print. Plik, który ma zostać wykorzystany można określić ręcznie w konfiguracji lub można tego dokonać w linii poleceń przy uruchamianiu programu. Porównanie ścieżki dostępu do pliku nie uwzględnia wielkości liter.

Kategoria ViewSkładnia [Result=] APUFindFileInstance(sFilePath, iInstance);

Parametr OpissFilePath Wartość tekstowa - ścieżka do plikuiInstance

Uwagi Zwraca kod błędu.Przykład(y) Status = APUFindFileInstance(sFilePath, iInstance);

Patrz również APUFindAlarmGroupInstance(), APUFindPrinterInstance(), APUGetAlarmGroupText(), APUGetConfigurationFilePath(), APUGetInstanceCount(), APUGetPrinterJobCount(), APUGetPrinterName(), APUGetPrinterStatus(), APUGetQueryAlarmState(), APUGetQueryFromPriority(), APUGetQueryProcessingState(), APUGetQueryToPriority(), APUIsInstanceUsed(), APUSetAlarmGroupText(), APUSetQueryAlarmState(), APUSetQueryFromPriority(), APUSetQueryToPriority(), APUSetTimeoutValues(), APUStartInstance(), APUStartQuery(), APUStopInstance(), APUStopQuery(), APUTranslateErrorCode().

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 209

APUFindPrinterInstance()Funkcja pozwala odnaleźć pierwszą instancję programu Alarm Print korzystającą z podanej drukarki lub portu. W ten sposób można uzyskać dostęp do programu Alarm Print. Nazwa drukarki jest zapisywana i odczytywana z pliku ALC. Porównanie nazwy drukarki nie uwzględnia wielkości liter.

Kategoria ViewSkładnia [Result=] APUFindPrinterInstance( sPrinter, iInstance );

Parametr OpissPrinter Wartość tekstowa - drukarkaiInstance Integer - instancja

Uwagi Zwraca kod błędu.Przykład(y) Status = APUFindPrinterInstance( sPrinter, iInstance );

Patrz również APUFindAlarmGroupInstance(), APUFindFieldInstance(), APUGetAlarmGroupText(), APUGetConfigurationFilePath(), APUGetInstanceCount(), APUGetPrinterJobCount(), APUGetPrinterName(), APUGetPrinterStatus(), APUGetQueryAlarmState(), APUGetQueryFromPriority(), APUGetQueryProcessingState(), APUGetQueryToPriority(), APUIsInstanceUsed(), APUSetAlarmGroupText(), APUSetQueryAlarmState(), APUSetQueryFromPriority(), APUSetQueryToPriority(), APUSetTimeoutValues(), APUStartInstance(), APUStartQuery(), APUStopInstance(), APUStopQuery(), APUTranslateErrorCode().

Opis pól, funkcji i zmiennych systemowych

210 Rozdział 3

APUGetAlarmGroupText()Odczytuje grupę alarmową zapytania. Nazwa grupy alarmowej odczytywana jest z pliku ALC.

Kategoria ViewSkładnia [Result=] APUGetAlarmGroupText( iInstance, sTagGroup);

Parametr OpisiInstance Instancja programu Alarm Print (od 0 do 15).sTagGroup Wartość tekstowa - grupa alarmowa

Uwagi Zwraca kod błędu.Przykład(y) Status = APUGetAlarmGroupText( iInstance, sTagGroup);

Patrz również APUFindAlarmGroupInstance(), APUFindFieldInstance(), APUFindPrinterInstance(), APUGetConfigurationFilePath(), APUGetInstanceCount(), APUGetPrinterJobCount(), APUGetPrinterName(), APUGetPrinterStatus(), APUGetQueryAlarmState(), APUGetQueryFromPriority(), APUGetQueryProcessingState(), APUGetQueryToPriority(), APUIsInstanceUsed(), APUSetAlarmGroupText(), APUSetQueryAlarmState(), APUSetQueryFromPriority(), APUSetQueryToPriority(), APUSetTimeoutValues(), APUStartInstance(), APUStartQuery(), APUStopInstance(), APUStopQuery(), APUTranslateErrorCode().

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 211

APUGetConfigurationFilePath()Odczytuje pełną nazwę wykorzystywanego pliku konfiguracji ALC. Plik, który ma zostać wykorzystany można określić ręcznie w konfiguracji lub można tego dokonać w linii poleceń przy uruchamianiu programu.

Kategoria ViewSkładnia [Result=] APUGetConfigurationFilePath( iInstance,

sTagFilePath );

Parametr OpisiInstance Instancja programu Alarm Print (od 0 do 15).sTagFilePath Wartość tekstowa - ścieżka do pliku

Uwagi Zwraca kod błędu.Przykład(y) Status = APUGetConfigurationFilePath( iInstance,

sTagFilePath );

Patrz również APUFindAlarmGroupInstance(), APUFindFieldInstance(), APUFindPrinterInstance(), APUGetAlarmGroupText(), APUGetInstanceCount(), APUGetPrinterJobCount(), APUGetPrinterName(), APUGetPrinterStatus(), APUGetQueryAlarmState(), APUGetQueryFromPriority(), APUGetQueryProcessingState(), APUGetQueryToPriority(), APUIsInstanceUsed(), APUSetAlarmGroupText(), APUSetQueryAlarmState(), APUSetQueryFromPriority(), APUSetQueryToPriority(), APUSetTimeoutValues(), APUStartInstance(), APUStartQuery(), APUStopInstance(), APUStopQuery(), APUTranslateErrorCode().

Opis pól, funkcji i zmiennych systemowych

212 Rozdział 3

APUGetInstanceCount()Zwraca liczbę działających instancji programu Alarm Print, aż do maksymalnie szesnastej instancji. Jeżeli w systemie w tym samym czasie działa więcej niż szesnaście instancji, nie można nimi sterować oraz nie można odczytywać ich stanu.

Kategoria ViewSkładnia [Result=] APUGetInstanceCount( iCount );

Parametr OpisiCount Wartość całkowita - licznik

Uwagi Zwraca kod błędu.Przykład(y) Status = APUGetInstanceCount( iCount );

Patrz również APUFindAlarmGroupInstance(), APUFindFieldInstance(), APUFindPrinterInstance(), APUGetAlarmGroupText(), APUGetConfigurationFilePath(), APUGetPrinterJobCount(), APUGetPrinterName(), APUGetPrinterStatus(), APUGetQueryAlarmState(), APUGetQueryFromPriority(), APUGetQueryProcessingState(), APUGetQueryToPriority(), APUIsInstanceUsed(), APUSetAlarmGroupText(), APUSetQueryAlarmState(), APUSetQueryFromPriority(), APUSetQueryToPriority(), APUSetTimeoutValues(), APUStartInstance(), APUStartQuery(), APUStopInstance(), APUStopQuery(), APUTranslateErrorCode().

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 213

APUGetPrinterJobCount()Odczytuje liczbę zadań drukarki używanej przez tą instancję. Wynik nie jest prawidłowy dopóki wykonywane jest zapytanie. Wynik nie jest prawidłowy dopóki alarm nie zostanie wydrukowany - liczba zadań jest uaktualniana, gdy rozpoczyna się drukowanie oraz za każdym razem, gdy drukowany jest kolejny alarm.Wartość ta jest prawidłowa tylko dla drukarek Windows i nie ma znaczenia dla drukarek jedynie podłączonych do portu równoległego lub szeregowego.

Kategoria ViewSkładnia [Result=] APUGetPrinterJobCount( iInstance, iTagCount );

Parametr OpisiInstance Instancja programu Alarm Print (od 0 do 15).iTagCount Wartość całkowita - licznikResult Kod błędu (wartość całkowita)

Uwagi Zwraca kod błędu.Przykład(y) Status = APUGetPrinterJobCount( iInstance, iTagCount );

Patrz również APUFindAlarmGroupInstance(), APUFindFieldInstance(), APUFindPrinterInstance(), APUGetAlarmGroupText(), APUGetConfigurationFilePath(), APUGetInstanceCount(), APUGetPrinterName(), APUGetPrinterStatus(), APUGetQueryAlarmState(), APUGetQueryFromPriority(), APUGetQueryProcessingState(), APUGetQueryToPriority(), APUIsInstanceUsed(), APUSetAlarmGroupText(), APUSetQueryAlarmState(), APUSetQueryFromPriority(), APUSetQueryToPriority(), APUSetTimeoutValues(), APUStartInstance(), APUStartQuery(), APUStopInstance(), APUStopQuery(), APUTranslateErrorCode().

Opis pól, funkcji i zmiennych systemowych

214 Rozdział 3

APUGetPrinterName()Odczytuje nazwę lub port drukarki używanej przez instancję. Zwraca wartość 'NONE', jeżeli żadna drukarka nie została skonfigurowana. Nazwa drukarki jest zapisywana i odczytywana z pliku ALC.

Kategoria ViewSkładnia [Result=] APUGetPrinterName( iInstance, sTagPrinter );

Parametr OpisiInstance Instancja programu Alarm Print (od 0 do 15).sTagPrinter Wartość tekstowa - drukarka

Uwagi Zwraca kod błędu.Przykład(y) Status = APUGetPrinterName( iInstance, sTagPrinter );

Patrz również APUFindAlarmGroupInstance(), APUFindFieldInstance(), APUFindPrinterInstance(), APUGetAlarmGroupText(), APUGetConfigurationFilePath(), APUGetInstanceCount(), APUGetPrinterJobCount(), APUGetPrinterStatus(), APUGetQueryAlarmState(), APUGetQueryFromPriority(), APUGetQueryProcessingState(), APUGetQueryToPriority(), APUIsInstanceUsed(), APUSetAlarmGroupText(), APUSetQueryAlarmState(), APUSetQueryFromPriority(), APUSetQueryToPriority(), APUSetTimeoutValues(), APUStartInstance(), APUStartQuery(), APUStopInstance(), APUStopQuery(), APUTranslateErrorCode().

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 215

APUGetPrinterStatus()Odczytuje stan drukarki używanej przez tą instancję. Wynik nie jest prawidłowy, dopóki wykonywane jest zapytanie. Wynik nie jest prawidłowy, dopóki alarm nie zostanie wydrukowany - stan jest uaktualniany gdy rozpoczyna się drukowanie oraz za każdym razem, gdy drukowany jest kolejny alarm.Stan może przyjmować następujące wartości:· 0 = AlarmPrinterError· 1 = AlarmPrinterNoPaper· 2 = AlarmPrinterOffline· 3 = AlarmPrinterOverFlow

Kategoria ViewSkładnia [Result=] APUGetPrinterStatus( iInstance, iSelector,

iTagStatus );

Parametr OpisiInstance Instancja programu Alarm Print (od 0 do 15).iSelector Wartość całkowita - selektoriTagStatus Wartość całkowita - stan

Uwagi Zwraca kod błędu.UWAGA: Informacja o stanie jest odczytywana zgodnie ze standardami sterowników Windows. Nie wszyscy producenci drukarek stosują się do tych standardów, więc niektóre drukarki nie zwracają informacji o swoim stanie.

Przykład(y) Status = APUGetPrinterStatus( iInstance, iSelector, iTagStatus );

Patrz również APUFindAlarmGroupInstance(), APUFindFieldInstance(), APUFindPrinterInstance(), APUGetAlarmGroupText(), APUGetConfigurationFilePath(), APUGetInstanceCount(), APUGetPrinterJobCount(), APUGetPrinterName(), APUGetQueryAlarmState(), APUGetQueryFromPriority(), APUGetQueryProcessingState(), APUGetQueryToPriority(), APUIsInstanceUsed(), APUSetAlarmGroupText(), APUSetQueryAlarmState(), APUSetQueryFromPriority(), APUSetQueryToPriority(), APUSetTimeoutValues(), APUStartInstance(), APUStartQuery(), APUStopInstance(), APUStopQuery(), APUTranslateErrorCode().

Opis pól, funkcji i zmiennych systemowych

216 Rozdział 3

APUGetQueryAlarmState()

APUGetQueryFromPriority()

Odczytuje stan alarmu zapytania (0 = All, 1 = Ack, 2 = UnAck). Nazwa początkowego stanu alarmu odczytywana jest z pliku ALC.

Kategoria ViewSkładnia [Result=] APUGetQueryAlarmState( iInstance, iTagState );

Parametr OpisiInstance Instancja programu Alarm Print (od 0 do 15)iTagState 0 = All (wszystkie) 1 = Ack (potwierdzone) 2 =

UnAck (niepotwierdzone)Uwagi Zwraca kod błędu.Przykład(y) Status = APUGetQueryAlarmState( iInstance, iTagState );

Odczytuje dla zapytania wartość "Od priorytetu". Początkowa wartość priorytetu jest odczytywana z pliku ALC.

Kategoria ViewSkładnia [Result=] APUGetQueryFromPriority( iInstance, iTagPriority );

Parametr OpisiInstance Instancja programu Alarm Print (od 0 do 15) iTagPriority

Uwagi Zwraca kod błędu.Przykład(y) Status = APUGetQueryFromPriority( iInstance, iTagPriority );

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 217

APUGetQueryProcessingState()

APUGetQueryToPriority()

Odczytuje stan przetwarzania zapytania.Kategoria ViewSkładnia [Result=] APUGetQueryProcessingState( iInstance,

iTagState );

Parametr OpisiInstance Instancja programu Alarm Print (od 0 do 15).iTagState Wartość całkowita - stan (0 = Stop, 1 = Start).

Uwagi Zwraca kod błędu.Przykład(y) Status = APUGetQueryProcessingState( iInstance,

iTagState );

Patrz również APUFindAlarmGroupInstance(), APUFindFieldInstance(), APUFindPrinterInstance(), APUGetAlarmGroupText(), APUGetConfigurationFilePath(), APUGetInstanceCount(), APUGetPrinterJobCount(), APUGetPrinterName(), APUGetPrinterStatus(), APUGetQueryAlarmState(), APUGetQueryFromPriority(), APUGetQueryToPriority(), APUIsInstanceUsed(), APUSetAlarmGroupText(), APUSetQueryAlarmState(), APUSetQueryFromPriority(), APUSetQueryToPriority(), APUSetTimeoutValues(), APUStartInstance(), APUStartQuery(), APUStopInstance(), APUStopQuery(), APUTranslateErrorCode().

Odczytuje dla zapytania wartość "Do priorytetu". Początkowa wartość priorytetu jest odczytywana z pliku ALC.

Kategoria ViewSkładnia [Result=] APUGetQueryToPriority(iInstance,iTagPriority)

Parametr OpisiInstance Instancja programu Alarm Print (od 0 do 15). iTagPriority Stan wyjściowy (liczba całkowita).

Uwagi Zwraca kod błędu.Przykład(y) Status = APUGetQueryToPriority(iInstance,iTagPriority)

Patrz również APUFindAlarmGroupInstance(), APUFindFieldInstance(), APUFindPrinterInstance(), APUGetAlarmGroupText(), APUGetConfigurationFilePath(), APUGetInstanceCount(), APUGetPrinterJobCount(), APUGetPrinterName(), APUGetPrinterStatus(), APUGetQueryAlarmState(), APUGetQueryFromPriority(), APUGetQueryProcessingState(), APUIsInstanceUsed(), APUSetAlarmGroupText(), APUSetQueryAlarmState(), APUSetQueryFromPriority(), APUSetQueryToPriority(), APUSetTimeoutValues(), APUStartInstance(), APUStartQuery(), APUStopInstance(), APUStopQuery(), APUTranslateErrorCode().

Opis pól, funkcji i zmiennych systemowych

218 Rozdział 3

APUIsInstanceUsed()Sukces oznacza, że instancja jest używana.

Kategoria ViewSkładnia [Result=] APUIsInstanceUsed( iInstance );

Parametr OpisiInstance Instancja (liczba całkowita).

Uwagi Zwraca kod błędu.Przykład(y) Status = APUIsInstanceUsed( iInstance );

Patrz również APUFindAlarmGroupInstance(), APUFindFieldInstance(), APUFindPrinterInstance(), APUGetAlarmGroupText(), APUGetConfigurationFilePath(), APUGetInstanceCount(), APUGetPrinterJobCount(), APUGetPrinterName(), APUGetPrinterStatus(), APUGetQueryAlarmState(), APUGetQueryFromPriority(), APUGetQueryProcessingState(), APUGetQueryToPriority(), APUSetAlarmGroupText(), APUSetQueryAlarmState(), APUSetQueryFromPriority(), APUSetQueryToPriority(), APUSetTimeoutValues(), APUStartInstance(), APUStartQuery(), APUStopInstance(), APUStopQuery(), APUTranslateErrorCode().

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 219

APUSetAlarmGroupText()Ustawia grupę alarmową zapytania. Aby funkcja zadziałała, zapytanie nie może być w tym samym momencie przetwarzane. (Zobacz funkcje służące do uruchamiania, zatrzymywania oraz odczytywania stanu przetwarzania zapytania). Początkowa grupa alarmowa jest odczytywana z pliku ALC.

Kategoria ViewSkładnia [Result=] APUSetAlarmGroupText( iInstance, sGroup );

Parametr OpisiInstance Instancja programu Alarm Print (od 0 do 15). sGroup Wartość tekstowa - grupa alarmowa

Uwagi Zwraca kod błędu.Przykład(y) Status = APUSetAlarmGroupText( iInstance, sGroup );

Patrz również APUFindAlarmGroupInstance(), APUFindFieldInstance(), APUFindPrinterInstance(), APUGetAlarmGroupText(), APUGetConfigurationFilePath(), APUGetInstanceCount(), APUGetPrinterJobCount(), APUGetPrinterName(), APUGetPrinterStatus(), APUGetQueryAlarmState(), APUGetQueryFromPriority(), APUGetQueryProcessingState(), APUGetQueryToPriority(), APUIsInstanceUsed(), APUSetQueryAlarmState(), APUSetQueryFromPriority(), APUSetQueryToPriority(), APUSetTimeoutValues(), APUStartInstance(), APUStartQuery(), APUStopInstance(), APUStopQuery(), APUTranslateErrorCode().

Opis pól, funkcji i zmiennych systemowych

220 Rozdział 3

APUSetQueryAlarmState()Ustawia stan alarmu zapytania (0 = All, 1 = Ack, 2 = UnAck). Aby funkcja zadziałała, zapytanie nie może być w tym samym momencie przetwarzane.

Kategoria ViewSkładnia [Result=] APUSetQueryAlarmState( iInstance, iState );

Parametr OpisiInstance Instancja programu Alarm Print (od 0 do 15). iState 0 = All (wszystkie) 1 = Ack (potwierdzone) 2 =

UnAck (niepotwierdzone)Uwagi Zwraca kod błędu.Przykład(y) Status = APUSetQueryAlarmState( iInstance, iState );

Patrz również APUFindAlarmGroupInstance(), APUFindFieldInstance(), APUFindPrinterInstance(), APUGetAlarmGroupText(), APUGetConfigurationFilePath(), APUGetInstanceCount(), APUGetPrinterJobCount(), APUGetPrinterName(), APUGetPrinterStatus(), APUGetQueryAlarmState(), APUGetQueryFromPriority(), APUGetQueryProcessingState(), APUGetQueryToPriority(), APUIsInstanceUsed(), APUSetAlarmGroupText(), APUSetQueryFromPriority(), APUSetQueryToPriority(), APUSetTimeoutValues(), APUStartInstance(), APUStartQuery(), APUStopInstance(), APUStopQuery(), APUTranslateErrorCode().

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 221

APUSetQueryFromPriority()Ustawia dla zapytania wartość "Od priorytetu". Aby funkcja zadziałała, zapytanie nie może być w tym samym momencie przetwarzane.

Kategoria ViewSkładnia [Result=] APUSetQueryFromPriority(iInstance,iPriority);

Parametr OpisiInstance Instancja programu Alarm Print (od 0 do 15). iPriority Priorytet alarmów

Uwagi Zwraca kod błędu.Przykład(y) Status = APUSetQueryFromPriority( iInstance, iPriority);

Patrz również APUFindAlarmGroupInstance(), APUFindFieldInstance(), APUFindPrinterInstance(), APUGetAlarmGroupText(), APUGetConfigurationFilePath(), APUGetInstanceCount(), APUGetPrinterJobCount(), APUGetPrinterName(), APUGetPrinterStatus(), APUGetQueryAlarmState(), APUGetQueryFromPriority(), APUGetQueryProcessingState(), APUGetQueryToPriority(), APUIsInstanceUsed(), APUSetAlarmGroupText(), APUSetQueryAlarmState(), APUSetQueryToPriority(), APUSetTimeoutValues(), APUStartInstance(), APUStartQuery(), APUStopInstance(), APUStopQuery(), APUTranslateErrorCode().

Opis pól, funkcji i zmiennych systemowych

222 Rozdział 3

APUSetQueryToPriority()Ustawia dla zapytania wartość "Do priorytetu". Aby funkcja wykonała się prawidłowo, wartość 'Do priorytetu' musi być większa lub równa wartości 'Od priorytetu'. Aby funkcja zadziałała, zapytanie nie może być w tym samym momencie przetwarzane.

Kategoria ViewSkładnia [Result=] APUSetQueryToPriority( iInstance, iPriority );

Parametr OpisiInstance Instancja programu Alarm Print (od 0 do 15). iPriority Stan wejściowy (liczba całkowita).

Uwagi Zwraca kod błędu.Przykład(y) Status = APUSetQueryToPriority( iInstance, iPriority );

Patrz również APUFindAlarmGroupInstance(), APUFindFieldInstance(), APUFindPrinterInstance(), APUGetAlarmGroupText(), APUGetConfigurationFilePath(), APUGetInstanceCount(), APUGetPrinterJobCount(), APUGetPrinterName(), APUGetPrinterStatus(), APUGetQueryAlarmState(), APUGetQueryFromPriority(), APUGetQueryProcessingState(), APUGetQueryToPriority(), APUIsInstanceUsed(), APUSetAlarmGroupText(), APUSetQueryAlarmState(), APUSetQueryFromPriority(), APUSetTimeoutValues(), APUStartInstance(), APUStartQuery(), APUStopInstance(), APUStopQuery(), APUTranslateErrorCode().

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 223

APUSetTimeoutValues()Określa czas oczekiwania wyrażony w sekundach. Parametr ten zawiera informację o tym, jak długo system będzie oczekiwał na prawidłową odpowiedź. Domyślnym czasem oczekiwania na dostęp do pamięci są 2 sekundy. Domyślnym minimalnym czasem oczekiwania jest 10 sekund, natomiast maksymalny czas wynosi 20 sekund.

Kategoria ViewSkładnia [Result=] APUSetTimeoutValues( iMemory, iShort, iLong );

Parametr OpisiMemory Wartość całkowita - czas oczekiwania na dostępiShort Czas oczekiwania na odpowiedź (liczba całkowita)iLong Czas oczekiwania na odpowiedź (liczba całkowita)

Uwagi Zwraca kod błędu.Przykład(y) Status = APUSetTimeoutValues( iMemory, iShort, iLong );

Patrz również APUFindAlarmGroupInstance(), APUFindFieldInstance(), APUFindPrinterInstance(), APUGetAlarmGroupText(), APUGetConfigurationFilePath(), APUGetInstanceCount(), APUGetPrinterJobCount(), APUGetPrinterName(), APUGetPrinterStatus(), APUGetQueryAlarmState(), APUGetQueryFromPriority(), APUGetQueryProcessingState(), APUGetQueryToPriority(), APUIsInstanceUsed(), APUSetAlarmGroupText(), APUSetQueryAlarmState(), APUSetQueryFromPriority(), APUSetQueryToPriority(), APUStartInstance(), APUStartQuery(), APUStopInstance(), APUStopQuery(), APUTranslateErrorCode().

Opis pól, funkcji i zmiennych systemowych

224 Rozdział 3

APUStartInstance()Uruchamia instancję programu Alarm Printer w stanie zminimalizowanym, odczytując wskazany plik konfiguracyjny. Zwraca uruchomioną instancję lub kod błędu. Program Alarm Printer nie będzie automatycznie przetwarzał bazy danych alarmów. Aby instancja rozpoczęła przetwarzanie bazy danych, należy wywołać polecenie APUStartQuery().

Kategoria ViewSkładnia [Result=] APUStartInstance( sFilePath, iTagInstance );

Parametr OpissFilePath Pełna ścieżka pliku konfiguracyjnego (wartość

wejściowa)iTagInstance Numer uruchomionej instancji lub kod błędu.

Uwagi Zwraca kod błędu.Przykład(y) Status = APUStartInstance( sFilePath, iTagInstance );

Patrz również APUFindAlarmGroupInstance(), APUFindFieldInstance(), APUFindPrinterInstance(), APUGetAlarmGroupText(), APUGetConfigurationFilePath(), APUGetInstanceCount(), APUGetPrinterJobCount(), APUGetPrinterName(), APUGetPrinterStatus(), APUGetQueryAlarmState(), APUGetQueryFromPriority(), APUGetQueryProcessingState(), APUGetQueryToPriority(), APUIsInstanceUsed(), APUSetAlarmGroupText(), APUSetQueryAlarmState(), APUSetQueryFromPriority(), APUSetQueryToPriority(), APUSetTimeoutValues(), APUStartQuery(), APUStopInstance(), APUStopQuery(), APUTranslateErrorCode().

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 225

APUStartQuery()Ustawia ograniczenia daty i czasu dla rekordów, które mają być przetwarzane oraz wykonuje zapytanie. Jeżeli zapytanie jest uruchomione, próba jego uruchomienia jest błędem. Ustawienie wszystkich wartości na 0 spowoduje wydrukowanie wszystkich alarmów. Każda wartość 0 oznacza, iż nie chcemy nakładać ograniczenia. Najwcześniejszą możliwą datą jest 1 stycznia 1900 roku. Czas i daty są wyrażone w lokalnej strefie czasowej. Wartość -1 przypisana dla roku powoduje ustawienie danych na bieżącą datę.

Kategoria ViewSkładnia [Result=] APUStartQuery( iInstance, iYear, iMonth, iDay,

iHour, iMinute );

Parametr OpisiInstance Instancja programu Alarm Print (od 0 do 15).iYear Wejście (liczba całkowita)iMonth Wejście (liczba całkowita)iDay Wejście (liczba całkowita)iHour Wejście (liczba całkowita)iMinute Wejście (liczba całkowita)

Uwagi Zwraca kod błędu.Przykład(y) Status = APUStartQuery( iInstance, iYear, iMonth, iDay,

iHour, iMinute );

Patrz również APUFindAlarmGroupInstance(), APUFindFieldInstance(), APUFindPrinterInstance(), APUGetAlarmGroupText(), APUGetConfigurationFilePath(), APUGetInstanceCount(), APUGetPrinterJobCount(), APUGetPrinterName(), APUGetPrinterStatus(), APUGetQueryAlarmState(), APUGetQueryFromPriority(), APUGetQueryProcessingState(), APUGetQueryToPriority(), APUIsInstanceUsed(), APUSetAlarmGroupText(), APUSetQueryAlarmState(), APUSetQueryFromPriority(), APUSetQueryToPriority(), APUSetTimeoutValues(), APUStartInstance(), APUStopInstance(), APUStopQuery(), APUTranslateErrorCode().

Opis pól, funkcji i zmiennych systemowych

226 Rozdział 3

APUStopInstance()

APUStopQuery()

Powoduje zatrzymanie określonej instancji programu Alarm Printer. Dalsze próby drukowania rekordów spowodują zatrzymanie przetwarzania zapytania alarmowego oraz zakończenie działania instancji programu.

Kategoria ViewSkładnia [Result=] APUStopInstance( iInstance );

Parametr OpisiInstance Instancja programu Alarm Print (od 0 do 15).

Uwagi Zwraca kod błędu.Przykład(y) Status = APUStopInstance( iInstance );

Patrz również APUFindAlarmGroupInstance(), APUFindFieldInstance(), APUFindPrinterInstance(), APUGetAlarmGroupText(), APUGetConfigurationFilePath(), APUGetInstanceCount(), APUGetPrinterJobCount(), APUGetPrinterName(), APUGetPrinterStatus(), APUGetQueryAlarmState(), APUGetQueryFromPriority(), APUGetQueryProcessingState(), APUGetQueryToPriority(), APUIsInstanceUsed(), APUSetAlarmGroupText(), APUSetQueryAlarmState(), APUSetQueryFromPriority(), APUSetQueryToPriority(), APUSetTimeoutValues(), APUStartInstance(), APUStartQuery(), APUStopQuery(), APUTranslateErrorCode().

Zatrzymanie przetwarzania alarmów przez określoną instancję. Aplikacja będzie działała dalej, lecz nie będzie ona przetwarzała bazy danych alarmów. Wywołanie funkcji APUStartQuery() spowoduje wznowienie przetwarzania alarmów.

Kategoria ViewSkładnia [Result=] APUStopQuery( iInstance );

Parametr OpisiInstance Instancja programu Alarm Print (od 0 do 15).

Uwagi Zwraca kod błędu.Przykład(y) Status = APUStopQuery( iInstance );

Patrz również APUFindAlarmGroupInstance(), APUFindFieldInstance(), APUFindPrinterInstance(), APUGetAlarmGroupText(), APUGetConfigurationFilePath(), APUGetInstanceCount(), APUGetPrinterJobCount(), APUGetPrinterName(), APUGetPrinterStatus(), APUGetQueryAlarmState(), APUGetQueryFromPriority(), APUGetQueryProcessingState(), APUGetQueryToPriority(), APUIsInstanceUsed(), APUSetAlarmGroupText(), APUSetQueryAlarmState(), APUSetQueryFromPriority(), APUSetQueryToPriority(), APUSetTimeoutValues(), APUStartInstance(), APUStartQuery(), APUStopInstance(), APUTranslateErrorCode().

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 227

APUTranslateErrorCode()

ArcCos()

Konwertuje kod błędu zwracany przez jedną z funkcji APU na krótki opis błędu. Jeżeli do funkcji zostanie przekazany nieznany kod błędu, funkcja zakończy się błędem.

Kategoria ViewSkładnia [Result=] APUTranslateErrorCode(iErrorCode,sTagMessage)

Parametr OpisiErrorCode Wartość całkowita - kod błędusTagMessage Wartość tekstowa - tekst błędu

Uwagi Zwraca kod błędu.Przykład(y) Status = APUTranslateErrorCode(iErrorCode,sTagMessage)

Patrz również APUFindAlarmGroupInstance(), APUFindFieldInstance(), APUFindPrinterInstance(), APUGetAlarmGroupText(), APUGetConfigurationFilePath(), APUGetInstanceCount(), APUGetPrinterJobCount(), APUGetPrinterName(), APUGetPrinterStatus(), APUGetQueryAlarmState(), APUGetQueryFromPriority(), APUGetQueryProcessingState(), APUGetQueryToPriority(), APUIsInstanceUsed(), APUSetAlarmGroupText(), APUSetQueryAlarmState(), APUSetQueryFromPriority(), APUSetQueryToPriority(), APUSetTimeoutValues(), APUStartInstance(), APUStartQuery(), APUStopInstance(), APUStopQuery().

Dla liczby z przedziału domkniętego od -1 do 1, funkcja ta oblicza wartość kąta (z zakresu od 0 do 180 stopni), którego cosinus jest równy tej liczbie.

Kategoria funkcje matematyczneSkładnia Result=ArcCos(Number);

Parametr OpisNumber Dowolna liczba, zmienna rzeczywista (Real) lub

całkowita (Integer) programu InTouch.Uwagi Obliczana jest wartość arc cosinus z wartości Number i zwracana do

zmiennej Result.Przykład(y) ArcCos(1) daje w wyniku 0

ArcCos(-1) daje w wyniku 180

Patrz również Cos(), Sin(), Tan(), ArcSin(), ArcTan()

Opis pól, funkcji i zmiennych systemowych

228 Rozdział 3

ArcSin()

ArcTan()

Dla liczby z przedziału domkniętego [-1,1] funkcja ta oblicza wartość kąta (z zakresu od -90 do 90 stopni), którego sinus jest równy tej liczbie.

Kategoria funkcje matematyczneSkładnia Result=ArcSin(Number);

Parametr OpisNumber Dowolna liczba, zmienna rzeczywista (Real) lub

całkowita (Integer) programu InTouch.Uwagi Obliczana jest wartość arc sinus z wartości Number i zwracana do zmiennej

Result.Przykład(y) ArcSin(1) daje w wyniku 90

ArcSin(-1) daje w wyniku -90

Patrz również Cos(), Sin(), Tan(), ArcCos(), ArcTan()

Dla danej liczby funkcja ta oblicza wartość kąta (z zakresu od -90 st. do 90 st.), którego tangens jest równy tej liczbie.

Kategoria funkcje matematyczneSkładnia Result=ArcTan(Number);

Parametr OpisNumber Dowolna liczba, zmienna rzeczywista (Real) lub

całkowita (Integer) programu InTouch.Uwagi Obliczana jest wartość arc tangens z wartości Number i zwracana do

zmiennej Result.Przykład(y) ArcTan(1) daje w wyniku 45

ArcTan(0) daje w wyniku 0

Patrz również Cos(), Sin(), Tan(), ArcCos(), ArcSin()

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 229

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

Kategoria bezpieczeństwoSkładnia DiscreteTag=AttemptInvisibleLogon( "UserId",

"Password", "Domain" );

Parametr OpisUserId 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 jedynie wtedy, gdy system bezpieczeństwa oparty jest na systemie operacyjnym.

DiscreteTag Zwracana wartość: zwraca PRAWDA, jeżeli logowanie powiodło 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) DiscreteTag=AttemptInvisibleLogon("UserId", "Password", "Domain" ); system bezpieczeństwa oparty na systemie operacyjnym

DiscreteTag=AttemptInvisibleLogon("UserId", "Password", "" ); system bezpieczeństwa oparty na produkcie Industrial Application Server lub InTouch

Patrz również PostLogonDialog(), InvisibleVerifyCredentials(), IsAssignedRole(), QueryGroupMembership(), AddPermission().

Opis pól, funkcji i zmiennych systemowych

230 Rozdział 3

ChangePassword()Wyświetla okno dialogowe Change Password (Zmiana hasła), pozwalające operatorowi na zmianę swojego hasła.

Kategoria bezpieczeństwoSkładnia [Result=]ChangePassword();

Parametr Opis[Result] Przyjmuje jedną z następujących wartości:

0 = Naciśnięty został przycisk Cancel (Anuluj)1 = Naciśnięty został przycisk OK.

Uwagi W aplikacjach z ekranem dotykowym można użyć klawiatury alfanumerycznej.

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 (z opcjonalną klawiaturą) umożliwiającego użytkownikowi wprowadzenie nowego hasła dostępu.

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 231

ChangeWindowColor()

Cos()

Zwraca stan - sukces lub niepowodzenie po zmianie koloru tła okna.Kategoria różneSkładnia IntegerResult = ChangeWindowColor("Window Name",

RValue,GValue,BValue);Parametr OpisWindowName Nazwa okna, którego kolor tła ma ulec zmianie.

Łańcuch znaków lub zmienna tekstowa.RValue Określa intensywność koloru czerwonego.

Wartość całkowita lub zmienna typu memory integer. (poprawny zakres wartości 0 - 255).

BValue Określa intensywność koloru niebieskiego. Wartość całkowita lub zmienna typu memory integer. (poprawny zakres wartości 0 - 255).

GValue Określa intensywność koloru zielonego. Wartość całkowita lub zmienna typu memory integer. (poprawny zakres wartości 0 - 255).

Uwagi Zwracana wartość 0, 1 lub 2 jest przypisywana do zmiennej IntegerTag. 0 - błąd - okno nie istnieje, lub wartość RGB spoza zakresu. 1 - sukces. 2 - błąd - okno istnieje lecz nie jest otwarte.

Przykład ChangeWindowColor("Win1", 255,255,255 ) zwróci 1 jeżeli "Win1" to nazwa okna, które jest otwarte.

ChangeWindowColor("Win2", 255,255,255 ) zwróci 0, jeżeli "Win2" to nazwa okna, okno o tej nazwie nie istnieje, lub wartość RGB jest poza dopuszczalnym zakresem (dopuszczalne wartości to od 0 do 255).

ChangeWindowColor("Win3", 255,255,255 ) zwróci 2, jeżeli "Win3" to nazwa okna, które nie jest otwarte.

Zwraca cosinus kąta podanego w stopniach. Kategoria funkcje matematyczneSkładnia Result=Cos(Number);

Parametr OpisNumber Dowolna liczba, zmienna rzeczywista (Real) lub

całkowita (Integer) programu InTouch.Uwagi Obliczana jest wartość cosinus z wartości 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()

Opis pól, funkcji i zmiennych systemowych

232 Rozdział 3

DateTimeGMT()

DialogStringEntry()

Zwraca liczbę reprezentującą ilość dni, które upłynęły od 1 stycznia 1970 w standardzie czasu UTC, bez względu na lokalną strefę czasową.

Kategoria różneSkładnia Result=DateTimeGMT();

Parametr OpisNone (Brak)

UwagiPrzykład(y) MessageTag = StringFromTime(DateTimeGMT() * 86400.0, 3);

Patrz również

Wyświetla na ekranie klawiaturę alfanumeryczną umożliwiając użytkownikowi zmianę aktualnej wartości zmiennej tekstowej zdefiniowanej na liście zmiennych.

Kategoria różneSkładnia [Result=]DialogStringEntry(MessageTag_Text,

UserPrompt_Text);

Parametr Opis[Result] Przyjmuje jedną z następujących wartości:

0 = Naciśnięty został przycisk Cancel (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. Proszę porównać z zamieszczonym w dalszej części przykładem.

UserPrompt_Text Tekst użytkownika, który ma być wyświetlony w górnej części klawiatury.

Uwagi Funkcja jest stosowana głównie w aplikacjach z ekranem dotykowym.

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 233

DialogValueEntry()

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 stanowiącego 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()

Funkcja ta wyświetla na ekranie klawiaturę alfanumeryczną umożliwiając użytkownikowi zmianę aktualnej wartości zmiennej typu Discrete, Integer lub Real na liście zmiennych.

Kategoria różneSkładnia [Result=]DialogValueEntry(ValueTag_Text,

LowLimit,HighLimit,UserPrompt_Text);

Parametr Opis[Result] Przyjmuje jedną z następujących wartości:

0 = Naciśnięty został przycisk Cancel (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.

Opis pól, funkcji i zmiennych systemowych

234 Rozdział 3

-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. Proszę porównać z zamieszczonym w dalszej części przykładem.

LowLimit Określa minimalną dopuszczalną wartość zmiennej. (Powinna ona być >= od wartości podanych w czasie definiowania zmiennej wartości w polach Wartość minimalna, Min. I/O, oraz Min. inż, o ile są wprowadzane wartości do tych pól).

HighLimit Określa maksymalną dopuszczalną wartość zmiennej. (Powinna ona być <= od podanych w czasie definiowania zmiennej wartości w polach Wartość maksymalna, Maks. I/O, oraz Maks. inż, o ile są wprowadzane wartości do tych pól).

UserPrompt_Text Tekst (wprowadzony przez użytkownika), który ma zostać wyświetlony w górnej części klawiatury.

Uwagi Funkcja jest stosowana głównie w aplikacjach z ekranem dotykowym.Przykład(y) Errmsg=DialogValueEntry(MyIntegerTag.Name,

MyIntegerTag.MinEU, MyIntegerTag.MaxEU, "Enter a new value...");

Errmsg=DialogValueEntry("MyIntegerTag", -100, 100, "Enter a new value...");

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 235

Parametry mogą również działać jako wskaźniki, wskazujące na inne zmienne, co umożliwia dynamiczną zmianę parametrów w czasie pracy aplikacji.

Errmsg=DialogValueEntry(TagnameX, Min, Max, MessageDisplay);

W przykładzie powyżej użytkownik może przed wykonaniem funkcji modyfikować jej parametry poprzez wykorzystanie zmiennych wskazujących w połączeniach do wprowadzania danych.Skrypt zamieszczony poniżej spowoduje wyświetlenie klawiatury alfanumerycznej, pozwalającej na wprowadzenie nowej wartości zmiennej MyIntegerTag, mieszczącej się w granicach wyznaczonych przez Min i Max, wynoszących odpowiednio -100 i 100, wyświetlając jednocześnie komunikat "Enter a new value..." w górnej części klawiatury.TagnameX="MyIntegerTag"; {przypisanie zmiennej MyIntegerTag (zmienna, której wartość ma być zmieniona) do zmiennej typu MemoryMessage o nazwie TagnameX}

Min=-100; {minimalna, dopuszczalna wartość modyfikowanej zmiennej typu Integer/Real}

Max=100; {maksymalna, dopuszczalna wartość modyfikowanej zmiennej typu Integer/Real}

MessageDisplay="Enter a new value..."; {przypisanie nowego ciągu znaków do zmiennej typu Memory Message o nazwie MessageDisplay}

Errmsg=DialogValueEntry(TagnameX, Min, Max, MessageDisplay); {cudzysłów nie jest wymagany, ponieważ zmienna TagnameX została zdefiniowana jako zmienna typu tekstowego. Jeżeli do zmiennej TagnameX przypisana zostanie inna zmienna typu Discrete, Integer lub Real, funkcja zmodyfikuje wartość przypisanej zmiennej}

Patrz również DialogStringEntry()

Opis pól, funkcji i zmiennych systemowych

236 Rozdział 3

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

Kategoria funkcje tekstoweSkładnia MsgTag=DText(Discrete_Tag,OnMsg,OffMsg);

Parametr OpisMsgTag Zmienna tekstowa.Discrete_Tag Zmienna dyskretna (typu Discrete).OnMsg Komunikat tekstowy, który będzie wyświetlany,

gdy wartość zmiennej Discrete_Tag wynosi 1 (Prawda, Wł, Tak).

OffMsg Komunikat tekstowy, który będzie wyświetlany, gdy wartość zmiennej Discrete_Tag wynosi 0 (Fałsz, Wył, Nie).

Przykład(y) MessageTag=Dtext(DiscreteTag, DiscreteTag.OnMsg, DiscreteTag.OffMsg);

If Dtext(D_Tag, "True", "False") == "True" THENMessage="D_Tag zawiera wartość 1";

ELSEMessage="D_Tag zawiera wartość 0";

ENDIF;

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 237

EnableDisableKeys()

Exp()

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

Kategoria ViewSkładnia EnableDisableKeys(int AltKey,int EscKey,int WinKey);

Parametr OpisAltKey Wartość całkowita określająca czy włączyć, lub czy

wyłączyć blokadę klawisza Alt, 1 = włącza blokadę, 0 = wyłącza blokadę

EscKey Wartość całkowita określająca czy włączyć, lub czy wyłączyć blokadę klawisza Escape, 1 = włącza blokadę, 0 = wyłącza blokadę

WinKey Wartość całkowita określająca czy włączyć, lub czy wyłączyć blokadę klawisza Windows, 1 = włącza blokadę, 0 = wyłącza blokadę

Uwagi Włącza/wyłącza klawisze Alt, Escape oraz Windows.Zablokowanie klawisza Alt spowoduje także zablokowanie dostępu do kombinacji klawiszy Win+L (blokowanie pulpitu). Win+L jest skrótem do innej kombinacji klawiszy, która wykorzystuje klawisz Alt. To powoduje, że kombinacja ta nie jest dostępna.

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.

Zwraca wartość e podniesioną do potęgi.Kategoria funkcje matematyczneSkładnia Result=Exp(Number);

Parametr OpisNumber Dowolna liczba lub zmienna rzeczywista (Real)

albo całkowita (Integer) programu InTouch.Uwagi Liczba e jest podnoszona do potęgi Number, a wynik jest zapisywany jako

Result.Przykład(y) Exp(1) daje w wyniku 2.718...

Zakres argumentu dla tej funkcji to od -88.72 do 88.72.

Opis pól, funkcji i zmiennych systemowych

238 Rozdział 3

FileCopy()Kopiuje plik SourceFile do DestFile, podobnie jak polecenie copy systemu DOS lub funkcja copy systemu Windows.

Kategoria systemSkładnia [Result=]FileCopy(SourceFile,DestFile,DoneTag);

Parametr OpisSourceFile Nazwa pliku źródłowego (do przeniesienia),

włącznie z pełną ścieżką dostępu.DestFile Nazwa pliku wynikowego, włącznie z pełną

ścieżką dostępu, lub nazwa katalogu (patrz przykład poniżej).

DoneTag Nazwa zmiennej używanej przez funkcję FileCopy() do poinformowania o trwaniu procedury kopiowania. Parametr ten musi być łańcuchem znaków zawierającym nazwę zmiennej (a nie samą zmienną). Dlatego więc, jeśli zmienną służącą do komunikowania o przebiegu operacji jest zmienna Monitor, jako parametr należy podać "Monitor" lub Monitor.name, a nie Monitor.

Uwagi Funkcja FileCopy() zwraca natychmiast wartość 1, jeśli procedura kopiowania została pomyślnie zainicjowana. Funkcja zwraca 0, jeśli inna procedura znajduje się w trakcie realizacji (nowa procedura nie może zostać zainicjowana) oraz zwraca -1 w przypadku błędu. Wartość ta pozwala na monitorowania inicjalizacji funkcji FileCopy().Status=FileCopy("C:\*.TXT", "C:\BACKUP", "Monitor");

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 przez 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 na to, 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");

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 239

FileDelete()

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

Usuwa niepotrzebne pliki. Kategoria systemSkładnia [Result=]FileDelete(Filename);

Parametr OpisFilename Nazwa pliku do

usunięcia.Uwagi Jeśli podany plik zostanie znaleziony i pomyślnie usunięty, funkcja zwraca

wartość 1. W przeciwnym wypadku zwracana jest wartość 0.

Funkcja FileDelete() nie akceptuje znaków wieloznacznych. Przykładowo * i ?. Użycie znaków wieloznacznych spowoduje zwrócenie błędu (0) ) “Could not find file.”

FileDelete() nie funkcjonuje z asynchronicznymi funkcjami QuickFunction. Z funkcji FileDelete() należy korzystać jedynie w funkcjach synchronicznych.

Przykład(y) Status=FileDelete("C:\DATA.TXT");

Zmienna Status przyjmuje wartość 1, jeśli plik o nazwie "DATA.TXT” został znaleziony w katalogu głównym dysku C:, lub też 0, w wypadku przeciwnym.

Patrz również FileCopy(), FileMove(), FileReadFields(), FileReadMessage(), FileWriteFields(), FileWriteMessage()

Opis pól, funkcji i zmiennych systemowych

240 Rozdział 3

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

Kategoria systemSkładnia [Result=]FileMove(SourceFile,DestFile,DoneTag);

Parametr OpisSourceFile Nazwa pliku źródłowego (do przeniesienia), włącznie

z pełną ścieżką dostępu.DestFile Nazwa pliku wynikowego, włącznie z pełną ścieżką

dostępu.DoneTag Nazwa zmiennej, która zostanie użyta przez funkcję

FileMove() do powiadamiania o postępie przenoszenia. Parametr ten musi być łańcuchem znaków zawierającym nazwę zmiennej (a nie samą zmienną). Dlatego więc, jeśli zmienną służącą do komunikowania o przebiegu operacji jest zmienna Monitor, jako parametr należy podać "Monitor" lub Monitor.name, a nie Monitor.

Uwagi Funkcja FileMove() zwraca wartość 1, jeśli procedura przesunięcia została pomyślnie zainicjowana. Funkcja zwraca 0, jeśli inna procedura jest aktualnie realizowana (i nowa procedura nie może zostać zainicjowana) oraz zwraca -1 w przypadku błędu. Używając tej wartości można monitorować inicjowanie funkcji FileMove():Status=FileMove("C:\DATA.TXT", "D:\DATA.TXT", "Monitor");

Status jest zmienną typu Integer o wartościach 1, -1 lub 0. Funkcja FileMove() jest wykonywana w tle, dlatego też nie zakłóca funkcjonowania programu InTouch. Zmienna DoneTag umożliwia natomiast monitorowanie postępu operacji przenoszenia pliku przez aplikację lub użytkownika. W ten sposób użytkownik może zostać ostrzeżony o wszelkich błędach, które mogą wystąpić po zainicjowaniu procedury. Nie jest ona równoważna zmiennej Status zastosowanej w przykładzie powyżej, która wskazuje na to, czy procedura przenoszenia została pomyślnie zainicjowana.

FileMove() nie funkcjonuje z asynchronicznymi funkcjami QuickFunction. Z funkcji FileMove() należy korzystać jedynie w funkcjach synchronicznych. Po pomyślnym zainicjowaniu procedury przesuwania pliku, ustawiana jest wartość zmiennej DoneTag Wartość ta jest ustawiona na 0, gdy procedura trwa. Wartość tej zmiennej ustawiona jest na 1, gdy procedura zostanie pomyślnie zakończona lub -1, gdy w trakcie wykonywania wystąpił błąd.

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 241

Uwaga Funkcja Filemove() posiada flagę DONE. Nie należy wywoływać kolejnej funkcji Filemove, jeżeli poprzednie uruchomienie się nie zakończyło.

Jeśli SourceFile i DestFile znajdują się na tym samym dysku, funkcja zmienia tylko adres miejsca w pamięci, gdzie przechowywane są dane o pliku, bez faktycznego przemieszczania danych. W takim przypadku procedura jest wykonywana bardzo szybko, niezależnie od rozmiarów pliku. Jeżeli pliki SourceFile i DestFile umieszczone są na różnych dyskach, czas potrzebny na zrealizowanie operacji przesunięcia zależy od rozmiaru pliku. Jest to powodowane przez fakt, że dane muszą być przesunięte z jednego dysku fizycznego na drugi

Przykład(y) FileMove ("C:\DATA.TXT","C:\BACKUP\DATA.TXT","Monitor");

Instrukcja ta spowoduje przesunięcie pliku "DATA.TXT” z katalogu głównego dysku "C" do podkatalogu o nazwie BACKUP na tym dysku: Po zakończeniu tej operacji zmienna Monitor przyjmie wartość 1.

Jeżeli w SourceFile i Destfile podano tę samą kartotekę ale różne nazwy plików, funkcja ta spowoduje zmianę nazwy plików.FileMove ("C:\DATA.TXT","C:\DATA.BAK","Monitor");

Patrz również FileCopy(), FileDelete(), FileReadFields(), FileReadMessage(). FileWriteMessage(),FileWriteFields()

Opis pól, funkcji i zmiennych systemowych

242 Rozdział 3

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

Kategoria systemSkładnia [Result=]FileReadFields(Filename,FileOffset,StartTag,

NumberOfFields);

Parametr OpisFilename Nazwa pliku źródłowego do odczytu.FileOffset Miejsce rozpoczęcia odczytu (w pliku).StartTag Nazwa zmiennej zdefiniowanej w programie

InTouch, w której zostanie zapisany pierwszy element odczytany z pliku. Nazwa tej zmiennej musi kończyć się liczbą (np. MyTag1). Parametr ten musi być łańcuchem znaków zawierającym nazwę zmiennej (a nie samą zmienną). Dlatego więc, jeśli rozważaną zmienną ma być zmienna MyTag1, jako parametr należy podać "MyTag1" lub MyTag1.name, a nie MyTag1.

NumberOfFields Jest to liczba elementów do odczytu (liczba pól oddzielonych przecinkami w każdym rekordzie pliku).

Uwagi Jeśli parametrem StartTag jest zmienna MyTag1, a parametrem NumberOfFields jest 3, z pliku odczytane zostaną trzy elementy i zostaną zapisane jako wartości zmiennych MyTag1, MyTag2 i MyTag3. Zmienne te (o kolejnych numerach w nazwie) muszą zostać wcześniej utworzone w programie InTouch i mogą być różnych typów (Integer, Message, itp).

Przykład(y) Jeśli pierwsza linia pliku C:\DATA\FILE.CSV ma postać: To jest tekst, 3.1416, 5

to instrukcja ta zamieszczona w skrypcie QuickScript poniżej odczyta tę linię i zapisze "To jest tekst" jako zmienną MyTag1, 3.1416 jako zmienną MyTag2, a liczbę 5 jako zmienną MyTag3:BytePosition=FileReadFields ("C:\DATA\FILE.CSV", 0, "MyTag1", 3);

Funkcja ta po zakończeniu odczytu zwraca nową pozycję bajtu. Można użyć tej wartości jako parametru FileOffset do następnego odczytu.FileReadFields ("C:\DATA\FILE.CSV",BytePosition,"MyTag1",3);

Długość zmiennych tekstowych w programie InTouch nie może przekraczać 131 znaków.

Patrz również FileCopy(), FileMove(), FileDelete(), FileReadMessage(), FileWriteMessage(), FileWriteFields()

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 243

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

Kategoria systemSkładnia [Result=]FileReadMessage(Filename,FileOffset,

Message_Tag, CharsToRead);

Parametr OpisFilename Nazwa pliku źródłowego do odczytu.FileOffset Miejsce rozpoczęcia odczytu (w pliku). Message_Tag Nazwa zmiennej programu InTouch, w której

zostanie zapisany pierwszy element odczytany z pliku. Maksymalnie można zapamiętać 131 znaków.

CharsToRead Jest to liczba bajtów do odczytu z pliku. Przy korzystaniu z tej funkcji dla plików tekstowych, CharsToRead może być ustawione na 0. Spowoduje to odczyt ciągu znaków do rozpoczęcia kolejnej linii (znak LF), lub odczyt do 131 pierwszych znaków.

Przykład(y) FileReadMessage ("C:\DATA\FILE.TXT", 0, MsgTag, 0);

Powyższa instrukcja spowoduje odczyt pierwszej linii z pliku "C:\data\fileTXT" i przypisanie jej do zmiennej o nazwie MsgTag. Funkcja ta po zakończeniu odczytu zwraca nową pozycję bajtu. Można użyć tej wartości jako parametru FileOffset do następnego odczytu.

Patrz również FileCopy(), FileMove(), FileDelete(), FileReadFields(), FileWriteFields(), FileWriteMessage()

Opis pól, funkcji i zmiennych systemowych

244 Rozdział 3

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

Kategoria systemSkładnia [Result=]FileWriteFields(Filename,FileOffset,StartTag,

NumberOfFields);

Parametr OpisFilename Nazwa pliku źródłowego, w którym ma zostać

zapisany rekord. Jeśli plik o nazwie FileName nie istnieje, zostanie utworzony.

FileOffset Miejsce rozpoczęcia zapisu (w pliku). Jeśli wartość parametru FileOffset wynosi -1, funkcja dopisze rekord na końcu pliku.

StartTag Nazwa zmiennej programu InTouch, z której zostanie wzięty pierwszy element zapisany w pliku. Nazwa tej zmiennej musi kończyć się liczbą (np. MyTag1). Parametr ten musi być łańcuchem znaków zawierającym nazwę zmiennej (a nie samą zmienną). Dlatego więc, jeśli rozważaną zmienną ma być zmienna MyTag1, jako parametr należy podać "MyTag1" lub MyTag1.name, a nie MyTag1.

NumberOfFields Liczba elementów do zapisu (liczba pól oddzielonych przecinkami w każdym rekordzie pliku).

Uwagi Jeśli parametrem StartTag jest zmienna MyTag1, a parametrem NumberOfFields jest 3, w pliku zapisane zostaną trzy elementy przechowywane jako MyTag1, MyTag2 i MyTag3. Zmienne te (o kolejnych numerach w nazwie) muszą zostać wcześniej utworzone w programie InTouch i mogą być różnych typów (Integer, Message).

Przykład(y) Zamieszczony poniżej skrypt zapisuje linie "This is text, 3.1416,5" do pierwszej linii pliku C:\data\file.csv. "This is text" jest aktualną wartością zmiennej MyTag1, liczba 3.1416 jest wartością zmiennej MyTag2, a liczba 5 jest wartością zmiennej MyTag3:FileWriteFields ("C:\DATA\FILE.CSV", 0, "MyTag1", 3);

Po zapisie funkcja zwraca nową pozycję położenia bajtu w pliku. Można użyć tej wartości jako parametru FileOffset do następnego zapisu.Zamieszczony poniżej skrypt zapisuje linię "This is text, 3.1416, 5" do ostatniej linii pliku C:\data\file.csv. "This is text" jest aktualną wartością zmiennej MyTag1, liczba 3.1416 jest wartością zmiennej MyTag2, a liczba 5 jest wartością zmiennej MyTag3:FileWriteFields ("C:\DATA\FILE.CSV", -1, "MyTag1", 3);

Patrz również FileCopy(), FileDelete(), FileMove(), FileReadFields(), FileReadMessage(). FileWriteMessage()

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 245

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

Kategoria systemSkładnia [Result=]FileWriteMessage(Filename,FileOffset,

Message_Tag,LineFeed);

Parametr OpisFilename Nazwa pliku, w którym ma zostać zapisany ciąg

znaków. Jeśli plik o nazwie FileName nie istnieje, zostanie utworzony.

FileOffset Miejsce rozpoczęcia zapisu (w pliku). Jeśli wartość parametru FileOffset wynosi -1, funkcja dopisze rekord na końcu pliku.

Message_Tag Ciąg znaków, który ma zostać zapisany w pliku. LineFeed Parametr ten określa, czy po operacji zapisu

przejść do następnej linii (znak LF). W przypadku zapisu do pliku tekstowego parametr LineFeed powinien mieć wartość 1.

Uwagi Po zapisie funkcja zwraca nową pozycję położenia bajtu w pliku. Można użyć tej wartości jako parametru FileOffset() do następnego zapisu.

Przykład(y) Poniższa instrukcja zapisuje zawartość zmiennej MsgTag na końcu pliku C:\data\file.txt:FileWriteMessage ("C:\DATA\FILE.TXT", -1, MsgTag, 1);

Patrz również FileCopy(), FileDelete(), FileMove(), FileReadFields(), FileReadMessage(), FileWriteFields()

Opis pól, funkcji i zmiennych systemowych

246 Rozdział 3

GetAccountStatus()Wyświetla liczbę dni, które pozostały do wygaśnięcia hasła. Zwracana pozytywna wartość będzie zawierać liczbę dni pozostałą do wygaśnięcia hasła.

Kategoria bezpieczeństwoSkładnia Result=GetAccountStatus(Domain, UserID);

Parametr OpisDomain Nazwa domeny lub lokalnego komputera gdzie

zdefiniowany jest użytkownik.UserID Nazwa konta użytkownika systemu Windows na

lokalnym komputerze, domenie lub grupie roboczej.

Wynik Funkcja zwraca następujące wyniki:Wynik Opis-1 Hasło wygasło-2 Hasło konta nigdy nie

wygaśnie-3 Konto zostało zablokowane-4 Konto jest wyłączone-5 Uzyskanie informacji

o koncie nie powiodło sięUwagi Tą funkcję należy stosować przy korzystaniu z systemu bezpieczeństwa

opartego na systemie operacyjnym. Jeżeli skonfigurowany jest tryb ArchestrA, nie należy korzystać z tej funkcji.Jeżeli funkcja GetAccountStatus() wykonywana jest przy skonfigurowanym trybie ArchestrA, skrypt odczyta informację o koncie bezpośrednio z kontrolera domeny. Skrypt ten zadziała tylko wtedy, gdy ArchestrA Galaxy Repository używa systemu bezpieczeństwa systemu operacyjnego.

Przykład(y) Status = GetAccountStatus("Corporate_HQ","Operator");

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 247

GetNodeName()

GetPropertyD()

Zwraca za pomocą zmiennej tekstowej nazwę stacji NetDDE.Kategoria systemSkładnia GetNodeName(Tagname,NodeNum);

Parametr OpisTagname Nazwa zmiennej tekstowej programu InTouch,

w której zapisana zostanie nazwa komputera.NodeNum Zmienna całkowita, określająca długość

zmiennej tekstowej w znakach.Uwagi Funkcja GetNodeName() zastosowana w skrypcie QuickScript odczytuje

nazwę lokalnej stacji i zapisuje ją jako zmienną Tagname. (Parametr NodeNum podaje długość zmiennej w znakach).

Przykład(y) GetNodeName("MyNodeTag",131);

If MyNodeTag == “Master” THENMessageTag = “This is the Primary Machine!”;

ENDIF;

Odczytuje wartość dyskretną określonej właściwości.Kategoria GOTSkładnia [ErrorNumber=]GetPropertyD("ControlName[.Property]",Tag

name);

Parametr OpisControlName Nazwa obiektu sterującego oknem. Przykładowo,

ChkBox_1 lub nazwa obiektu do wyświetlania alarmów. Przykładowo, AlmObj_1.

.Property Właściwość obiektu sterującego okna, lub obiektu do wyświetlania alarmów.

Aby dowiedzieć się więcej na temat tych właściwości, zobacz Chapter 2, "Pola i właściwości."

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 tych funkcji można znaleźć w rozdziale Appendix A, "Usuwanie problemów przy korzystaniu z funkcji skryptowych.".

Patrz również GetPropertyI(), GetPropertyM(), SetPropertyD(), SetPropertyI(), SetPropertyM()

Opis pól, funkcji i zmiennych systemowych

248 Rozdział 3

GetPropertyI()

GetPropertyM()

Odczytuje wartość całkowitą określonej właściwości.Kategoria GOTSkładnia [ErrorNumber=]GetPropertyI("ControlName.[Property]",

Tagname);

Parametr OpisControlName Nazwa obiektu sterującego oknem. Przykładowo,

ChkBox_1 lub nazwa obiektu do wyświetlania alarmów. Przykładowo, AlmObj_1.

.Property Właściwość obiektu sterującego okna, lub obiektu do wyświetlania alarmów.

Aby dowiedzieć się więcej na temat tych właściwości, zobacz Chapter 2, "Pola i właściwości."

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 tych funkcji można znaleźć w rozdziale Appendix A, "Usuwanie problemów przy korzystaniu z funkcji skryptowych.".

Patrz również GetPropertyD(), GetPropertyM(), SetPropertyD(), SetPropertyI(), SetPropertyM()

Odczytuje wartość tekstową określonej właściwości.Kategoria GOTSkładnia [ErrorNumber=]GetPropertyM("ControlName.[Property]",

Tagname);

Parametr OpisControlName Nazwa obiektu sterującego oknem. Przykładowo,

ChkBox_1 lub nazwa obiektu do wyświetlania alarmów. Przykładowo, AlmObj_1.

.Property Właściwość obiektu sterującego okna, lub obiektu do wyświetlania alarmów.

Aby dowiedzieć się więcej na temat tych właściwości, zobacz Chapter 2, "Pola i właściwości."

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 tych funkcji można znaleźć w rozdziale Appendix A, "Usuwanie problemów przy korzystaniu z funkcji skryptowych.".

Patrz również GetPropertyD(), GetPropertyI(), SetPropertyD(), SetPropertyI(), SetPropertyM()

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 249

Hide

HideSelf

Funkcja ta pozwala na ukrycie okna z poziomu skryptu QuickScript. Funkcja Hide() musi poprzedzać nazwę każdego okna, które ma być ukryte.

Kategoria różneSkładnia Hide Window;

Parametr OpisWindow Nazwa okna lub zmienna tekstowa zawierająca

nazwę okna.Uwagi Jeśli w czasie pracy aplikacji okno o podanej nazwie nie istnieje, instrukcja

jest ignorowana. Jeśli celem skryptu QuickScript jest wyłącznie ukrycie lub wyświetlenia okna, najlepszym rozwiązaniem jest wykorzystanie połączenia animacyjnego otwierania okna lub zamykania okna, związanego z przyciskiem.

Jeżeli jako parametr do ukrycia okna użyta zostanie zmienna lokalna typu Message, wyświetlony zostanie następujący komunikat o błędzie:

Spodziewana jest nazwa okna (wyrażenie tekstowe)

Aby tego uniknąć, zmienną typu Message należy poprzedzić znakiem plus (+). Przykładowo:

DIM Test AS message;Test = "MyWindow1";Hide ""+Test;

Przykład(y) Hide "My Popup Alarm Window";

Patrz również Hideself, Show, ShowAt(), ShowTopLeftAt(), ShowHome

Ukrywa aktywne okno.Kategoria różneSkładnia HideSelf;

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

Patrz również Hide, Show

Opis pól, funkcji i zmiennych systemowych

250 Rozdział 3

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

Kategoria dane historyczneSkładnia [Result=]HTGetLastError(Hist_Tag,UpdateCount,PenNum);

Parametr OpisHist_Tag Nazwa zmiennej typu HistTrend reprezentującej

trend historyczny.UpdateCount Liczba całkowita reprezentująca wartość pola

.UpdateCount zmiennej reprezentującej trend.PenNum Zmienna typu Integer lub liczba całkowita

określająca numer pisaka (od 1 do 8).[Result=] Funkcja zwraca następujące wyniki:

Wynik Opis0 Brak błędu.1 Ogólny błąd serwera.2 Moduł trendów historycznych realizuje

poprzednie zapytanie.3 Błąd pliku.4 Serwer nie jest wczytany.5 Trend lub pisak podany jako parametr

funkcji nie istnieje.6 Nazwa zmiennej reprezentującej trend

nie występuje na liście zmiennych programu InTouch.

7 Numer pisaka podany jako parametr funkcji nie mieści się w dopuszczalnym zakresie (od 1 do 8).

8 Dla podanego numeru pisaka nie istnieje zmienna/zmienna nie jest zarejestrowana.

Przykład(y) Poniższa instrukcja powoduje odczytanie kodu błędu, który wystąpił podczas ostatniego odczytu danych historycznych dla pisaka Pen3 trendu związanego ze zmienną Trend1 i zapisanie tego kodu jako zmiennej całkowitej ResultCode:[ResultCode=]HTGetLastError("Trend1",Trend1.UpdateCount,3);

Poniższą instrukcję można wykorzystać w wyrażeniu połączenia animacyjnego do wyświetlania wartości analogowych:HTGetLastError("Trend1",Trend1.UpdateCount,3);

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 251

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

Kategoria dane historyczneSkładnia MessageResult=HTGetPenName(Hist_Tag,UpdateCount,PenNum)

Parametr OpisHist_Tag Nazwa zmiennej typu HistTrend reprezentującej

trend historyczny.UpdateCount Liczba całkowita reprezentująca wartość pola

.UpdateCount zmiennej reprezentującej trend.PenNum Zmienna typu Integer lub liczba całkowita

określająca numer pisaka (od 1 do 8). Funkcja zwraca nazwę zmiennej związanej z tym pisakiem w postaci zmiennej tekstowej (Message).

Przykład(y) Poniższa instrukcja powoduje odczytanie nazwy zmiennej przypisanej do pisaka Pen2 trendu związanego ze zmienną Trend1, a następnie zapisuje nazwę do zmiennej tekstowej TrendPen:TrendPen=HTGetPenName("Trend1",Trend1.UpdateCount,2);

Opis pól, funkcji i zmiennych systemowych

252 Rozdział 3

HTGetTimeAtScooter()Podaje w sekundach czas, jaki upłynął od godziny 00:00:00, 1 stycznia 1970 czasu GMT, dla podanej pozycji suwaka określonej przez ScootNum i ScootLoc.

Kategoria dane historyczneSkładnia IntegerResult=HTGetTimeAtScooter(Hist_Tag,UpdateCount,

ScootNum,ScootLoc);

Parametr OpisHist_Tag Nazwa zmiennej typu HistTrend reprezentującej

trend historyczny.UpdateCount Liczba całkowita reprezentująca wartość pola

.UpdateCount zmiennej reprezentującej trend.ScootNum Zmienna typu Integer lub liczba całkowita

określająca prawy lub lewy suwak.1=lewy suwak2=prawy suwak

ScootLoc Liczba rzeczywista oznaczająca wartość pola .ScooterPosRight lub .ScooterPosLeft zmiennej reprezentującej trend.

Uwagi W przypadku, gdy parametry UpdateCount, ScootNum, i ScootLoc ulegną zmianie, wymuszane jest uaktualnienie wartości wyrażenia. Zapewnia to obliczanie wartości wyrażenia po odczycie nowych danych, lub po przemieszczeniu suwaka.

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

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 253

HTGetTimeStringAtScooter()Zwraca ciąg znaków zawierający czas/datę próbki w pozycji suwaka określonej przez ScootNum i ScootLoc.

Kategoria dane historyczneSkładnia MessageResult=HTGetTimeStringAtScooter(Hist_Tag,

UpdateCount,ScootNum,ScootLoc,Format_Text);

Parametr OpisHist_Tag Nazwa zmiennej typu HistTrend reprezentującej

trend historyczny.UpdateCount Liczba całkowita reprezentująca wartość pola

.UpdateCount zmiennej reprezentującej trend.ScootNum Zmienna typu Integer lub liczba całkowita

określająca prawy lub lewy suwak.1=lewy suwak2=prawy suwak

ScootLoc Liczba rzeczywista oznaczająca wartość pola .ScooterPosRight lub .ScooterPosLeft zmiennej reprezentującej trend.

Format_Text Łańcuch znaków określający format czasu/daty, który ma zostać użyty. Dopuszczalne są następujące wartości Format_Text:"Date" , "Time" , "DateTime" , "DOWShort" (dzień tygodnia w skrócie, np. Wed - środa), "DOWLong" (dzień tygodnia w całości, np. Wednesday - środa).

Uwagi W przypadku, gdy parametry UpdateCount, ScootNum, i ScootLoc ulegną zmianie, wymuszane jest uaktualnienie wartości wyrażenia. Zapewnia to zaktualizowanie wartości po znalezieniu nowych danych, lub po przemieszczeniu suwaka. Format tekstu określa zawartość wartości zwracanej.

Przykład(y) Poniższa instrukcja powoduje odczytanie daty i czasu dla aktualnej pozycji prawego suwaka trendu reprezentowanego przez zmienną Trend1. Data i czas są zapisywane jako zmienna tekstowa o nazwie NewRightTimeString w formacie "Time":NewRightTimeString=HTGetTimeStringAtScooter ("Trend1",Trend1.UpdateCount,2,Trend1.ScooterPosRight, "Time");

Opis pól, funkcji i zmiennych systemowych

254 Rozdział 3

HTGetValue()Funkcja ta zwraca wartość określonego typu (np. maksymalna, minimalna, średnia, itp.) dla wykresu trendu historycznego dla danego pisaka. Parametr UpdateCount wymusza obliczanie wartości wyrażenia po odczytaniu danych.

Kategoria dane historyczneSkładnia RealResult=HTGetValue(Hist_Tag,UpdateCount,PenNum,

ValType_Text);

Parametr OpisHist_Tag Nazwa zmiennej typu HistTrend reprezentującej

trend historyczny.UpdateCount Liczba całkowita reprezentująca wartość pola

.UpdateCount zmiennej reprezentującej trend.PenNum Zmienna typu Integer lub liczba całkowita

określająca numer pisaka (od 1 do 8).ValType_Text Łańcuch znaków określający rodzaj wskaźnika, który

ma być obliczony przez funkcję:Typ Opis"PenAverageValue" Wartość średnia dla trendu."PenMaxValue" Wartość maksymalna dla

trendu."PenMinValue" Wartość minimalna dla

trendu."PenMaxEU" Wartość maksymalna

w jednostkach inżynierskich dla trendu.

"PenMinEU" Wartość minimalna w jednostkach inżynierskich dla trendu.

"PenStdDev" Wartość odchylenia standardowego dla trendu.

W przypadku korzystania z parametru ValType_Text w połączeniu z funkcją HTGetValue, należy upewnić się, że wykorzystywany jest jeden z dopuszczalnych typów wymienionych powyżej.

Uwagi Wynikiem obliczeń jest wartość rzeczywista obliczonego wskaźnika, którą można zapisać jako zmienną pamięciową typu Real.

Przykład(y) Następujące wyrażenie odczytuje odchylenie standardowe dla danych z trendu, Trend1, Pen2. Wartość zostaje zapisana w zmiennej Memory Real LeftHemisphereSD:LeftHemisphereSD=HTGetValue("Trend1",Trend1.UpdateCount,2, "PenStdDev");

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 255

HTGetValueAtScooter()Funkcja ta zwraca wartość odpowiedniego typu dla próbki wyznaczonej przez pozycje suwaka na trendzie oraz numer pisaka. Parametr UpdateCount wymusza obliczanie wartości wyrażenia po odczytaniu danych.

Kategoria dane historyczneSkładnia RealResult=HTGetValueAtScooter(Hist_Tag,UpdateCount,

ScootNum,ScootLoc,PenNum,ValType_Text);

Parametr OpisHist_Tag Nazwa zmiennej typu HistTrend reprezentującej

trend historyczny.UpdateCount Liczba całkowita reprezentująca wartość pola

.UpdateCount zmiennej reprezentującej trend.ScootNum Zmienna typu Integer lub liczba całkowita

określająca prawy lub lewy suwak.1=lewy suwak2=prawy suwak

ScootLoc Liczba rzeczywista oznaczająca wartość pola .ScooterPosRight lub .ScooterPosLeft zmiennej reprezentującej trend.

PenNum Zmienna typu Integer lub liczba całkowita określająca numer pisaka (od 1 do 8).

ValType_Text Łańcuch znaków określający rodzaj wartości, która ma być obliczona przez funkcję:Typ Opis"PenValue" Wartość na wykresie w pozycji

suwaka."PenValid" 0 - jeśli wartości nie można wyznaczyć,W przypadku korzystania z parametru ValType_Text w połączeniu z funkcją HTGetValueAtScooter należy upewnić się, że wykorzystywany jest jeden z dopuszczalnych typów wymienionych powyżej.

Uwagi Zwracana jest zmienna typu Memory Real, reprezentująca wartość obliczoną dla "PenValue". Zwracana jest zmienna typu Discrete, reprezentująca wartość obliczoną dla "PenValid".

Przykład(y) Poniższa instrukcja powoduje zapisanie pod zmienną dyskretną o nazwie ValidFlag wartości 1, jeśli wartość próbki odpowiadającej bieżącej pozycji prawego suwaka dla pisaka Pen3 na wykresie trendu związanego ze zmienną Trend1 można wyznaczyć lub wartości 0, jeśli wartości próbki nie można wyznaczyć:ValidFlag=HTGetValueAtScooter("Trend1",Trend1.UpdateCount,2, Trend1.ScooterPosRight,3,"PenValid");

Opis pól, funkcji i zmiennych systemowych

256 Rozdział 3

HTGetValueAtZone()Funkcja ta zwraca wartość określonego typu (np. maksymalna, minimalna, średnia, itp.) dla danych zawartych pomiędzy lewym i prawym suwakiem na wykresie trendu historycznego, dla danego pisaka. Parametr UpdateCount wymusza obliczanie wartości wyrażenia po odczytaniu danych.

Kategoria dane historyczneSkładnia RealResult=HTGetValueAtZone(Hist_Tag,UpdateCount,

Scoot1Loc,Scoot2Loc,PenNum,ValType_Text);

Parametr OpisHist_Tag Nazwa zmiennej typu HistTrend reprezentującej

trend historyczny.UpdateCount Liczba całkowita reprezentująca wartość pola

.UpdateCount zmiennej reprezentującej trend.Scoot1Loc Liczba rzeczywista oznaczająca wartość pola

.ScooterPosLeft (pozycja lewego suwaka) zmiennej reprezentującej trend.

Scoot2Loc Liczba rzeczywista równa wartości pola .ScooterPosRight (pozycja prawego suwaka) zmiennej reprezentującej trend.

PenNum Zmienna typu Integer lub liczba całkowita określająca numer pisaka (od 1 do 8).

ValType_Text Łańcuch znaków określający rodzaj wskaźnika, który ma być obliczony przez funkcję:Typ Opis"PenAverageValue" Wartość średnia dla

obszaru pomiędzy lewym a prawym suwakiem.

"PenMaxValue" Wartość maksymalna dla obszaru pomiędzy lewym a prawym suwakiem.

"PenMinValue" Wartość minimalna dla obszaru pomiędzy lewym a prawym suwakiem.

"PenMaxEU" Wartość maksymalna w jednostkach inżynierskich dla obszaru pomiędzy lewym a prawym suwakiem.

"PenMinEU" Wartość minimalna w jednostkach inżynierskich dla obszaru pomiędzy lewym a prawym suwakiem.

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 257

HTScrollLeft()

"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 po to, 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");

Funkcja ta przesuwa punkt początkowy wykresu trendu do tyłu w stosunku do aktualnego punktu początkowego o czas stanowiący procentową część długości wykresu trendu. Powoduje to przewinięcie wykresu w lewo o określoną procentowo wartość.

Kategoria dane historyczneSkładnia HTScrollLeft(Hist_Tag,Percent);

Parametr OpisHist_Tag Nazwa zmiennej typu HistTrend reprezentującej

trend historyczny.Percent Liczba rzeczywista oznaczająca wartość przesunięcia

w procentach długości wykresu. (wartość zawiera się w zakresie od 0.0 do 100.0)

Przykład(y) Poniższa instrukcja powoduje przesunięcie wykresu trendu związanego ze zmienną Trend1 o 10% w prawo:HTScrollLeft("Trend1",10.0);

Jeśli aktualny wykres rozpoczyna się o 12:00:00, a długość wykresu w jednostkach czasu wynosi 60 sekund, wtedy po wykonaniu tej operacji nowy wykres będzie zaczynał się o 11:59:54.

Opis pól, funkcji i zmiennych systemowych

258 Rozdział 3

HTScrollRight()

HTSelectTag()

Funkcja ta przesuwa punkt początkowy wykresu trendu do przodu w stosunku do aktualnego momentu początkowego o czas stanowiący procentową część długości wykresu trendu. Powoduje to przewinięcie wykresu w prawo o określoną procentowo wartość.

Kategoria dane historyczneSkładnia HTScrollRight(Hist_Tag,Percent);

Parametr OpisHist_Tag Nazwa zmiennej typu HistTrend reprezentującej

trend historyczny.Percent Liczba rzeczywista oznaczająca wartość przesunięcia

w procentach długości wykresu. (wartość zawiera się w zakresie od 0.0 do 100.0)

Przykład(y) Poniższa instrukcja powoduje przesunięcie wykresu trendu związanego ze zmienną Trend1 o 20% w prawo:HTScrollRight("Trend1",20.0);

Jeśli aktualny wykres rozpoczyna się o 12:00:00, a długość wykresu w jednostkach czasu wynosi 60 sekund, to po wykonaniu tej operacji nowy wykres będzie zaczynał się o 12:00:12.

Funkcja ta wyświetla okno dialogowe Select Tag (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 Log Data (Loguj dane))).

Kategoria dane historyczneSkładnia HTSelectTag();

Uwagi Funkcja HTSelectTag() wyświetla wszystkie zmienne, dla których ustawiono opcję Log Data (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()

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 259

HTSetPenName()

HTUpdateToCurrentTime()

Przypisanie innej zmiennej do pisaka trendu.Kategoria dane historyczneSkładnia HTSetPenName(Hist_Tag,PenNum,Tagname);

Parametr OpisHist_Tag Nazwa zmiennej typu HistTrend reprezentującej

trend historyczny.PenNum Zmienna typu Integer lub liczba całkowita równa

numerowi pisaka (od 1 do 8), który ma zostać związany z zmienną Tagname.

Tagname Zmienna tekstowa oznaczająca nazwę zmiennej przypisanej danemu pisakowi.

Uwagi Jedyną metodą dodawania zmiennych zdefiniowanych u dostawcy danych historycznych w czasie pracy aplikacji, jest korzystanie z funkcji skryptowych QuickScript.

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

Funkcja ta odczytuje i wyświetla dane historyczne dla okresu kończącego się w bieżącej chwili. Punkt początkowy wykresu trendu historycznego będzie równy różnicy punktu końcowego i długości wykresu.

Kategoria dane historyczneSkładnia HTUpdateToCurrentTime(Hist_Tag);

Parametr OpisHist_Tag Nazwa zmiennej typu HistTrend reprezentującej

trend historyczny.Przykład(y) Poniższa instrukcja powoduje odczytanie i zaktualizowanie, aż do

bieżącego momentu, danych dla wykresu trendu historycznego związanego ze zmienną "Trend1" HTUpdateToCurrentTime("Trend1");

Jeśli wykres rozpoczyna się o 16:04, a długość wykresu w jednostkach czasu wynosi 60 sekund, to po wykonaniu tej instrukcji wykres będzie kończył się dla danych zebranych o godzinie 16.04. Nową godziną początkową będzie 16.03.

Opis pól, funkcji i zmiennych systemowych

260 Rozdział 3

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

Kategoria dane historyczneSkładnia HTZoomIn(Hist_Tag,LockString);

Parametr OpisHist_Tag Nazwa zmiennej typu HistTrend reprezentującej

trend historyczny.LockString Łańcuch znaków określający sposób zmiany skali

wykresu.Typ Opis"StartTime" Punkt początkowy wykresu pozostaje

bez zmian."Center" Centralny punkt wykresu pozostaje bez

zmian."EndTime" Punkt końcowy wykresu pozostaje bez

zmian.Uwagi Jeśli pozycje suwaków nie odpowiadają krawędziom wykresu, nowa

długość okna wykresu będzie odpowiadała odległości pomiędzy suwakami (.ScooterPosLeft a .ScooterPosRight). W takim przypadku parametr LockString nie jest używany. Minimalna długość okna wykresu wynosi 1 sekundę. Po zmianie skali wykresu, suwaki przyjmą następujące pozycje: .ScooterPosLeft=0.0 oraz .ScooterPosRight=1.0.

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

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 261

HTZoomOut()Funkcja ta oblicza nową szerokość wykresu oraz punkt początkowy. Nowa szerokość wykresu jest równa szerokości starego wykresu pomnożonej przez dwa. Nowy punkt początkowy zostanie obliczony na podstawie wartości LockString.

Kategoria dane historyczneSkładnia HTZoomOut(Hist_Tag,LockString);

Parametr OpisHist_Tag Nazwa zmiennej typu HistTrend reprezentującej

trend historyczny.LockString Łańcuch znaków określający sposób zmiany skali

wykresu.Typ Opis"StartTime" Punkt początkowy wykresu pozostaje

bez zmian."Center" Centralny punkt wykresu pozostaje bez

zmian."EndTime" Punkt końcowy wykresu pozostaje bez

zmian.Uwagi Pozycje suwaków nie mają wpływu na działanie funkcji HTZoomOut, ale

po wykonaniu operacji zmiany skali wykresu przyjmą one następujące wartości: .ScooterPosLeft=0.0 oraz .ScooterPosRight=1.0.

Przykład(y) Zamieszczona poniżej instrukcja powoduje dwukrotne powiększenie wyświetlanego wykresu, z zachowaniem tego samego punktu centralnego dla zmiennej trendu historycznego "Volume". Jeżeli początkowy czas przed pomniejszaniem to 2:15:00 PM natomiast szerokość wykresu wynosiła 30 sekund, po pomniejszeniu początkowy czas to 2:14:45. Szerokość wykresu będzie wynosiła 60 sekund, a środek wykresu będzie znajdował się na godzinie 2:15:15.HTZoomOut("Volume","Center");

Opis pól, funkcji i zmiennych systemowych

262 Rozdział 3

InfoAppActive()

InfoAppTitle()

Sprawdza, czy podana aplikacja jest uruchomiona.Kategoria systemSkładnia DiscreteResult=InfoAppActive(AppTitle);

Parametr OpisAppTitle Nazwa sprawdzanej aplikacji podana jako

łańcuch znaków.Przykład(y) InfoAppActive("Calculator") zwróci 0 {o ile nie jest on uruchomiony}

Nazwę danej aplikacji można uzyskać stosując funkcję InfoAppTitle().Zamieszczony poniżej skrypt QuickScript korzysta z funkcji InoAppActive do sprawdzenia listy zadań uruchomionych w systemie. Jeżeli jest uruchomione zadanie o nazwie Notatnik, zwracana jest wartość 1. Pozwala to na uniknięcie ponownego uruchomienia zadania o nazwie Notatnik. Jeżeli funkcja InfoAppActive zwraca wartość 0 (Notatnik nie jest uruchomiony), następuje jego uruchomienie.IF InfoAppActive( InfoAppTitle( "Notepad" ) ) == 1 THENActivateApp InfoAppTitle( "Notepad" );

ELSEStartApp "Notepad";

ENDIF;

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

Kategoria systemSkładnia MessageResult=InfoAppTitle(“ProgramEXEName”);

Parametr OpisProgramEXEName Łańcuch znaków zawierający nazwę pliku

z rozszerzeniem .EXE. Przykład(y) Zamieszczona poniżej przykładowa instrukcja z parametrem

ProgramEXEName równym "calc" zwróci wartość "Kalkulator". Nazwą programu jest calc.exe. W nazwie programu nie podawać rozszerzenia exe.InfoAppTitle("calc") zwróci tekst "Calculator"

InfoAppTitle("excel") zwróci tekst "Microsoft Excel"

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 263

InfoDisk()Zwraca informacje na temat lokalnego lub sieciowego napędu.

Kategoria systemSkładnia IntegerResult=InfoDisk(“Drive”,InfoType,Trigger);

Parametr OpisDrive Łańcuch znaków lub zmienna tekstowa z nazwą

dysku.InfoType Liczba całkowita określająca rodzaj informacji:

Typ Opis1 Odczyt całkowitej pojemności dysku

(w bajtach).2 Odczyt dostępnego, wolnego obszaru

na dysku (w bajtach).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). Ten parametr ma znaczenie jedynie wtedy, gdy funkcja InfoDisk() jest wykorzystana w polu połączenia animacyjnego. Nie ma on znaczenia, jeżeli funkcja InfoDisk() jest uruchamiana przez skrypt.

Uwagi Informacje o dysku określonym parametrem Drive są zwracane jako wartość całkowita.

Przykład(y) Zamieszczona poniżej instrukcja jest wykonywana co minutę, zwracając bieżącą wartość. Po umieszczeniu w połączeniu wyświetlającym wartości analogowych, wartość będzie uaktualniana co minutę.InfoDisk("C", 1, $Minute) zwróci 233869345{rozmiar całkowity w bajtach}

InfoDisk("C", 2, $Minute) zwróci 3238935{wolna przestrzeń w bajtach}

InfoDisk("C", 3, $Minute) zwróci 228388{rozmiar całkowity w kilobajtach}

InfoDisk("C", 4, $Minute) zwróci 3163{wolna przestrzeń w kilobajtach}

Komentarz 1 kilobajt = 1024 bajtówPodobnie jak w przypadku innych funkcji, które wykorzystują pojedyncze znaki, jeśli badany łańcuch znaków (lub zmienna tekstowa) użyty jako nazwa dysku w funkcji InfoDisk() zawiera więcej niż jeden znak, testowany jest tylko pierwszy znak tego łańcucha.

Opis pól, funkcji i zmiennych systemowych

264 Rozdział 3

InfoFile()Zwraca informacje o określonym pliku lub kartotece.

Kategoria systemSkładnia IntegerResult=InfoFile(“Filename”,”InfoType”,Trigger);

Parametr OpisFilename Łańcuch znaków zawierający nazwę pliku lub

zmienna typu Message.InfoType Liczba całkowita określająca rodzaj informacji:

Typ Opis1 Sprawdza, czy zadany plik istnieje.

Jeżeli parametr Filename jest plikiem, zwracana jest wartość 1. Jeżeli parametr Filename jest podkartoteką, zwracana jest wartość 2. W przypadku, gdy funkcja nie może znaleźć pliku, zwracana jest wartość 0.

2 Rozmiar pliku (w bajtach).3 Data i czas zapisu pliku (w sekundach

od 1 stycznia 1970).4 Liczba plików odpowiadających

opisowi. Wartości większe od 1 zostaną zwrócone tylko w przypadku szukania z zastosowaniem znaków * lub ?, gdy znalezionych może zostać więcej plików odpowiadających opisowi.

Trigger Dowolna zmienna. Funkcja InfoFile jest wykonywana po każdej zmianie parametru Trigger. Parametr ten jest używany wyłącznie w polach wyrażeń animacyjnych. Można użyć dowolnej wartości w przypadku, gdy funkcja InfoFile() wykorzystywana jest w skrypcie QuickScript, ponieważ parametr ten nie ma żadnego wpływu na wykonywanie skryptu.

Uwagi Informacje o pliku określonym parametrem FileName są zwracane jako wartość całkowita. Parametr Filename musi zawierać pełną ścieżkę dostępu do pliku i może zawierać znaki * oraz ?.

Przykład(y) Zamieszczone poniżej przykładowe instrukcje zwracają co minutę następujące informacje:InfoFile("c:\IT56\view.exe", 1, $Minute) zwróci1 {plik odnaleziony}InfoFile("c:\InTouch\view.exe", 2, $Minute) zwróci634960 {rozmiar pliku}InfoFile("c:\InTouch\view.exe", 3, $Minute) zwróci736701852 {liczba sekund od 1-1-70}InfoFile("c:\InTouch\*.exe", 4, $Minute) zwróci17 {odnaleziono 17 plików EXE}

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 265

InfoInTouchAppDir()

InfoResources()

Zwraca kartotekę aktualnej aplikacji InTouch.Kategoria systemSkładnia MessageResult=InfoInTouchAppDir();

Uwagi Nazwa katalogu aktualnie uruchomionej aplikacji InTouch 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 systemSkładnia IntegerResult=InfoResources(ResourceType,Trigger);

Parametr OpisResourceType Liczba całkowita określająca rodzaj informacji.

Uwagi Ten zasób systemowy określony przez liczbę całkowitą jest zapisany w zmiennej całkowitej.

Przykład(y) Następujące wyrażenie jest wywoływane co minutę i zwraca bieżącą wartość: InfoResources(1, $Minute) zwróci wartość 54 {% wolnych zasobów} InfoResources(2, $Minute) zwróci wartość 36 {% wolnych zasobów} InfoResources(3, $Minute) zwróci wartość 11524093 {bajtów} InfoResources(4, $Minute) zwróci wartość 14 {liczba aktywnych aplikacji} Informacje o zasobach systemu: Wartość 1&Wartość 2 Pamięci GDI i Użytkownika zakodowane są na zwracanie 50% w systemach Windows NT i Windows 2000.

Wartość 3) W systemie Windows NT i Windows 2000 zwracana jest "liczba wolnych bajtów pliku stronicowania".

Wartość 4) W systemie Windows NT i Windows 2000 zwracany jest wynik przeszukiwania wszystkich okien umieszczonych na samej górze. Zliczane są wyłącznie okna widoczne, nie należące do innych okien. Nie jest to w rzeczywistości "liczba zadań uruchomionych w danej chwili" w systemie. Najlepszym przybliżeniem tej liczby jest liczba elementów na zakładce Aplikacje dostępnej po uruchomieniu Menedżera zadań w systemie Windows NT, lub liczba pozycji wyświetlana na liście po wciśnięciu klawiszy ctrl+alt+del w systemie Windows 2000.

Opis pól, funkcji i zmiennych systemowych

266 Rozdział 3

Int()

InTouchVersion()

Zwraca najbliższą liczbę całkowitą, mniejszą lub równą podanej liczbie.Kategoria funkcje matematyczneSkładnia IntegerResult=Int(Number);

Parametr OpisNumber Dowolna liczba, zmienna rzeczywista (Real) lub

całkowita (Integer) programu InTouch.Uwagi W przypadku podanej liczby ujemnej, wynikiem działania funkcji jest

największa liczba całkowita mniejsza lub równa argumentowi funkcji.Przykład(y) Int(4.7) daje w wyniku 4

Int(-4.7) daje w wyniku –5

Zwraca wartość tekstową zależną od wartości VERSION_TYPE.Użytkownik może wybrać jedną z 5 opcji: od 0 do 4 włącznie. Jeżeli użytkownik wprowadzi ujemną wartość całkowitą lub wartość większą niż 4, wersja zostanie zwrócona w postaci wartości domyślnej.

Kategoria ViewSkładnia InTouchVersion( VersionType )

Parametr OpisVersionType Wejście (liczba całkowita)0 Zostanie wyświetlona pełna wersja.1 Wyświetlony zostanie główny indeks wersji ("9").2 Wyświetlony zostanie drugorzędny indeks wersji

("0").3 Numer łaty ("1"). Dla programu InTouch SP1, numer

łaty będzie wynosić 1.4 Wyświetlony zostanie numer kompilacji.

Uwagi Brak.Przykład(y) MTag = IntouchVersion (nVersionType);

Gdzie Mtag jest zmienną typu Memory Message, a nVersionType jest wartością całkowitą.

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 267

InvisibleVerifyCredentials()

IODisableFailover()

Sprawdza podaną przez użytkownika nazwę i hasło bez logowania go do aplikacji.

Kategoria bezpieczeństwoSkładnia AnalogTag=InvisibleVerifyCredentials( "UserId",

"Password", "Domain" );

Parametr OpisUserId Nazwa konta użytkownika systemu Windows na

lokalnym komputerze, domenie lub grupie roboczej.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().

Ta funkcja włącza/wyłącza rezerwację dla nazwy dostępu. Kategoria KomunikacjaSkładnia IODisableFailover("AccessName",Option);

Parametr OpisAccessName Nazwa dostępu, dla której skonfigurowana została

rezerwacja.Opcja 1 = wyłącza rezerwację

0 = włącza rezerwacjęUwagi Nazwa dostępu może być łańcuchem znaków, wartością innej zmiennej

programu InTouch lub wartością funkcji. Opcja "1" powoduje wyłączenie rezerwacji, natomiast "0" powoduje jej włączenie.

Przykład(y) IODisableFailOver("Acc1",1); wyłącza rezerwację dla nazwy dostępu "Acc1".

Opis pól, funkcji i zmiennych systemowych

268 Rozdział 3

IOForceFailover()

IOGetAccessNameStatus()

Następuje przełączenie nazwy dostępu i funkcję komunikacji przejmuje rezerwowy program komunikacyjny.

Kategoria KomunikacjaSkładnia IOForceFailover(AccessName);

Parametr OpisAccessName Nazwa dostępu, dla której skonfigurowana została

rezerwacja.Uwagi Przykład(y) Zakładając, że "Acc1" posiada dwa źródła, "Primary" oraz

"Secondary", źródło "Primary" jest aktywne.IOForceFailOver("Acc1"); powoduje przełączenie aktywnego źródła z "Primary" na "Secondary".

Zwraca stan głównego, rezerwowego lub aktywnego źródła danych dla nazwy dostępu. Nazwa dostępu może być łańcuchem znaków, wartością innej zmiennej programu InTouch lub wartością funkcji.

Kategoria różneSkładnia Result=IOGetAccessNameStatus(Accessname, Mode);

Parametr OpisAccessName Istniejąca nazwa dostępu, dla której zwrócona ma być

nazwa źródła.Mode 0 - stan aktywnego źródła danych dla nazwy dostępu

AccessName.1 - stan głównego źródła danych dla nazwy dostępu AccessName.2 - stan rezerwowego źródła danych dla nazwy dostępu AccessName.

Wynik -1 - Wystąpił błąd konfiguracyjny (nazwa dostępu AccessName nie istnieje lub rezerwowe źródło danych, którego dotyczy zapytanie nie zostało skonfigurowane).0 - Połączenie z żądanym źródłem danych nie powiodło się.1 - Połączenie z żądanym źródłem danych powiodło się.

Uwagi Ta funkcja określa stan rezerwowego źródła danych. Można ją wykorzystać do sprawdzenia, czy rezerwowe źródło danych działa prawidłowo, zanim nastąpi przełączenie.

Przykład(y) Status=IOGetAccessNameStatus("Acc1",0); gdzie "Acc1" jest nazwą dostępu.

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 269

IOGetActiveSourceName()

IOGetApplication()

Zwraca dla nazwy dostępu aktywne źródło danych.Kategoria różneSkładnia Result=IOGetActiveSourceName(Accessname);

Parametr OpisAccessName Istniejąca nazwa dostępu, dla której zwrócony ma

być stan źródła danych.Uwagi Ta funkcja zwraca główne źródło danych, jeżeli jest ono aktywne.

Aktywne nazwy dostępu, dla których nie została skonfigurowana rezerwacja zawsze zwracają tą wartość. Ta funkcja zwraca rezerwowe źródło danych, jeżeli jest ono aktywne. Jeżeli dla nazwy dostępu nie zostało skonfigurowane rezerwowe źródło danych, funkcja nie zwróci żadnej wartości. Jeżeli nazwa dostępu nie jest aktywna, zwrócona zostanie pusta wartość.

Przykład(y) Source= IOGetActiveSourceName ("ACC1")

Gdzie ACC1 jest nazwą dostępu a zwracana wartość to: ”Primary” jeżeli odczytywane jest główne źródło danych"Secondary" jeżeli odczytywane jest rezerwowe źródło danych“Null” jeżeli oba źródła danych nie są aktywne

Funkcja ta zwraca nazwę aplikacji zdefiniowaną dla podanej nazwy dostępu do określonej zmiennej.

Kategoria różneSkładnia IOGetApplication(“AccessName”);

Parametr OpisAccessName Istniejąca nazwa dostępu, dla której zwrócona ma być

nazwa aplikacji.Uwagi Nazwa dostępu może być łańcuchem znaków, wartością innej zmiennej

programu InTouch lub wartością funkcji. Zamieszczona poniżej przykładowa instrukcja przypisze do zmiennej MyTag1 nazwę aplikacji zdefiniowaną dla nazwy dostępu MyAccess1.

Przykład(y) MyTag1 = IOGetApplication("MyAccess1");

Opis pól, funkcji i zmiennych systemowych

270 Rozdział 3

IOGetNode()

IOGetTopic()

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

Kategoria różneSkładnia IOGetNode(“AccessName”);

Parametr OpisAccessName Istniejąca nazwa dostępu, dla której zwracana

jest informacja.Uwagi Nazwa dostępu może być łańcuchem znaków, wartością innej zmiennej

programu InTouch lub wartością funkcji. Zamieszczona poniżej przykładowa instrukcja przypisze do zmiennej MyTag1 adres stacji zdefiniowany dla nazwy dostępu MyAccess1.

Przykład(y) MyTag1 = IOGetNode("MyAccess1");

Funkcja ta zwraca nazwę tematu zdefiniowanego dla podanej nazwy dostępu dla określonej zmiennej.

Kategoria różneSkładnia IOGetTopic(“AccessName”);

Parametr OpisAccessName Istniejąca nazwa dostępu, dla której będzie zwrócona

nazwa tematu.Uwagi Nazwa dostępu może być łańcuchem znaków, wartością innej zmiennej

programu InTouch lub wartością funkcji. Zamieszczona poniżej przykładowa instrukcja przypisze do zmiennej MyTag1 nazwę tematu zdefiniowaną dla nazwy dostępu MyAccess1.

Przykład(y) MyTag1 = IOGetTopic("MyAccess1");

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 271

IOReinitAccessName()

IOReinitialize()

Reinicjalizuje określoną nazwę dostępu z domyślnymi ustawieniami.Kategoria IOCommunicationSkładnia IOReinitAccessName("AccessName", Default);

Parametr OpisAccessName Nazwa dostępu AccessName, która ma zostać

zreinicjalizowana.Default Default = 1. Nazwa dostępu użyje domyślnych

ustawień skonfigurowanych w programie WindowMaker.Default = 0. Nazwa dostępu zostanie zreinicjalizowana używając bieżących ustawień serwera, aplikacji oraz tematu.

Uwagi Domyślne ustawienia znajdują się w konfiguracji nazwy dostępu oraz w konfiguracji programu WindowViewer.

Przykład(y) IOReinitAccessName("AccessName1", 1); W tym wypadku, nazwa dostępu "AccessName1" użyje domyślnych ustawień.

IOReinitAccessName("AccessName2", 0);W tym wypadku, nazwa dostępu "AccessName2" zostanie zreinicjalizowana używając bieżących ustawień.

Funkcja ta powoduje zamknięcie wymiany danych ze wszystkimi istniejącymi programami komunikacyjnymi, a następnie ponowne wznowienie całego procesu inicjalizacji komunikacji. Funkcja ta dotyczy wszystkich programów komunikacyjnych.

Kategoria różneSkładnia IOReinitialize();

Uwagi Działanie tej funkcji powoduje wykonanie tej samej operacji co polecenie Reinitialize I/O (Reinicjalizuj komunikację) z menu Special (Specjalne) programu WindowViewer.

Opis pól, funkcji i zmiennych systemowych

272 Rozdział 3

IOSetAccessName()Zmodyfikowanie części application lub topic nazwy dostępu w czasie działania aplikacji, co pozwala na zaimplementowanie strategii hot- backup (rezerwacji komunikacji).

Kategoria różneSkładnia IOSetAccessName(“AccessName”, “NodeName”, “AppName”,

“TopicName”);

Parametr OpisAccessName Istniejąca nazwa dostępu, dla której mają być

przypisane nowe wartości parametrów AppName i TopicName. Łańcuch znaków lub zmienna tekstowa.

NodeName Nowa wartość parametru NodeName. Łańcuch znaków lub zmienna tekstowa.

Aby użyć istniejącej nazwy stacji, należy użyć "" bez łańcuch a znaków. Aby użyć istniejącej stacji lokalnej, należy użyć " ". (puste miejsce)

AppName Nowa wartość parametru AppName. Łańcuch znaków lub zmienna tekstowa.

TopicName Nowa wartość parametru TopicName. Łańcuch znaków lub zmienna tekstowa.

Uwagi Parametry AccessName, NodeName, AppName i TopicName mogą być łańcuchami znaków, wartościami innych zmiennych programu InTouch, lub wartościami funkcji.

Funkcja IOSetAccessName nie powinna być wykorzystywana do przekierowywana nazwy dostępu na wartości nazwy komputera, aplikacji i tematu, które są już wykorzystywane przez inną nazwę dostępu.

Przykład(y) Nazwa dostępu MyAccess1 może zostać zmieniona tak, aby wskazywała na aplikację "EXCEL" oraz temat "Sheet1" przy pomocy polecenia:

IOSetAccessName("MyAccess1","MyComputer1","EXCEL", "[Book1.xls]Sheet1");

lub,Number = 1;

AccNameString = “MyAccess” + Text(Number, "#");

IOSetAccessName(AccNameString, "", "EXCEL", "[Book1.xls]Sheet1");

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 273

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

Opis pól, funkcji i zmiennych systemowych

274 Rozdział 3

IOSetItem()Funkcja ta zmienia nazwę dostępu i/lub nazwę elementu w polu .Reference zmiennej typu I/O.

Kategoria różneSkładnia IOSetItem(“Tagname”,”AccessName”,”Item”);

Parametr OpisTagname Dowolna zmienna typu I/O ujęta w cudzysłowy.AccessName Nowa nazwa dostępuElement Nowa nazwa pozycji

Przykład(y) IOSetItem(TagName, AccessName, Item)

Wartości Tagname (Zmienna), AccessName (Nazwa dostępu) oraz Item (Element) mogą być łańcuchami znaków, wartościami innych zmiennych programu InTouch lub wartościami funkcji. Przykładowo, instrukcja zamieszczona poniżej zmienia pole .Reference zmiennej MyTag1 na nazwę dostępu "excel" i pozycję "R1C1":IOSetItem("MyTag1", "[Book1.xls]excel", "R1C1");

lub poprzezNumber = 1;

TagNameString = "MyTag" + Text(Number, "#");

IOSetItem(TagNameString, "[Book1.xls]excel", "R1C1");

Jeżeli jako wartość parametrów AccessName (Nazwa dostępu) i Item (Element) podany będzie pusty łańcuch znaków (""), zmienna zostanie deaktywowana. Przykładowo, w celu deaktywacji zmiennej MyTag2 należy wpisać:IOSetItem("MyTag2", "", "");

Podobnie, jeżeli jako wartość parametru Item (Element) wprowadzony zostanie pusty łańcuch znaków, bieżąca wartość elementu nie ulegnie zmianie, a parametr AccessName (Nazwa dostępu) 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 (Nazwa dostępu) wprowadzony zostanie pusty łańcuch znaków, bieżąca wartość nazwy dostępu nie ulegnie zmianie, a parametr element zostanie zaktualizowany. Zmiana nazwy elementu dla zmiennej MyTag3 na "R1C2", tak jak to przedstawiono poniżej, nie spowoduje zmiany bieżącej wartości nazwy dostępu:IOSetItem("MyTag4", "", "R1C2");

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 275

IOSetRemoteReferences()Zmienia zdalne odwołania w trakcie działania aplikacji. Można jej używać do zmiany odwołań do obiektów ArchestrA, zdalnych zmiennych InTouch lub elementów programów komunikacyjnych.

Kategoria Zamiany wartościSkładnia IOSetRemoteReferences(BaseAccess, NewAccess,

MatchString, SubstituteString, Mode);

Parametr OpisBaseAccess Parametr ten zawiera nazwę dostępu, do której będą

porównywane nazwy dostępu zdalnych odwołań.NewAccess Nowa nazwa dostępu. Nowa nazwa dostępu zostanie

ustawiona we wszystkich zdalnych odwołaniach, dla których pierwotna nazwa dostępu pokrywała się z parametrem BaseAccess oraz gdy pierwotna nazwa elementu pokrywała się z parametrem MatchString (jeżeli został określony).

MatchString Parametr ten zawiera nazwę elementu, do której będą porównywane nazwy elementów zdalnych odwołań. Jeżeli ten argument jest pusty, oznacza to, że każda nazwa elementu zdalnego odwołania spełni ten warunek.

SubstituteString Parametr określa, na jaki tekst ma zostać zamieniony oryginalny tekst występujący w nazwie elementu pokrywający się z parametrem MatchString. Jeżeli ten argument jest pusty, oznacza to, że żadna zmiana nie zostanie dokonana.

Mode Określa sposób, w jaki teksty są ze sobą porównywane. Porównywanie zawsze rozpoczyna się od początku nazwy elementu, nigdy od środka. 0 oznacza, że pokrywać musi się cała nazwa elementu do znaku "." 1 oznacza, że może się pokrywać tylko część nazwy nawet wtedy, gdy kolejnym znakiem nie jest znak "."

Uwagi Ta funkcja nie sprawdza poprawności nowej nazwy zmiennej lub nazwy dostępu przed zmianą odwołania.

Przykład(y) IOSetRemoteReferences("Galaxy", "", "pumpX", "pump001", 0);IOSetRemoteReferences("Galaxy", "TagServer1", "pumpX", "p2", 0);IOSetRemoteReferences("TagServer1", "TagServer2", "pumpX", "backpump3", 0)IOSetRemoteReferences("TagServer1", "", "Tank", "Plant", 1)

Opis pól, funkcji i zmiennych systemowych

276 Rozdział 3

IOStartUninitConversations()Po uruchomieniu programu WindowViewer funkcja ta automatycznie próbuje zainicjować wymianę danych z programami komunikacyjnymi. Jeżeli program komunikacyjny nie odpowiada, można ponownie wydać polecenie zainicjowania wymiany danych przez program WindowViewer z programami komunikacyjnymi poprzez użycie tej funkcji w skrypcie QuickScript.

Kategoria różneSkładnia IOStartUninitConversations();

Uwagi Działanie tej funkcji powoduje wykonanie tej samej operacji, co polecenie Start Uninitiated Conversations (Wznów niezainicjalizowane konwersacje) z menu Special (Specjalne) programu WindowViewer.

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 277

IsAnyAsyncFunctionBusy()Zadaniem tej funkcji jest sprawdzenie, czy w danej chwili uruchomiona jest jakakolwiek funkcja asynchroniczna. Funkcja ta może zostać użyta do wstrzymywania uruchamiania kolejnych funkcji asynchronicznych, aż do momentu zakończenia wykonywania już uruchomionych. Pozwala to na synchronizację pracy tych funkcji.

Kategoria systemSkładnia DiscreteTag=IsAnyAsyncFunctionBusy(timeout);

Parametr OpisDiscreteTag Zmienna typu dyskretnego, której wartość ustalana

jest w następujący sposób:Jeżeli przekroczony został czas oczekiwania na zakończenie wykonywania wszystkich funkcji QuickFunction, wartość zmiennej DiscreteTag ustawiana jest na 1Jeżeli nie jest wykonywana żadna funkcja asynchroniczna, wartość tej zmiennej ustawiana jest natychmiast na 0 lub też funkcja QuickFunction będzie czekać przez okres czasu podany w parametrze timeout. Jeżeli po upływie okresu czasu określonego parametrem timeout żadna funkcja QuickFunction nie będzie w trakcie wykonywania, wartość tej zmiennej zostanie ustawiona na 0.

timeout Wartość całkowita podająca w sekundach okres czasu, w ciągu którego będzie sprawdzane, czy jest uruchomiona funkcja asynchroniczna.

Wartość zero (0) oznacza brak oczekiwania.Przykład(y) Załóżmy, że zachodzi potrzeba połączenia szeregu baz danych SQL za

pomocą asynchronicznych funkcji QuickFunction oraz, że operacja ta będzie wymagać 2 minut. Najpierw należy wywołać funkcję asynchroniczną QuickFunction w celu połączenia się z bazą danych SQL. Następnie, należy wywołać funkcję IsAnyAsyncFunctionBusy(120) w celu zapewnienia odpowiedniej ilości czasu na realizację funkcji QuickFunction.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 IsAnyAsyncFunctionBusy() zwracać będzie wartość 1 (true). Można w tym momencie wyświetlić komunikat informujący operatora, że próba połączenia SQL nie powiodła się.Można skorzystać z następującego skryptu On Show (Przy otwarciu) związanego z oknem.IF IsAnyAsyncFunctionBusy(120) == 1 THENSHOW "Okno dialogowe - Błąd w połączeniu SQL";

ENDIF;

Opis pól, funkcji i zmiennych systemowych

278 Rozdział 3

IsAssignedRole()

Log()

Funkcja służy do sprawdzania, czy bieżąco zalogowany użytkownik posiada przypisaną rolę.

Kategoria bezpieczeństwoSkładnia DiscreteTag=IsAssignedRole( "RoleName" );

Parametr OpisRoleName Rola przypisana użytkownikowi ArchestrA.

Uwagi Właściwa dla trybu ArchestrA, dotyczy bieżąco zalogowanego użytkownika. Jeżeli użytkownik jest zalogowany oraz jeżeli ma przypisaną w środowisku Galaxy IDE rolę, zwracana jest wartość TRUE (PRAWDA). We wszystkich innych wypadkach zwracana jest wartość FALSE (FAŁSZ).

Przykład(y) DiscreteTag=IsAssignedRole( "Administrator" );

Patrz również AttemptInvisibleLogon(), PostLogonDialog(), InvisibleVerifyCredentials(), QueryGroupMembership(), AddPermission().

Funkcja ta oblicza wartość logarytmu naturalnego z podanej liczby.Kategoria funkcje matematyczneSkładnia RealResult=Log(Number);

Parametr OpisNumber Dowolna liczba, zmienna rzeczywista (Real) lub

całkowita (Integer) programu InTouch.Uwagi Logarytm naturalny z liczby Number jest obliczany i zapisywany jako

RealResult. Wartość logarytmu naturalnego z liczby 0 jest nie określona.Przykład(y) Log(100) daje w wyniku 4.605...

Log(1) daje w wyniku 0

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 279

LogMessage()

LogN()

Zapisuje komunikat zdefiniowany przez użytkownika w programie SMC LogViewer.

Kategoria różneSkładnia LogMessage(“Message_Tag”);

Parametr OpisMessage_Tag Tekst, który ma zostać zapisany w programie SMC

LogViewer. Ł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 SMC LogViewer jest oznaczony godziną i datą.

Przykład(y) LogMessage("Report Script is Running");

Powyższa instrukcja powoduje wysłanie do programu SMC LogViewer następującego komunikatu: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, “#”));

Zwraca logarytm x o podstawie n.Kategoria funkcje matematyczneSkładnia Result=LogN(Number,Base);

Parametr OpisNumber Dowolna liczba, zmienna rzeczywista (Real) lub

całkowita (Integer) programu InTouch.Base Podstawa logarytmu (liczba rzeczywista). Liczba

lub zmienna całkowita.Uwagi Wartość podstawy nie może być równa 1.Przykład(y) LogN(8, 3) daje w wyniku 1.89279

LogN(NumberTag, BaseTag) daje w wyniku 0.564 Jeśli wartością NumberTag jest 3, a BaseTag 7.

Opis pól, funkcji i zmiennych systemowych

280 Rozdział 3

Logoff()

LogonCurrentUser()

Wylogowuje użytkownika aplikacji InTouch.Kategoria bezpieczeństwoSkładnia DiscreteTag = LogOff();

Parametr Opis-

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

Powoduje zalogowanie do aplikacji InTouch bieżąco zalogowanego użytkownika Windows oraz zwraca poziom dostępu tego użytkownika.

Kategoria bezpieczeństwoSkładnia IntegerResult = LogonCurrentUser();

Parametr Opis-

Uwagi Z tej funkcji można korzystać jedynie w trybie systemu bezpieczeństwa zgodnym z systemem operacyjnym.Jeżeli logowanie powiedzie się, funkcja zwraca poziom dostępu użytkownika oraz ustawia zmienne systemowe $Operator, $OperatorName, $OperatorDomain oraz $AccessLevel. Jeżeli logowanie nie powiedzie się, funkcja zwraca -1 oraz nie zmienia wartości zmiennych systemowych $Operator, $OperatorName, $OperatorDomain oraz $AccessLevel.

Przykład(y) IntegerResult = LogonCurrentUser();

Patrz również PostLogonDialog(), InvisibleVerifyCredentials(), IsAssignedRole(), AttemptInvisibleLogon(), QueryGroupMembership(), AddPermission().

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 281

OpenWindowsList()

Pi()

Zwraca listę otwartych okien.Kategoria ViewSkładnia [Result=] OpenWindowsList();

Uwagi W czasie działania aplikacji wyświetlone zostaje okno dialogowe "Open Windows List" ("Lista otwartych okien"), na którym znajduje się lista wszystkich otwartych okien.

Przykład(y) OpenWindowsList ();

Zwraca wartość liczby Pi.Kategoria funkcje matematyczneSkładnia RealResult=Pi();

Przykład(y) Pi() daje w wyniku 3.1415926

Opis pól, funkcji i zmiennych systemowych

282 Rozdział 3

PlaySound()Odtwarza dźwięk zapisany w pliku .wav.

Kategoria różneSkładnia PlaySound(“SoundName”,Flags);

Parametr OpisSoundName Łańcuch znaków lub zmienna tekstowa, zawierająca

nazwę pliku dźwiękowego do odtworzenia.Flags Parametr Flags może mieć jedną z wartości:

Typ Opis0 Synchroniczne odtworzenie dźwięku1 Asynchroniczne odtworzenie dźwięku.2 Nie zostanie odtworzony dźwięk

domyślny. SoundName to nazwa pliku typu .wav. SoundName może także przyjąć jedną z wartości określonych w sekcji [Sounds] pliku win.ini. Na przykład, aby odtworzyć dźwięk c:\sounds\click.wav, należy dodać do pliku win.ini linię MouseClick=C:\Sounds\Click.wav, a następnie wykonać skrypt PlaySound(“MouseClick”,2);

3 Nieużywane4 Dźwięk wskazuje na plik znajdujący się

w pamięci. Ten parametr umożliwia odtwarzanie dźwięków znajdujących się w pamięci. Plik dźwiękowy można dołączyć do pliku EXE, aby nie była konieczna dystrybucja pliku .WAV.

5-7 Nieużywane8 Odtwórz plik jednokrotnie. 9 Powtarzanie dźwięku do momentu

ponownego wywołania PlaySound(). 16 Aktualnie odtwarzany dźwięk nie

będzie zatrzymany.Przykład(y) PlaySound ("c:\horns.wav",1);

Uwaga: Dźwięk musi fizycznie zmieścić się w dostępnym obszarze pamięci i musi istnieć możliwość jego odtworzenia na zainstalowanym urządzeniu do odtwarzania. W celu znalezienia plików z dźwiękami, kartoteki przeszukiwane są w następującej kolejności: kartoteka bieżąca, kartoteka systemu Windows, podkartoteka System systemu Windows oraz kartoteki podane w instrukcji PATH. Jeśli nie można znaleźć podanego pliku dźwiękowego (.WAV), należy wskazać Start, Ustawienia, Panel sterowania i podwójnie kliknąć na ikonie Dźwięki i skonfigurować domyślny dźwięk. Jeśli jednak pliku tego nie można znaleźć, żaden dźwięk nie zostanie odtworzony.

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 283

PostLogonDialog()

PrintHT()

PrintScreen()

Wyświetla okno dialogowe logowania oraz zwraca wartość PRAWDA.Kategoria bezpieczeństwoSkładnia DiscreteTag=PostLogonDialog();

Uwagi Wyświetla okno dialogowe logowania oraz zwraca wartość PRAWDA.Przykład(y) DiscreteTag=PostLogonDialog();

Patrz również InvisibleVerifyCredentials(), AttemptInvisibleLogon(), IsAssignedRole(), QueryGroupMembership(), AddPermission().

Funkcja ta może być wykorzystana do drukowania wykresu trendu historycznego powiązanego z określoną zmienną typu Hist Trend. W czasie korzystania z tej funkcji, trend historyczny musi być widoczny na ekranie.

Kategoria dane historyczneSkładnia PrintHT("Trend_Tag");

Parametr OpisTrend_Tag Nazwa zmiennej typu HistTrend reprezentującej

trend historyczny. Łańcuch znaków lub zmienna tekstowa.

Uwagi None (Brak)Przykład(y) PrintHT("HistTrend1");

Drukuje określony ekran.Kategoria różneSkładnia PrintScreen(ScreenOption, PrintOption );

Parametr OpisScreenOption 1 - Obszar okna (bez menu)

2 - Obszar okna (zwartość okna WindowViewer, łącznie z menu).

Niewłaściwe opcje (włączając w to 0) powodują domyślnie wydruk obszaru okna (bez menu).

Opis pól, funkcji i zmiennych systemowych

284 Rozdział 3

PrintOption 1 - Best Fit - dopasowanie do rozmiarów drukowanej strony (dopasowanie 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 strony z zachowaniem proporcji obrazu).

3 - Horz Fit - dopasowanie w kierunku poziomym (dopasowuje wydruk w kierunku poziomym do rozmiarów strony z zachowaniem proporcji obrazu).

4 - Stretch to Page rozciągnięcie obrazu do pełnej strony – proporcje obrazu mogą być zniekształcone.

Niewłaściwe opcje (włączając w to 0) powodują domyślne ustawienie tego parametru na 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.Czcionki są drukowane jako czcionki, obiekty jako mapy bitowe. Okna z białym tłem, zawierające tylko teksty są drukowane bardzo szybko. Okna z kolorowym tłem, zawierające wiele obiektów są drukowane znacznie wolniej.Aby zapewnić prawidłowy wydruk tekstu w oknach, zaleca się stosowanie czcionek "TrueType" we wszystkich polach tekstowych w oknach przeznaczonych do drukowania.

Przy drukowaniu przycisków może okazać się, że tekst na przyciskach zostanie obcięty, ponieważ czcionka zastosowana w tekście na przycisku jest czcionką systemową, nie będącą czcionką "TrueType". Czcionki systemowe na drukarce wyglądają nieco inaczej niż na ekranie. Jeśli sytuacja taka będzie miała miejsce, należy spróbować zwiększyć rozmiar przycisku.

Jeśli drukarka służy do drukowania alarmów, aby móc wykorzystywać funkcję PrintScreen() konieczna jest druga drukarka.

Funkcja PrinScreen() nie może drukować poprawnie, jeżeli jakiekolwiek okno nałożone jest na obiekt wyświetlania alarmu rozproszonego, listę rozwijalną, pole tekstowe, pole wyboru wykluczającego, pole wyboru, itd.

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 285

PrintWindow()Drukuje określone okno.

Kategoria różneSkładnia PrintWindow("Window",LeftMargin,TopMargin,Width,Height,

Options);

Parametr OpisWindow Nazwa okna przeznaczonego do wydruku.

Łańcuch znaków lub zmienna tekstowa.LeftMargin Liczba zmiennoprzecinkowa oznaczająca

wielkość lewego marginesu w calach. Liczba lub zmienna typu rzeczywistego.

TopMargin Liczba zmiennoprzecinkowa oznaczająca wielkość górnego marginesu w calach. Liczba lub zmienna typu rzeczywistego.

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

Height 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 wtedy, gdy parametry Width i Height są równe 0. Jeśli wartość parametru Options wynosi 1, okno jest drukowane w powiększeniu stanowiącym całkowitą wielokrotność rozmiarów okna (przy zachowaniu stosunku długości boków). Wartość 0, 1, lub zmienna typu dyskretnego.Jeśli wartość parametru Options wynosi 0, okno jest drukowane w największym możliwym powiększeniu, tak, aby zmieściło się na stronie.

Jeśli okno zawiera mapę bitową, parametr Options należy ustawić na 1, aby zapobiec "rozciągnięciu" mapy bitowej.

Uwagi Można przytoczyć wiele przykładów użycia tej funkcji. W przypadku konieczności wydruku nie tylko wykresu trendu historycznego, ale całego ekranu w trybie Runtime, zamiast funkcji PrintHT() i wydruku inicjowanego przez operatora z poziomu okna dialogu trendu historycznego zaleca się używanie funkcji PrintWindow().

Opis pól, funkcji i zmiennych systemowych

286 Rozdział 3

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:

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 287

ptGetTrendType()

ptLoadTrendCfg()

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

Ta funkcja umożliwia wyświetlenie wartości odpowiadającej trybowi trendu 16-pisakowego.

Kategoria trendSkładnia ptGetTrendType(TrendObjName);

Parametr OpisTrendObjName Nazwa obiektu. Musi być stałą wartością

tekstową lub zmienną tekstową.Uwagi Zwraca typ trendu: 0 dla historycznego, (1 dla bieżącego bez przesuwania,

nie używane w tej wersji) oraz 2 dla bieżącegoPrzykład(y) ptGetTrendType (GroupTrendObjName);

ptGetTrendType (“PenTrend_1”);Patrz również

Ta funkcja powoduje odczytanie konfiguracji trendu z pliku.Kategoria trendSkładnia ptLoadTrendCfg(TrendObjName, Filename);

Parametr OpisTrendObjName Nazwa obiektu. Musi być stałą wartością

tekstową lub zmienną tekstową.Filename Nazwa pliku konfiguracyjnego (może zawierać

ścieżkę dostępu). Patrz również

Opis pól, funkcji i zmiennych systemowych

288 Rozdział 3

ptPanCurrentPen()Ta funkcja spowoduje przesunięcie pisaka trendu 16-pisakowego. Zawiera nazwę trendu oraz wartość przesunięcia.

Kategoria trendSkładnia ptPanCurrentPen (TrendObjName, majorUnits, minorUnits);

Parametr OpisTrendObjName Nazwa obiektu. Musi być stałą wartością

tekstową lub zmienną tekstową.majorUnits Wartość przesunięcia wyrażona

w wielokrotności podziałów głównych.minorUnits Wartość przesunięcia wyrażona

w wielokrotności podpodziałów.Uwagi Ustawienia podziałów głównych i podpodziałów określone w oknie

dialogowym PenTrend Control są podstawą obliczania przesunięcia wykresu. Jeżeli zakres osi wartości trendu wynosi od 0 do 200, wartość podziałów głównych wynosi 10, a podpodziałów wynosi 2, trend będzie posiadał linie podziałów głównych co 20 jednostek, a linie podpodziałów co 10 jednostek. Wykonanie skryptu ptPanCurrentPen(“TrendName”,0.4,0.5) spowoduje przesunięcie o 0.4*20 + 0.5*10 = 13 jednostek.

Przykład(y) ptPanCurrentPen(GroupTrendObjName, 1, 0); (spowoduje przesunięcie w dół o wartość jednego podziału głównego)ptPanCurrentPen(GroupTrendObjName, 0, 0.5); (spowoduje przesunięcie w dół o wartość połowy jednego podpodziału)ptPanCurrentPen(GroupTrendObjName, -2, -0.5); (spowoduje przesunięcie w górę o wartość 2 podziałów głównych oraz połowę podpodziału)ptPanCurrentPen(GroupTrendObjName, 1, -2); (spowoduje przesunięcie w górę o wartość jednego podziału głównego oraz w dół o 2 podpodziały)

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 289

ptPanTime()

ptPauseTrend()

Ta funkcja spowoduje przesunięcie osi czasu trendu 16-pisakowego. Zawiera nazwę trendu oraz wartość przesunięcia.

Kategoria trendSkładnia ptPanTime (TrendObjName, MajorFactor, MinorFactor);

Parametr OpisTrendObjName Nazwa obiektu. Musi być stałą wartością

tekstową lub zmienną tekstową.MajorFactor Współczynnik przesuwania o wielokrotność

podziałów głównych.MinorFactor Współczynnik przesuwania o wielokrotność

podpodziałów.Uwagi Ustawienia podziałów głównych i podpodziałów określone w oknie

dialogowym PenTrend Control są podstawą obliczania przesunięcia wykresu. Jeżeli rozpiętość trendu wynosi 120, wartość podziałów głównych wynosi 10, a podpodziałów wynosi 2, trend będzie posiadał linie podziałów głównych co 12 sekund, a linie podpodziałów co 6 sekund. Wykonanie skryptu ptPanTime(“TrendName”,1,0.5) spowoduje przesunięcie osi czasu o 1*12 + 0.5*6 = 15 sekund.

Przykład(y) ptPanTime(GroupTrendObjName, 1, 0);(spowoduje przesunięcie wykresu o jeden podział główny w prawo)ptPanTime(GroupTrendObjName, 0, 0.5);(spowoduje przesunięcie wykresu o połowę podpodziału w prawo)ptPanTime(GroupTrendObjName, -2, -0.5);(spowoduje przesunięcie o 2 podziały główne oraz połowę podpodziału w lewo)ptPanTime(GroupTrendObjName, 1, -2);(spowoduje przesunięcie o jeden podział główny w prawo oraz 2 podpodziały w lewo)

Ta funkcja umożliwia wstrzymanie odświeżania trendu 16-pisakowego. Odświeżanie zostanie wstrzymane, gdy wartość wynosi true (prawda).

Kategoria trendSkładnia ptPauseTrend(TrendObjName, Value,);

Parametr OpisTrendObjName Nazwa obiektu. Musi być stałą wartością

tekstową lub zmienną tekstową.Value 0 wznawia odświeżanie, natomiast 1 wstrzymuje

je.Przykład(y) ptPauseTrend (GroupTrendObjName, 1);

Opis pól, funkcji i zmiennych systemowych

290 Rozdział 3

ptSaveTrendCfg()

ptSetCurrentPen()

ptSetPen()

Ta funkcja powoduje zapisanie konfiguracji trendu do pliku.Kategoria trendSkładnia ptSaveTrendCfg(TrendObjName, Filename);

Parametr OpisTrendObjName Nazwa obiektu. Musi być stałą wartością

tekstową lub zmienną tekstową.Filename Nazwa pliku konfiguracyjnego (może zawierać

ścieżkę dostępu). Patrz również

Aby wybrać pisak jako bieżący, należy wywołać tą funkcję. Bieżący pisak to pisak, który steruje osią wartości.

Kategoria trendSkładnia ptSetCurrentPen(TrendObjName, PenNum);

Parametr OpisTrendObjName Nazwa obiektu. Musi być stałą wartością

tekstową lub zmienną tekstową.PenNum Określa numer bieżącego pisaka.

Przykład(y) ptSetCurrentPen (GroupTrendObjName, 2);Wykonanie tej funkcji spowoduje wybranie pisaka 2 jako bieżącego.

Wywołanie tej funkcji spowoduje przypisanie zmiennej do pisaka.Kategoria trendSkładnia ptSetPen(TrendObjName, penNum, Tagname);

Parametr OpisTrendObjName Nazwa obiektu. Musi być stałą wartością

tekstową lub zmienną tekstową.PenNum Przypisuje numer pisaka do nowej zmiennej.Zmienna Nazwa zmiennej.

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 291

ptSetPenEx()

ptSetTimeAxis()

Wywołanie tej funkcji spowoduje przypisanie zmiennej do pisaka i nadpisanie konfiguracji zmiennej.

Kategoria trendSkładnia ptSetPenEx(TrendObjName, penNum, Tagname, minEU, maxEU,

minPercent, maxPercent, Decimal, EU);

Parametr OpisTrendObjName Nazwa obiektu. Musi być stałą wartością

tekstową lub zmienną tekstową.PenNum Przypisuje numer pisaka do nowej zmiennej.Tagname Nazwa zmiennej.minEU Pole to zawiera minimalną wartość

w jednostkach inżynierskich (EU) dla danej zmiennej.

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

minPercent Minimalna wartość procentowa, o jaką może zmienić się zmienna od wartości założonej.

maxPercent Maksymalna wartość procentowa, o jaką może zmienić się zmienna od wartości założonej.

Decimal Dokładność liczby.EU Etykieta jednostek inżynierskich.

Patrz również

Ta funkcja umożliwia ustawienie czasu początkowego i końcowego dla wykresu.

Kategoria trendSkładnia ptSetTimeAxis(TrendObjName, StartDateTime,

EndDateTime);

Parametr OpisTrendObjName Nazwa obiektu. Musi być stałą wartością

tekstową lub zmienną tekstową.StartDateTime Data i czas początku wykresu. Poprawny format

jest następujący: mm/dd/yyyy hh:mm:ss AM/PM.

EndDateTime Data i czas końca wykresu. Poprawny format jest następujący: mm/dd/yyyy hh:mm:ss AM/PM

Przykład(y) ptSetTimeAxis(“PenTrend_1”, ”08/13/2005 12:54:13 AM”, ”08/15/2005 03:47:54 PM”);

Opis pól, funkcji i zmiennych systemowych

292 Rozdział 3

ptSetTimeAxisToCurrent()

ptSetTrend()

ptSetTrendType()

Ta funkcja umożliwia uaktualnienie wykresu do bieżącego czasu.Kategoria trendSkładnia PtSetTimeAxisToCurrent(TrendObjName);

Parametr OpisTrendObjName Nazwa obiektu. Musi być stałą wartością

tekstową lub zmienną tekstową.Przykład(y) ptSetTimeAxisToCurrent(“PenTrend_1”);

Patrz również

Ta funkcja umożliwia wstrzymanie lub wznowienie uaktualniania trendu 16-pisakowego.

Kategoria trendSkładnia ptSetTrend(TrendObjName, EnableUpdates);

Parametr OpisTrendObjName Nazwa obiektu. Musi być stałą wartością

tekstową lub zmienną tekstową.EnableUpdates 0 powoduje wstrzymanie uaktualniania,

natomiast 1 jego wznowienie.Przykład(y) ptSetTrend(“PenTrend_1”, 1);

Wykonanie takiego skryptu spowoduje wznowienie uaktualniania trendu o nazwie PenTrend_1.ptSetTrend(GroupTrendObjName , 0);Wykonanie takiego skryptu spowoduje wstrzymanie uaktualniania trendu określonego przez zmienną o nazwie GroupTrendObjName.

Ta funkcja umożliwia ustawienie typu trendu.Kategoria trendSkładnia ptSetTrendType(TrendObjName, TrendType);

Parametr OpisTrendObjName Nazwa obiektu. Musi być stałą wartością

tekstową lub zmienną tekstową.TrendType Wartość analogowa określająca typ trendu.

0 oznacza trend historyczny, 1 lub 2 oznaczają trend bieżący.

Przykład(y) ptSetTrendType(“PenTrend_1”, 2);

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 293

ptZoomCurrentPen()

ptZoomTime()

Ta funkcja umożliwia powiększanie lub pomniejszanie skali osi wartości na 16-pisakowym trendzie.

Kategoria trendSkładnia ptZoomCurrentPen(TrendObjName, ZoomFactor);

Parametr OpisTrendObjName Nazwa obiektu. Musi być stałą wartością

tekstową lub zmienną tekstową.ZoomFactor Wartości większe niż 1.0 oznaczają

pomniejszanie, natomiast wartości od 0 do 1.0 powiększanie. Współczynnik ten odnosi się do zakresu osi wartości określonej dla bieżącego obiektu.

Przykład(y) ptZoomCurrentPen(“PenTrend_1”, 1.02);Wykonanie tego skryptu spowoduje pomniejszenie osi wartości trendu PenTrend_1 o 2%.ptZoomCurrentPen (TrendObj, 0.7);Wykonanie tego skryptu spowoduje powiększenie o 30% osi wartości trendu, określonego w zmiennej tekstowej Trendobj. Jeżeli przed powiększeniem zakres osi wartości wynosił od 0 do 100, po wykonaniu funkcji, zakres ten zmieni się na wartości od 15 do 85.

Ta funkcja umożliwia powiększanie lub pomniejszanie skali osi czasu na 16-pisakowym trendzie.

Kategoria trendSkładnia ptZoomTime(TrendObjName, ZoomFactor);

Parametr OpisTrendObjName Nazwa obiektu. Musi być stałą wartością

tekstową lub zmienną tekstową.ZoomFactor Wartości większe niż 1.0 oznaczają

pomniejszanie, natomiast wartości od 0 do 1.0 powiększanie. Współczynnik ten odnosi się do zakresu osi czasu określonej dla bieżącego obiektu.

Przykład(y) ptZoomTime(“PenTrend_1”, 1.17);Wykonanie tego skryptu spowoduje pomniejszenie osi wartości trendu PenTrend_1 o 17%.ptZoomCurrentPen (TrendObj, 0.5);Wykonanie tego skryptu spowoduje powiększenie o 50% osi czasu trendu, określonego w zmiennej tekstowej Trendobj. Jeżeli przed powiększeniem trend pokrywał swoją osią czasu okres 1 minuty oznacza to, że po wykonaniu tej funkcji czas ten skróci się do 30 sekund.

Opis pól, funkcji i zmiennych systemowych

294 Rozdział 3

QueryGroupMembership()

RecipeDelete()

Sprawdza czy aktualnie zalogowany użytkownik jest członkiem określonej domeny/grupy.

Kategoria bezpieczeństwoSkładnia DiscreteTag=QueryGroupMembership( "Domain", "Group" );

Parametr OpisDomain Nazwa domeny lub lokalnego komputera gdzie

znajduje się grupa.Group Grupa, do której ma należeć aktualnie

zalogowany użytkownik.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 Group, która jest zdefiniowana w domenie Domain, zwrócona zostanie wartość PRAWDA, natomiast w innych wypadkach wartość FAŁSZ.

Przykład(y) DiscreteTag=QueryGroupMembership( "corporate_hq", "InTouchAdmins" );(sprawdza czy aktualnie zalogowany użytkownik jest członkiem grupy corporate_hq\InTouchAdmins)

Patrz również PostLogonDialog(), InvisibleVerifyCredentials(), IsAssignedRole(), AttemptInvisibleLogon(), AddPermission().

Funkcja ta powoduje usunięcie receptury z zadanego pliku.Kategoria recepturySkładnia RecipeDelete("Filename","RecipeName");

Parametr OpisFileName Nazwa pliku z recepturami, których dotyczą

operacje wykonywane przez funkcję. Łańcuch znaków lub zmienna tekstowa.

RecipeName Nazwa receptury w pliku o podanej nazwie, którego dotyczą operacje wykonywane przez funkcję. Funkcje RecipeLoad(), RecipeSave() i RecipeDelete() wymagają od użytkownika podania parametru RecipeName. Funkcja RecipeSelectRecipe() natomiast zwraca wartość tego parametru. Łańcuch znaków lub zmienna tekstowa.

Przykład(y) Instrukcja zamieszczona poniżej powoduje usunięcie receptury "Recipe1" z pliku RECFILE.CSV.RecipeDelete("c:\recipe\recfile.csv", "Recipe1");

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 295

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

Kategoria recepturySkładnia RecipeGetMessage(Analog_Tag,Message_Tag,Number);

Parametr OpisAnalog_Tag Zmienna analogowa zawierająca kod błędu.Message_Tag Zmienna tekstowa zawierająca komunikat związany

z kodem błędu.Number Parametr ten określa maksymalną długość łańcucha

znaków przypisywanego do zmiennej Message_Tag.. Zmienne tekstowe w programie InTouch mogą przyjmować maksymalną długość 131 znaków. Jeśli maksymalna długość zmiennej tekstowej nie jest ograniczona z innych względów, należy przyjmować wartość tego parametru równą 131. Parametr Number może być wartością stałą lub zmienną programu InTouch.

Przykład(y) Zastosowanie funkcji RecipeGetMessage() w skrypcie QuickScript związanym ze zmianą danych umożliwia zapisanie kodu błędu do zmiennej analogowej, a związany z kodem komunikat może być przypisany do zmiennej tekstowej:Skrypt Zmiany Danych Zmienna[.pole]:ErrorCodeSkrypt: RecipeGetMessage(ErrorCode, ErrorMessage,131);

Skrypt ten będzie wykonywany po każdorazowej zmianie wartości zmiennej analogowej ErrorCode. Spowoduje on odczytanie przez funkcję RecipeGetMessage() aktualnej wartości zmiennej ErrorCode oraz przypisanie komunikatu towarzyszącego tej wartości do zmiennej ErrorMessage.ErrorCode = RecipeLoad ("c:\App\recipe.csv","Unit1","cookies");

RecipeGetMessage(ErrorCode, ErrorMessageTag, 131);

Opis pól, funkcji i zmiennych systemowych

296 Rozdział 3

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

Kategoria recepturySkładnia RecipeLoad("Filename","UnitName","RecipeName");

Parametr OpisFileName Nazwa pliku z recepturami, których dotyczą

operacje wykonywane przez funkcję. Parametr 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 programu InTouch.

Przykład(y) Instrukcja zamieszczona poniżej powoduje załadowanie zestawu wartości zdefiniowanych jako receptura Recipe1 (w pliku recfile.csv) do zestawu zmiennych.RecipeLoad("c:\recipe\recfile.csv", "Unit1", "Recipe1");

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 297

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

Kategoria recepturySkładnia RecipeSave("Filename","UnitName","RecipeName");

Parametr OpisFileName Nazwa pliku z recepturami, których dotyczą operacje

wykonywane przez funkcję. Parametr 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 programu InTouch.

Przykład(y) Instrukcja zamieszczona poniżej powoduje zapisanie zmian dokonanych w recepturze o nazwie Recipe3 w pliku o nazwie RECFILE.CSV. Jeżeli w pliku recfile.csv nie ma receptury Recipe3, zostanie ona utworzona. Wartości zostaną przypisane zmiennym zdefiniowanym dla zestawu Unit2:RecipeSave("c:\recipe\recfile.csv", "Unit2", "Recipe3");

Opis pól, funkcji i zmiennych systemowych

298 Rozdział 3

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

Kategoria recepturySkładnia RecipeSelectNextRecipe("Filename", RecipeName, Number);

Parametr OpisFileName Nazwa pliku z recepturami, których dotyczą operacje

wykonywane przez funkcję. Aktualna zmienna tekstowa.

RecipeName Nazwa określonej receptury w pliku receptur, którego dotyczą operacje wykonywane przez funkcję. Funkcje RecipeLoad(), RecipeSave() i RecipeDelete() wymagają od użytkownika podania parametru RecipeName. Natomiast funkcja RecipeSelectRecipe() zwraca wartość tego parametru. Parametr RecipeName może być zadany jako łańcuch znaków lub jako zmienna programu InTouch.

Number Jeśli zadaniem funkcji jest wypełnienie zmiennej tekstowej znakami, pole to służy do zadawania maksymalnej długości zapisywanego łańcucha znaków. Zmienne tekstowe w programie InTouch mogą przyjmować maksymalną długość 131 znaków. Jeśli maksymalna długość zmiennych nie jest ograniczona z innych względów, należy przyjmować wartość tego parametru równą 131. Liczba lub zmienna całkowita.

Przykład(y) Instrukcja zamieszczona poniżej powoduje odczytanie aktualnej wartości zmiennej tekstowej RecipeName i wybranie z pliku następnej receptury. Jeśli zmienna RecipeName nie ma żadnej przypisanej wartości lub nie może zostać znaleziona, funkcja zwraca nazwę pierwszej receptury w pliku. Jeśli zmienna RecipeName zawiera aktualnie nazwę ostatniej receptury w pliku, jej wartość pozostaje bez zmian. (Receptury są zapisywane w pliku w kolejności ich tworzenia.)RecipeSelectNextRecipe("c:\recipe\recfile.csv",RecipeName, 131);

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 299

RecipeSelectPreviousRecipe()Funkcja ta powoduje wybranie z pliku receptur poprzedniej receptury.

Kategoria recepturySkładnia RecipeSelectPreviousRecipe("Filename",RecipeName,

Number);

Parametr OpisFileName Nazwa pliku z recepturami, których dotyczą operacje

wykonywane przez funkcję. Aktualna zmienna tekstowa.

RecipeName Nazwa określonej receptury w pliku receptur, którego dotyczą operacje wykonywane przez funkcję. Funkcje RecipeLoad(), RecipeSave() i RecipeDelete() wymagają od użytkownika podania parametru RecipeName. Natomiast funkcja RecipeSelectRecipe() zwraca wartość tego parametru. Parametr RecipeName może być zadany jako łańcuch znaków lub jako zmienna programu InTouch.

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. Zwrócona wartość zostanie zapamiętana w RecipeName, zastępując poprzednią wartość. Jeśli zmienna RecipeName nie ma żadnej przypisanej wartości lub nie może zostać znaleziona, funkcja zwraca nazwę ostatniej receptury w pliku. Jeśli zmienna RecipeName zawiera aktualnie nazwę ostatniej receptury w pliku, jej wartość pozostaje bez zmian. (Receptury są zapisywane w pliku w kolejności ich tworzenia.)RecipeSelectPreviousRecipe("c:\recipe\recfile.csv", RecipeName, 131);

Opis pól, funkcji i zmiennych systemowych

300 Rozdział 3

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

Kategoria recepturySkładnia RecipeSelectRecipe("Filename",RecipeName,Number);

Parametr OpisFileName Nazwa pliku z recepturami, których dotyczą operacje

wykonywane przez funkcję. Aktualna zmienna tekstowa.

RecipeName Nazwa określonej receptury w pliku receptur, którego dotyczą operacje wykonywane przez funkcję. Funkcje RecipeLoad(), RecipeSave() i RecipeDelete() wymagają od użytkownika podania parametru RecipeName. Natomiast funkcja RecipeSelectRecipe() zwraca wartość tego parametru. Parametr RecipeName może być zadany jako łańcuch znaków lub jako zmienna programu InTouch.

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 wartość zmiennej RecipeName.

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 301

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

Kategoria recepturySkładnia RecipeSelectUnit("Filename", UnitName,Number);

Parametr OpisFileName Nazwa pliku z recepturami, których dotyczą operacje

wykonywane przez funkcję. Aktualna zmienna tekstowa.

UnitName Nazwa zestawu zmiennych w pliku receptur, którego dotyczą operacje wykonywane przez funkcję. Argument UnitName wymagany jest przy wywoływaniu funkcji RecipeLoad(). Funkcja RecipeSelectUnit() zwraca wartość tego parametru. Parametr RecipeName może być zadany jako łańcuch znaków lub jako zmienna programu InTouch.

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 Select a Unit (Wybierz jednostkę):RecipeSelectUnit("c:\recipe\recfile.csv", UnitName, 131);

Po wybraniu z okna dialogowego zestawu, jego nazwa jest zwracana za pomocą zmiennej UnitName.Zarówno funkcja RecipeSelectRecipe() jak i funkcja RecipeSelectUnit() są używane w połączeniu z funkcją RecipeLoad().Więcej informacji na temat stosowania kombinacji funkcji można znaleźć w odpowiednim rozdziale podręcznika Podręcznik użytkownika - Menedżer receptur w wersji elektronicznej.

Opis pól, funkcji i zmiennych systemowych

302 Rozdział 3

ReloadWindowViewer()

RestartWindowViewer()

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

Kategoria systemSkładnia ReloadWindowViewer();

Uwagi Funkcja ta powoduje automatyczne uaktualnienie programu WindowViewer. Pozwala to na uaktualnianie aplikacji w przypadku nie korzystania z funkcji automatycznego uaktualniania w architekturze NAD (Network Application Development). Funkcja ta może zostać wykorzystana wraz ze zmienną $ApplicationChanged do sprawdzenia, czy aplikacja została uaktualniona i umożliwia uaktualnienie stacji bez przerywania ich pracy. Użycie 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 wykonanie dynamicznego uaktualniania programu WindowViewer w dogodnym momencie. Funkcja ta zastępuje funkcję RestartWindowViewer().

Patrz również $ApplicationChanged

Pozwala użytkownikowi na zamknięcie i ponowne uruchomienie programu WindowViewer.

Kategoria systemSkładnia RestartWindowViewer();

Uwagi Funkcja ta powoduje zamknięcie, a potem ponowne uruchomienie 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 Notify Clients (Aktualizacja aplikacji w sieci) umożliwia operatorowi dokonanie uaktualnienia w późniejszym czasie. Funkcja ta może zostać użyta w skrypcie QuickScript związanym z przyciskiem. Pozwala to operatorowi na automatyczne zamknięcie i ponowne uruchomienie programu WindowViewer w dogodnym momencie. Funkcja ta generalnie została zastąpiona funkcją ReloadWindowViewer(), która umożliwia uaktualnienie oprogramowania na stacjach bez zamykania programu WindowViewer.

Patrz również $ApplicationChanged; ReloadWindowViewer()

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 303

Round()

SendKeys

Zaokrągla liczbę rzeczywistą z podaną dokładnością.Kategoria funkcje matematyczneSkładnia RealResult=Round(Number,Precision);

Parametr OpisNumber Dowolna liczba, zmienna rzeczywista (Real) lub

całkowita (Integer) programu InTouch.Precision Dokładność, z jaką podana liczba ma zostać

zaokrąglona. Liczba, zmienna rzeczywista lub całkowita.

Uwagi Parametr Precision określa do jakiej dokładności przybliżona zostanie wartość Number.

Przykład(y) Round(4.3, 1) daje w wyniku 4

Round(4.3, 0.01) daje w wyniku 4.30

Round(4.5, 1) daje w wyniku 5

Round(-4.5, 1) daje w wyniku -4

Round(106, 5) daje w wyniku 105

Round(43.7, .5) daje w wyniku 43.5

Patrz również Trunc()

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óżneSkładnia SendKeys KeySequence;

Parametr OpisKeySequence Dowolna sekwencja klawiszy lub zmienna tekstowa

programu InTouch.Uwagi Aby zasymulować naciśnięcie kilku klawiszy, należy uszeregować kody

wprowadzanych znaków. Przykładowo, w celu wysłania symbolu dolara ($) i znaku (b), należy wprowadzić $b. Poniżej zamieszczono listę kodów różnych klawiszy klawiatury komputera:Klawisze Kod Klawisze KodBACKSPACE {BACKSPACE}

lub {BS}HOME {HOME}

BREAK {BREAK} INSERT {INSERT}

Opis pól, funkcji i zmiennych systemowych

304 Rozdział 3

CAPSLOCK {CAPSLOCK} LEFT {LEFT}DELETE {DELETE} lub

{DEL}NUMLOCK {NUMLOCK}

DOWN {DOWN} PAGE DOWN {PGDN}END {END} PAGE UP {PGUP}ENTER {ENTER} lub ~

(tylda)PRTSC {PRTSC}

ESCAPE {ESCAPE} lub {ESC}

RIGHT {RIGHT}

F1 {F1}* TAB {TAB}UP {UP}

* W ten sposób budowane są nazwy dla pozostałych klawiszy funkcyjnych.Klawisze specjalne (SHIFT, CTRL oraz ALT) posiadają własne kody:Klawisze KodSHIFT +CTRL ^ALT %

Przykład(y) Jeśli dwa klawisze mają zostać wciśnięte 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))";

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.

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 305

SetPropertyD()Funkcja ta nadaje w czasie działania aplikacji właściwości wartość dyskretną.

Kategoria GOTSkładnia [ErrorNumber=]SetPropertyD("ControlName.Property",

DiscreteTag);

Parametr OpisControlName Nazwa obiektu sterującego okien, np. ChkBox_1 lub

nazwa obiektu do wyświetlania alarmów, np. AlmObj_1.

.Property Właściwość obiektu sterującego okna lub obiektu do wyświetlania alarmów.

Aby dowiedzieć się więcej na temat tych właściwości, zobacz Chapter 2, "Pola i właściwości."

DiscreteTag Wartość dyskretna (0 lub 1) lub zmienna dyskretna programu InTouch, której wartość zostanie zapisana jako wartość odpowiedniego pola wskutek wykonania funkcji. Typowe zastosowanie:0 = Obiekt sterujący jest nieaktywny1 = Obiekt sterujący jest aktywny

Uwagi Kody błędów dla tych funkcji można znaleźć w rozdziale Appendix A, "Usuwanie problemów przy korzystaniu z funkcji skryptowych.".

Patrz również GetPropertyD(), GetPropertyI(), GetPropertyM(), SetPropertyI(), SetPropertyM()

Opis pól, funkcji i zmiennych systemowych

306 Rozdział 3

SetPropertyI()

SetPropertyM()

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

Kategoria GOTSkładnia [ErrorNumber=]SetPropertyI("ControlName.Property",

Integer);

Parametr OpisControlName Nazwa obiektu sterującego oknem. Przykładowo,

ChkBox_1 lub nazwa obiektu do wyświetlania alarmów. Przykładowo, AlmObj_1.

.Property Właściwość obiektu sterującego okna lub obiektu do wyświetlania alarmów.

Aby dowiedzieć się więcej na temat tych właściwości, zobacz Chapter 2, "Pola i właściwości."

Integer Liczba lub zmienna całkowita.Uwagi Kody błędów dla tych funkcji można znaleźć w rozdziale Appendix A,

"Usuwanie problemów przy korzystaniu z funkcji skryptowych.".Patrz również GetPropertyD(), GetPropertyI(), GetPropertyM(), SetPropertyD(),

SetPropertyM()

Funkcja ta nadaje właściwości wartość tekstową w czasie działania aplikacji.

Kategoria GOTSkładnia [ErrorNumber=]SetPropertyM("ControlName.Property",

"MessageTag");

Parametr OpisControlName Nazwa obiektu sterującego oknem. Przykładowo,

ChkBox_1 lub nazwa obiektu do wyświetlania alarmów. Przykładowo, AlmObj_1.

.Property Właściwość obiektu sterującego okna lub obiektu do wyświetlania alarmów.

Aby dowiedzieć się więcej na temat tych właściwości, zobacz Chapter 2, "Pola i właściwości."

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 tych funkcji można znaleźć w rozdziale Appendix A, "Usuwanie problemów przy korzystaniu z funkcji skryptowych.".

Patrz również GetPropertyD(), GetPropertyI(), GetPropertyM(), SetPropertyI(), SetPropertyI()

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 307

SetWindowPrinter()

Sgn()

Umożliwia użytkownikowi dynamicznie wybierać drukarkę, która będzie wykorzystywana przez funkcje PrintWindow, PrintScreen oraz PrintHT. Drukarka inna niż domyślna może zostać ustawiona w skrypcie uruchomienia aplikacji lub za każdym razem, gdy jest to potrzebne.

Kategoria różneSkładnia SetWindowPrinter( PrinterName );

Parametr OpisPrinterName Nazwa komputera oraz udziału drukarki, nazwa

drukarki taka jak w oknie właściwości drukarki lub zmienna tekstowa zawierająca nazwę zainstalowanej drukarki lub ścieżka do drukarki sieciowej.

Uwagi Opcja drukowania trendu historycznego także skorzysta z drukarki ustawionej za pomocą funkcji SetWindowPrinter, jeżeli została ona wywołana przed drukowaniem z trendu.

Przykład(y) SetWindowPrinter("\\PRTSRV1\PRT22SW1");gdzie PRTSRV1 jest nazwą komputera, a PRT22SW1 jest nazwą udziału nadaną drukarce.

SetWindowPrinter("Epson LX-300")gdzie Epson LX-300 jest nazwą drukarki.

SetWindowPrinter(MyPrinter)gdzie MyPrinter jest zmienną tekstową zawierającą nazwę drukarki lub ścieżkę do drukarki sieciowej.

Patrz również PrintWindow(), PrintScreen(), PrintHT().

Określa znak podanej wartości (+,-,0).Kategoria funkcje matematyczneSkładnia IntegerResult=Sgn(Number);

Parametr OpisNumber Dowolna liczba, zmienna rzeczywista (Real) lub

całkowita (Integer) programu InTouch.Uwagi Jeżeli liczba wejściowa jest liczbą dodatnią, zwrócona zostanie wartość 1.

Dla liczby ujemnej zwrócone zostanie -1, zaś dla 0, zero.Przykład(y) Sgn(425) daje w wyniku 1

Sgn(0) daje w wyniku 0

Sgn(-37.3) daje w wyniku –1

Opis pól, funkcji i zmiennych systemowych

308 Rozdział 3

ShowFunkcja ta umożliwia wyświetlenie określonego okna. (Nazwa okna musi być ujęta w cudzysłów.)

Kategoria różneSkładnia Show "Window";

Parametr OpisWindow Nazwa okna, które ma zostać wyświetlone. Łańcuch

znaków lub zmienna tekstowa.Uwagi Wartość parametru 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 (Pokaż okno) lub Hide Window (Ukryj okno). W przypadku używania tych połączeń, jeśli nazwa okna ulegnie zmianie, InTouch automatycznie dokona zmian.

Patrz również Hide, Hideself, ShowAt(), ShowHome, ShowTopLeftAt()

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 309

ShowAt()

ShowHome

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

Kategoria różneSkładnia ShowAt("Window",Horiz,Vert);

Parametr OpisWindow Nazwa okna. Łańcuch znaków lub zmienna tekstowa.Horiz Współrzędna pozioma. Dowolna liczba lub zmienna

całkowita.Vert Współrzędna pionowa. Dowolna liczba lub zmienna

całkowita.Uwagi Po otwarciu okna, jest ono ustawiane na środku względem współrzędnych

położenia poziomego i pionowego. Okno nie zostanie wycentrowane, jeśli jedna z jego krawędzi wykracza poza obszar ekranu. W takiej sytuacji zostanie ono wyrównane do krawędzi ekranu.

Przykład(y) W zamieszczonej poniżej instrukcji, 100 oznacza położenie piksela w kierunku poziomym, a 200 w kierunku pionowym:ShowAt("Window Name",100,200);

Aby móc zmieniać dynamicznie pozycję okna w trybie Runtime, ze zmiennymi pamięciowymi zastosowanymi jako parametry funkcji, np. TagHoriz i TagVert można powiązać obiekty służące do wprowadzania danych (dotykowe połączenia animacyjne). 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 WindowViewer Properties - Home Windows (Właściwości WindowViewer - okna startowe).)

Kategoria różneSkładnia ShowHome;

Patrz również Show, ShowAt(), ShowTopLeftAt(), Hide, Hideself

Opis pól, funkcji i zmiennych systemowych

310 Rozdział 3

ShowTopLeftAt()

Sin()

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

Kategoria różneSkładnia ShowTopLeftAt("Window",Horiz,Vert);

Parametr OpisWindow Nazwa okna. Łańcuch znaków lub zmienna

tekstowa.Horiz Współrzędna pozioma. Dowolna liczba lub

zmienna całkowita.Vert Współrzędna pionowa. Dowolna liczba lub

zmienna całkowita.Uwagi Po otwarciu okna, jego lewy, górny róg umieszczany jest w miejscu

wskazywanym przez współrzędną poziomą i pionową. (Współrzędne lewego, górnego narożnika ekranu wynoszą 0,0.) Działanie tej funkcji jest takie same jak funkcji ShowAt(), za wyjątkiem faktu, że steruje ona położeniem lewego, górnego okna.Funkcja ta umieszcza okno w pamięci, a następnie przemieszcza je do nowej lokalizacji. Lokalizacja początkowa (ta, na której okno zostało zapisane w programie WindowMaker) pozostaje niezmieniona niezależnie od miejsca, w które okno zostało przeniesione.

Patrz również Show, ShowAt(), ShowHome, Hide, Hideself

Zwraca sinus kąta podanego w stopniach.Kategoria funkcje matematyczneSkładnia Result=Sin(AngleNumber);

Parametr OpisAngleNumber Wartość kąta w stopniach. Dowolna liczba,

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

Uwagi Obliczana jest wartość sinus z wartości AngleNumber i zwracana do zmiennej Result.

Przykład(y) Sin(90) daje w wyniku 1

Sin(0) daje w wyniku 0

wave = 100 * Sin (6 * $second);

Patrz również Cos(), Tan(), ArcCos(), ArcSin(), ArcTan()

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 311

SPCConnect()Funkcja ta jest używana w połączeniu z automatycznym zbieraniem zestawów danych. Przed rozpoczęciem automatycznego zbierania zestawów danych, należy wywołać tę funkcję w celu określenia, jaki użytkownik jest przy stanowisku:

Kategoria SPCSkładnia SPCConnect(“User”,”Password”);

Parametr OpisUser Nazwa użytkownika bazy danych. Ł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 bazą 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()

Opis pól, funkcji i zmiennych systemowych

312 Rozdział 3

SPCDatasetDlg()

SPCDisconnect()

Funkcja ta umożliwia wyświetlenie okna dialogowego SPCPro Dataset Configuration (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 automatycznego zbierania danych.

Kategoria SPCSkładnia SPCDatasetDlg();

Uwagi Wykonanie tej funkcji spowoduje wyświetlenie okna dialogowego SPCPro Dataset Configuration (Konfiguracja zestawu danych SPC) w programie WindowViewer.

Przykład(y) SPCDatasetDlg();

Patrz również SPCSelectDataset()

Funkcja ta służy do odłączania użytkownika od bazy danych SPC Pro. Wykonanie tej funkcji spowoduje przerwanie zbierania danych ze wszystkich zestawów danych przypisanych do użytkownika.

Kategoria SPCSkładnia SPCDisconnect();

Uwagi Wykonanie tej funkcji spowoduje odłączenie użytkownika od bazy danych oraz zatrzymanie automatycznego zbierania danych.

Przykład(y) SPCDisconnect();

Patrz również SPCConnect()

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 313

SPCDisplayData()

SPCLocateScooter()

Funkcja ta zapewnia mechanizm wygodnego przewijania wykresu w celu wyświetlenia odpowiedniej daty lub godziny. Status przeszukiwania danych SPC można monitorować za pomocą zmiennej. Jeżeli SPC odszuka dane, zwracana jest wartość 0, jeżeli natomiast w ciągu określonego czasu dane nie zostaną znalezione, zwracana jest wartość 1.

Kategoria SPCSkładnia [Status=]SPCDisplayData("Dataset", "DateString",

"TimeString", RangeInHours );

Parametr OpisDataset Nazwa bieżącego zestawu danych. Łańcuch znaków

lub zmienna tekstowa.DateString Data w formacie mm/dd/rr. Łańcuch znaków lub

zmienna tekstowa.TimeString Godzina w formacie gg:mm:ss. Łańcuch znaków lub

zmienna tekstowa.RangeInHours Okres czasu, dla którego dane będą wyświetlane.

Dowolna liczba lub zmienna całkowita.Przykład(y) StatusTag = SPCDisplayData("Dataset", "DateString",

"TimeString" , RangeInHours);

Funkcja ta zapewnia mechanizm wygodnego przewijania suwaka w celu wyświetlenia odpowiedniej próbki. Wartość zmiennej suwaka zostanie zaktualizowana, przypisana zostanie jej wartość próbki X-Bar. Przypisanie parametrowi SampleNumber wartości 0 powoduje ukrycie/ deaktywację suwaka.

Kategoria SPCSkładnia SPCLocateScooter( "Dataset", SampleNumber );

Parametr OpisDataset Nazwa bieżącego zestawu danych. Łańcuch znaków

lub zmienna tekstowa.SampleNumber Numer dowolnej, nie zawierającej błędów próbki.

Dowolna liczba lub zmienna całkowita.Patrz również SPCMoveScooter()

Opis pól, funkcji i zmiennych systemowych

314 Rozdział 3

SPCMoveScooter()

SPCSaveSample()

Funkcja ta zapewnia mechanizm wygodnego przewijania suwaka w celu wyświetlenia odpowiedniej próbki. Wartość zmiennej suwaka zapisanej w bazie danych zostanie zaktualizowana i przypisana zostanie jej wartość próbki X-Bar.

Kategoria SPCSkładnia SPCMoveScooter( "Dataset", IncrementValue );

Parametr OpisDataset Nazwa bieżącego zestawu danych. Łańcuch znaków

lub zmienna tekstowa.IncrementValue Dowolny numer. W celu przewinięcia do przodu,

należy wprowadzić wartość dodatnią, natomiast w celu przewinięcia do tyłu, należy wyprowadzić wartość ujemną. Dowolna liczba lub zmienna całkowita.

Patrz również SPCLocateScooter()

Funkcja ta służy do ręcznego zapisu próbki wejściowej. Jest ona używana w połączeniu z funkcją SPCSetMeasurement().

Kategoria SPCSkładnia SPCSaveSample("Dataset");

Parametr OpisDataset Nazwa bieżącego zestawu danych. Łańcuch znaków

lub zmienna tekstowa.Uwagi Wykonanie instrukcji zawierającej tę funkcję spowoduje zapisanie próbki

jako zestawu danych 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()

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 315

SPCSelectDataset()

SPCSelectProduct()

Funkcja ta wyświetla okno dialogowe pozwalające użytkownikowi na wybranie żądanego zestawu danych.

Kategoria SPCSkładnia DatasetName=SPCSelectDataset()

Uwagi Wykonanie tego skryptu QuickScript powoduje otwarcie okna dialogowego Select a Dataset (Wybierz zestaw).Po wybraniu nazwy zestawu danych, funkcja przypisuje go do zmiennej DatasetName. Funkcja ta może również służyć do zmiany nazwy zestawu danych opisanego zmienną pośrednią.

Patrz również SPCSelectProduct(), SPCDatasetDlg()

Funkcja ta wyświetla okno dialogowe pozwalające użytkownikowi na wybranie produktu w danym zestawie danych.

Kategoria SPCSkładnia ProductName=SPCSelectProduct(Dataset);

Uwagi Funkcja ta zastosowana w skrypcie QuickScript pozwala na otwarcie okna dialogowego Select a Product (Wybierz produkt).Po wybraniu nazwy wyrobu, funkcja zapisuje ją pod zmienną ProductName. Funkcja ta może również służyć do zmiany nazwy produktu w zestawie danych Dataset.

Patrz również SPCSelectDataset(), SPCSetProductDisplayed(), SPCSetProductCollected()

Opis pól, funkcji i zmiennych systemowych

316 Rozdział 3

SPCSetControlLimits()

SPCSetMeasurement()

Funkcja ta umożliwia wygodne wprowadzenie (ręcznie lub w sposób automatyczny w wyniku zaistnienia określonych zdarzeń) wartości granicznych dla karty kontrolnej.

Kategoria SPCSkładnia SPCSetControlLimits("Dataset",XUCL,XLCL);

Parametr OpisDataset Nazwa bieżącego zestawu danych. Łańcuch znaków

lub zmienna tekstowa.XUCL Wartość, która ma zostać wykorzystana jako górna

granica (UCL) dla karty kontrolnej. Liczba lub zmienna typu rzeczywistego.

XLCL Wartość, która ma zostać wykorzystana jako dolna granica (LCL) dla karty kontrolnej. Liczba lub zmienna typu rzeczywistego.

Uwagi Wyniki pomiarów są zapisywane w próbce za pomocą funkcji SPCSaveSample().

Patrz również SPCSaveSample(), SPCSetRangeLimits(), SPCSetSpecLimits(), SPCSetMeasurement()

Funkcja ta umożliwia wygodne wprowadzenie (ręcznie lub w sposób automatyczny w wyniku zaistnienia określonych zdarzeń) analogowych wartości z pomiaru poprzez wykonanie skryptu.

Kategoria SPCSkładnia SPCSetMeasurement("Dataset",Measurement,Value);

Parametr OpisDataset Nazwa bieżącego zestawu danych. Łańcuch

znaków lub zmienna tekstowa.Measurement Numer pomiaru (od 1 do 300). Dowolna liczba

lub zmienna całkowita.Value Wartość, która ma być zapisana do określonego

numeru pomiarów. Dowolna liczba lub zmienna rzeczywista (Real).

Uwagi Z funkcji SPCSaveSample() należy korzystać po uprzednim ustawieniu wszystkich pomiarów na zapisywanie danych w bazie danych. Koniecznym jest ponowne zainicjowanie konwersacji DDE, aby uaktualnić wartości zmiennych MI_Mx.

Patrz również SPCSaveSample()

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 317

SPCSetProductCollected()

SPCSetProductDisplayed()

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

Kategoria SPCSkładnia SPCSetProductCollected("Dataset","Product");

Parametr OpisDataset Nazwa bieżącego zestawu danych. Łańcuch

znaków lub zmienna tekstowa.Product Nazwa produktu, dla którego mają być zbierane

dane. Łańcuch znaków lub zmienna tekstowa.Uwagi Funkcja ta nie zmienia wyrobu, dla którego wyświetlane są dane. Możliwe

jest gromadzenie danych jednego produktu i wyświetlanie danych dla innego produktu, używając tej funkcji do gromadzenia danych, a funkcji SPCSetProductDisplayed() do wyświetlania:

Przykład(y) SPCSetProductCollected("Data5838", "Widgets");

Patrz również SPCSelectProduct(), SPCSetProductDisplayed()

Funkcja ta umożliwia zmianę wyrobu, dla którego wyświetlane są dane w obrębie danego zestawu zmiennych.

Kategoria SPCSkładnia SPCSetProductDisplayed("Dataset","Product");

Parametr OpisDataset Nazwa bieżącego zestawu danych. Łańcuch

znaków lub zmienna tekstowa.Product Nazwa wyrobu, dla którego mają być

wyświetlane dane. Łańcuch znaków lub zmienna tekstowa.

Przykład(y) SPCSetProductDisplayed("ADataSetName", "AProductName");

Patrz również SPCSelectProductt(), SPCSetProductCollected()

Opis pól, funkcji i zmiennych systemowych

318 Rozdział 3

SPCSetRangeLimits()

SPCSetSpecLimits()

Funkcja ta umożliwia wygodne wprowadzenie (ręcznie lub w sposób automatyczny w wyniku zaistnienia określonych zdarzeń) wartości granicznych dla wykresu rozpiętościowego.

Kategoria SPCSkładnia SPCSetRangeLimits("Dataset",RUCL,RLCL);

Parametr OpisDataset Nazwa bieżącego zestawu danych. Łańcuch znaków

lub zmienna tekstowa.RUCL Wartość, która ma zostać wykorzystana jako górna

granica kontrolna (UCL) dla wykresu rozpiętościowego. Liczba lub zmienna typu rzeczywistego.

RLCL Wartość, która ma zostać wykorzystana jako dolna granica kontrolna (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 karty kontrolnej).

Kategoria SPCSkładnia SPCSetSpecLimits("Dataset",XUSL,XLSL);

Parametr OpisDataset Nazwa bieżącego zestawu danych. Łańcuch

znaków lub zmienna tekstowa.XUSL Wartość, która ma zostać wykorzystana jako

górny limit specyfikacyjny (USL) dla wykresu rozpiętościowego. Liczba lub zmienna typu rzeczywistego.

XLSL Wartość, która ma zostać wykorzystana jako dolny limit specyfikacyjny (LSL) dla wykresu rozpiętościowego. Liczba lub zmienna typu rzeczywistego.

Patrz również SPCSetControlLimits(), SPCSetRangeLimits()

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 319

SQLAppendStatement()

SQLClearParam()

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

Kategoria SQLSkładnia [ResultCode=]SQLAppendStatement(ConnectionID,

"SQLStatement");

Parametr Opis

ConnectionID Zmienna typu Memory Integer, utworzona przez użytkownika do przechowania numeru (ID) przypisywanego przez funkcję SQLConnect do każdego połączenia z bazą danych.

SQLStatement Łańcuch znaków, który ma zostać dołączony do instrukcji.

Przykład(y) ResultCode=SQLAppendStatement(ConnectionID,"where tablename.columnname=(dowolna wartość lub łańcuch znaków)");

Patrz również SQLConnect(), SQLClearStatement()

Funkcja ta powoduje usunięcie wartości danego parametru. Przed wykonaniem funkcji SQLExecute() musi zostać wywołana ponownie funkcja SQLSetParam().

Kategoria SQLSkładnia [ResultCode=]SQLClearParam(SQLHandle,ParameterNumber);

Parametr Opis

SQLHandle Wartość całkowita zwracana przez SQL po użyciu funkcji SQLPrepareStatement().

ParameterNumber Parametr do zmodyfikowania w instrukcji SQL.Patrz również SQLPrepareStatement(),SQLExecute()

Opis pól, funkcji i zmiennych systemowych

320 Rozdział 3

SQLClearStatement()

SQLClearTable()

Funkcja ta zwalnia zasoby związane z instrukcją określoną przez SQLHandle.

Kategoria SQLSkładnia [ResultCode=]SQLClearStatement(ConnectionID,SQLHandle);

Parametr Opis

ConnectionID Zmienna typu Memory Integer, utworzona przez użytkownika do przechowania numeru (ID) przypisywanego przez funkcję SQLConnect do każdego połączenia z bazą danych.

SQLHandle Wartość całkowita zwracana przez SQL po użyciu funkcji SQLPrepareStatement().

Patrz również SQLConnect(),SQLPrepareStatement()

Funkcja ta usuwa wszystkie rekordy z tablicy w bazie danych, ale nie usuwa samej tablicy.

Kategoria SQLSkładnia [ResultCode=]SQLClearTable(ConnectionID,"TableName");

Parametr Opis

ConnectionID Zmienna typu Memory Integer, utworzona przez użytkownika do przechowania numeru (ID) przypisywanego przez funkcję SQLConnect do każdego połączenia z bazą danych.

TableName Nazwa tablicy w bazie danych, której dotyczy operacja usuwania rekordów.

Przykład(y) Aby usunąć wszystkie rekordy z tablicy BATCH1, można użyć następującej instrukcji:

ResultCode=SQLClearTable(ConnectionID,"BATCH1");

Patrz również SQLConnect(), SQLClearStatement()

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 321

SQLCommit()Funkcja SQLCommit() definiuje koniec zestawu transakcji. Grupa poleceń zawierających się pomiędzy funkcjami SQLTransact() i SQLCommit() nosi nazwę zestawu transakcji. Zestaw transakcji jest traktowany jak pojedyncza transakcja. Po wykonaniu polecenia SQLTransact(), wszystkie kolejne operacje nie będą kierowane do bazy danych, aż do momentu kolejnego wywołania polecenia SQLCommit().

Kategoria SQLSkładnia [ResultCode=]SQLCommit(ConnectionID);

Parametr Opis

ConnectionID Zmienna typu Memory Integer, utworzona przez użytkownika do pamiętania numeru (ID) przypisywanego przez funkcję SQLConnect do każdego połączenia z bazą danych.

Uwaga Przy tworzeniu skryptów QuickScript zawierających funkcję SQLCommit() należy zachować dużą ostrożność. Ponieważ czas wykonania skryptu jest mnożony przez liczbę transakcji w zestawie transakcji, włączanie wielu poleceń do zestawu transakcji istotnie zwalnia działanie aplikacji.

Przykład ResultCode =SQLTransact( ConnectionID);ResultCode = SQLInsertPrepare( ConnectionID, TableName, BindList, SQLHandle );ResultCode = SQLInsertExecute( ConnectionID, BindList, SQLHandle );ResultCode = SQLInsertExecute( ConnectionID, BindList, SQLHandle );ResultCode = SQLInsertExecute( ConnectionID, BindList, SQLHandle );ResultCode = SQLInsertEnd( ConnectionID, SQLHandle );ResultCode = SQLCommit( ConnectionID);{Baza danych zapisze 3 komendy Insert }

Patrz również SQLRollback(), SQLTransact(), SQLCommit()

Opis pól, funkcji i zmiennych systemowych

322 Rozdział 3

SQLConnect()Funkcja ta nawiązuje połączenie z bazą danych określoną w ConnectString.

Kategoria SQLSkładnia [ResultCode=]SQLConnect(ConnectionID,"ConnectString");

Parametr Opis

ConnectionID Zmienna typu Memory Integer, utworzona przez użytkownika do przechowania numeru (ID) przypisywanego przez funkcję SQLConnect do połączenia z bazą danych.

ConnectString Nazwa bazy danych oraz dodatkowe informacje potrzebne do połączenia przy użyciu funkcji SQLConnect().

Przykład(y) Instrukcja zamieszczona poniżej łączy program InTouch z programem IBM OS/2 Database Manager, z bazą danych o nazwie SAMPLE:

[ResultCode=]SQLConnect(ConnectionID,"DSN=OS2DM;DB=SAMPLE");

Funkcja ta zwraca wartość zmiennej ConnectionID, wykorzystywanej jako parametr we wszystkich następujących w dalszej kolejności wywołaniach funkcji z grupy SQL. Parametr ConnectString identyfikuje bazę danych i zawiera dodatkowe informacje potrzebne do ustanowienia połączenia z tą bazą. Posiada on następujący format:

"DSN=nazwa żródła danych[;atrybut=wartość [;atrybut=wartość]...]"

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 323

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 skonfigurowana w programie Microsoft ODBC Administrator.

DLG Jeżeli DLG=1, wyświetlane jest okno dialogowe pozwalające na wpisanie informacji potrzebnych do 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 wartości z automatycznie 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 wartości z automatycznie aktualizowanych kolumn, zawierających np. czas.

Więcej informacji na temat atrybutów obsługiwanych przez określone bazy danych podano w elektronicznej wersji podręcznika SQL Access Manager User''s Guide.

Patrz również SQLDisconnect()

Opis pól, funkcji i zmiennych systemowych

324 Rozdział 3

SQLCreateTable()Funkcja ta tworzy tablicę w bazie danych przy wykorzystaniu parametrów z szablonu tabeli (Table Template) o określonej nazwie. Wzorce tablic, zdefiniowane w pliku SQL.DEF, określają strukturę tablic.

Kategoria SQLSkładnia [ResultCode=]SQLCreateTable(ConnectionID,TableName,

TemplateName);

Parametr Opis

ConnectionID Zmienna typu Memory Integer, utworzona przez użytkownika do zachowania numeru (ID) przypisywanego przez funkcję SQLConnect do każdego połączenia z bazą danych.

TableName Nazwa tablicy w bazie danych, której dotyczy operacja.

TemplateName Nazwa zdefiniowanego wzorca tablicy, który ma zostać użyty przez funkcję.

Przykład(y) Instrukcja zamieszczona poniżej powoduje utworzenie tablicy o nazwie BATCH1, dla której nazwy i typy kolumn zdefiniowane są we wzorcu o nazwie TEMPLATE.

ResultCode=SQLCreateTable(ConnectionID,"BATCH1","TEMPLATE");

Jeżeli parametr wprowadzony w skrypcie QuickScript ujęty jest w cudzysłów, np. "Parametr1", jako parametr użyty zostanie wprowadzony łańcuch znaków. Jeżeli znaki cudzysłowów nie są używane, system przyjmuje, ze Parameter1 jest zmienną, po czym przeszukuje bazę danych programu InTouch w celu znalezienia wartości zmiennej Parameter1. Przykładowo:

"c:\main\file" vs. location

Gdzie location jest zmienną tekstowa programu InTouch.

"c:\main\file" jest łańcuchem znaków

Patrz również SQLConnect()

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 325

SQLDelete()Funkcja ta usuwa rekord lub kilka rekordów.

Kategoria SQLSkładnia [ResultCode=]SQLDelete(ConnectionID,TableName,

WhereExpr);

Uwaga Funkcja SQLDelete() nie może zawierać pustego argumentu WhereExpression.Parametr Opis

ConnectionID Zmienna typu Memory Integer, utworzona przez użytkownika do zachowania numeru (ID) przypisywanego przez funkcję SQLConnect do każdego połączenia z bazą danych.

TableName Nazwa tablicy w bazie danych, której dotyczy operacja.

WhereExpression Warunek, który może być spełniony lub niespełniony dla każdego wiersza tablicy. Funkcja aktualizuje tylko te wiersze w tablicy, dla których warunek jest spełniony. Warunek musi mieć następujący format:

Nazwa_kolumny operator_porównania wyrażenie. Uwaga Jeśli w kolumnie znajdują się dane typu tekstowego, wyrażenie musi zostać wpisane w apostrofach.

Przykład(y) Poniższy przykład służy do wybrania wszystkich wierszy, w których w kolumnie Name występuje ciąg znaków EmployeeID:

name='EmployeeID'

Kolejny przykład służy do wybrania wszystkich wierszy, w których w kolumnie Partno występuje liczba od 100 do 199:

partno>=100 and partno<200

Następny przykład służy do wybrania wszystkich wierszy, w których w kolumnie Temperature występuje liczba większa od 350:

temperature>350

Instrukcja zamieszczona poniżej powoduje usunięcie z tablicy o nazwie BATCH1 wszystkich rekordów, w których w kolumnie lotno występuje liczba równa 65:

ResultCode=SQLDelete(ConnectionID,"BATCH1","lotno=65");

Patrz również SQLConnect()

Opis pól, funkcji i zmiennych systemowych

326 Rozdział 3

SQLDisconnect()

SQLDropTable()

SQLEnd()

Funkcja ta służy do odłączenia użytkownika od bazy danych. Kategoria SQLSkładnia [ResultCode=]SQLDisconnect(ConnectionID);

Parametr Opis

ConnectionID Zmienna typu Memory Integer, utworzona przez użytkownika do zachowania numeru (ID) przypisywanego przez funkcję SQLConnect do każdego połączenia z bazą danych.

Patrz również SQLConnect()

Funkcja ta usuwa tablicę z bazy danych.Kategoria SQLSkładnia [ResultCode=]SQLDropTable(ConnectionID,TableName);

Parametr Opis

ConnectionID Zmienna typu Memory Integer, utworzona przez użytkownika do zachowania numeru (ID) przypisywanego przez funkcję SQLConnect do każdego połączenia z bazą danych.

TableName Nazwa tablicy w bazie danych, której dotyczy operacja.

Przykład(y) Zamieszczona poniżej instrukcja usuwa tablicę BATCH1, po wykonaniu jej tablica ta nie będzie dostępna i nie będzie reagować na żadne polecenia.

ResultCode=SQLDropTable(ConnectionID,"BATCH1");

Patrz również SQLConnect()

Funkcja ta jest wykorzystywana po funkcji SQLSelect() w celu zwolnienia zasobów, które były użyte do zapamiętania tablicy wynikowej.

Kategoria SQLSkładnia [ResultCode=]SQLEnd(ConnectionID);

Parametr Opis

ConnectionID Zmienna typu Memory Integer, utworzona przez użytkownika do zachowania numeru (ID) przypisywanego przez funkcję SQLConnect do każdego połączenia z bazą danych.

Patrz również SQLConnect(), SQLSelect()

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 327

SQLErrorMsg()Funkcja ta odczytuje tekst komunikatu o błędzie związany z zadanym kodem błędu ResultCode. ErrorMsg jest zmienną typu Memory Message (maksymalnie 131 znaków), powiązaną z parametrem ResultCode.

Kategoria SQLSkładnia SQLErrorMsg(ResultCode);

Parametr Opis

ResultCode Zmienna całkowita zwracana przez większość funkcji SQL. Jej wartość wynosi 0, jeśli funkcja została wykonana pomyślnie oraz jest ujemną liczbą całkowitą, 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()

Opis pól, funkcji i zmiennych systemowych

328 Rozdział 3

SQLExecute()

SQLFirst()

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 pomocą funkcji SQLPepareStatement(), jako parametru SQLHandle należy użyć wartości zwróconej przez tą funkcję. Jeśli instrukcja nie została "przygotowana", wartość parametru SQLHandle powinna wynosić zero.

Kategoria SQLSkładnia [ResultCode=]SQLExecute(ConnectionID,BindList,

SQLHandle);

Parametr Opis

ConnectionID Zmienna typu Memory Integer, utworzona przez użytkownika do zachowania 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.

Funkcja ta wybiera pierwszy rekord z tablicy wynikowej utworzonej poprzez wykonanie ostatniej funkcji SQLSelect(). Przed wykonaniem tego polecenia musi być wywołana funkcja SQLSelect().

Kategoria SQLSkładnia [ResultCode=]SQLFirst(ConnectionID);

Parametr Opis

ConnectionID Zmienna typu Memory Integer, utworzona przez użytkownika do pamiętania numeru (ID) przypisywanego przez funkcję SQLConnect do każdego połączenia z bazą danych.

Patrz również SQLConnect(), SQLSelect()

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 329

SQLGetRecord()Funkcja ta odczytuje z bufora rekord określony przez parametr RecordNumber.

Kategoria SQLSkładnia [ResultCode=]SQLGetRecord(ConnectionID,RecordNumber);

Parametr Opis

ConnectionID Zmienna typu Memory Integer, utworzona przez użytkownika do zachowania numeru (ID) przypisywanego przez funkcję SQLConnect do każdego połączenia z bazą danych.

RecordNumber Numer rekordu, który ma zostać odczytany.Przykład(y) ResultCode=SQLGetRecord(ConnectionID,3);

Patrz również SQLConnect()

Opis pól, funkcji i zmiennych systemowych

330 Rozdział 3

SQLInsert()Funkcja ta wstawia nowy rekord do tablicy o podanej nazwie, wykorzystując wartości zmiennych z podanej listy powiązań. Parametr BindList definiuje wykorzystywane zmienne programu InTouch oraz powiązania pomiędzy nimi, a kolumnami bazy danych.

Kategoria SQLSkładnia [ResultCode=]SQLInsert(ConnectionID,TableName,

BindList);

Parametr Opis

ConnectionID Zmienna typu Memory Integer, utworzona przez użytkownika do zachowania numeru (ID) przypisywanego przez funkcję SQLConnect do każdego połączenia z bazą danych.

TableName Nazwa tablicy w bazie danych, której dotyczy operacja.

BindList Lista powiązań między kolumnami bazy danych i zmiennymi programu InTouch

Przykład(y) Instrukcja zamieszczona poniżej powoduje wstawienie nowego rekordu do tablicy o nazwie ORG przy wykorzystaniu wartości zmiennych z listy o nazwie List1.

ResultCode=SQLInsert(ConnectionID,"ORG","List1");

Uwaga Do szybkiego wstawiania rekordów do tablicy zamiast funkcji SQLInsert() można użyć trzech innych funkcji. Funkcja SQLInsert() w jednej operacji przygotowuje instrukcję wstawienia, wykonuje ją i zwalnia wykorzystywane zasoby. Przy ponownym wywołaniu funkcji SQLInsert() wszystkie te operacje są wykonywane ponownie. Zabiera to znacznie więcej czasu, niż wykorzystanie trzech funkcji wymienionych poniżej, które realizują poszczególne etapy omawianego zadania. Po wykonaniu funkcji SQLInsertPrepare() (przygotowanie), można wykonać dowolną liczbę razy funkcję SQLInsertExecute() (wstawienie rekordu), a następnie zakończyć wstawianie wykonując funkcję SQLInsertEnd().

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 331

SQLInsertEnd()

SQLInsertExecute()

Zakończenie tworzenia wyrażenia.Kategoria SQLSkładnia [ResultCode=]SQLInsertEnd(ConnectionID,SQLHandle);

Parametr Opis

ConnectionID Zmienna typu Memory Integer, utworzona przez użytkownika do zachowania 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 wykonuje przygotowaną instrukcję wstawiania rekordów do tablicy.

Kategoria SQLSkładnia [ResultCode=]SQLInsertExecute(ConnectionID,BindList,

SQLHandle);

Parametr Opis

ConnectionID Zmienna typu Memory Integer, utworzona przez użytkownika do zachowania 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()

Opis pól, funkcji i zmiennych systemowych

332 Rozdział 3

SQLInsertPrepare()

SQLLast()

Funkcja ta tworzy i przygotowuje instrukcję wstawiania rekordów do tablicy. Instrukcja wstawiania nie jest wykonywana. Parametr SQLHandle jest zmienną całkowitą, której wartość jest ustalana po wykonaniu instrukcji.

Kategoria SQLSkładnia [ResultCode=]SQLInsertPrepare

(ConnectionID,TableName,BindList,SQLHandle);

Parametr Opis

ConnectionID Zmienna typu Memory Integer, utworzona przez użytkownika do zachowania 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()

Funkcja ta wybiera ostatni rekord z tablicy wynikowej utworzonej poprzez wykonanie ostatniej funkcji SQLSelect(). Przed wykonaniem tego polecenia musi być wywołana funkcja SQLSelect().

Kategoria SQLSkładnia [ResultCode=]SQLLast(ConnectionID);

Parametr Opis

ConnectionID Zmienna typu Memory Integer, utworzona przez użytkownika do zachowania 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()

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 333

SQLLoadStatement()

SQLManageDSN()

Funkcja ta odczytuje instrukcję zapisaną w pliku FileName. W tym momencie funkcja ta wykazuje podobieństwo do instrukcji utworzonej za pomocą funkcji SQLSetStatement() oraz może być dołączana za pomocą funkcji SQLAppendStatement() lub wykonywana za pomocą funkcji SQLExecute(). W jednym pliku może znajdować się wyłącznie jedna instrukcja. Funkcja SQLAppendStatement() może być jednak wykorzystana do dołączania do instrukcji, jeżeli nie były wywoływane funkcje SQLPrepareStatement() lub SQLExecute().

Kategoria SQLSkładnia [ResultCode=]SQLLoadStatement(ConnectionID,FileName);

Parametr Opis

ConnectionID Zmienna typu Memory Integer, utworzona przez użytkownika do zachowania 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

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

Kategoria SQLSkładnia SQLManageDSN(ConnectionID);

Parametr Opis

ConnectionID Zmienna typu Memory Integer, utworzona przez użytkownika do zachowania numeru (ID) przypisywanego przez funkcję SQLConnect do każdego połączenia z bazą danych.

Opis pól, funkcji i zmiennych systemowych

334 Rozdział 3

SQLNext()

SQLNumRows()

Funkcja ta wybiera następny rekord z tablicy wynikowej utworzonej poprzez wykonanie ostatniej funkcji SQLSelect() Przed wykonaniem tego polecenia musi być wywołana funkcja SQLSelect().

Kategoria SQLSkładnia [ResultCode=]SQLNext(ConnectionID);

Parametr Opis

ConnectionID Zmienna typu Memory Integer, utworzona przez użytkownika do zachowania numeru (ID) przypisywanego przez funkcję SQLConnect do każdego połączenia z bazą danych.

Przykład(y) ResultCode=SQLNext(ConnectionID);

Patrz również SQLConnect(), SQLSelect()

Funkcja ta oblicza, ile wierszy spełnia kryteria podane w ostatnio użytej funkcji SQLSelect(). Przykładowo, warunek WhereExpression może zostać wykorzystany do zaznaczenia wszystkich wierszy z kolumnami o nazwie AGE, gdzie AGE jest równe 45, ilość zwróconych rekordów może wynosić 40 lub 4000. Może to być wykorzystane do określenia, która funkcja będzie wykonywana jako następna.

Kategoria SQLSkładnia SQLNumRows(ConnectionID);

Parametr Opis

ConnectionID Zmienna typu Memory Integer, utworzona przez użytkownika do zachowania numeru (ID) przypisywanego przez funkcję SQLConnect do każdego połączenia z bazą danych.

Przykład(y) Instrukcja zamieszczona poniżej powoduje przypisanie liczby wybranych wierszy do zmiennej całkowitej NumRows:

NumRows=SQLNumRows(ConnectionID);

Patrz również SQLConnect()

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 335

SQLPrepareStatement()

SQLPrev()

Funkcja SQLPrepareStatement() przygotowuje istniejącą instrukcję SQL do wykorzystania jej przez funkcję SQLSetParam(). Instrukcja może zostać utworzona zarówno za pomocą SQLSetStatement(), jak i SQLLoadStatement(). Funkcja zwraca parametr SQLHandle.

Kategoria SQLSkładnia [ResultCode=]SQLPrepareStatement(ConnectionID,

SQLHandle);

Parametr Opis

ConnectionID Zmienna typu Memory Integer, utworzona przez użytkownika do zachowania numeru (ID) przypisywanego przez funkcję SQLConnect do każdego połączenia z bazą danych.

SQLHandle Wartość całkowita zwracana przez SQL po użyciu funkcji SQLPrepareStatement().

Uwagi Aby zwolnić zasoby systemowe należy użyć odpowiedniej funkcji SQLClearStatement().

Aby prawidłowo wywołać procedurę zachowaną, należy użyć następującego przypisania:

ResultCode = SQLSetStatement(ConnectionID, "exec sp_MyStoredProc");

Przykład(y) ResultCode=SQLPrepareStatement(ConnectionID,SQLHandle);

Patrz również SQLConnect(), SQLSelect(), SQLSetStatement(), SQLLoadStatement()

Funkcja ta wybiera poprzedni rekord z tablicy wynikowej utworzonej poprzez wykonanie ostatniej funkcji SQLSelect().

Kategoria SQLSkładnia [ResultCode=]SQLPrev(ConnectionID);

Parametr Opis

ConnectionID Zmienna typu Memory Integer, utworzona przez użytkownika do zachowania numeru (ID) przypisywanego przez funkcję SQLConnect do każdego połączenia z bazą danych.

Uwagi Przed wykonaniem tego polecenia musi być wywołana funkcja SQLSelect()

Przykład(y) ResultCode=SQLPrev(ConnectionID);

Patrz również SQLConnect(), SQLSelect()

Opis pól, funkcji i zmiennych systemowych

336 Rozdział 3

SQLRollback()

SQLSelect()

Funkcja SQLRollback() cofa ostatnio wykonany zestaw transakcji. Grupa poleceń zawartych pomiędzy funkcjami SQLTransact() i SQLCommit() lub SQLRollback() nosi nazwę zestawu transakcji. Zestaw transakcji jest traktowany jak pojedyncza transakcja. Po wykonaniu polecenia SQLTransact(), wszystkie kolejne operacje nie będą kierowane do bazy danych, aż do momentu kolejnego wywołania polecenia SQLCommit().

Kategoria SQLSkładnia [ResultCode=]SQLRollback(ConnectionID,);

Parametr Opis

ConnectionID Zmienna typu Memory Integer, utworzona przez użytkownika do zachowania 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()

Funkcja ta wybiera informacje z wyszczególnionej tablicy w bazie danych. Podczas wykonywania funkcji SQLSelect(), w pamięci tworzona jest tymczasowa tablica wynikowa, zawierająca rekordy, które można przeszukiwać używając funkcji SQLFirst(), SQLLast(), SQLNext() i SQLPrev().

Uwaga Po wykonaniu funkcji SQLSelect() zawsze należy użyć funkcji SQLEnd() w celu zwolnienia zasobów, które były użyte do zapamiętania tablicy wynikowej.

Kategoria SQLSkładnia [ResultCode=]SQLSelect(ConnectionID,TableName,BindList,

WhereExpr,OrderByExpr);

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 337

Parametr Opis

ConnectionID Zmienna typu Memory Integer, utworzona przez użytkownika do zachowania numeru (ID) przypisywanego przez funkcję SQLConnect do każdego połączenia z bazą danych.

TableName Nazwa tablicy w bazie danych, której dotyczy operacja.

BindList Lista powiązań między kolumnami bazy danych i zmiennymi programu InTouch

WhereExpression Warunek, który może być spełniony lub niespełniony dla każdego wiersza tablicy. Funkcja wybiera z tablicy tylko te wiersze, dla których warunek jest spełniony. Warunek musi mieć następujący format:

Nazwa_kolumny operator_porównania wyrażenie.Uwaga Jeśli w kolumnie znajdują się dane typu tekstowego, wyrażenie musi zostać wpisane w apostrofach.Poniższy przykład służy do wybrania wszystkich wierszy, w których w kolumnie name występuje ciąg znaków EmployeeID:

name='EmployeeID'

Kolejny przykład służy do wybrania wszystkich wierszy, w których w kolumnie partno występuje liczba od 100 do 199:

partno>=100 and partno<200

Następny przykład służy do wybrania wszystkich wierszy, w których w kolumnie temperature występuje liczba większa od 350:

temperature>350

Opis pól, funkcji i zmiennych systemowych

338 Rozdział 3

Przyklady warunku WhereExpression

WhereExpr - zmienna typu Memory Message.OrderByExpr - zmienna typu Memory Message.Speed_Input - Memory Real - liczba wprowadzana przez użytkownikaSerial_Input - Memory Message - Tekst wprowadzony przez użytkownika

Przykład dla danych typu analogowego

WhereExpr = "Speed = " + text(Speed_Input,"#.##");

Porada Ponieważ Speed_Input jest liczbą, musi ona zostać przekonwertowana na tekst, co pozwoli na dołączenie jej do wyrażenia tekstowego.

Przykład dla danych typu tekstowego

WhereExpr = "Ser_No = ‘" +Serial_input + "’";

Porada Ponieważ Serial_Input jest łańcuchem znaków, wartość ujęta musi być w apostrofy, np:WhereExpr = “Ser_No=’125gh’”;

Przykłady dla danych typu tekstowego z wykorzystaniem instrukcji like

WhereExpr = "Ser_No like ‘" + "125%’"

Porada W przypadku korzystania z słowa Like można stosować znak % jako filtr.

Przykłady dla danych typu tekstowego i analogowego, stosowanych z operatorem And:

WhereExpr = "Ser_No = ‘" + Serial_input + "’" + " and " + "Speed = " + text(Speed_Input,"#.##");OrderByExpr = "";

Porada Jeżeli kolejność nie odgrywa żadnej roli, wpisać pusty łańcuch znaków, tak jak w przykładzie powyżej.

SQLSelect z zastosowaniem zmiennej WhereExpr

ResultCode = SQLSelect(Connect_Id,TableName,BindList,

WhereExpr,OrderByExpr);

Error_msg = SQLErrorMsg( ResultCode );

SQLSelect, WhereExpr wbudowane w funkcję

ResultCode = SQLSelect(Connect_Id,TableName,BindList,

“Ser_No = ‘" + Serial_input + "’", OrderByExpr);

Error_msg = SQLErrorMsg( ResultCode );

Po zakończeniu SQLSelect() należy zawsze wywoływać funkcję SQLEnd(Connect_Id). Jeżeli funkcja SQLEnd() nie zostanie wywołana, zasoby nie zostaną zwolnione, co może spowodować brak wolnej pamięci w czasie wykonywania aplikacji.

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 339

OrderByExpression Definiuje kolumnę i kierunek sortowania. Do sortowania można korzystać wyłącznie z nazw kolumn, a wyrażenie musi mieć postać:

Nazwa_kolumny [ASC|DESC]

Poniższe wyrażenie spowoduje uporządkowanie wybranej tablicy względem kolumny manager, w porządku rosnącym:

"manager ASC"

W celu posortowania kilku kolumn, wyrażenie musi mieć postać:

Nazwa_kolumny [ASC|DESC],Nazwa_kolumny [ASC|DESC]

Kolejne wyrażenie spowoduje uporządkowanie wybranej tablicy względem kolumny temperature w porządku rosnącym i względem kolumny time w porządku malejącym:

" temperature ASC, time DESC"Przykład(y) Instrukcja zamieszczona poniżej powoduje wybranie z tablicy o nazwie

BATCH (przy wykorzystaniu listy powiązań o nazwie List1) wszystkich rekordów, w których w kolumnie type znajduje się słowo cookie. Odczytana tablica zostanie uporządkowana rosnąco względem kolumny amount i malejąco względem kolumny sugar:

ResultCode=SQLSelect(ConnectionID,"BATCH","List1","type=''cookie''","amount ASC, sugar DESC");

Kolejna przykładowa instrukcja powoduje wybranie wszystkich danych z bazy danych, bez określania warunków WhereExpression i OrderByExpression:

ResultCode=SQLSelect(ConnectionID,"BATCH","List1", "","");

Patrz również SQLFirst(), SQLConnect(), SQLLast(), SQLNext(), SQLPrev(), SQLEnd(), SQLSelect()

Opis pól, funkcji i zmiennych systemowych

340 Rozdział 3

SQLSetParamChar()

SQLSetParamDate()

Funkcja ta powoduje przypisanie łańcucha znaków określonemu parametrowi tekstowemu. Funkcja SQLSetParamChar() może być wywoływana wiele razy przed wykonaniem instrukcji SQL, w wyniku czego parametr może być złożeniem kolejno przypisywanych łańcuchów znaków. Puste łańcuchy znaków są ignorowane.

Kategoria SQLSkładnia [ResultCode=]SQLSetParamChar(SQLHandle,ParameterNumber,

ParameterValue,MaxLen);

Parametr Opis

SQLHandle Wartość całkowita zwracana przez SQL po użyciu funkcji SQLPrepareStatement().

ParameterNumber Numer parametru w instrukcji SQL.ParameterValue Wartość parametru.MaxLen Maksymalny rozmiar kolumny, z którą związany

jest parametr. Opcja ta wyznacza czy parametr jest typu o różnej liczbie znaków, czy też typu o znacznie różnej liczbie znaków. Jeżeli parametr MaxLen ma długość równą lub większą od maksymalnej wartości dopuszczalnej w bazie danych, to parametr ma zmienną długość. Jeżeli jest dłuższy, jest typu LONG VARYING .

Przykład(y) ResultCode=SQLSetParamChar(SQLHandle,ParameterNumber, ParameterValue,MaxLen);

Patrz również SQLPrepareStatement()

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

Kategoria SQLSkładnia [ResultCode=]SQLSetParamDate(SQLHandle,ParameterNumber,

ParameterValue);

Parametr Opis

SQLHandle Wartość całkowita zwracana przez SQL po użyciu funkcji SQLPrepareStatement().

ParameterNumber Numer parametru w instrukcji SQL.ParameterValue Wartość parametru.

Przykład(y) ResultCode=SQLSetParamDate(SQLHandle,ParameterNumber,ParameterValue);

Patrz również SQLPrepareStatement()

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 341

SQLSetParamDateTime()

SQLSetParamDecimal()

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

Kategoria SQLSkładnia [ResultCode=]SQLSetParamDateTime(SQLHandle,

ParameterNumber,ParameterValue,Precision);

Parametr Opis

SQLHandle Wartość całkowita zwracana przez SQL po użyciu funkcji SQLPrepareStatement().

ParameterNumber Numer parametru w instrukcji SQL.ParameterValue Wartość parametru.Precision Długość wartości daty-czasu do przypisania. Jest

to liczba znaków, wykorzystywanych w ParameterValue.

Przykład(y) ResultCode=SQLSetParamDateTime(SQLHandle,ParameterNumber,ParameterValue,Precision);

Patrz również SQLPrepareStatement()

Funkcja ta powoduje przypisanie łańcucha znaków (cyfr) określonemu parametrowi dziesiętnemu. Precision jest liczbą cyfr, a Scale jest liczbą cyfr po kropce dziesiętnej.

Kategoria SQLSkładnia [ResultCode=]SQLSetParamDecimal(SQLHandle,

ParameterNumber,ParameterValue,Precision,Scale);

Parametr Opis

SQLHandle Wartość całkowita zwracana przez SQL po użyciu funkcji SQLPrepareStatement().

ParameterNumber Numer parametru w instrukcji SQL.ParameterValue Wartość parametru.Precision Długość wartości daty-czasu do przypisania. Jest

to liczba znaków, wykorzystywanych w parametrze ParameterValue.

Scale Liczba cyfr po kropce dziesiętnej.Przykład(y) ResultCode=SQLSetParamDecimal(SQLHandle,

ParameterNumber,ParameterValue,Precision, Scale);

Patrz również SQLPrepareStatement()

Opis pól, funkcji i zmiennych systemowych

342 Rozdział 3

SQLSetParamFloat()

SQLSetParamInt()

Funkcja ta powoduje przypisanie wartości ParameterValue określonemu parametrowi.

Kategoria SQLSkładnia [ResultCode=]SQLSetParamFloat(SQLHandle,

ParameterNumber,ParameterValue);

Parametr Opis

SQLHandle Wartość całkowita zwracana przez SQL po użyciu funkcji SQLPrepareStatement().

ParameterNumber Numer parametru w instrukcji SQL.ParameterValue Wartość parametru.

Przykład(y) ResultCode=SQLSetParamFloat(SQLHandle,ParameterNumber,ParameterValue);

Patrz również SQLPrepareStatement()

Funkcja ta powoduje przypisanie wartości ParameterValue określonemu parametrowi.

Kategoria SQLSkładnia [ResultCode=]SQLSetParamInt(SQLHandle,ParameterNumber,

ParameterValue);

Parametr OpisSQLHandle Wartość całkowita zwracana przez SQL po użyciu

funkcji SQLPrepareStatement().ParameterNumber Numer parametru w instrukcji SQL.ParameterValue Wartość parametru.

Przykład(y) ResultCode=SQLSetParamInt(SQLHandle,ParameterNumber,ParameterValue);

Patrz również SQLPrepareStatement()

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 343

SQLSetParamLong()Funkcja ta powoduje przypisanie wartości ParameterValue określonemu parametrowi.

Kategoria SQLSkładnia [ResultCode=]SQLSetParamLong(SQLHandle,ParameterNumber,

ParameterValue);

Parametr Opis

SQLHandle Wartość całkowita zwracana przez SQL po użyciu funkcji SQLPrepareStatement().

ParameterNumber Numer parametru w instrukcji SQL.ParameterValue Wartość parametru.

Przykład(y) ResultCode=SQLSetParamLong(SQLHandle,ParameterNumber,ParameterValue);

Patrz również SQLPrepareStatement()

Opis pól, funkcji i zmiennych systemowych

344 Rozdział 3

SQLSetParamNull()Funkcja ta przypisuje określonemu parametrowi wartość zerową (pustą).

Kategoria SQLSkładnia [ResultCode=]SQLSetParamNull(SQLHandle,ParameterNumber,

ParameterType,Precision,Scale);

Parametr Opis

SQLHandle Wartość całkowita zwracana przez SQL po użyciu funkcji SQLPrepareStatement().

ParameterNumber Numer parametru w instrukcji SQL.ParameterType Typ danych określonego parametru:

Typ Opis

Char Łańcuch znaków o stałej długości wypełniony znakami pustymi

Var Char Łańcuch znaków o zmiennej długości

Decimal Liczba dziesiętna w kodzie BCD

Integer 4-bajtowa liczba całkowita ze znakiem

Small Integer 2-bajtowa liczba całkowita ze znakiem

Float 4-bajtowa liczba zmiennoprzecinkowa

Double Precision Float

8-bajtowa liczba zmiennoprzecinkowa

DateTime 4-bajtowa reprezentacja daty i czasu

Date 2-bajtowa reprezentacja daty i czasu

Time 2-bajtowa reprezentacja daty i czasu

No Type Brak typu danychPrecision Dokładność wartości podawanych w systemie

dziesiętnym, maksymalna liczba znaków lub długość bajtów przeznaczonych do zapisu daty i czasu.

Scale Liczba cyfr po kropce dziesiętnej. Jest wymagana tylko w przypadku, gdy dotyczy zerowanego parametru.

Uwagi Jeśli dla tego samego parametru została wywołana już funkcja SQLSetParam(), nie można użyć żadnego typu danych.

Przykład(y) ResultCode=SQLSetParamNull(SQLHandle,ParameterNumber,ParameterType,Precision,Scale);

Patrz również SQLPrepareStatement()

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 345

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

Kategoria SQLSkładnia [ResultCode=]SQLSetParamTime(SQLHandle,ParameterNumber,

ParameterValue);

Parametr Opis

SQLHandle Wartość całkowita zwracana przez SQL po użyciu funkcji SQLPrepareStatement().

ParameterNumber Numer parametru w instrukcji SQL.ParameterValue Wartość parametru.

Przykład(y) ResultCode=SQLSetParamTime(SQLHandle,ParameterNumber,ParameterValue);

Patrz również SQLPrepareStatement()

Opis pól, funkcji i zmiennych systemowych

346 Rozdział 3

SQLSetStatement()Funkcja ta tworzy bufor instrukcji SQL wykorzystując do tego celu wartość SQLStatement, dla ustanowionego połączenia ConnectionID. Jedno połączenie ConnectionID może korzystać tylko z jednego bufora. Funkcja ta zwraca kody błędów.

Kategoria SQLSkładnia [ResultCode=]SQLSetStatement(ConnectionID,SQLStatement)

Parametr Opis

ConnectionID Zmienna typu Memory Integer, utworzona przez użytkownika do zachowania 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.

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, należy skorzystać z funkcji SQLEnd zamiast 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()

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 347

SQLTransact()Funkcja SQLTransact() określa początek zestawu transakcji. Grupa poleceń zawierających się pomiędzy funkcjami SQLTransact() i SQLCommit() nosi nazwę zestawu transakcji. Zestaw transakcji jest traktowany jak pojedyncza transakcja. Po wykonaniu polecenia SQLTransact(), wszystkie kolejne operacje nie będą kierowane do bazy danych, aż do momentu kolejnego wywołania polecenia SQLCommit().

Kategoria SQLSkładnia [ResultCode=]SQLTransact(ConnectionID);

Parametr Opis

ConnectionID Zmienna typu Memory Integer, utworzona przez użytkownika do zachowania numeru (ID) przypisywanego przez funkcję SQLConnect do każdego połączenia z bazą danych.

Uwaga Przy tworzeniu skryptów QuickScript zawierających funkcję SQLTransact() należy zachować dużą ostrożność. Ponieważ czas wykonania skryptu jest mnożony przez liczbę transakcji w zestawie transakcji, włączanie wielu poleceń do zestawu transakcji istotnie zwalnia działanie aplikacji.

Patrz również SQLCommit(), SQLRollback()

Opis pól, funkcji i zmiennych systemowych

348 Rozdział 3

SQLUpdate()Funkcja ta powoduje zmodyfikowanie rekordu w wyszczególnionej tablicy w bazie danych przy użyciu bieżących wartości zmiennych powiązanych z kolumnami tablicy.

Kategoria SQLSkładnia [ResultCode=]SQLUpdate(ConnectionID,TableName,BindList,

WhereExpr);

Parametr Opis

ConnectionID Zmienna typu Memory Integer, utworzona przez użytkownika do zachowania numeru (ID) przypisywanego przez funkcję SQLConnect do każdego połączenia z bazą danych.

TableName Nazwa tablicy, 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<200Nastę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

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

Patrz również SQLConnect()

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 349

SQLUpdateCurrent()

Sqrt()

Funkcja ta pobiera zaznaczony rekord i uaktualnia go wartościami zmiennych InTouch. Zamieszczony poniżej przykład spowoduje uaktualnienie zaznaczonego w danym momencie rekordu.

Kategoria SQLSkładnia [ResultCode=]SQLUpdateCurrent(ConnectionID);

Parametr Opis

ConnectionID Zmienna typu Memory Integer, utworzona przez użytkownika do zachowania numeru (ID) przypisywanego przez funkcję SQLConnect do każdego połączenia z bazą danych.

Przykład(y) ResultCode=SQLUpdateCurrent(ConnectionID);

Patrz również SQLConnect()

Funkcja ta oblicza pierwiastek kwadratowy z podanej liczby.Kategoria funkcje matematyczneSkładnia RealResult=Sqrt(Number);

Parametr OpisNumber Dowolna liczba, zmienna rzeczywista (Real) lub

całkowita (Integer) programu InTouch.Przykład(y) AnalogTag1=Sqrt(AnalogTag2);

Opis pól, funkcji i zmiennych systemowych

350 Rozdział 3

StartAppAutomatyczne uruchomienie innej aplikacji Windows.

Kategoria systemSkładnia StartApp "AppName";

Parametr OpisAppName Nazwa programu (pliku z rozszerzeniem .EXE)

aplikacji do uruchomienia, (np. Wordpad.EXE).Chociaż rozszerzenie .EXE w nazwie pliku nie jest wymagane, zaleca się jego wpisywanie. Można również wprowadzać parametry, w przypadkach, gdy aplikacja je obsługuje.

Długie nazwy plików nie działają. Jednakże można stosować poniższy przykład zastępowania długich nazw.

Jeżeli długa nazwa dostępu ma postać: :C:\Program files\Microsoft Office\Office\Excel. Wówczas należy wprowadzić: C:\Progra~1\Micros~2\Office\Excel (postać w systemie Dos).StartApp "C:\Progra~1\Micros~2\Office\Excel";

Jeżeli wykorzystywany jest plik windows i pokazywane są wszystkie informacje o pliku, w środkowej kolumnie umieszczona będzie nazwa w takiej 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()

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 351

StringASCII()Zwraca kod ASCII pierwszego znaku zadanej zmiennej tekstowej.

Kategoria funkcje tekstoweSkładnia IntegerResult=StringASCII("Char");

Parametr OpisChar Zmienna tekstowa lub łańcuch znaków

alfanumerycznych.Uwagi Kod ASCII pierwszego znaku ciągu znaków Char zostanie zapisany jako

IntegerResult. W czasie wykonywania funkcji, testowany lub modyfikowany 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()

Opis pól, funkcji i zmiennych systemowych

352 Rozdział 3

StringChar()Zwraca znak dla zadanego kodu ASCII.

Kategoria funkcje tekstoweSkładnia MessageResult=StringChar(ASCII);

Parametr OpisASCII Kod ASCII lub zmienna typu całkowitego.

Uwagi Znak o podanym (jako parametr ASCII) kodzie ASCII zostanie zapisany jako MessageResult. Jednym z zastosowań tej funkcji jest dołączanie do zmiennych tekstowych znaków ASCII, które nie są reprezentowane na klawiaturze.

Przykład(y) ControlString=MessageTag+StringChar(13)+StringChar(10);

W przykładzie powyżej, do zmiennej MessageTag dołączone zostały znaki [CR(13)] i [LF(10)], a całość została zapisana jako ControlString. Wstawianie znaków o kodach spoza normalnego zakresu 32-126 może być bardzo użyteczne przy tworzeniu kodów sterujących dla urządzeń zewnętrznych, takich jak drukarki lub modemy.Funkcja ta jest często wykorzystywana do tworzenia poleceń SQL. W wyrażeniu WhereExpression wartości tekstowe muszą często ujęte być w znaki cudzysłowów, można je wstawić za pomocą funkcji StringChar(34).

Patrz również StringASCII(), StringFromIntg(), StringFromReal(), StringFromTime(), StringFromTimeLocal(), StringInString(), StringLeft(), StringLen(), StringLower(), StringMid(), StringReplace(), StringRight(), StringSpace(), StringTest(), StringToIntg(), StringToReal(), StringTrim(), StringUpper(), Text()

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 353

StringCompare()

StringCompareEncrypted()

Porównuje dwie wartości tekstowe.Kategoria StringSkładnia StringCompare( Text1, Text2 );

Parametr OpisText1 Pierwsza wartość tekstowa.Text2 Druga wartość tekstowa.

Uwagi Jeżeli wartości są identyczne, zwrócona zostanie wartość 0, jeżeli wartość Text1 jest mniejsza niż Text2, funkcja zwróci -1 natomiast gdy wartość Text1 jest większa niż Text2, funkcja zwróci 1.

Przykład(y) Result = StringCompare ("Text1","Text2"); (or)Result = StringCompare (MText1,MText2);Gdzie wartość Result jest zmienną całkowitą lub rzeczywistą a MText1 oraz MText2 są zmiennymi tekstowymi typu Memory.

Patrz również StringASCII(), StringChar(), StringFromReal(), StringFromTime(), StringFromTimeLocal(), StringInString(), StringLeft(), StringLen(), StringLower(), StringMid(), StringReplace(), StringRight(), StringSpace(), StringTest(), StringToIntg(), StringToReal(), StringTrim(), StringUpper(), Text()

Porównuje zakodowaną wartość tekstową z niezakodowaną wartością tekstową i zwraca wartość dyskretną.

Kategoria StringSkładnia StringCompareEncrypted(sMessageTag,

sEncryptedMessageTag);

Parametr OpissMessageTag Wartość tekstowa, z którą zakodowana wartość

tekstowa ma być porównana.sEncryptedMessageTag

Wartość tekstowa pochodząca z kodowanego wprowadzania danych.

Przykład(y) Result = StringCompareEncrypted(PlainTxt, Passwd);.Gdzie Passwd jest zmienną tekstową zawierającą wartość pochodzącą z kodowanego wprowadzania danych, PlainTxt jest zmienną tekstową, z którą wprowadzana wartość ma być porównana, natomiast Result jest zmienną dyskretną ustawianą na TRUE, gdy teksty są identyczne i FALSE, gdy są różne.

Patrz również StringASCII(), StringChar(), StringFromReal(), StringFromTime(), StringFromTimeLocal(), StringInString(), StringLeft(), StringLen(), StringLower(), StringMid(), StringReplace(), StringRight(), StringSpace(), StringTest(), StringToIntg(), StringToReal(), StringTrim(), StringUpper(), Text()

Opis pól, funkcji i zmiennych systemowych

354 Rozdział 3

StringCompareNoCase()

StringFromGMTTimeToLocal()

Porównuje dwie wartości tekstowe ignorując wielkość znaków.Kategoria StringSkładnia StringCompareNoCase( Text1, Text2 );

Parametr OpisText1 Pierwsza wartość tekstowa.Text2 Druga wartość tekstowa.

Uwagi Jeżeli wartości są identyczne (wielkość liter jest ignorowana), zwrócona zostanie wartość 0, jeżeli wartość Text1 jest mniejsza niż Text2, funkcja zwróci -1 natomiast gdy wartość Text1 jest większa niż Text2, funkcja zwróci 1.

Przykład(y) Result = StringCompareNoCase ("Text1","TEXT1"); (or)Result = StringCompareNoCase (MText1,MText2);Gdzie wartość Result jest zmienną całkowitą lub rzeczywistą a MText1 oraz MText2 są zmiennymi tekstowymi typu Memory.

Patrz również StringASCII(), StringChar(), StringFromReal(), StringFromTime(), StringFromTimeLocal(), StringInString(), StringLeft(), StringLen(), StringLower(), StringMid(), StringReplace(), StringRight(), StringSpace(), StringTest(), StringToIntg(), StringToReal(), StringTrim(), StringUpper(), Text()

Konwertuje metkę czasową podaną w czasie UTC (Coordinated Universal Time) na czas lokalny, a następnie wyświetla wartość wynikową. Ta funkcja przyjmuje w argumencie metkę czasową w postaci liczby sekund, który upłynęły od 1 stycznia 1970, a następnie zamienia ją na wartość tekstową. Tą samą funkcjonalność można uzyskać stosując funkcję StringFromTime()

Kategoria funkcje tekstoweSkładnia MessageResult=StringFromGMTTimeToLocal

(SecsSince1-1-70,StringType);

Parametr OpisSecsSince1-1-70 Konwersja na ciąg znaków przeprowadzana jest

zgodnie z parametrem StringType, a wynik zwracany jest jako MessageResult.

StringType Parametr określający system zapisu:Typ Opis1 Zapis daty w formacie ustawionym

w Panelu sterowania Windows. (Podobny do formatu zmiennej systemowej $DateString.)

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 355

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) Ten przykład zakłada, że strefa czasowa lokalnego komputera to Pacific Standard Time (UTC-0800). Czas UTC przekazany do funkcji to 12:00:00 AM on Friday, 1/2/1970. Ponieważ strefa PST ma czas przesunięty o 8 godzin względem UTC, funkcja zwróci następujące wyniki:

StringFromGMTTimeToLocal(86400, 1) zwraca "1/1/70"

StringFromGMTTimeToLocal(86400, 2) zwraca "04:00:00 PM"

StringFromGMTTimeToLocal(86400, 3) zwraca "Thu Jan 01 16:00:00 1970"

StringFromGMTTimeToLocal(86400, 4) zwraca "Thu"

StringFromGMTTimeToLocal(86400, 5) zwraca "Thursday"

Uwagi Poprawki wynikające ze zmiany czasu zimowego na letni lub odwrotnie, zostaną automatycznie uwzględnione w wynikach funkcji. Dlatego nie trzeba dokonywać żadnych dodatkowych poprawek, aby zmiana czasu została uwzględniona.

Patrz również StringASCII(), StringChar(), StringFromIntg(), StringFromReal(), StringFromTime(), StringFromTimeLocal(), StringInString(), StringLeft(), StringLen(), StringLower(), StringMid(), StringReplace(), StringRight(), StringSpace(), StringTest(), StringToIntg(), StringToReal(), StringTrim(), StringUpper(), Text()

Opis pól, funkcji i zmiennych systemowych

356 Rozdział 3

StringFromIntg()Konwertuje wartość całkowitą na odpowiadający jej ciąg znaków.

Kategoria funkcje tekstoweSkładnia MessageResult=StringFromIntg(Number,Base);

Parametr OpisNumber Liczba do konwersji. Dowolna liczba lub zmienna

całkowita.Base Parametr określający system zapisu. Dowolna liczba

lub zmienna całkowita.Uwagi Liczba całkowita jest przekształcana na system określony przez parametr

Base (dwójkowy, szesnastkowy, itp.), a wynik tej operacji jest zapisywany jako MessageResult.

Przykład(y) StringFromIntg(26, 2) da w wyniku "11010"

StringFromIntg(26, 8) da w wyniku "32"

StringFromIntg(26, 16) da w wyniku "1A"

Patrz również StringASCII(), StringChar(), StringFromReal(), StringFromTime(), StringFromTimeLocal(), StringInString(), StringLeft(), StringLen(), StringLower(), StringMid(), StringReplace(), StringRight(), StringSpace(), StringTest(), StringToIntg(), StringToReal(), StringTrim(), StringUpper(), Text()

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 357

StringFromReal()

StringFromTime()

Przekształca liczbę w formacie rzeczywistym na odpowiadający jej ciąg znaków, zapisując ją w formacie zmiennoprzecinkowym lub w formacie wykładniczym.

Kategoria funkcje tekstoweSkładnia MessageResult=StringFromReal(Number,Precision,"Type");

Parametr OpisNumber Jest konwertowany zgodnie z parametrami Precision

i Type, a wartość przypisywana jest do MessageResult. Liczba lub zmienna typu rzeczywistego.

Precision Podaje ile miejsc dziesiętnych należy wyświetlić. Dowolna liczba lub zmienna całkowita.

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

Konwertuje metkę czasową podaną w czasie UTC (Coordinated Universal Time) na czas lokalny, a następnie wyświetla wartość wynikową. Ta funkcja przyjmuje w argumencie metkę czasową w postaci liczby sekund, który upłynęły od 1 stycznia 1970, a następnie zamienia ją na wartość tekstową. Tą samą funkcjonalność można uzyskać stosując funkcję StringFromGMTTimeToLocal().

Kategoria funkcje tekstoweSkładnia MessageResult=StringFromTime

(SecsSince1-1-70,StringType);

Parametr OpisSecsSince1-1-70 Konwersja na ciąg znaków przeprowadzana jest

zgodnie z parametrem StringType, a wynik zwracany za pomocą MessageResult.

StringType Parametr określający system zapisu:

Opis pól, funkcji i zmiennych systemowych

358 Rozdział 3

Typ Opis1 Zapis daty w formacie ustawionym

w Panelu sterowania Windows. (Podobny do formatu zmiennej systemowej $DateString.)

2 Zapis czasu w formacie ustawionym w Panelu sterowania Windows. (Podobny do formatu zmiennej systemowej $TImeString.)

3 Wyświetlenie tekstu składającego się z 24 znaków, podającego zarówno datę jak i godzinę. "Wed Jan 02 02:03:55 1993"

4 Wyświetlenie skrótowego oznaczenia dla dnia tygodnia. "Wed"

5 Wyświetlenie pełnej nazwy dnia tygodnia. "Wednesday"

Przykład(y) Ten przykład zakłada, że strefa czasowa lokalnego komputera to Pacific Standard Time (UTC-0800). Czas UTC przekazany do funkcji to 12:00:00 AM on Friday, 1/2/1970. Ponieważ strefa PST ma czas przesunięty o 8 godzin względem UTC, funkcja zwróci następujące wyniki:

StringFromTime(86400, 1) zwraca "1/1/70"

StringFromTime(86400, 2) zwraca "04:00:00 PM"

StringFromTime(86400, 3) zwraca "Thu Jan 01 16:00:00 1970"

StringFromTime(86400, 4) zwraca "Thu"

StringFromTime(86400, 5) zwraca "Thursday"

Uwagi Poprawki wynikające ze zmiany czasu zimowego na letni lub odwrotnie, zostaną automatycznie uwzględnione w wynikach funkcji. Dlatego nie trzeba dokonywać żadnych dodatkowych poprawek, aby zmiana czasu została uwzględniona.

Patrz również StringASCII(), StringChar(), StringFromIntg(), StringFromReal(), StringFromTime(), StringFromTimeLocal(), StringInString(), StringLeft(), StringLen(), StringLower(), StringMid(), StringReplace(), StringRight(), StringSpace(), StringTest(), StringToIntg(), StringToReal(), StringTrim(), StringUpper(), Text()

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 359

StringFromTimeLocal()Ta funkcja konwertuje metkę czasową w postaci liczby sekund, który upłynęły od 1 stycznia 1970 na wartość tekstową. Zwrócona wartość reprezentuje czas lokalny.

Kategoria funkcje tekstoweSkładnia MessageResult=StringFromTimeLocal(SecsSince1-1-70,

StringType);

Parametr OpisSecsSince1-1-70 Konwersja na ciąg znaków przeprowadzana jest

zgodnie z parametrem StringType, a wynik zwracany za pomocą MessageResult.

StringType Parametr określający system zapisu:Typ Opis1 Zapis daty w formacie ustawionym

w Panelu sterowania Windows. (Podobny do formatu zmiennej systemowej $DateString.)

2 Zapis czasu w formacie ustawionym w Panelu sterowania Windows. (Podobny do formatu zmiennej systemowej $TImeString.)

3 Wyświetlenie tekstu składającego się z 24 znaków, podającego zarówno datę jak i godzinę. "Wed Jan 02 02:03:55 1993"

4 Wyświetlenie skrótowego oznaczenia dla dnia tygodnia. "Wed"

5 Wyświetlenie pełnej nazwy dnia tygodnia. "Wednesday"

Przykład(y) StringFromTimeLocal(86400, 1) zwraca "1/2/70"

StringFromTimeLocal (86400, 2) zwraca "12:00:00 AM"

StringFromTimeLocal (86400, 3) zwraca "Fri Jan 02 00:00:00 1970"

StringFromTimeLocal (86400, 4) zwraca "Fri"

StringFromTimeLocal (86400, 5) zwraca "Friday"

Uwagi Poprawki wynikające ze zmiany czasu zimowego na letni lub odwrotnie, zostaną automatycznie uwzględnione w wynikach funkcji. Dlatego nie trzeba dokonywać żadnych dodatkowych poprawek, aby zmiana czasu została uwzględniona.

Patrz również StringASCII(), StringChar(), StringFromIntg(), StringFromReal(), StringFromTime(), StringInString(), StringLeft(), StringLen(), StringLower(), StringMid(), StringReplace(), StringRight(), StringSpace(), StringTest(), StringToIntg(), StringToReal(), StringTrim(), StringUpper(), Text()

Opis pól, funkcji i zmiennych systemowych

360 Rozdział 3

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

Kategoria funkcje tekstoweSkładnia IntegerResult=StringInString("Text","SearchFor",

StartPos,CaseSens);

Parametr OpisText Łańcuch znaków przeszukiwany pod kątem

występowania grupy znaków SearchFor. Jeśli grupa ta występuje w kilku miejscach, do zmiennej IntegerResult przypisywane jest miejsce pierwszego wystąpienia. Łańcuch znaków lub zmienna tekstowa.

SearchFor Poszukiwany ciąg znaków w Text. Łańcuch znaków lub zmienna tekstowa.

StartPos Liczba całkowita określająca miejsce początkowe przeszukiwania łańcucha Text. Dowolna liczba lub zmienna całkowita.

CaseSens Parametr określający, czy przy przeszukiwaniu łańcucha znaków mają być rozróżniane duże i małe litery (0=nie, 1=tak). Dowolna liczba lub zmienna całkowita.

Przykład(y) Instrukcja StringInString("The mixer is running","mix", 1, 0)zwróci wartość 5

StringInString("Today is Thursday", "day", 1, 0)zwróci wartość 3

StringInString("Today is Thursday", "day", 10, 0)zwróci wartość 15

Instrukcja StringInString("Today is Veteran''s Day","Day",1, 1)zwróci wartość 20

Instrukcja StringInString("Today is Veteran''s Day","Night",1, 1)zwróci wartość 0

Patrz również StringASCII(), StringChar(), StringFromIntg(), StringFromReal(), StringFromTime(), StringFromTimeLocal(), StringLeft(), StringLen(), StringLower(), StringMid(), StringReplace(), StringRight(), StringSpace(), StringTest(), StringToIntg(), StringToReal(), StringTrim(), StringUpper(), Text()

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 361

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

Kategoria funkcje tekstoweSkładnia MessageResult=StringLeft("Text",Chars);

Parametr OpisTekst Łańcuch znaków lub zmienna tekstowa.Chars Liczba znaków, które ma zwrócić funkcja, lub

zmienna typu całkowitego.Uwagi Jeśli wartość parametru Chars wynosi 0, funkcja zwraca cały łańcuch

znaków.Przykład(y) Instrukcja StringLeft("The Control Pump is On", 3)

zwróci"The"

StringLeft("Pump 01 is On", 4) zwróci"Pump"

StringLeft("Pump 01 is On", 96) zwróci"Pump 01 is On"

Instrukcja StringLeft("The Control Pump is On", 0) zwróci"The Control Pump is On"

Patrz również StringASCII(), StringChar(), StringFromIntg(), StringFromReal(), StringFromTime(), StringInString(), StringLen(), StringLower(), StringMid(), StringReplace(), StringRight(), StringSpace(), StringTest(), StringToIntg(), StringToReal(), StringTrim(), StringUpper(), Text()

Opis pól, funkcji i zmiennych systemowych

362 Rozdział 3

StringLen()

StringLower()

Zwraca liczbę całkowitą określającą długość zadanej zmiennej tekstowej.Kategoria funkcje tekstoweSkładnia IntegerResult=StringLen("Text");

Parametr OpisTekst Łańcuch znaków lub zmienna tekstowa.

Uwagi Długość tekstu Text (w znakach) przypisywana jest do zmiennej IntegerTag. Zliczane są wszystkie znaki w zmiennej tekstowej, włączając w to znaki standardowo nie wyświetlane.

Przykład(y) StringLen("Twelve percent") zwróci wartość 14

StringLen("12%") zwróci wartość 3

StringLen("The end." + StringChar(13)) zwróci wartość 9

Uwaga. [CR] jest znakiem powrotu do początku linii o kodzie ASCII 13Patrz również StringASCII(), StringChar(), StringFromIntg(), StringFromReal(),

StringFromTime(), StringFromTimeLocal(), StringInString(), StringLeft(), StringLower(), StringMid(), StringReplace(), StringRight(), StringSpace(), StringTest(), StringToIntg(), StringToReal(), StringTrim(), StringUpper(), Text()

Zamienia wszystkie znaki pisane duże literą na znaki pisane małą literą, a wynik tej operacji umieszczany jest w zmiennej MessageResult.

Kategoria funkcje tekstoweSkładnia MessageResult=StringLower("Text");

Parametr OpisTekst Tekst, w którym duże litery mają być zmienione

na małe. Łańcuch znaków lub zmienna tekstowa.Uwagi Funkcja nie zmienia małych liter, cyfr, symboli i znaków specjalnych

(a także polskich dużych liter na małe). Przykład(y) StringLower("TURBINE")zwróci lancuch "turbine"

StringLower("22.2 Is The Value") zwróci"22.2 is the value."

Patrz również StringASCII(), StringChar(), StringFromIntg(), StringFromReal(), StringFromTime(), StringFromTimeLocal(), StringInString(), StringLeft(), StringLen(), StringMid(), StringReplace(), StringRight(), StringSpace(), StringTest(), StringToIntg(), StringToReal(), StringTrim(), StringUpper(), Text()

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 363

StringMid()

StringReplace()

Funkcja ta zwraca liczbę znaków określoną parametrem Chars, rozpoczynając od pozycji określonej przez parametr StartChar. Funkcja ta nieznacznie różni się od swoich odpowiedników: funkcji StringLeft() i StringRight(), ponieważ umożliwia ona określenie zarówno początku jak i końca wyjściowego łańcucha znaków.

Kategoria funkcje tekstoweSkładnia MessageResult=StringMid("Text",StartChar,Chars);

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

Funkcja ta zastępuje określoną grupę znaków w podanym łańcuchu znaków (lub zmiennej tekstowej). Dzięki tej funkcji można zastępować znaki, słowa lub frazy w łańcuchach znaków i zmiennych tekstowych.

Kategoria funkcje tekstoweSkładnia MessageResult=StringReplace(Text,SearchFor,ReplaceWith,

CaseSens,NumToReplace,MatchWholeWords);

Opis pól, funkcji i zmiennych systemowych

364 Rozdział 3

Parametr OpisTekst Łańcuch znaków lub zmienna tekstowa podlegające

modyfikacjom. Łańcuch znaków lub zmienna tekstowa.

SearchFor Poszukiwana grupa znaków, która ma zostać wymieniona na inną. Łańcuch znaków lub zmienna tekstowa.

ReplaceWith Dowolny tekst, który będzie wstawiony. Łańcuch znaków lub zmienna tekstowa.

CaseSens Parametr określający, czy przy przeszukiwaniu łańcucha znaków mają być rozróżniane duże i małe litery. (0-nie i 1=tak.) Liczba lub zmienna typu całkowitego.

NumToReplace Liczba wystąpień, w których ma być wprowadzona zamiana. (-1 = wszystkie) Dowolna liczba lub zmienna całkowita.

MatchWholeWords Określa czy działanie funkcji ograniczone zostanie do zastępowania całych słów. (0-nie i 1=tak.) Liczba lub zmienna typu całkowitego.Jeżeli parametr MatchWholeWords zostanie ustawiony na 1, a SearchFor na "and", znaki "and" w słowie "handle" nie zostaną zastąpione. Jeśli natomiast parametr MatchWholeWords ma wartość 0, grupa znaków "and" występująca w słowie "handle" zostanie zamieniona.

Przykład(y) StringReplace("In From Within","In","Out",0,1,0) zwróci"Out From Within" (zastępowany jest tylko pierwszy)

StringReplace("In From Within","In","Out",0,-1,0) zwróci"Out From without" (zastępowane wszystkie wystąpienia)

StringReplace("In From Within","In","Out",1,-1,0) zwróci"Out From Within" (zastępowane wszystkie wystąpienia ze zgodną wielkością liter)

StringReplace("In From Within","In","Out",0,-1.1) zwróci"Out From Within" (zastępowane wszystkie wystąpienia ze zgodnością całych wyrazów)

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

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 365

StringRight()Zwraca liczbę znaków określoną przez parametr Chars, począwszy od znaku umieszczonego skrajnie po prawej stronie.

Kategoria funkcje tekstoweSkładnia MessageResult=StringRight("Text",Chars);

Parametr OpisTekst Łańcuch znaków lub zmienna tekstowa. Chars Liczba znaków, które ma zwrócić funkcja, lub

zmienna typu całkowitego.Uwagi Jeśli wartość parametru Chars wynosi 0, funkcja zwraca cały łańcuch

znaków.Przykład(y) StringRight("The Pump is On", 2) zwróci

"On"

StringRight("The Pump is On", 5) zwróci"is On"

StringRight("The Pump is On", 87) zwróci"The Pump is On"

StringRight("The Pump is On", 0) zwróci"The Pump is On"

Patrz również StringASCII(), StringChar(), StringFromIntg(), StringFromReal(), StringFromTime(), StringFromTimeLocal(), StringInString(), StringLeft(), StringLen(), StringLower(), StringMid(), StringReplace(), StringSpace(), StringTest(), StringToIntg(), StringToReal(), StringTrim(), StringUpper(), Text()

Opis pól, funkcji i zmiennych systemowych

366 Rozdział 3

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

Kategoria funkcje tekstoweSkładnia MessageResult=StringSpace(NumSpaces);

Parametr OpisNumSpaces Liczba spacji do wygenerowania. Dowolna liczba lub

zmienna całkowita.Uwagi Funkcja StringSpace() zwraca łańcuch spacji o długości zadanej za

pomocą parametru NumSpaces.Przykład(y) Wszystkie spacje reprezentowane są za pomocą znaku "×".

StringSpace(4) zwróci lancuch "××××"

"Pump" + StringSpace(1) + "Station" zwróci"Pump×Station"

Patrz również StringASCII(), StringChar(), StringFromIntg(), StringFromReal(), StringFromTime(), StringFromTimeLocal(), StringInString(), StringLeft(), StringLen(), StringLower(), StringMid(), StringReplace(), StringRight(), StringTest(), StringToIntg(), StringToReal(), StringTrim(), StringUpper(), Text()

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 367

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

Kategoria funkcje tekstoweSkładnia DiscreteResult=StringTest("Text",TestType)

Parametr OpisText Łańcuch znaków, na którym operuje funkcja.

Łańcuch znaków lub zmienna tekstowa.TestType Kryterium usuwania, zgodnie z poniższym

zestawieniem:Typ Opis1 Znak alfanumeryczny ('A'-'Z', 'a-z' and

'0-9')2 Cyfra ('0'- 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 Hexadecimal characters ('A'-'F' or 'a'-'f'

or '0'-'9')9 Znak drukowany (0x21-0x2F)10 Znak sterujący (0x00-0x1F lub 0x7F)11 Znaki spacji (0x09-0x0D lub 0x20)

Uwagi Jeśli pierwszy znak łańcucha znaków Text jest znakiem zgodnym z kryterium określonym za pomocą TestType, funkcja StringTest() ustawia DiscreteResult na 1. Jeżeli funkcja StringTest() zawiera większą liczbę znaków, sprawdzany jest typ wyłącznie pierwszego znaku.

Przykład(y) StringTest("ACB123",1) zwróci wartość 1

StringTest("ABC123",5) zwróci wartość 0

Patrz również StringASCII(), StringChar(), StringFromIntg(), StringFromReal(), StringFromTime(), StringFromTimeLocal(), StringInString(), StringLeft(), StringLen(), StringLower(), StringMid(), StringReplace(), StringRight(), StringSpace(), StringToIntg(), StringToReal(), StringTrim(), StringUpper(), Text()

Opis pól, funkcji i zmiennych systemowych

368 Rozdział 3

StringToIntg()Funkcja ta przekształca wartość numeryczną łańcucha znaków (lub zmiennej tekstowej) na wartość całkowitą, która może być użyta do obliczeń matematycznych.

Kategoria funkcje tekstoweSkładnia IntegerResult=StringToIntg("Text");

Parametr OpisText Łańcuch znaków, na którym operuje funkcja.

Łańcuch znaków lub zmienna tekstowa.Uwagi Gdy określana jest wartość łańcucha znaków, system odczytuje pierwszy

znak łańcucha i określa jego wartość numeryczną. Jeśli pierwszy znak nie jest cyfrą ani znakiem minus "-" (puste miejsca są ignorowane), wartość numeryczna łańcucha znaków wynosi 0. Jeśli pierwszy znak jest cyfrą lub znakiem minus "-", system odczytuje kolejne znaki do czasu napotkania znaku nie będącego cyfrą.

Przykład(y) Jeśli Text="ABCD", wówczas IntegerTag=0.

Jeśli Text="22.2 is the Value", wówczas IntegerTag=22 (jeżeli zmienna IntegerTag jest zdefiniowana jako liczba całkowita).

Jeśli Text="The Value is 22", wówczas IntegerTag=0.

Patrz również StringASCII(), StringChar(), StringFromIntg(), StringFromReal(), StringFromTime(), StringFromTimeLocal(), StringInString(), StringLeft(), StringLen(), StringLower(), StringMid(), StringReplace(), StringRight(), StringSpace(), StringTest(), StringToReal(), StringTrim(), StringUpper(), Text()

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 369

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

Kategoria funkcje tekstoweSkładnia RealResult=StringToReal("Text");

Parametr OpisTekst Łańcuch znaków, na którym operuje funkcja.

Łańcuch znaków lub zmienna tekstowa.Uwagi Gdy określana jest wartość łańcucha znaków, system odczytuje pierwszy

znak łańcucha i określa jego wartość numeryczną. Jeśli pierwszy znak nie jest cyfrą ani znakiem minus "-" (puste miejsca są ignorowane), wartość numeryczna łańcucha znaków wynosi 0. Jeśli pierwszy znak jest cyfrą lub znakiem minus "-", system odczytuje kolejne znaki do czasu napotkania znaku nie będącego cyfrą.

Przykład(y) Jeśli Text ="ABCD", wówczas RealTag=0.

Jeśli Text="22.261 is the Value", wówczas RealTag=22.261.

Jeśli Text="The Value is 22", wówczas RealTag=0.

Patrz również StringASCII(), StringChar(), StringFromIntg(), StringFromReal(), StringFromTime(), StringFromTimeLocal(), StringInString(), StringLeft(), StringLen(), StringLower(), StringMid(), StringReplace(), StringRight(), StringSpace(), StringTest(), StringToIntg(), StringTrim(), StringUpper(), Text()

Opis pól, funkcji i zmiennych systemowych

370 Rozdział 3

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

Kategoria funkcje tekstoweSkładnia MessageResult=StringTrim("Text",TrimType);

Parametr OpisText Łańcuch znaków, z którego będą usuwane spacje.

Łańcuch znaków lub zmienna tekstowa.TrimType Kryterium usuwania, zgodnie z poniższym

zestawieniem:Typ Opis1 Spacje zostaną usunięte z początku

łańcucha znaków (wszystkie spacje na lewo od pierwszego znaku, który nie jest spacją).

2 Spacje zostaną usunięte z końca łańcucha znaków (wszystkie spacje na prawo od ostatniego znaku, który nie jest spacją).

3 Usunięte zostaną wszystkie spacje z wyjątkiem pojedynczych spacji pomiędzy słowami.

Uwagi Text jest przeszukiwany pod kątem występowania spacji o kodach ASCII 0x09-0x0D lub 0x20, które zostaną usunięte. Parametr TrimType określa, które spacje zostaną usunięte.

Przykład(y) Wszystkie spacje reprezentowane są za pomocą znaku "×".StringTrim("×××××This×is×a××test×××××", 1) zwróci"This×is×a××test×××××"

StringTrim("×××××This×is×a××test×××××", 2) zwróci"×××××This×is×a××test"

StringTrim("×××××This×is×a××test×××××", 3) zwróci"This×is×a×test"

Funkcja StringReplace() pozwala na usunięcie WSZYSTKICH spacji ze zadanej zmiennej tekstowej. W tym celu należy zamienić wszystkie spacje na pusty łańcuch znaków.

Patrz również StringASCII(), StringChar(), StringFromIntg(), StringFromReal(), StringFromTime(), StringFromTimeLocal(), StringInString(), StringLeft(), StringLen(), StringLower(), StringMid(), StringReplace(), StringRight(), StringSpace(), StringTest(), StringToIntg(), StringToReal(), StringUpper(), Text()

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 371

StringUpper()

SwitchDisplayLanguage()

Przekształca wszystkie małe litery w podanym tekście na duże.Kategoria funkcje tekstoweSkładnia MessageResult=StringUpper("Text");

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

Powoduje przełączenie języka aplikacji.Kategoria różneSkładnia SwitchDisplayLanguage(LocaleID);

Parametr OpisLocaleID Określa język, w którym powinny być

wyświetlane statyczne wartości tekstowe.Uwagi n/dPrzykład(y) DIM German as INTEGER;

German=1031SwitchDisplayLanguage(German);

gdzie German jest językiem, który ma być wyświetlany w czasie działania aplikacji.

Patrz również Zmienna systemowa $Language

Opis pól, funkcji i zmiennych systemowych

372 Rozdział 3

Tan()

Text()

Zwraca tangens kąta podanego w stopniach.Kategoria funkcje matematyczneSkładnia Result=Tan(AngleNumber);

Parametr OpisAngleNumber Wartość kąta w stopniach. Dowolna liczba, zmienna

rzeczywista (Real) lub całkowita (Integer) programu InTouch.

Przykład(y) Wave = 10 + 50 * Tan(6 * $Second);Tan(45) zwróci 1Tan(0) zwróci 0

Patrz również Cos(), Sin(), ArcCos(), ArcSin(), ArcTan()

Funkcja ta powoduje zapisanie w zmiennej tekstowej wartości zmiennej analogowej (całkowitej lub rzeczywistej) w postaci łańcucha znaków, z zastosowaniem formatu określonego w Format_Text.

Kategoria funkcje tekstoweSkładnia MessageResult=Text(Analog_Tag,"Format_Text");

Parametr OpisAnalog_Tag Wartość zmiennej analogowej, która będzie poddana

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

Format_Text Parametr określający format zapisu. Łańcuch znaków lub zmienna tekstowa.

Przykład(y) MessageTag=Text(Analog_Tag,"#.00");

Message_Tag jest zmienną tekstową, Analog_Tag jest zmienną całkowitą lub rzeczywistą, a "#0.00" reprezentuje format wyświetlania 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()

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 373

Trunc()

TseGetClientId()

Przybliża liczbę rzeczywistą przez odrzucenie części po prawej stronie kropki dziesiętnej.

Kategoria funkcje matematyczneSkładnia ResultNumericTag=Trunc(Number);

Parametr OpisNumber Dowolna liczba, zmienna rzeczywista (Real) lub

całkowita (Integer) programu InTouch.Uwagi Wynik wykonania tej funkcji jest taki sam, jak zapisania wartości zmiennej

rzeczywistej jako zmiennej całkowitej . Przykład(y) Trunc(4.3) daje w wyniku - 4

Trunc(-4.3) daje w wyniku - 4

Patrz również Round()

Zwraca wersję łańcucha znaków ID klienta (adres TCP/IP klienta) jeżeli aplikacja jest uruchomiona na stanowisku klienckim Terminal Serwera. W przeciwnym przypadku zwraca pusty ciąg znaków.

Kategoria Usługi terminaloweSkładnia MessageResult=TseGetClientId();

Parametr OpisMessageResult Zmienna typu message, która zwraca ID klienta.

Uwagi To ID jest używane wewnętrznie do generowania nazw serwera SuiteLink i nazw plików Loggera.

Przykład MsgTag=TseGetClientID();

Adres IP klienta, na przykład: 10.103.202.1 zostanie zwrócony do MsgTag.

Opis pól, funkcji i zmiennych systemowych

374 Rozdział 3

TseGetClientNodeName()

TseQueryRunningOnClient()

TseQueryRunningOnConsole()

Zwraca nazwę komputera, z którego została zestawiona sesja terminalowa.Kategoria różneSkładnia TseGetClientNodeName();

Parametr Opis

Uwagi Jeżeli uruchamiana z poziomu konsoli, zwraca nazwę komputera serwera terminalowego. Z kolei uruchamiana w sesji terminalowej, zwraca nazwę komputera terminalowego. Jeżeli terminal nie ma nazwy, funkcja zwraca pustą wartość.

Przykład(y)

Funkcja ta zwraca niezerową liczbę całkowitą, jeżeli aplikacja jest uruchomiona na terminalu. W przeciwnym przypadku zwraca zero (0).

Kategoria Usługi terminaloweSkładnia Result=TseQueryRunningOnClient();

Parametr OpisResult Zwraca 0, jeżeli aplikacja nie jest uruchomiona na

terminalu.Uwagi BrakPrzykład IntTag=TseQueryRunningOnClient();

Zwraca IntTag=1, jeżeli aplikacja jest uruchomiona na terminalu.

Zwraca niezerową liczbę całkowitą, jeżeli aplikacja jest uruchomiona na konsoli Terminal Serwera. W przeciwnym przypadku zwraca zero (0).

Kategoria Usługi terminaloweSkładnia Result=TseQueryRunningOnConsole();

Parametr OpisResult Zwraca 0 jeżeli aplikacja nie jest uruchomiona na

konsoli TSUwagi BrakPrzykład IntTag=TseQueryRunningOnConsole();

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

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 375

UTCDateTime()Odczytuje czas UTC, bieżącą strefę czasową, przesunięcie GMT oraz informacje o zmianie czasu zimowego na letni.

Kategoria różneSkładnia UTCDateTime( Format );

Parametr OpisFormat Parametr tekstowy, który określa format

wyświetlania. Poniżej znajdują się poprawne wartości.

Uwagi UTCDateTime() zwraca wartość tekstową, która powinna zostać przypisana do zmiennej tekstowej.

Przykład Godzina 9:24 rano w strefie czasowej Pacyfiku będzie wyświetlana w różny sposób:

UTCDateTime ("UTC_SHORT") zwraca 17:24:05

UTCDateTime ("UTC_LONG") zwraca 01/06/2003 17:24:05

UTCDateTime ("UTC_LOCAL") zwraca Pacific Standard Time -8:0: 1

Jeżeli jako argument zostanie przekazana nieprawidłowa wartość (inna niż UTC_SHORT, UTC_LONG, UTC_LOCAL), funkcja zwróci domyślną wartość (ddd mmm dd hh:mm:ss yyyy).

Dla powyższej daty i czasu (9:24 rano 6 Stycznia 2003) zwracaną wartością będzie Mon Jan 06 17:24:05 2003.

Opis pól, funkcji i zmiennych systemowych

376 Rozdział 3

wcAddItem()

wcClear()

Dodaje łańcuch znaków do listy lub listy rozwijalnej. Jeśli lista lub lista rozwijalna nie zostały utworzone jako posortowane, tekst jest dodawany na końcu listy. W przeciwnym wypadku, tekst jest wstawiany do listy, po czym jest ona ponownie sortowana.

Kategoria obiekty sterujące WindowsSkładnia [ErrorNumber=]wcAddItem("ControlName","MessageTag");

Parametr OpisControlName Nazwa obiektu sterującego oknem. Przykładowo,

ListBox_1. Łańcuch znaków lub zmienna tekstowa.MessageTag Łańcuch znaków do wyświetlania. Łańcuch znaków

lub zmienna tekstowa.Uwagi Kody błędów dla tych funkcji można znaleźć w rozdziale Appendix A,

"Usuwanie problemów przy korzystaniu z funkcji skryptowych.".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 On Show (Przy otwarciu) związanego z oknem), zawierającego obiekt List:wcAddItem("ListBox_1", "Chocolate");

wcAddItem("ListBox_1", "Vanilla");

wcAddItem("ListBox_1", "Strawberry");

Patrz również wcInsertItem()

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

Kategoria obiekty sterujące WindowsSkładnia [ErrorNumber=]wcClear("ControlName");

Parametr OpisControlName Nazwa obiektu sterującego oknem. Przykładowo,

ListBox_1. Łańcuch znaków lub zmienna tekstowa.

Uwagi Kody błędów dla tych funkcji można znaleźć w rozdziale Appendix A, "Usuwanie problemów przy korzystaniu z funkcji skryptowych.".

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

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 377

wcDeleteItem()

wcDeleteSelection()

Funkcja ta usuwa element listy lub listy rozwijalnej o podanym indeksie.Kategoria obiekty sterujące WindowsSkładnia [ErrorNumber=]wcDeleteItem("ControlName",ItemIndex);

Parametr OpisControlName Nazwa obiektu sterującego oknem. Przykładowo,

ListBox_1. Łańcuch znaków lub zmienna tekstowa.ItemIndex Numer oznaczający pozycję elementu na liście.

Dowolna liczba lub zmienna całkowita.Uwagi Kody błędów dla tych funkcji można znaleźć w rozdziale Appendix A,

"Usuwanie problemów przy korzystaniu z funkcji skryptowych.".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);

Usuwa aktualnie wybrany element z listy lub listy rozwijalnej.Kategoria obiekty sterujące WindowsSkładnia [ErrorNumber =]wcDeleteSelection("ControlName");

Parametr OpisControlName Nazwa obiektu sterującego oknem. Przykładowo,

ListBox_1. Łańcuch znaków lub zmienna tekstowa.Uwagi Kody błędów dla tych funkcji można znaleźć w rozdziale Appendix A,

"Usuwanie problemów przy korzystaniu z funkcji skryptowych.".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");

Opis pól, funkcji i zmiennych systemowych

378 Rozdział 3

wcErrorMessage()Funkcja ta zwraca komunikat tekstowy opisujący błąd.

Kategoria obiekty sterujące WindowsSkładnia ErrorMessage=wcErrorMessage(ErrorNumber);

Parametr OpisErrorMessage Zmienna tekstowa.ErrorNumber Liczba zwracana przez obiekty sterujące okien.

Dowolna liczba lub zmienna całkowita.Uwagi Kody błędów dla tych funkcji można znaleźć w rozdziale Appendix A,

"Usuwanie problemów przy korzystaniu z funkcji skryptowych.".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 (Wyświetlanie wartości tekstowej) do wyświetlenia komunikatu o błędzie, czyli wartości zmiennej ErrorDescription.Skrypt On Show (Przy otwarciu) związany z oknem:ErrorNumber=wcLoadList("ListBox_1","c:\InTouch\recipe.txt");

ErrorDescription=wcErrorMessage(errornumber);

Funkcja ta może również zostać wykorzystana do wyświetlania komunikatów o błędach dla wszystkich funkcji związanych z obiektami sterującymi Windows:ErrorNumber=wcAddItem("ListBox_1","United States");

ErrorMsg=wcErrorMessage(ErrorNumber);

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 379

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

Kategoria obiekty sterujące WindowsSkładnia [ErrorNumber=]wcFindItem

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

Parametr OpisControlName Nazwa obiektu sterującego oknem. Przykładowo,

ListBox_1. Łańcuch znaków lub zmienna tekstowa.MessageTag Łańcuch znaków do porównania. Łańcuch znaków

lub zmienna tekstowa.DiscreteTag Określa sposób, w jaki będą porównywane łańcuchy

znaków. Przyjmuje jedną z następujących wartości:0 = przy porównywaniu nie są rozróżniane litery duże i małe1 = litery duże i małe są rozróżniane przy porównywaniu

Tagname Zmienna całkowita, do której zostanie zapisany indeks elementu spełniającego podane warunki. Jeżeli żaden element ich nie spełnia, zwrócona zostanie wartość -1.

Uwagi Kody błędów dla tych funkcji można znaleźć w rozdziale Appendix A, "Usuwanie problemów przy korzystaniu z funkcji skryptowych.".

Zastosowanie Listy i listy rozwijalnePrzykład(y) Zakładając, że ListBox_1 jest listą zawierającą elementy "ItemA",

"ItemB", "ItemC", funkcja zwróci do zmiennej Result następujące wartości:

wcFindItem("ListBox_1", "ItemB", 0, Result); zwróci 2wcFindItem("ListBox_1", "Itemb", 1, Result); zwróci -1wcFindItem("ListBox_1", "itemc", 0, Result); zwróci 3wcFindItem("ListBox_1", "XYZ", 0, Result); zwróci -1

Opis pól, funkcji i zmiennych systemowych

380 Rozdział 3

wcGetItem()Funkcja ta odczytuje łańcuch znaków związany z elementem pola listy (List box) lub listy rozwijalnej (Combo box) określonym przez parametr ItemIndex.

Kategoria obiekty sterujące WindowsSkładnia [ErrorNumber=]wcGetItem("ControlName",ItemIndex,

Tagname);

Parametr OpisControlName Nazwa obiektu sterującego oknem. Przykładowo,

ListBox_1. Łańcuch znaków lub zmienna tekstowa.ItemIndex Numer oznaczający pozycję elementu na liście.

Dowolna liczba lub zmienna całkowita.Tagname Zmienna tekstowa. Funkcja wcGetItem zwraca

wartość elementu, który jest związany z podanym indeksem.

Uwagi Kody błędów dla tych funkcji można znaleźć w rozdziale Appendix A, "Usuwanie problemów przy korzystaniu z funkcji skryptowych.".

Zastosowanie Listy i listy rozwijalne.Przykład(y) Wciśnięcie przycisku, z którym powiązane jest zamieszczone poniżej

wyrażenie, powoduje przypisanie łańcucha znaków odpowiadającego 10-u elementowi listy rozwijalnej zmiennej tekstowej ListSelection.wcGetItem("Combobox_1", 10, ListSelection);

Jeśli dziesiątym elementem listy jest "Vanilia", zmiennej ListSelection będzie odpowiadał łańcuch znaków "Vanilia".

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 381

wcGetItemData()Funkcja ta określa wartość całkowitą związaną z elementem pola listy (List box) lub listy rozwijalnej (Combo box) określonym przez parametr ItemIndex.

Kategoria obiekty sterujące WindowsSkładnia [ErrorNumber=]wcGetItemData("ControlName",ItemIndex,

Tagname);

Parametr OpisControlName Nazwa obiektu sterującego oknem. Przykładowo,

ListBox_1. Łańcuch znaków lub zmienna tekstowa.ItemIndex Numer oznaczający pozycję elementu na liście.

Dowolna liczba lub zmienna całkowita.Tagname Nazwa zmiennej typu całkowitego lub

rzeczywistego. Funkcja wcGetItemData przypisuje do tej zmiennej wartość numeryczną, odpowiadającą elementowi.

Uwagi Kody błędów dla tych funkcji można znaleźć w rozdziale Appendix A, "Usuwanie problemów przy korzystaniu z funkcji skryptowych.".

Zastosowanie Listy i listy rozwijalne.Przykład(y) Jeśli instrukcja zamieszczona poniżej zostanie np. zapisana w skrypcie

QuickScript związanym z przyciskiem (dotykowe połączenie animacyjne), po naciśnięciu tego przycisku odczytuje ona wartość numeryczną związaną z piątym elementem pola listy ListBox_1 i przypisuje ją do zmiennej ItemValue:wcGetItemData("ListBox_1", 5, ItemValue);

Jeśli piątemu elementowi listy przypisana jest wartość całkowita 4500, zmiennej ItemValue zostanie przypisana wartość 4500.

Patrz również wcSetItemData()

Opis pól, funkcji i zmiennych systemowych

382 Rozdział 3

wcInsertItem()Funkcja ta wstawia do listy łańcuch znaków. ItemIndex jest numerem indeksu odpowiadającym pozycji na liście, gdzie będzie umieszczony łańcuch znaków. W przeciwieństwie do funkcji wcAddItem(), funkcja wcInsertItem() nie sortuje listy, nawet jeśli pole listy lub lista rozwijalna zostały utworzone jako posortowane.

Kategoria obiekty sterujące WindowsSkładnia [ErrorNumber=]wcInsertItem("ControlName",ItemIndex,

"MessageTag");

Parametr OpisControlName Nazwa obiektu sterującego oknem. Przykładowo,

ListBox_1. Łańcuch znaków lub zmienna tekstowa.ItemIndex Numer oznaczający pozycję elementu na liście. Jeśli

ten parametr ma wartość -1, łańcuch znaków zostanie dodany na końcu listy. Dowolna liczba lub zmienna całkowita.

MessageTag Zawiera łańcuch znaków, który ma być wstawiony w miejscu określonym przez ItemIndex. Łańcuch znaków lub zmienna tekstowa.

Uwagi Kody błędów dla tych funkcji można znaleźć w rozdziale Appendix A, "Usuwanie problemów przy korzystaniu z funkcji skryptowych.".

Zastosowanie Listy i listy rozwijalne.Przykład(y) Jeśli instrukcja zamieszczona poniżej zostanie np. umieszczona w skrypcie

QuickScript związanym z przyciskiem, naciśnięcie tego przycisku powoduje wstawienie nowego elementu o nazwie "Blueberry" do listy, na czwartym miejscu od góry:wcInsertItem("ListBox_1", 4, "Blueberry");

Patrz również wcAddItem()

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 383

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

Kategoria obiekty sterujące WindowsSkładnia [ErrorNumber=]wcLoadList("ControlName","Filename");

Parametr OpisControlName Nazwa obiektu sterującego oknem. Przykładowo,

ListBox_1. Łańcuch znaków lub zmienna tekstowa.Filename Nazwa pliku z zawartością listy w formacie ASCII.

Jeśli nie zostanie tu podana pełna ścieżka dostępu do pliku, a tylko jego nazwa, funkcja będzie poszukiwać pliku w katalogu aplikacji. Łańcuch znaków lub zmienna tekstowa.

Uwagi Kody błędów dla tych funkcji można znaleźć w rozdziale Appendix A, "Usuwanie problemów przy korzystaniu z funkcji skryptowych.".

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 do tego celu skrypt QuickScript związany z oknem):wcLoadList("Combobox_1", "c:\InTouch.32\wclist.txt");

Patrz również wcAddItem(), wcSaveList()

Opis pól, funkcji i zmiennych systemowych

384 Rozdział 3

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

Kategoria obiekty sterujące WindowsSkładnia [ErrorNumber=]wcLoadText("ControlName", "Filename");

Parametr OpisControlName Nazwa obiektu sterującego oknem. Przykładowo,

ListBox_1. Łańcuch znaków lub zmienna tekstowa.Filename Nazwa pliku z zawartością listy w formacie ASCII.

Jeśli nie zostanie tu podana pełna ścieżka dostępu do pliku, a tylko jego nazwa, funkcja będzie poszukiwać pliku w katalogu aplikacji. Łańcuch znaków lub zmienna tekstowa.

Uwagi Funkcja wcLoadText() obsługuje pliki zawierające dane w formacie ASCII, np. utworzone za pomocą programu Microsoft Notatnik.

Kody błędów dla tych funkcji można znaleźć w rozdziale Appendix A, "Usuwanie problemów przy korzystaniu z funkcji skryptowych.".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 Productivity Pack.

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):wcLoadText("Textbox_1", "c:\InTouch.32\readme.txt");

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 385

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

Kategoria obiekty sterujące WindowsSkładnia [ErrorNumber=]wcSaveList("ControlName","Filename");

Parametr OpisControlName Nazwa obiektu sterującego oknem. Przykładowo,

ListBox_1. Łańcuch znaków lub zmienna tekstowa.Filename Nazwa pliku z zawartością listy w formacie ASCII.

Jeśli plik nie istnieje, to zostaje utworzony. Tekst zapisany w pliku może zostać następnie wczytany do pola tekstu przy użyciu funkcji wcLoadList(). Łańcuch znaków lub zmienna tekstowa.

Uwagi Kody błędów dla tych funkcji można znaleźć w rozdziale Appendix A, "Usuwanie problemów przy korzystaniu z funkcji skryptowych.".

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 akcji:wcSaveList("ListBox_1", "c:\InTouch.32\newlist.txt");

Jeżeli pliki ASCII wykorzystywane do tworzenia listy lub listy rozwijalnej zostały utworzone przy pomocy innego programu, muszą być odpowiednio sformatowane oraz zawierać wszystkie, wymagane dodatkowo informacje. Format:TypObiektu, LiczbaElementówElementListy, WartośćElementuElementListy, WartośćElementu : : : :ElementListy, WartośćElementuPrzykładowo: Zamieszczony poniżej plik, wczytywany do listy, zawiera trzy elementy, elementy nie mają przyporządkowanych wartości (więcej informacji na temat wartości danych elementów podano w opisie funkcji wcSetItemData()). Plik ten ma następujący format:COMBOBOX, 3Czekolada, 0Wanilia, 0Truskawki, 0Opis: COMBOBOX jest typem obiektu. ListCount jest równy 3, ponieważ lista zawiera następujące elementy: Chocolate, Vanilla i Strawberry. Chocolate jest umieszczona na liście jako pierwszy element lub index 1. Vanilla jako drugi, Strawberry zaś jako 3. Każdy z tych indeksów ma przypisaną wartość 0.

Patrz również wcLoadList(), wcSetItemData()

Opis pól, funkcji i zmiennych systemowych

386 Rozdział 3

wcSaveText()Funkcja ta zapisuje tekst z pola tekstu do pliku FileName. Jeśli plik nie istnieje, to zostaje utworzony. Jeśli istnieje, musi być to plik umożliwiający odczyt i zapis.

Kategoria obiekty sterujące WindowsSkładnia [ErrorNumber=]wcSaveText("ControlName","Filename");

Parametr OpisControlName Nazwa obiektu sterującego oknem. Przykładowo,

ListBox_1. Łańcuch znaków lub zmienna tekstowa.Filename Zawiera nazwę docelowego pliku. 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. Plik wynikowy może zostać wczytany do obiektu tekstowego za pomocą funkcji wcLoadText(). Łańcuch znaków lub zmienna tekstowa.

Uwagi Kody błędów dla tych funkcji można znaleźć w rozdziale Appendix A, "Usuwanie problemów przy korzystaniu z funkcji skryptowych.".

Zastosowanie Pola tekstu.Przykład(y) Wciśnięcie przycisku, z którym powiązany jest zamieszczony poniżej

skrypt QuickScript, powoduje zapisanie informacji wprowadzonej w polu tekstowym do pliku (c:\InTouch.32\newtext.txt).wcSaveText("Textbox_1", "c:\InTouch.32\newtext.txt");

Funkcja wcSaveText() zapisuje pliki w formacie ASCII, tak, jak np. Notatnik systemu Windows.

Patrz również wcLoadList()

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 387

wcSetItemData()Funkcja ta przypisuje wartości Integer (Number) elementom pola listy (List box) lub listy rozwijalnej (Combo box) określonym przez parametr ItemIndex. Funkcja umożliwia przypisanie liczby do łańcucha znaków.

Kategoria obiekty sterujące WindowsSkładnia [ErrorNumber=]wcSetItemData("ControlName",ItemIndex,

Number);

Parametr OpisControlName Nazwa obiektu sterującego oknem. Przykładowo,

ListBox_1. Łańcuch znaków lub zmienna tekstowa.ItemIndex Wartość całkowita określająca kolejność

zapisywanych elementów. Dowolna liczba lub zmienna całkowita.

Number Liczba całkowita zawierająca wartość elementu. Dowolna liczba lub zmienna całkowita.

Uwagi Pełna lista zawierająca elementy może być utworzona za pomocą innego programu (np. Notatnika), a następnie wczytana poprzez wywołanie odpowiedniej funkcji. Pliki te musza być odpowiednio sformatowane, zgodnie z instrukcjami, podanymi przy opisie funkcji wcSaveList().

Kody błędów dla tych funkcji można znaleźć w rozdziale Appendix A, "Usuwanie problemów przy korzystaniu z funkcji skryptowych.".

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 zmiany wartości zmiennej wykonywanego po wybraniu receptury o określonej nazwie:wcSetItemData("ListBox_1", 1, 4500); {pierwszy element listy (maka)=4500}

wcSetItemData("ListBox_1", 2, 1500); {drugi element listy (cukier)=1500}

wcSetItemData("ListBox_1", 3, 325); {trzeci element listy (sól)=325}

Funkcja wcGetItemData() zwraca wartość elementu o podanym indeksie. Ta wartość numeryczna przypisywana jest do parametru Tagname. Parametr ten może być zmienną typu I/O Integer, zapisującą swoją wartość bezpośrednio do urządzenia.

Patrz również wcLoadList(), wcSaveList(), wcGetItemData()

Opis pól, funkcji i zmiennych systemowych

388 Rozdział 3

WindowState()Zwraca stan określonego okna.

Kategoria różneSkładnia IntegerResult = WindowState(WindowName);

Parametr OpisWindowName Nazwa okna, którego stan chcemy odczytać. Wartość

lub zmienna tekstowaUwagi Zwracany typ to (0, 1 lub 2) jest przypisywany do zmiennej IntegerTag.Przykład(y) WindowState("Win1") zwraca 1, gdzie "Win1" jest

nazwą otwartego okna.

WindowState("Win2") will return 0, gdzie "Win2" jest nazwą okna, które nie jest otwarte.

WindowState("XXXX") zwraca 2, gdzie "XXXX" jest nazwą okna, które nie jest zdefiniowane.

Patrz również OpenWindowsList()

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 389

WWControl()Pozwala na przywrócenie, zminimalizowanie, zmaksymalizowanie lub zamknięcie aplikacji z poziomu programu InTouch.

Kategoria różneSkładnia WWControl("AppTitle","ControlType");

Parametr OpisAppTitle Nazwa sterowanej aplikacji. Nazwę danej aplikacji

można uzyskać stosując funkcję InfoAppTitle(). Łańcuch znaków lub zmienna tekstowa.

ControlType Określa, w jaki sposób ma zachowywać się aplikacja po uruchomieniu (działanie jest identyczne z wybraniem odpowiedniego polecenia z menu do sterowania oknem). Łańcuch znaków lub zmienna tekstowa.Typ Opis"Restore" Uaktywnienie i wyświetlenie okna

aplikacji."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.Uwagi Aby użyć tej funkcji w systemie Windows Server 2003, użytkownik musi

należeć do jednej z wymienionych grup: Administrators, Performance Log lub Performance Monitor lub mieć na komputerze prawa do zapisu w rejestrze.

Przykład(y) WWControl("Calculator","Restore");

WWControl(InfoAppTitle("View"), "Close");

Patrz również InFoAppTitle(), ActivateApp(), StartApp()

Opis pól, funkcji i zmiennych systemowych

390 Rozdział 3

WWExecute()

WWIsDayLightSaving()

Funkcja ta wysyła polecenie (DDE Execute) do podanej aplikacji i tematu.Kategoria WWDDESkładnia [Status=]WWExecute("Application","Topic","Command");

Parametr OpisApplication Nazwa aplikacji, do której jest wysyłane polecenie.

Łańcuch znaków lub zmienna tekstowa.Topic Nazwa tematu w obrębie aplikacji, do której jest

wysyłane polecenie. Łańcuch znaków lub zmienna tekstowa.

Command Polecenie, które ma zostać wysłane. Łańcuch znaków lub zmienna tekstowa.

Uwagi Łańcuch znaków Command zostanie przesłany do określonej aplikacji i tematu.

Przykład(y) Poniższa instrukcja spowoduje wykonanie makroinstrukcji w Excelu:Macro="Macro1!TestMacro";

Command="[Run(" + StringChar(34) + Macro + StringChar(34) + ",0)]";

WWExecute("excel","system",Command);

Wykonanie instrukcji WWExecute("excel","system",Command); spowoduje wysłanie do Excela następującego polecenia (i uruchomienie makra TestMacro):[Run("Macro1!TestMacro")]

Poniższa instrukcja skryptu QuickScript spowoduje wykonanie makroinstrukcji w bazie danych Access:WWExecute("MSAccess","system","MyMacro");

Funkcja WWExecute zwraca wartość 1, jeśli aplikacja jest uruchomiona, podany temat 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.

Zwraca informację, czy aktualny czas jest czasem zimowym, czy letnim. Kategoria różneSkładnia WWIsDayLightSaving( );

Uwagi Zwraca wartość 1, jeżeli zmiana czasu jest włączona oraz 0, gdy zmiana czasu zimowego na letni jest wyłączona.

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 391

WWMoveWindow()Powoduje przesunięcie okna do miejsca określonego wprowadzonymi współrzędnymi.

Kategoria różneSkładnia WWMoveWindow( WindowName, Left,Top,Width,Height );

Parametr OpisWindowName Nazwa okna, które ma zostać przesunięte.Left Współrzędna lewego brzegu okna.Top Współrzędna górnego brzegu okna.Width Szerokość okna.Height Wysokość okna.

Opis pól, funkcji i zmiennych systemowych

392 Rozdział 3

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

Kategoria WWDDESkładnia [Status=]WWPoke("Application","Topic","Item",

"TextValue");

Parametr OpisApplication Nazwa aplikacji, do której wysyłany jest łańcuch

znaków. Łańcuch znaków lub zmienna tekstowa.Topic Nazwa tematu w obrębie aplikacji, do której jest

wysyłane polecenie. Łańcuch znaków lub zmienna tekstowa.

Item Nazwa elementu w obrębie tematu. Łańcuch znaków lub zmienna tekstowa.

TextValue Zmienna tekstowa lub łańcuch znaków. Jeśli zachodzi potrzeba przesłania liczby, można przekształcić ją na łańcuch znaków używając jednej z funkcji: Text(), StringFromIntg() lub StringFromReal(). Łańcuch znaków lub zmienna tekstowa.

Uwagi Zamieszczona poniżej instrukcja powoduje wysłanie wartości TextValue do określonej aplikacji, tematu i elementu.

Przykład(y) Poniższa instrukcja przekształca wartość numeryczną na łańcuch znaków i przesyła ją do komórki arkusza kalkulacyjnego Excel:String=Text(Value,"0");

WWPoke("excel","[Book1.xls]sheet1","r1c1",String);

Więcej informacji na temat współpracy arkusza kalkulacyjnego Excel 5.0 z programem InTouch (przy pomocy DDE) podano w podręczniku InTouch - Podręcznik Użytkownika.Wynik działania funkcji WWPoke() przy przesyłaniu danych w obrębie tej samej aplikacji InTouch jest nieokreślony. Nie jest gwarantowane pomyślne wykonanie polecenia WWPoke(), a najbardziej prawdopodobne jest wystąpienie błędu przekroczenia dopuszczalnego okresu oczekiwania.Funkcja WWPoke() zwraca wartość 1, jeśli aplikacja jest uruchomiona, podany temat istnieje i łańcuch znaków został pomyślnie przesłany. Funkcja zwraca wartość 0, jeśli aplikacja jest zajęta oraz -1 lub jeśli wystąpi błąd. Tak więc można monitorować status polecenia:Status=WWPoke("excel","[Book1.xls]sheet1","r1c1",String);

Status jest zmienną typu Integer, o wartościach 1, -1 lub 0.Patrz również Text(), StringFromIntg(), StringFromReal()

Opis pól, funkcji i zmiennych systemowych

Funkcje skryptowe 393

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

Kategoria WWDDESkładnia WWRequest(Application,Topic,Item,ValueMsg_Tag);

Parametr OpisApplication Nazwa aplikacji, z której ma być przesłany łańcuch

znaków. Łańcuch znaków lub zmienna tekstowa.Topic Nazwa tematu w obrębie aplikacji, z której ma być

przesłany łańcuch znaków. Łańcuch znaków lub zmienna tekstowa.

Item Pozycja w obrębie tematu, z której odczytywane będą dane. Łańcuch znaków lub zmienna tekstowa.

ValueMsg_Tag Zmienna tekstowa ujęta w cudzysłowy, zawierająca żądane dane czytane z określonej aplikacji, tematu i elementu. Łańcuch znaków lub zmienna tekstowa.

Uwagi Zamieszczona poniżej instrukcja przypisuje zmiennej ValueMsg_Tag wartość DDE odczytaną z określonego elementu, tematu i aplikacji. Wartość będzie zwrócona jako łańcuch znaków do zmiennej tekstowej. Jeżeli otrzymana wartość jest wartością numeryczną, należy ją przekonwertować za pomocą funkcji StringToIntg() lub StringToReal().

Przykład(y) Poniższa instrukcja wysyła żądanie przesłania zawartości komórki Excela i przekształca przesłany łańcuch znaków na wartość liczbową:WWRequest("excel","[Book1.xls]sheet1","r1c1",Result);

Value=StringToReal(Result);

Funkcja WWRequest() zwraca wartość 1, jeśli aplikacja jest uruchomiona, podany temat istnieje i łańcuch znaków został pomyślnie przesłany. Funkcja zwraca wartość 0, jeśli aplikacja jest zajęta oraz - 1 lub jeśli wystąpi błąd. Tak więc można monitorować status polecenia:Status=WWRequest("excel","[Book1.xls]sheet1","r1c1",Result);

Status jest zmienną typu Integer, o wartościach 1, -1 lub 0.Patrz również StringToIntg(), StringToReal()

Opis pól, funkcji i zmiennych systemowych

394 Rozdział 3

WWStringFromTime()Konwertuje czas lokalny na czas UTC (Coordinated Universal Time), a następnie wyświetla wartość wynikową. Ta funkcja przyjmuje w argumencie metkę czasową w postaci liczby sekund, który upłynęły od 1 stycznia 1970, a następnie zamienia ją na wartość tekstową.

Kategoria funkcje tekstoweSkładnia MessageResult = wwStringFromTime(SecsSince1-1-

70,StringType);

Parametr OpisSecsSince1-1-70 Typ Integer. Liczba sekund, które upłynęły od

północy 1 stycznia 1970.StringType Parametr określający system zapisu:

Typ Opis1 Zapis daty w formacie ustawionym

w Panelu sterowania Windows. (Podobny do formatu zmiennej systemowej $DateString.)

2 Zapis czasu w formacie ustawionym w Panelu sterowania Windows. (Podobny do formatu zmiennej systemowej $TImeString.)

3 Wyświetlenie tekstu 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) Ten przykład zakłada, że strefa czasowa lokalnego komputera to Pacific Standard Time (UTC-0800). Czas lokalny przekazany do funkcji to 04:00:00 PM, 1/2/1970. Ponieważ strefa PST ma czas przesunięty o 8 godzin względem UTC, funkcja zwróci następujące wyniki:wwStringFromTime(57600, 1) zwraca "1/2/70"wwStringFromTime(57600, 2) zwraca "12:00:00 AM"wwStringFromTime(57600, 3) zwraca "Fri Jan 02 00:00:00 1970"wwStringFromTime(57600, 4) zwraca "Fri"wwStringFromTime(57600, 5) zwraca "Friday"

Uwagi Poprawki wynikające ze zmiany czasu zimowego na letni lub odwrotnie zostaną automatycznie uwzględnione w wynikach funkcji. Dlatego nie trzeba dokonywać żadnych dodatkowych poprawek, aby zmiana czasu została uwzględniona.

Patrz również StringASCII(), StringChar(), StringFromIntg(), StringFromReal(), StringFromTime(), StringFromTimeLocal(), StringInString(), StringLeft(), StringLen(), StringLower(), StringMid(), StringReplace(), StringRight(), StringSpace(), StringTest(), StringToIntg(), StringToReal(), StringTrim(), StringUpper(), Text()

Opis pól, funkcji i zmiennych systemowych

Automatyzacja OLE w programie InTouch 395

R O Z D Z I A Ł 4

Automatyzacja OLE w programie InTouch

Technika Object Linking and Embedding (OLE) obsługuje szereg metod wymiany i przetwarzania informacji pomiędzy stacją klienta a serwerem. InTouch może pełnić rolę klienta dla wielu serwerów. Aplikacja InTouch może informować serwer o zmianie wartości zmiennej oraz umożliwić serwerowi wykonywanie wszystkich zaprogramowanych czynności. Funkcjonalność ta może zostać wykorzystana do rozszerzenia możliwości InTouch, ponad te już wbudowane

Rozdział ten zawiera zwięzły opis architektury automatyzacji techniki OLE. Opisano również procedury korzystania z automatyzacji OLE przez rozszerzenia InTouch. Ponieważ InTrack jest serwerem automatyzacji OLE, jest użyty w wielu przykładach.

Elementy OLE AutomationW bardzo uproszczonej formie, OLE umożliwia znormalizowaną komunikację pomiędzy klientem a serwerem.

Mechanizm OLE Automation zapewnia możliwości programowania zorientowanego obiektowo w środowisku klient/serwer. Serwer umożliwia wykonywanie określonych obliczeń poprzez wykorzystanie klas obiektów. Stacja kliencka wykorzystuje to, tworząc obiekty i wykorzystując ich elementy. OLE zapewnia komunikację pomiędzy klientem a serwerem.

Aby zrozumieć obiekty automatyzacji, należy zapoznać się z podstawowymi pojęciami programowania zorientowanego obiektowo.

• Obiekty są identyfikowalnymi i unikalnymi elementami, które mogą być tworzone w oparciu o klasę obiektu.

• Klasy definiują powiązany z obiektem zestaw właściwości (danych) i metod (funkcji). Wszystkie obiekty tej samej klasy mają ten sam zestaw właściwości i metod, jednakże każdy obiekt może mieć różne wartości właściwości.

Opis funkcji, pól i zmiennych systemowych

396 Rozdział 4

Obsługa OLE Automation w programie InTouchInTouch umożliwia łatwy dostęp do obiektów automatyzacji InTrack przy użyciu trzech podstawowych elementów:

• Ośmiu dodatkowych wbudowanych funkcji, które zostały dodane do InTouch.

• Operatora wskazującego początek wyrażenia OLE Automation

• Przeglądarki OLE zawierającej szablony i szczegółowe informacje dla wszystkich klas obiektów automatyzacji InTrack. Dostęp do przeglądarki OLE jest możliwy po naciśnięciu przycisku InTrack OLE, znajdującego się w prawym, dolnym rogu okna dialogowego edytora skryptów.

Format wyrażeńWszystkie odwołania do obiektów automatyzacji w programie InTouch rozpoczynają się od znaku procent (%), po którym podawana jest nazwa odwołania do obiektu. Nazwa musi rozpoczynać się od znaku alfabetu, może składać się ze znaków liter, wyrażeń numerycznych i podkreśleń. Nazwy są globalne, rozróżniana jest wielkość liter. Przykładami różnych nazw obiektów są:

• %ObjectName (lub %objectName lub %objectname)

• %Lot5

• %lot_5

• %aMachine

• %A_Machine

• %Sublot

Nie należy mylić nazw obiektów ze zmiennymi InTouch. Możliwe jest występowanie obiektu automatyzacji OLE i zmiennej InTouch z tą samą nazwą (jedyną różnicą jest znak procent).

Odwołania do obiektówNazwy poprzedzone znakiem procent odnoszą się do odwołań do obiektów, ponieważ są one wskaźnikami, wskazującymi na obiekty automatyzacji. Jeżeli zostanie zastosowana podana poniżej instrukcja skryptu, dwie różne nazwy mogą odnosić się do tego samego obiektu:%Object1 = %Object2;

Po wykonaniu tej instrukcji, oba odwołania wskazują ten sam obiekt automatyzacji.

OLE_CreateObject OLE_IsObjectValidOLE_GetLastObjectError OLE_ReleaseObjectOLE_GetLastObjectErrorMessage OLE_ResetObjectErrorOLE_IncrementOnObjectError OLE_ShowMessageOnObjectError

Opis funkcji, pól i zmiennych systemowych

Automatyzacja OLE w programie InTouch 397

Nazwy odwołań do obiektów są automatycznie definiowane przy pierwszym użyciu w czasie pracy. Są one globalne zainicjowane w jednym skrypcie i 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 znaku kropki do przypisania wartości właściwości obiektu na wartość 5.%Object.Property = 5;

Obiekty zagnieżdżone (znak kropki)Jeżeli obiekty są elementami innych obiektów, znaku kropki można użyć wielokrotnie. Ustawienia właściwości na wartość 6 dla obiektu zagnieżdżonego można dokonać przy pomocy instrukcji podanej poniżej:%Object.Property_For_Nested_Object.Property = 6;

Poniżej podano określone zasady wykorzystywania znaku kropki:

1. Nie są dozwolone spacje pomiędzy określeniem odwołania do obiektu a odwołaniem do żadnego innego elementu.

• Nie są dozwolone spacje pomiędzy znakiem procent (%) a początkiem nazwy odwołania do obiektu.

• Nie są dozwolone spacje pomiędzy nazwą odwołania do obiektu, znakiem kropki i nazwą elementu klasy.

• Nie są dozwolone spacje pomiędzy nazwą właściwości obiektu zagnieżdżonego, znakiem kropki i nazwą właściwości następnego obiektu zagnieżdżonego.

2. Ilość znaków całego określenia nie może być większa niż 98, licząc od znaku procent (łącznie ze znakiem) do ostatniego znaku wywołania elementu.

Przykładowo, długość określenia %Object.Property jest równa 16 znakom, zaś długość określenia %Object.Property_For_Nested_Object.Property jest równa 44 znakom.

Konwersja typów danych przesyłanych z programu InTouch do OLENie wszystkie typy danych InTouch są akceptowane przez rozszerzenia OLE. Poniżej przedstawiono akceptowane typy danych i konwersji danych. Należy pamiętać, że konwersja następuje w czasie pracy, nie jest przeprowadzana w programie WindowMaker. Dlatego też, konwersja danych może zaowocować trudnymi do przewidzenia wynikami, a powstałe błędy nie są zgłaszane.

Integer Wartość 32 bitowa ze znakiem. Możliwa jest konwersja na następujące typy danych:Real Wartość jest

zmiennoprzecinkowa.

Opis funkcji, pól i zmiennych systemowych

398 Rozdział 4

Message Standardowa konwersja na sekwencję cyfr dziesiętnych możliwe jest poprzedzenie znakiem minus.

Discrete Konwersja na TRUE (1) jeśli wartość nie jest zerem, w przeciwnym wypadku FALSE (0).

Real Dokładność 64 bitów. InTouch dokonuje obliczeń z dokładnością 64 bitów, ale wyniki są zapamiętywane w zmiennych 32 bitowych. Interfejs obiektu automatyzacji pracuje z wyższą rozdzielczością. Możliwa jest konwersja na następujące typy danych:Integer Wartość rzeczywista jest

ograniczana.Message Standardowa konwersja na

sekwencję cyfr dziesiętnych z przecinkami, możliwe jest poprzedzenie znakiem minus.

Discrete Konwersja na TRUE (1) jeśli wartość nie jest zerem, w przeciwnym wypadku FALSE (0).

Message Łańcuch znaków o długości ograniczonej do 131 znaków (ograniczenie InTouch). Dla tego typu danych konwersja jest bardziej złożona i jest bardzo prawdopodobnym źródłem błędów w czasie pracy.Integer Odpowiada funkcji

StringToIntg, która jest wbudowana w programie InTouch. Jeżeli łańcuch znaków rozpoczyna się od liczby (pomijając spacje, ale z uwzględnieniem znaku minus), liczba jest przekształcana. Przekształcenie łańcucha rozpoczynającego się od znaku innego niż liczba da w wyniku wartość zerową.

Opis funkcji, pól i zmiennych systemowych

Automatyzacja OLE w programie InTouch 399

Real Odpowiada funkcji StringToReal, która jest wbudowana w programie InTouch. Jeżeli łańcuch znaków rozpoczyna się od liczby (pomijając spacje, ale z uwzględnieniem znaku minus), liczba jest przekształcana. Przekształcenie łańcucha rozpoczynającego się od znaku innego niż liczba da w wyniku wartość zerową.

Discrete Zamienia na wartość całkowitą, a następnie stosuje reguły do zamiany wartości całkowitej na dyskretną.

Na odwołanie do obiektu

Ten typ konwersji wymagany jest jedynie w paru specyficznych przypadkach, należy unikać tego typu konwersji. Złe użycie tej konwersji może spowodować zamknięcie programu WindowViewer przez błąd krytyczny. Konwersja ta zgłosi błąd, jeżeli dana wejściowa będzie inna, niż łańcuch wygenerowany przez konwersję odwołania do obiektu.

Discrete Możliwa jest konwersja na następujące typy danych:Integer Jeden (One) jeśli TRUE,

w przeciwnym wypadku zero.Real Jeden (One) jeśli TRUE,

w przeciwnym wypadku zero.Message Zero (0) jeśli FALSE i 1 jeśli

TRUE.Na odwołanie do obiektu

Ogólnie, odwołania do obiektów nie powinny być wykorzystywane w kontekście, gdzie może wystąpić konwersja danych. Możliwa jest konwersja na następujące typy danych:Message Łańcuch tekstowy

w specjalnym formacie, zawierający reprezentację odwołania do obiektu w postaci heksadecymalnej.

Opis funkcji, pól i zmiennych systemowych

400 Rozdział 4

OgraniczeniaKorzystanie z rozszerzeń obiektów automatyzacji InTouch jest ograniczone przez następujące warunki:

• Rozszerzenia są dostępne tylko wewnątrz skryptów InTouch.

• Rozszerzenia stosują “późne łączenie”—większość błędów nie może zostać zidentyfikowana do momentu zakończenia wykonywania skryptu.

Tworzenie obiektu: OLE_CreateObjectObiekty automatyzacji tworzone są przez wbudowaną w programie InTouch funkcję o nazwie OLE_CreateObject. Składnia tej funkcji jest następująca:

OLE_CreateObject(%Object, “className”);

gdzie:

Funkcja ta nie zwraca wartości.

Przykład

Przykładowo, aby utworzyć obiekt InTrack klasy Sublot, instrukcja może mieć następującą postać:

OLE_CreateObject(%Sublot, “InTrack.Sublot”);

Błąd w pisowni w pozycji “className” jest częstym błędem, który nie będzie zidentyfikowany w programie WindowMaker. Błąd ten nie zostanie zidentyfikowany i zgłoszony do momentu wykonania funkcji w programie WindowViewer. Aby uniknąć tego błędu, należy skorzystać z szablonu dostępnego w przeglądarce InTrack OLE.

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

OLE_CreateObject Funkcja tworząca obiekt automatyzacji%Object Nazwa wykorzystywana przy odwoływaniu się do

obiektu automatyzacji.className Nazwa klasy dostarczona przez serwer OLE

Opis funkcji, pól i zmiennych systemowych

Automatyzacja OLE w programie InTouch 401

Zarządzanie obiektem: OLE_ReleaseObjectObiekt jest aktywny tak długo, jak długo przynajmniej jeden obiekt odwołuje się do niego. Niemniej jednak, dobrą praktyką jest zwolnić nie używany obiekt, aby oszczędzić zasoby systemowe. W celu zwolnienia obiektu:

1. Utworzyć nowy obiekt z tą samą nazwą odwołania do obiektu.

Kiedy tworzony jest nowy obiekt automatyzacji z tą samą nazwą jak istniejące odwołanie do obiektu, pierwotny obiekt automatyzacji jest zwalniany, a nowy obiekt jest związany z nazwą początkową. Przykładowo:OLE_CreateObject(%Object, “InTrack.Sublot”);

OLE_CreateObject(%Object, “InTrack.DateTime”);

Pierwsza instrukcja tworzy obiekt klasy Sublot, wywoływany przez %Object. Druga instrukcja zwalnia obiekt klasy Sublot, a następnie tworzy obiekt klasy DateTime, przypisując go do obiektu %Object.

2. Wykorzystać wbudowaną funkcję systemową OLE_ReleaseObject. Składnia tej funkcji jest następująca:OLE_ReleaseObject(%objectName);

gdzie:

Funkcja ta nie zwraca wartości i zawsze jest wykonywana poprawnie.

3. Przypisać odwołanie do drugiego obiektu.

Składnia przypisania obiektu automatyzacji do innego obiektu automatyzacji jest następująca:

%object1 = %object2;

gdzie:

W przykładzie tym, dowolny obiekt stowarzyszony z %object1 będzie zwolniony.

%objectName Nazwa odwołania do obiektu automatyzacji

%object1 Jest odwołaniem do obiektu wskazującym na ten sam obiekt, co %object2. Obiekt automatyzacji powiązany poprzednio z %object1 zostanie zwolniony.

%object2 Obiekt automatyzacji, który będzie wywoływany z nazwą %object1. Obiekt ten musi być tego samego typu.

Opis funkcji, pól i zmiennych systemowych

402 Rozdział 4

Sprawdzanie aktywności obiektu: OLE_IsObjectValid

Kiedy związek pomiędzy odwołaniem do obiektu a obiektem automatyzacji OLE zostanie przerwany przez funkcję OLE_ReleaseObject, odwołanie staje się „nieaktywne”. Użycie nieaktywnego odwołania w dowolnym wyrażeniu obiektu spowoduje błąd w czasie pracy.

Wbudowana funkcja systemowa InTouch o nazwie OLE_IsObjectValid pozwala na kontrolę poprawności odwołania do obiektu. Składnia tej funkcji jest następująca:OLE_IsObjectValid(%objectName);

gdzie:

Funkcja ta zwraca wartość dyskretną (typu Boolean) wskazującą, czy %objectName jest aktualnie powiązany z aktywnym obiektem automatyzacji.

Odczytywanie wartości właściwościWłaściwość jest atrybutem o określonej nazwie, definiującym charakterystyki obiektu lub sposób zachowania. Znak kropki oddziela odwołanie do obiektu od nazwy właściwości. Jeśli dozwolone jest użycie zmiennej w skrypcie InTouch, wartość właściwości obiektu automatyzacji może zostać zwrócona przez użycie instrukcji o następującej składni:%Object.Property

gdzie:

Jeśli właściwość obiektu jest obiektem sama w sobie, znak kropki może być użyty wielokrotnie, jak w poniższym przykładzie:%Object.Property1.Property2

gdzie:

%objectName Nazwa odwołania do obiektu automatyzacji, który ma zostać zwolniony.

%Object Odwołanie do obiektu automatyzacji.Property Atrybut obiektu.

%Object Odwołanie do obiektu automatyzacji.Property1 Właściwość obiektu %Object. Właściwość może być

obiektem obsadzonym lub odwołaniem do innego obiektu. InTouch i OLE automatycznie rozpoznają i obsługują oba przypadki.

Property2 Właściwość zagnieżdżonego obiektu, z którego będzie odczytana wartość.

Opis funkcji, pól i zmiennych systemowych

Automatyzacja OLE w programie InTouch 403

Wykorzystanie wielu znaków kropki przekształca tą instrukcję w wiele operacji „odczytywania właściwości”. W tym przykładzie, wykonana jest pojedyncza operacja odczytania dla %Object.Property1, która zgodnie ze standardami automatyzacji OLE, zwróci odwołanie do obiektu zagnieżdżonego. Zwrócone odwołanie jest wykorzystane do wykonania następnej pojedynczej operacji odczytania dla Property2. To samo można by wykonać za pomocą dwóch instrukcji skryptu InTouch:%tempObject = %Object.Property1;

%tempObject.Property2;

Kolejność czynności jest ważna z następujących powodów:

1. Błędy związane z odczytem wartości właściwości mogą wystąpić dla każdej zagnieżdżonej właściwości.

2. Wiele operatorów kropki może być użyte w wielu kontekstach, w celu uproszczenia kodowania takich operacji jak odczytywanie właściwości, ustawianie właściwości i wywoływanie metod.

Przykład 1

Celem jest zwiększenie wartości zmiennej, jeżeli jest to pierwszy dzień miesiąca, pomiędzy godziną 1 a 2 w nocy. Ten fragment kodu ilustruje kilka koncepcji:

OLE_CreateObject(%DateTime, "InTrack.DateTime");

%DateTime.SetLocalTime();

IF (%DateTime.Day == 1) AND (%DateTime.Hour > 1) AND (%DateTime.Hour < 2)

THENTag = Tag + 1;

ENDIF;

OLE_ReleaseObject(%DateTime);

Przykład 2

Poniższy przykład ilustruje wykorzystanie wielu znaków kropki. Celem tego przykładu jest wczytanie do zmiennych InTouch informacji o zasobach komputera, a następnie wyświetlenie tej informacji operatorowi. Przykład ten jest bardzo wymyślny, ale ilustruje odczyt właściwości w różnych kontekstach wyrażeń InTouch.

Aby uprościć przykład, założono, że obiekt %Machine został stworzony jako instancja InTrack.Machine, a odpowiednia informacja została wczytana z bazy danych InTrack (mechanizmy te są opisane w późniejszych sekcjach).NumerUnitsTag = %Machine.Capacity.Quantity;

TypicalWeightTag = %Machine.Capacity.Quantity * 40.6;

ContrivedLoadingTag = Log(%Machine.Capacity.Quantity) + 1;

UnitsNameTag = %Machine.Capacity.Units;

Opis funkcji, pól i zmiennych systemowych

404 Rozdział 4

Ustawianie właściwościWartość wejściowej lub wyjściowej właściwości obiektu może zostać ustawiona przy użyciu trzech metod:

• Używając instrukcji przypisania (co zostało opisane w tej sekcji),

• Przekazać referencję właściwości jako parametr wyjściowy metody,

• Wywołując metodę, aby jednorazowo przypisać jedną lub wiele właściwości obiektu (nowe wartości są przekazywane jako parametry). Te właściwości zależą od klasy. Więcej informacji na ten temat znajduje się w dalszej części tego rozdziału.

Uwaga Odwołania do właściwości obiektów automatyzacji nie mogą być przekazywane jako parametry wyjściowe do funkcji DLL, które są wywoływane z poziomu skryptów InTouch. Wartość właściwości obiektu nie może zostać zmieniona przez funkcję DLL.

Podstawowa składnia instrukcji przypisania właściwości obiektu jest następująca:%Object.Property = Value;

gdzie:

Tak jak w przypadku odczytu właściwości obiektu, jeśli właściwość obiektu sama w sobie jest obiektem, znak kropki może być użyty wielokrotnie.%Object.Property1.Property2 = Value;

gdzie:

Ta jedna instrukcja InTouch wykorzystująca wiele znaków kropki odpowiada wyrażeniu:%tempObject = %Object.Property1;

%tempObject.Property2 = Value;

Przykład

W pierwszej linijce tego przykładu tworzony jest obiekt automatyzacji klasy Amount o nazwie %PrimaryAmt. W drugiej i trzeciej linijce skryptu właściwości obiektu automatyzacji %PrimaryAmt zostają ustawione na wartości: Quantity na wartość 100, zaś Units – na wartość „each”.OLE_CreateObject(%PrimaryAmt, “InTrack.Amount”);

%PrimaryAmt.Quantity = 100;

%PrimaryAmt.Units = “each”;

%Object Odwołanie do obiektu automatyzacji.Property Atrybut obiektu.Value Wartość, która ma być przypisana do atrybutu obiektu.

%Object Odwołanie do obiektu automatyzacji.Property1 Właściwość %Object, która jest typem obiektu.Property2 Właściwość obiektu zagnieżdżonego, którego wartość

ma zostać ustawiona.

Opis funkcji, pól i zmiennych systemowych

Automatyzacja OLE w programie InTouch 405

Wywoływanie metodyWywołanie metody elementu obiektu automatyzacji jest typowym sposobem, w jaki stacja kliencka „prosi” serwer o wykonanie zadania. Poniżej podano składnię stosowaną do wywołania metody w obiekcie automatyzacji.

resultValue = %Object.Method(Parameter1, Parameter2, ...);

%Object.Method(Parameter1, Parameter2, ...);

gdzie:

OgraniczeniaPrzy korzystaniu z wywoływania metody należy uwzględnić następujące ograniczenia:

• Metody mogą być wywoływane jako procedury (bez zwracania wartości), Jeśli metoda zwraca wartość, jest ona odrzucana.

• Jeśli zwrócona wartość będzie wykorzystywana, musi zostać przypisana jako niezmodyfikowana. Wywołanie metody nie może być warunkiem w wyrażeniu,

• Wykonanie skryptu jest zablokowane do momentu zakończenia przetwarzania metody, chyba, że metoda wykonuje transakcje wymagające współpracy z użytkownikiem, przeprowadzanej przy pomocy okien dialogowych.

• Należy upewnić się, że przekazywana jest właściwa ilość parametrów. Opcjonalne parametry OLE nie są obsługiwane.

Typy parametrówTypy danych, które są przekazywane programu z InTouch do metody automatyzacji, są obwarowane pewnymi ograniczeniami.

resultValue Wartość danej zwrócona przez metodę,%Object Odwołanie do obiektu automatyzacji.Method Działanie realizowane przez obiekt automatyzacji,Parameters Informacje, które będą przekazane do metody lub

zwrócone z metody. Ilość parametrów definiowana jest przez metodę w czasie wywołania. Parametry przeznaczone są wyłącznie do zapisu, lub są typu Input/Output.

Typ danych Może być przedstawiony jakoInteger Stała, wyrażenie, zmienna tylko do odczytu, zmienna do

odczytu/zapisu, właściwość automatyzacji OLE do odczytu/zapisu.

Real Stała, wyrażenie, zmienna tylko do odczytu, zmienna do odczytu/zapisu, właściwość automatyzacji OLE do odczytu/zapisu.

Opis funkcji, pól i zmiennych systemowych

406 Rozdział 4

Należy pamiętać o tym, że niektóre metody są polimorficzne i mogą pobrać kilka różnych typów danych dla tego samego parametru. InTouch obsługuje to udogodnienie dla tylko dla parametrów wejściowych.

Parametry wyjścioweParametry metody, będące parametrami typu Input, a także parametry typu Input/Output nie są odróżniane od siebie. Jeżeli parametr może zostać uaktualniony, zapisywana jest do niego wartość.

Parametr może być uaktualniony jeśli:

• Parametrem jest nazwa zmiennej programu InTouch, która może być odczytywana/zapisywana,

• Parametrem jest nazwa odwołania do obiektu,

• Parametr określa właściwość obiektu.

W poniższym przykładzie instrukcji pierwsze trzy parametry zostaną uaktualnione, ponieważ każdy spełnia jeden z warunków podanych powyżej. Pozostałe parametry nie zostaną uaktualnione.%Obj1.Method(tag1, %obj2, %obj3.property1.property2, tag1

+ 3,%obj4.property + 0);

Wartości zwracaneAby przechwycić zwróconą wartość metody, lewa strona instrukcji przypisania musi być:

• nazwą zmiennej programu InTouch, która może być odczytywana/zapisywana,

• nazwą odwołania do obiektu,

• określeniem właściwości obiektu.

Przykład 1

W poniższym przykładzie założono, że utworzony jest obiekt automatyzacji klasy SerialNumbers o nazwie %SerialNumbers. Instrukcja podana poniżej spowoduje dodanie numeru seryjnego “1234” do numerów seryjnych w zbiorze obiektu %SerialNumbers.

returnCode = %SerialNumbers.Add(“1234”);

Message Stała, wyrażenie, zmienna tylko do odczytu, zmienna do odczytu/zapisu, właściwość automatyzacji OLE do odczytu/zapisu.

Discrete Stała, wyrażenie, zmienna tylko do odczytu, zmienna do odczytu/zapisu, właściwość automatyzacji OLE do odczytu/zapisu.

Obiekt Nazwa odwołania do obiektu, właściwość automatyzacji OLE do odczytu/zapisu

Typ danych Może być przedstawiony jako

Opis funkcji, pól i zmiennych systemowych

Automatyzacja OLE w programie InTouch 407

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 oraz %SecondaryAmt, a następnie ustawić ich właściwości. Kolejność kroków podano poniżej.

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. 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. Wywołać metodę Ship dla %Sublot_Object używając polecenia o następującej składni:returnCode = %Sublot_Object.Ship(%PrimaryAmt,

%SecondaryAmt,“Wonderware”);

%PrimaryAmt Obiekt ilościowy, identyfikujący wielkość pierwszoplanową, która ma zostać wysłana.

%SecondaryAmt Obiekt ilościowy, identyfikujący wielkość drugoplanową do wysłania.

customerName Nazwa klienta, dla którego przeznaczona jest przesyłka.

Opis funkcji, pól i zmiennych systemowych

408 Rozdział 4

Obsługa błędów w programie InTouch.Obsługa błędów ustala, czy błąd został spowodowany niepoprawnym użyciem OLE Automation, czy też został zwrócony przez serwer OLE. Program InTouch wyświetla błędy OLE w oknie dialogowym i rejestruje je w programie WWLogger.

Wystąpienie błędu OLE nie przerywa wykonywania skryptu InTouch. Działanie, które będzie podjęte zależy od zadania, które jest wykonywane w momencie wystąpienia błędu:

• Jeżeli błąd wystąpi w czasie odczytywania właściwości, zwracane jest zero lub pusty łańcuch.

• Jeżeli błąd wystąpi w czasie operacji przypisywania właściwości, właściwość pozostanie nie zmieniona.

• Jeżeli błąd wystąpi w momencie wywoływania metody, metoda nie zostanie wywołana, nie zostaną zmienione żadne wartości parametrów, wartość zwrócona wynosi zero, lub zwracany jest pusty łańcuch.

Do obsługi błędów przeznaczonych jest pięć funkcji:

• OLE_GetLastObjectError

• OLE_GetLastObjectErrorMessage

• OLE_ResetObjectError

• OLE_ShowMessageOnObjectError

• OLE_IncrementOnObjectError

Szczegóły dotyczące tych funkcji podano poniżej.

OLE_GetLastObjectErrorFunkcja ta służy do odczytania numeru błędu, który został zaraportowany przez zmienną „last error”.value = OLE_GetLastObjectError();

gdzie:

value Wartość całkowita, w której zapisywany jest numer błędu.Numery błędów są wewnętrznymi, 32 bitowymi liczbami bez znaku. Program InTouch nie wykorzystuje tego samego zakresu liczb całkowitych, dlatego więc kody błędów używające bitów na wyższych pozycjach nie będą poprawnie zwracane.

Opis funkcji, pól i zmiennych systemowych

Automatyzacja OLE w programie InTouch 409

OLE_GetLastObjectErrorMessageFunkcja ta służy do odczytania wiadomości o ostatnim zgłoszonym błędzie (opis błędu).value = OLE_GetLastObjectErrorMessage();

gdzie:

OLE_ResetObjectErrorWartość zmiennej “last error” jest zmieniana tylko w przypadku wystąpienia błędu. Nie jest resetowana po udanym zakończeniu działania Automatyzacji OLE. W niektórych wypadkach tworzenia aplikacji znacznie prostszym jest ustawienie zmiennej „last error”na znany stan, wykonanie kilku działań automatyzacji OLE, a następnie sprawdzenie, czy wartośc zmiennej „last error” uległa zmianie. Funkcja ta ustawi wartość wewnętrznej zmiennej „last error” na zero. Składnia tej funkcji jest następująca:OLE_ResetObjectError();

OLE_ShowMessageOnObjectErrorFunkcja ta kontroluje wyświetlanie informacji o błędzie i wprowadzanie przez operatora wymaganych danych w przypadku wystąpienia błędu lub wyjątku interfejsu OLE. W czasie wyświetlania okna dialogowego, wykonanie skryptu, który spowodował wystąpienie błędu jest zablokowane do momentu zatwierdzenia okna 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 do początku linii 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 okno dialogowe jest wyświetlane, jeśli wystąpi błąd lub wyjątek OLE, przyjmuje następujące wartości:-1 = wyświetlić komunikat (domyślne) 0 = nie wyświetlić komunikatu

Opis funkcji, pól i zmiennych systemowych

410 Rozdział 4

Podany poniżej skrypt wyłącza wyświetlanie okna dialogowego błędu OLE wywołania metody Create dla obiektu %Lot. Po wywołaniu metody, wyświetlanie okna dialogowego błędu OLE jest ponownie włączane w przypadku każdego następnego błędu.

OLE_ShowMessageOnObjectError(0);

%Lot.Create("abc");

OLE_ShowMessageOnObjectError(1);

OLE_IncrementOnObjectErrorFunkcja ta zwiększa wartość zmiennej całkowitej przy wystąpieniu błędu interfejsu OLE lub wyjątku OLE.

Uwaga Jeśli funkcja OLE_ShowMessageOnObjectError wykonywana jest ze zmienną dyskretną, wartość jest zwiększana po wyświetleniu i zatwierdzeniu okna dialogowego błędu OLE.

Błąd OLE oznacza błąd komunikacji w systemie operacyjnym Microsoft Windows. Nie odzwierciedla to błędu przetwarzania zidentyfikowanego przez serwer OLE.

Wyjątek OLE może być spowodowany przez infrastrukturę OLE lub przez serwer OLE.

Wartość zmiennej określonej przez tą funkcję będzie zwiększana przy każdym wystąpieniu błędu, do momentu następnego wywołania określającego inną zmienną. Zmienna nie jest zapamiętywana w czasie wykonywania programu WindowViewer.

Składnia tej funkcji jest następująca:OLE_IncrementOnObjectError(integerTag);

gdzie:

Wykonanie poniższego skryptu spowoduje zwiększenie wartości zmiennej reprezentowanej przez errorCount o 1, za każdym razem, gdy wystąpi błąd interfejsu lub wyjątek OLE.

OLE_IncrementOnObjectError(errorCount);

integerTag Definiuje nazwę zmiennej całkowitej, której wartość będzie zwiększana w przypadku wystąpienia błędu lub wyjątku.

Opis funkcji, pól i zmiennych systemowych

Automatyzacja OLE w programie InTouch 411

Najczęstsze błędy automatyzacji obiektów.Poniżej podano wykaz błędów występujących najczęściej przy korzystaniu z automatyzacji OLE oraz sposoby zapobiegania tym błędom.

• OLE object reference name has not been defined.

Nazwa odwołania do obiektu została użyta w odniesieniu do właściwości (%object.property) lub wywołania metody (%object.method(parametr) ) przed przypisaniem ich do obiektu. Należy sprawdzić, czy nazwa odwołania do obiektu nie została podana z błędem w pisowni. Należy zweryfikować nazwę przypisaną do obiektu przez użycie funkcji systemowej InTouch OLE_CreateObject lub przez przypisanie wywołania obiektu do innego obiektu.

• Unknown property or method name.

Należy sprawdzić, czy nazwa właściwości lub metody została wprowadzona poprawnie (bez błędów w pisowni).

• Attempt to update read-only property.

Błąd ten wystąpi zawsze, gdy właściwość przeznaczona tylko do odczytu zostanie umieszczona po lewej stronie instrukcji przypisania. Jest to trudne do zlokalizowania, gdy właściwość zostanie zaktualizowana jako parametr zwracany z wywołania metody.

• Type mismatch.

Błąd ten oznacza, że dana przekazana jako parametr uaktualnienia jest nieprawidłowa. Oznacza to, że mechanizm automatycznej konwersji danych nie posiada wystarczającej ilości informacji, aby wprowadzić działania korygujące. Należy ręcznie przypisać daną do zmiennej InTouch poprawnego typu, a następnie użyć tej zmiennej.

• Invalid class string.

Błąd ten wskazuje, że nazwa klasy (drugi parametr) w wywołaniu funkcji OLE_CreateObject została wprowadzona nieprawidłowo (z błędem w pisowni).

• Parameter not optional.

Należy sprawdzić, czy przekazywana jest właściwa ilość parametrów.

• Unexpected results but no error reported.

Konwersja typu danych wykonywana jest w czasie pracy. W niektórych przypadkach przypisanie łańcucha do liczby całkowitej nie spowoduje wygenerowania błędu, jednakże, jeżeli łańcuch nie rozpoczyna się od liczby, rezultatem może być zero.

• Object reference path element is not an OLE object.

Błąd ten występuje przy korzystaniu ze znaku kropki, jeżeli jedna z właściwości w ścieżce dostępu nie jest obiektem obsadzonym lub wywołaniem obiektu.

Opis funkcji, pól i zmiennych systemowych

412 Rozdział 4

Opis funkcji, pól i zmiennych systemowych

Usuwanie problemów przy korzystaniu z funkcji skryptowych 413

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.

Komunikaty o błędach dla obiektów sterujących okien i alarmów rozproszonych

Funkcje związane z obiektami sterującymi okien i 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.

Opis funkcji, pól i zmiennych systemowych

414 Dodatek A

Podana poniżej tabela przedstawia wartości numeryczne zmiennej ErrorNumber.

* -x jest dowolnym numerem.

Usuwanie problemów przy korzystaniu z funkcji 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.

Numer błędu 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-6 Nieznana nazwa właściwości-x* Błąd nieznany

Wartość Komunikat Opis0 Success Pomyślne wykonanie wywołanej

funkcji receptur.-1 No Such Recipe

TemplateBrak pliku z określonym szablonem receptury

-2 View Not Active Funkcja receptur została wywołana przez inny program, ale nie może zostać wykonana, ponieważ program WindowViewer nie jest uruchomiony

-3 No 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

Opis funkcji, pól i zmiennych systemowych

Usuwanie problemów przy korzystaniu z funkcji skryptowych 415

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

-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

Wartość Komunikat Opis

Opis funkcji, pól i zmiennych systemowych

416 Dodatek A

Wyświetlanie komunikatów dla kodów błędów recepturKażda funkcja receptur zwraca numer kodu błędu. Podanie tego kodu w funkcji RecipeGetMessage() pozwala na przypisanie komunikatu o błędzie do zmiennej tekstowej.

W tym celu można skorzystać z następującego skryptu QuickScript związanego ze zmianą wartości:

RecipeGetMessage(ErrorCode, ErrorMessage, 131);

Skrypt ten będzie wykonywany po każdorazowej zmianie wartości zmiennej analogowej ErrorCode. Spowoduje on odczytanie przez funkcję RecipeGetMessage() aktualnej wartości zmiennej ErrorCode oraz przypisanie komunikatu towarzyszącego tej wartości do zmiennej ErrorMessage.

Komunikaty błędów funkcji skryptowych narzędzia Alarm Printer

Funkcje skryptowe narzędzia Alarm Printer zwracają kody błędów będące liczbami dodatnimi. Zwracana wartość 0 oznacza, że nie wystąpił żaden błąd.

-17 User did not select Użytkownik wybrał polecenie Cancel (Anuluj) w oknie dialogowym Select a Recipe (Wybierz 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.

Kod błędu Komunikat0 Success (brak błędu)1 Instance not found or not running (Instancja nie

została odnaleziona lub nie jest uruchomiona).2 Interface not initialized (Interfejs nie został

zainicjalizowany).3 Failure to access virtual memory (Błąd dostępu do

pamięci wirtualnej).4 Invalid error code (Nieprawidłowy kod błędu).5 Too many instances already running (Zbyt dużo

istniejących instancji).6 Result string would be too long (Tekstowa wartość

wynikowa byłaby zbyt długa).7 Invalid instance index passed to function (Przekazany

do funkcji indeks instancji jest nieprawidłowy).

Wartość Komunikat Opis

Opis funkcji, pól i zmiennych systemowych

Usuwanie problemów przy korzystaniu z funkcji skryptowych 417

Nazwy elementów SPC DDEZ elementów DDE SPC można skorzystać w celu uzyskania informacji o zestawach danych oraz w celu sterowania wykresami. Nazwa aplikacji to SPC. Nazwa tematu jest nazwą zestawu danych.

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

8 Failed to post message to alarm printer program (Błąd podczas wysyłania komunikatu do narzędzia alarm printer).

9 Failed wait for response from alarm printer application (Błąd podczas oczekiwania na odpowiedź narzędzia alarm printer).

20 To priority must be greater or equal to From priority (Wartość "Do priorytetu" musi być większa lub równa wartości "Od priorytetu").

21 Invalid priority value (Nieprawidłowa wartość priorytetu).

22 Invalid alarm state (Nieprawidłowy stan alarmu).23 Fail to execute command because query is running

(Wykonanie polecenia nie powiodło się ponieważ zapytanie trwa).

24 Query String is not valid (Tekst zapytania jest nieprawidłowy).

25 Invalid query processing state (Nieprawidłowy stan przetwarzania zapytania).

26 Invalid printer state selector (Nieprawidłowy stan drukarki).

27 Command received by alarm printer window is not recognized (Polecenie otrzymane przez narzędzie alarm printer nie zostało rozpoznane).

28 Query could not be started (Zapytanie nie mogło zostać wykonane).

Kod błędu Komunikat

Opis funkcji, pól i zmiennych systemowych

418 Dodatek A

Elementy DDE SPC do sterowania i wyświetlaniaElementy DDE sterowania i wyświetlania przeznaczone są do sterowania i wyświetlania informacji o zestawie danych. Z elementów DDE sterowania korzystają wszystkie stanowiska. Są to wartości zestawów danych zebranych produktów dla zdalnego zestawu danych. Każde stanowisko korzysta ze swoich elementów wyświetlania DDE. Są to wartości próbek dla produktu wyświetlanego na lokalnym stanowisku.

Zmodyfikowane próbki mogą być wykorzystane w odniesieniu do zebranych wyświetlanych produktów lokalnego zestawu danych. Zmiany wprowadzone poprzez kliknięcie na wyświetlanym wykresie są uwzględniane w wyświetlanym produkcie. Elementy SPC DDE wprowadzają zmiany w zebranych produktach. Wyświetlany produkt oraz zebrane produkty muszą posiadać swoje własne wartości próbne, którymi są ostatnio zebrane próbki.

Dla zebranych i wyświetlanych produktów oceniane są i pamiętane alarmy. Są one sygnalizowane dla zebranych produktów wyłącznie w czasie pracy aplikacji.

Note Poza zebranymi i wyświetlanymi produktami, wiele elementów SPC DDE może być stosowanych wyłącznie w odniesieniu do zebranych produktów. Elementy te oznaczone są przez umieszczenie znaku (*) przed nazwą elementu SPC DDE na liście.

Nazwa elementu Typ DDE Dostęp OpisAutoCollection Discrete O/Z Aktywowanie/ deaktywowanie

automatycznego zbierania danych.*CalculateControlLimits Discrete O/Z Ustawienie wartości 1 powoduje

rozpoczęcie obliczania wartości granicznych sterowania.

DatasetName Message(32)

O/Z Ustawia parametr DatasetName, wykorzystywany przez zestaw pośredni.

HistogramLCL Real O Wyświetla dolne wartości graniczne sterowania histogramu w oparciu o populację.

HistogramUCL Real O Wyświetla górne wartości graniczne sterowania histogramu w oparciu o populację.

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

Opis funkcji, pól i zmiennych systemowych

Usuwanie problemów przy korzystaniu z funkcji skryptowych 419

NewProductCtrlTitle Message(32)

O/Z Wykorzystywany do przypisywania tytułu karty kontrolnej 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.SamplesPerControlChart Integer O/Z Ustawia liczbę próbek wyświetlanych na

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

Skośność 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.

Nazwa elementu Typ DDE Dostęp Opis

Opis funkcji, pól i zmiennych systemowych

420 Dodatek A

Elementy DDE SPC dla bieżącej próbkiWszystkie elementy DDE bieżącej próbki odnoszą się do ostatnio zebranej próbki zadanego zestawu danych. Mogą one być zastosowane do zmodyfikowania źródłowych danych oraz wartości granicznych dla nazwy zestawu danych. W celu zmiany informacji o bieżącej próbce należy ją zapisać do odpowiednich elementów DDE, a następnie ustawić wartość elementów 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ę produktu.

SPCLowDBSpace Discrete O Element wykorzystywany do monitorowania bazy danych Microsoft SQL Server. Element ten 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. Element ten przyjmuje naprzemiennie wartości 1 i 0, w zależności od statusu bazy danych SQL.

SPCResetRunRules Discrete O/Z Wykorzystywany do wyłączenia stosowania reguł pracy dla nadchodzących próbek. Jest to ważne przy zbieraniu danych dla nowej serii, ponieważ użytkownik może nie chcieć uruchamiać korzystania z reguł dla próbek z nowej serii. Dla nowej serii reguły mogą zostać ponownie zdefiniowane.

Nazwa elementu Typ DDE Dostęp Opis

Opis funkcji, pól i zmiennych systemowych

Usuwanie problemów przy korzystaniu z funkcji skryptowych 421

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.

Note Poza zebranymi i wyświetlanymi produktami, wszystkie "Bieżące" Elementy DDE SPC mają zastosowanie wyłącznie w odniesieniu do zebranych produktów.

Nazwa elementu Typ DDE Dostęp OpisCurrentCauseCode Integer O/Z Ustawia wartość SpecialCauseCode

dla bieżącej próbki.CurrentCauseString Message

(128)O Wyświetla opis numeru

SpecialCauseCode dla bieżącej próbki.CurrentComment Message

(50)O/Z Element wykorzystywany do

zapisu/odczytu różnych komentarzy powiązanych z bieżącą próbką.

CurrentCp Real O Element ten wyświetla możliwości dla bieżącej próbki.

CurrentCpk Real O Element ten wyświetla wypośrodkowane możliwości dla bieżącej próbki.

CurrentDate Message(8)

O/Z Ustawia datę dla bieżącej próbki w formacie DD/MM/YY. Jeżeli data zostanie niepoprawnie wprowadzona, przyjęta zostanie data bieżąca.

CurrentFlag Discrete O/Z Ustawia flagę dla bieżącej próbki.CurrentIgnoreValue Discrete O/Z Ustawia ignorowanie bieżącej próbki

w momencie, gdy wykres 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.

Opis funkcji, pól i zmiennych systemowych

422 Dodatek A

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.

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

Nazwa elementu Typ DDE Dostęp Opis

Opis funkcji, pól i zmiennych systemowych

Usuwanie problemów przy korzystaniu z funkcji skryptowych 423

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

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

Nazwa elementu Typ DDE Dostęp Opis

Opis funkcji, pól i zmiennych systemowych

424 Dodatek A

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.

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

Opis funkcji, pól i zmiennych systemowych

Usuwanie problemów przy korzystaniu z funkcji skryptowych 425

Elementy DDE SPC do ręcznego wprowadzaniaElementy DDE ręcznego wprowadzania stosowane są do tworzenia okien użytkownika do ręcznego wprowadzania danych. W celu zastosowania elementów ręcznego wprowadzania danych, należy ustawić wartości odpowiednich elementów, a następnie ustawić element DDE MI_Save na wartość 1. Spowoduje to wprowadzenie informacji zawartych w innych polach MI jako nowej próbki. Po wprowadzeniu próbki, program SPC ustawi wartość elementu DDE MI_Save na 0 (zero).

W przypadku rozproszonego SPC, elementy ręcznego wprowadzania danych mają zasięg lokalny dla każdego ze stanowisk. Wartości są lokalnie buforowane na każdym ze stanowisk, aż do momentu kiedy element DDE MI_Save zostanie ustawiony 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.

Note Poza zebranymi i wyświetlanymi produktami, wszystkie elementy DDE SPC "Ręczne" mają zastosowanie wyłącznie w odniesieniu do zebranych produktów.

Nazwa elementu Typ DDE Dostęp OpisMI_CauseCode Integer O/Z Ustawia wartość

SpecialCauseCode dla ręcznie wprowadzanej próbki.

MI_CauseString Message(127)

O Wyświetla opis numeru wejściowego SpecialCauseCode dla próbki.

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 jest automatycznie skalowany.

MI_Mx Real O/Z Ustawia wartość dla oznaczonego ręcznie wprowadzonego pomiaru (x=1 do 25).

Opis funkcji, pól i zmiennych systemowych

426 Dodatek A

Elementy DDE SPC do zaznaczaniaElementy DDE do zaznaczania mogą być wykorzystane do uzyskiwania szczegółowych informacji o dowolnej z próbek. Elementy DDE do zaznaczania umożliwiają wprowadzenie numeru próbki, która ma być wyświetlana. Po wprowadzeniu, program SPC zaktualizuje wszystkie elementy do zaznaczania, wprowadzając szczegółowe informacje o zaznaczonym numerze próbki. Nie można zmienić starych danych, ale można dodać elementy Special Cause Code, Flags i/lub Comments poprzez wprowadzenie wartości do elementów, a 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ą lokalny zasięg 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 próbek 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, a 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.

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 DDE Current, a element CurrentSampleNumber jest inkrementowany o 1.

MI_Time Message(8)

O/Z Ustawia czas dla bieżącej próbki. Czas musi być wprowadzony w formacie HH:MM:SS. Jeżeli czas zostanie niepoprawnie wprowadzony, przyjęty zostanie czas bieżący.

Nazwa elementu Typ DDE Dostęp Opis

Opis funkcji, pól i zmiennych systemowych

Usuwanie problemów przy korzystaniu z funkcji skryptowych 427

Note Poza zebranymi i wyświetlanymi produktami, wszystkie elementy DDE SPC służące zaznaczaniu mają zastosowanie wyłącznie w odniesieniu do zebranych produktów.

Nazwa elementu Typ DDE Dostęp OpisSelection Integer O/Z Ustawienie tego elementu na

numer próbki powoduje wprowadzenie do wszystkich zaznaczonych elementów odpowiednich danych.

SelectionCauseCode Integer O/Z Ustawia wartość SpecialCauseCode dla zaznaczonej próbki.

SelectionCauseString Message(128)

O Wyświetla opis wprowadzonego Special Cause Code.

SelectionComment Message(50)

O/Z Element ten wykorzystywany do zapisu/ odczytu różnych komentarzy, wprowadzonych dla zaznaczonej próbki.

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

Opis funkcji, pól i zmiennych systemowych

428 Dodatek A

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.

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

Nazwa elementu Typ DDE Dostęp Opis

Opis funkcji, pól i zmiennych systemowych

Usuwanie problemów przy korzystaniu z funkcji skryptowych 429

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

Rozwiązywanie problemów związanymi z funkcjami 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ą, której wartość określa ostatnio uruchamiana funkcja SQL.

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

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

Nazwa elementu Typ DDE Dostęp Opis

Opis funkcji, pól i zmiennych systemowych

430 Dodatek A

Komunikaty o błędachW niniejszym dokumencie nie omówiono znaczenia poszczególnych wartości ResultCode, więcej informacji na temat tych wartości podano w dokumentacji do bazy danych. Należy również pamiętać o sprawdzeniu informacji wyświetlanych przez program diagnostyczny Wonderware Logger.

Funkcja SQLErrorMsg() przypisuje wartość zmiennej tekstowej ErrorMsg. Poniżej zamieszczono zestawienie wybranych kodów błędów oraz odpowiadające im komunikaty, wraz z ich opisem.

Kod błędu Komunikat Opis0 No errors occurred Instrukcja została zakończona pomyślnie bez

wystąpienia błędu-5 No more rows to fetch Odczytany został ostatni rekord bazy danych-1001 No 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-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 i został on obcięty.

-1008 No Where clause Brak klauzuli Where dla Delete-1009 Connection failed Błąd w komunikacji, szczegółowy opis

problemu podany jest w programie diagnostycznym Wonderware Logger

-1010 The database specified on the DB= portion of the connect string does not exist

The specified database does not exist

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

Opis funkcji, pól i zmiennych systemowych

Usuwanie problemów przy korzystaniu z funkcji skryptowych 431

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

Oracle

Komunikat RozwiązanieORA-03112 - Host String Syntax error

Jeżeli uruchamiany jest program NETINIT.EXE, należy umieścić go w grupie Autostart systemu Windows. Jeżeli uruchamiany jest program NETINIT.EXE i nawiązywane jest więcej niż jedno połączenie, lub też uruchamianych jest więcej niż jedna sesja, należy przydzielić więcej pamięci. W tym celu należy ustawić parametr WIN_REMOTE_SESSIONS w pliku CONFIG.ORA na wartość równą liczbie żądanych połączeń. Zamieszczona poniżej instrukcja przydziela pamięć dla 4 połączeń:WIN_REMOTE_SESSIONS=4

ORA-3121 - No interface driver connected

Przed uruchomieniem Windows oraz przed korzystaniem z InTouch SQL Access należy uruchomić program SQL *NET TSR, odpowiedni dla systemu sieciowego.

ORA-6435 - NetBIOS: Unable to add local name to name table

Musi być uruchomiony system sieciowy (Novell, LAN Manager, itp.)

ORA-09301 - Local kernel only supported in standard mode

W łańcuchu znaków do ustanowienia połączenia określić nazwę serwera ("SRVR=").

ORA-06430 - Unable to make connection

Zweryfikować poprawność i kolejność atrybutów w łańcuchu znaków do ustanowienia połączenia.

Opis funkcji, pól i zmiennych systemowych

432 Dodatek A

Sybase or Microsoft SQL Server

dBASE

Komunikat RozwiązanieYou cannot have more than one statement active at a time

Próba wykonania polecenia SQL po wykonaniu SQLSelect(). Wywołać polecenie SQLEnd() w celu zwolnienia zasobów systemu po wywołaniu SQLSelect(), lub też przeznaczyć dla drugiej instrukcji oddzielny parametr ConnectionID.

There is not enough memory available to process the command

Spróbować ponownie uruchomić stację kliencką

Invalid object name table name Nazwa tablicy nie istnieje w używanej bazie danych. Spróbować skorzystać z instrukcji DB=nazwa bazy danych.

Komunikat RozwiązanieFile or DLL not found W przypadku systemu Windows, plik

QEDBF.DLL musi znajdować się w bieżącej kartotece, lub w kartotece systemu Windows podanej w ścieżce DOS.

Invalid connection Należy sprawdzić, czy w kartotece znajdują się odpowiednie pliki dll. W przypadku DBF, potrzebny jest plik QLDBF.DLL.

The connection or statement handle you provided is not valid

Więcej informacji na ten temat podano w programie Wonderware Logger. Instrukcja SQL może zawierać błąd w składni.

Opis funkcji, pól i zmiennych systemowych

433

Indeks

$AccessLevel 24$ApplicationChanged 25$ApplicationVersion 25$ChangePassword 26$ConfigureUsers 27$Date 27$DateString 28$DateTime 28$Day 28, 29$HistoricalLogging 29$Hour 30$InactivityTimeout 30$InactivityWarning 31$LogicRunning 31, 32$Minute 32$Month 32$Msec 33$NewAlarm 33$ObjHor 33$ObjVer 34$Operator 34$OperatorEntered 36$PasswordEntered 37$Second 37$StartDdeConversations 37$System 38$Time 38$TimeString 38, 39$Year 39

AAlarmów Funkcje

AalmSelectGroup 193Ack 182almAckAll 185almAckDisplays 185almAckGroup 186almAckPriority 187almAckRecent 187almAckSelect 188almAckSelectedGroup 188almAckSelectedPriority 189almAckSelectedTag 189almAckTag 190almDefQuery 190almMoveWindow 191almQuery 192almSelectAll 193almSelectionCount 194almSelectItem 194almSelectPriority 195almSelectTag 196almSetQueryByName 196almShowStats 197almSuppressAll 197almSuppressDisplay 198almSuppressGroup 198almSuppressPriority 199

almSuppressRetain 200almSuppressSelected 200almSuppressSelectedGroup 201almSuppressSelectedPriority 201almSuppressSelectedTag 202almSuppressTag 203almUnSelectAll 204almUnSuppressAll 204Error Numbers 413Komunikaty o błędach 413

Alarmowe zmienne systemowe$NewAlarm 33$System 38

Aplikacyjne zmienne systemowe$ApplicationChanged 25$ApplicationVersion 25

APU, informacje o funkcjach 205APUFindAlarmGroupInstance 207APUGetAlarmGroupText() 210

EError Numbers

Alarmów Funkcje 413Funkcje receptur 414Obiekty sterujące okien - Funkcje 413

FFlagi jakości 147Funkcja OLE_IsObjectValid 402Funkcja OLE_ReleaseObject 401Funkcje

Abs 182Ack 182ActivateApp 183AddPermission 184almAckAll 185almAckDisplay 185almAckGroup 186almAckPriority 187almAckRecent 187almAckSelect 188almAckSelectedGroup 188almAckSelectedPriority 189almAckSelectedTag 189almAckTag 190almDefQuery 190almMoveWindow 191almQuery 192almSelectAll 193almSelectGroup 193almSelectionCount 194almSelectItem 194almSelectPriority 195almSelectTag 196almSetQueryByName 196almShowStats 197almSuppressAll 197almSuppressDisplay 198almSuppressGroup 198

Opis funkcji, pól i zmiennych systemowych

434

almSuppressPriority 199almSuppressRetain 200almSuppressSelected 200almSuppressSelectedGroup 201almSuppressSelectedPriority 201almSuppressSelectedTag 202almSuppressTag 203almUnSelectAll 204almUnSuppressAll 204AnnotateLayout 205ArcSin 228ArcTan 228ChangePassword 230Cos 231DialogStringEntry 232DialogValueEntry 233DText 236Exp 237FileCopy 238FileDelete 239FileMove 240FileReadFields 242FileReadMessage 243FileWriteFields 244FileWriteMessage 245GetAccountStatus 246GetNodeName 247GetPropertyD 247GetPropertyI 248GetPropertyM 248Hide 249Hideself 249HTGetLastError 250HTGetPenName 251HTGetTimeAtScooter 252HTGetTimeStringAtScooter 253HTGetValue 254HTGetValueAtScooter 255HTGetValueAtZone 256HTScrollLeft 257HTScrollRight 258HTSelectTag 258HTSetPenName 259HTUpdateToCurrentTime 259HTZoomOut 261InfoAppActive 262InfoAppTitle 262InfoDisk 263InfoFile 264InfoInTouchAppDir 265InfoResources 265Int 266IOGetApplication 269IOGetNode 270IOGetTopic 270IOReinitialize 271IOSetAccessName 272IOSetItem 274IOStartUninitConversations 276IsAnyAsynchFunctionBusy 277Log 278

LogN 279Logoff 280OLE_CreateObject 400OLE_IsObjectValid 402OLE_ReleaseObject 401Pi 281PlaySound 282PrintHT 283PrintScreen 283PrintWindow 285RecipeGetMessage 295RecipeSave 297RecipeSelectNextRecipe 298RecipeSelectPreviousRecipe 299RecipeSelectRecipe 300RecipeSelectUnit 301ReloadWindowViewer 302RestartWindowViewer 302Round 303SendKeys 303SetPropertyD 305SetPropertyI 306SetPropertyM 306Sgn 307Show 308ShowAt 309ShowHome 309ShowTopLeftAt 310Sin 310SLQRollback 336SPCConnect 311SPCDatasetDlg 312SPCDisconnect 312SPCDisplayData 313SPCLocateScooter 313SPCMoveScooter 314SPCSaveSample 314SPCSelectDataset 315SPCSelectProduct 315SPCSetControlLimits 316SPCSetMeasurement 316SPCSetProductCollected 317SPCSetProductDislpayed 317SPCSetRangeLimits 318SPCSetSpecLimits 318SQLAppendStatement 319SQLClearParam 319SQLClearStatement 320SQLClearTable 320SQLCommit 321SQLConnect 322SQLCreateTable 324SQLDelete 325SQLDisconnect 326SQLDropTable 326SQLEnd 326SQLErrorMsg 327SQLExecute 328SQLFirst 328SQLGetRecord 329SQLInsert 330

Opis funkcji, pól i zmiennych systemowych

435

SQLInsertEnd 331SQLInsertExecute 331SQLInsertPrepare 332SQLLast 332SQLLoadStatement 333SQLManageDSN 333SQLNext 334SQLNumRows 334SQLPrepareStatement 335SQLPrev 335SQLSelect 336SQLSetParamChar 340SQLSetParamDate 340SQLSetParamDateTime 341SQLSetParamDecimal 341SQLSetParamFloat 342SQLSetParamInt 342SQLSetParamLong 343SQLSetParamNull 344SQLSetParamTime 345SQLSetStatement 346SQLTransact 347SQLUpdate 348SQLUpdateCurrent 349Sqrt 349StartApp 350StringASCII 351StringChar 352StringCompare 353StringCompareEncrypted 353StringFromGMTTimeToLocal 354StringFromIntg 356StringFromReal 357StringFromTime 357StringFromTimeLocal 359StringInString 360StringLeft 361StringLen 362StringLower 362StringMid 363StringReplace 363StringRight 365StringSpace 366StringTest 367StringToInt 368StringToReal 369StringTrim 370StringUpper 371Tan 372Tekst 372Trunc 373TseGetClientID 373TseQueryRunningOnClient 374TseQueryRunningOnConsole 374Usuwanie problemów 413wcAddItem 376wcClear 376wcDelete 377wcDeleteSelection 377wcErrorMessage 378wcFindItem 379

wcGetItem 380wcGetItemData 381wcInsertItem 382wcLoadList 383wcLoadText 384wcSaveList 385wcSaveText 386wsSetItemData 387WWControl 389WWExecute 390WWPoke 392WWRequest 393

Funkcje matematyczneAbs 182ArcCos 227ArcSin 228ArcTan 228Cos 231Exp 237Int 266Log 278LogN 279Pi 281Round 303Sgn 307Sin 310Sqrt 349Tan 372Trunc 373

Funkcje recepturError Numbers 414Komunikaty o błędach 414RecipeDelete 294RecipeGetMessage 295, 416RecipeLoad 296RecipeSave 297RecipeSelectNextRecipe 298RecipeSelectPreviousRecipe 299RecipeSelectRecipe 300RecipeSelectUnit 301Usuwanie problemów 414Wyświetlanie komunikatów błędów 416

Funkcje skryptowe QuickScript 181Funkcje SPC

SPCConnect 311SPCDatasetDlg 312SPCDisconnect 312SPCDisplayData 313SPCLocateScooter 313SPCMoveScooter 314SPCSaveSample 314SPCSelectDataset 315SPCSelectProduct 315SPCSetControlLimits 316SPCSetMeasurement 316SPCSetProductCollected 317SPCSetProductDislpayed 317SPCSetRangeLimits 318SPCSetSpecLimits 318

Funkcje systemoweActivateApp 183

Opis funkcji, pól i zmiennych systemowych

436

FileCopy 238FileDelete 239FileMove 240FileReadFields 242FileReadMessage 243FileWriteFields 244FileWriteMessage 245GetAccountStatus 246GetNodeName 247InfoAppActive 262InfoAppTitle 262InfoDisk 263InfoFile 264InfoInTouchAppDir 265IsAnyAsynchFunctionBusy 277ReloadWindowViewer 302RestartWindowViewer 302StartApp 350

Funkcje systemu bezpieczeństwaChangePassword 230

Funkcje tekstoweDText 236StringASCII 351StringChar 352StringFromIntg 356StringFromReal 357StringFromTime 354, 357StringFromTimeLocal 359StringInString 360StringLeft 361StringLen 362StringLower 362StringMid 363StringReplace 363StringRight 365StringSpace 366StringTest 367StringToInt 368StringToReal 369StringTrim 370StringUpper 371Tekst 372WWStringFromTime 394

Funkcje trendów historycznychHTGetLastError 250HTGetPenName 251HTGetTimeAtScooter 252HTGetTimeStringAtScooter 253HTGetValue 254HTGetValueAtScooter 255HTGetValueAtZone 256HTScrollLeft 257HTScrollRight 258HTSelectTag 258HTSetPenName 259HTUpdateToCurrentTime 259HTZoomOut 261PrintHT 283

Funkcje usługi terminalaTseGetClientID 373TseQueryRunningOnClient 374

TseQueryRunningOnConsole 374

GGOT - Funkcje

GetPropertyD 247GetPropertyI 248GetPropertyM 248SetPropertyD 305SetPropertyI 306SetPropertyM 306

II/O

Typy zmiennych 43IOReinitAccessName() 271

KKody błędów baz danych Sybase 432Komunikaty błędów dBase 432Komunikaty błędów SQL Serwer 432Komunikaty o błędach

Alarmów Funkcje 413Baza danych Oracle 431Baza danych Sybase 432dBase 432Funkcje receptur 414Obiekty sterujące okien - Funkcje 413SQL Server 432Wyświetlanie komunikatów błędów receptur 416

Komunikaty o błędach bazy danych Oracle 431

MMatryca typów zmiennych 44

NNazwy elementów SPC DDE

Bieżąca próbka 420Ręczne wprowadzanie danych 425Selection (Wybór) 426Sterowanie i wyświetlanie 418

OObiekty sterujące okien - Funkcje

Error Numbers 413Komunikaty o błędach 413wcAddItem 376wcClear 376wcDelete 377wcDeleteSelection 377wcErrorMessage 378, 413wcFindItem 379wcGetItem 380wcGetItemData 381wcInsertItem 382wcLoadList 383

Opis funkcji, pól i zmiennych systemowych

437

wcLoadText 384wcSaveList 385wcSaveText 386wsSetItemData 387

Obiekty sterujące okien - Pola.Caption 106.Enabled 111.ListCount 118.ListIndex 119.NewIndex 136.ReadOnly 157.TopIndex 172.Value 179.Visible 180

OLE for Process Control (OPC) 147OLE_CreateObject Function 400

PPola alarmów

.Ack 51

.AckDev 52, 53

.AckROC 54

.AckValue 55

.Alarm 56

.AlarmAccess 57

.AlarmAckModel 58

.AlarmClass 59

.AlarmComment 60

.AlarmDate 61

.AlarmDev 62

.AlarmDevCount 63

.AlarmDevDeadband 63

.AlarmDevUnAckCount 64

.AlarmDisabled 65

.AlarmDsc 66

.AlarmDscCount 67

.AlarmDscDisabled 68

.AlarmDscEnaabled 69

.AlarmDscInhibitor 70

.AlarmDscUnAckCount 71

.AlarmEnabled 71

.AlarmGroup 72

.AlarmGroupSel 73

.AlarmHiDisabled 74

.AlarmHiEnabled 74

.AlarmHiHiDisabled 75

.AlarmHiHiEnabled 75

.AlarmHiInhibitor 76, 77

.AlarmLimit 78

.AlarmLoDisabled 78

.AlarmLoEnabled 79

.AlarmLoInhibitor 80

.AlarmLoLoDisabled 81

.AlarmLoLoEnabled 81

.AlarmLoLoInhibitor 82

.AlarmMajDevDisabled 83

.AlarmMajDevEnabled 83

.AlarmMajDevInhibitor 84

.AlarmMinDevDisabled 85

.AlarmMinDevEnabled 86

.AlarmMinDevInhibitor 87

.AlarmName 88

.AlarmOprName 89

.AlarmOprNode 90

.AlarmPri 91

.AlarmProv 92

.AlarmROC 93

.AlarmROCCount 94

.AlarmROCDisabled 94

.AlarmROCEnabled 95

.AlarmROCInhibitor 96

.AlarmROCUnAckCount 97

.AlarmState 97

.AlarmTime 98

.AlarmTotalCount 99

.AlarmType 99

.AlarmUnAckCount 100

.AlarmUserDefNum1 101

.AlarmUserDefNum2 102

.AlarmUserDefStr 103

.AlarmValDeadband 104

.AlarmValue 104

.AlarmValueCount 105

.AlarmValueUnAckCount 105

.DevTarget 110

.Freeze 113

.HiHiLimit 114

.HiHiSet 114

.HiHiStatus 115

.HiLimit 115

.HiSet 116

.HiStatus 117

.ListChanged 118

.LoLimit 120

.LoLoLimit 120

.LoLoSet 121

.LoLoStatus 122

.LoSet 121

.LoStatus 123

.MajorDevPct 123

.MajorDevSet 124

.MajorDevStatus 125

.MinorDevPct 130

.MinorDevSet 130

.MinorDevStatus 131

.NextPage 136

.Normal 137

.NumAlarms 138

.PageNum 139

.PendingUpdates 143

.PrevPage 144

.PriFrom 144

.PriTo 145

.ProvidersReq 145

.ProvidersRet 146

.QueryState 154

.QueryType 155

.ROCPct 159

.ROCSet 159

.ROCStatus 160

.Successful 165

Opis funkcji, pól i zmiennych systemowych

438

.SuppressRetain 166

.TotalPages 173

.UnAck 174Pola trendów historycznych

.ChartLength 107

.ChartStart 108

.DisplayMode 110

.MaxRange 127

.MinRange 132

.Pen1-.Pen8 140

.ScooterLockLeft 161

.ScooterLockRight 162

.ScooterPosLeft 163

.ScooterPosRight 164

.UpdateCount 175

.UpdateInProgress 176

.UpdateTrend 177Pola zmiennych

.Ack 51

.AckDev 52, 53

.AckROC 54

.AckValue 55

.Alarm 56

.AlarmAccess 57

.AlarmAckModel 58

.AlarmClass 59

.AlarmComment 60

.AlarmDate 61

.AlarmDev 62

.AlarmDevCount 63

.AlarmDevDeadband 63

.AlarmDevUnAckCount 64

.AlarmDisabled 65

.AlarmDsc 66

.AlarmDscCount 67

.AlarmDscDisabled 68

.AlarmDscEnabled 69

.AlarmDscInhibitor 70

.AlarmDscUnAckCount 71

.AlarmEnabled 71

.AlarmGroup 72

.AlarmGroupSel 73

.AlarmHiDisabled 74

.AlarmHiEnabled 74

.AlarmHiHiDisabled 75

.AlarmHiHiEnabled 75

.AlarmHiInhibitor 76, 77

.AlarmLimit 78

.AlarmLoDisabled 78

.AlarmLoEnabled 79

.AlarmLoInhibitor 80

.AlarmLoLoDisabled 81

.AlarmLoLoEnabled 81

.AlarmLoLoInhibitor 82

.AlarmMajDevDisabled 83

.AlarmMajDevEnabled 83

.AlarmMajDevInhibitor 84

.AlarmMinDevDisabled 85

.AlarmMinDevEnabled 86

.AlarmMinDevInhibitor 87

.AlarmName 88

.AlarmOprName 89

.AlarmOprNode 90

.AlarmPri 91

.AlarmProv 92

.AlarmROC 93

.AlarmROCCount 94

.AlarmROCDisabled 94

.AlarmROCEnabled 95

.AlarmROCInhibitor 96

.AlarmROCUnAckCount 97

.AlarmState 97

.AlarmTime 98

.AlarmTotalCount 99

.AlarmType 99

.AlarmUnAckCOunt 100

.AlarmUserDefNum1 101

.AlarmUserDefNum2 102

.AlarmUserDefStr 103

.AlarmValDeadband 104

.AlarmValue 104

.AlarmValueCount 105

.AlarmValueUnAckCount 105

.Caption 106

.ChartLength 107

.ChartStart 108

.Comment 109

.DevTarget 110

.DisplayMode 110

.Enabled 111

.EngUnits 112

.Freeze 113

.HiHiLimit 114

.HiHiSet 114

.HiHiStatus 115

.HiLimit 115

.HiSet 116

.HiStatus 117

.ListChanged 118

.ListCount 118

.ListIndex 119

.LoLimit 120

.LoLoLimit 120

.LoLoSet 121

.LoLoStatus 122

.LoSet 121

.LoStatus 123

.MajorDevPct 123

.MajorDevSet 124

.MajorDevStatus 125

.MaxEU 126

.MaxRange 127

.MaxRaw 128

.MinEU 129

.MinorDevPct 130

.MinorDevSet 130

.MinorDevStatus 131

.MinRange 132

.MinRaw 133

.Name 134

.NewIndex 136

.NextPage 136

Opis funkcji, pól i zmiennych systemowych

439

.Normal 137

.NumAlarms 138

.OffMsg 138

.OnMsg 139

.PageNum 139

.Pen1-.Pen8 140

.PendingUpdates 143

.PrevPage 144

.PriFrom 144

.PriTo 145

.ProvidersReq 145

.ProvidersRet 146

.Quality 147

.QualityLimit 151

.QualityLimitString 151

.QualityStatus 152

.QualityStatusString 152

.QualitySubstatus 153

.QualitySubstatusString 154

.QueryState 154

.QueryType 155

.RawValue 156

.ReadOnly 157

.Reference 158

.ReferenceComplete 158

.ROCPct 159

.ROCSet 159

.ROCStatus 160

.ScooterLockLeft 161

.ScooterLockRight 162

.ScooterPosLeft 163

.ScooterPosRight 164

.Successful 165

.SuppressReatin 166

.TagID 166

.TimeDate 167

.TimeDateString 167

.TimeDateTime 167

.TimeDay 168

.TimeHour 168

.TimeMinute 169

.TimeMonth 169

.TimeMsec 170

.TimeSecond 170

.TimeTime 171

.TimeTimeString 171

.TimeYear 172

.TopIndex 172

.TotalPages 173

.UnAck 174

.UpdateCount 175

.UpdateInProgress 176

.UpdateTrend 177

.Value 178, 179

.Visible 180Pole bitowe pod-statusu 152ptGetTrendType() 287ptLoadTrendCfg() 287ptPanCurrentPen() 288ptPanTime() 289ptPauseTrend() 289

ptSaveTrendCfg() 290ptSetCurrentPen 290ptSetPen() 290ptSetPenEx 291ptSetTimeAxis() 291ptSetTimeAxisToCurrent() 292ptSetTrend 292ptSetTrendType() 292ptZoomCurrentPen() 293ptZoomTime() 293

RRecipeGetMessage 416Różne funkcje

DialogStringEntry 232DialogValueEntry 233Hide 249Hideself 249IOGetApplication 269IOGetNode 270IOGetTopic 270IOReinitialize 271IOSetAccessName 272IOSetItem 274IOStartUninitConversations 276PlaySound 282PrintScreen 283PrintWindow 285SendKeys 303Show 308ShowAt 309ShowHome 309ShowTopLeftAt 310WWControl 389

SSetWindowPrinter 307Specyfikacja jakości danych Fieldbus 147SQLErrorMsg 430statusy jakości 147StringCompare 353StringCompareEncrypted 353System rejestrowania danych historycznych - Zmienne

$HistoricalLogging 29

TTseGetClientNodeName() 374Typy zmiennych 41

I/O 43I/O Discrete 43I/O Integer 43I/O Real 43

IndirectIndirect Analog 43Indirect Discrete 43Indirect Message 43

Inne 43

Opis funkcji, pól i zmiennych systemowych

440

Hist Trend (Trend historyczny) 44Tag ID (Identyfikator zmiennej) 44Zmienne typu SuperTag 44

Memory 42Memory Discrete 42Memory Integer 42Memory Message 42Memory Real 42

UUsuwanie problemów

Funkcje 413Funkcje receptur 414Zestawienie funkcji SQL 429

WWewnętrzne zmienne systemowe 23Wizard 16-pisakowego trendu

Funkcje skryptowe QuickScriptptGetTrendType() 287ptLoadTrendCfg() 287ptPanCurrentPen() 288ptPanTime() 289ptPauseTrend() 289

WWDDE FunctionsWWExecute 390WWPoke 392WWRequest 393

ZZestawienie funkcji SQL

ConnectionID Variable 322ConnectString Variable 322Komunikaty o błędach 430ResultCode 429SLQRollback 336SQLAppendStatement 319SQLClearParam 319SQLClearStatement 320SQLClearTable 320SQLCommit 321SQLConnect 322SQLCreateTable 324SQLDelete 325SQLDisconnect 326SQLDropTable 326SQLEnd 326SQLErrorMsg 327, 429SQLExecute 328SQLFirst 328SQLGetRecord 329SQLInsert 330SQLInsertEnd 331SQLInsertExecute 331SQLInsertPrepare 332SQLLast 332SQLLoadStatement 333SQLManageDSN 333

SQLNext 334SQLNumRows 334SQLPrepareStatement 335SQLPrev 335SQLSelect 336SQLSetParamChar 340SQLSetParamDate 340SQLSetParamDateTime 341SQLSetParamDecimal 341SQLSetParamFloat 342SQLSetParamInt 342SQLSetParamLong 343SQLSetParamNull 344SQLSetParamTime 345SQLSetStatement 346SQLTransact 347SQLUpdate 348SQLUpdateCurrent 349

Zmienne systemowe$AccessLevel 24$ApplicationChanged 25$ApplicationVersion 25$ChangePassword 26$ConfigureUsers 27$Date 27$DateString 28$DateTime 28$Day 28$False 29$HistoricalLogging 29$Hour 30$InactivityTimeout 30$InactivityWarning 31$Language 31$LogicRunning 32$Minute 32$Month 32$Msec 33$NewAlarm 33$ObjHor 33$ObjVer 34$Operator 34$OperatorEntered 36$PasswordEntered 37$Second 37$StartDdeConversations 37$System 38$Time 38$TimeString 38$VerifiedUserName 39$Year 39

Zmienne systemowe systemu bezpieczeństwa$AccessLevel 24$ChangePassword 26$ConfigureUsers 27$InactivityTimeout 30$InactivityWarning 31$Operator 34$OperatorEntered 36$PasswordEntered 37

Opis funkcji, pól i zmiennych systemowych