LI ASK OF IT700

background image

Wonderware

FactorySuite

Opis funkcji, pól

i zmiennych systemowych

Podręcznik Użytkownika

Wersja A
Grudzień 1997

Wonderware Corporation

background image

Wszystkie prawa zastrzeżone. Żaden fragment niniejszej publikacji nie może być
kopiowany, przechowywany w systemie do wyszukiwania informacji, przesyłany za
pomocą jakichkolwiek metod, elektronicznych, mechanicznych, fotokopiowania,
nagrywania, lub też w jakikolwiek inny sposób, bez uprzedniego otrzymania pisemnej
zgody Wonderware Corporation. Nie jest przejmowana żadna odpowiedzialność prawna za
naruszenie praw autorskich lub patentowych, w związku z korzystaniem z zawartych w
niniejszej publikacji informacji. Dołożono wszelkich starań, aby informacje zawarte w tej
publikacji były kompletne i rzetelne, jednakże ani wydawca ani autor nie przejmują
odpowiedzialności za błędy i omyłkowe pominięcia. Nie przejmowana jest również
jakakolwiek odpowiedzialność za szkody wynikłe z korzystania z zawartych tu informacji.

Zawarte w niniejszym dokumencie informacje mogą ulec zmianie bez uprzedzenia, i nie są
zobowiązujące dla Wonderware Corporation. Oprogramowanie opisane w niniejszej
dokumentacji jest dostarczane wraz z licencją, oraz nie ujawnianą publicznie umową.
Oprogramowanie może być wykorzystywane i kopiowane wyłącznie przy zachowaniu
zgodności z tymi dokumentami.

1997 Wonderware Corporation. Wszystkie prawa zastrzeżone.

100 Technology Drive
Irvine, CA 92618
U.S.A
(714) 727-3200
http://www.wonderware.com

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

Wonderware jest zastrzeżonym znakiem handlowym Wonderware Corporation.

Wonderware FactorySuite, InTouch, WindowMaker, WindowViewer, SQL Access
Manager, Recipe Manager, SPC Pro, DBDump, DBLoad, HDMerge, HistData,
Wonderware Logger, InControl, InTrack, InBatch, IndustrialSQL, FactoryOffice, Scout,
SuiteLink i NetDDE są zastrzeżonymi znakami towarowymi Wonderware Corporation.

Wydawca:

ASTOR sp. z o.o.
ul. Smoleńsk 29, 31-112 Kraków, tel. (012) 428-63-00, fax (012) 428-63-01
e-mail: info@astor.com.pl.; http://www.astor.com.pl.

ISBN 83-910632-1-6

background image

iii

Spis treści

Wprowadzenie

xi

Rozdział 1 - Zmienne systemowe

1-1

$AccessLevel ........................................................................................................................................................ 1-2
$AlarmLogging...................................................................................................................................................... 1-3
$AlarmPrinterError................................................................................................................................................ 1-3
$AlarmPrinterNoPaper .......................................................................................................................................... 1-4
$AlarmPrinterOffline............................................................................................................................................. 1-4
$AlarmPrinterOverflow......................................................................................................................................... 1-5
$ApplicationChanged ........................................................................................................................................... 1-5
$ApplicationVersion ............................................................................................................................................. 1-6
$ChangePassword ................................................................................................................................................. 1-6
$ConfigureUsers ................................................................................................................................................... 1-7
$Date .................................................................................................................................................................... 1-7
$DateString ........................................................................................................................................................... 1-8
$DateTime ............................................................................................................................................................ 1-8
$Day ..................................................................................................................................................................... 1-8
$HistoricalLogging ............................................................................................................................................... 1-9
$Hour .................................................................................................................................................................... 1-9
$InactivityTimeout ............................................................................................................................................. 1-10
$InactivityWarning ............................................................................................................................................. 1-10
$LogicRunning ................................................................................................................................................... 1-11
$Minute .............................................................................................................................................................. 1-11
$Month ............................................................................................................................................................... 1-11
$Msec ................................................................................................................................................................. 1-12
$NewAlarm ......................................................................................................................................................... 1-12
$ObjHor .............................................................................................................................................................. 1-12
$ObjVer .............................................................................................................................................................. 1-13
$Operator ............................................................................................................................................................ 1-13
$OperatorEntered ............................................................................................................................................... 1-14
$PasswordEntered .............................................................................................................................................. 1-14
$Second .............................................................................................................................................................. 1-15
$StartDdeConversations ...................................................................................................................................... 1-15
$System ............................................................................................................................................................... 1-15
$Time ................................................................................................................................................................. 1-16
$TimeString ........................................................................................................................................................ 1-16
$Year .................................................................................................................................................................. 1-16

background image

iv

Spis treści

Rozdział 2 - Pola 2- 1

Typy zmiennych..................................................................................................................................................... 2-2

Zmienne typu pamięciowego (Memory) ..................................................................... 2-2
Zmienne typu I/O........................................................................................................ 2-3
Zmienne typu po średniego(Indirect): dyskretne, analogowe, tekstowe ...................... 2-3
Pozostałe typy zmiennych........................................................................................... 2-4

Zestawienie typów pól zmiennych ......................................................................................................................... 2-4
.Ack ....................................................................................................................................................................... 2-6
.Alarm.................................................................................................................................................................... 2-7
.AlarmDevDeadband ............................................................................................................................................. 2-8
.AlarmEnabled ....................................................................................................................................................... 2-9
.AlarmValDeadband ............................................................................................................................................ 2-10
.ChartLength ....................................................................................................................................................... 2-11
.ChartStart ........................................................................................................................................................... 2-12
.Comment ............................................................................................................................................................ 2-12
.DevTarget ........................................................................................................................................................... 2-13
.DisplayMode ..................................................................................................................................................... 2-13
.EngUnits ............................................................................................................................................................ 2-14
.HiHiLimit ........................................................................................................................................................... 2-14
.HiHiStatus .......................................................................................................................................................... 2-15
.HiLimit ............................................................................................................................................................... 2-16
.HiStatus .............................................................................................................................................................. 2-16
.LoLimit............................................................................................................................................................... 2-17
.LoLoLimit........................................................................................................................................................... 2-17
.LoLoStatus.......................................................................................................................................................... 2-18
.LoStatus.............................................................................................................................................................. 2-19
.MajorDevPct....................................................................................................................................................... 2-19
.MajorDevStatus .................................................................................................................................................. 2-20
.MaxEU .............................................................................................................................................................. 2-21
.MaxRange .......................................................................................................................................................... 2-22
.MaxRaw ............................................................................................................................................................. 2-23
.MinEU ............................................................................................................................................................... 2-24
.MinorDevPct ...................................................................................................................................................... 2-25
.MinorDevStatus.................................................................................................................................................. 2-26
.MinRange .......................................................................................................................................................... 2-27
.MinRaw ............................................................................................................................................................. 2-28
.Name .................................................................................................................................................................. 2-29
.Normal................................................................................................................................................................ 2-30
.OffMsg ............................................................................................................................................................... 2-31
.OnMsg ............................................................................................................................................................... 2-31
.Pen1 - .Pen8 ....................................................................................................................................................... 2-32
.Quality ............................................................................................................................................................... 2-34
.QualityLimit ....................................................................................................................................................... 2-36
.QualityLimitString ............................................................................................................................................. 2-36
.QualityStatus ...................................................................................................................................................... 2-37
.QualityStatusString ............................................................................................................................................ 2-37
.QualitySubstatus ................................................................................................................................................ 2-38
.QualitySubstatusString ...................................................................................................................................... 2-38
.RawValue .......................................................................................................................................................... 2-39

background image

v

.Reference ........................................................................................................................................................... 2-40
.ReferenceComplete ........................................................................................................................................... 2-40
.ROCPct............................................................................................................................................................... 2-41
.ROCStatus .......................................................................................................................................................... 2-42
.ScooterLockLeft ................................................................................................................................................ 2-43
.ScooterLockRight .............................................................................................................................................. 2-44
.ScooterPosLeft .................................................................................................................................................. 2-45
.ScooterPosRight ................................................................................................................................................ 2-46
.SPCStatus ........................................................................................................................................................... 2-47
.TagID ................................................................................................................................................................ 2-47
.TimeDate ........................................................................................................................................................... 2-48
.TimeDateString ................................................................................................................................................. 2-48
.TimeDateTime ................................................................................................................................................... 2-48
.TimeDay ............................................................................................................................................................ 2-49
.TimeHour .......................................................................................................................................................... 2-49
.TimeMinute ....................................................................................................................................................... 2-49
.TimeMonth ........................................................................................................................................................ 2-50
.TimeMsec .......................................................................................................................................................... 2-50
.TimeSecond ....................................................................................................................................................... 2-50
.TimeTime .......................................................................................................................................................... 2-51
.TimeTimeString ................................................................................................................................................. 2-51
.TimeYear ........................................................................................................................................................... 2-51
.Unack.................................................................................................................................................................. 2-52
.UpdateCount ...................................................................................................................................................... 2-53
.UpdateInProgress .............................................................................................................................................. 2-54
.UpdateTrend ...................................................................................................................................................... 2-55
.Value ................................................................................................................................................................. 2-56
.AlarmGroup ....................................................................................................................................................... 2-57
.NextPage ........................................................................................................................................................... 2-57
.NumAlarms ....................................................................................................................................................... 2-58
.PageNum ........................................................................................................................................................... 2-58
.PrevPage ............................................................................................................................................................ 2-59
.PriFrom .............................................................................................................................................................. 2-59
.PriTo .................................................................................................................................................................. 2-60
.ProviderReq ....................................................................................................................................................... 2-60
.ProviderRet ........................................................................................................................................................ 2-61
.QueryState ......................................................................................................................................................... 2-62
.QueryType ......................................................................................................................................................... 2-63
.Successful .......................................................................................................................................................... 2-64
.TotalPages ......................................................................................................................................................... 2-64
.Caption ............................................................................................................................................................... 2-65
.Enabled............................................................................................................................................................... 2-66
.ListCount ............................................................................................................................................................ 2-67
.ListIndex............................................................................................................................................................. 2-68
.NewIndex ........................................................................................................................................................... 2-69
.ReadOnly............................................................................................................................................................ 2-70
.TopIndex ............................................................................................................................................................ 2-71
.Value .................................................................................................................................................................. 2-72
.Visible ................................................................................................................................................................ 2-73

background image

vi

Spis treści

Rozdział 3 - Funkcje skryptowe

3-1

Abs() ..................................................................................................................................................................... 3-2
Ack()...................................................................................................................................................................... 3-2
ActivateAPP() ....................................................................................................................................................... 3-3
almAckAll() .......................................................................................................................................................... 3-3
almAckDisplay() ................................................................................................................................................... 3-4
almAckRecent() .................................................................................................................................................... 3-4
almAckSelect() ..................................................................................................................................................... 3-5
almDefQuery() ...................................................................................................................................................... 3-5
almMoveWindow() ............................................................................................................................................... 3-6
almQuery() ............................................................................................................................................................ 3-7
almSelectAll() ....................................................................................................................................................... 3-7
almSelectItem() ..................................................................................................................................................... 3-8
almShowStats() ..................................................................................................................................................... 3-8
ArcCos() ............................................................................................................................................................... 3-8
ArcSin() ................................................................................................................................................................ 3-9
ArcTan() ............................................................................................................................................................... 3-9
ChangePassword() .............................................................................................................................................. 3-10
Cos() ................................................................................................................................................................... 3-10
DialogStringEntry() ............................................................................................................................................ 3-11
DialogValueEntry() ............................................................................................................................................ 3-12
DText() ................................................................................................................................................................ 3-13
Exp() ................................................................................................................................................................... 3-14
FileCopy() ........................................................................................................................................................... 3-14
FileDelete() ......................................................................................................................................................... 3-15
FileMove() .......................................................................................................................................................... 3-16
FileReadFields() ................................................................................................................................................. 3-17
FileReadMessage() ............................................................................................................................................. 3-18
FileWriteFields() ................................................................................................................................................ 3-19
FileWriteMessage() ............................................................................................................................................ 3-20
GetNodeName() .................................................................................................................................................. 3-20
GetPropertyD() ................................................................................................................................................... 3-21
GetPropertyI() ..................................................................................................................................................... 3-21
GetPropertyM() .................................................................................................................................................. 3-22
Hide .................................................................................................................................................................... 3-22
HideSelf .............................................................................................................................................................. 3-22
HTGetLastError() ............................................................................................................................................... 3-23
HTGetPenName() ............................................................................................................................................... 3-24
HTGetTimeAtScooter() ...................................................................................................................................... 3-24
HTGetTimeStringAtScooter() ............................................................................................................................ 3-25
HTGetValue() ..................................................................................................................................................... 3-26
HTGetValueAtScooter() ..................................................................................................................................... 3-27
HTGetValueAtZone() ......................................................................................................................................... 3-28
HTScrollLeft() .................................................................................................................................................... 3-29
HTScrollRight() .................................................................................................................................................. 3-29
HTSetPenName() ................................................................................................................................................ 3-30
HTSetPenName() ................................................................................................................................................ 3-30
HTUpdateToCurrentTime() ................................................................................................................................ 3-31
HTZoomIn() ....................................................................................................................................................... 3-31

background image

vii

HTZoomOut() ..................................................................................................................................................... 3-32
InfoAppActive() ................................................................................................................................................. 3-32
InfoAppTitle() .................................................................................................................................................... 3-33
InfoDisk() ........................................................................................................................................................... 3-34
InfoFile() ............................................................................................................................................................ 3-35
InfoInTouchAppDir() ......................................................................................................................................... 3-35
InfoResources() .................................................................................................................................................. 3-36
Int() ..................................................................................................................................................................... 3-37
IOSetAccessName() ........................................................................................................................................... 3-38
IOSetItem() ......................................................................................................................................................... 3-39
IsAnyAsyncFunctionBusy() ................................................................................................................................ 3-40
Log() ................................................................................................................................................................... 3-41
LogMessage ........................................................................................................................................................ 3-41
LogN() ................................................................................................................................................................ 3-42
Pi() ...................................................................................................................................................................... 3-42
PlaySound() ........................................................................................................................................................ 3-43
PrintHT() ............................................................................................................................................................ 3-43
PrintWindow() .................................................................................................................................................... 3-44
RecipeDelete() .................................................................................................................................................... 3-46
RecipeGetMessage() ........................................................................................................................................... 3-46
RecipeLoad() ...................................................................................................................................................... 3-47
RecipeSave() ...................................................................................................................................................... 3-48
RecipeSelectNextRecipe() .................................................................................................................................. 3-49
RecipeSelectPreviousRecipe() ............................................................................................................................ 3-50
RecipeSelectRecipe() ......................................................................................................................................... 3-51
RecipeSelectUnit() ............................................................................................................................................. 3-52
RestartWindowViewer ....................................................................................................................................... 3-53
Round() ............................................................................................................................................................... 3-53
SendKeys ............................................................................................................................................................ 3-54
SetDDEAppTopic() ............................................................................................................................................ 3-55
SetDDEItem() ..................................................................................................................................................... 3-55
SetPropertyD() .................................................................................................................................................... 3-56
SetPropertyI() ..................................................................................................................................................... 3-56
SetPropertyM() ................................................................................................................................................... 3-57
Sgn() ................................................................................................................................................................... 3-57
Show ................................................................................................................................................................... 3-58
ShowAt() ............................................................................................................................................................ 3-58
ShowHome ......................................................................................................................................................... 3-59
ShowTopLeftAt() ............................................................................................................................................... 3-59
Sin() .................................................................................................................................................................... 3-59
SPCConnect() ...................................................................................................................................................... 3-60
SPCDisconnect() ................................................................................................................................................. 3-60
SPCDisplayData() ............................................................................................................................................... 3-61
SPCLocateScooter() ............................................................................................................................................ 3-61
SPCMoveScooter().............................................................................................................................................. 3-61
SPCSaveSample()................................................................................................................................................ 3-62
SPCSelectDataset().............................................................................................................................................. 3-62
SPCSelectProduct() ............................................................................................................................................. 3-62
SPCSetControlLimits()........................................................................................................................................ 3-63

background image

viii

Spis treści

SPCSetMeasurement()......................................................................................................................................... 3-63
SPCSetProductCollected()................................................................................................................................... 3-64
SPCSetProductDislpayed().................................................................................................................................. 3-64
SPCSetRangeLimits() .......................................................................................................................................... 3-64
SPCSetSpecLimits() ............................................................................................................................................ 3-65
SQLAppendStatement()....................................................................................................................................... 3-65
SQLClearParam() ................................................................................................................................................ 3-65
SQLClearStatement()........................................................................................................................................... 3-66
SQLClearTable() ................................................................................................................................................. 3-66
SQLCommit() ...................................................................................................................................................... 3-67
SQLConnect()...................................................................................................................................................... 3-68
SQLCreateTable() ............................................................................................................................................... 3-69
SQLDelete()......................................................................................................................................................... 3-70
SQLDisconnect() ................................................................................................................................................. 3-71
SQLDropTable().................................................................................................................................................. 3-71
SQLEnd() ............................................................................................................................................................ 3-71
SQLErrorMsg() ................................................................................................................................................... 3-72
SQLExecute() ...................................................................................................................................................... 3-72
SQLFirst()............................................................................................................................................................ 3-73
SQLGetRecord().................................................................................................................................................. 3-73
SQLInsert().......................................................................................................................................................... 3-74
SQLInsertEnd() ................................................................................................................................................... 3-74
SQLInsertExecute() ............................................................................................................................................. 3-75
SQLInsertPrepare().............................................................................................................................................. 3-75
SQLLast() ............................................................................................................................................................ 3-76
SQLLoadStatement() ........................................................................................................................................... 3-76
SQLManageDSN() .............................................................................................................................................. 3-77
SQLNext() ........................................................................................................................................................... 3-77
SQLNumRows() .................................................................................................................................................. 3-77
SQLPrepareStatement() ....................................................................................................................................... 3-78
SQLPrev()............................................................................................................................................................ 3-78
SQLRollback()..................................................................................................................................................... 3-79
SQLSelect() ......................................................................................................................................................... 3-80
SQLSetParamChar() ............................................................................................................................................ 3-82
SQLSetParamDate() ............................................................................................................................................ 3-82
SQLSetParamDateTime().................................................................................................................................... 3-83
SQLSetParamDecimal() ...................................................................................................................................... 3-83
SQLSetParamFloat()............................................................................................................................................ 3-84
SQLSetParamInt() ............................................................................................................................................... 3-84
SQLSetParamLong() ........................................................................................................................................... 3-84
SQLSetParamNull()............................................................................................................................................. 3-85
SQLSetParamTime() ........................................................................................................................................... 3-85
SQLSetStatement() .............................................................................................................................................. 3-86
SQLTransact() ..................................................................................................................................................... 3-86
SQLUpdate() ....................................................................................................................................................... 3-87
SQLUpdateCurrent() ........................................................................................................................................... 3-88
Sqrt() ................................................................................................................................................................... 3-88
StartApp .............................................................................................................................................................. 3-89
StringASCII() ...................................................................................................................................................... 3-89

background image

ix

StringChar()......................................................................................................................................................... 3-90
StringFromIntg().................................................................................................................................................. 3-90
StringFromReal()................................................................................................................................................. 3-91
StringFromTime()................................................................................................................................................ 3-92
StringInString().................................................................................................................................................... 3-93
StringLeft() .......................................................................................................................................................... 3-93
StringLen() .......................................................................................................................................................... 3-94
StringLower() ...................................................................................................................................................... 3-94
StringMid().......................................................................................................................................................... 3-95
StringReplace().................................................................................................................................................... 3-96
StringRight()........................................................................................................................................................ 3-97
StringSpace() ....................................................................................................................................................... 3-97
StringTest().......................................................................................................................................................... 3-98
StringToIntg()...................................................................................................................................................... 3-98
StringToReal()..................................................................................................................................................... 3-99
StringTrim()......................................................................................................................................................... 3-99
StringUpper()..................................................................................................................................................... 3-100
Tan() ................................................................................................................................................................. 3-100
Text()................................................................................................................................................................. 3-101
Trunc() .............................................................................................................................................................. 3-101
wcAddItem()...................................................................................................................................................... 3-102
wcClear() ........................................................................................................................................................... 3-102
wcDeleteItem() .................................................................................................................................................. 3-103
wcDeleteSelection()........................................................................................................................................... 3-103
wcErrorMessage() ............................................................................................................................................. 3-104
wcFindItem() ..................................................................................................................................................... 3-105
wcGetItem()....................................................................................................................................................... 3-106
wcGetItemData() ............................................................................................................................................... 3-107
wcInsertItem() ................................................................................................................................................... 3-108
wcLoadList() ..................................................................................................................................................... 3-108
wcLoadText() .................................................................................................................................................... 3-109
wcSaveList()...................................................................................................................................................... 3-110
wcSaveText()..................................................................................................................................................... 3-111
wcSetItemData()................................................................................................................................................ 3-112
WWControl() .................................................................................................................................................... 3-113
WWExecute().................................................................................................................................................... 3-114
WWPoke()......................................................................................................................................................... 3-115
WWRequest().................................................................................................................................................... 3-116

background image

x

Spis treści

Załącznik A Usuwanie zakłóceń przy korzystaniu

z funkcji skryptowych

A-1

Komunikaty o błędach dla obiektów sterujących okien i alarmów rozproszonych.............................................. A-2
Usuwanie zakłóceń przy korzystaniu z funkcji do obsługi receptur ..................................................................... A-3
Wyświetlanie komunikatów dla kodów błędów.................................................................................................... A-4
Nazwy pozycji DDE SPC ..................................................................................................................................... A-5

Pozycje DDE SPC sterowania i wyświetlanie............................................................ A-5
Pozycje DDE SPC bieżącej próbki............................................................................ A-7
Pozycje DDE SPC ręcznego wprowadzania ............................................................ A-10
Pozycje DDE SPC do zaznaczania .......................................................................... A-12

Usuwanie zakłóceń przy korzystaniu z funkcji skryptowych.............................................................................. A-15

Komunikaty o błędach ............................................................................................. A-15

Kody błędów dla poszczególnych baz danych.................................................................................................... A-17

Index

I-1

background image

xi

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

Wprowadzenie

W podręczniku InTouch - opis funkcji, pól i zmiennych systemowych zamieszczono
wyczerpujący opis pól zmiennych, właściwości obiektów sterujących okien, właściwości
obiektów alarmowych, zmiennych systemowych, oraz funkcji skryptowych. Przedstawiono
również charakterystykę dodatkowych modułów: Recipe Manager, SPC Pro i SQL Access
Manager. Poszczególne rozdziały zawierają:

Rozdział 1 - "Zmienne systemowe" zawiera opis wszystkich predefiniowanych zmiennych

systemowych.

Rozdział 2 - "Pola" zawiera opis pól obiektów do wyświetlania alarmów standardowych i

rozproszonych, obiektów sterujących okien, oraz opis pól trendów
historycznych i zmiennych.

Rozdział 3 - "Funkcje skryptowe" zawiera opis wbudowanych funkcji tekstowych,

matematycznych, systemowych, historycznych, obiektów sterujących oknami,
funkcji do obsługi alarmów rozproszonych, modułów dodatkowych (Recipe,
SPC Pro, SQL), oraz funkcji różnych.

Konwencja opisu

Przykład

Opis

.ChartStart

Ogólnie ujmując, czcionką pogrubioną oznaczone są
pola, zmienne systemowe i 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.

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

$AccessLevel

bezpieczeństwo

background image

xii

Wprowadzenie

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

Informacje o Instrukcji Użytkownika

W niniejszej instrukcji stosowanych jest szereg symboli, które mają na celu ułatwienie
korzystania z dokumentacji w formie elektronicznej.

! Odwołania tego typu zawierają w rzeczywistości „połączenia” do odpowiednich

punktów i rozdziałów. W celu przejścia do tego punktu lub rozdziału, należy kliknąć to
połączenie. Po przejściu do innego punktu lub rozdziału, można skorzystać z polecenia
"Wstecz", powodującego przejście do pierwotnego miejsca.

" Znak ten informuje, że dodatkowe informacje znajdują się w innych podręcznikach

FactorySuite.

# Znak ten umieszczono obok „Podpowiedzi”, zawierających prostszą lub szybszą

metodę realizacji funkcji lub zadania.

W celu zapoznania się ze środowiskiem edycyjnym programu WindowMaker, oraz jego
narzędziami, należy skorzystać z podręcznika Poradnik użytkownika w formie
elektronicznej.

W celu zapoznania się z oknami, obiektami graficznymi, wizardami, obiektami ActiveX,
itp. należy skorzystać z podręcznika Poradnik użytkownika w formie elektronicznej.

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

Podręcznik FactorySuite System Administrator's Guide zawiera kompletne informacje na
temat elementów składowych pakietu FactorySuite, wymaganiach systemu, omówienie
zagadnień pracy w sieci, integracji produktów, pomocy technicznej, itp.

# Dla każdego komponentu FactorySuite wchodzącego w skład zakupionego przez

Państwa pakietu oprogramowania, dołączona jest wersja komputerowa dokumentacji.
Przykładowo, są to: FactorySuite System Administrator's Guide, SPC PRO,
SQLAccess Manager, Recipe Manager, Industrial SQL Server, InControl, oraz
wszystkie 32- bitowe programy komunikacyjne. w przypadku zakupienia pakietu
FactorySuite+, dostarczana jest również komputerowa wersja dokumentacji dla
komponentów InTrack oraz InBatch.

Wymagane wiadomości

W niniejszej instrukcji przyjęto następujące założenia o użytkowniku:

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

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

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

background image

Wprowadzenie

xiii

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

Pomoc techniczna

Dział Pomocy Technicznej Wonderware oferuje różne metody wsparcia odnośnie
jakichkolwiek produktów Wonderware lub też ich implementacji.

Przed skontaktowaniem się z Działem Pomocy Technicznej, proszę szukać rozwiązania
problemów, mogących wystąpić w czasie korzystania z podręcznika InTouch - Opis
funkcji, pól i zmiennych systemowych
, w podręczniku Poradnik użytkownika. 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, jednostanowiskowa.

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

5. Jakiekolwiek, mogące być pomocne wydruki z Wonderware Logger, narzędzi

diagnostycznych Microsoft Diagnostic (MSD), czy innych aplikacji diagnostycznych.

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

ich wyniki.

7. Szczegółowe informacje podające w jaki sposób można odtworzyć zaistniały problem.

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 wersji komputerowej FactorySuite

System Administrator's Guide.

Informacje o posiadanej licencji FactorySuite

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

# W celu wyświetlenia okna dialogowego About, należy wybrać polecenie About z

menu Help programu WindowMaker.

" Więcej informacji na temat narzędzi do wyświetlania informacji o licencji podano w

FactorySuite System Administrator's Guide.

background image
background image

1-1

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

R O Z D Z I A Ł 1

Zmienne systemowe

InTouch posiada pewną liczbę predefiniowanych zmiennych systemowych. Zmienne te są
automatycznie tworzone przez program InTouch i identyfikowane za pomocą
poprzedzającego je znaku $. Po uruchomieniu 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.

background image

1-2

Rozdział 1

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

$AccessLevel

bezpieczeństwo

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

Sposób użycia

$AccessLevel

Uwagi

Jest to zmienna przeznaczona tylko do odczytu, której wartość determinuje uprawnienia
aktualnie zalogowanego użytkownika. Uprawnienia te dla konkretnego użytkownika
można zmienić z poziomu menu Configure Users programu WindowMaker.

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

Typ danych

Integer (tylko odczyt)

Zakres wartości

Od 0 do 9999

Przykłady

Wyrażenie zamieszczone poniżej umożliwia wyświetlenie obiektu (np. przycisku) na
ekranie (połączenie animacyjne Miscellaneous/ Visibility), w zależności od poziomu
dostępu zalogowanego użytkownika:.

$AccessLevel >= 2000;

Obiekt może mieć również przypisane połączenie animacyjne do deaktywacji, w którym
wykorzystywane jest wyrażenie zawierające zmienną $AccessLevel.

$AccessLevel < 5411;

IF $AccessLevel <=500 THEN

Show "Access Denied";

{Wyświetlenie komunikatu informującego

o braku możliwości

zalogowania}

ELSE

Show "Access Granted";

{Wyświetlenie komunikatu informującego

o możliwości

zalogowania}

ENDIF;

Patrz również

$Operator, $OperatorEntered, $PasswordEntered; $ConfigureUsers

background image

Zmienne systemowe

1-3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

$AlarmLogging

alarmy

Zmienna ta ponownie inicjuje logowanie i wydruk alarmów w czasie pracy aplikacji. Jest
ona równoważna poleceniu Restart Alarm Log z menu Special programu WindowMaker.

Sposób użycia

$AlarmLogging = 1;

Uwagi

Przypisanie tej zmiennej wartości 1 ponownie inicjuje logowanie i wydruk alarmów w
czasie pracy aplikacji.

Uwaga

Zmiennej $AlarmLogging nie można używać do wyłączania logowania lub

drukowania alarmów. Zastępuje ona wyłącznie polecenie Restart Alarm Log z menu
Special

programu WindowViewer. Jeśli wartość zmiennej $AlarmLogging zostanie

wyświetlona, zawsze pokazywane będzie 0 (Off), nawet jeśli aktualnie odbywa się
logowanie. Przypisanie zmiennej $AlarmLogging innej wartości nie ma żadnego
znaczenia, a wynik takiej operacji jest nieokreślony.

Typ danych

Discrete (tylko zapis)

Zakres wartości

1

Przykłady

Instrukcja zamieszczona poniżej realizuje taką samą funkcję jak wybranie polecenia
Restart Alarm Log

z menu Special programu WindowViewer.

$AlarmLogging = 1;

Patrz również

$HistoricalLogging

$AlarmPrinterError

alarmy

Błąd drukarki alarmów.

Sposób użycia

$AlarmPrinterError

Uwagi

Jeśli drukarka alarmów sygnalizuje błąd, zmienna ta przyjmuje wartość 1.

Typ danych

Discrete (tylko odczyt)

Zakres wartości

0 = Drukarka alarmów nie sygnalizuje błędu
1 = Drukarka alarmów sygnalizuje błąd

Przykład

Jeżeli instrukcja zamieszczona poniżej zostanie użyta jako wyrażenie w połączeniu
animacyjnym wyświetlania wartości analogowej, w przypadku wystąpienia błędu w
drukarce alarmów wyświetlona zostanie liczba 1, natomiast w przeciwnym razie
wyświetlona będzie liczba 0.

$AlarmPrinterError

IF $AlarmPrinterError == 1 THEN

DisplayMessageTag = "Error on alarm printer";

ELSE

DisplayMessageTag = "No error on alarm printer";

ENDIF;

background image

1-4

Rozdział 1

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

$AlarmPrinterNoPaper

alarmy

Zmienna ta sygnalizuje brak papieru w drukarce alarmów.

Sposób użycia

$AlarmPrinterNoPaper

Uwagi

Jeśli w drukarce alarmów brakuje papieru, zmienna przyjmuje wartość 1.

Typ danych

Discrete (tylko odczyt)

Zakres wartości

0 = W drukarce alarmów jest papier
1 = W drukarce alarmów brakuje papieru

Przykład

Jeżeli instrukcja zamieszczona poniżej zostanie użyta w połączeniu animacyjnym
wyświetlania wartości analogowej, oraz jeżeli w drukarce będzie brakować papieru,
wyświetlona zostanie wartość 1, w przeciwnym wypadku, wyświetlona zostanie wartość 0.

$AlarmPrinterNoPaper

Zastosowanie w skrypcie warunkowym zdarzenia OnTrue.

Condition:

$AlarmPrinterOffline == 1

Script:

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

$AlarmPrinterOffline

alarmy

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

Sposób użycia

$AlarmPrinterOffline

Uwagi

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

Typ danych

Discrete (tylko odczyt)

Zakres wartości

0 = Drukarka alarmów jest gotowa do pracy

1 = Drukarka alarmów nie jest gotowa do pracy (Offline)

Przykład

Jeżeli wyrażenie zamieszczone poniżej zostanie użyte w połączeniu animacyjnym
wyświetlania wartości analogowej, oraz drukarka alarmów nie jest gotowa do pracy,
wyświetlona zostanie wartość 1, natomiast w przypadku przeciwnym, wyświetlona zostanie
wartość 0.

$AlarmPrinterOffline

IF $AlarmPrinterOffline == 1 THEN

Call PLCHorn( ); {

Funkcja skryptowa powodująca uruchomienie

alarmu dźwiękowego w zakładzie

}

ENDIF;

background image

Zmienne systemowe

1-5

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

$AlarmPrinterOverflow

alarmy

Zmienna ta sygnalizuje przepełnienie bufora drukarki alarmów.

Sposób użycia

$AlarmPrinterOverflow

Uwagi

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

Typ danych

Discrete (tylko odczyt)

Zakres wartości

0 = Bufor drukarki alarmów nie jest całkowicie wypełniony

1 = Bufor drukarki alarmów jest przepełniony

Przykład

Jeżeli wyrażenie zamieszczone poniżej zostanie użyte w połączeniu animacyjnym
wyświetlania wartości analogowej, oraz nastąpi przepełnienie bufora drukarki alarmów,
wyświetlona zostanie wartość 1, natomiast w przypadku przeciwnym wyświetlona zostanie
wartość 0.

$AlarmPrinterOverflow

$ApplicationChanged

aplikacja

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

Sposób użycia

$ApplicationChanged

Uwagi

Zmienna ta jest zawsze inkrementowana w przypadku otrzymania sygnału generowanego
po wybraniu polecenia Notify Clients z menu Special programu WindowViewer. W
przypadku uaktualnienia aplikacji, wartość tej zmiennej ustawiana jest na 0. Zmienna ta
jest stosowana do obsługi aplikacji sieciowych.

Typ danych

Real (tylko odczyt)

Przykład

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
ten powinien powodować wyświetlenie komunikatu, informującego użytkownika o
konieczności ponownego uruchomienia programu WindowViewer w celu uwzględnienia
wprowadzonych zmian.

$ApplicationChanged

background image

1-6

Rozdział 1

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

$ApplicationVersion

aplikacja

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

Sposób użycia

$ApplicationVersion

Uwagi

Brak

Typ danych

Real (tylko odczyt)

Przykład

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

$ChangePassword

bezpieczeństwo

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

Sposób użycia

$ChangePassword

Uwagi

Przypisanie tej zmiennej wartości 1 powoduje wyświetlenie okna dialogowego Change
Password

. Jeżeli okno to zostanie zamknięte, wartość zmiennej jest automatycznie

ustawiana na 0. Przypisanie tej zmiennej wartości innej niż 1 nie ma żadnego znaczenia, a
wynik takiej operacji jest nieokreślony.

Typ danych

Discrete (tylko zapis)

Zakres wartości

1

Przykład

Można utworzyć przycisk powiązany ze zmienną dyskretną, której wciśnięcie powoduje
wyświetlenie okna dialogowego Change Password. Przycisk ten powinien mieć pojedyncze
połączenie powiązane ze zmienną dyskretną. W momencie wciśnięcia tego przycisku
wartość zmiennej systemowej $ChangePassword powinna być ustawiana na 1, powodując
tym samym wyświetlenie okna dialogowego.

Patrz również

$AccessLevel, $OperatorEntered, $PasswordEntered, $Operator, $ConfigureUsers

background image

Zmienne systemowe

1-7

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

$ConfigureUsers

bezpieczeństwo

Zmienna ta służy do wyświetlania okna dialogowego Configure Users. Działanie jest
równoważne wybraniu polecenia Security, a następnie Change Password, z menu Special
programu WindowMaker.

Sposób użycia

$ConfigureUsers

Uwagi

Przypisanie tej zmiennej wartości równej 1 powoduje wyświetlenie okna dialogowego
Configure Users

. Po zamknięciu tego okna, wartość zmiennej jest automatycznie

ustawiana na 0. W celu wyświetlenia tego okna, zmienna $AccessLevel musi mieć wartość
większą od 9000. Przypisanie tej zmiennej wartości innej niż 1 nie ma żadnego znaczenia,
a wynik takiej operacji jest nieokreślony.

Typ danych

Discrete (tylko zapis)

Zakres wartości

1

Przykład

Utworzenie przycisku powiązanego ze zmienną dyskretną pozwala użytkownikowi na
wyświetlenie okna dialogowego Configure Users. Przycisk ten powinien mieć pojedyncze
połączenie powiązane ze zmienną dyskretną, a żądane działanie powinno polegać na
ustawieniu wartości. W momencie wciśnięcia tego przycisku wartość zmiennej systemowej
$Configure Users

powinna być ustawiana na 1, powodując wyświetlenie okna

dialogowego.

Patrz również

$Operator, $OperatorEntered, $ChangePassword, $PasswordEntered, $AccessLevel

$Date

system

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

Sposób użycia

$Date

Uwagi

Brak

Typ danych

Integer (tylko odczyt)

Przykład

StringFromTime(($Date*86400)+($Time/1000),3); {

Wraca aktualną datę

}

background image

1-8

Rozdział 1

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

$DateString

system

Wartością tej zmiennej jest data w formacie określonym w pliku WIN.INI.

Sposób użycia

$DateString

Uwagi

Format daty ustawiany jest za pomocą Panelu sterowania systemu Windows, lub po
podwójnym kliknięciu ikony Zegara, umieszczonej z prawej strony Paska zadań.

Typ danych

Memory message (tylko odczyt)

Przykład

If StringRight($DateString,2)== "00" THEN

LogMessage("The Year 2000!");

ENDIF;

$DateTime

system

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

Sposób użycia

$DateTime

Uwagi

Brak

Typ danych

Real (tylko odczyt)

Przykład

If StringFromTime($DateTime,4)== "Fri" THEN

DisplayMessageTag = "It's Friday!";

ENDIF;

$Day

system

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

Sposób użycia

$Day

Uwagi

Zmienna ta przyjmuje wartości od 1 do 31.

Typ danych

Integer (tylko odczyt)

Przykład

If $Day == 15 THEN

Show "Mid-Month Washdown Window";

ENDIF;

background image

Zmienne systemowe

1-9

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

$HistoricalLogging

dane historyczne

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

z menu Special programu WindowViewer, lub też wybraniu polecenia Stop

Historical Logging

z menu Special programu WindowViewer.

Sposób użycia

$HistoricalLogging

Uwagi

Przypisanie tej zmiennej wartości 0 zatrzymuje rejestrowanie danych historycznych.
Przypisanie tej zmiennej wartości 1 powoduje ponowne rozpoczęcie rejestrowania danych
historycznych. Nie można wznowić rejestrowania danych historycznych za pomocą
zmiennej $HistoricalLogging, o ile rejestrowanie to nie zostało wcześniej skonfigurowane
poprzez wybranie polecenia Configure, a następnie polecenia Historical Logging z menu
Special

programu WindowMaker.

Typ danych

Discrete (odczyt/ zapis)

Przykład

IF (InfoDisk("C",4,$Second)/1024)<50 THEN {Przerwanie rejestrowania

danych historycznych, jeżeli wolna przestrzeń na dysku jest

mniejsza od 50 MB}

$HistoricalLogging = 0;

ENDIF;

Patrz również

$AlarmLogging

$Hour

system

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

Sposób użycia

$Hour

Uwagi

Zmienna ta przyjmuje wartości od 0 do 23.

Typ danych

Integer (tylko odczyt)

Przykład

Skrypt warunkowy zdarzenia On True:

$Hour == 20 AND $Second == 30

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

background image

1-10

Rozdział 1

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

$InactivityTimeout

bezpieczeństwo

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

Sposób użycia

$InactivityTimeout

Uwagi

Zmienna ta przyjmuje wartość 1, gdy upłynął czas po którym użytkownik zostaje
automatycznie wylogowany z aplikacji wskutek braku aktywności. W celu
skonfigurowania tego czasu, z menu Special wybrać Configure, a następnie kliknąć
WindowViewer

, lub rozwinąć grupę Configure w Eksploratorze aplikacji, a następnie

podwójnie kliknąć WindowViewer. Wyświetlone zostanie okno dialogowe
WindowViewer Properties

z aktywną zakładką właściwości General. W grupie

Inactivity

wprowadzić czas w sekundach.

Typ danych

Discrete (tylko odczyt)

Patrz również

$InactivityWarning

Przykład

Skrypt warunkowy zdarzenia On True:

$InactivityTimeout == 1
Script:

Show "You have been logged off window";

$InactivityWarning

bezpieczeństwo

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.

Sposób użycia

$InactivityWarning

Uwagi

Zmienna ta przyjmuje wartość 1, gdy upłynął czas, po którym użytkownik jest ostrzegany
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 wybrać Configure, a następnie kliknąć WindowViewer, lub
rozwinąć grupę Configure w Eksploratorze aplikacji, a następnie podwójnie kliknąć
WindowViewer

. Wyświetlone zostanie okno dialogowe WindowViewer Properties z

aktywną zakładką właściwości General. W grupie Inactivity wprowadzić czas w
sekundach.

Typ danych

Discrete (tylko odczyt)

Przykład

If $InactivityWarning == 1 THEN

Show "You are about to be logged off-window";

ENDIF;

Patrz również

$InactivityTimeOut

background image

Zmienne systemowe

1-11

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

$LogicRunning

system

Zmienna ta monitoruje i/lub steruje wykonywaniem skryptów. Działanie tej zmiennej jest
równoważne wybraniu polecenia Start Logic, lub polecenia Halt Logic z menu Logic
programu WindowViewer.

Uwaga

Nie można przy pomocy tej zmiennej zatrzymać aktualnie wykonywanych funkcji

asynchronicznych, zdefiniowanych przez użytkownika. Można jednakże uniemożliwić
uruchamianie następnych skryptów.

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

$Minute

system

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

Sposób użycia

$Minute

Uwagi

Zmienna ta przyjmuje wartości od 0 do 59.

Typ danych

Integer (tylko odczyt)

Przykład

W wyrażeniu tekstowym połączenia animacyjnego:

IF InfoFile("C:\InTouch.32\WIZ.INI",1,$Minute)==1 THEN

LogMessage("The File Exists!");

ENDIF;

$Month

system

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

Sposób użycia

$Month

Uwagi

Zmienna ta przyjmuje wartości od 1 do 12.

Typ danych

Integer (tylko odczyt)

Przykład

IF $Month==10 THEN

CurrentMonthName = "October";

ENDIF;

background image

1-12

Rozdział 1

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

$Msec

system

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 i Update Time. W celu
zmiany wartości tych parametrów, z menu Special wybrać Configure, a następnie kliknąć
WindowViewer

, lub rozwinąć grupę Configure w Eksploratorze aplikacji, a następnie

podwójnie kliknąć WindowViewer. Wyświetlone zostanie okno dialogowe
WindowViewer Properties

z aktywną zakładką właściwości General:

Sposób użycia

$Msec

Uwagi

Zmienna ta przyjmuje wartości od 0 do 999.

Typ danych

Integer (tylko odczyt)

$NewAlarm

alarmy

Zmienna ta sygnalizuje wystąpienie nowego alarmu.

Sposób użycia

$NewAlarm

Uwagi

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

Typ danych

Discrete (odczyt / zapis)

Przykład

Zmienną tę można powiązać z funkcją logiczną PlaySound, powodując uruchomienie
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.

$ObjHor

system

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

Sposób użycia

$ObjHor

Uwagi

Brak

Typ danych

Integer (tylko odczyt)

Patrz również

$ObjVer

background image

Zmienne systemowe

1-13

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

$ObjVer

system

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

Sposób użycia

$ObjVer

Uwagi

Brak

Typ danych

Integer (tylko odczyt)

Patrz również

$ObjHor

$Operator

bezpieczeństwo

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

Sposób użycia

$Operator

Uwagi

Wartość tej zmiennej reprezentuje nazwę aktualnie zalogowanego operatora.

Typ danych

Message (tylko odczyt)

Przykład

Dostęp do określonego okna może być kontrolowany przy pomocy następującego skryptu:.

IF $Operator == "DayShift" THEN

Show "

Control Panel Window

"

;

ELSE Show "Wrong Operator";

ENDIF;

Patrz również

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

background image

1-14

Rozdział 1

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

$OperatorEntered

bezpieczeństwo

Zmienna ta służy do wprowadzania nazwy użytkownika.

Sposób użycia

$OperatorEntered

Uwagi

Umożliwia utworzenie okna użytkownika do logowania. Powiązanie z tą zmienną
obiektów do wprowadzania danych reagujących na dotyk 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 (odczyt/zapis)

Patrz również

$AccessLevel, $Operator, $PasswordEntered, $ChangePassword, $ConfigureUsers

$PasswordEntered

bezpieczeństwo

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

Sposób użycia

$PasswordEntered

Uwagi

Zmienna ta jest zawsze odczytywana jako pusty łańcuch znaków. Połączenia animacyjne
wyświetlające wartość zmiennej $PasswordEnetered zawsze wyświetlają pusty łańcuch
znaków. Z tego powodu skrypty uaktywniane zmianą wartości danych 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 dotyk i/lub skryptów umożliwia wprowadzenie przez
użytkownika hasła.

Uwaga:

Gdy zmienna $OperatorEntered przyjmuje dozwoloną wartość, zmienne

systemowe $AccessLevel i $Operator zostaną ustawione na predefiniowane wartości.

Typ danych

Message (tylko zapis)

Patrz również

$AccessLevel, $Operator, $OperatorEntered, $ChangePassword, $ConfigureUsers

background image

Zmienne systemowe

1-15

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

$Second

system

Wartością tej zmiennej jest bieżąca sekunda.

Sposób użycia

$Second

Uwagi

Zmienna ta przyjmuje wartości od 0 do 59.

Typ danych

Integer (tylko odczyt)

Przykład

Wave=100*Sin(6*$Second);

$StartDdeConversations

system

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

Sposób użycia

$StartDdeConversations

Uwagi

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

Typ danych

Discrete (odczyt / zapis)

$System

alarmy

Standardowa, nadrzędna grupa alarmowa.

Sposób użycia

$System

Uwagi

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

Typ danych

System Alarm Group (tylko odczyt)

Przykład

$System.Ack = 1;{Zatwierdzenie wszystkich alarmów}

background image

1-16

Rozdział 1

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

$Time

system

Wartością tej zmiennej jest czas w milisekundach, który upłynął od północy.

Sposób użycia

$Time

Uwagi

Brak

Typ danych

Integer (tylko odczyt)

Przykład

Sec_Midnight = $Time/1000;{Liczba sekund, które upłynęły licząc od
północy}

$TimeString

system

Wartością tej zmiennej jest czas w formacie określonym w pliku WIN.INI.

Sposób użycia

$TimeString

Uwagi

Format czasu ustawiany jest za pomocą Panelu sterowania systemu Windows, lub po
podwójnym kliknięciu ikony Zegara, umieszczonej z prawej strony Paska zadań.

Typ danych

String (tylko odczyt)

Przykład

BatchStartString = $TimeString;

$Year

system

Wartością tej zmiennej jest bieżący rok w czterocyfrowym formacie.

Sposób użycia

$Year

Uwagi

Podaje rok w następującym formacie:

1990

Typ danych

Integer (tylko odczyt)

Przykład

CurrentYear = $Year;

NoYrsTill2000 = 2000 - CurrentYear;

background image

2-1

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

R O Z D Z I A Ł 2

Pola

InTouch wykorzystuje pola do monitorowania i modyfikacji właściwości takich obiektów
jak zmienne, trendy historyczne oraz obiekty sterujące Windows. Pola te mogą być
wykorzystane do monitorowania i zmiany 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 okien, oraz obiektów związanych z
alarmowaniem rozproszonym, korzystają ze 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 lub w połączeniu
animacyjnym. Na przykład, aby umożliwić w czasie pracy aplikacji zmianę górnego progu
alarmowego HiHiLimit zmiennej o nazwie Analog_Tag, można utworzyć przycisk z
połączeniem do wprowadzania wartości, a jako wyrażenie wprowadzić
Analog_Tag.HiHiLimit. W czasie pracy aplikacji operator może kliknąć na ten przycisk i
wpisać nową wartość górnego progu alarmowego zmiennej Analog_Tag.

Obiekty sterujące okien 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).
W celu uniknięcia mylenia z polami zmiennych programu InTouch, obiekty sterujące okien
i obiekty do obsługi alarmów rozproszonych zostały wymienione pod koniec tego
rozdziału. Funkcje te mogą być również stosowane w skryptach, oraz w połączeniach
animacyjnych w celu uzyskania dostępu do określonych właściwości tych obiektów.

! Więcej informacji na temat korzystania z funkcji skryptowych GetProperty i

SetProperty podano w Rozdziale 3 niniejszego podręcznika.

background image

2-2

Rozdział 2

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

Typy zmiennych

Przy definiowaniu nowej zmiennej w bazie danych InTouch, należy określić jej typ.
Przykładowo, jeżeli wartość zmiennej jest ustawiana lub odczytywana przez inne aplikacje
Windows jak na przykład program komunikacyjny, należy zadeklarować zmienną typu I/O.
Poniżej opisano wszystkie typy zmiennych oraz sposób ich wykorzystywania.

Zmienne typu pamięciowego (Memory)

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

Memory Discrete

Zmienna dyskretna o wartości 0 (False, Off), lub 1 (True, On).

Memory Integer

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

Memory Real

Zmienna typu rzeczywistego. Zmienna ta może mieć wartość w przedziale

±

3.4e

38

.

Wszystkie obliczenia na zmiennych tego typu wykonywane są z dokładnością do 64-
bitową, a zapamiętywane z dokładnością do 32 bitów.

Memory Message

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

background image

Pola

2-3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

Zmienne typu I/O

Wszystkie zmienne, które czytają lub zapisują wartości w innym programie pracującym w
systemie Windows są zmiennymi typu I/O. Obejmuje to wymianę danych z
programowalnymi sterownikami logicznymi, 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 i za pomocą protokołu komunikacyjnego SuiteLink.
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. Istnieją cztery rodzaje zmiennych typu I/O:

I/O Discrete

Zmienna I/O o wartości 0 (False, Off), lub 1 (True, On).

I/O Integer

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

I/O Real

Zmienna typu rzeczywistego. Zmienna ta może mieć wartość w przedziale

±

3.4e

38

.

Wszystkie obliczenia na zmiennych tego typu wykonywane są z dokładnością do 64-bitów,
a zapamiętywane z dokładnością do 32 bitów.

I/O Message

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

Zmienne typu pośredniego(Indirect): dyskretne,
analogowe, tekstowe

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.

background image

2-4

Rozdział 2

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

Pozostałe typy zmiennych

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

Group Var (Zmienne grupowe)

Ten typ wykorzystywany jest w zmiennych z przyporządkowaną grupą alarmową, do
dynamicznego wyświetlania alarmów, rejestracji zapisu na dysk i drukowania. Zmienna
typu Group Var może być wykorzystana do tworzenia okien alarmowych, lub rejestracji
alarmów, wyświetlających wszystkie alarmy powiązane z określoną grupą zmiennych.
Można również sterować wyświetlanymi lub zarejestrowanymi alarmami poprzez
przyporządkowanie innej Grupy Alarmowej do zmiennej typu Group Var.

Zmienne grupowe typu Group Var mogą być również użyte do tworzenia przycisków
służących do selektywnego wyświetlania alarmów dla różnych instalacji w jednym oknie
alarmowym. Wszystkie pola zmiennych związane z Grupami alarmowymi są również
dostępne w zmiennych typu Group Var.

" Więcej informacji na temat alarmów podano w podręczniku w wersji elektronicznej

Poradnik użytkownika.

Hist Trend (Trend historyczny)

Typ Hist Trend jest wymagany do tworzenia trendów historycznych. Wszystkie pola
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.

Zmienne typu SuperTag

InTouch pozwala na definiowanie szablonów SuperTag, wykorzystywanych do tworzenia
złożonych typów zmiennych. Szablony SupetTags 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 w wersji elektronicznej

Poradnik użytkownika.

Zestawienie typów pól zmiennych

Tabela pokazana na następnej stronie stanowi rodzaj skrótowego poradnika, określającego
typy pól zmiennych. Podany poniżej przypis odnosi się do tabeli zamieszczonej na
następnej stronie.

*Obsługiwane wyłącznie przez program InTouch v. 7.0. Jeżeli pola te mają być przesyłane
z stacji klienckiej jako zmienne typu I/O, stacja serwera dołącza do nich informacje o
czasie wysłania wartości do stacji klienckiej. Jeżeli jednak wartość tych pól przesyłana jest
przez stację lokalną, zawsze ustawiana jest jakość GOOD, a czas na NO. Oznacza to, że
czas zmiany wartości przez skrypty lub połączenia NIE JEST pamiętany.

background image

Pola

2-5

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

background image

2-6

Rozdział 2

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.Ack

alarmy

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

Sposób użycia

Tagname.Ack=1

Parametry

Opis

Tagname

Dowolna zmienna typu Discrete, Integer , Real, Indirect Analog lub
Group Variable.

Uwagi

Przypisanie omawianemu polu zmiennej 1 powoduje zatwierdzenie wszystkich aktywnych
alarmów, które są związane z daną zmienną lub grupą. Jeśli podana zmienna jest zmienną
typu Group Var lub Grupą alarmową, wszystkie nie zatwierdzone alarmy związane ze
zmiennymi wchodzącymi w skład określonej grupy zostają zatwierdzone. W przypadku
gdy zmienna jest innego typu niż Group Var, zatwierdzane są wyłącznie alarmy powiązane
z daną zmienną. Przypisanie omawianemu polu wartości różnej od 1 nie ma żadnego
znaczenia, a wynik takiej operacji jest nieokreślony.

Typ danych

Discrete (odczyt/zapis)

Zakres wartości

1

Przykłady

Podane poniżej wyrażenie powoduje zatwierdzenie alarmu związanego ze zmienną o
nazwie Tag1.

Tag1.Ack=1;

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

PumpStation.Ack=1;

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

StationAlarms.Name = "PumpStation";

Zdefiniowana została zmienna StationAlarms typu GroupVar, 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 zatwierdzania wszystkich nie zatwierdzonych alarmów w grupie alarmów PumpStation,
która powiązana jest aktualnie ze zmienną typu GroupVar o nazwie StationAlarms.

StationAlarms.Ack=1;

Uwaga

. Polem o wartości przeciwnej do .Ack jest pole .Unack. W przypadku wystąpienia

nie zatwierdzonego alarmu, pole .Unack ustawiane jest na 1. Pole to może zostać następnie
wykorzystane w połączeniu animacyjnym lub skrypcie warunkowym do wyświetlania
komunikatów o niezatwierdzonych alarmach.

Patrz również

.Alarm and .Unack

background image

Pola

2-7

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.Alarm

alarmy

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

Sposób użycia

Tagname.Alarm

Parametry

Opis

Tagname

Dowolna zmienna typu Discrete, Integer , Real, Indirect Analog lub
Group Variable.

Uwagi

Pole to, przeznaczone wyłącznie do odczytu, ma zwykle przypisaną wartość 0. Gdy
wartość zmiennej, z którą pole jest skojarzone przekracza zadany próg alarmowy, wartość
pola zostaje zmieniona przez system na 1. Pole to ma wartość równą 1 do czasu, gdy
zniknie przyczyna alarmu. Jeśli dana zmienna jest zmienną grupową (Group Var), lub jest
nazwą grupy alarmowej, polu .Alarm zostaje przypisana wartość 1 zawsze, gdy
którakolwiek ze zmiennych należących do tej grupy znajdzie się w stanie alarmowym.
Dostępne jest również pole .Normal, o wartości przeciwnej do wartości pola .Alarm.

Typ danych

Discrete (tylko odczyt)

Zakres wartości

0 lub 1

Przykłady

Zamieszczone poniżej wyrażenie sprawdza, czy zmienna "Tag1" jest w stanie alarmowym.

IF (Tag1.Alarm == 1) THEN

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

IF (PumpStation.Alarm == 1) THEN

MyAlarmMessage="The pumping station currently has an ALARM!";

ENDIF;

Pole to nie jest powiązane z polami .Ack i .Unack. Z tego powodu, nawet jeżeli aktywny
alarm zostanie zatwierdzony, wartość pola .Alarm pozostaje równa 1.

Patrz również

.Ack, .Normal, Ack()

background image

2-8

Rozdział 2

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.AlarmDevDeadband

alarmy

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.

Sposób użycia

Tagname.AlarmDevDeadband

Parametry

Opis

Tagname

Dowolna zmienna typu Discrete, Integer , Real, Indirect Analog lub
Group Var.

Uwagi

Zaznaczenie opcji Retentive Parameters 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

Od 0 do 100 (integer)

Przykład

Zamieszczone poniżej wyrażenie powoduje zmianę procentowego pola nieczułości na 25%.

Tagname.AlarmDevDeadband=25;

Patrz również

.AlarmValDeadband

background image

Pola

2-9

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.AlarmEnabled

alarmy

Pole to umożliwia włączanie i/lub wyłączanie sygnalizowania alarmów i zdarzeń dla
zmiennej.

Sposób użycia

Tagname.AlarmEnabled

Parametry

Opis

Tagname

Dowolna zmienna typu Discrete, Integer, Real, Indirect Analog lub
GroupVar.

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.

Typ danych

Discrete (odczyt/zapis)

Zakres wartości

0 = Wyłączenie sygnalizacji alarmów i zdarzeń

1 = Włączenie sygnalizacji alarmów i zdarzeń (ustawienie domyślne)

Przykłady

Przykładowa instrukcja zamieszczona poniżej włącza sygnalizowanie wszystkich zdarzeń i
alarmów dla zmiennej o nazwie Tag1.

Tag1.AlarmEnabled=0;

Wyrażenia zawarte w poniższej instrukcji IF-THEN będą wykonywane jeżeli dla grupy
alarmów o nazwie "PumpStation" włączona została sygnalizacja zdarzeń i alarmów.

IF (PumpStation.AlarmEnabled == 1) THEN

MyAlarmMessage="The Events and Alarms for the Pump
Station are enabled"

ENDIF;

Patrz również

.Alarm

background image

2-10

Rozdział 2

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.AlarmValDeadband

alarmy

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

Sposób użycia

Tagname.AlarmValDeadband

Parametry

Opis

Tagname

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

Uwagi

Zaznaczenie opcji Retentive Parameters 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 zakresie wartości skonfigurowanym dla danej zmiennej.

Przykład

Przykładowa instrukcja zamieszczona poniżej zmienia wartość strefy nieczułości alarmu
dla zmiennej Tag1 na 25.

Tag1.AlarmValDeadband=25;

Patrz również

.AlarmDevDeadband

background image

Pola

2-11

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.ChartLength

dane historyczne

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

Sposób użycia

Tagname.ChartLength

Parametry

Opis

Tagname

Dowolna zmienna typu Hist Trend.

Uwagi

Pole to, przeznaczone do odczytu i zapisu, jest używane do zmiany (lub weryfikacji)
długości okna wykresu trendu historycznego. Wartość tego parametru jest wyrażona w
sekundach. Długość definiowana jest jako okres czasu wyświetlany na wykresie trendu
historycznego. Dokładniej ujmując, wzór na obliczenie długości wykresu trendu
historycznego ma następującą postać:

ChartLength=(Date/Time Stamp on Right-Hand Side of Chart) -
(Date/Time Stamp on Left-Hand Side of Chart);

Ponieważ parametry Date/ Time wyrażone są w sekundach które upłynęły od 1/1/70,
wynikiem obliczeń jest "liczba sekund wyświetlanych pomiędzy lewą a prawą krawędzią
wykresu".

Zawsze przy dodawaniu lub odejmowaniu wartości od pola .ChartLength należy
pamiętać, że jego wartość wyrażona jest w sekundach. Zatem, jeżeli należy odjąć "2
godziny" od bieżącej wartości pola .ChartLength, należy wcześniej zamienić "2 godziny"
na liczbę sekund, tzn. (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

Zamieszczone poniżej wyrażenie ustawia długość wykresu na 1 godzinę:

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

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

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

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

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

Patrz również

.ChartStart

background image

2-12

Rozdział 2

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.ChartStart

dane historyczne

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

Sposób użycia

Tagname.ChartLength

Parametry

Opis

Tagname

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 to zawiera
liczbę sekund, które upłynęły od północy, 1 stycznia 1970. Punkt początkowy jest datą/
godziną, przedstawianą na początku osi wykresu trendu historycznego.

Typ danych

Integer (odczyt/zapis)

Zakres wartości

Dowolna dodatnia liczba całkowita.

Przykład

Zamieszczone poniżej wyrażenie przesuwa początek wykresu w prawo, o 1 minutę:

HtTagname.ChartStart=HtTagname.ChartStart + 60;

.Comment

zmienna

Pole to zawiera komentarz wprowadzony dla danej zmiennej podczas jej definiowania na
Liście zmiennych.

Sposób użycia

Tagname.Comment

Parametry

Opis

Tagname

Dowolna zmienna.

Uwagi

Chociaż pole to w programie WindowMaker przeznaczone jest wyłącznie do odczytu, jego
wartość może zostać zmieniona w trakcie wykonywania aplikacji (wyłącznie w pamięci).
Po zamknięciu aplikacji i ponownym jej uruchomieniu, przywracana jest stara wartość pola
komentarza. 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 131 znaków. Porównać z zamieszczoną
poniżej uwagą odnośnie dopuszczalnej liczby znaków.

Uwaga

Pole komentarza zmiennej może zostać zmienione wyłącznie z poziomu Listy

zmiennych. Wprowadzenie do pola .Comment nowej wartości w trakcie wykonywania
aplikacji nie powoduje zmiany wartości tego pola, zapisanej na Liście zmiennych. Długość
komentarza wprowadzanego z poziomu Listy zmiennych nie może przekroczyć 131
znaków, oraz nie może przekroczyć 50 znaków w przypadku wprowadzania komentarza w
trakcie pracy aplikacji.

Przykład

W podanym poniżej wyrażeniu tworzony jest łańcuch znaków (wartość zmiennej
tekstowej) zawierający nazwę zmiennej, oraz tekst wprowadzony 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 bazy danych zmiennych.

background image

Pola

2-13

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.DevTarget

alarmy

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.

Sposób użycia

Tagname.DevTarget

Parametry

Opis

Tagname

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

Uwagi

Zaznaczenie opcji Retentive Parameters 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

Przykładowa instrukcja zamieszczona poniżej zmienia wartość pola .DevTarget zmiennej
MyTag

na 500.

MyTag.DevTarget=500;

.DisplayMode

dane historyczne

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

Sposób użycia

Tagname.DisplayMode

Parametry

Opis

Tagname

Dowolna zmienna typu Hist Trend.

Uwagi

Brak

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

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

MyHistTrendTag.DisplayMode=3;

background image

2-14

Rozdział 2

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.EngUnits

zmienna

Pole to umożliwia użytkownikowi odwoływanie się do jednostek inżynierskich zmiennej
analogowej, zgodnie z ich definicją wprowadzoną na Liście zmiennych.

Sposób użycia

Tagname.EngUnits

Parametry

Opis

Tagname

Dowolna zmienna typu, Integer , Real, lub 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)

Zakres wartości

Dowolny łańcuch znaków zawierający od 0 do 31 znaków.

Przykład

IF Temperature.EngUnits == "Celsius" THEN

CALL TempConvert(Temperature);{A Quick Function which might be

used to convert Celsius to Fahrenheit}
ENDIF;

.HiHiLimit

alarmy

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

Sposób użycia

Tagname.HiHiLimit

Parametry

Opis

Tagname

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

Uwagi

Zaznaczenie opcji Retentive Parameters 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

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, .Ack, .LoLimit, .LoLoLimit, .HiLimit, .HiStatus, .HiHiStatus

background image

Pola

2-15

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.HiHiStatus

alarmy

Pole to określa, czy w systemie aktywny jest drugi wysoki alarm progowy HiHiLimit.

Sposób użycia

Tagname.HiHiStatus

Parametry

Opis

Tagname

Dowolna zmienna typu, Integer , Real, lub 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 alarmu związanego z
daną zmienną.

Typ danych

Discrete (tylko odczyt)

Zakres wartości

0 = Stan alarmowy nie występuje

1 = Stan alarmowy występuje

Przykład

Przykładowa instrukcja warunkowa IF-THEN zamieszczona poniżej zostanie wykonana
tylko wtedy, gdy pole .HiHiStatus zmiennej o nazwie MyTag przyjmie wartość 1. Jeżeli
dla zmiennej MyTag uruchomiony zostanie alarm progowy HiHi, wykonane zostaną
wyrażenia zamieszczone w instrukcji IF-THEN.

IF (MyTag.HiHiStatus == 1) THEN
OperatorMessage="MyTag has gone into High-High Alarm";

ENDIF;

Patrz również

.Alarm, .Ack, .LoLimit, .LoLoLimit, .HiLimit, .HiHiLimit, HiStatus

background image

2-16

Rozdział 2

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.HiLimit

alarmy

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

Sposób użycia

Tagname.HiLimit

Parametry

Opis

Tagname

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

Uwagi

Zaznaczenie opcji Retentive Parameters 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

Temperature.HiLimit = 212;

Patrz również

.Alarm, .Ack, .LoLimit, .LoLoLimit, .HiHiLimit, HiStatus, .HiHiStatus

.HiStatus

alarmy

Pole to określa, czy w systemie występuje pierwszy górny alarm progowy (HiLimit).

Sposób użycia

Tagname.HiStatus

Parametry

Opis

Tagname

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

Uwagi

Wartość tego pola przeznaczonego wyłącznie do odczytu jest zwykle równa 0,a w
przypadku wystąpienia alarmu progowego typu Hi dla zmiennej z którą pole to jest
skojarzone, 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 alarmu związanego z daną zmienną.

Typ danych

Discrete (tylko odczyt)

Zakres wartości

0 = Stan alarmowy nie występuje

1 = Stan alarmowy występuje

Przykład

IF (MotorAmps.HiStatus == 1) THEN

CALL PumpShutdown( ); {Funkcja skryptowa, wyłączająca

silnik}

ENDIF;

Patrz również

.Alarm, .Ack, .LoLimit, .LoLoLimit, .HiLimit, .HiHiLimit, .HiHiStatus

background image

Pola

2-17

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.LoLimit

alarmy

Pole to służy do monitorowania i/lub zmiany pierwszej dolnej wartości progowej (LoLimit)
dla alarmu progowego.

Sposób użycia

Tagname.LoLimit

Parametry

Opis

Tagname

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

Uwagi

Zaznaczenie opcji Retentive Parameters 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

Zamieszczone poniżej wyrażenie powoduje zmniejszenie wartości pola LoLimit (alarmu
progowego) o 10.

MyTag.LoLimit=MyTag.LoLimit - 10;MyTag.LoLimit=MyTag.LoLimit - 10;

Patrz również

.Alarm, .Ack, .LoLoLimit, .LoStatus, .HiLimit, .HiHiLimit, HiStatus, .HiHiStatus

.LoLoLimit

alarmy

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

Sposób użycia

Tagname.LoLoLimit

Parametry

Opis

Tagname

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

Uwagi

Zaznaczenie opcji Retentive Parameters 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

Zamieszczone poniżej wyrażenie powoduje zmniejszenie wartości pola LoLoLimit (alarmu
progowego) o 10.

MyTag.LoLoLimit=MyTag.LoLoLimit - 10;

Patrz również

.Alarm, .Ack, .LoLimit, .HiLimit, .HiHiLimit, HiStatus, .HiHiStatus

background image

2-18

Rozdział 2

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.LoLoStatus

alarmy

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

Sposób użycia

Tagname.LoLoStatus

Parametry

Opis

Tagname

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

Uwagi

Wartość tego pola przeznaczonego wyłącznie do odczytu jest zwykle równa 0. Jeżeli
wystąpi alarm progowy 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 alarmu związanego z daną zmienną.

Typ danych

Discrete (tylko odczyt)

Zakres wartości

0 = Stan alarmowy nie występuje

1 = Stan alarmowy występuje

Przykład

Przykładowa instrukcja warunkowa IF-THEN zamieszczona poniżej zostanie wykonana
tylko wtedy, gdy pole .LoLoStatus zmiennej o nazwie MyTag ma wartość 1. Jeżeli dla
zmiennej MyTag uruchomiony zostanie alarm progowy LoLo, wykonane zostaną
wyrażenia zamieszczone w instrukcji IF-THEN.

IF (MyTag.LoLoStatus == 1) THEN
OperatorMessage="MyTag has gone into Low-Low Alarm";

ENDIF;

Patrz również

.Alarm, .Ack, .LoLimit, .LoLoLimit, .HiLimit, .HiHiLimit, HiStatus, .HiHiStatus

background image

Pola

2-19

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.LoStatus

alarmy

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

Sposób użycia

Tagname.LoStatus

Parametry

Opis

Tagname

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

Uwagi

Wartość tego pola przeznaczonego wyłącznie do odczytu jest zwykle równa 0. Jeżeli
wystąpi alarm progowy typu Lo 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 alarmu związanego z daną zmienną.

Typ danych

Discrete (tylko odczyt)

Zakres wartości

0 = Stan alarmowy nie występuje

1 = Stan alarmowy występuje

Przykład

IF (WaterLevelTank1.LoStatus == 1) THEN

PumpShutdown = 1;
WaterFillValue = 1;

ENDIF;

Patrz również

.Alarm, .Ack, .LoLimit, .LoLoLimit, .HiLimit, .HiHiLimit, HiStatus, .HiHiStatus

.MajorDevPct

alarmy

Monitoruje i/lub zmienia wartość procentowego odchylenia dla alarmu.

Sposób użycia

Tagname.MajorDevPct

Parametry

Opis

Tagname

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

Uwagi

Zaznaczenie opcji Retentive Parameters na Liście zmiennych powoduje automatyczne
zapisywanie zmian wartości tego pola przez połączenia animacyjne lub skrypty programu
WindowViewer.

Typ danych

Integer (odczyt/zapis)

Zakres wartości

Od 0 do 100%

Przykład

Przykładowe wyrażenie zamieszczone poniżej zmienia wartość pola .MajorDeviation
zmiennej MyTag na 25%.

MyTag.MajorDevPct=25;

Patrz również

.MajorDevStatus

background image

2-20

Rozdział 2

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.MajorDevStatus

alarmy

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

Sposób użycia

Tagname.MajorDevStatus

Parametry

Opis

Tagname

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

Uwagi

Wartość tego pola przeznaczonego wyłącznie do odczytu jest zwykle równa 0. W
przypadku wystąpienia alarmu odchyleniowego 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.

Typ danych

Discrete (tylko odczyt)

Zakres wartości

0 = Stan alarmowy nie występuje

1 = Stan alarmowy występuje

Przykład

Przykładowa instrukcja warunkowa IF-THEN zamieszczona poniżej zostanie wykonana
tylko wtedy, gdy wartość pola .HiHiStatus zmiennej o nazwie MyTag jest równa 1.
Inaczej ujmując, jeżeli dla zmiennej MyTag uruchomiony zostanie alarm dużego
odchylenia, wykonane zostaną wyrażenia zamieszczone w instrukcji IF-THEN.

IF (MyTag.MajorDevStatus == 1) THEN
OperatorMessage="MyTag has gone into a Major 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 alarmu związanego z daną zmienną.

Patrz również

.MajorDevPct

background image

Pola

2-21

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.MaxEU

zmienna

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

Sposób użycia

Tagname.MaxEU

Parametry

Opis

Tagname

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

Uwagi

Wartość odczytana z programu komunikacyjnego uważana jest za ŹRÓDŁOWĄ (RAW),
jeżeli została ona przysłana do programu WindowViewer po raz pierwszy. Wartości
źródłowe mogą wymagać skalowania. Do skalowania wartości źródłowych 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ł
(wykorzystując wewnętrzny przetwornik analogowo-cyfrowy) na wartość całkowitą z
zakresu od 0 do 4096. Wartość ta jest zapisywana jako zmienna o nazwie
PoziomZbiornika2.

Wyświetlenie wartości "źródłowej " (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ść RAW 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 poprawnych wartości na ekranie, należy wprowadzić następujące
instrukcje:

Minimum Raw=0,Maximum Raw = 4096

Minimum Engineering Units=0,Maximum Engineering Units=100

Po wprowadzeniu tych instrukcji, jeżeli wartość RAW pola będzie równa 4096, na ekranie
wyświetlona zostanie liczba 100.

Typ danych

Real (tylko odczyt)

Zakres wartości

Zależy od typu zmiennej.

Przykład

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ż

.MinEU, .MinRaw, .MaxRaw, .RawValue

background image

2-22

Rozdział 2

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.MaxRange

dane historyczne

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

Sposób użycia

Tagname.MaxRange

Parametry

Opis

Tagname

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

Pola .MaxRange i .MinRange mogą przyjmować wartości z przedziału od 0 do 100.
Wartości pól .MinRange i .MaxRange wyrażane są w procentach. Wartość .MinRange
musi być mniejsza od .MaxRange. Jeżeli do jednego z tych pól zostanie przypisana
wartość mniejsza od 0 lub większa od 100, zostanie ona automatycznie zmieniona
odpowiednio na 0 lub 100. Jeżeli wartość podana w polu .MinRange będzie większa lub
równa wartości podanej w polu .MaxRange, na trendzie nie będą wyświetlane żadne dane.

Przykład

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

MyHistTrendTag.MaxRange=25;

Patrz również

.ChartStart, .ChartLength, .DisplayMode, .MinEU, .MaxEU

background image

Pola

2-23

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.MaxRaw

zmienna

Pole to zawiera górną wartość graniczną dla rzeczywistej wartości źródłowej odczytywanej
z programu komunikacyjnego przez program WindowViewer, pracujący jako klient.
Wartość pola .MaxRaw określana jest na podstawie definicji maksymalnej wartości
źródłowej zmiennej, podanej na Liście zmiennych. Każda zmienna o większej wartości
zostaje zmniejszona do wartości tego pola.

Sposób użycia

Tagname.MaxRaw

Parametry

Opis

Zmienna

Dowolna zmienna typu I/O Discrete, Indirect Discrete, I/O Integer,
Memory Real, Indirect Analog, I/O Message lub Indirect Message.

Uwagi

Pole to przeznaczone wyłącznie do odczytu wykorzystywane jest do wyświetlania górnej
wartości granicznej dla zmiennej źródłowej.

Typ danych

Dowolna zmienna typu Integer lub Real (przeznaczona wyłącznie do odczytu).

Zakres wartości

Dowolna zmienna analogowa.

Przykład

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ż

.MinRaw, .RawValue, .MinEU, .MaxEU

background image

2-24

Rozdział 2

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.MinEU

zmienna

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

Sposób użycia

Tagname.MinEU

Parametry

Opis

Tagname

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

Uwagi

Wartość odczytana z programu komunikacyjnego uważana jest za ŹRÓDŁOWĄ (RAW),
jeżeli została ona przysłana do programu WindowViewer po raz pierwszy. Wartości
źródłowe mogą wymagać skalowania. Do skalowania wartości źródłowych 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 jest zapisywana jako zmienna o nazwie PoziomZbiornika2.

Wyświetlenie wartości "źródłowej " (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ść RAW 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 = 4096

Minimum Engineering Units=0,Maximum Engineering Units=100

Po wprowadzeniu tych instrukcji, jeżeli wartość RAW pola będzie równa 4096, na ekranie
wyświetlona zostanie liczba 100.

Typ danych

Real (tylko odczyt)

Zakres wartości

Zależy od typu rozważanej zmiennej.

Przykład

AbsoluteTagRange = (Tag.MaxEU - Tag.MinEU);

Patrz również

.MaxEU, .MinRaw, .MaxRaw, .RawValue

background image

Pola

2-25

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.MinorDevPct

alarmy

Sposób użycia

Tagname.MinorDevPct

Parametry

Opis

Tagname

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

Uwagi

Zaznaczenie opcji Retentive Parameters na Liście zmiennych powoduje automatyczne
zapisywanie zmian wartości tego pola przez połączenia animacyjne lub skrypty programu
WindowViewer.

Typ danych

Integer (odczyt/zapis)

Zakres wartości

Od 0 do 100%

Przykład

Przykładowe wyrażenie zamieszczone poniżej zmienia wartość pola .MinorDevPct
zmiennej o nazwie MyTag na 25%.

MyTag.MinorDevPct=25;

Patrz również

.MinorDevStatus

background image

2-26

Rozdział 2

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.MinorDevStatus

alarmy

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

Sposób użycia

Tagname.MinorDevStatus

Parametry

Opis

Tagname

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

Uwagi

Wartość tego pola przeznaczonego wyłącznie do odczytu jest zwykle równa 0. W
przypadku wystąpienia alarmu odchyleniowego 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.

Typ danych

Discrete (tylko odczyt)

Zakres wartości

0 = Stan alarmowy nie występuje

1 = Stan alarmowy występuje

Przykład

Przykładowa instrukcja warunkowa IF-THEN zamieszczona poniżej zostanie wykonana
tylko wtedy, gdy wartość pola .MinorDevStatus ("Alarm małego odchylenia wartości)
zmiennej o nazwie MyTag jest równa 1. Inaczej ujmując, jeżeli dla zmiennej MyTag
uruchomiony zostanie alarm małego odchylenia wartości, wykonane zostaną wyrażenia
zamieszczone w instrukcji IF-THEN.

IF (MyTag.MinorDevStatus == 1) THEN
OperatorMessage="MyTag has gone into a Minor Deviation Alarm";
ENDIF;

Uwagi

Pole to jest często używane w połączeniu z polami .Alarm oraz .Ack, w celu określenia
dokładnej przyczyny generowania alarmu dla danej zmiennej.

Patrz również

.MinorDevPct

background image

Pola

2-27

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.MinRange

dane historyczne

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

Sposób użycia

Tagname.MinRange

Parametry

Opis

Tagname

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

Pola .MaxRange i .MinRange mogą przyjmować wartości z przedziału od 0 do 100.
Wartości pól .MinRange i .MaxRange wyrażane są w procentach. Wartość .MinRange
musi być mniejsza od .MaxRange. Jeżeli do jednego z tych pól zostanie przypisana
wartość mniejsza od 0 lub większa od 100, zostanie ona automatycznie zmieniona
odpowiednio na 0 lub 100. Jeżeli wartość podana w polu .MinRange będzie większa lub
równa wartości podanej w polu .MaxRange, na trendzie nie będą wyświetlane żadne dane.

Przykład

TotalChartHeight=MyHistTrendTag.MaxRange - MyHistTrendTag.MinRange;

Patrz również

.ChartStart, .ChartLength, .DisplayMode, .MinEU, .MaxEU, .MaxRange

background image

2-28

Rozdział 2

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.MinRaw

zmienna

Minimalna wartość zmiennej źródłowej odczytywanej z programu komunikacyjnego przez
program WindowViewer pracujący jako klient. Wartość pola .MinRaw jest wprowadzana
na Liście zmiennych w polu Min Raw, w czasie definiowania zmiennej typu I/O. Każdej
zmienna o mniejszej wartości przypisywana będzie wartość tego pola.

Sposób użycia

Tagname.MinRaw

Parametry

Opis

Tagname

Dowolna zmienna typu I/O Discrete, Indirect Discrete, I/O Integer,
Memory Real, Indirect Analog, I/O Message lub Indirect Message.

Uwagi

Pole to, przeznaczone wyłącznie do odczytu, wykorzystywane do wyświetlania górnej
wartości granicznej 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

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ż

.MaxRaw, .RawValue, .MinEU, .MaxEU

background image

Pola

2-29

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.Name

zmienna

Pole to zawiera nazwę zmiennej w postaci łańcucha znaków.

Sposób użycia

Tagname.Name

Parametry

Opis

Tagname

Dowolny typ zmiennej.

Typ danych

Message (odczyt/zapis)

Zakres wartości

Wartość pola .Name może być zmieniana wyłącznie w przypadku zmiennych typu
pośredniego, a więc zmiennych typu Group Var i Tag ID. W czasie przypisywania
wartości do tego pola należy pamiętać o obowiązującej konwencji nazewnictwa, włączając
w to zakres dopuszczalnych znaków, oraz fakt, że pierwszym znakiem musi być litera
alfabetu.

Uwagi

Pole to przeznaczone jest wyłącznie do odczytu w przypadku następujących typów
zmiennych:

Hist Trend, dowolne typy pamięciowe , I/O Type

Pole to przeznaczone jest do odczytu/ zapisu w przypadku następujących typów
zmiennych:

Group Var, Tag ID, 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 MojaZmienna.Name jest równoważne wyrażeniu "MojaZmienna". Mechanizm
ten jest szczególnie użyteczny w przypadku wybrania polecenia Update Use Count z menu
Special

programu WindowMaker, czy też w przypadku poszukiwania odnośników do

zmiennych, ponieważ obydwa te polecenia nie są w stanie odszukać zmiennej, jeżeli jej
nazwa ujęta jest w cudzysłów. Z tego powodu, jeżeli nazwa zmiennej ujęta zostanie w
cudzysłów, a następnie wybrane zostaną polecenia Update Use Counts i Special, Delete
Unused Tags

, 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. Podobnie, można zmienić Grupę alarmów emulowaną przez zmienną typu Group
Var.

Przykład

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 tag named " + MyTag.Name + " has a
comment of " + MyTag.Comment;

Zamieszczona poniżej instrukcja, korzystająca z pola .Name przeznaczonego do odczytu/
zapisu, zmienia Grupę alarmów wskazywaną przez zmienną typu Group Var o nazwie
"MyGroupVarTag":

MyGroupVarTag.Name="SomeAlarmGroup";

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

background image

2-30

Rozdział 2

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

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.

.Normal

alarmy

Wartość tego pola jest równa 1, jeżeli nie jest uruchomiony żaden alarm dla zmiennej.

Sposób użycia

Tagname.Normal

Parametry

Opis

Tagname

Dowolna zmienna typu Discrete, Integer, Real, Indirect Analog lub
Group Var.

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 równa 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

Wyrażenia zawarte w poniższej instrukcji IF-THEN będą wykonywane zawsze, ilekroć nie
będzie aktywnych alarmów dla zmiennej o nazwie "Tag1." Jeżeli dla zmiennej o nazwie
"Tag1" aktywny będzie jeden lub więcej alarmów, wykonywana będzie część "ELSE"
instrukcji:

IF (Tag1.Normal==1) THEN
MyOperatorMessage="Tag1 is OK - No alarms associated
with it";

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

Patrz również

.Alarm

background image

Pola

2-31

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.OffMsg

zmienna

Pole .OffMsg umożliwia użytkownikowi odwoływanie się do pola komentarza zmiennej
dyskretnej przy przechodzeniu w stan 0, wprowadzonego na Liście zmiennych.

Sposób użycia

Tagname.OffMsg

Parametry

Opis

Tagname

Dowolna zmienna typu Discrete.

Typ danych

Message (odczyt/zapis)

Zakres wartości

Dowolny łańcuch znaków zawierający od 0 do 15 znaków.

Przykład

Jeżeli zmienna MyDiscrete ma wartość 0, zamieszczony poniżej skrypt spowoduje
przypisanie łańcucha znaków zawartego w polu OffMsg na Liście zmiennych do zmiennej
StateMessage.

StateMessage=Dtext (MyDiscrete, MyDiscrete.OnMsg,
MyDiscrete.OffMsg);

Patrz również

.OnMsg

.OnMsg

zmienna

Pole .OnMsg umożliwia użytkownikowi odwoływać się do pola komentarza zmiennej
dyskretnej przy zmianie wartości na 1, wprowadzonego na Liście zmiennych.

Sposób użycia

Tagname.OnMsg

Parametry

Opis

Tagname

Dowolna zmienna typu Discrete.

Typ danych

Message (odczyt/zapis)

Zakres wartości

Dowolny łańcuch znaków zawierający od 0 do 15 znaków.

Przykład

IF IndAnalog.OnMsg == "Running" THEN

TypeOfTag = "IndAnalog was assigned a Motor Starter";

ENDIF;

Patrz również

.OffMsg

background image

2-32

Rozdział 2

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.Pen1 - .Pen8

dane historyczne

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

Sposób użycia

Tagname{.Pen1 | .Pen2 | .Pen3 | .Pen4 | .Pen5 | .Pen6 | .Pen7 |
.Pen8
};

Parametry

Opis

Tagname

Dowolna zmienna typu Hist Trend.

Uwagi

Ze względu na skomplikowane zasady wykorzystania pola .PenX zaleca się, o ile to jest
możliwe, stosowanie funkcji HTSetPenName i HTGetPenName.

Uwaga

Do pola .PenX można przypisywać wyłącznie zmienne lokalne. Nie można

korzystać ze składni, w której określane jest źródło zmiennej. Składnia, w której podawane
jest źródło zmiennej, może być stosowana wyłącznie w przypadku funkcji
HTSetPenName

.

Dobrą metodą nauki korzystania z funkcji operujących na tych polach jest analiza
umieszczonego na ekranie, a następnie rozdzielonego na elementy składowe wizarda
trendów historycznych. Analiza taka umożliwia zrozumienie w jaki sposób pola te
powinny być wykorzystywane.

Typ danych

TagID (odczyt/zapis)

Zakres wartości

Typem danych obowiązującym w tym polu jest typ TagID. Oznacza to, że do tego pola
można przypisać "adres" zmiennej. Do pola tego nie można przypisać nazwy zmiennej.
Może 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łady

Zamieszczone poniżej, przykładowe wyrażenie, przypisuje nową zmienną do pola Pen1
trendu historycznego związanego ze zmienną typu Hist Trend o nazwie "MyHistTrend".
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 (tzn. akceptowalne jest wyrażenie typu
ZmiennaDyskretna = ZmiennaDyskretna, natomiast błędne jest wyrażenie
ZmiennaDyskretna = ZmiennaTypuPamięciowego, pozbawione w rzeczywistości logiki!)
Do pola musi być przypisany obiekt typu TagID.

MyHistTrendTag.Pen1=MyLoggedTag.TagID;

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;

background image

Pola

2-33

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

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. Jeżeli podjęta zostanie próba wyświetlenia na ekranie wartość pola
MyHistTrendTag.Pen1, edytor połączeń animacyjnych nie pozwoli na to, ponieważ dane w
polu Pen1 są typu TagID i nie mogą być wyświetlane. 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;

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

background image

2-34

Rozdział 2

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.Quality

zmienna

W celu pełnego zrozumienia właściwości pola .Quality wykorzystywanego w pakiecie
Wonderware, poniżej podano krótką definicję normy jakości. Norma jakości Wonderware
oparta jest na standardzie OLE for Process Control, który z kolei bazuje na normie
Fieldbus Data Quality Specifications.

Flaga jakości reprezentuje 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 pozwala użytkownikowi korzystać z 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ść początkową 0. Równocześnie
wartość 0 przypisywana jest do flagi .ReferenceComplete.

Sposób użycia

Tagname.Quality

Parametry

Opis

Tagname

Dowolna zmienna typu Discrete, Integer, Analog lub Message.

Typ danych

Message (odczyt/zapis)

Zakres wartości

Wartość może należeć do przedziału od 0 do 255.

Przykład

IF I0Tag.Quality <> 192 THEN

LogMessage("This data is not Good!");

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:

OPC QualityBytes

OPC Quality Bits

.QualityStatus

MSByte

LSByte

.QualitySubstatus

War. heks.

XXXXXXXX

QQSSSSLL .QualiyLimit

1. Dobra

0x00C0

00000000

00000000

Q=3

S=0

L=0

2. Obcięta od góry

0x0056

00000000

00000000

Q=1

S=5

L=2

3. Obcięta od dołu

0x0055

00000000

00000000

Q=1

S=5

L=1

4. Brak możliwości

konwersji

0x0040

00000000

00000000

Q=1

S=0

L=0

5. Brak dostępu

0x0004

00000000

00000000

Q=0

S=1

L=0

6. Przerwana

komunikacja

0x0018

00000000

00000000

Q=0

S=6

L=0

Jeżeli aplikacja klienta nie może nawiązać łączności z programem komunikacyjnym, wartość
QualityStatus jest równa 0.

0x0000

00000000

00000000

Q=0

S=0

L=0

Poszczególne statusy jakości sygnalizowane są po spełnieniu następujących warunków:

1. Dobra

Połączenie komunikacyjne zostało zweryfikowane.

Żądanie dostarczenia danych zostało pomyślnie odebrane przez sterownik PLC, który w
odpowiedzi wysłał poprawny, zwrotny pakiet danych.

W trakcie operacji zapisu, o ile taka była realizowana, nie wystąpił błąd.

Nie wystąpiły żadne zakłócenia w czasie kownersji danych zawartych w zwrotnym pakiecie
danych.

Przykład

Wrócona została wartość 0x0000A z rejestru zawierającego 10 (w postaci
heksadecymalnej).

background image

Pola

2-35

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

2. Obcięcie od góry

Połączenie komunikacyjne zostało zweryfikowane.

Żądanie dostarczenia danych zostało pomyślnie odebrane przez sterownik PLC, który w
odpowiedzi wysłał poprawny, zwrotny pakiet danych.

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

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: niewłaściwy
format liczby).

Przykład

Nadesłanie wartości 0x000A z rejestru BCD przetwornika PLC.

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 powodowane przez schemat odczytu
blokowego stosowany przez program komunikacyjny. Przykładowo, jeżeli jeden z
elementów w bloku złożonym z 10 elementów będzie niepoprawny, cały blok zostanie
zaznaczony przez sterownik PLC jako niepoprawny. Zasygnalizowanie przez program
komunikacyjny niewłaściwej liczby elementów w bloku.

Nieużyteczność danych.

Przykład

Próba odczytu R40001, jeżeli R40001 nie jest zdefiniowane w mapie pamięci PLC.

background image

2-36

Rozdział 2

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

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

.QualityLimit

zmienna

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.

Sposób użycia

Tagname.QualityLimit

Parametry

Opis

Tagname

Dowolna zmienna typu Discrete, Integer, Analog lub Message.

Typ danych

Integer (tylko odczyt)

Zakres wartości

(LLL)

0

Bez ograniczenia

1

Ograniczenie od dołu

2

Ograniczenie od góry

3

Stała

Patrz również

.Quality

.QualityLimitString

zmienna

Pole wykorzystywane do wyświetlania tekstowej wartości granicznej jakości zmiennej I/O,
dostarczanej przez program komunikacyjny przy poprawnie funkcjonującym połączeniu.

Sposób użycia

Tagname.QualityLimitString

Parametry

Opis

Tagname

Dowolna zmienna typu Discrete, Integer, Analog lub Message.

Typ danych

Message (tylko odczyt)

Patrz również

.QualityLimit, .Quality

background image

Pola

2-37

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.QualityStatus

zmienna

Liczba całkowita wykorzystywana do wyświetlania statusu jakości zmiennej I/O,
dostarczanej przez program komunikacyjny przy poprawnie funkcjonującym połączeniu.

Sposób użycia

Tagname.QualityStatus

Parametry

Opis

Tagname

Dowolna zmienna typu Discrete, Integer, Analog lub Message.

Uwagi

Wartość pola bitowego podstatusu (SSSS) zależy od wartości pola jakości (QQSSSSLL).

Typ danych

Integer (tylko odczyt)

Zakres wartości

(SSSS)

0

Zły

1

Niepewny

3

Dobry

Patrz również

.QualitySubStatus, .Quality

.QualityStatusString

zmienna

Liczba całkowita wykorzystywana do wyświetlania statusu jakości w postaci tekstowej, dla
zmiennej I/O, dostarczanej przez program komunikacyjny przy poprawnie funkcjonującym
połączeniu.

Sposób użycia

Tagname.QualityStatusString

Parametry

Opis

Tagname

Dowolna zmienna typu Discrete, Integer, Analog lub Message.

Typ danych

Message (tylko odczyt)

Patrz również

.QualityStatus, .QualitySubStatus, .Quality

background image

2-38

Rozdział 2

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.QualitySubstatus

zmienna

Liczba całkowita wykorzystywana do wyświetlania podstatusu jakości zmiennej I/O,
dostarczanej przez program komunikacyjny przy poprawnie funkcjonującym połączeniu.

Sposób użycia

Tagname.QualitySubstatus

Parametry

Opis

Tagname

Dowolna zmienna typu Discrete, Integer, Analog lub Message.

Typ danych

Integer (tylko odczyt)

Zakres wartości

(SSSS) i (QQ)

Podstatus (SSSS) w przypadku gdy jakość jest ZŁA (QQ=0):

0

Nie określona

1

Błąd w konfiguracji

2

Nie podłączona

3

Uszkodzenie sprzętowe

4

Uszkodzenie czujnika

5

Ostatnio odebrana wartość

6

Uszkodzenie Com

7

Wyłączenie

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

0

Nie określona

1

Ostatnio odebrana
wartość

4

Czujnik nie
dokładny

5

Przekroczenie
Jednostek
inżynierskich

6

Sub-normalna

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

0

Nie określona

6

Lokalne
przepisanie

Patrz również

.QualityStatus, .Quality

.QualitySubstatusString

zmienna

Pole wykorzystywane do wyświetlania podstatusu jakości zmiennej I/O, dostarczanej przez
program komunikacyjny przy poprawnie funkcjonującym połączeniu.

Sposób użycia

Tagname.QualitySubstatusString

Parametry

Opis

Tagname

Dowolna zmienna typu Discrete, Integer, Analog lub Message.

Typ danych

Message (tylko odczyt)

Patrz również

.QualityStatus, .QualitySubstatus, .Quality

background image

Pola

2-39

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.RawValue

zmienna

Rzeczywista wartość odczytana z programu komunikacyjnego przez program
WindowViewer pracujący jako klient. Pole wartości źródłowej pozwala użytkownikowi na
odczytanie wartości zmiennej typu I/O przed wyskalowaniem jej przez program InTouch.

Sposób użycia

Tagname.RawValue

Parametry

Opis

Tagname

Dowolna zmienna typu I/O Discrete, Indirect Discrete, I/O Integer,
Memory Real, Indirect Analog, I/O Message lub 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

Integer (tylko odczyt)

Zakres wartości

Wszędzie tam gdzie mogą być stosowane wartości dyskretne lub analogowe.

Przykład

Zamieszczone poniżej wyrażenie umożliwia sprawdzenie czy zmienna nie wyszła poza
zakres normalnych wartości.

IF ((IOtag.RawValue > IOtag.MaxRaw) OR (IOTag.RawValue <
IOTag.MinRaw))THEN

AlarmMessage = "Sensor is out of calibration or requires

replacement.";

ENDIF;

Patrz również

.MinRaw, .MaxRaw, .MinEU, .MaxEU

background image

2-40

Rozdział 2

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.Reference

zmienna

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

Sposób użycia

Tagname.Reference

Parametry

Opis

Tagname

Dowolna zmienna typu I/O Discrete, Indirect Discrete, I/O Integer,
I/O Real, Indirect Analog, I/O Message lub Indirect Message.

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

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

MyTag.Reference="R" + Text( MyIndex, “#” );

{ Jeżeli MyIndex=40001, Nazwa elementu będzie równa:

R40001 }

.ReferenceComplete

zmienna

Wraca potwierdzenie w przypadku zmiany pola .Reference zmiennej, odbiera żądany
element, a uaktualniona wartość jest zapisywana do pola .Value zmiennej.

Sposób użycia

Tagname.ReferenceComplete;

Parametry

Opis

Tagname

Dowolna zmienna typu I/O Discrete, Indirect Discrete, I/O Integer,
I/O Real, Indirect Analog, I/O Message lub Indirect Message.

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

I/O Discrete (tylko odczyt)

background image

Pola

2-41

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.ROCPct

alarmy

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

Sposób użycia

Tagname.ROCPct

Parametry

Opis

Tagname

Dowolna zmienna typu, Integer , Real lub 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

Wyrażenie zamieszczone poniżej ustawia wartość tego pola dla zmiennej MyTag na 25%.

MyTag.ROCPct=25;

Patrz również

.ROCStatus

background image

2-42

Rozdział 2

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.ROCStatus

alarmy

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

Sposób użycia

Tagname.ROCStatus

Parametry

Opis

Tagname

Dowolna zmienna typu, Integer , Real lub Indirect Analog.

Uwagi

Wartość tego pola przeznaczonego wyłącznie do odczytu jest zwykle równa 0. W
przypadku aktywowania dla zmiennej alarmu przekroczenia dopuszczalnej prędkości
zmiany wartości, pole to ustawiane jest przez system na 1. Pole to ma wartość równą 1 do
czasu, gdy zniknie przyczyna alarmu.

Typ danych

Discrete (tylko odczyt)

Zakres wartości

0 = Stan alarmowy nie występuje

1 = Stan alarmowy występuje

Przykład

Wyrażenia zawarte w zamieszczonej poniżej instrukcji IF-THEN wykonywane są
wyłącznie wtedy, gdy pole .ROCStatus ("Alarm dopuszczalnej prędkości zmian wartości")
jest równe 1. Inaczej ujmując, jeżeli dla zmiennej MyTag aktywowany zostanie alarm
przekroczenia dopuszczalnej prędkości zmian wartości, wykonane zostaną wyrażenia
zamieszczone w tej instrukcji warunkowej.

IF (MyTag.ROCStatus == 1) THEN
OperatorMessage="MyTag has gone into a Rate-Of-Change-
Alarm";

ENDIF;

Uwagi

Pole to jest często używane w połączeniu z polami .Alarm oraz .Ack, w celu określenia
dokładnej przyczyny alarmu związanego z daną zmienną.

Patrz również

.ROCPct

background image

Pola

2-43

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.ScooterLockLeft

dane historyczne

Pole to uniemożliwia przesunięcie prawego suwaka na wykresie trendu historycznego poza
aktualne położenie lewego suwaka .

Sposób użycia

Tagname.ScooterLockLeft

Parametry

Opis

Tagname

Dowolna zmienna typu Hist Trend.

Uwagi

Ogólnie ujmując, zalecane jest aby użytkownik nie miał możliwości przesunięcie 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 = FALSE = prawy suwak nie może zostać przesunięty poza pozycję zajmowaną przez
lewy suwak.

Przykład

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

background image

2-44

Rozdział 2

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.ScooterLockRight

dane historyczne

Pole to uniemożliwia przesunięcie lewego suwaka na wykresie trendu historycznego poza
aktualne położenie prawego suwaka .

Sposób użycia

Tagname.ScooterLockRight

Parametry

Opis

Tagname

Dowolna zmienna typu Hist Trend.

Uwagi

Ogólnie ujmując, zalecane jest aby użytkownik nie miał możliwości 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
suwak.

1 = FALSE = lewy suwak nie może zostać przesunięty poza pozycję zajmowaną przez
prawy suwak.

Przykład

Po wykonaniu zamieszczonej poniżej instrukcji, lewy suwak związany ze zmienną typu
HistTrendTag o nazwie "MyHistTrendTag" nie będzie mógł być przesunięty za pozycję
zajmowaną przez prawy suwak.

MyHistTrendTag.ScooterLockRight=1;

Patrz również

.ScooterPosRight, .ScooterPosLeft, .ScooterLockLeft

background image

Pola

2-45

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.ScooterPosLeft

dane historyczne

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

Sposób użycia

Tagname.ScooterPosLeft

Parametry

Opis

Tagname

Dowolna zmienna typu Hist Trend.

Uwagi

Pole to, przeznaczone do odczytu i zapisu, dynamicznie steruje położeniem lewego suwaka
na wykresie trendu historycznego. Użytkownik może użyć tego pola w skrypcie 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 bardzo często wykorzystywane 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

Od 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

Podana poniżej instrukcja zmienia pozycję zajmowaną przez lewy suwak. 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

background image

2-46

Rozdział 2

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.ScooterPosRight

dane historyczne

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

Sposób użycia

Tagname.ScooterPosRight

Parametry

Opis

Tagname

Dowolna zmienna typu Hist Trend.

Uwagi

Pole to, przeznaczone do odczytu i zapisu, dynamicznie steruje położeniem prawego
suwaka na wykresie trendu historycznego. Użytkownik może użyć tego pola w skrypcie
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 bardzo często wykorzystywane 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

Od 0.0 do 1.0; 0.0 odpowiada prawemu krańcowi wykresu trendu historycznego, natomiast
1.0 odpowiada lewemu krańcowi tego wykresu.

Przykłady

Podana poniżej instrukcja zmienia pozycję zajmowana przez prawy suwak. 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 wykonywana jest po każdej zmianie
pozycji prawego suwaka.

MyRealTag=HTGetValueAtScooter( MyHistTrendTag,

MyHistTrendTag.UpdateCount,2,
MyHistTrendTag.ScooterPosRight,1,"PenValue");

Patrz również

.ScooterPosLeft, .ScooterLockLeft, ScooterLockRight

background image

Pola

2-47

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.SPCStatus

SPC

Pole to określa, czy dla danej zmiennej aktywny jest alarm SPC.

Uwaga

Pole to może być wykorzystywane tylko wtedy, gdy zainstalowany jest moduł SPC

(statystycznej kontroli procesu).

Sposób użycia

Tagname.SPCStatus

Parametry

Opis

Tagname

Dowolna zmienna typu, Integer , Real lub Indirect Analog.

Typ danych

Discrete (tylko odczyt)

Zakres wartości

0 = Alarm SPC nie występuje

1 = Alarm SPC występuje

Uwagi

Wartość tego pola przeznaczonego wyłącznie do odczytu jest zwykle równa 0. W
momencie uruchomienia alarmu SPC, 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.

Przykład

Polecenia zawarte w zamieszczonej poniżej instrukcji IF-THEN będą wykonywane
wyłącznie wtedy, gdy pole .SPCStatus zmiennej o nazwie MyTag ma wartość równą 1.
Inaczej ujmując, jeżeli dla zmiennej MyTag uruchomiony zostanie alarm SPC, wykonane
zostaną polecenia zawarte w instrukcji IF-THEN:

IF (MyTag.SPCStatus == 1) THEN
OperatorMessage="MyTag has gone into an SPC-Alarm";

ENDIF;

.TagID

zmienna

Pole to używane jest w połączeniu ze polami .Pen1-.Pen8 zmiennych typu HistTrendTag
do sprawdzania i/lub zmiany zmiennych, których przebiegi rysowane są przez pisaki na
wykresie trendu historycznego.

Sposób użycia

Tagname.TagID

Parametry

Opis

Tagname

Dowolna zmienna typu Discrete, Indirect Discrete, oraz Indirect
Analog.

Uwagi

Pole .TagID zawiera adres zmiennej, i wykorzystywane jest głównie w kontekście
przypisywania zmiennych do pisaków trendu historycznego.

Typ danych

TagID (tylko odczyt)

Przykład

MyHistTrendTag.Pen6=SomeAnalogTag.TagID;

Patrz również

.Pen1-.Pen8

background image

2-48

Rozdział 2

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.TimeDate

zmienna

Pole typu całkowitego, zawierające liczbę dni, które upłynęły od momentu dostarczenia
wartości typu I/O przez program komunikacyjny, przy poprawnie funkcjonującym
połączeniu typu I/O.

Sposób użycia

Tagname.TimeDate

Parametry

Opis

Tagname

Dowolna zmienna typu Discrete, Integer, Real, Indirect Analog lub
Message.

Typ danych

Integer (tylko odczyt)

.TimeDateString

zmienna

Zmienna tekstowa zawierająca datę w formacie określonym w pliku WIN.INI.

Sposób użycia

Tagname.TimeDateString

Parametry

Opis

Tagname

Dowolna zmienna typu Discrete, Integer, Real, Indirect Analog lub
Message.

Typ danych

Message (tylko odczyt)

.TimeDateTime

zmienna

Pole typu rzeczywistego, zawierające liczbę dni w postaci ułamka, które upłynęły od
momentu dostarczenia wartości typu I/O przez program komunikacyjny, przy poprawnie
funkcjonującym połączeniu typu I/O.

Sposób użycia

Tagname.TimeDateTime

Parametry

Opis

Tagname

Dowolna zmienna typu Discrete, Integer, Real, Indirect Analog lub
Message.

Typ danych

Message (tylko odczyt)

background image

Pola

2-49

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.TimeDay

zmienna

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 typu I/O.

Sposób użycia

Tagname.TimeDay

Parametry

Opis

Tagname

Dowolna zmienna typu Discrete, Integer, Real, Indirect Analog lub
Message.

Typ danych

Integer (tylko odczyt)

Zakres wartości

Z przedziału 1 - 31.

.TimeHour

zmienna

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.

Sposób użycia

Tagname.TimeHour

Parametry

Opis

Tagname

Dowolna zmienna typu Discrete, Integer, Real, Indirect Analog lub
Message.

Typ danych

Integer (tylko odczyt)

Zakres wartości

Z przedziału 0 - 23.

.TimeMinute

zmienna

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 typu I/O.

Sposób użycia

Tagname.TimeMinute

Parametry

Opis

Tagname

Dowolna zmienna typu Discrete, Integer, Real, Indirect Analog lub
Message.

Typ danych

Integer (tylko odczyt)

Zakres wartości

Z przedziału 0 - 59.

background image

2-50

Rozdział 2

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.TimeMonth

zmienna

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 typu I/O.

Sposób użycia

Tagname.TimeMonth

Parametry

Opis

Tagname

Dowolna zmienna typu Discrete, Integer, Real, Indirect Analog lub
Message.

Typ danych

Integer (tylko odczyt)

Zakres wartości

Z przedziału 1 - 12.

.TimeMsec

zmienna

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 typu I/O.

Sposób użycia

Tagname.TimeMsec

Parametry

Opis

Tagname

Dowolna zmienna typu Discrete, Integer, Real, Indirect Analog lub
Message.

Typ danych

Integer (tylko odczyt)

Zakres wartości

Z przedziału 0 - 999.

.TimeSecond

zmienna

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 typu I/O.

Sposób użycia

Tagname.TimeSecond

Parametry

Opis

Tagname

Dowolna zmienna typu Discrete, Integer, Real, Indirect Analog lub
Message.

Typ danych

Integer (tylko odczyt)

Zakres wartości

Z przedziału 0 - 59.

background image

Pola

2-51

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.TimeTime

zmienna

Pole typu całkowitego, zawierające liczbę milisekund które upłynęły od północy do
momentu, gdy wartość typu I/O została dostarczona przez program komunikacyjny, przy
poprawnie funkcjonującym połączeniu typu I/O.

Sposób użycia

Tagname.TimeTime

Parametry

Opis

Tagname

Dowolna zmienna typu Discrete, Integer, Real, Indirect Analog lub
Message.

Typ danych

Integer (tylko odczyt)

Zakres wartości

Z przedziału 0 - 86399999.

.TimeTimeString

zmienna

Pole typu tekstowego zawierające godzinę i datę dostarczania przez program
komunikacyjny wartości zmiennej typu I/O, przy poprawnie funkcjonującym połączeniu
typu I/O.

Sposób użycia

Tagname.TimeTimeString

Parametry

Opis

Tagname

Dowolna zmienna typu Discrete, Integer, Real, Indirect Analog lub
Message.

Typ danych

Message (tylko odczyt)

.TimeYear

zmienna

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 typu I/O.

Sposób użycia

Tagname.TimeTime

Parametry

Opis

Tagname

Dowolna zmienna typu Discrete, Integer, Real, Indirect Analog lub
Message.

Typ danych

Integer (tylko odczyt)

Zakres wartości

Dowolny rok w formacie ####. Przykładowo 1998.

background image

2-52

Rozdział 2

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.UnAck

alarmy

Pole to umożliwia zmianę statusu niezatwierdzonych alarmów lokalnych.

Sposób użycia

Tagname.Unack=1

Parametry

Opis

Tagname

Dowolna zmienna typu Discrete, Integer, Real Indirect lub
GroupVar.

Uwagi

Przypisanie omawianemu polu zmiennej wartości 1 powoduje usunięcie zatwierdzenia
wszelkich aktywnych alarmów, powiązanych z daną zmienną/ grupą. Jeśli podana zmienna
jest zmienną typu Group Var lub Grupą alarmów, wszystkie nie zatwierdzone alarmy
związane ze zmiennymi wchodzącymi w skład tej grupy zostają zatwierdzone. W
przypadku gdy zmienna jest innego typu niż Group Var, zatwierdzenie alarmu dla tej
zmiennej jest anulowane. Przypisanie omawianemu polu wartości różnej od 1 nie ma
żadnego znaczenia, a wynik takiej operacji jest nieokreślony.

Typ danych

Discrete (odczyt/zapis)

Zakres wartości

1

Przykłady

Przykładowe polecenie, zamieszczone poniżej, powoduje usunięcie zatwierdzenia alarmu
związanego ze zmienną o nazwie Tag1.

Tag1.Unack=1;

Następne przykładowe polecenie służy do usunięcia zatwierdzenia wszelkich
zatwierdzonych alarmów w obrębie grupy alarmowej o nazwie PumpStation.

PumpStation.Unack = 1;

Instrukcja ta jest bardzo podobna do zamieszczonej powyżej, za wyjątkiem faktu, że służy
do usunięcia zatwierdzenia jakichkolwiek zatwierdzonych alarmów w grupie alarmów
związanych w danym momencie ze zmienną typu GroupVar o nazwie "StationAlarms."

Uwaga

. Polem o wartości przeciwnej do .UnAck jest pole .Ack. W przypadku

wystąpienia zatwierdzonego alarmu, pole .Ack ustawiane jest na wartość 1.

Patrz również

.Ack and .Alarm

background image

Pola

2-53

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.UpdateCount

dane historyczne

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

Sposób użycia

Tagname.UpdateCount

Parametry

Opis

Tagname

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 muszą zostać odczytane z dysku. Po
zakończeniu operacji czytania danych, wartość tego pola jest zwiększana o 1. Pole
.UpdateCount

jest wykorzystywane w wielu funkcjach związanych z trendami

historycznymi, w celu uaktualnienia wyników przeprowadzanych wcześniej obliczeń.

Typ danych

Integer (tylko odczyt)

Zakres wartości

Dowolna dodatnia liczba całkowita.

Przykład

W zamieszczonym poniżej skrypcie, funkcja HtGetValueAtScooter() została
wykorzystana do odczytu wartości wskazywanej przez pisak Pen1 w miejscu, w którym
znajduje się prawy suwak. Ponieważ zmiana jednego z parametrów funkcji powoduje
ponowne wyznaczenie wartości funkcji, każdorazowo po aktualizacji danych (po odczycie
tych danych z dysku) i zwiększeniu wartości pola .UpdateCount o 1, wartość poniższej
funkcji jest wyznaczana na nowo.

MyRealTag=HTGetValueAtScooter( MyHistTrendTag,

MyHistTrendTag.UpdateCount,2,
MyHistTrendTag.ScooterPosRight,1,"PenValue");

Patrz również

.UpdateInProgress, .UpdateTrend

background image

2-54

Rozdział 2

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.UpdateInProgress

dane historyczne

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

Sposób użycia

Tagname.UpdateInProgress

Parametry

Opis

Tagname

Dowolna zmienna typu Hist Trend.

Uwagi

Pole to jest powiązane bezpośrednio z systemem odczytu danych historycznych.
Każdorazowo, gdy InTouch zażąda danych dla trendu historycznego związanego z
określoną zmienną typu Hist Trend, dane te muszą zostać odczytane z dysku. W czasie
procesu czytania, pole to ma wartość 1. Po zakończeniu tej operacji, wartość pola
.UpdateInProgress

zmieniana jest na 0. Pole .UpdateInProgress jest wykorzystywane w

wielu funkcjach związanych z trendami historycznymi.

Większość trendów historycznych wyświetlanych na ekranie ma mechanizm pozwalający
użytkownikowi na przewijanie wyświetlanych danych. Podczas przeglądania trendu przez
operatora system odczytu danych historycznych musi zapewnić, aby dane wyświetlane na
ekranie były 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, dane muszą zostać
odczytane z dysku. Ponieważ proces ten wymaga pewnego czasu, system informuje
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łady

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. Po zaktualizowaniu trendu, wyrażenie to ma
wartość 0.

MyHistTrendTag.UpdateInProgress

Patrz również

.UpdateCount, .UpdateTrend

background image

Pola

2-55

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.UpdateTrend

dane historyczne

Pole to umożliwia aktualizację wykresu trendu historycznego.

Sposób użycia

Tagname.UpdateTrend

Parametry

Opis

Tagname

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. Wykorzystanie pola .UpdateTrend w skrypcie związanym z
przyciskiem umożliwia operatorowi aktualizację wykresu w czasie pracy aplikacji, zawsze
ilekroć taka potrzeba wystąpi.

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.

Przypisanie wartości różnej od 1 nie ma żadnego znaczenia, a wynik takiej operacji jest
nieokreślony.

Typ danych

Discrete (tylko zapis)

Zakres wartości

1

Przykład

Zamieszczone poniżej wyrażenie powoduje uaktualnienie trendu historycznego związanego
ze zmienną typu HistTrendTag o nazwie "MyHistTrendTag".

MyHistTrendTag.UpdateTrend=1;

background image

2-56

Rozdział 2

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.Value

zmienna

Pole to zawiera wartość danej zmiennej. Jest to również domyślne pole dla każdej
zmiennej programu InTouch. Jeśli nie jest używane inne pole, zakłada się, że użytkownik
posługuje się tym polem.

Sposób użycia

Tagname.Value

Parametry

Opis

Tagname

Dowolna zmienna za wyjątkiem zmiennych typu HistTrendTag.

Uwagi

Pole to jest również domyślnym polem każdej zmiennej programu InTouch. Jeśli nie jest
użyte inne pole, zakłada się, że użytkownik posługuje się tym polem. Pole to jest rzadko
używane, ale w niektórych przypadkach jest użyteczne w celu jaśniejszego zapisu
wykonywanych operacji.

Typ danych

Zależy od typu zmiennej (odczyt/ zapis).

Przykład

Zamieszczone poniżej wrażenie ustawia wartość zmiennej typu Memory Integer o nazwie
MyTag

na wartość 100.

Tagname.Value=100;

Wyrażenie to jest funkcjonalnie identyczne z:

Tagname=100;

background image

Pola

2-57

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.AlarmGroup

alarmowanie rozproszone

Pole to zawiera aktualną listę alarmów obiektu do wyświetlania alarmów rozproszonych.

Sposób użycia

[ErrorNumber=]GetPropertyM("ObjectName.AlarmGroup",Tagname);

Parametry

Opis

ObjectName

Nazwa obiektu alarmowego, np. AlmObj_1.

Tagname

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

Uwagi

Pole to przeznaczone jest tylko do odczytu i zawiera aktualną listę alarmów
wykorzystywaną w systemie alarmowania rozproszonego przez obiekt alarmowy o podanej
nazwie. Lista ta 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

Pole to przypisuje bieżące zapytanie alarmowe wykorzystywane przez obiekt do
wyświetlania "AlmObj_1" do zmiennej tekstowej "CurrentQuery".

GetPropertyM("AlmObj_1.AlarmGroup",CurrentQuery)

Patrz również

GetPropertyM()

.NextPage

alarmowanie rozproszone

Pole to powoduje przewinięcie listy wyświetlanych alarmów o jedną stronę ekranu w dół, w
momencie , gdy wartość pola ulega zmianie z 1 na 0.

Sposób użycia

[ErrorNumber=]GetPropertyD("ObjectName.NextPage",Tagname);

[ErrorNumber=]SetPropertyD("ObjectName.NextPage",Value);

Parametry

Opis

ObjectName

Nazwa obiektu alarmowego, np. AlmObj1.

Value

Nazwa zmiennej dyskretnej wykorzystywanej do pamiętania
wartości właściwości w momencie gdy funkcja jest realizowana,
stosowana jako "Zmienna" lub Zmienna.Name.

Tagname

Wartość dyskretna. Może to być również zmienna dyskretna
przechowująca wartość do zapisu w momencie przetwarzania
funkcji.

Uwagi

Zawsze, gdy wartość tego pola ulega zmianie z 1 na 0, obiekt do wyświetlania alarmów
przewinie ekran do przodu o jedną stroną. Po wyświetleniu tej 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(), .PrevPage

background image

2-58

Rozdział 2

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.NumAlarms

alarmowanie rozproszone

Pole to zawiera liczbę alarmów w obiekcie alarmowym.

Sposób użycia

[ErrorNumber=]GetPropertyI("ObjectName.NumAlarms",Tagname);

Parametry

Opis

ObjectName

Nazwa obiektu alarmowego, np. AlmObj_1.

Tagname

Zmienna typu Integer, do której funkcja przypisuje wartość
właściwości.

Uwagi

Pole to przeznaczone jest tylko do odczytu i zawiera bieżącą liczbę alarmów
zarejestrowanych w alarmowaniu rozproszonym przez obiekt alarmowy o podanej nazwie.
Liczba ta obejmuje nie tylko alarmy wyświetlane, ale wszystkie alarmy zarejestrowane.

Typ danych

Integer (tylko odczyt)

Przykład

Pole to zwraca bieżące zapytanie alarmowe wykorzystywane przez obiekt do wyświetlania
"AlmObj_1" do zmiennej całkowitej "CurrentQuery".

GetPropertyI("AlmObj_1.NumAlarms",AlarmCount);

Patrz również

GetPropertyI()

.PageNum

alarmowanie rozproszone

Pole to zawiera numer strony aktualnie wyświetlanej w obiekcie alarmowym.

Sposób użycia

[ErrorNumber=]GetPropertyI("ObjectName.PageNum",Tagname);

Parametry

Opis

ObjectName

Nazwa obiektu alarmowego, np. AlmObj_1.

Stosowanych w systemie alarmowania rozproszonego

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 alarmowym w alarmowaniu rozproszonym.

Typ danych

Integer (tylko odczyt)

Przykład

Zamieszczona poniżej instrukcja zwraca bieżący numer strony obiektu do wyświetlania
"AlmObj_1" do zmiennej całkowitej "AlarmPage".

GetPropertyI("AlmObj_1.PageNum",AlarmPage);

Patrz również

GetPropertyI()

background image

Pola

2-59

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.PrevPage

alarmowanie rozproszone

Pole to powoduje przewinięcie listy wyświetlanych alarmów o jedną stronę ekranową
zapełnioną alarmami w górę w sytuacji, gdy wartość pola ulega zmianie z 1 na 0.

Sposób użycia

[ErrorNumber=]GetPropertyD("ObjectName.PrevPage",Tagname);

[ErrorNumber=]SetPropertyD("ObjectName.PrevPage",Value);

Parametry

Opis

ObjectName

Nazwa obiektu alarmowego, np. AlmObj_1.

Tagname

Zmienna (takiego samego typu jaki ma być zwrócony),
przechowująca wartość właściwości w momencie realizacji funkcji.

Value

Wartość dyskretna. Może to być również zmienna dyskretna
przechowująca wartość do zapisu w momencie przetwarzania
funkcji.

Uwagi

Zawsze, gdy wartość tego pola ulega zmianie z 1 na 0, obiekt do wyświetlania alarmów
pokazywał będzie poprzednią stronę. Po wyświetleniu tej 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

.PriFrom

alarmowanie rozproszone

Pole to zawiera dolny zakres priorytetu alarmów.

Sposób użycia

[ErrorNumber=]GetPropertyI("ObjectName.PriFrom",Tagname);

Parametry

Opis

ObjectName

Nazwa obiektu alarmowego, np. AlmObj_1.

Tagname

Zmienna typu Integer, przechowująca wartość właściwości w
momencie realizacji funkcji.

Uwagi

Pole to zawiera minimalny priorytet wykorzystywany w oknie obiektu alarmowego do
stawiania zapytań alarmowych.

Typ danych

Integer (tylko odczyt)

Przykład

Zamieszczone poniżej wyrażenie ustawia wartość zmiennej "MinPri" na minimalną wartość
priorytetu, wykorzystywaną przez obiekt do wyświetlania alarmów.

GetPropertyI("AlmObj_1.PriFrom",MinPri);

Patrz również

GetPropertyI(), .PriTo

background image

2-60

Rozdział 2

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.PriTo

alarmowanie rozproszone

Pole to zawiera górny zakres priorytetu alarmów.

Sposób użycia

[ErrorNumber=]GetPropertyI("ObjectName.PriTo",Tagname);

Parametry

Opis

ObjectName

Nazwa obiektu alarmowego, np. AlmObj_1.

Tagname

Zmienna typu Integer, przechowująca wartość właściwości w
momencie realizacji funkcji.

Uwagi

Pole to przeznaczone jest tylko do odczytu i zawiera górny zakres priorytetu alarmów
wyświetlanych w oknie obiektu alarmowego, stosowanych w systemie alarmowania
rozproszonego.

Typ danych

Integer (tylko odczyt)

Przykład

Zmienna (takiego samego typu jaki ma być zwrócony), przechowująca wartość właściwości
w momencie realizacji funkcji.

GetPropertyI("AlmObj_1.PriTo",MaxPri);

Patrz również

GetPropertyI(), .PriFrom

.ProviderReq

alarmowanie rozproszone

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

Sposób użycia

[ErrorNumber=]GetPropertyI("ObjectName.ProviderReq",Tagname);

Parametry

Opis

ObjectName

Nazwa obiektu alarmowego, np. AlmObj_1.

Tagname

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

Typ danych

Integer (tylko odczyt)

Przykład

Zamieszczona poniżej instrukcja zwraca liczbę dostawców alarmów wymaganą przez
bieżące zapytanie, wykorzystywaną przez obiekt do wyświetlania alarmów "AlmObj_1".
Wartość ta jest przypisywana zmiennej całkowitej "TotalProv":

GetPropertyI("AlmObj_1.ProviderReq",TotalProv);

Patrz również

GetPropertyI(),

.

ProviderRet

background image

Pola

2-61

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.ProviderRet

alarmowanie rozproszone

Pole to zawiera liczbę aplikacji uruchomionych na innych komputerach, które udzieliły
odpowiedzi na pytanie o występowanie alarmów.

Sposób użycia

[ErrorNumber=]GetPropertyI("ObjectName.ProviderRet",Tagname);

Parametry

Opis

ObjectName

Nazwa obiektu alarmowego, np. AlmObj_1.

Tagname

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

Typ danych

Integer (tylko odczyt)

Przykład

Zamieszczona poniżej instrukcja zwraca do obiektu do wyświetlania alarmów "AlmObj_1",
liczbę dostawców alarmowych którzy pomyślnie przesłali informacje o alarmach. Wartość
ta jest przypisywana zmiennej całkowitej "RetProv":

GetPropertyI("AlmObj_1.ProviderRet",RetProv);

Patrz również

GetPropertyI(),

.ProviderReq

background image

2-62

Rozdział 2

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.QueryState

alarmowanie rozproszone

Pole to zawiera aktualny filtr obowiązujący przy pytaniu o alarmy.

Sposób użycia

[ErrorNumber=]GetPropertyI("ObjectName.QueryState",Tagname);

Parametry

Opis

ObjectName

Nazwa obiektu alarmowego, np. AlmObj_1.

Tagname

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 pytaniu
o alarmy przez obiekt alarmowy, w alarmowaniu rozproszonym.

Typ danych

Integer (tylko odczyt)

Zakres wartości

0 = Wszystkie alarmy

1 = Alarmy niepotwierdzone

2 = Alarmy potwierdzone

Przykład

Zamieszczona poniżej instrukcja ustawia wartość zmiennej całkowitej "AlmQueryState" na
filtr bieżącego zapytania obiektu do wyświetlania "AlmObj_1":

GetPropertyI("AlmObj_1.QueryState",AlmQueryState);

Patrz również

GetPropertyI()

background image

Pola

2-63

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.QueryType

alarmowanie rozproszone

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

Sposób użycia

[ErrorNumber=]GetPropertyI("ObjectName.QueryType",Tagname);

Parametry

Opis

ObjectName

Nazwa obiektu alarmowego, np. AlmObj_1.

Tagname

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 alarmowy, w alarmowaniu rozproszonym.

Typ danych

Integer (tylko odczyt)

Zakres wartości

1 = Historia alarmów

2 = Alarmy bieżące (aktywne)

Przykład

Zamieszczona poniżej instrukcja ustawia wartość zmiennej całkowitej "AlmQueryType" na
typ bieżącego zapytania obiektu do wyświetlania "AlmObj_1":

GetPropertyI("AlmObj_1.QueryType",AlmQueryType);

Patrz również

GetPropertyI()

background image

2-64

Rozdział 2

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.Successful

alarmowanie rozproszone

Pole to dostarcza informacji na temat przebiegu zapytania o alarmy.

Sposób użycia

[ErrorNumber=]GetPropertyD("ObjectName.Successful",Tagname);

Parametry

Opis

ObjectName

Nazwa obiektu alarmowego, np. AlmObj_1.

Tagname

Zmienna typu dyskretnego, przechowująca wartość właściwości w
momencie wykonywania funkcji.

Uwagi

Pole to przeznaczone jest tylko do odczytu i dostarcza informacji na temat przebiegu
zapytania o alarmy przez obiekt alarmowy, w alarmowaniu rozproszonym.

Typ danych

Discrete (tylko odczyt)

Zakres wartości

0 = Błąd

1 = Odpytywanie wykonane

Przykład

Zamieszczona poniżej instrukcja ustawia wartość zmiennej dyskretnej "AlmFlag" na status
ostatniego zapytania obiektu do wyświetlania "AlmObj_1":

GetPropertyD("AlmObj_1.Successful",AlmFlag);

Patrz również

GetPropertyD()

.TotalPages

alarmowanie rozproszone

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

Sposób użycia

[ErrorNumber=]GetPropertyI("ObjectName.TotalPages",Tagname);

Parametry

Opis

ObjectName

Nazwa obiektu alarmowego, np. AlmObj_1.

Tagname

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ę stron z alarmami w
obiekcie alarmowym o podanej nazwie.

Typ danych

Integer (tylko odczyt)

Przykład

Pole to ustawia wartość zmiennej całkowitej "AlmTotalPage" na sumaryczną liczbę stron w
obiekcie do wyświetlania "AlmObj_1".

GetPropertyI("AlmObj_1.TotalPages",AlmTotalPages);

Patrz również

GetPropertyI()

background image

Pola

2-65

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.Caption

obiekty sterujące okien

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

Sposób użycia

[ErrorNumber=]GetPropertyM ("ControlName.Caption", Tagname );

[ErrorNumber=]SetPropertyM ("ControlName.Caption", "Message");

Parametry

Opis

ControlName

Nazwa obiektu sterującego okna, np. ChkBox_4.

Tagname

Zmienna tekstowa do przechowywania żądanej właściwości.

"Message"

Tekst komunikatu ujęty w cudzysłowy.

Uwagi

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

Typ danych

Message (odczyt/zapis)

Zastosowanie

Pola wyboru.

Przykład

Zamieszczona poniżej instrukcja ustawia pole .Caption obiektu "CheckBox_1" na wartość
"Blue Paint Option".

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

Patrz również

GetPropertyM(), SetPropertyM()

background image

2-66

Rozdział 2

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.Enabled

obiekty sterujące okien

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

Sposób użycia

[ErrorNumber=] GetPropertyD("ControlName.Enabled", Tagname);

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

Parametry

Opis

ControlName

Nazwa obiektu sterującego okna, np. ChkBox_4.

Tagname

Zmienna dyskretna przeznaczona do przechowywania żądanej
właściwości.

Dyskretne

Wartość dyskretna.
0 = Obiekt sterujący jest nieaktywny
1 = Obiekt sterujący jest aktywny
lub,
Zmienna dyskretna przechowująca wartość do zapisu w momencie
wykonywania funkcji.

Uwagi

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

Typ danych

Discrete (odczyt/zapis)

Zastosowanie

Pola tekstowe , pola list , listy rozwijane , pola wyboru i pola wyboru wykluczającego .

Przykład

Zamieszczona poniżej instrukcja dezaktywuje obiekt o nazwie "ListBox_1."

SetPropertyD( "ListBox_1.Enabled",0 );

Patrz również

GetPropertyD(), SetPropertyD()

background image

Pola

2-67

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.ListCount

obiekty sterujące okien

Pole to określa liczbę elementów w polu listy lub na liście rozwijalnej.

Sposób użycia

[ErrorNumber=]GetPropertyI("ControlName.ListCount",Tagname);

Parametry

Opis

ControlName

Nazwa obiektu sterującego okna, np. ListBox_4.

Tagname

Zdefiniowana zmienna zawierająca liczbę elementów na liście.

Uwagi

Pole to jest dostępne tylko w trybie w czasie pracy aplikacji.

Typ danych

Integer (tylko odczyt)

Zastosowanie

Pola listy i listy rozwijalne.

Przykład

Zamieszczona poniżej instrukcja odczytuje liczbę elementów listy o nazwie "ListBox_1" i
przypisuje tę wartość do zmiennej typu Memory Integer o nazwie "MyListBoxCount".

GetPropertyI( "ListBox_1.ListCount",MyListBoxCount );

Patrz również

GetPropertyI()

background image

2-68

Rozdział 2

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.ListIndex

obiekty sterujące okien

Pole to zawiera 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.

Sposób użycia

[ErrorNumber=]GetPropertyI("ControlName.ListIndex",Tagname);

[ErrorNumber=]SetPropertyI("ControlName.ListIndex",Number);

Parametry

Opis

ControlName

Nazwa obiektu sterującego okna, np. ListBox_4.

Tagname

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 trybie w czasie pracy aplikacji.

Typ danych

Integer (odczyt/zapis)

Zastosowanie

Pola listy i listy rozwijalne.

Przykład

Zamieszczona poniżej instrukcja odczytuje indeks elementu zaznaczonego na liście o
nazwie "ListBox_1" i przypisuje tę wartość do zmiennej typu Memory Integer o nazwie
"MyListBoxIndex."

GetPropertyI( "ListBox_1.ListIndex",MyListBoxIndex );

Patrz również

GetPropertyI(), SetPropertyI()

background image

Pola

2-69

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.NewIndex

obiekty sterujące okien

Pole to zawiera indeks elementu ostatnio dodanego do pola listy lub listy rozwijalnej za
pomocą funkcji wcAddItem() lub wcInsertItem().

Sposób użycia

[ErrorNumber=]GetPropertyI("ControlName.NewIndex",Tagname);

Parametry

Opis

ControlName

Nazwa obiektu sterującego okna, np. ListBox_4.

Tagname

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

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

background image

2-70

Rozdział 2

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.ReadOnly

obiekty sterujące okien

Pole to określa, czy zawartość obiektu sterującego w postaci pola tekstowe ma być
przeznaczona tylko do odczytu, czy może dopuszczać również zapis.

Sposób użycia

[ErrorNumber=]GetPropertyD("ControlName.ReadOnly", Tagname);

Parametry

Opis

ControlName

Nazwa obiektu sterującego okna, np. TextBox_1.

Tagname

Zmienna typu dyskretnego, przechowująca wartość właściwości w
momencie wykonywania funkcji.

Uwagi

Pole to jest dostępne zarówno w czasie pracy aplikacji, jak i w czasie jej edycji

.

Typ danych

Discrete (tylko odczyt)

Zakres wartości

0 = Zawartość pola tekstowego umożliwia odczyt i zapis.

1 = Zawartość pola tekstowego jest przeznaczona tylko do odczytu.

Zastosowanie

Pola tekstowe.

Przykład

Poniższa instrukcja odczytuje status pola .ReadOnly obiektu o nazwie "TextBox_1".

GetPropertyD( "TextBox_1.ReadOnly",A_Tagname );

Patrz również

GetPropertyD(), SetPropertyD()

background image

Pola

2-71

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.TopIndex

obiekty sterujące okien

Pole to zawiera odpowiedni indeks (zmienną lub liczbę całkowitą) pierwszego od góry
elementu w polu listy.

Sposób użycia

[ErrorNumber=]GetPropertyI("ControlName.TopIndex", Tagname);

[ErrorNumber=]SetPropertyI("ControlName.TopIndex", Number);

Parametry

Opis

ControlName

Nazwa obiektu sterującego okna, np. ListBox_1.

Tagname

Zmienna typu Integer, przechowująca wartość właściwości w
momencie realizacji funkcji.

Number

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

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

background image

2-72

Rozdział 2

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.Value

obiekty sterujące okien

Domyślna właściwość dla wszystkich wizardów obiektów sterujących Windows. Zmiany
tej właściwości zsynchronizowane są z zmiennymi InTouch, oraz z wizardami obiektów
sterujących Windows.

Sposób użycia

[ErrorNumber=]GetPropertyM("ControlName[.Value]", Tagname);

[ErrorNumber=]SetPropertyM("ControlName[.Value]", Value);

[ErrorNumber=]GetPropertyI("ControlName[.Value]", Tagname);

[ErrorNumber=]SetPropertyI("ControlName[.Value]", Value);

[ErrorNumber=]GetPropertyD("ControlName[.Value]", Tagname);

[ErrorNumber=]SetPropertyD("ControlName[.Value]", Value);

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.

Parametry

Opis

ControlName

Nazwa obiektu sterującego okna, np. ChkBox_4.

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

Tagname

Zdefiniowana zmienna programu InTouch (takiego samego typu jak
typ zwracany), przechowująca wartość właściwości w momencie
realizacji funkcji.

Value

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 połączeniu z polami listy lub listą rozwijalną , jest
ono przeznaczone tylko do odczytu. 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

Zamieszczona poniżej instrukcja ustawia wartość pola .Value obiektu pole wyboru
wykluczającego o nazwie "RadioButton_1" na wartość 4.

SetPropertyI( "RadioButton_1.Value",4 );

Patrz również

GetPropertyM(), SetPropertyM(), GetPropertyI(), SetPropertyI(), GetPropertyD(),
SetPropertyD()

background image

Pola

2-73

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.Visible

obiekty sterujące okien

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

Sposób użycia

[ErrorNumber=]GetPropertyD("ControlName.Visible",Tagname);

[ErrorNumber=]SetPropertyD("ControlName.Visible",Number);

Parametry

Opis

ControlName

Nazwa obiektu sterującego okna, np. ListBox_1.

Tagname

Zdefiniowana zmienna programu InTouch (takiego samego typu jak
typ zwracany), przechowująca wartość właściwości w momencie
realizacji funkcji.

Number

Wartość dyskretna. Może to być również zmienna dyskretna
przechowująca wartość do zapisu w momencie przetwarzania
funkcji.

Uwagi

Pole to przeznaczone jest do zapisu/ odczytu zarówno w trakcie edycji aplikacji jak
również w momencie wykonywania aplikacji.

Typ danych

Discrete (odczyt/zapis)

Zakres wartości

0 = Obiekt jest niewidoczny

1 = Obiekt jest widoczny

Zastosowanie

Pola tekstowe , pola list , listy rozwijane , pola wyboru i pola wyboru wykluczającego .

Przykład

Zamieszczona poniżej instrukcja przywraca widzialność pola tekstowego o nazwie
"TextBox_1".

SetPropertyD( "TextBox_1.Visible",0 );

Patrz również

GetPropertyD(), SetPropertyD()

background image
background image

3-1

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

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. 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 skryptowe QuickScript są skryptami, które można wywoływać z poziomu innych
skryptów i połączeń animacyjnych. Kod źródłowy takiej funkcji pamiętany jest w jednym
miejscu, tak więc jej edycja umożliwia wprowadzenie zmian we wszystkich aplikacjach, w
których funkcja taka jest wywoływana.

Skrypty umożliwiają utworzenie szeregu zautomatyzowanych funkcji systemowych,
dostosowanych do potrzeb użytkownika.

background image

3-2

Rozdział 3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

Abs()

funkcje matematyczne

Zwraca wartość bezwzględną danej liczby.

Składnia

Result=Abs(Number);

Parametry

Opis

Number

Dowolna liczba, zmienna rzeczywista lub całkowita programu
InTouch.

Uwagi

Obliczona wartość bezwględna liczby Number jest przypisywana do zmiennej Result.

Przykłady

Abs(14) zwraca 14

Abs(-7.5) zwraca 7.5

Ack()

alarmy

Funkcja ta służy do zatwierdzania lokalnych alarmów programu InTouch.

Składnia

Ack Tagname;

Parametry

Opis

Tagname

Dowolna zmienna, grupa alarmowa (Alarm Group) lub zmienna
grupowa (Group Var).

Uwagi

Funkcja ta może być użyta w odniesieniu do zmiennej, grupy alarmowej lub zmiennej
grupowej. (Zmienna grupowa jest zmienną, której wartości są nazwami grup alarmowych).

Przykłady

Poniższe instrukcje można zastosować w powiązaniu z przyciskiem, w celu zatwierdzenia
dowolnego, nie potwierdzonego alarmu:

Ack $System; (zatwierdzenie wszystkich alarmów)

Ack Tagname;

Ack GroupName;

Ack GroupVariable;

background image

Funkcje skryptowe

3-3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

ActivateAPP()

system

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

Składnia

ActivateApp TaskName;

Parametry

Opis

TaskName

Nazwa aplikacji, która ma zostać uaktywniona za pomocą funkcji.

Uwagi

TaskName jest ciągiem znaków (włącznie ze spacjami), który pojawia się na Pasku Zadań
lub w Menadżerze zadań (w celu wyświetlenia w systemie Windows NT należy kliknąć
prawym przyciskiem myszy na Pasku zadań, a następnie kliknąć Menadżer zadań lub
wcisnąć Ctrl+Alt+Delete).

Przykład

Poniżej podano przykład sprawdzający czy aktywna jest linia poleceń. Jeżeli jest aktywna,
przenoszona jest na pierwszy plan. W przeciwnym wypadku, jest uruchamiana, z
automatycznym wywołaniem programu systemu DOS edit.com.

IF InfoAppActive( InfoAppTitle("cmd")) == 1 THEN

ActiveApp InfoAppTitle("cmd");

ELSE

StartApp "cmd /c edit";

ENDIF;

Patrz również

StartApp(), InfoAppTitle()

almAckAll()

alarmowanie rozproszone

Funkcja ta służy do zatwierdzania wszystkich alarmów z aktualnej listy odpytywanych
alarmów, włącznie z tymi, które nie są aktualnie wyświetlane w oknie obiektu alarmowego.

Składnia

[Result=]almAckAll(ObjectName,Comment);

Parametry

Opis

ObjectName

Nazwa obiektu alarmowego, np. AlmObj_1.

Comment

Komentarz do zatwierdzania alarmu.

! 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

MessageTag = "Acknowledge All by” + $Operator;

AlmAckAll("AlmObj_1”, MessageTag);

background image

3-4

Rozdział 3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

almAckDisplay()

alarmowanie rozproszone

Funkcja ta służy do zatwierdzania tylko tych alarmów, które są aktualnie wyświetlane w
oknie obiektu alarmowego.

Składnia

[Result=]almAckDisplay(ObjectName,Comment);

Parametry

Opis

ObjectName

Nazwa obiektu alarmowego, np. AlmObj_1.

Comment

Komentarz do zatwierdzania alarmu.

! 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

almAckDisplay("

AlmObj_1

”, "Display Acknowledgement”);

almAckRecent()

alarmowanie rozproszone

Funkcja ta służy do zatwierdzania najnowszych alarmów.

Składnia

[Result=]almAckRecent(ObjectName,Comment);

Parametry

Opis

ObjectName

Nazwa obiektu alarmowego, np. AlmObj_1.

Comment

Komentarz do zatwierdzania alarmu.

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

almAckRecent("

AlmObj_1

”, $DateString);

background image

Funkcje skryptowe

3-5

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

almAckSelect()

alarmowanie rozproszone

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

Składnia

[Result=]almAckSelect(ObjectName,Comment);

Parametry

Opis

ObjectName

Nazwa obiektu alarmowego, np. AlmObj_1.

Comment

Komentarz do zatwierdzania alarmu.

! 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

IF ($Hour > 0 and $Hour < 8) THEN

AckTag = "NightShift”;

ELSE

AckTag = "Day Shift”;

ENDIF;

AlmAckSelect ("AlmObj_1”,AckTag);

almDefQuery()

alarmowanie rozproszone

Wykonanie zapytania w celu zaktualizowania okna obiektu alarmowego przy użyciu
domyślnych parametrów.

Składnia

[Result=]almDefQuery(ObjectName);

Parametry

Opis

ObjectName

Nazwa obiektu alarmowego, np. AlmObj_1.

Uwagi

Domyślne parametry zapytania o alarmy są podawane w czasie edycji aplikacji.

! Kody błędów dla funkcji tego typu można znaleźć w Dodatku A: "Komunikaty o

błędach dla obiektów sterujących Windows i funkcji związanych z alarmowaniem
rozproszonym".

Przykład

almDefQuery("AlmObj_1”);

background image

3-6

Rozdział 3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

almMoveWindow()

alarmowanie rozproszone

Przewija okno obiektu alarmowego.

Składnia

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

Parametry

Opis

ObjectName

Nazwa obiektu alarmowego, np. AlmObj_1.

Options

Rodzaj przewijania alarmów.
Typ

Opis

LineDn

O jedną linię w dół.

LineUp

O jedną linię w górę.

PageDn

O jedną stronę w dół.

PageUp

O jedną stronę w górę.

Top

Do początku listy.

Bottom

Do końca listy.

PageRt

O jedna stronę w prawo.

PageLf

O jedna stronę w lewo.

Right

Do końca listy w prawą stronę.

Left

Do końca listy w lewą stronę.

Repeat

Liczba określająca, ile razy operacja ma zostać powtórzona.

! 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

almMoveWindow("AlmObj_1”, ”Bottom”, 0);

almMoveWindow("AlmObj_1”, ”LineDn”, 3);

almMoveWindow("AlmObj_1”, ”PageUp”, 0);

background image

Funkcje skryptowe

3-7

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

almQuery()

alarmowanie rozproszone

Wykonanie zapytania w celu zaktualizowania obiektu alarmowego.

Składnia

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

ToPri,State,Type);

Parametry

Opis

ObjectName

Nazwa obiektu alarmowego. Przykładowo, AlmObj_1.

AlarmList

Grupa alarmowa lub lista grup objętych zapytaniem o alarmy, np.
"MyGroup" lub zmienna typu Message.

FromPri

Dolny zakres priorytetu alarmów, które mają być wyświetlone,
np. 100, lub zmienna typu Integer.

ToPri

Górny zakres priorytetu, dla którego alarmy mają być
wyświetlone. 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).

! 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

Poniższa instrukcja powoduje wyświetlenie wszystkich alarmów historycznych określonych
w grupie "MyGroup" o priorytecie zawartym pomiędzy 500 i 600. Funkcja ta spowoduje
ograniczenie liczby alarmów wyświetlanych przez obiekt "Alarm1."

AlmQuery("AlmObj_1","MyGroup",500,600,"All","Hist");

almSelectAll()

alarmowanie rozproszone

Odwraca zaznaczenie wszystkich alarmów w obiekcie alarmowym.

Składnia

[Result=]almSelectAll(ObjectName);

Parametry

Opis

ObjectName

Nazwa obiektu alarmowego, np. AlmObj_1.

! 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

If $AccessLevel > 8000 THEN

almSelectAll("AlmObj_1”);

almAckSelect("AlmObj_1”, "Ack Selected by a Manager”);

ENDIF;

background image

3-8

Rozdział 3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

almSelectItem()

alarmowanie rozproszone

Odwraca zaznaczenie podświetlonego elementu w obiekcie alarmowym.

Składnia

[Result=]almSelectItem(ObjectName);

Parametry

Opis

ObjectName

Nazwa obiektu alarmowego, np. AlmObj_1.

! 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

almSelectItem("AlmObj_1”);

almShowStats()

alarmowanie rozproszone

Wyświetla ekran z informacjami statystycznymi obiektu alarmowego.

Składnia

[Result=]almShowStats(ObjectName);

Parametry

Opis

ObjectName

Nazwa obiektu alarmowego, np. AlmObj_1.

! 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

almSlowStats("AlmObj_1”);

ArcCos()

funkcje matematyczne

Dla liczby z przedziału domkniętego [-1,1] funkcja ta oblicza wartość kąta (z zakresu od 0
do 180 stopni), którego cosinus jest równy tej liczbie.

Składnia

Result=ArcCos(Number);

Parametry

Opis

Number

Dowolna liczba, zmienna rzeczywista lub całkowita programu
InTouch.

Uwagi

Wartość funkcji jest zwracana do zmiennej Result.

Przykład

ArcCos(1) zwraca 0

ArcCos(-1) zwraca 180

background image

Funkcje skryptowe

3-9

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

ArcSin()

funkcje matematyczne

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.

Składnia

Result=ArcSin(Number);

Parametry

Opis

Number

Dowolna liczba, zmienna rzeczywista lub całkowita programu
InTouch.

Uwagi

Wartość funkcji jest zwracana do zmiennej Result.

Przykład

ArcSin(1) zwraca 90

ArcSin(-1) zwraca -90

ArcTan()

funkcje matematyczne

Dla danej liczby funkcja ta oblicza wartość kąta (z zakresu od -90 do 90 stopni), którego
tangens jest równy tej liczbie.

Składnia

Result=ArcTan(Number);

Parametry

Opis

Number

Dowolna liczba, zmienna rzeczywista lub całkowita programu
InTouch.

Uwagi

Wartość funkcji jest zwracana do zmiennej Result.

Przykład

ArcTan(1) zwraca 45

ArcTan(0) zwraca 0

background image

3-10

Rozdział 3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

ChangePassword()

bezpieczeństwo

Wyświetla okno dialogowe Change Password pozwalające operatorowi na zmianę
swojego hasła.

Składnia

[Result=]ChangePassword();

Parametry

Opis

[Result]

Przyjmuje jedną z następujących wartości:
0 = Naciśnięty został klawisz Cancel
1 = Naciśnięty został klawisz OK

Uwagi

W aplikacjach z ekranem dotykowym można użyć klawiatury alfanumerycznej.

Przykład

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

Cos()

funkcje matematyczne

Zwraca cosinus kąta podanego w stopniach.

Składnia

Result=Cos(Number);

Parametry

Opis

Number

Dowolna liczba, zmienna rzeczywista lub całkowita programu
InTouch.

Uwagi

Wartość funkcji jest zwracana do zmiennej Result.

Przykład

Cos(90) zwraca 0

Cos(0) zwraca 1

Wave = 50 * Cos(6 * $Minute);

background image

Funkcje skryptowe

3-11

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

DialogStringEntry()

różne

Wyświetla na ekranie klawiaturę alfanumeryczną umożliwiając użytkownikowi zmianę
aktualnej wartości zmiennej tekstowej zdefiniowanej na Liście zmiennych.

Składnia

[Result=]DialogStringEntry(MessageTag_Text,UserPrompt_Text);

Parametry

Opis

Result

Przyjmuje jedną z następujących wartości:
0 = Naciśnięty został klawisz Cancel
1 = Naciśnięty został klawisz 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. Parametr tej funkcji musi zostać podany jako
łańcuch znaków, dlatego nazwa zmiennej musi zostać podana w
cudzysłowie albo przy użyciu pola .Name (bez cudzysłowu).
Dopuszczalne jest również stosowanie jako wskaźnik zmiennej
tekstowej. Porównać z zamieszczonym w dalszej części
przykładem.

UserPrompt_Text

Tekst użytkownika, który ma być wyświetlony w górnej części
klawiatury.

Uwagi

Funkcja jest stosowana głównie w aplikacjach z ekranem dotykowym.

Przykład

Errmsg=DialogStringEntry(MyMessageTag.Name,
"Enter a new string...");

Errmsg=DialogStringEntry("MyMessageTag","Enter a new string...");

Parametry mogą również być wykorzystane w charakterze "wskaźników" do innych
zmiennych, co umożliwia dynamiczne zmiany 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 zastosowanie w połączeniach do wprowadzania danych zmiennych
tekstowych.

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 tekstowej

MyMessageTag (zmienna, która ma być modyfikowana) do zmiennej typu

Memory Message o nazwie MessageTagX}

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 }

background image

3-12

Rozdział 3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

DialogValueEntry()

różne

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.

Składnia

[Result=]DialogValueEntry(ValueTag_Text,

LowLimit,HighLimit,UserPrompt_Text

);

Parametry

Opis

Result

Przyjmuje jedną z następujących wartości:
0 = Naciśnięty został klawisz Cancel
1 = Naciśnięty został klawisz OK
-1 = HighLimit<=LowLimit
-2 = Brak możliwości inicjacji
-3 = Zmienna nie jest zdefiniowana
-4 = Zmienna nie jest zmienną typu Discrete, Integer lub Real
-5 = Brak możliwości 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). 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 Min Value, Min Raw, oraz Min EU, 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 Max Value, Max Raw, oraz Max EU, 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łady

Errmsg=DialogValueEntry(MyIntegerTag.Name, MyIntegerTag.MinEU,
MyIntegerTag.MaxEU, "Enter a new value...");

Errmsg=DialogValueEntry("MyIntegerTag", -100, 100, "Enter a new
value...");

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.

background image

Funkcje skryptowe

3-13

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

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 Memory

Message 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 string..."; {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}

DText()

funkcje tekstowe

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

Składnia

MsgTag=DText(Discrete_Tag,OnMsg,OffMsg);

Parametry

Opis

MsgTag

Zmienna tekstowa .

Discrete_Tag

Zmienna dyskretna (typu Discrete).

OnMsg

Komunikat tekstowy, który będzie wyświetlany, gdy wartość
zmiennej Discrete_Tag wynosi 1 (True, On, Yes).

OffMsg

Komunikat tekstowy, który będzie wyświetlany, gdy wartość
zmiennej Discrete_Tag wynosi 0 (False, Off, No).

Przykład

MessageTag=Dtext(DiscreteTag, DiscreteTag.OnMsg,
DiscreteTag.OffMsg);

If Dtext(D_Tag, "True”, "False”) == "True” THEN

Message=”D_Tag contains a value of 1”;

ELSE

Message=”D_Tag contains a value of 0”;

ENDIF;

background image

3-14

Rozdział 3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

Exp()

funkcje matematyczne

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

Składnia

Result=Exp(Number);

Parametry

Opis

Number

Dowolna liczba, zmienna rzeczywista lub całkowita programu
InTouch.

Uwagi

Liczba e jest podnoszona do potęgi Number, a wynik przypisywany jest do zmiennej
Result.

Przykład

Exp(1) zwraca 2.718...

Zakres argumentów dla tej funkcji: od -88.72 do 88.72.

FileCopy()

system

Kopiuje plik SourceFile do DestFile, podobnie jak polecenie copy systemu DOS czy
funkcja copy systemu Windows.

Składnia

FileCopy(SourceFile,DestFile,DoneTag);

Parametry

Opis

SourceFile

Nazwa pliku źródłowego (do skopiowania), 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łady poniżej).

DoneTag

Nazwa zmiennej używanej przez funkcję FileCopy() do
poinformowania o trwaniu procedury kopiowania. Parametr ten
musi być łańcuchem znaków wskazują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 wartość 1, -1 lub 0. Funkcja FileCopy() jest
wykonywana w tle, dlatego też nie zakłóca innych operacji realizowanych prze program
InTouch. Zmienna DoneTag umożliwia natomiast monitorowanie przez aplikację lub
użytkownika postępu operacji kopiowania. W ten sposób użytkownik może zostać
ostrzeżony o wszelkich błędach, które mogą wystąpić PO zainicjowaniu procedury.
Zmienna ta nie jest równoważna zmiennej Status zastosowanej w przykładzie powyżej,
która wskazuje wyłącznie, czy procedura kopiowania została pomyślnie zainicjowana.

background image

Funkcje skryptowe

3-15

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

Pomyślne zainicjowanie procedury kopiowania powoduje zmianę wartości zmiennej
DoneTag. Wartość ta jest ustawiana na 0 w czasie trwania operacji kopiowania. Jeżeli
wartość jest równa 1, operacja została pomyślnie zrealizowana, natomiast pojawienie się
wartości -1 informuje o wystąpieniu błędu przed zakończeniem procedury.

Zwykle nazwami plików są SourceFile i DestFile. Jeśli jednak za pomocą funkcji
FileCopy() kopiowany jest pojedynczy plik, zamiast nazwy pliku wynikowego można użyć
nazwy katalogu:

FileCopy("C:\DATA.TXT", "C:\BACKUP", "Monitor");

Instrukcja ta spowoduje skopiowanie pliku DATA.TXT do katalogu o nazwie BACKUP na
dysku "C:\”. Po zakończeniu tej operacji zmienna Monitor przyjmie wartość 1.

Jeżeli jednak nazwa SourceFile zawiera znaki wzorca, DestFile MUSI być kartoteką (nie
plikiem), bowiem w przeciwnym wypadku zwrócony zostanie błąd.

FileCopy("C:\*.TXT", "C:\BACKUP", "Monitor");

Instrukcja ta spowoduje skopiowanie wszystkich plików o rozszerzeniu .TXT do katalogu
C:BACKUP. Po zakończeniu tej operacji zmienna Monitor przyjmie wartość 1.

FileDelete()

system

Usuwa niepotrzebne pliki.

Składnia

FileDelete(Filename);

Parametry

Opis

FileName

Nazwa pliku do usunięcia.

Uwagi

Jeśli podany plik zostanie znaleziony i pomyślnie usunięty, funkcja zwraca wartość 1. W
przeciwnym razie funkcja zwraca wartość 0.

Przykład

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.

background image

3-16

Rozdział 3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

FileMove()

system

Działanie tej funkcja ta jest podobna do funkcji FileCopy() z tą różnicą, że powoduje ona
przesunięcie pliku SourceFile w nowe miejsce, a nie skopiowanie go.

Składnia

FileMove(SourceFile,DestFile,DoneTag);

Parametry

Opis

SourceFile

Nazwa pliku źródłowego, 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 trwaniu procedury kopiowania. Parametr ten
musi być łańcuchem znaków wskazują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 kopiowania 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, która przyjmuje wartość 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 przesuwania
pliku, przez aplikację lub użytkownika. W ten sposób użytkownik może zostać ostrzeżony
o wszelkich błędach, które mogą wystąpić PO zainicjowaniu procedury. Nie jest ona
równoważna zmiennej Status zastosowanej w przykładzie powyżej, która wskazuje tylko,
czy procedura przesuwania pliku została pomyślnie zainicjowana.

Po pomyślnym zainicjowaniu procedury przesuwania pliku ustawiana jest wartość
zmiennej DoneTag. Wartość ta jest ustawiana na 0, gdy procedura trwa, na 1 po
pomyślnym zakończeniu procedury lub na -1, jeśli przed zakończeniem kopiowania
wystąpi błąd. Jeżeli wartość jest równa 1, operacja została pomyślnie zrealizowana,
natomiast pojawienie się wartości -1 informuje o wystąpieniu błędu przed zakończeniem
procedury.

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

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.

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

Instrukcja ta spowoduje zmianę nazwy pliku "DATA.TXT" na "DATA.BAK" w katalogu
głównym dysku C: Po zakończeniu tej operacji zmienna Monitor przyjmie wartość 1.

background image

Funkcje skryptowe

3-17

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

FileReadFields()

system

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

Składnia

FileReadFields(Filename,FileOffset,StartTag,NumberOfFields);

Parametry

Opis

FileName

Nazwa pliku źródłowego do odczytu.

FileOffset

Miejsce rozpoczęcia odczytu (w pliku).

StartTag

Nazwa zmiennej zdefiniowanej w programie InTouch, w której
zostanie zapisany pierwszy element odczytany z pliku. Nazwa tej
zmiennej musi kończyć się liczbą (np. MyTag1). Parametr ten
musi być łańcuchem znaków wskazują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).

Przykłady

Jeśli pierwsza linia pliku C:\DATA\FILE.CSV ma postać:

This is text, 3.1416, 5

to instrukcja ta zamieszczona w skrypcie poniżej odczyta tę linię i zapisze "This is text"
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);

Uwaga Długość zmiennych tekstowych w programie InTouch nie może przekraczać 131
znaków.

background image

3-18

Rozdział 3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

FileReadMessage()

system

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

Składnia

FileReadMessage(Filename,FileOffset,Message_Tag,CharsToRead);

Parametry

Opis

FileName

Nazwa pliku źródłowego do odczytu.

FileOffset

Miejsce rozpoczęcia odczytu (w pliku).

Message_Tag

Nazwa zmiennej programu InTouch, w której zostanie zapisany
pierwszy element odczytany z pliku. Maksymalnie można
zapamiętać 131 znaków.

CharsToRead

Jest to liczba bajtów do odczytu z pliku. W przypadku
przetwarzania plików tekstowych, można ustawić wartość
CharsToRead na 0. Spowoduje to odczyt ciągu znaków do
rozpoczęcia kolejnej linii (znak LF).

Przykład

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.

background image

Funkcje skryptowe

3-19

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

FileWriteFields()

system

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

Składnia

FileWriteFields(Filename,FileOffset,StartTag,NumberOfFields);

Parametry

Opis

FileName

Nazwa pliku źródłowego, w którym ma zostać zapisany rekord.
Jeśli plik 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).

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 w pliku. Można użyć tej wartości jako
parametru FileOffset do następnego odczytu.

Poniższa instrukcja spowoduje zapisanie ciągu znaków MyTag1 na końcu pliku
C:\DATA\\FILE.CSV:

FileWriteFields ("C:\DATA\FILE.CSV", -1, "MyTag1", 3);

background image

3-20

Rozdział 3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

FileWriteMessage()

system

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

Składnia

FileWriteMessage(Filename,FileOffset,Message_Tag,LineFeed);

Parametry

Opis

FileName

Nazwa pliku, w którym ma zostać zapisany ciąg znaków. Jeśli
plik 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 odczycie funkcja zwraca nową pozycję położenia w pliku. Można użyć tej wartości jako
parametru FileOffset do następnego zapisu.

Przykład

Poniższa instrukcja zapis zawartości zmiennej MsgTag na końcu pliku
"C:\DATA\FILE.TXT":

FileWriteMessage ("C:\DATA\FILE.TXT", -1, MsgTag, 1);

GetNodeName()

system

Zwraca za pomocą zmiennej tekstowej nazwę stacji NetDDE.

Składnia

GetNodeName(Tagname,NodeNum);

Parametry

Opis

Tagname

Nazwa zmiennej tekstowej programu InTouch, w której zapisana
zostanie nazwa stacji.

NodeNum

Zmienna całkowita, określająca długość zmiennej tekstowej w
znakach.

Uwagi

Funkcja GetNodeName() zastosowana w skrypcie odczytuje nazwę lokalnej stacji i
zapisuje ją jako zmienną Tagname. Parametr NodeNum podaje długość zmiennej w
znakach).

Uwaga Funkcja ta działa wyłącznie jeżeli w środowisku Windows 95 pracuje NetDDE, lub
też jeżeli pracuje NetworkDDE w środowisku Windows NT.

Przykład

GetNodeName("MyNodeTag",131);
If MyNodeTag == "Master” THEN

MessageTag = "This is the Primary Machine!”;

ENDIF;

background image

Funkcje skryptowe

3-21

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

GetPropertyD()

GOT

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

Składnia

[ErrorNumber=]GetPropertyD("ControlName.Property",Tagname);

Parametry

Opis

ControlName

Nazwa obiektu sterującego okien, np. ChkBox_1, lub nazwa
obiektu do wyświetlania alarmów, np. AlmObj_1.

.Property

Właściwość obiektu sterującego okna lub obiektu do
wyświetlania alarmów.

! Więcej informacji na temat pól zmiennych można znaleźć w rozdziale 2 "Pola".
Tagname

Zdefiniowana zmienna programu InTouch, w której zostaje
zapisana odczytana wartość pola (zmienna tego samego typu, co
odczytana wartość).

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

GetPropertyI()

GOT

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

Składnia

[ErrorNumber=]GetPropertyI("ControlName.Property",Tagname);

Parametry

Opis

ControlName

Nazwa obiektu sterującego okien, np. ChkBox_1, lub nazwa
obiektu do wyświetlania alarmów, np. AlmObj_1.

.Property

Właściwość obiektu sterującego okna lub obiektu do
wyświetlania alarmów.

! Więcej informacji na temat pól zmiennych można znaleźć w rozdziale 2 "Pola".
Tagname

Zdefiniowana zmienna programu InTouch, w której zostaje
zapisana odczytana wartość pola (zmienna tego samego typu, co
odczytana wartość).

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

background image

3-22

Rozdział 3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

GetPropertyM()

GOT

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

Składnia

[ErrorNumber=]GetPropertyM("ControlName.Property",Tagname);

Parametry

Opis

ControlName

Nazwa obiektu sterującego okien, np. ChkBox_1, lub nazwa
obiektu do wyświetlania alarmów, np. AlmObj_1.

.Property

Właściwość obiektu sterującego okna lub obiektu do
wyświetlania alarmów.

! Więcej informacji na temat pól zmiennych można znaleźć w rozdziale 2 "Pola".
Tagname

Zdefiniowana zmienna programu InTouch, w której zostaje
zapisana odczytana wartość pola (zmienna tego samego typu, co
odczytana wartość).

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

Hide

różne

Pozwala na ukrycie okna z poziomu skryptu. Funkcja Hide() musi poprzedzać nazwę
każdego okna, które ma być ukryte.

Składnia

Hide Window;

Parametry

Opis

Okno

Nazwa okna lub zmienna tekstowa.

Uwagi

W czasie pracy aplikacji, jeśli okno o podanej nazwie nie istnieje, instrukcja jest
ignorowana. Jeśli celem skryptu jest wyłącznie ukrycie lub wyświetlenia okna, najlepszym
rozwiązaniem jest wykorzystanie połączenia animacyjnego Show Window lub Hide
Window, związanego z przyciskiem.

Przykład

Hide "My Popup Alarm Window";

HideSelf

różne

Ukrywa aktywne okno.

Składnia

HideSelf;

Uwagi

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

background image

Funkcje skryptowe

3-23

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

HTGetLastError()

dane historyczne

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

Składnia

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

Parametry

Opis

Hist_Tag

Nazwa zmiennej typu HistTrend reprezentującej trend
historyczny.

UpdateCount Liczba

całkowita reprezentująca wartość pola .UpdateCount

zmiennej reprezentującej trend.

PenNum

Zmienna typu Integer lub liczba całkowita określająca numer
pisaka (od 1 do 8).

Result

Funkcja zwraca następujące wyniki:
Wynik

Opis

0

Brak błędu.

1

Generalny błąd serwera.

2

Moduł trendów historycznych realizuje poprzednie
zapytanie.

3

Błąd pliku.

4

Serwer nie jest załadowany.

5

Trend lub pisak podany jako parametr funkcji nie
istnieje.

6

Nazwa zmiennej reprezentującej trend nie
występuje na liście zmiennych programu InTouch.

7

Numer pisaka podany jako parametr funkcji nie
mieści się w dopuszczalnym zakresie (od 1 do 8).

Przykład

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
przypisanie tego kodu jako zmiennej całkowitej ResultCode:

[ResultCode=]HTGetLastError("Trend1",Trend1.UpdateCount,3);

Poniższą instrukcję można wykorzystać w wyrażeniu połączenia animacyjnego do
wyświetlania wartości analogowych:

HTGetLastError("Trend1",Trend1.UpdateCount,3);

background image

3-24

Rozdział 3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

HTGetPenName()

dane historyczne

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

Składnia

MessageResult=HTGetPenName(Hist_Tag,UpdateCount,PenNum);

Parametry

Opis

Hist_Tag

Nazwa zmiennej typu HistTrend reprezentującej trend
historyczny.

UpdateCount Liczba

całkowita zawierają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

Poniższa instrukcja powoduje odczytanie nazwy zmiennej przypisanej do pisaka Pen2
trendu związanego ze zmienną Trend1, i jej do zmiennej tekstowej TrendPen:

TrendPen=HTGetPenName("Trend1",Trend1.UpdateCount,2);

HTGetTimeAtScooter()

dane historyczne

Podaje w sekundach czas, jaki upłynął od godziny 00:00:00, 1 stycznia 1970 czasu GMT,
dla podanej pozycji suwaka określonej przez ScootLoc i ScooterNum.

Składnia

IntegerResult=HTGetTimeAtScooter(Hist_Tag,UpdateCount,
ScootNum,ScootLoc);

Parametry

Opis

Hist_Tag

Nazwa zmiennej typu HistTrend reprezentującej trend
historyczny.

UpdateCount Liczba

całkowita zawierająca wartość pola .UpdateCount

zmiennej reprezentującej trend.

ScootNum

Zmienna typu Integer lub liczba całkowita określająca prawy (=1)
lub lewy (=2) suwak.

ScootLoc

Liczba rzeczywista równa wartości pola .ScooterPosRight lub
.ScooterPosLeft zmiennej reprezentującej trend.

Uwagi

W przypadku gdy parametry UpdateCount, ScootNum, i ScootLoc ulegną zmianie,
wymuszane jest uaktualnienie wartości wyrażenia. Zapewnia to obliczanie wartości
wyrażenia po znalezieniu nowych danych, lub po przemieszczeniu suwaka.

Przykład

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

background image

Funkcje skryptowe

3-25

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

HTGetTimeStringAtScooter

(

)

dane historyczne

Zwraca ciąg znaków zawierający czas/datę próbki w pozycji suwaka określonej przez
ScootNum i ScootLoc.

Składnia

MessageResult=HTGetTimeStringAtScooter(Hist_Tag,
UpdateCount,ScootNum,ScootLoc,Format_Text);

Parametry

Opis

Hist_Tag

Nazwa zmiennej typu HistTrend reprezentującej trend
historyczny.

UpdateCount Liczba

całkowita reprezentująca wartość pola .UpdateCount

zmiennej reprezentującej trend.

ScootNum

Zmienna typu Integer lub liczba całkowita określająca prawy (=1)
lub lewy (=2) suwak.

ScootLoc

Liczba rzeczywista równa wartości 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. Jako Format_Text akceptowane są następujące łańcuchy
znaków:
"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

Poniższa instrukcja powoduje odczytanie daty i czasu dla aktualnej pozycji prawego
suwaka trendu reprezentowanego przez zmienną Trend1. Data i czas są zapisywane jako
zmienna tekstowa o nazwie NewRightTimeString w formacie "Time":

NewRightTimeString=HTGetTimeStringAtScooter
("Trend1",Trend1.UpdateCount,2,Trend1.ScooterPosRight,"Time");

background image

3-26

Rozdział 3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

HTGetValue()

dane historyczne

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.

Składnia

RealResult=HTGetValue(Hist_Tag,UpdateCount,PenNum,ValType_Text);

Parametry

Opis

Hist_Tag

Nazwa zmiennej typu HistTrend reprezentującej trend
historyczny.

UpdateCount Liczba

całkowita reprezentująca wartość pola .UpdateCount

zmiennej reprezentującej trend.

PenNum

Zmienna typu Integer lub liczba całkowita określająca numer
pisaka (od 1 do 8).

ValType_Text

Łańcuch znaków określający rodzaj wskaźnika, który ma być
obliczony przez funkcję:
Typ Opis
"PenAverageValue" Wartość średnia dla całego trendu.
"PenMaxValue" Wartość maksymalna dla całego trendu.
"PenMinValue" Wartość minimalna dla całego trendu.
"PenMaxEU" Wartość maksymalna w jednostkach

inżynierskich dla całego trendu.

"PenMinEU" Wartość minimalna w jednostkach

inżynierskich dla całego trendu.

"PenStdDev" Wartość odchylenia standardowego dla całego

trendu.

Uwaga 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

Poniższa instrukcja powoduje odczytanie standardowego odchylenia danych zebranych dla
pola Trend.Pen2.: Wartość ta jest zapamiętywana w zmiennej typu Memory Real o nazwie
LeftHemisphereSD:

LeftHemisphereSD=HTGetValue("Trend1",Trend1.UpdateCount,
2,"PenStdDev");

background image

Funkcje skryptowe

3-27

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

HTGetValueAtScooter()

dane historyczne

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.

Składnia

RealResult=HTGetValueAtScooter(Hist_Tag,UpdateCount,ScootNum,
ScootLoc,PenNum,ValType_Text);

Parametry

Opis

Hist_Tag

Nazwa zmiennej typu HistTrend reprezentującej trend
historyczny.

UpdateCount Liczba

całkowita reprezentująca wartość pola .UpdateCount

zmiennej reprezentującej trend.

ScootNum

Zmienna typu Integer lub liczba całkowita określająca prawy (=1)
lub lewy (=2) suwak.

ScootLoc

Liczba rzeczywista równa wartości 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ć,

Uwaga 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

Wracana jest zmienna typu Memory Real, reprezentująca wartość obliczoną dla
"PenValue". Wracana jest zmienna typu Discrete, reprezentująca wartość obliczoną dla
"PenValid".

Przykład

Poniższa instrukcja powoduje przypisanie zmiennej dyskretnej 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");

background image

3-28

Rozdział 3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

HTGetValueAtZone()

dane historyczne

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.

Składnia

RealResult=HTGetValueAtZone(Hist_Tag,UpdateCount,Scoot1Loc,
Scoot2Loc,PenNum,ValType_Text);

Parametry

Opis

Hist_Tag

Nazwa zmiennej typu HistTrend reprezentującej trend
historyczny.

UpdateCount Liczba

całkowita reprezentująca wartość pola .UpdateCount

zmiennej reprezentującej trend.

Scoot1Loc

Liczba rzeczywista równa wartości 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 po-mię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.

"PenStdDev" Wartość odchylenia standardowego dla obszaru

pomiędzy lewym a prawym suwakiem.

Uwaga 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 ScootLoc i
Scoot2Loc nie daje żadnego rezultatu, i może być stosowane wyłącznie aby wywołać
funkcję w celu uaktualnienia wyświetlanych linii. Funkcja ta, w celu wyznaczenia granic,
korzysta bezpośrednio z pól trendu.ScooterPosLeft i .ScooterPosRight,
przechowywanych w roboczej bazie danych.

Przykład

Zamieszczona poniżej instrukcja oblicza wartość średnią danych pomiędzy lewym a
prawym suwakiem trendu "Trend1", dla pisaka Pen1. Wartość ta jest zapamiętywana w
zmiennej typu Memory Real o nazwie AvgValue.

AvgValue=HTGetValueAtZone("Trend1",Trend1.UpdateCount,
Trend1.ScooterPosLeft,Trend1.ScooterPosRight,1,
"PenAverageValue");

background image

Funkcje skryptowe

3-29

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

HTScrollLeft()

dane historyczne

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

Składnia

HTScrollLeft(Hist_Tag,Percent);

Parametry

Opis

Hist_Tag

Nazwa zmiennej typu HistTrend reprezentującej trend
historyczny.

Percent

Liczba rzeczywista oznaczająca wartość przesunięcia w
procentach długości wykresu.

Przykład

Poniższa instrukcja powoduje przesunięcie wykresu trendu związanego ze zmienną Trend1
o 10% w prawo:

HTScrollLeft("Trend1",10.0);

Jeśli aktualny wykres rozpoczyna się o 12:00:00, a długość wykresu w jednostkach czasu
wynosi 60 sekund, to po wykonaniu tej operacji nowy wykres będzie zaczynał się o
11:59:54.

HTScrollRight()

dane historyczne

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

Składnia

HTScrollRight(Hist_Tag,Percent);

Parametry

Opis

Hist_Tag

Nazwa zmiennej typu HistTrend reprezentującej trend
historyczny.

Percent

Liczba rzeczywista oznaczająca wartość przesunięcia w
procentach długości wykresu.

Przykład

Poniższa instrukcja powoduje przesunięcie wykresu trendu związanego ze zmienną Trend1
o 20% w prawo:

HTScrollRight("Trend1",20.0);

Jeśli aktualny wykres rozpoczyna się o 12:00:00, a długość wykresu w jednostkach czasu
wynosi 60 sekund, to po wykonaniu tej operacji nowy wykres będzie zaczynał się o
12:00:12.

background image

3-30

Rozdział 3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

HTSelectTag()

różne

Wyświetla okno dialogowe Select Tag, 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)).

Składnia

HTSelectTag();

Uwagi

Funkcja HTSelectTag() pokazuje wszystkie zmienne, dla których ustawiono opcję Log
Data. Można jednak za pomocą filtra, zdefiniowanego w Przeglądarce zmiennych,
ograniczyć liczbę wyświetlanych zmiennych. Przykładowo, można wyświetlić wyłącznie
zmienne, których nazwa rozpoczyna się od litery A. NIE jest jednak możliwe
wykorzystanie funkcji HTSelectTag() do wyświetlania wszystkich zmiennych
zdefiniowanych w bazie danych, można wyświetlać wyłącznie zmienne historyczne.

Przykłady

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

HTSetPenName()

dane historyczne

Przypisanie innej zmiennej do pisaka trendu.

Składnia

HTSetPenName(Hist_Tag,PenNum,Tagname);

Parametry

Opis

Hist_Tag

Nazwa zmiennej typu HistTrend reprezentującej trend
historyczny.

PenNum

Zmienna typu Integer lub liczba całkowita równa numerowi
pisaka (od 1 do 8), który ma zostać związany z zmienną
Tagname.

Tagname

Zmienna tekstowa oznaczająca nazwę zmiennej przypisanej
danemu pisakowi.

Uwagi

Jedyną metodą dodawania zmiennych, od dostawcy danych historycznych w czasie pracy
aplikacji, jest korzystanie z funkcji skryptowych.

Przykłady

Zamieszczona poniżej instrukcja powoduje przypisanie zmiennej OutletPressure do pola
Pen3 trendu Trend1.

HTSetPenName("Trend1",3,"OutletPressure");

Zamieszczona poniżej instrukcja powoduje przypisanie zmiennej rozproszonej
HistPrv1.Tag1 do TrendPen4 trendu Trend1.

HTSetPenName("Trend1",TrendPen4,"HistPrv1.Tag1");

Patrz również

HTSelectTag();

background image

Funkcje skryptowe

3-31

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

HTUpdateToCurrentTime()

dane historyczne

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.

Składnia

HTUpdateToCurrentTime(Hist_Tag);

Parametry

Opis

Hist_Tag

Nazwa zmiennej typu HistTrend reprezentującej trend
historyczny.

Przykład

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.

HTZoomIn()

dane historyczne

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.

Składnia

HTZoomIn(Hist_Tag,LockString);

Parametry

Opis

Hist_Tag

Nazwa zmiennej typu HistTrend reprezentującej trend
historyczny.

LockString

Łańcuch znaków określający sposób zmiany skali wykresu.
Typ

Opis

"StartTime" Punkt

początkowy wykresu pozostaje bez zmian.

"Center"

Centralny punkt wykresu pozostaje bez zmian.

"EndTime" Punkt

końcowy wykresu pozostaje bez zmian.

Uwagi

Jeśli pozycje suwaków nie odpowiadają krawędziom wykresu, nowa długość okna wykresu
będzie odpowiadała odległości pomiędzy suwakami (.ScooterPosLeft a
.ScooterPosRight). W takim przypadku parametr LockString nie jest używany. Minimalna
długość okna wykresu wynosi 1 sekundę. Po zmianie skali wykresu, suwaki przyjmą
następujące pozycje: .ScooterPosLeft=0.0 oraz .ScooterPosRight=1.0.

Przykład

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, ale jego długość wynosić będzie tylko 15 sekund.

HTZoomIn("Trend1","StartTime");

background image

3-32

Rozdział 3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

HTZoomOut()

dane historyczne

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.

Składnia

HTZoomOut(Hist_Tag,LockString);

Parametry

Opis

Hist_Tag

Nazwa zmiennej typu HistTrend reprezentującej trend
historyczny.

LockString

Łańcuch znaków określający sposób zmiany skali wykresu.
Typ

Opis

"StartTime" Punkt

początkowy wykresu pozostaje bez zmian.

"Center"

Centralny punkt wykresu pozostaje bez zmian.

"EndTime" Punkt

końcowy wykresu pozostaje bez zmian.

Uwagi

Pozycje suwaków nie mają wpływu na działanie funkcji HTZoomOut, ale po wykonaniu
operacji zmiany skali wykresu przyjmą one następujące wartości: .ScooterPosLeft=0.0
oraz .ScooterPosRight=1.0.

Przykład

Zamieszczona poniżej instrukcja powoduje dwukrotne powiększenie wyświetlanego
wykresu, z zachowaniem tego samego punktu początkowego. Jeśli wykres rozpoczynał się,
przed jego powiększeniem, o godz. 14:15: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. 14:15:00. Długość wykresu nadal wynosić będzie 60 sekund, a środek
rysowanego wykresu przypadał będzie na godz. 14:15:15.

HTZoomOut("Volume","Center");

InfoAppActive()

system

Sprawdza czy podana aplikacja jest uruchomiona.

Składnia

DiscreteResult=InfoAppActive(AppTitle);

Parametry

Opis

AppTitle

Nazwa sprawdzanej aplikacji podana jako łańcuch znaków.

Przykład

InfoAppActive("Microsoft Excel") zwraca

1 {jeżeli uruchomiony}

InfoAppActive("Calculator") zwraca 0 { jeżeli nie jest uruchomiony}

Uwaga: Nazwę danej aplikacji można uzyskać stosując funkcję InfoAppTitle().

Zamieszczony poniżej skrypt 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 uruchamiania drugiej kopii programu Notatnik.
Jeżeli funkcja InfoAppActive zwraca wartość 0 (Notatnik nie jest uruchomiony), następuje
jego uruchomienie.

IF InfoAppActive( InfoAppTitle( "Notepad" ) ) == 1 THEN

ActivateApp InfoAppTitle( "Notepad" );

ELSE

StartApp "Notepad";

ENDIF;

background image

Funkcje skryptowe

3-33

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

InfoAppTitle()

system

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

Składnia

MessageResult=InfoAppTitle("ProgramEXEName”);

Parametry

Opis

ProgramEXEName Łańcuch znaków zawierający nazwę pliku z rozszerzeniem .EXE.

Przykład

Zamieszczona poniżej przykładowa instrukcja z parametrem ProgramEXEName= "calc"
zwróci wartość "Kalkulator". Program nazywa się w rzeczywistości calc.exe. W nazwie
programu nie podawać rozszerzenia EXE.

InfoAppTitle("calc") zwraca "Calculator"

InfoAppTitle("excel") zwraca "Microsoft Excel"

background image

3-34

Rozdział 3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

InfoDisk()

system

Zwraca informacje na temat lokalnego lub sieciowego napędu.

Składnia

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

Parametry

Opis

Drive

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

InfoType

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

Opis

1

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). Parametr ten
wykorzystywany jest wyłącznie w polach wyrażeń połączeń
animacyjnych, można użyć dowolnej wartości w przypadku, gdy
funkcja InfoDisk() wykorzystywana jest w skrypcie, ponieważ
parametr ten nie ma żadnego wpływu na wykonywanie skryptu.

Uwagi

Informacje o dysku określonym parametrem Drive są zwracane jako wartość całkowita.

Przykład

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) zwraca 233869345 {całkowita pojemność w

bajtach}

InfoDisk("C", 2, $Minute) zwraca 3238935 {wolne miejsce w bajtach}

InfoDisk("C", 3, $Minute) zwraca 228388 {całkowita pojemność w

kilobajtach}

InfoDisk("C", 4, $Minute) zwraca 3163 {wolne miejsce w kilobajtach}

Komentarz

1 kilobajt = 1024 bajtów

Podobnie jak w przypadku innych funkcji, które wykorzystują pojedyncze znaki, jeśli
badany łańcuch znaków (lub zmienna tekstowa) zawiera więcej niż jeden znak, testowany
jest tylko pierwszy znak tego łańcucha. Ponieważ funkcja ta korzysta z informacji
dostarczanych przez system operacyjny, może zwracać błędne wartości w przypadku
zainstalowania w komputerze pracującym w systemie operacyjnym Windows 95 dysku o
pojemności większej niż 2 gigabajty.

background image

Funkcje skryptowe

3-35

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

InfoFile()

system

Zwraca informacje o określonym pliku lub kartotece.

Składnia

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

Parametry

Opis

FileName

Łańcuch znaków zawierający nazwę pliku.

InfoType

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

Opis

1

Sprawdza czy zadany plik istnieje. Jeżeli parametr
Filename jest plikiem, zwracana jest wartość 1.
Jeżeli parametr Filename jest podkartoteką,
zwracana jest wartość 2. W przypadku gdy funkcja
nie może znaleźć pliku, zwracana jest wartość 0.

2

Rozmiar pliku (w bajtach).

3

Data i czas zapisu pliku (w sekundach od 1
stycznia 1970).

4

Liczba plików odpowiadających opisowi. Wartości
większe od 1 zostaną zwrócone tylko w przypadku
szukania z zastosowaniem znaków * lub ?, gdy
znalezionych może zostać więcej plików
odpowiadających opisowi.

Trigger

Dowolna zmienna. Funkcja InfoFile jest wykonywana po każdej
zmianie parametru Trigger. Parametr ten wykorzystywany jest
wyłącznie w polach wyrażeń połączeń animacyjnych, można użyć
dowolnej wartości w przypadku, gdy funkcja InfoFile()
wykorzystywana jest w skrypcie, 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

Zamieszczona poniżej przykładowa instrukcja zwraca co minutę następujące informacje:

InfoFile("c:\IT56\view.exe", 1, $Minute) zwraca 1
{pik znaleziony}

InfoFile("c:\InTouch\view.exe", 2, $Minute) zwraca 634960
{rozmiar pliku}

InfoFile("c:\InTouch\view.exe", 3, $Minute) zwraca 736701852

{liczba sekund od 1-1-70}

InfoFile("c:\InTouch\*.exe", 4, $Minute) zwraca 17
{znaleziono 17 plików .EXE }

InfoInTouchAppDir()

system

Zwraca kartotekę aktualnej aplikacji InTouch.

Składnia

MessageResult=InfoInTouchAppDir();

Uwagi

Nazwa katalogu aktualnie uruchomionej aplikacji programu InTouch przypisywana jest do
parametru MessageResult.

Przykład

InfoInTouchAppDir() zwraca "c:\InTouch.32\demoapp1"

background image

3-36

Rozdział 3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

InfoResources()

system

Funkcja ta dostarcza różnych informacji o zasobach systemu.

Składnia

IntegerResult=InfoResources(ResourceType,Trigger);

Parametry

Opis

ResourceType

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

Opis

1

Wolna pamięć GDI.

2

Wolna pamięć Użytkownika.

3

Liczba bajtów aktualnie wolnej pamięci.

4

Liczba aktywnych aplikacji.

Trigger

Funkcja InfoResources() jest wykonywana po każdej zmianie
parametru Trigger. Parametr ten może być dowolną zmienną (bez
ograniczenia do zmiennych systemowych). Parametr ten
wykorzystywany jest wyłącznie w polach wyrażeń połączeń
animacyjnych. W przypadku, gdy funkcja InfoResources()
wykorzystywana jest w skrypcie, można użyć dowolnej wartości
w przypadku, ponieważ parametr ten nie ma żadnego wpływu na
wykonywanie skryptu.

Uwagi

Żądane informacje o zasobach systemu, zgodnie z wartością parametru ResourceType,
zwracane są jako wartość całkowita.

Przykład

Zamieszczona poniżej przykładowa instrukcja zwraca co minutę następujące informacje:

InfoResources(1, $Minute) zwraca 54 {% wolnych}

InfoResources(2, $Minute) zwraca 36 {% wolnych }

InfoResources(3, $Minute) zwraca 11524093 {bajtów}

InfoResources(4, $Minute)

zwraca 14 {zadań}

Przykład

Informacje o zasobach systemu:

Przypadek 1 i Przypadek 2:
Pamięci GDI i Użytkownika zakodowane są na zwracanie 50% w systemach Windows NT i
Windows 95.

Przypadek 3:
W systemie Windows NT i Windows 95 zwracana jest "liczba wolnych bajtów pliku
stronicowania".

Przypadek 4:
W systemie Windows NT i Windows 95 zwracany jest wynik przeszukiwania wszystkich
okien umieszczonych na samej górze. Zliczane są wyłącznie okna widoczne, nie należące
do innych okien. Nie jest to w rzeczywistości "liczba zadań uruchomionych w danej chwili"
w systemie. Najlepszym przybliżeniem tej liczby jest liczba elementów na zakładce
Aplikacje dostępnej po uruchomieniu Menadżera zadań w systemie Windows NT, lub
liczba pozycji wyświetlana na liście po wciśnięciu klawiszy

CTRL

+

ALT

+

DEL

w systemie

Windows 95.

background image

Funkcje skryptowe

3-37

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

Int()

funkcje matematyczne

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

Składnia

IntegerResult=Int(Number);

Parametry

Opis

Number

Dowolna liczba, zmienna rzeczywista lub całkowita 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

Int(4.7) zwraca 4

Int(-4.7) zwraca -5

background image

3-38

Rozdział 3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

IOSetAccessName()

różne

Zmodyfikowanie części application lub topic Nazwy dostępu w czasie wykonywania aplikacji, co pozwala na
zaimplementowanie strategii hot- backup (rezerwacji komunikacji).

Składnia

IOSetAccessName("AccessName”, "NodeName”, "AppName”, "TopicName”);

Parametry

Opis

AccessName

Istniejąca Nazwa dostępu, dla której mają być przypisane nowe
wartości parametrów AppName, i TopicName. Łańcuch znaków
lub zmienna tekstowa.

NodeName

Sieciowa nazwa komputera

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, AppName i TopicName mogą być łańcuchami znaków,
wartościami innych zmiennych programu InTouch, lub wartościami funkcji. Przykładowo,
Nazwa dostępu MyAccess może zostać zmieniona tak, aby wskazywać na aplikację
"EXCEL", oraz temat "Sheet1" przy pomocy polecenia:

Przykład

IOSetAccessName("MyAccess1", "KS1", "EXCEL", "Sheet1");

lub poprzez

Number = 1;

AccNameString = "MyAccess" + Text(Number, "#");

IOSetAccessName(AccNameString, "KS1", "EXCEL", "Sheet1");

W przypadku gdy jako TopicName wprowadzony zostanie pusty łańcuch znaków, Nazwa
dostępu bieżącej aplikacji nie ulegnie zmianie, a Nazwa tematu zostanie zaktualizowana.
Zamieszczona poniżej instrukcja zmienia wartość AppName dla parametru AccessName na
"excel", bez wprowadzania zmian w bieżącej wartości TopicName.

IOSetAccessName("MyAccess2", "KS1", "excel", "");

Podobnie, jeżeli dla parametru AppName wprowadzony zostanie pusty łańcuch znaków ,
bieżąca wartość TopicName nie ulegnie zmianie, a parametr AppName zostanie
zaktualizowany. Zamieszczona poniżej instrukcja zmienia wartość TopicName zmiennej
MyAccess3 na "Sheet2", bez zmiany wartości AppName.

IOSetAccessName("MyAccess3","KS1", "", "Sheet2");

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

background image

Funkcje skryptowe

3-39

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

IOSetItem()

różne

Zmienia nazwę dostępu i/lub nazwę pozycji w polu .Reference zmiennej typu I/O.

Składnia

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

Parametry

Opis

Tagname

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

AccessName

Nowa Nazwa dostępu

Item

Nowa Nazwa pozycji

Przykłady

IOSetItem(TagName, AccessName, Item)

Zmienna, Nazwa dostępu, i Nazwa tematu mogą być łańcuchami znaków, wartościami
innych zmiennych programu InTouch, lub wartościami funkcji. Przykładowo, instrukcja
zamieszczona poniżej zmienia pole .Reference zmiennej "MyTag1" na Nazwę dostępu
"excel" i pozycję "R1C1":

IOSetItem("MyTag1", "excel", "R1C1");

lub poprzez

Numer = 1;
TagNameString =
"MyTag" + Text(Number, "#");
IOSetItem(TagNameString,
"excel", "R1C1");

Jeżeli jako wartość parametrów AccessName i Item podany będzie pusty łańcuch znaków
(""), zmienna zostanie dezaktywowana. Przykładowo, w celu dezaktywacji zmiennej
"MyTag2" należy wpisać:

IOSetItem("MyTag2", "", "");

Podobnie, jeżeli jako wartość parametry Item wprowadzony zostanie pusty łańcuch
znaków, bieżąca wartość pozycji nie ulegnie zmianie, a parametr AccessName zostanie
zaktualizowana. Zmiana nazwy dostępu dla zmiennej "MyTag3" na "excel2", tak jak to
przedstawiono poniżej, nie spowoduje zmiany bieżącej wartości pozycji"

IOSetItem("MyTag3", "excel2", "");

Podobnie, jeżeli jako parametr AccessName wprowadzony zostanie pusty łańcuch znaków ,
bieżąca wartość pozycji nie ulegnie zmianie, a parametr AccessName zostanie
zaktualizowany. Zmiana Nazwy pozycji dla zmiennej "MyTag3" na "R1C2", tak jak to
przedstawiono poniżej, nie spowoduje zmiany bieżącej wartości Nazwy dostępu:

IOSetItem("MyTag4", "", "R1C2");

background image

3-40

Rozdział 3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

IsAnyAsyncFunctionBusy()

system

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.

Składnia

DiscreteTag=IsAnyAsyncFunctionBusy(timeout);

Parametry

Opis

DiscreteTag

Zmienna typu dyskretnego której wartość ustalana jest w
następujący sposób:
Jeżeli przekroczony został czas oczekiwania na zakończenie
wykonywania wszystkich funkcji QuickFunction, wartość
zmiennej ZmiennaDyskretna ustawiana jest na 1
Jeżeli nie jest wykonywana żadna funkcja asynchroniczna,
wartość tej zmiennej ustawiana jest natychmiast na 0, lub też
funkcja QuickFunction będzie czekać przez okres czasu, podany
w parametrze timeout. Jeżeli po upływie okresu czasu
określonego parametrem timeout, żadna funkcja QuickFunction
nie będzie w trakcie wykonywania, wartość tej zmiennej zostanie
ustawiona na 0.

timeout

Wartość całkowita podająca w sekundach okres czasu, w ciągu
którego będzie sprawdzane, czy jest uruchomiona funkcja
asynchroniczna.

Przykład

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ę.
Skorzystać z następującego skryptu On Show związanego z oknem.

IF IsAnyAsyncFunctionBusy(120) == 1 THEN

SHOW "SQL Connection Error Dialog";

ENDIF;

background image

Funkcje skryptowe

3-41

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

Log()

funkcje matematyczne

Funkcja ta oblicza wartość logarytmu naturalnego z podanej liczby.

Składnia

RealResult=Log(Number);

Parametry

Opis

Number

Dowolna liczba, zmienna rzeczywista lub całkowita programu
InTouch.

Uwagi

Logarytm naturalny z liczby Number jest obliczany i przypisywany do zmiennej
RealResult. Wartość logarytmu naturalnego z liczby 0 jest nie określona.

Przykład

Log(100) zwraca 4.605...

Log(1) zwraca 0

LogMessage

różne

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

Składnia

LogMessage("Message_Tag”);

Parametry

Opis

Message_Tag

Łańcuch znaków, który ma zostać zapisany w oknie programu
WWLogger. Łańcuch znaków lub zmienna tekstowa.

Uwagi

Funkcja ta jest bardzo użytecznym narzędziem do szukania przyczyn niepoprawnego
wykonywania skryptów. Umieszczenie funkcji LogMessage() w odpowiednim miejscu w
skrypcie, pozwala na wyznaczenie kolejności wykonywania, ocenę pracy skryptów, oraz
identyfikację wartości zmiennych, przed ich zmianą, a po przekazaniu ich do skryptu.
Każdy komunikat wysyłany do programu Wonderware Logger ma określoną dokładnie
godzinę i datę.

Przykład

LogMessage("Report Script is Running");

Powyższa instrukcja powoduje zapisanie następującego komunikatu w oknie programu
WWLogger:
94/01/14 15:21:14 WWSCRIPT Message: Skrypt z raportem uruchomiony

LogMessage("The Value of MyTag is " + Text(MyTag, "#”));

MyTag+MyTag + 10;

LogMessage("The Value of MyTag is " + Text(MyTag, "#”));

background image

3-42

Rozdział 3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

LogN()

funkcje matematyczne

Zwraca wartość logarytmu o podstawie n z liczby x.

Składnia

Result=LogN(Number,Base);

Parametry

Opis

Number

Dowolna liczba, zmienna rzeczywista lub całkowita programu
InTouch.

Base

Podstawa logarytmu (liczba rzeczywista). Liczba lub zmienna
całkowita.

Uwagi

Wartość podstawy nie może być równa 1.

Przykład

LogN(8, 3) zwraca 1.89279...

LogN(NumberTag, BaseTag) zwraca 0.564...if NumberTag contains 3 and
BaseTag contains 7.

Pi()

funkcje matematyczne

Zwraca wartość liczby Pi.

Składnia

RealResult=Pi();

Przykład

Pi() zwraca 3.1415926...

background image

Funkcje skryptowe

3-43

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

PlaySound()

różne

Odtwarza zadany plik dźwiękowy w formacie .wav, lub też element podany w sekcji
[sounds] pliku

WIN

.

INI

za pomocą urządzenia do odtwarzania dźwięku w Windows (o ile

jest zainstalowane).

Składnia

PlaySound("SoundName”,Flags);

Parametry

Opis

SoundName

Łańcuch znaków lub zmienna tekstowa, zawierająca nazwę pliku
dźwiękowego do odtworzenia.

Flags

Parametr Flags może mieć jedną z następujących wartości:
Typ

Opis

0

Asynchroniczne odtworzenie dźwięku (opcja
domyślna).

1

Synchroniczne odtworzenie dźwięku.

2

Nie zostanie odtworzony dźwięk domyślny. Jako
SoundName można podać nazwę dowolnego pliku
typu .wav. Może to być również dowolna nazwa z
sekcji [Sounds] pliku

WIN

.

INI

.

3

Wartość ta nie jest używana!

4

Wskaźnik do pliku w pamięci. Wartość ta nie jest
wykorzystywana przy pisaniu skryptów.

5-7 Wartość ta nie jest używana!
8

Powtarzanie dźwięku do momentu ponownego
wywołania funkcji PlaySound().

Przykład

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 pliku 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 podany plik .wav nie może zostać
znaleziony, kliknąć menu Start, a następnie kolejno Ustawienia, Panel sterowania i
Dźwięki w celu skonfigurowania domyślnych dźwięków. Jeśli jednak pliku tego nie można
znaleźć, żaden dźwięk nie zostanie odtworzony.

PrintHT()

dane historyczne

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.

Składnia

PrintHT("Trend_Tag");

Parametry

Opis

Trend_Tag

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

Uwagi

Brak

Przykład

PrintHT("HistTrend1");

background image

3-44

Rozdział 3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

PrintWindow()

różne

Drukuje określone okno.

Składnia

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

Parametry

Opis

Okno

Nazwa okna przeznaczonego do wydruku. Łańcuch znaków lub
zmienna tekstowa.

Left

Liczba zmiennoprzecinkowa oznaczająca wielkość lewego
marginesu w calach. Liczba lub zmienna typu rzeczywistego.

Top

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, 0 lub 1, wykorzystywana jeżeli wartość Width
lub Height jest równa 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.

Uwaga 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 czasie pracy
aplikacji, zamiast funkcji PrintHT() i wydruku inicjowanego przez operatora z poziomu
okna dialogu trendu historycznego zaleca się używanie funkcji PrintWindow().

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

background image

Funkcje skryptowe

3-45

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

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.

Uwaga 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ą, a nie
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 przeznaczona jest do drukowania alarmów, aby móc wykorzystywać funkcję
PrintWindow() konieczna jest jeszcze jedna drukarka.

Przykłady

Zamieszczone poniżej przykładowe skrypty warunkowe ON TRUE drukują trzy stronicowy
raport, codziennie o godz. 8:30.

Condition:

$Hour == 8 AND $Minute == 30

Script Body:

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 zwracana jest wartość 0. W ten sposób
można monitorować wykonanie funkcji.

Status=PrintWindow("Shift Summary",1,1,0,0,0);

Status jest zmienną dyskretną i może przyjmować wartości 0 lub 1.

background image

3-46

Rozdział 3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

RecipeDelete()

receptury

Funkcja ta powoduje usunięcie receptury z zadanego pliku.

Składnia

RecipeDelete("Filename","RecipeName");

Parametry

Opis

FileName

Nazwa pliku z recepturami. Łańcuch znaków lub zmienna
tekstowa.

RecipeName

Nazwa receptury w pliku o podanej nazwie, którego dotyczą
operacje wykonywane przez funkcję. Parametr ten musi zostać
podany przez użytkownika w przypadku funkcji RecipeLoad(),
RecipeSave() oraz RecipeDelete(). Funkcja
RecipeSelectRecipe() zwraca natomiast wartość tego parametru.
Łańcuch znaków lub zmienna tekstowa.

Przykład

Instrukcja zamieszczona poniżej powoduje usunięcie receptury "Recipe1" z pliku
RECFILE.CSV.

RecipeDelete("c:\recipe\recfile.csv", "Recipe1");

RecipeGetMessage()

receptury

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

Składnia

RecipeGetMessage(Analog_Tag,Message_Tag,Number);

Parametry

Opis

Analog_Tag

Zmienna analogowa zawierająca kod błędu.

Message_Tag

Zmienna tekstowa zawierająca komunikat związany z kodem
błędu.

Number

Parametr ten określa maksymalną długość łańcucha znaków
przypisywanego do zmiennej Message_Tag.. Zmienne tekstowe w
programie InTouch mogą przyjmować maksymalną długość 131
znaków. Jeśli maksymalna długość zmiennych 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

Zastosowanie funkcji RecipeGetMessage()w skrypcie związanym ze zmianą danych
umożliwia zapisanie kodu błędu do zmiennej analogowej, a związanego z kodem
komunikat może być przypisany do zmiennej tekstowej:

Data Change Script Tagname[.field]:ErrorCode

Script body:RecipeGetMessage(ErrorCode, ErrorMessage,131);

Skrypt ten będzie wykonywany po każdorazowej zmianie wartości zmiennej analogowej
ErrorCode. Spowoduje to odczytanie przez funkcję RecipeGetMessage() aktualnej
wartości zmiennej ErrorCode, oraz zapisanie komunikatu towarzyszącego tej wartości do
zmiennej ErrorMessage.

ErrorCode = RecipeLoad ("c:\App\recipe.csv","Unit1","cookies");

RecipeGetMessage(ErrorCode, ErrorMessageTag, 131);

background image

Funkcje skryptowe

3-47

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

RecipeLoad()

receptury

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

Składnia

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

Parametry

Opis

FileName

Nazwa pliku z recepturami. Parametrem FileName może być stała
tekstowa, lub zmienna tekstowa zawierająca nazwę pliku z
szablonami receptur.

UnitName

Nazwa zestawu zmiennych w pliku receptur, którego dotyczą
operacje wykonywane przez funkcję. Funkcja RecipeLoad()
wymaga od użytkownika podania parametru UnitName. Funkcja
RecipeSelectUnit() zwraca wartość tego parametru. Parametrem
UnitName może być stała tekstowa lub zmienna tekstowa
zawierająca nazwę modułu.

RecipeName

Nazwa receptury w podanym pliku. Funkcje RecipeLoad(),
RecipeSave() i RecipeDelete() wymagają od użytkownika
podania parametru RecipeName. Funkcja RecipeSelectRecipe()
zwraca natomiast wartość tego parametru. Parametr RecipeName
może być podany jako łańcuch znaków lub jako zmienna
programu InTouch (pamięciowa lub DDE).

Przykład

Instrukcja zamieszczona poniżej powoduje załadowanie zestawu wartości zdefiniowanych
jako receptura "Recipe1" w pliku RECFILE.CSV do zestawu zmiennych "Unit1".

RecipeLoad("c:\recipe\recfile.csv", "Unit1", "Recipe1");

background image

3-48

Rozdział 3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

RecipeSave()

receptury

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

Składnia

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

Parametry

Opis

FileName

Nazwa pliku z recepturami. Parametrem FileName może być stałą
tekstową, lub zmienną tekstową zawierająca nazwę pliku z
szablonami receptur.

UnitName

Nazwa zestawu zmiennych w pliku receptur, którego dotyczą
operacje wykonywane przez funkcję. Funkcja RecipeLoad()
wymaga od użytkownika podania parametru UnitName. Funkcja
RecipeSelectUnit() zwraca wartość do tego parametru.
Parametrem UnitName może być stała tekstowa lub zmienna
tekstowa zawierająca nazwę modułu.

RecipeName

Nazwa receptury w podanym pliku FileName. Funkcje
RecipeLoad(), RecipeSave() i RecipeDelete() wymagają od
użytkownika podania parametru RecipeName. Funkcja
RecipeSelectRecipe() zwraca natomiast wartość tego parametru.
Parametr RecipeName może być zadany jako łańcuch znaków lub
jako zmienna programu InTouch (pamięciowa lub DDE).

Przykład

Instrukcja zamieszczona poniżej powoduje zapisanie zmian dokonanych w recepturze o
nazwie "Recipe3" w pliku o nazwie RECFILE.CSV. Jeżeli w pliku recfile.csv nie ma
receptury Recipe3, zostanie ona utworzona. Wartości zostaną przypisane zmiennym
zdefiniowanym dla zestawu Unit2:

RecipeSave("c:\recipe\recfile.csv", "Unit2", "Recipe3");

background image

Funkcje skryptowe

3-49

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

RecipeSelectNextRecipe()

receptury

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

Składnia

RecipeSelectNextRecipe("Filename", RecipeName, Number);

Parametry

Opis

FileName

Nazwa pliku z recepturami. Nazwa ta może być zadana jako
łańcuch znaków lub jako zmienna programu InTouch
(pamięciowa lub DDE).

RecipeName

Nazwa receptury (Recipe) w podanym pliku FileName. Parametr
ten musi zostać podany przez użytkownika w przypadku funkcji
RecipeLoad(), RecipeSave() oraz RecipeDelete(). Funkcja
RecipeSelectRecipe() zwraca natomiast wartość tego parametru.
Parametr RecipeName może być zadany jako łańcuch znaków lub
jako zmienna programu InTouch (pamięciowa lub DDE).

Number

Jeśli zadaniem funkcji jest wypełnienie zmiennej tekstowej
znakami, pole to służy do zadawania maksymalnej długości
zapisywanego łańcucha znaków. Zmienne tekstowe w programie
InTouch mogą przyjmować maksymalną długość 131 znaków.
Jeśli maksymalna długość zmiennych nie jest ograniczona z
innych względów, należy przyjmować wartość tego parametru
równą 131. Parametr Number może być wartością stałą lub
zmienną programu InTouch.

Przykład

Instrukcja zamieszczona poniżej powoduje odczytanie aktualnej wartości zmiennej
tekstowej RecipeName i wybranie z pliku następnej receptury. Jeśli zmienna RecipeName
nie ma żadnej przypisanej wartości lub nie może zostać znaleziona, funkcja zwraca nazwę
pierwszej receptury w pliku. Jeśli zmienna RecipeName zawiera aktualnie nazwę ostatniej
receptury w pliku, jej wartość pozostaje bez zmian. (Receptury są zapisywane w pliku w
kolejności ich tworzenia.)

RecipeSelectNextRecipe("c:\recipe\recfile.csv", RecipeName, 131);

background image

3-50

Rozdział 3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

RecipeSelectPreviousRecipe()

receptury

Funkcja ta powoduje wybranie z pliku receptur poprzedniej receptury.

Składnia

RecipeSelectPreviousRecipe("Filename",RecipeName,Number);

Parametry

Opis

FileName

Nazwa pliku z recepturami. Nazwa ta może być zadana jako
łańcuch znaków lub jako zmienna programu InTouch
(pamięciowa lub DDE).

RecipeName

Nazwa receptury w podanym pliku FileName. Parametr ten musi
zostać podany przez użytkownika w przypadku funkcji
RecipeLoad(), RecipeSave() oraz RecipeDelete(). Funkcja
RecipeSelectRecipe() zwraca natomiast wartość tego parametru.
Parametr RecipeName może być zadany jako łańcuch znaków lub
jako zmienna programu InTouch (pamięciowa lub DDE).

Number

Jeśli zadaniem funkcji jest wypełnienie zmiennej tekstowej
znakami, pole to służy do zadawania maksymalnej długości
zapisywanego łańcucha znaków. Zmienne tekstowe w programie
InTouch mogą przyjmować maksymalną długość 131 znaków.
Jeśli maksymalna długość zmiennych nie jest ograniczona z
innych względów, należy przyjmować wartość tego parametru
równą 131. Parametr Number może być wartością stałą lub
zmienną programu InTouch.

Przykład

Instrukcja zamieszczona poniżej powoduje odczytanie aktualnej wartości zmiennej
tekstowej RecipeName i wybranie z pliku poprzedniej receptury. Wrócona wartość zostanie
zapamiętana w RecipeName, zastępując poprzednią wartość. Jeśli zmienna RecipeName
zawiera aktualnie nazwę pierwszej receptury w pliku, jej wartość pozostaje bez zmian. Jeśli
zmienna RecipeName zawiera aktualnie nazwę ostatniej receptury w pliku, jej wartość
pozostaje bez zmian. (Receptury są zapisywane w pliku w kolejności ich tworzenia.)

RecipeSelectPreviousRecipe("c:\recipe\recfile.csv", RecipeName,
131);

background image

Funkcje skryptowe

3-51

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

RecipeSelectRecipe()

receptury

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

Składnia

RecipeSelectRecipe("Filename",RecipeName,Number);

Parametry

Opis

FileName

Nazwa pliku z recepturami. Nazwa ta może być zadana jako
łańcuch znaków lub jako zmienna programu InTouch
(pamięciowa lub DDE).

RecipeName

Nazwa receptury w podanym pliku FileName. Parametr ten musi
zostać podany przez użytkownika w przypadku funkcji
RecipeLoad(), RecipeSave() oraz RecipeDelete(). Funkcja
RecipeSelectRecipe() natomiast zwraca wartość tego parametru.
Parametr RecipeName może być zadany jako łańcuch znaków lub
jako zmienna programu InTouch (pamięciowa lub DDE).

Number

Jeśli zadaniem funkcji jest wypełnienie zmiennej tekstowej
znakami, pole to służy do zadawania maksymalnej długości
zapisywanego łańcucha znaków. Zmienne tekstowe w programie
InTouch mogą przyjmować maksymalną długość 131 znaków.
Jeśli maksymalna długość zmiennych nie jest ograniczona z
innych względów, należy przyjmować wartość tego parametru
równą 131. Parametr Number może być wartością stałą lub
zmienną programu InTouch.

Przykład

Zamieszczona poniżej instrukcja powoduje otwarcie okna dialogowego Select a Recipe:

RecipeSelectRecipe("c:\recipe\recfile.csv", RecipeName, 131);

Po wybraniu z okna dialogowego żądanej receptury, jej nazwa jest zwracana za pomocą
zmiennej RecipeName.

background image

3-52

Rozdział 3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

RecipeSelectUnit()

receptury

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

Składnia

RecipeSelectUnit("Filename", UnitName,Number);

Parametry

Opis

FileName

Nazwa pliku z recepturami. Nazwa ta może być zadana jako
łańcuch znaków lub jako zmienna programu InTouch
(pamięciowa lub DDE).

UnitName

Nazwa zestawu zmiennych w pliku receptur, którego dotyczą
operacje wykonywane przez funkcję. Funkcja RecipeLoad()
wymaga od użytkownika podania parametru UnitName. Funkcja
RecipeSelectUnit() zwraca wartość do tego parametru. Parametr
RecipeName może być zadany jako łańcuch znaków lub jako
zmienna programu InTouch (pamięciowa lub DDE).

Number

Jeśli zadaniem funkcji jest wypełnienie zmiennej tekstowej
znakami, pole to służy do zadawania maksymalnej długości
zapisywanego łańcucha znaków. Zmienne tekstowe w programie
InTouch mogą przyjmować maksymalną długość 131 znaków.
Jeśli maksymalna długość zmiennych nie jest ograniczona z
innych względów, należy przyjmować wartość tego parametru
równą 131. Parametr Number może być wartością stałą lub
zmienną programu InTouch.

Przykład

Zamieszczona poniżej instrukcja powoduje otwarcie okna dialogowego Select a Unit:

RecipeSelectUnit("c:\recipe\recfile.csv", UnitName, 131);

Po wybraniu z okna dialogowego zestawu, jego nazwa jest zwracana za pomocą zmiennej
UnitName.

Uwaga Zarówno funkcja RecipeSelectRecipe(), jak i funkcja RecipeSelectUnit()
używane w połączeniu z funkcją RecipeLoad().

" Więcej informacji na temat stosowania kombinacji funkcji można znaleźć w rozdziale

"Combining Recipe Functions" podręcznika Recipe Manager User's Guide.

background image

Funkcje skryptowe

3-53

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

RestartWindowViewer

system

Pozwala użytkownikowi na sterowane zamknięcie i ponowne uruchomienie programu
WindowViewer.

Składnia

RestartWindowViewer;

Uwagi

Funkcja ta powoduje automatyczne zamknięcie, a potem natychmiastowe otwarcie
programu WindowViewer. Pozwala to na uaktualnianie aplikacji w przypadku nie
korzystania z funkcji automatycznego uaktualniania w architekturze NAD (Network
Application Development). Funkcja ta może zostać wykorzystana wraz ze zmienną
$ApplicationChanged do sprawdzenia czy aplikacja została uaktualniona, i czy ma być
zamknięta przez użytkownika. W przypadku korzystania z opcji NAD, Notify Operator,
operator może spowodować opóźnienie uaktualniania, jak również można tę funkcję
stosować w skrypcie związanym z przyciskiem. Pozwala to operatorowi na automatyczne
zamknięcie i ponowne uruchomienie programu WindowViewer w dogodnym momencie.

Patrz również

$ApplicationChanged

Round()

funkcje matematyczne

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

Składnia

RealResult=Round(Number,Precision);

Parametry

Opis

Number

Dowolna liczba, zmienna rzeczywista lub całkowita 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łady

Round(4.3, 1) zwraca 4

Round(4.3, .01) zwraca 4.30

Round(4.5, 1) zwraca 5

Round(-4.5, 1) zwraca -5

Round(106, 5) zwraca 105

Round(43.7, .5) zwraca 43.5

Patrz również

Trunc()

background image

3-54

Rozdział 3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

SendKeys

różne

Wysyła sekwencję klawiszy do aplikacji. Funkcja SendKeys 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.

Składnia

SendKeys KeySequence;

Parametry

Opis

KeySequence

Dowolna sekwencja klawiszy lub zmienna tekstowa InToucha.

Uwagi

Aby zasymulować naciśnięcie kilku klawiszy, należy uszeregować kody wprowadzanych
znaków. Przykładowo, w celu wysłania symbolu dolara ($) i znaku (b), należy wprowadzić
$b. Poniżej zamieszczono listę kodów różnych klawiszy klawiatury komputera:
Klawisze

Kod

Klawisze

Kod

BACKSPACE

{BACKSPACE} lub {BS}HOME

{HOME}

BREAK

{BREAK}

INSERT

{INSERT}

CAPSLOCK

{CAPSLOCK}

LEFT

{LEFT}

DELETE

{DELETE} 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

Kod

SHIFT +
CTRL ^
ALT %

background image

Funkcje skryptowe

3-55

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

Przykłady

Jeśli dwa klawisze mają zostać wciśnięto jednocześnie, wymagany jest nawias przy kodzie
drugiego klawisza. Instrukcja zamieszczona poniżej zastępuje przytrzymanie naciśniętego
klawisza CTRL, naciśnięcie klawisza ALT, a po nim wprowadzenie litery p:

SendKeys "^(%(p))";

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 do wprowadzania hasła 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}";

SetDDEAppTopic()

różne

Począwszy od wersji 7.0 programu InTouch, funkcja ta zastąpiona została przez
IOSetAccessName. Porównać IOSetAccessName.

! Więcej informacji na temat funkcji IOSetAccessName podano w odpowiednim

punkcie niniejszego podręcznika.

SetDDEItem()

różne

Począwszy od wersji 7.0 programu InTouch, funkcja ta zastąpiona została przez
IOSetItem. Porównać IOSetItem.

! Więcej informacji na temat funkcji IOSetItem podano w odpowiednim punkcie

niniejszego podręcznika.

background image

3-56

Rozdział 3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

SetPropertyD()

GOT

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

Składnia

[ErrorNumber=]SetPropertyD("ControlName.Property", DiscreteTag);

Parametry

Opis

ControlName

Nazwa obiektu sterującego okien, np. ChkBox_1, lub nazwa
obiektu do wyświetlania alarmów, np. AlmObj_1.

.Property

Właściwość obiektu sterującego okna lub obiektu do
wyświetlania alarmów.

! Więcej informacji na temat pól zmiennych można znaleźć w rozdziale 2 "Pola".
DiscreteTag

Wartość dyskretna (0 lub 1) lub zmienna dyskretna programu
InTouch, której wartość zostanie zapisana jako wartość
odpowiedniego pola wskutek wykonania funkcji. Typowe
zastosowanie:
0 = Obiekt sterujący jest nieaktywny
1 = Obiekt sterujący jest aktywny

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

SetPropertyI()

GOT

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

Składnia

[ErrorNumber=]SetPropertyI("ControlName.Property", Integer);

Parametry

Opis

ControlName

Nazwa obiektu sterującego okien, np. ChkBox_1, lub nazwa
obiektu do wyświetlania alarmów, np. AlmObj_1.

.Property

Właściwość obiektu sterującego okna, lub obiektu do
wyświetlania alarmów.

! Więcej informacji na temat pól zmiennych można znaleźć w rozdziale 2 "Pola".
Integer

Liczba lub zmienna całkowita.

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

background image

Funkcje skryptowe

3-57

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

SetPropertyM()

GOT

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

Składnia

[ErrorNumber=]SetPropertyM("ControlName.Property", "MessageTag");

Parametry

Opis

ControlName

Nazwa obiektu sterującego okien, np. ChkBox_1, lub nazwa
obiektu do wyświetlania alarmów, np. AlmObj_1.

.Property

Właściwość obiektu sterującego okna, lub obiektu do
wyświetlania alarmów.

! Więcej informacji na temat pól zmiennych można znaleźć w rozdziale 2 "Pola".
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.

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

Sgn()

funkcje matematyczne

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

Składnia

IntegerResult=Sgn(Number);

Parametry

Opis

Number

Dowolna liczba, zmienna rzeczywista lub całkowita programu
InTouch.

Uwagi

Jeżeli parametr będzie liczbą dodatnią, zwrócona zostanie wartość 1. Jeśli parametr jest
ujemny, zwrócona zostanie wartość -1, a w przypadku zera funkcja zwraca 0.

Przykłady

Sgn(425) zwraca 1

Sgn(0) zwraca 0

Sgn(-37.3) zwraca -1

background image

3-58

Rozdział 3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

Show

różne

Wyświetlenie określonego okna. (Nazwa okna musi być ujęta w cudzysłów.)

Składnia

Show "Window";

Parametry

Opis

Window

Nazwa okna, które ma zostać wyświetlone. Łańcuch znaków lub
zmienna tekstowa.

Uwagi

Window musi być nazwą istniejącego okna lub okna, które zostanie utworzone. W czasie
pracy aplikacji, jeśli okno o podanej nazwie nie istnieje, instrukcja jest ignorowana. Jeśli
nazwa okna zmieni się, musi ona zostać zmieniona również w skrypcie.

Przykład

Show "Alarm Summary Window";

Uwaga Jeśli celem skryptu jest tylko ukrywanie lub wyświetlanie okna, zaleca się
wykorzystanie połączenia animacyjnego Show Window lub Hide Window. W przypadku
używania tych połączeń, jeśli nazwa okna ulegnie zmianie, InTouch automatycznie dokona
zmian.

ShowAt()

różne

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

Składnia

ShowAt("Window",Horiz,Vert);

Parametry

Opis

Window

Nazwa okna. Łańcuch znaków lub zmienna tekstowa.

Horiz

Współrzędna pozioma. Parametr ten może być wartością stałą lub
zmienną programu InTouch.

Vert

Współrzędna pionowa. Parametr ten może być wartością stałą lub
zmienną programu InTouch.

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

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 umożliwić dynamiczną zmianę pozycji okna w czasie wykonywania aplikacji, ze
zmiennymi pamięciowymi zastosowanymi jako parametry funkcji, np. TagHoriz i TagVert
można powiązać obiekty służące do wprowadzania danych (połączenia animacyjne). 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 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()

background image

Funkcje skryptowe

3-59

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

ShowHome

różne

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.

Składnia

ShowHome;

ShowTopLeftAt()

różne

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

Składnia

ShowTopLeftAt("Window",Horiz,Vert);

Parametry

Opis

Window

Nazwa okna. Łańcuch znaków lub zmienna tekstowa.

Horiz

Współrzędna pozioma Parametr ten może być wartością stałą lub
zmienną programu InTouch.

Vert

Współrzędna pionowa Parametr ten może być wartością stałą lub
zmienną programu InTouch.

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.

Patrz również

ShowAT()

Sin()

funkcje matematyczne

Zwraca sinus kąta podanego w stopniach.

Składnia

Result=Sin(AngleNumber);

Parametry

Opis

AngleNumber

Wartość kąta w stopniach. Dowolna liczba, zmienna rzeczywista
lub całkowita programu InTouch.

Uwagi

Wartość tej funkcji jest przypisywana do zmiennej Result.

Przykład

Sin(90) zwraca 1

Sin(0) zwraca 0

wave = 100 * sin (6 * $second);

Patrz również

Cos(), Tan()

background image

3-60

Rozdział 3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

SPCConnect()

SPC

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 poinformowania SPC, jaki użytkownik jest przy stanowisku:

Składnia

SPCConnect("User”,”Password”);

Parametry

Opis

User

Nazwa bazy danych użytkownika. Łańcuch znaków lub zmienna
tekstowa.

Hasło.

Hasło użytkownika. Łańcuch znaków lub zmienna tekstowa.

Uwagi

Wykonanie tej funkcji spowoduje połączenie użytkownika z baza danych, oraz rozpoczęcie
automatycznego odczytywania zestawów danych, w oparciu o wprowadzony przez
użytkownika identyfikator. Jeżeli w bazie danych nie zostało zdefiniowane hasło, można
wprowadzić następujący skrypt:

Przykład

SPCConnect("User1", "");

SPCDisconnect()

SPC

Funkcja ta służy do odłączania użytkownika od bazy danych SPC Pro. Wykonanie tej
funkcji spowoduje przerwanie zbierania danych z wszystkich zestawów danych
przypisanych do użytkownika.

Składnia

SPCDisconnect();

Uwagi

Wykonanie tej funkcji spowoduje odłączenie użytkownika od bazy danych, oraz
zatrzymanie automatycznego odczytywania zestawów danych.

Przykład

SPCDisconnect();

background image

Funkcje skryptowe

3-61

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

SPCDisplayData()

SPC

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.

Składnia

[Status=]SPCDisplayData("Dataset", "DateString", "TimeString",
RangeInHours
);

Parametry

Opis

Dataset

Nazwa bieżącego zestawu danych. Łańcuch znaków lub zmienna
tekstowa.

DateString

Data w formacie mm/dd/rr. Łańcuch znaków lub zmienna
tekstowa.

TimeString

Godzina w formacie gg:mm:ss. Łańcuch znaków lub zmienna
tekstowa.

RangeInHours

Okres czasu, dla którego dane będą wyświetlane. Parametr ten
może być wartością stałą lub zmienną programu InTouch.

Przykład

StatusTag = SPCDisplayData("Dataset", "DateString",
"TimeString" , RangeInHours);

SPCLocateScooter()

SPC

Funkcja ta zapewnia mechanizm wygodnego przewijania suwaka w celu wyświetlenia
odpowiedniej próbki. Wartość zmiennej suwaka, zapisanej w bazie danych, zostanie
zaktualizowana, przypisana zostanie jej wartość X-Bar. Przypisanie parametrowi
SampleNumber wartości 0 powoduje ukrycie/ deaktywację suwaka.

Składnia

SPCLocateScooter( "Dataset", SampleNumber );

Parametry

Opis

Dataset

Nazwa bieżącego zestawu danych. Łańcuch znaków lub zmienna
tekstowa.

SampleNumber

Numer dowolnej, nie zawierającej błędów próbki. Parametr ten
może być wartością stałą lub zmienną programu InTouch.

SPCMoveScooter()

SPC

Funkcja ta zapewnia mechanizm wygodnego przewijania suwaka w celu wyświetlenia odpowiedniej próbki.
Wartość zmiennej suwaka, zapisanej w bazie danych, zostanie zaktualizowana, przypisana zostanie jej wartość
próbki X-Bar.

Składnia

SPCMoveScooter( "Dataset", IncrementValue );

Parametry

Opis

Dataset

Nazwa bieżącego zestawu danych. Łańcuch znaków lub zmienna
tekstowa.

IncrementValue

Dowolny numer. W celu przewinięcia do przodu należy
wprowadzić wartość dodatnią, natomiast w celu przewinięcia do
tyłu należ wyprowadzić wartość ujemną. Parametr ten może być
wartością stałą lub zmienną programu InTouch.

background image

3-62

Rozdział 3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

SPCSaveSample()

SPC

Funkcja ta służy do ręcznego zapisu próbki wejściowej. Funkcja ta używana jest w
połączeniu z funkcją SPCSetMeasurement().

Składnia

SPCSaveSample("Dataset");

Parametry

Opis

Dataset

Nazwa bieżącego zestawu danych. Łańcuch znaków lub zmienna
tekstowa.

Uwagi

Wykonanie instrukcji zawierającej tę funkcję spowoduje zapisanie próbki jako zestawu
danych (Dataset) o określonej nazwie. Funkcja ta korzysta z ręcznie wprowadzonych
wartości pomiarów próbki. Wartości ustawiane są zarówno za pomocą zmiennych DDE
MI_Mx (gdzie x numer pomiaru z przedziału od 1 do 25), jak i za pomocą funkcji
SPCSetMeasurement() (pomiary 1 do 300).

Patrz również

SPCSetMeasurement()

SPCSelectDataset()

SPC

Wyświetla okno dialogowe pozwalające użytkownikowi na wybranie żądanego zestawu
danych.

Składnia

DatasetName=SPCSelectDataset()

Uwagi

Skrypt ten powoduje otwarcie okna dialogowego Select a Dataset.

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 przez
zmienną typu Indirect Dataset.

SPCSelectProduct()

SPC

Wyświetla okno dialogowe pozwalające użytkownikowi na wybranie produktu z podanego
zestawu danych.

Składnia

ProductName=SPCSelectProduct(Dataset);

Uwagi

Funkcja ta zastosowana w skrypcie pozwala na otwarcie okna dialogowego Select a
Product
.

Po wybraniu nazwy wyrobu, funkcja przypisuje go do zmiennej ProductName. Funkcja ta
może również służyć do zmiany nazwy produktu w zestawie danych Dataset.

background image

Funkcje skryptowe

3-63

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

SPCSetControlLimits()

SPC

Funkcja ta umożliwia wygodne wprowadzenie (ręcznie lub w sposób automatyczny, w
wyniku zaistnienia określonych zdarzeń) wartości granicznych dla wykresu kontrolnego
(Control Chart).

Składnia

SPCSetControlLimits("Dataset",XUCL,XLCL);

Parametry

Opis

Dataset

Nazwa bieżącego zestawu danych. Łańcuch znaków lub zmienna
tekstowa.

XUCL

Wartość, która ma zostać wykorzystana jako górny limit
kontrolny (UCL) dla wykresu kontrolnego. Liczba lub zmienna
typu rzeczywistego.

XLCL

Wartość, która ma zostać wykorzystana jako dolny limit
kontrolny (LCL) dla wykresu kontrolnego. Liczba lub zmienna
typu rzeczywistego.

Uwagi

Wyniki pomiarów są zapisywane w próbce za pomocą funkcji SPCSaveSample().

Patrz również

SPCSaveSample(), SPCSetRangeLimits(), SPCSetSpecLimits()

SPCSetMeasurement()

SPC

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.

Składnia

SPCSetMeasurement("Dataset",Measurement,Value);

Parametry

Opis

Dataset

Nazwa bieżącego zestawu danych. Łańcuch znaków lub zmienna
tekstowa.

Measurement

Numer pomiaru (od 1 do 300). Parametr ten może być wartością
stałą lub zmienną programu InTouch.

Value

Wartość która ma być zapisana do określonego numeru
pomiarów. Liczba lub zmienna typu rzeczywistego.

Uwagi

Z funkcji SPCSaveSample() należy korzystać po uprzednim ustawieniu wszystkich
pomiarów na zapisywanie danych w bazie danych.

background image

3-64

Rozdział 3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

SPCSetProductCollected()

SPC

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

Składnia

SPCSetProductCollected("Dataset","Product");

Parametry

Opis

Dataset

Nazwa bieżącego zestawu danych. Łańcuch znaków lub zmienna
tekstowa.

Product

Nazwa Produktu, dla którego mają być zbierane dane. Łańcuch
znaków lub zmienna tekstowa.

Uwagi

Funkcja ta nie zmienia wyrobu, dla którego wyświetlane są dane. Możliwe jest
gromadzenie danych jednego produktu i wyświetlanie danych dla innego produktu,
używając tej funkcji do gromadzenia a funkcji SPCSetProductDisplayed() do
wyświetlania:

Przykład

SPCSetProductCollected("Data5838", "Widgets");

Patrz również

SPCSetProductDislpayed()

SPCSetProductDislpayed()

SPC

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

Składnia

SPCSetProductDisplayed("Dataset","Product");

Parametry

Opis

Dataset

Nazwa bieżącego zestawu danych. Łańcuch znaków lub zmienna
tekstowa.

Product

Nazwa wyrobu, dla którego mają być wyświetlane dane .
Łańcuch znaków lub zmienna tekstowa.

Przykład

SPCSetProductDisplayed("ADataSetName", "AProductName");

Patrz również

SPCSetProductCollected()

SPCSetRangeLimits()

SPC

Funkcja ta umożliwia wygodne wprowadzenie (ręcznie lub w sposób automatyczny, w
wyniku zaistnienia określonych zdarzeń) wartości granicznych dla wykresu
rozpiętościowego (Range Chart).

Składnia

SPCSetRangeLimits("Dataset",RUCL,RLCL);

Parametry

Opis

Dataset

Nazwa bieżącego zestawu danych. Łańcuch znaków lub zmienna
tekstowa.

RUCL

Wartość, która ma zostać wykorzystana jako górny limit
kontrolny (UCL) dla wykresu rozpiętościowego. Liczba lub
zmienna typu rzeczywistego.

RLCL

Wartość, która ma zostać wykorzystana jako dolny limit
kontrolny (LCL) dla wykresu rozpiętościowego. Liczba lub
zmienna typu rzeczywistego.

Patrz również

SPCSetControlLimits(), SPCSetSpecLimits()

background image

Funkcje skryptowe

3-65

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

SPCSetSpecLimits()

SPC

Funkcja ta umożliwia wygodne wprowadzenie (ręcznie lub w sposób automatyczny, w
wyniku zaistnienia określonych zdarzeń) wartości granicznych specyfikacyjnych (dla
wykresu kontrolnego (Control Chart).

Składnia

SPCSetSpecLimits("Dataset",XUSL,XLSL);

Parametry

Opis

Dataset

Nazwa bieżącego zestawu danych. Łańcuch znaków lub zmienna
tekstowa.

XUSL

Wartość, która ma zostać wykorzystana jako górny limit
specyfikacyjny (USL) dla wykresu rozpiętościowego. Liczba lub
zmienna typu rzeczywistego.

XLSL

Wartość, która ma zostać wykorzystana jako dolny limit
specyfikacyjny (LSL) dla wykresu rozpiętościowego. Liczba lub
zmienna typu rzeczywistego.

Patrz również

SPCSetControlLimits(), SPCSetRangeLimits()

SQLAppendStatement()

SQL

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

Składnia

[ResultCode=]SQLAppendStatement(ConnectionID,"SQLStatement");

Parametry

Opis

ConnectionID

Zmienna typu Memory Integer, utworzona przez użytkownika do
pamiętania numeru (ID) przypisywanego przez funkcję
SQLConnect do każdego połączenia z bazą danych.

SQLStatement

Łańcuch znaków, który ma zostać dołączony do instrukcji.

Przykład

[ResultCode=]SQLAppendStatement(ConnectionID,"where
tablename.columnname=(any value or string)");

Patrz również

SQLConnect()

SQLClearParam()

SQL

Funkcja ta powoduje usunięcie wartości danego parametru. Przed wykonaniem funkcji
SQLExecute() musi zostać wywołana ponownie funkcja SQLSetParam().

Składnia

[ResultCode=]SQLClearParam(SQLHandle,ParameterNumber);

Parametry

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

background image

3-66

Rozdział 3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

SQLClearStatement()

SQL

Zwolnienie zasobów powiązanych z instrukcją określoną przez SQLHandle.

Składnia

[ResultCode=]SQLClearStatement(ConnectionID,SQLHandle);

Parametry

Opis

ConnectionID

Zmienna typu Memory Integer, utworzona przez użytkownika do
pamiętania numeru (ID) przypisywanego przez funkcję
SQLConnect do każdego połączenia z bazą danych.

SQLHandle

Wartość całkowita zwracana przez SQL po użyciu funkcji
SQLPrepareStatement().

Patrz również

SQLConnect()

SQLClearTable()

SQL

Funkcja ta usuwa wszystkie rekordy z tablicy w bazie danych, ale nie usuwa samej tablicy.

Składnia

[ResultCode=]SQLClearTable(ConnectionID,"TableName");

Parametry

Opis

ConnectionID

Zmienna typu Memory Integer, utworzona przez użytkownika do
pamiętania numeru (ID) przypisywanego przez funkcję
SQLConnect do każdego połączenia z bazą danych.

TableName

Nazwa tablicy w bazie danych, której dotyczy operacja usuwania
rekordów.

Przykład

Aby usunąć wszystkie rekordy z tablicy BATCH1, można użyć następującej instrukcji:

[ResultCode=]SQLClearTable(ConnectionID,"BATCH1");

Patrz również

SQLConnect()

background image

Funkcje skryptowe

3-67

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

SQLCommit()

SQL

Funkcja SQLCommit() powoduje wykonanie 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().

Składnia

[ResultCode=]SQLCommit(ConnectionID);

Parametry

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 pisaniu skryptów 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 zwalania
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);

{3 operacje wstawienia}

Patrz również

SQLRollback(), SQLTransact()

background image

3-68

Rozdział 3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

SQLConnect()

SQL

Funkcja ta służy do założenia połączenia pomiędzy programem InTouch a bazą danych
wyszczególnioną za pomocą parametru ConnectString.

Składnia

[ResultCode=]SQLConnect(ConnectionID,"ConnectString");

Parametry

Opis

ConnectionID

Zmienna typu Memory Integer, utworzona przez użytkownika do
pamiętania numeru (ID) przypisywanego przez funkcję
SQLConnect do każdego połączenia z bazą danych.

ConnectString

Nazwa bazy danych, oraz dodatkowe informacje potrzebne do
zalogowania, wymagane przez funkcje SQLConnect().

Przykład

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=data source name[;attribute=value[;attribute=value]...]"

Każda z baz danych może wymagać podania innych atrybutów. QUELIB rozpoznaje
następujące atrybuty:
" Więcej informacji na temat atrybutów obsługiwanych przez określone bazy danych

podano w Rozdziale 2 podręcznika SQL Access for InTouch User's Guide.

Atrybut

Wartość

DSN

Nazwa źródła danych (Data Source Name) skonfigurowana w programie
Microsoft ODBC Administrator.

DLG

Jeżeli DLG=1, wyświetlane jest okno dialogowe pozwalające na wpisanie
informacji potrzebnych do ustanowienia połączenia.

DRV

W celu zachowania zgodności z SQL Access w programie InTouch v.
4.11, wartość ta jest wykorzystywana jeżeli nazwa źródła danych (DSN)
nie została podana w łańcuchu znaków połączenia. QELIB zmienia ten
atrybut na nazwę źródła danych.

UID

Nazwa identyfikacyjna do logowania.

PWD

Hasło.

MODIFYSQL Atrybut wykorzystywany przez QELIB w celu zapewnienia

kompatybilności języka SQL używanego w aplikacji i języka SQL
używanego w bazie danych. Gdy wartość tego atrybutu jest ustawiona na
1 (wartość domyślna), sterownik bazy danych oczekuje składni instrukcji
zgodnej z ODBC, którą zmodyfikuje w razie potrzeby w celu
dostosowania jej do bazy danych. Gdy wartość tego atrybutu jest
ustawiona na 0, sterownik bazy danych oczekuje składni instrukcji
zgodnej ze składnią bazy danych. Mechanizm ten pozwala na używanie
aplikacji opracowanych z zastosowaniem SQL opartego na sterownikach
QELIB 1.0.

REREADAFTERUPDATE

Jeżeli wartość tego atrybutu jest ustawiona na 1, QELIB ponownie
odczytuje rekord z bazy danych po jego aktualizacji. Jest to użyteczna
właściwość w przypadku pobierania właściwej 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 właściwej wartości z automatycznie
aktualizowanych kolumn, zawierających np. czas.

background image

Funkcje skryptowe

3-69

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

SQLCreateTable()

SQL

Funkcja ta tworzy tablicę w bazie danych przy wykorzystaniu parametrów ze wzorca
tablicy (Table Template) o określonej nazwie. Wzorce tablic, zdefiniowane w pliku
SQL.DEF, określają strukturę tablic.

Składnia

[ResultCode=]SQLCreateTable(ConnectionID,TableName,TemplateName);

Parametry

Opis

ConnectionID

Zmienna typu Memory Integer, utworzona przez użytkownika do
pamiętania numeru (ID) przypisywanego przez funkcję
SQLConnect do każdego połączenia z bazą danych.

TableName

Nazwa tablicy w bazie danych, której dotyczy operacja.

TemplateName

Nazwa zdefiniowanego wzorca tablicy, który ma zostać użyty
przez funkcję.

Przykład

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

Uwaga Jeżeli parametr wprowadzony w skrypcie ujęty jest w cudzysłów, np. "Parametr1",
jako parametr użyty zostanie wprowadzony łańcuch znaków. Jeżeli znaki cudzysłowów nie
są używane, system przyjmuje, ze Parameter1 jest zmienną, po czym przeszukuje bazę
danych programu InTouch w celu znalezienia wartości zmiennej Parameter1. Przykładowo:

"c:\main\file" vs. location

gdzie: Location jest zmienną tekstowa programu InTouch.

"c:\main\file" jest łańcuchem znaków

Patrz również

SQLConnect()

background image

3-70

Rozdział 3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

SQLDelete()

SQL

Funkcja ta usuwa rekord lub kilka rekordów.

Składnia

[ResultCode=]SQLDelete(ConnectionID,TableName,WhereExpr);

Uwaga Funkcja SQLDelete() może być wywołana z pustym parametrem WhereExpression.

Parametry

Opis

ConnectionID

Zmienna typu Memory Integer, utworzona przez użytkownika do
pamiętania numeru (ID) przypisywanego przez funkcję
SQLConnect do każdego połączenia z bazą danych.

TableName

Nazwa tablicy w bazie danych, której dotyczy operacja.

WhereExpression

Warunek, który może być spełniony lub niespełniony dla każdego
wiersza tablicy. Funkcja wybiera tylko te wiersze z 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 obowiązującym typem danych w kolumnie są dane
tekstowe, 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

Przykład

Instrukcja zamieszczona poniżej powoduje usunięcie z tablicy o nazwie BATCH1
wszystkich rekordów, w których w kolumnie lotno występuje liczba równa 65:

[ResultCode=]SQLDelete(ConnectionID,"BATCH1","lotno=65");

Patrz również

SQLConnect()

background image

Funkcje skryptowe

3-71

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

SQLDisconnect()

SQL

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

Składnia

[ResultCode=]SQLDisconnect(ConnectionID);

Parametry

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

SQLDropTable()

SQL

Funkcja ta usuwa tablicę z bazy danych.

Składnia

[ResultCode=]SQLDropTable(ConnectionID,TableName);

Parametry

Opis

ConnectionID

Zmienna typu Memory Integer, utworzona przez użytkownika do
pamiętania numeru (ID) przypisywanego przez funkcję
SQLConnect do każdego połączenia z bazą danych.

TableName

Nazwa tablicy w bazie danych, której dotyczy operacja.

Przykład

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

SQLEnd()

SQL

Funkcja ta jest wykorzystywana po funkcji SQLSelect() w celu zwolnienia zasobów, które
były użyte do zapamiętania tablicy wynikowej (Results Table).

Składnia

[ResultCode=]SQLEnd(ConnectionID);

Parametry

Opis

ConnectionID

Zmienna typu Memory Integer, utworzona przez użytkownika do
pamiętania numeru (ID) przypisywanego przez funkcję
SQLConnect do każdego połączenia z bazą danych.

Patrz również

SQLConnect(), SQLSelect()

background image

3-72

Rozdział 3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

SQLErrorMsg()

SQL

Odczytuje tekst komunikatu o błędzie związanego z zadanym kodem błędu ResultCode.
ErrorMsg jest zmienną typu Memory Message (maksymalnie 131 znaków), powiązaną z
parametrem ResultCode.

Składnia

SQLErrorMsg(ResultCode);

Parametry

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.

! Więcej informacji na temat kodów błędów podano Dodatku A, "Diagnostyka funkcji

SQL".

Przykład

ErrorMsg=SQLErrorMsg(ResultCode);

Patrz również

SQLConnect()

SQLExecute()

SQL

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 i
zmiennymi programu InTouch. Jeśli lista powiązań jest PUSTA, żadne zmienne nie zostaną
powiązane z kolumnami w bazie danych. Przykładowo, instrukcjami SQL mogą być Create
View, Insert, itp. Funkcja ta zwraca kody błędów. 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.

Składnia

[ResultCode=]SQLExecute(ConnectionID,BindList,SQLHandle);

Parametry

Opis

ConnectionID

Zmienna typu Memory Integer, utworzona przez użytkownika do
pamiętania numeru (ID) przypisywanego przez funkcję
SQLConnect do każdego połączenia z bazą danych.

BindList

Lista powiązań między kolumnami bazy danych i zmiennymi
programu InTouch

SQLHandle

Wartość całkowita zwracana przez SQL po użyciu funkcji
SQLPrepareStatement().

Patrz również

SQLConnect(),SQLPrepareStatement()

Uwaga Jeżeli instrukcja nie została przygotowana, funkcja SQLExecute() może być
wywołana jeden raz. Jeśli instrukcja została przygotowana, może być wywoływana wiele
razy.

background image

Funkcje skryptowe

3-73

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

SQLFirst()

SQL

Funkcja ta wybiera pierwszy rekord z tablicy wynikowej (Results Table) utworzonej
poprzez wykonanie ostatniej funkcji SQLSelect(). Przed wykonaniem tego polecenia musi
być wywołana funkcja SQLSelect().

Składnia

[ResultCode=]SQLFirst(ConnectionID);

Parametry

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

SQLGetRecord()

SQL

Funkcja ta odczytuje z bufora rekord określony przez parametr RecordNumber.

Składnia

[ResultCode=]SQLGetRecord(ConnectionID,Record Number);

Parametry

Opis

ConnectionID

Zmienna typu Memory Integer, utworzona przez użytkownika do
pamiętania numeru (ID) przypisywanego przez funkcję
SQLConnect do każdego połączenia z bazą danych.

RecordNumber

Numer rekordu, który ma zostać odczytany.

Przykład

[ResultCode=]SQLGetRecord(ConnectionID,3);

Patrz również

SQLConnect()

background image

3-74

Rozdział 3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

SQLInsert()

SQL

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.

Składnia

[ResultCode=]SQLInsert(ConnectionID,TableName,BindList);

Parametry

Opis

ConnectionID

Zmienna typu Memory Integer, utworzona przez użytkownika do
pamiętania numeru (ID) przypisywanego przez funkcję
SQLConnect do każdego połączenia z bazą danych.

TableName

Nazwa tablicy w bazie danych, której dotyczy operacja.

BindList

Lista powiązań między kolumnami bazy danych i zmiennymi
programu InTouch

Przykład

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 W celu szybkiego wstawienia 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 wywołaniu funkcja
SQLInsertPrepare() (przygotowanie) można wykonać dowolną liczbę razy funkcję
SQLInsertExecute() (wstawienie rekordu), a następnie zakończyć wstawianie wywołując
funkcję SQLInsertEnd().

Patrz również

SQLConnect(), SQLInsert(), SQLInsertPrepare(), SQLInsertExecute(), SQLInsertEnd()

SQLInsertEnd()

SQL

Przerwanie instrukcji.

Składnia

[ResultCode=]SQLInsertEnd(ConnectionID,SQLHandle);

Parametry

Opis

ConnectionID

Zmienna typu Memory Integer, utworzona przez użytkownika do
pamiętania numeru (ID) przypisywanego przez funkcję
SQLConnect do każdego połączenia z bazą danych.

SQLHandle

Wartość całkowita zwracana przez SQL po użyciu funkcji
SQLPrepareStatement().

Patrz również

SQLConnect(), SQLPrepareStatement()

background image

Funkcje skryptowe

3-75

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

SQLInsertExecute()

SQL

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

Składnia

[ResultCode=]SQLInsertExecute(ConnectionID,BindList,SQLHandle);

Parametry

Opis

ConnectionID

Zmienna typu Memory Integer, utworzona przez użytkownika do
pamiętania numeru (ID) przypisywanego przez funkcję
SQLConnect do każdego połączenia z bazą danych.

BindList

Lista powiązań między kolumnami bazy danych i zmiennymi
programu InTouch

SQLHandle

Wartość całkowita zwracana przez SQL po użyciu funkcji
SQLPrepareStatement().

Patrz również

SQLConnect(), SQLPrepareStatement()

SQLInsertPrepare()

SQL

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

Składnia

[ResultCode=]SQLInsertPrepare(ConnectionID,TableName,BindList,

SQLHandle);

Parametry

Opis

ConnectionID

Zmienna typu Memory Integer, utworzona przez użytkownika do
pamiętania numeru (ID) przypisywanego przez funkcję
SQLConnect do każdego połączenia z bazą danych.

TableName

Nazwa tablicy w bazie danych, której dotyczy operacja.

BindList

Lista powiązań między kolumnami bazy danych i zmiennymi
programu InTouch

SQLHandle

Wartość całkowita zwracana przez SQL po użyciu funkcji
SQLPrepareStatement().

Patrz również

SQLConnect(), SQLPrepareStatement()

background image

3-76

Rozdział 3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

SQLLast()

SQL

Funkcja ta wybiera ostatni rekord z tablicy wynikowej (Results Table) utworzonej poprzez
wykonanie ostatniej funkcji SQLSelect(). Przed wykonaniem tego polecenia musi być
wywołana funkcja SQLSelect().

Składnia

[ResultCode=]SQLLast(ConnectionID);

Parametry

Opis

ConnectionID

Zmienna typu Memory Integer, utworzona przez użytkownika do
pamiętania numeru (ID) przypisywanego przez funkcję
SQLConnect do każdego połączenia z bazą danych.

Przykład

[ResultCode=]SQLLast(ConnectionID);

Patrz również

SQLConnect(), SQLSelect()

SQLLoadStatement()

SQL

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

Składnia

[ResultCode=]SQLLoadStatement(ConnectionID,FileName);

Parametry

Opis

ConnectionID

Zmienna typu Memory Integer, utworzona przez użytkownika do
pamiętania numeru (ID) przypisywanego przez funkcję
SQLConnect do każdego połączenia z bazą danych.

FileName

Nazwa pliku zawierającego odczytywaną instrukcję.

Uwagi

Przygotowuje instrukcję SQL utworzoną za pomocą funkcji: SQLSetStatement() lub
SQLLoadStatement(). Funkcja zwraca parametr SQLHandle.

Przykład

[ResultCode=]SQLLoadStatement(ConnectionID,"C:\InTouchAppname\SQL.t
xt")

SQL.txt = Select ColumnName from TableName where ColumnName>100;

Patrz również

SQLConnect(), SQLAppendStatement(), SQLExecute(), SQLPrepareStatement

background image

Funkcje skryptowe

3-77

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

SQLManageDSN()

SQL

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

Składnia

SQLManageDSN(ConnectionID);

Parametry

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.

SQLNext()

SQL

Funkcja ta wybiera następny rekord z tablicy wynikowej (Results Table) utworzonej
poprzez wykonanie ostatniej funkcji SQLSelect(). Funkcja SQLPrepareStatement() musi
następować po funkcji SQLSelect().

Składnia

[ResultCode=]SQLNext(ConnectionID);

Parametry

Opis

ConnectionID

Zmienna typu Memory Integer, utworzona przez użytkownika do
pamiętania numeru (ID) przypisywanego przez funkcję
SQLConnect do każdego połączenia z bazą danych.

Przykład

[ResultCode=]SQLNext(ConnectionID);

Patrz również

SQLConnect(), SQLSelect()

SQLNumRows()

SQL

Funkcja ta oblicza, ile wierszy spełnia kryteria podane w ostatnio użytej funkcji
SQLSelect(). Przykładowo, warunek WhereExpression podany jako jeden z parametrów
funkcji SQLSelect() może spełniać 40 lub 4000 wierszy, co może decydować o dalszym
toku postępowania. Może być wykorzystane do określenia, która funkcja będzie
wykonywana jako następna.

Składnia

SQLNumRows(ConnectionID);

Parametry

Opis

ConnectionID

Zmienna typu Memory Integer, utworzona przez użytkownika do
pamiętania numeru (ID) przypisywanego przez funkcję
SQLConnect do każdego połączenia z bazą danych.

Przykład

Instrukcja zamieszczona poniżej powoduje przypisanie liczby wybranych wierszy do
zmiennej całkowitej NumRows:

NumRows=SQLNumRows(ConnectionID);

Patrz również

SQLConnect()

background image

3-78

Rozdział 3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

SQLPrepareStatement()

SQL

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.

Składnia

[ResultCode=]SQLPrepareStatement(ConnectionID,SQLHandle);

Parametry

Opis

ConnectionID

Zmienna typu Memory Integer, utworzona przez użytkownika do
pamiętania numeru (ID) przypisywanego przez funkcję
SQLConnect do każdego połączenia z bazą danych.

SQLHandle

Wartość całkowita zwracana przez SQL po użyciu funkcji
SQLPrepareStatement().

Przykład

[ResultCode=]SQLPrepareStatement(ConnectionID,SQLHandle);

Patrz również

SQLConnect(), SQLSelect(), SQLSetStatement(), SQLLoadStatement()

SQLPrev()

SQL

Funkcja ta wybiera poprzedni rekord z tablicy wynikowej (Results Table) utworzonej
poprzez wykonanie ostatniej funkcji SQLSelect().

Składnia

[ResultCode=]SQLPrev(ConnectionID);

Parametry

Opis

ConnectionID

Zmienna typu Memory Integer, utworzona przez użytkownika do
pamiętania numeru (ID) przypisywanego przez funkcję
SQLConnect do każdego połączenia z bazą danych.

Uwagi

Funkcja SQLPrepareStatement() musi następować po funkcji SQLSelect().

Przykład

[ResultCode=]SQLPrev(ConnectionID);

Patrz również

SQLConnect(), SQLSelect()

background image

Funkcje skryptowe

3-79

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

SQLRollback()

SQL

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

Składnia

[ResultCode=]SQLRollback(ConnectionID,);

Parametry

Opis

ConnectionID

Zmienna typu Memory Integer, utworzona przez użytkownika do
pamiętania numeru (ID) przypisywanego przez funkcję
SQLConnect do każdego połączenia z bazą danych.

Przykład

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 =SQLRollback( ConnectionID);

{Po Transact() ignorowane są wszystkie polecenia Baz danych bez

zmian}

Patrz również

SQLCommit(), SQLTransact()

background image

3-80

Rozdział 3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

SQLSelect()

SQL

Funkcja ta wybiera informacje z wyszczególnionej tablicy w bazie danych. Podczas
wykonywania funkcji SQLSelect() w pamięci tworzona jest tymczasowa tablica wynikowa
(Results Table), 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 (Results Table).

Składnia

[ResultCode=]SQLSelect(ConnectionID,TableName,BindList,
WhereExpr,OrderByExpr
);

Parametry

Opis

ConnectionID

Zmienna typu Memory Integer, utworzona przez użytkownika do
pamiętania numeru (ID) przypisywanego przez funkcję
SQLConnect do każdego połączenia z bazą danych.

TableName

Nazwa tablicy w bazie danych, której dotyczy operacja.

BindList

Lista powiązań między kolumnami bazy danych i zmiennymi
programu InTouch

WhereExpression

Warunek, który może być spełniony lub niespełniony dla każdego
wiersza tablicy. Funkcja wybiera z tablicy tylko te wiersze, dla
których warunek jest spełniony. Warunek musi mieć następujący
format:
Nazwa_kolumny operator_porównania wyrażenie

Uwaga Jeśli w kolumnie znajdują się dane typu tekstowego,
wyrażenie musi zostać wpisane w apostrofach.
Poniższy przykład służy do wybrania wszystkich wierszy, w
których w kolumnie name występuje ciąg znaków EmployeeID:

name='EmployeeID'

Kolejny przykład służy do wybrania wszystkich wierszy, w
których w kolumnie partno występuje liczba od 100 do 199:

partno>=100 and partno<200

Następny przykład służy do wybrania wszystkich wierszy, w
których w kolumnie temperature występuje liczba większa od
350:

temperature>350

Przykłady wyrażenia WhereExpression:

WhereExpr - zmienna typu Memory Message.
OrderByExpr - zmienna typu Memory Message.
Speed_Input - Memory Real - Liczba wprowadzana przez
użytkownika
Serial_Input - Memory Message - Tekst wprowadzony przez
użytkownika

Przykład dla danych typu analogowego

WhereExpr = "Speed = " + text(Speed_Input,”#.##”);

# 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 + "";

# 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

background image

Funkcje skryptowe

3-81

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

WhereExpr = "Ser_No like " + "125%"

# 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 = "";

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

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

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

Instrukcja zamieszczona poniżej powoduje wybranie z tablicy o nazwie BATCH (przy
wykorzystaniu listy powiązań o nazwie List1) wszystkich rekordów, w których w kolumnie
type znajduje się słowo cookie. Odczytana tablica zostanie uporządkowana rosnąco
względem kolumny amount i malejąco względem kolumny sugar:

[ResultCode=]SQLSelect(ConnectionID,"BATCH","List1","type='cookie'"
,"amount ASC, sugar DESC");

Kolejna przykładowa instrukcja powoduje wybranie wszystkich danych z bazy danych, bez
określania warunków WhereExpression i OrderByExpression:

[ResultCode=]SQLSelect(ConnectionID,"BATCH","List1","","");

Patrz również

SQLFirst(), SQLConnect(), SQLLast(), SQLNext(), SQLPrev(), SQLEnd(), SQLSelect()

background image

3-82

Rozdział 3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

SQLSetParamChar()

SQL

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.

Składnia

[ResultCode=]SQLSetParamChar(SQLHandle,ParameterNumber,
ParameterValue,MaxLen
);

Parametry

Opis

SQLHandle

Wartość całkowita zwracana przez SQL po użyciu funkcji
SQLPrepareStatement().

ParameterNumber

Numer parametru w instrukcji SQL.

ParameterValue

Przypisywana 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ększa od maksymalnej
wartości dopuszczalnej w bazie danych, to parametr jest typu o
różnej liczbie znaków. Jeżeli jest dłuższy, ma typ o znacznie
różnej liczbie znaków.

Przykład

[ResultCode=]SQLSetParamChar(SQLHandle,ParameterNumber,
ParameterValue,MaxLen);

Patrz również

SQLPrepareStatement()

SQLSetParamDate()

SQL

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

Składnia

[ResultCode=]SQLSetParamDate(SQLHandle,ParameterNumber,
ParameterValue
);

Parametry

Opis

SQLHandle

Wartość całkowita zwracana przez SQL po użyciu funkcji
SQLPrepareStatement().

ParameterNumber

Numer parametru w instrukcji SQL.

ParameterValue

Przypisywana wartość parametru.

Przykład

[ResultCode=]SQLSetParamDate(SQLHandle,ParameterNumber,
ParameterValue);

Patrz również

SQLPrepareStatement()

background image

Funkcje skryptowe

3-83

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

SQLSetParamDateTime()

SQL

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

Składnia

[ResultCode=]SQLSetParamDateTime(SQLHandle,ParameterNumber,
ParameterValue,
Precision);

Parametry

Opis

SQLHandle

Wartość całkowita zwracana przez SQL po użyciu funkcji
SQLPrepareStatement().

ParameterNumber

Numer parametru w instrukcji SQL.

ParameterValue

Przypisywana wartość parametru.

Precision

Długość wartość daty-czasu do przypisania. Jest to liczba
znaków, wykorzystywanych w ParameterValue.

Przykład

[ResultCode=]SQLSetParamDateTime(SQLHandle,ParameterNumber,
ParameterValue,Precision);

Patrz również

SQLPrepareStatement()

SQLSetParamDecimal()

SQL

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.

Składnia

[ResultCode=]

SQLSetParamDecimal(SQLHandle,ParameterNumber,

ParameterValue,Precision,Scale);

Parametry

Opis

SQLHandle

Wartość całkowita zwracana przez SQL po użyciu funkcji
SQLPrepareStatement().

ParameterNumber

Numer parametru w instrukcji SQL.

ParameterValue

Przypisywana wartość parametru.

Precision

Długość wartość daty-czasu do przypisania. Jest to liczba
znaków, wykorzystywanych w ParameterValue.

Scale

Liczba cyfr po kropce dziesiętnej.

Przykład

[ResultCode=]SQLSetParamDecimal(SQLHandle,ParameterNumber,
ParameterValue,Precision, Scale);

Patrz również

SQLPrepareStatement()

background image

3-84

Rozdział 3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

SQLSetParamFloat()

SQL

Funkcja ta powoduje ustawienie wartości danego parametru na wartość równą
ParameterValue.

Składnia

[ResultCode=]SQLSetParamFloat(SQLHandle,ParameterNumber,
ParameterValue);

Parametry

Opis

SQLHandle

Wartość całkowita zwracana przez SQL po użyciu funkcji
SQLPrepareStatement().

ParameterNumber

Numer parametru w instrukcji SQL.

ParameterValue

Przypisywana wartość parametru.

Przykład

[ResultCode=]SQLSetParamFloat(SQLHandle,ParameterNumber,
ParameterValue);

Patrz również

SQLPrepareStatement()

SQLSetParamInt()

SQL

Funkcja ta powoduje ustawienie wartości danego parametru na wartość równą
ParameterValue.

Składnia

[ResultCode=]SQLSetParamInt(SQLHandle,ParameterNumber,
ParameterValue
);

Parametry

Opis

SQLHandle

Wartość całkowita zwracana przez SQL po użyciu funkcji
SQLPrepareStatement().

ParameterNumber

Numer parametru w instrukcji SQL.

ParameterValue

Przypisywana wartość parametru.

Przykład

[ResultCode=]SQLSetParamInt(SQLHandle,ParameterNumber,
ParameterValue);

Patrz również

SQLPrepareStatement()

SQLSetParamLong()

SQL

Funkcja ta powoduje ustawienie wartości danego parametru na wartość równą
ParameterValue.

Składnia

[ResultCode=]SQLSetParamLong(SQLHandle,ParameterNumber,
ParameterValue);

Parametry

Opis

SQLHandle

Wartość całkowita zwracana przez SQL po użyciu funkcji
SQLPrepareStatement().

ParameterNumber

Numer parametru w instrukcji SQL.

ParameterValue

Przypisywana wartość parametru.

Przykład

[ResultCode=]SQLSetParamLong(SQLHandle,ParameterNumber,
ParameterValue);

Patrz również

SQLPrepareStatement()

background image

Funkcje skryptowe

3-85

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

SQLSetParamNull()

SQL

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

Składnia

[ResultCode=]SQLSetParamNull(SQLHandle,ParameterNumber,
ParameterType,
Precision,Scale);

Parametry

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

Value

Opis

Char

1

Łańcuch znaków o stałej
długości wypełniony znakami
pustymi

Var Char

2

Łańcuch znaków o zmiennej
długości

Decimal

3

Liczba dziesiętna w kodzie BCD

Integer

4

4-bajtowa liczba całkowita ze
znakiem

Small Integer

5

2-bajtowa liczba całkowita ze
znakiem

Float

6

4-bajtowa liczba
zmiennoprzecinkowa

Double
Precision Float

7

8-bajtowa liczba
zmiennoprzecinkowa

DateTime

8

26-bajtowa reprezentacja daty i
czasu

Date

111

26-bajtowa reprezentacja daty i
czasu

Time

112

26-bajtowa reprezentacja daty i
czasu

No Type

0

Brak typu danych

Precision Dokładność wartości podawanych w systemie dziesiętnym,

maksymalna liczba znaków, lub długość bajtów przeznaczonych
do zapisu daty i czasu.

Scale

Liczba cyfr po kropce dziesiętnej. Jest wymagana tylko w
przypadku, gdy dotyczy zerowanego parametru.

Uwagi

Jeśli dla tego samego parametru została wywołana już funkcja SQLSetParam(), nie można
użyć żadnego typu danych.

Przykład

[ResultCode=]SQLSetParamNull(SQLHandle,ParameterNumber,
ParameterType,Precision,Scale);

Patrz również

SQLPrepareStatement()

background image

3-86

Rozdział 3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

SQLSetParamTime()

SQL

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

Składnia

[ResultCode=]SQLSetParamTime(SQLHandle,ParameterNumber,
ParameterValue
);

Parametry

Opis

SQLHandle

Wartość całkowita zwracana przez SQL po użyciu funkcji
SQLPrepareStatement().

ParameterNumber

Numer parametru w instrukcji SQL.

ParameterValue

Przypisywana wartość parametru.

Przykład

[ResultCode=]SQLSetParamTime(SQLHandle,ParameterNumber,
ParameterValue);

Patrz również

SQLPrepareStatement()

SQLSetStatement()

SQL

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.

Składnia

[ResultCode=]SQLSetStatement(ConnectionID,SQLStatement);

Parametry

Opis

ConnectionID

Zmienna typu Memory Integer, utworzona przez użytkownika do
pamiętania numeru (ID) przypisywanego przez funkcję
SQLConnect do każdego połączenia z bazą danych.

SQLStatement

Właściwa instrukcja SQL, jak w poniższym przykładzie.

Przykład

[ResultCode=]SQLSetStatement(ConnectionID,"Select LotNo, LotName
from LotInfo");

W zamieszczonym poniżej przykładzie, wartość SQLHandle ustawiona zostaje na 0, dzięki
czemu instrukcja nie wywołuje SQLPrepare(Connect_Id,SQLHandle) przed wykonaniem
instrukcji. Ponieważ SQLHandle nie została utworzona przez SQLPrepare w celu
poprawnego zakończenia tego zaznaczania, skorzystać z funkcji SQLEnd w miejsce
SQLClearStatement().

SQLSetStatement( Connect_Id, "Select Speed, Ser_No from tablename
where
Ser_No =" + Serial_input + "");

SQLExceute(Connect_Id,0);

W zamieszczonym poniżej przykładzie, SQLHandle jest tworzona za pomocą
SQLPrepareStatement, i wykorzystywana w funkcji SQLExecute. W celu zakończenia tej
instrukcji zaznaczania skorzystać z funkcji SQLClearStatement w celu uwolnienia
zasobów, oraz zwolnienia SQLhandle.

SQLSetStatement( Connect_Id, "Select Speed, Ser_No from tablename
where
Ser_No =" + Serial_input + "");
SQLPrepareStatement(Connect_Id,SQlHandle);

SQLExceute(Connect_Id,SqlHandle);

Patrz również

SQLConnect()

background image

Funkcje skryptowe

3-87

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

SQLTransact()

SQL

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

Składnia

[ResultCode=]SQLTransact(ConnectionID);

Parametry

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 pisaniu skryptów z użyciem funkcji 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()

SQLUpdate()

SQL

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.

Składnia

[ResultCode=]SQLUpdate(ConnectionID,TableName,BindList,
WhereExpr
);

Parametry

Opis

ConnectionID

Zmienna typu Memory Integer, utworzona przez użytkownika do
pamiętania numeru (ID) przypisywanego przez funkcję
SQLConnect do każdego połączenia z bazą danych.

TableName

Nazwa tablicy w bazie danych, której dotyczy operacja.

BindList

Lista powiązań między kolumnami bazy danych i zmiennymi
programu InTouch

WhereExpression

Warunek, który może być spełniony lub niespełniony dla każdego
wiersza tablicy. Funkcja aktualizuje tylko te wiersze w tablicy,
dla których warunek jest spełniony. Warunek musi mieć
następujący format:
Nazwa_kolumny operator_porównania wyrażenie

Uwaga Jeśli obowiązującym typem danych w kolumnie są dane
tekstowe, 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

Przykład

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

background image

3-88

Rozdział 3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

Uwaga Należy sprawdzić, czy rekordy nie powtarzają się. W przypadku gdy w tabeli będą
znajdować się identyczne rekordy, zostaną one wszystkie uaktualnione.

Patrz również

SQLConnect()

SQLUpdateCurrent()

SQL

Funkcja ta pobiera zaznaczony rekord i uaktualnia go. Zamieszczony poniżej przykład
spowoduje uaktualnienie zaznaczonego w danym momencie rekordu.

Składnia

[ResultCode=]SQLUpdateCurrent(ConnectionID);

Parametry

Opis

ConnectionID

Zmienna typu Memory Integer, utworzona przez użytkownika do
pamiętania numeru (ID) przypisywanego przez funkcję
SQLConnect do każdego połączenia z bazą danych.

Przykład

[ResultCode=]SQLUpdateCurrent(ConnectionID);

Patrz również

SQLConnect()

Sqrt()

funkcje matematyczne

Funkcja ta oblicza pierwiastek kwadratowy z podanej liczby.

Składnia

Real Result=Sqrt(Number);

Parametry

Opis

Number

Dowolna liczba, zmienna rzeczywista lub całkowita programu
InTouch.

Real Result

Zmienna typu rzeczywistego, przeznaczona do przechowywania
wyniku.

Przykład

AnalogTag1=Sqrt(AnalogTag2);

background image

Funkcje skryptowe

3-89

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

StartApp

system

Automatyczne uruchomienie innej aplikacji Windows.

Składnia

StartApp "AppName";

Parametry

Opis

AppName

Nazwa programu (pliku z rozszerzeniem .EXE) aplikacji do
uruchomienia, (np. WRITE.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.

Nie są obsługiwane długie nazwy plików, jednak jeżeli zachodzi potrzeba korzystania z
takich nazw, można wprowadzać te nazwy w postaci w jakiej są one przedstawiane w
systemie Dos:

Jeżeli długa nazwa dostępu ma postać: :C:\Program files\Microsoft Office\Office\Excel.
Wprowadzić: C:\Progra~1\Micros~2\Office\Excel (postać w systemie Dos).

SetApp "C:\Progra~1\Micros~2\Office\Excel";

Jeżeli wykorzystywany jest plik windows i pokazywane są wszystkie informacje o pliku, w
środkowej kolumnie umieszczona będzie nazwa w postaci, w jakiej jest ona
reprezentowana w systemie Dos.

Przykłady

Zamieszczona poniżej instrukcja powoduje uruchomienie programu Microsoft Windows
Wordpad.

StartApp "Wordpad.exe";

Patrz również

ActivateAPP()

StringASCII()

funkcje tekstowe

Zwraca kod ASCII pierwszego znaku zadanej zmiennej tekstowej

Składnia

IntegerResult=StringASCII("Char");

Parametry

Opis

Char

Zmienna tekstowa lub łańcuch znaków alfanumerycznych.

Uwagi

Kod ASCII pierwszego znaku ciągu znaków Char zostanie przypisany do zmiennej
IntegerResult. W czasie wykonywania funkcji, testowany lub zmieniany jest wyłącznie
pojedynczy znak. Jeśli łańcuch znaków lub zmienna tekstowa podana jako parametr funkcji
StringASCII() zawiera więcej niż jeden znak, podany zostanie tylko kod pierwszego znaku.

Przykłady

StringASCII("A") zwraca 65

StringASCII("A Mixer is Running") zwraca 65

StringASCII("a mixer is running") zwraca 97

Patrz również

StringChar()

background image

3-90

Rozdział 3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

StringChar()

funkcje tekstowe

Zwraca znak dla zadanego kodu ASCII.

Składnia

MessageResult=StringChar(ASCII);

Parametry

Opis

ASCII

Kod ASCII lub zmienna typu całkowitego.

Uwagi

Znak o podanym (jako parametr ASCII) kodzie ASCII zostanie przypisany do zmiennej
MessageResult. Jednym z zastosowań tej funkcji jest dołączanie do zmiennych tekstowych
znaków ASCII, które nie są reprezentowane na klawiaturze.

Przykład

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

funkcje tekstowe

Zamienia wartość całkowitą na odpowiadający jej ciąg znaków.

Składnia

MessageResult=StringFromIntg(Number,Base);

Parametry

Opis

Number

Liczba do konwersji. Parametr ten może być wartością stałą lub
zmienną programu InTouch.

Base

Parametr określający system zapisu. Parametr ten może być
wartością stałą lub zmienną programu InTouch.

Uwagi

Liczba całkowita Integer jest przekształcana na system określony przez parametr Base
(dwójkowy, szesnastkowy, itp.), a wynik tej operacji jest zapisywany jako MessageResult.

Przykłady

StringFromIntg(26, 2) zwraca "11010"

StringFromIntg(26, 8) zwraca "32"

StringFromIntg(26, 16) zwraca "1A"

Patrz również

StringToIntg(), StringFromReal(), StringToReal(), Text()

background image

Funkcje skryptowe

3-91

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

StringFromReal()

funkcje tekstowe

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.

Składnia

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

Parametry

Opis

Number

Jest konwertowany zgodnie z parametrami Precision i Type, a
wartość przypisywana jest do MessageResult. Liczba lub
zmienna typu rzeczywistego.

Precision

Podaje ile miejsc dziesiętnych należy wyświetlić. Parametr ten
może być wartością stałą lub zmienną programu InTouch.

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

StringFromReal(263.355, 2,"f") zwraca "263.36"

StringFromReal(263.355, 2,"e") zwraca "2.63e2"

StringFromReal(263.55, 3,"E") zwraca "2.636E2"

Patrz również

StringToReal(), StringFromIntg(), StringToIntg(), Text()

background image

3-92

Rozdział 3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

StringFromTime()

funkcje tekstowe

Przekształca czas (wyrażany w sekundach licząc od 01-01-1970) na ciąg znaków.

Składnia

MessageResult=StringFromTime(SecsSince1-1-70,StringType);

Parametry

Opis

SecsSince1-1-70

Konwersja przeprowadzana jest zgodnie z parametrem
StringTypei, a wynik zwracany za pomocą MessageResult.

StringType Parametr

określający system zapisu:

Typ

Opis

1

Zapis daty w formacie ustawionym w Panelu
sterowania Windows. (Podobny do formatu
zmiennej systemowej $DateString.)

2

Zapis czasu w formacie ustawionym w Panelu
sterowania Windows. (Podobny do formatu
zmiennej systemowej $TImeString.)

3

Wyświetlenie tekstu składającego się z 24 znaków,
podającego zarówno datę jak i godzinę.
"Wed Jan 02 02:03:55 1993"

4

Wyświetlenie skrótowego oznaczenia dla dnia
tygodnia.
"Wed"

5

Wyświetlenie pełnej nazwy dnia tygodnia.
"Wednesday"

Przykłady

StringFromTime(86400, 1) zwraca "1/2/70"

StringFromTime(86400, 2) zwraca "12:00:00 AM"

StringFromTime(86400, 3) zwraca "Fri Jan 02 00:00:00 1970"

StringFromTime(86400, 4) zwraca "Fri"

StringFromTime(86400, 5) zwraca "Friday"

background image

Funkcje skryptowe

3-93

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

StringInString()

funkcje tekstowe

Funkcja ta podaje pozycję określonej grupy znaków w łańcuchu znaków.

Składnia

IntegerResult=StringInString("Text","SearchFor"
,StartPos,CaseSens
);

Parametry

Opis

Text

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

StartPos Liczba

całkowita określająca miejsce początkowe przeszukiwania

łańcucha Text. Parametr ten może być wartością stałą lub zmienną
programu InTouch.

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). Parametr
ten może być wartością stałą lub zmienną programu InTouch.

Przykład

StringInString("The mixer is running", "mix", 1, 0) zwraca 5

StringInString("Today is Thursday", "day", 1, 0) zwraca 3

StringInString("Today is Thursday", "day", 10, 0) zwraca 15
StringInString("Today is Veteran's Day", "Day", 1, 1) zwraca 20
StringInString("Today is Veteran's Day", "Night", 1, 1) zwraca 0

StringLeft()

funkcje tekstowe

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

Składnia

MessageResult=StringLeft(Text,Chars);

Parametry

Opis

Text

Ł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

StringLeft("The Control Pump is On", 3) zwraca "The"

StringLeft("Pump 01 is On", 4) zwraca "Pump"

StringLeft("Pump 01 is On", 96) zwraca "Pump 01 is On"

StringLeft("The Control Pump is On", 0) zwraca "The Control

Pump is On"

background image

3-94

Rozdział 3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

StringLen()

funkcje tekstowe

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

Składnia

IntegerResult=StringLen(Text);

Parametry

Opis

Text

Łańcuch znaków lub zmienna tekstowa.

Uwagi

Długość tekstu Text (w znakach) przypisywana jest do zmiennej IntegerResult. Zliczane są
wszystkie znaki w zmiennej tekstowej, włączając w to znaki standardowo nie wyświetlane.

Przykład

StringLen("Twelve percent") zwraca 14

StringLen("12%") zwraca 3

StringLen("The end." + StringChar(13)) zwraca 10

Uwaga [CR] jest znakiem powrotu karetki o kodzie ASCII 13

StringLower()

funkcje tekstowe

Zamienia wszystkie znaki pisane duże literą na znaki pisane małą literą, a wynik tej
operacji umieszczany jest w zmiennej MessageResult.

Składnia

MessageResult=StringLower(Text);

Parametry

Opis

Text

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, niestety,
polskich dużych liter na małe).

Przykłady

StringLower("TURBINE") zwraca "turbine"

StringLower("22.2 Is The Value") zwraca "22.2 is the value."

background image

Funkcje skryptowe

3-95

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

StringMid()

funkcje tekstowe

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 łańcucha znaków.

Składnia

MessageResult=StringMid(Text,StartChar,Chars);

Parametry

Opis

Text

Łańcuch znaków lub zmienna tekstowa.

StartChar Liczba

całkowita określająca miejsce pierwszego znaku z grupy.

Parametr ten może być wartością stałą lub zmienną programu
InTouch.

Chars

Liczba znaków do odczytania. Parametr ten może być wartością
stałą lub zmienną programu InTouch.

Przykłady

StringMid("The Furnace is Overheating",5,7,) zwraca
"Furnace"

StringMid("The Furnace is Overheating",13,3) zwraca "is "

StringMid("The Furnace is Overheating",16,50) zwraca
"Overheating"

Patrz również

StringLeft(),StringRight()

background image

3-96

Rozdział 3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

StringReplace()

funkcje tekstowe

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.

Składnia

MessageResult=StringReplace(Text,SearchFor,ReplaceWith,
CaseSens,NumToReplace,MatchWholeWords);

Parametry

Opis

Text

Łańcuch znaków lub zmienna tekstowa podlegające
modyfikacjom.

SearchFor

Poszukiwana grupa znaków, która ma zostać wymieniona na inną.
Łańcuch znaków lub zmienna tekstowa.

ReplaceWith

Dowolny tekst. Ł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
luz zmienna typu całkowitego.

NumToReplace

Liczba wystąpień, w których ma być wprowadzona zamiana.
(-1=wszystkie.) Liczba lub zmienna typu całkowitego.

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 zostanie
ustawiony na 0, grupa znaków "and" występująca w słowie
"handle" zostanie zastąpiona.

Przykłady

StringReplace("In From Within","In","Out",0,1,0) zwraca "Out

From Within" (zastąpienie wyłącznie pierwszego wystąpienia)

StringReplace("In From Within","In","Out",0,-1,0) zwraca "Out

From without" (zastąpienie wszystkich wystąpień)

StringReplace("In From Within","In","Out",1,-1,0) zwraca "Out

From Within" (zastępowanie z uwzględnieniem wielkości liter)

StringReplace("In From Within","In","Out",0,-1,1) zwraca "Out

From Within" (zastępowanie całych słów)

Uwaga 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 potraktowany
jako znak rozdzielający.

background image

Funkcje skryptowe

3-97

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

StringRight()

funkcje tekstowe

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

Składnia

MessageResult=StringRight(Text,Chars);

Parametry

Opis

Text

Ł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łady

StringRight("The Pump is On", 2) zwraca "On"

StringRight("The Pump is On", 5) zwraca "is On"

StringRight("The Pump is On", 87) zwraca "The Pump is On"

StringRight("The Pump is On", 0) zwraca "The Pump is On"

StringSpace()

funkcje tekstowe

Wstawia łańcuch spacji do zmiennej tekstowej lub do wyrażenia.

Składnia

MessageResult=StringSpace(NumSpaces);

Parametry

Opis

NumSpaces

Liczba spacji do wygenerowania. Parametr ten może być
wartością stałą lub zmienną programu InTouch.

Uwagi

Funkcja StringSpace() zwraca łańcuch spacji o długości zadanej za pomocą parametru
NumSpaces.

Przykłady

Wszystkie spacje reprezentowane są za pomocą znaku "×".

StringSpace(4) zwraca "××××"
"Pump" + StringSpace(1) + "Station" zwraca "Pump×Station"

background image

3-98

Rozdział 3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

StringTest()

funkcje tekstowe

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

Składnia

DiscreteResult=StringTest(Text,TestType)

Parametry

Opis

Text

Łańcuch znaków na którym operuje funkcja. Łańcuch znaków lub
zmienna tekstowa.

TestType

Kryterium sprawdzania, zgodnie z poniższym zestawieniem:
Typ

Opis

1

Znak alfanumeryczny ('A'-'Z', 'a-z' i '0-9')

2

Cyfra (od '0' do '9')

3

Litera alfabetu (od 'A' do 'Z', od 'a' do 'z')

4

Duża litera alfabetu (od 'A' do 'Z')

5

Mała litera alfabetu (od 'a' do 'z')

6

Znak interpunkcyjny (0x21-0x2F)

7

Znak ASCII (0x00-0x7F)

8

Znak heksadecymalny ('A'-'F' or 'a'-'f' or '0'-'9')

9

Znak drukowany (0x21-0x2F)

10

Znak sterujący (0x00-0x1F lub 0x7F)

11

Znaki spacji (0x09-0x0D lub 0x20)

Uwagi

Jeśli pierwszy znak łańcucha znaków Text jest znakiem zgodnym z kryterium określonym
za pomocą TestType, funkcja StringTest() ustawia DiscreteResult na 1. Jeżeli funkcja
StringTest() zawiera większą liczbę znaków, sprawdzany jest typ wyłącznie pierwszego
znaku.

Przykłady

StringTest("ACB123",1) zwraca 1

StringTest("ABC123",5) zwraca 0

StringToIntg()

funkcje tekstowe

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.

Składnia

IntegerResult=StringToIntg(Text);

Parametry

Opis

Text

Ł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łady

Jeżeli

Tekst="ABCD", to ZmiennaAnaalogowa =0.

J

eżeli

Tekst

="Wartość jest równa 22.2", to ZmiennaCałkowita

=22

(ponieważ liczby całkowite nie mają części ułamkowej).

Jeżeli

Tekst

="Wartość jest równa 22", then ZmiennaCałkowita =

0.

Patrz również

StringFromIntg(), StringFromReal(), StringToReal(), Text()

background image

Funkcje skryptowe

3-99

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

StringToReal()

funkcje tekstowe

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

Składnia

RealResult=StringToReal(Text);

Parametry

Opis

Text

Ł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łady

Jeżeli

Tekst ="ABCD", to ZmiennaRzeczywista=0.

Jeżeli

Tekst

="Wartość jest równa 22.261", to

ZmiennaRzeczywista=22.261.

Jeżeli

Tekst

=" Wartość jest równa 22", to

ZmiennaRzeczywista=0.

Patrz również

StringFromReal(), StingFromIntg(), StringToIntg(), Text()

StringTrim()

funkcje tekstowe

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

Składnia

MessageResult=StringTrim(Text,TrimType);

Parametry

Opis

Text

Łańcuch znaków z którego będą usuwane spacje. Łańcuch
znaków lub zmienna tekstowa.

TrimType

Kryterium sprawdzania, zgodnie z poniższym zestawieniem:
Typ

Opis

1

Spacje zostaną usunięte z początku łańcucha
znaków (wszystkie spacje na lewo od pierwszego
znaku, który nie jest spacją).

2

Spacje zostaną usunięte z końca łańcucha znaków
(wszystkie spacje na prawo od ostatniego znaku,
który nie jest spacją).

3

Usunięte zostaną wszystkie spacje z wyjątkiem
pojedynczych spacji pomiędzy słowami.

Uwagi

Text jest przeszukiwany pod kątem występowania spacji o kodach ASCII 0x09-0x0D lub
0x20, które zostaną usunięte. Parametr TrimType określa, które spacje zostaną usunięte.

Przykład

Wszystkie spacje reprezentowane są za pomocą znaku "×".

StringTrim("×××××This×is×a××test×××××", 1) zwraca
"This×is×a××test×××××"

StringTrim("×××××This×is×a××test×××××", 2) zwraca
"×××××This×is×a××test"

StringTrim("×××××This×is×a××test×××××", 3) zwraca
"This×is×a×test"

Uwaga Funkcja StringReplace() pozwala na usunięcie WSZYSTKICH spacji z zadanej
zmiennej tekstowej. W tym celu należy zamienić wszystkie spacje na pusty łańcuch
znaków.

background image

3-100

Rozdział 3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

StringUpper()

funkcje tekstowe

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

Składnia

MessageResult=StringUpper(Text);

Parametry

Opis

Text

Tekst, w którym małe litery mają być zmienione na duże.
Łańcuch znaków lub zmienna tekstowa.

Uwagi

Funkcja nie zmienia małych liter, cyfr, symboli i znaków specjalnych (a także, niestety,
polskich małych liter na duże).

Przykłady

StringUpper("abcd") zwraca "ABCD."

StringUpper("22.2 is the value") zwraca "22.2 IS THE VALUE"

Tan()

funkcje matematyczne

Zwraca tangens kąta podanego w stopniach.

Składnia

Result=Tan(AngleNumber);

Parametry

Opis

AngleNumber

Wartość kąta w stopniach. Dowolna liczba, zmienna rzeczywista
lub całkowita programu InTouch.

Przykłady

Wave = 10 + 50 * Tan(6 * $seconds);

Tan(45) zwraca 1

Tan(0) zwraca 0

Patrz również

Sin(), Cos()

background image

Funkcje skryptowe

3-101

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

Text()

funkcje tekstowe

Funkcja ta powoduje zapisanie wartości zmiennej analogowej (całkowitej lub rzeczywistej)
w postaci łańcucha znaków, w określonym przez parametr Format_Text formacie zapisu.

Składnia

MessageResult=Text(Analog_Tag,"Format_Text");

Parametry

Opis

Analog_Tag

Liczba, zmienna rzeczywista lub całkowita, do konwersji.

Format_Text

Parametr określający format zapisu. Łańcuch znaków lub zmienna
tekstowa.

Przykłady

MessageTag=Text(66,"#.00");

Message_Tag jest zmienną tekstową , 66 jest wartością zmiennej całkowitej lub
rzeczywistej, a "#0.00" reprezentuje format zapisu wartości zmiennej:

Jeżeli

ZmiennaAnalogowa=66, to ZmiennaTekstowa=66.00.

Jeżeli

ZmiennaAnalogowa =22.269, to ZmiennaTekstowa=22.27.

Jeżeli

ZmiennaAnalogowa =9.999, to ZmiennaTekstowa=10.00.

LogMessage("The current value of FreeserRoomTemp 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()

Trunc()

funkcje matematyczne

Przybliża liczbę rzeczywistą przez odrzucenie części po prawej stronie kropki dziesiętnej.

Składnia

ResultNumericTag=Trunc(Number);

Parametry

Opis

Number

Dowolna liczba, zmienna rzeczywista lub całkowita programu
InTouch.

Uwagi

Wynik wykonania tej funkcji jest taki sam, jak zapisania wartości zmiennej rzeczywistej
jako zmiennej całkowitej .

Przykłady

Trunc(4.3) zwraca 4

Trunc(-4.3) zwraca -4

Patrz również

Round()

background image

3-102

Rozdział 3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

wcAddItem()

obiekty sterujące okien

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.

Składnia

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

Parametry

Opis

ControlName

Nazwa obiektu sterującego okna, np. ListBox_1. Łańcuch znaków
lub zmienna tekstowa.

MessageTag

Łańcuch znaków do wyświetlania. Łańcuch znaków lub zmienna
tekstowa.

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

Zastosowanie

Listy i listy rozwijalne.

Przykłady

Instrukcja zamieszczona poniżej dodaje łańcuch znaków do listy po otwarciu okna (przy
użyciu skryptu związanego z oknem OnShow), zawierającego obiekt lista:

wcAddItem("ListBox_1", "Chocolate");

wcAddItem("ListBox_1", "Vanilla");

wcAddItem("ListBox_1", "Strawberry");

Patrz również

wcInsertItem()

wcClear()

obiekty sterujące okien

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

Składnia

[ErrorNumber=]wcClear("ControlName");

Parametry

Opis

ControlName

Nazwa obiektu sterującego okna, np. ListBox_1. Łańcuch znaków
lub zmienna tekstowa.

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

Zastosowanie

Listy i listy rozwijalne.

Przykład

Jeśli instrukcja zamieszczona poniżej zostanie np. zapisana w skrypcie związanym z
przyciskiem, wciśnięcie tego przycisku spowoduje usunięcie wszystkich elementów listy
ListBox_1:

wcClear("ListBox_1");

background image

Funkcje skryptowe

3-103

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

wcDeleteItem()

obiekty sterujące okien

Funkcja ta usuwa pole listy lub element listy rozwijalnej o podanym indeksie.

Składnia

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

Parametry

Opis

ControlName

Nazwa obiektu sterującego okna, np. ListBox_1. Łańcuch znaków
lub zmienna tekstowa.

ItemIndex

Numer oznaczający pozycję elementu na liście. Parametr ten
może być wartością stałą lub zmienną programu InTouch.

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

Zastosowanie

Listy i listy rozwijalne.

Przykład

Zamieszczona poniżej instrukcja, po wciśnięciu skryptu klawiszowego, powoduje usunięcie
3-o elementu listy,.

wcDeleteItem("ListBox_1", 3);

wcDeleteSelection()

obiekty sterujące okien

Usuwa aktualnie wybrany element z listy lub listy rozwijalnej.

Składnia

[ErrorNumber =]wcDeleteSelection("ControlName");

Parametry

Opis

ControlName

Nazwa obiektu sterującego okna, np. ListBox_1. Łańcuch znaków
lub zmienna tekstowa.

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

Zastosowanie

Listy i listy rozwijalne.

Przykład

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

background image

3-104

Rozdział 3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

wcErrorMessage()

obiekty sterujące okien

Funkcja ta zwraca komunikat tekstowy opisujący błąd.

Składnia

ErrorMessage=wcErrorMessage(ErrorNumber);

Parametry

Opis

ErrorMessage

Zmienna tekstowa.

ErrorNumber

Liczba zwracana przez obiekty sterujące okien. Liczba lub
zmienna całkowita.

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

Zastosowanie

Pola tekstu, listy, listy rozwijalne, pola wyboru i pola wyboru wykluczającego.

Przykłady

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 w
połączeniu animacyjne wyświetlającym wartości tekstowe wykorzystano zmienną
ErrorDescription w celu wyświetlenia komunikatu błędzie.

Skrypt związany z oknem On Show:

ErrorNumber=wcLoadList("ListBox_1","c:\InTouch\recipe.txt");

ErrorDescription=wcErrorMessage(errornumber);

Funkcja ta może również zostać wykorzystana do wyświetlania komunikatów o błędach dla
wszystkich funkcji związanych z obiektami sterującymi Windows:

ErrorNumber=wcAddItem("ListBox_1","United States");

ErrorMsg=wcErrorMessage(ErrorNumber);

background image

Funkcje skryptowe

3-105

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

wcFindItem()

obiekty sterujące okien

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

Składnia

[ErrorNumber=]wcFindItem ("ControlName","MessageTag",DiscreteTag,

Tagname);
Parametry

Opis

ControlName

Nazwa obiektu sterującego okna, np. ListBox_1. Łańcuch znaków
lub zmienna tekstowa.

MessageTag

Łańcuch znaków do celów porównawczych. Łańcuch znaków lub
zmienna tekstowa.

DiscreteTag

Określa sposób w jaki będą porównywane łańcuchy znaków.
Przyjmuje jedną z następujących wartości:
0 = przy porównywaniu nie są rozróżniane litery duże i małe
1 = litery duże i małe są rozróżniane przy porównywaniu

Tagname

Nazwa zmiennej typu całkowitego.

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

Zastosowanie

Listy i listy rozwijalne.

background image

3-106

Rozdział 3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

wcGetItem()

obiekty sterujące okien

Funkcja ta odczytuje łańcuch znaków związany z elementem listy lub listy rozwijalnej,
określony przez parametr ItemIndex.

Składnia

[ErrorNumber=]wcGetItem("ControlName",ItemIndex,Tagname);

Parametry

Opis

ControlName

Nazwa obiektu sterującego okna, np. ListBox_1. Łańcuch znaków
lub zmienna tekstowa.

ItemIndex

Numer oznaczający pozycję elementu na liście. Liczba lub
zmienna całkowita.

Tagname

Nazwa zmiennej typu całkowitego lub rzeczywistego. Funkcja
wcGetItem przypisuje do tej zmiennej wartość numeryczną,
odpowiadającą elementowi.

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

Zastosowanie

Listy i listy rozwijalne.

Przykład

Wciśniecie przycisku z którym powiązane jest zamieszczone poniżej wyrażenie powoduje
przypisanie łańcucha znaków, odpowiadającego 10-u elementowi listy rozwijalnej
zmiennej tekstowej ListSelection.

wcGetItem("Combobox_1", 10, ListSelection);

Jeśli dziesiątym elementem listy jest "Vanilia", zmiennej ListSelection będzie odpowiadał
łańcuch znaków "Vanilia".

background image

Funkcje skryptowe

3-107

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

wcGetItemData()

obiekty sterujące okien

Funkcja ta zwraca wartość całkowitą związaną z elementem listy lub listy rozwijalnej,
określonym przez parametr ItemIndex.

Składnia

[ErrorNumber=]wcGetItemData("ControlName",ItemIndex,Tagname);

Parametry

Opis

ControlName

Nazwa obiektu sterującego okna, np. ListBox_1. Łańcuch znaków
lub zmienna tekstowa.

ItemIndex

Numer oznaczający pozycję elementu na liście. Liczba lub
zmienna całkowita.

Tagname

Nazwa zmiennej typu całkowitego lub rzeczywistego. Funkcja
wcGetItemdata przypisuje tej zmiennej wartość numeryczną,
odpowiadającą elementowi.

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

Zastosowanie

Listy i listy rozwijalne.

Przykład

Jeśli instrukcja zamieszczona poniżej zostanie np. zapisana w skrypcie związanym z
przyciskiem , po naciśnięciu tego przycisku odczyta ona wartość numeryczną związaną z
piątym elementem listy ListBox_1 i przypisze ją do zmiennej ItemValue:

wcGetItemData("ListBox_1", 5, ItemValue);

Jeśli piątemu elementowi listy przypisana jest wartość całkowita 4500, zmiennej ItemValue
zostanie przypisana wartość 4500.

Patrz również

wcSetItemData()

background image

3-108

Rozdział 3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

wcInsertItem()

obiekty sterujące okien

Wstawia do listy łańcuch znaków. ItemIndex jest numerem 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.

Składnia

[ErrorNumber=]wcInsertItem("ControlName",ItemIndex,"MessageTag");

Parametry

Opis

ControlName

Nazwa obiektu sterującego okna, np. 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.
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.

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

Zastosowanie

Listy i listy rozwijalne.

Przykład

Jeśli instrukcja zamieszczona poniżej zostanie np. umieszczona w skrypcie związanym z
przyciskiem, naciśnięcie tego przycisku wstawia ona nowy element o nazwie "Blueberry"
do listy, na czwartym miejscu od góry:

wcInsertItem("ListBox_1", 4, "Blueberry");

Patrz również

wcAddItem()

wcLoadList()

obiekty sterujące okien

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

Składnia

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

Parametry

Opis

ControlName

Nazwa obiektu sterującego okna, np. ListBox_1. Łańcuch znaków
lub zmienna tekstowa.

FileName

Zmienna lub tekst zawierająca nazwę pliku z zawartością
elementu 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.

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

Zastosowanie

Listy i listy rozwijalne.

Przykład

Instrukcja zamieszczona poniżej wczytuje poprawnie sformatowaną listę (umieszczoną w
pliku c:\InTouch.32\wclist.txt.) do listy rozwijalnej, w momencie otwarcia okna
zawierającego tę listę (wykorzystywany jest o tego celu skrypt związany z oknem On
Show):

wcLoadList("Combobox_1", "c:\InTouch.32\wclist.txt");

Patrz również

wcAddItem(), wcSaveList()

background image

Funkcje skryptowe

3-109

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

wcLoadText()

obiekty sterujące okien

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

Składnia

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

Parametry

Opis

ControlName

Nazwa obiektu sterującego okna, np. ListBox_1. Łańcuch znaków
lub zmienna tekstowa.

FileName

Zmienna lub tekst zawierający nazwę pliku z zawartością pola
tekstowego 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 okien wymieniono w
załączniku A.

" Więcej informacji na temat zaawansowanych metod wyświetlania plików podano w

opisie przeglądarki dokumentów, wchodzącej w skład pakietu Factory Suite's
Productivity Pack
.

Zastosowanie

Pola tekstowe.

Przykład

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 związanego z oknem On Show):

wcLoadText("Textbox_1", "c:\InTouch.32\readme.txt");

background image

3-110

Rozdział 3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

wcSaveList()

obiekty sterujące okien

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

Składnia

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

Parametry

Opis

ControlName

Nazwa obiektu sterującego okna, np. ListBox_1. Łańcuch znaków
lub zmienna tekstowa.

FileName

Zmienna lub tekst określający nazwę pliku z zawartością listy w
formacie ASCII. Jeśli plik nie istnieje, to zostaje utworzony.
Tekst zapisany w pliku może zostać następnie załadowany do
pola tekstu przy użyciu funkcji wcLoadText(). Łańcuch znaków
lub zmienna tekstowa.

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

Zastosowanie

Listy i listy rozwijalne.

Przykład

Zamieszczona poniżej instrukcja powoduje zapisanie elementów listy w pliku
(c:\InTouch.32\newlist.txt), w momencie naciśnięcia przycisku:

wcSaveList("ListBox_1", "c:\InTouch.32\newlist.txt");

Uwaga Jeżeli pliki ASCII wykorzystywane do tworzenia listy lub listy rozwijalnej
zostały utworzone przy pomocy innego programu, muszą być odpowiednio
sformatowane, oraz zawierać wszystkie, wymagane dodatkowo informacje. Format:

TypObiektu, LiczbaElementów
ElementListy, WartośćElementu
ElementListy, WartośćElementu
: :
: :
ElementListy, WartośćElementu

Przykład: Zamieszczony poniżej plik, wczytywany do listy, zawiera trzy elementy,
elementy nie mają przyporządkowanych wartości (więcej informacji na temat wartości
danych elementów podano w opisie funkcji wcSetItemData()). Plik ten ma następujący
format:

COMBOBOX, 3
Czekolada, 0
Wanilia, 0
Truskawki, 0

Opis: COMBOBOX jest typem obiektu. LiczbaElementów jest równa 3, ponieważ lista
zawiera następujące elementy: Czekolada, Wanilia, Truskawki. Czekolada jest
umieszczona na liście jako pierwszy element. Wanilia jako drugi, a Truskawki jako trzeci.
Każdy z tych elementów ma wartość równą 0.

Patrz również

wcLoadList(), wcSetItemData()

background image

Funkcje skryptowe

3-111

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

wcSaveText()

obiekty sterujące okien

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.

Składnia

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

Parametry

Opis

ControlName

Nazwa obiektu sterującego okna, np. ListBox_1. Łańcuch znaków
lub zmienna tekstowa.

FileName

Zmienna lub tekst określający nazwę pliku z zawartością listy w
formacie ASCII. Jeśli nie zostanie tu podana pełna ścieżka
dostępu do pliku, a tylko jego nazwa, funkcja zapisze plik w
katalogu aplikacji. Jeśli plik nie istnieje, to zostaje utworzony.
Tekst zapisany w pliku może zostać następnie załadowany do
pola tekstu przy użyciu funkcji wcLoadText(). Łańcuch znaków
lub zmienna tekstowa.

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

Zastosowanie

Pola tekstu.

Przykład

Wciśnięciu przycisku z którym powiązany jest zamieszczony poniżej skrypt powoduje
zapisanie informacji wprowadzonej w polu tekstowym do pliku
(c:\InTouch.32\newtext.txt).

wcSaveText("Textbox_1", "c:\InTouch.32\newtext.txt");

Uwaga Funkcja wcSaveText() zapisuje pliki w formacie ASCII, tak, jak np. Notatnik systemu Windows.

Patrz również

wcLoadList()

background image

3-112

Rozdział 3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

wcSetItemData()

obiekty sterujące okien

Funkcja ta przypisuje wartości całkowite (Number) elementom listy określonym przez
parametr ItemIndex. Funkcja umożliwia przypisanie liczby do łańcucha znaków.

Składnia

[ErrorNumber=]wcSetItemData("ControlName",ItemIndex,Number);

Parametry

Opis

ControlName

Nazwa obiektu sterującego okna, np. ListBox_1. Łańcuch
znaków lub zmienna tekstowa.

ItemIndex

Numer oznaczający pozycję elementu na liście. Liczba lub
zmienna całkowita.

Number

Liczba całkowita zawierająca wartość elementu. Liczba lub
zmienna całkowita.

Uwagi

Pełna lista zawierająca elementy może być utworzona za pomocą innego programu (np.
Notatnika), a następnie wczytana poprzez wywołanie odpowiedniej funkcji. Pliki te musza
być odpowiednio sformatowane, zgodnie z instrukcjami, podanymi przy opisie funkcji
wcSaveList().

! Kody błędów dla funkcji tego typu można znaleźć w Dodatku A: "Komunikaty o

błędach dla obiektów sterujących Windows i funkcji związanych z alarmowaniem
rozproszonym".

Przykłady

Mamy do czynienia z trzyskładnikową recepturą, 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 typu
DataChange wykonywanego po wybraniu receptury o określonej nazwie:

wcSetItemData("ListBox_1", 1, 4500); {ustawienie 1-go elementu na

liście (mąka)=4500}

wcSetItemData("ListBox_1", 2, 1500); { ustawienie 2-go elementu na

liście (cukier)=1500}

wcSetItemData("ListBox_1", 3, 325); { ustawienie 3-go elementu na

liście (sól)=325}

Funkcja wcGetItemData() zwraca wartość elementu o podanym indeksie. Ta wartość
numeryczna przypisywana jest do parametru Tagname. Parametr ten może być zmienną
typu I/O Integer, zapisującą swoją wartość bezpośrednio do urządzenia.

Patrz również

wcLoadList(), wcSaveList(), wcGetItemData()

background image

Funkcje skryptowe

3-113

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

WWControl()

różne

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

Składnia

WWControl("AppTitle","ControlType");

Parametry

Opis

AppTitle

Nazwa sterowanej aplikacji. Nazwę danej aplikacji można
uzyskać za pomocą funkcji 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 okna danej aplikacji i wyświetlenie
go z przywróceniem poprzedniego rozmiaru i
pozycji.

"Minimize"

Uaktywnienie okna danej aplikacji i zmniejszenie
go do ikony.

"Maximize"

Uaktywnienie okna danej aplikacji i wyświetlenie
go na całym ekranie.

"Close"

Zamknięcie danej aplikacji.

Przykłady

WWControl("Calculator","Restore");

WWControl("Microsoft Excel","Close");

WWControl(InfoAppTitle("View"), "Close");

Patrz również

InFoAppTitle(), ActivateApp(), StartApp()

background image

3-114

Rozdział 3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

WWExecute()

WWDDE

Wykonanie polecenia (za pomocą protokołu DDE) do określonej aplikacji (Application) i
tematu (Topic).

Składnia

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

Parametry

Opis

Application

Nazwa aplikacji, do której jest wysyłane polecenie. Łańcuch
znaków lub zmienna tekstowa.

Topic

Nazwa tematu w obrębie aplikacji, do której jest wysyłane
polecenie. Łańcuch znaków lub zmienna tekstowa.

Polecenie

Polecenie, które ma zostać wysłane. Łańcuch znaków lub
zmienna tekstowa.

Uwagi

Łąńcuch znaków Command zostanie przesłany do określonej aplikacji (Application) i
tematu (Topic).

Przykłady

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 spowoduje wykonanie makroinstrukcji w bazie danych Access:

WWExecute("MSAccess","system","MyMacro");

Funkcja WWExecute zwraca wartość 1, jeśli aplikacja jest uruchomiona, podany temat
(Topic) istnieje i polecenie zostało pomyślnie przesłane. Funkcja zwraca wartość 0, jeśli
aplikacja jest zajęta oraz -1, jeśli wystąpi błąd. Tak więc można monitorować status
polecenia:

Status=WWExecute("excel","system",Command);

Status jest zmienną typu Integer, o wartościach 1, -1 lub 0.

background image

Funkcje skryptowe

3-115

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

WWPoke()

WWDDE

Funkcja ta wysyła wartość (za pomocą protokołu DDE) do zadanej pozycji (Item) i tematu
(Topic) wewnątrz określonej aplikacji (Application).

Składnia

[Status=]WWPoke("Application","Topic","Item","TextValue");

Parametry

Opis

Aplikacja

Nazwa aplikacji, do której wysyłany jest łańcuch znaków.
Łańcuch znaków lub zmienna tekstowa.

Topic

Nazwa tematu w obrębie aplikacji, do której jest wysyłane
polecenie. Łańcuch znaków lub zmienna tekstowa.

Item

Nazwa pozycji w obrębie tematu. Łańcuch znaków lub zmienna
tekstowa.

TextValue

Zmienna tekstowa lub łańcuch znaków. Jeśli zachodzi potrzeba
przesłania liczby, można przekształcić ją na łańcuch znaków
używając jednej z funkcji: Text(), StringFromIntg() lub
StringFromReal(). Łańcuch znaków lub zmienna tekstowa.

Uwagi

Zamieszczona poniżej instrukcja powoduje wysłanie wartości Textvalue do określonej
pozycji (Item), tematu (Topic) i aplikacji (Application).

Przykład

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","sheet1","r1c1",String);

" Więcej informacji na temat współpracy arkusza kalkulacyjnego Excel 5.0 z programem

InTouch (przy pomocy DDE) podano w InTouch - Poradnik Użytkownika.

Uwaga 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, jeśli wystąpi błąd. Tak więc można monitorować status
polecenia:

Status=WWPoke("excel","sheet1","r1c1",String);

Status jest zmienną typu Integer, o wartościach 1, -1 lub 0.

Patrz również

Text(), StringFromIntg(), StringFromReal()

background image

3-116

Rozdział 3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

WWRequest()

WWDDE

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

Składnia

WWRequest(Application,Topic,Item,ValueMsg_Tag);

Parametry

Opis

Application

Nazwa aplikacji, z której ma być przesłany łańcuch znaków.
Łańcuch znaków lub zmienna tekstowa.

Topic

Nazwa tematu w obrębie aplikacji, z której ma być przesłany
łańcuch znaków. Łańcuch znaków lub zmienna tekstowa.

Item

Pozycja w obrębie tematu z której odczytywane będą dane.
Łańcuch znaków lub zmienna tekstowa.

ValueMsg_Tag

Zmienna tekstowa ujęta w cudzysłowy, zawierająca dane czytane
z określonej aplikacji (Application), tematu (Topic) i pozycji
(Item). Łańcuch znaków lub zmienna tekstowa.

Uwagi

Zamieszczona poniżej instrukcja przypisuje zmiennej ValueMsg_Tag wartość DDE
odczytaną z określonej pozycji (Item), tematu (Topic) i aplikacji (Application).

Wartość ta jest zmienną tekstową. Jeżeli otrzymana wartość jest wartością numeryczną,
należy ją przekonwertować za pomocą funkcji StringToIntg() lub StringToReal().

Przykłady

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, jeśli wystąpi błąd. Tak więc można monitorować status
polecenia:

Status=WWRequest("excel","[Book1.xls]sheet1","r1c1",Result);

Status jest zmienną typu Integer, o wartościach 1, -1 lub 0.

Patrz również

StringToIntg(), StringToReal()

background image

A-1

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

Z A Ł Ą C Z N I K A

Usuwanie zakłóceń 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 SQL. Opisano
również Elementy SPC DDE, które mogą być zastosowane do odczytywania Zestawów
danych, oraz do sterowania operacjami na wykresach.

background image

A-2

Załącznik A

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

Komunikaty o błędach dla obiektów sterujących

okien i alarmów rozproszonych

Funkcje związane z obiektami sterującymi okien i z alarmowaniem rozproszonym
zwracają wartość zależną od wyniku działania funkcji. Zwracana wartość jest
wykorzystywana do diagnozowania błędów i może być podstawiona pod zmienną
całkowitą. Przykładowo:

ErrorNumber = wcGetItem("ControlName", Number, Tagname);

gdzie:

ErrorNumber

jest zmienną typu Integer w której zapisany jest kod błędu. Wartość ta może

być przekazana do funkcji wcErrorMessage(). Funkcja wcMessage() zwraca opis
tekstowy błędu. Przykładowo:

ErrorMsg = wcErrorMessge(ErrorNumber);

gdzie:

ErrorMsg jest zmienną tekstową zawierającą opis błędu. W zamieszczonej poniżej tabeli
zestawiono kody oraz ich opis.
Kod błędu

Opis

0

Operacja zakończona pomyślnie

-1

Błąd ogólny

-2

Brak pamięci

-3

Atrybut tylko do odczytu

-4

Określony element już istnieje

-5

Nieznana nazwa obiektu

-6

Nieznana nazwa właściwości

-x*

Błąd nieznany

* -x

jest dowolnym numerem.

background image

Załącznik A

A-3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

Usuwanie zakłóceń przy korzystaniu z funkcji do

obsługi receptur

W celu odczytania kodu błędu zwracanego przez funkcje receptur należy go przypisać do
zmiennej całkowitej, zdefiniowanej w programie InTouch.

Przykład:

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.

Wartość

Błąd

Opis

0

Operacja zakończona
pomyślnie

Pomyślne wykonanie wywołanej funkcji receptur.

-1

Brak szablonu receptur

Brak pliku z określonym szablonem receptury

-2

Nie uruchomiona
aplikacja
WindowViewer

Funkcja receptur została wywołana przez inny
program, ale nie może zostać wykonana ponieważ
program WindowViewer nie jest uruchomiony

-3

Brak pamięci

Zbyt mało pamięci na zakończenie wykonywanego
działania

-4

Zbyt długi wiersz w
pliku z szablonem
receptury

Liczba znaków w wierszu pliku z szablonem
receptury przekracza maksymalną, dopuszczalną
wartość.

-5

Obcięta linia w pliku
receptury

Linia w pliku z szablonem receptury została obcięta

-6

Brak poprawnego pliku
z szablonami receptur

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

Spodziewane "unit" lub
"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

Brak zdefiniowanych
zestawów w pliku z
szablonami receptur

W pliku z szablonami receptur nie zostały
zdefiniowane zestawy danych.

-9

Nazwa receptury nie
znaleziona w pliku z
szablonami receptur

Określona nazwa receptury nie została
zdefiniowana w pliku z szablonami receptur.

-10

Nazwa zestawu nie
znaleziona w pliku z
szablonami receptur

Określona nazwa zestawu nie została zdefiniowana
w pliku z szablonami receptur.

background image

A-4

Załącznik A

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

Wartość

Błąd

Opis

-12

Spodziewane słowo
"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

Niezgodność typów
"Analog", "Discrete",
lub "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

Niewłaściwa wartość
dyskretna, spodziewana
wartość "0" lub "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

Niemożliwe otwarcie
pliku tymczasowego

Plik tymczasowy nie może zostać otworzony,
prawdopodobnie z powodu braku wolnego
miejsca na dysku.

-16

Błąd w czasie zapisu do
pliku z szablonem
receptury

W czasie zapisywania do pliku z szablonem
receptury wystąpił błąd

-17

Brak wyboru ze strony
użytkownika

Użytkownika wybrał polecenie Cancel w
oknie dialogowym Select a Recipe, a nie
nazwę receptury.

-19

Szablon receptury jest
wykorzystywany przez
inną aplikację

Żądany szablon receptury jest już otwarty,
przez co nie jest dostępny dla programu
WindowViewer.

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

Każda funkcja receptur zwraca numer kodu błędu. Umieszczenie go w skrypcie funkcji
RecipeGetMessage() pozwala na przypisanie komunikatu błędu do zmiennej tekstowej.

W tym celu można skorzystać z następującego skryptu 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 liczbowej zmiennej ErrorCode oraz zapisanie komunikatu towarzyszącego tej
wartości jako zmiennej ErrorMessage.

background image

Załącznik A

A-5

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

Nazwy elementów SPC DDE

Z elementów DDE można korzystać w celu uzyskania informacji o zestawach danych, oraz
w celu sterowania operacjami na wykresach. Nazwa aplikacji to SPC. Nazwa tematu jest
nazwą zestawu danych.

Uwaga Wszystkie elementy SPC DDE traktowane są tak samo zarówno w przypadku
rozproszonego SPC, jak i w przypadku nie rozproszonego SPC, jednak w przypadku
rozproszonego SPC nazwa tematu musi być typu Indirect Dataset.

DDE SPC sterowanie i wyświetlanie

Elementy DDE sterowania i wyświetlania przeznaczone są do sterowania i wyświetlania
informacji o tematach Zestawu 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óbne 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.

Uwaga Poza zebranymi i wyświetlanymi produktami, wiele elementów SPC DDE może
być stosowanych wyłącznie w odniesieniu do zebranych produktów. Elementy te oznaczone
są przez umieszczenie znaku (*) przed nazwą elementu SPC DDE na liście.

Nazwa elementu

Typ DDE

Dostęp

Opis

AutoCollection

Discrete

O/Z

Aktywowanie/ deaktywowanie
automatycznego zbierania danych.

*CalculateControlLimits

Discrete

O/Z

Ustawienie wartości 1 powoduje
rozpoczęcie obliczania wartości
granicznych sterowania.

DatasetName

Message
(32)

O/Z

Ustawia parametr DatasetName,
wykorzystywany przez Indirect
Dataset.

HistogramLCL

Real

O

Wyświetla Dolne wartości
graniczne sterowania histogramu,
w oparciu o populację.

HistogramUCL

Real

O

Wyświetla Górne wartości
graniczne sterowania histogramu,
w oparciu o populację.

Kurtosis

Real

O

Kształt dystrybucji histogramów.

LastSampleDisplayed

Integer

O/Z

Ustawia numer ostatniej próbki
wyświetlanej przez Zestaw
danych.

*ManualInputDialog

Discrete

O/Z

Ustawienie wartości 1 powoduje
wyświetlanie wbudowanego okna
dialogowego do ręcznego
wprowadzania danych.

MeasurementsPerSample

Integer

O

Wyświetlenie skonfigurowanej
liczby pomiarów przypadających
na próbkę

NewProduct

Message
(32)

O/Z

Wykorzystywana do tworzenia
nowej Nazwy produktu.

background image

A-6

Załącznik A

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

Nazwa elementu

Typ DDE

Dostęp

Opis

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

SamplesPerHistogram

Integer

O/Z

Ustawia liczbę próbek
wyświetlanych na
histogramie.

SamplesPerLimitCalc

Integer

O/Z

Ustawia liczbę próbek
wykorzystywanych przy
obliczaniu kontrolnych
wartości granicznych.

SamplesPerPareto

Integer

O/Z

Ustawia liczbę próbek
wykorzystywanych do
wyświetlania na wykresie
kontrolnym Pareto.

SelSPCOutSpecMsg

Message

O

Zmienna tekstowa dla alarmu
"Próbka poza dopuszczalnymi
wartościami granicznymi."

Skewness

Real

O

Wyświetla odchylenie od
średniej na Histogramie.

SPCAllowSampDelMod

Discrete

O/Z

Włączenie/ wyłączenie opcji
Delete i Modify menu
rozwijanego po wciśnięciu
prawego przycisku myszy.

StartCollection

Discrete

O/Z

Ustawienie wartości 1
powoduje rozpoczęcie cyklu
automatycznego zbierania.

background image

Załącznik A

A-7

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

Elementy DDE SPC bieżącej próbki

Wszystkie elementy DDE bieżącej próbki odnoszą się do ostatnio zebranej próbki
zadanego Zestawu danych. Mogą one być zastosowane do zmodyfikowania źródłowych
danych, oraz wartości granicznych dla Nazwy zestawu danych. W celu wprowadzenia
zmian w informacjach o bieżącej próbce, należy zapisać odpowiedni element DDE, a
następnie ustawić element 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ówi reprezentują ostatnio zebraną próbkę zebranego produktu.

W przypadku rozproszonego SPC, na początku wszystkie wartości ustawiane są na zero.
SPC co 5 sekund łączy się z bazą danych oraz sprawdza nowe dane. Zawsze w przypadku
znalezienia nowych informacji, wartości elementów są uaktualniane. Modyfikacje bieżącej
próbki są buforowane lokalnie, aż do ustawienia elementu CurrentUpdate na 1. Następnie
wartości umieszczane są w pakiecie bieżącej próbki i wysyłane do sieciowego stanowiska
zestawu danych w celu przeprowadzania analizy i zapamiętania ich. Modyfikacje bieżących
próbek wskazujące na inny zebrany produkt, oraz bieżące próbki o numerze różnym od
ostatnio zapisanej próbki są odrzucane przez Serwer.

Uwaga Poza zebranymi i wyświetlanymi produktami, wszystkie "Bieżące" Elementy i
DDE SPC mają zastosowanie wyłącznie w odniesieniu do zebranych produktów.

Nazwa elementu

Typ DDE

Dostęp

Opis

CurrentCauseCode

Integer

O/Z

Ustawia wartość SpecialCauseCode
dla bieżącej próbki.

CurrentCauseString

Message
(128)

O

Wyświetla opis numeru
SpecialCauseCode dla bieżącej próbki.

CurrentComment

Message
(50)

O/Z

Element wykorzystywany do zapisu
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 wyś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 element flag dla bieżącej
próbki.

CurrentIgnoreValue

Discrete

O/Z

Ustawia ignorowanie bieżącej próbki
w momencie gdy Wykres kontrolny
jest automatycznie skalowany.

CurrentMx

Real

O/Z

Ustawia indywidualny pomiar wartości
dla bieżącej próbki. (x=1 do 25.)

CurrentR

Real

O

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

background image

A-8

Załącznik A

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

Nazwa elementu

Typ DDE

Dostęp

Opis

CurrentRUCL

Real

O/Z

Element ten ustawia górne, kontrolne
wartości graniczne.

CurrentSample

Real

O

Element ten wyświetla wartość ostatniego
punktu próbkowania (tj. X, C, P).

CurrentSampleBar

Real

O/Z

Ustawia średnią bieżącej próbki w danym
punkcie próbkowania.

CurrentSampleNumber

Integer

O

Wyświetla numer ostatnio zebranej próbki.

CurrentTarget

Real

O/Z

Ustawia wartość docelową w danym
punkcie próbkowania.

CurrentTime

Message
(8)

O/Z

Ustawia czas dla bieżącej próbki w
formacie HH:MM:SS. Jeżeli czas zostanie
niepoprawnie wprowadzony, przyjęty
zostanie czas bieżący.

CurrentUpdate

Discrete

O/Z

Element ten należy ustawić na 1 w celu
wprowadzenia zmian w informacji o
próbce, w dowolnym z bieżących pól.

CurrentXLCL

Real

O/Z

Ustawia Dolną, kontrolną wartość
graniczną (LCL - Lower Control Limit) dla
bieżącej próbki.

CurrentXLSL

Real

O/Z

Ustawia Dolną, wartość graniczną
specyfikowaną (LSL - Lower Specification
Limit) dla bieżącej próbki.

CurrentXUCL

Real

O/Z

Ustawia Górną , kontrolną wartość
graniczną (UCL - Upper Control Limit) dla
bieżącej próbki.

CurrentXUSL

Real

O/Z

Ustawia Górną, wartość graniczną
specyfikowaną (USL - Upper Specification
Limit) dla bieżącej próbki.

SPC2L3Out2SD

Integer

O

Licznik alarmów dla alarmu "2 z 3
ostatnich próbek poza 2 odchyleniami
standardowymi 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 odchyleniem
standardowym SS."

SPCConSampAltUpDn

Integer

O

Licznik alarmów dla alarmu "Wartość
kolejnych próbek naprzemiennie zmniejsza
się i zwiększa."

SPCConSampAltUpDnMsg

Message

O

Zmienna tekstowa dla alarmu "Wartość
kolejnych próbek naprzemiennie zmniejsza
się i zwiększa."

SPCConSampln1SD

Integer

O

Licznik alarmów dla alarmu "Kolejne
próbki znajdują się wewnątrz 1 Odchylenia
standardowego."

SPCConSampln1SDMsg

Message

O

Zmienna tekstowa dla alarmu "Kolejne
próbki znajdują się wewnątrz 1 Odchylenia
standardowego."

background image

Załącznik A

A-9

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

Nazwa elementu

Typ DDE

Dostęp Opis

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 "? Poza
ostatnią? próbka poza? Standardowym
odchyleniem."

SPCNLNOutNSDMsg

Message

O

Zmienna tekstowa dla alarmu "? Poza
ostatnią? próbka poza? Standardowym
odchyleniem."

SPCNLNOutNSDSS

Integer

O

Licznik alarmów dla alarmu "?Poza
ostatnią? Próbka poza ? standardowym
odchyleniem SS."

SPCNLNOutNSDSSMsg

Message

O

Zmienna tekstowa dla alarmu "?Poza
ostatnią? Próbka poza ? standardowym
odchyleniem SS."

SPCOutRCtrl

Integer

O

Licznik alarmów dla alarmu "Zakres
poza kontrolnymi wartościami
granicznymi."

SPCOutRCtrlMsg

Message

O

Zmienna tekstowa dla alarmu "Zakres
poza kontrolnymi wartościami
granicznymi."

SPCOutXCtrl

Integer

O

Licznik alarmów dla alarmu Wykresu X
"Próbka poza kontrolnymi wartościami
granicznymi."

SPCOutXCtrlMsg

Message

O

Zmienna tekstowa dla alarmu Wykresu
X "Próbka poza kontrolnymi
wartościami granicznymi."

SPCOutSpec

Integer

O

Licznik alarmów dla alarmu "Próbka
poza dopuszczalnymi wartościami
specyfikowanymi."

SPCOutSpecMsg

Message

O

Zmienna tekstowa dla alarmu "Próbka
poza dopuszczalnymi wartościami
granicznymi."

SPCResetAlarmCounters

Discrete

O/Z

Zeruje wszystkie liczniki alarmów.

background image

A-10

Załącznik A

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

Elementy DDE SPC ręcznego wprowadzania

Elementy DDE ręcznego wprowadzania stosowane są do tworzenia okien użytkownika do
ręcznego wprowadzania danych. W celu zastosowania elementów ręcznego wprowadzania
danych, ustawić wartości odpowiednich elementów, a następnie ustawić element DDE
MI_Save na wartość 1. Spowoduje to wprowadzenie informacji zawartych w innych polach
MI jako nowej próbki. Po wprowadzeniu próbki, program SPC ustawi wartość elementu
DDE MI_Save na 0 (zero).
W przypadku rozproszonego SPC, elementy ręcznego wprowadzania danych mają zasięg
lokalny dla każdego ze stanowisk. Wartości są lokalnie buforowane na każdym ze
stanowisk, aż do momentu kiedy element DDE MI_Save zostanie ustawiona na 1. Po
ustawieniu MI_Save na 1, wartości umieszczane są w pakiecie ręcznie wprowadzonych
danych i wysyłane do sieciowego stanowisk zestawu danych w celu przeprowadzenia
analizy i ich zapisania.

Uwaga Poza zebranymi i wyświetlanymi produktami, wszystkie elementy DDE SPC
"Ręczne" mają zastosowanie wyłącznie w odniesieniu do zebranych produktów.

Nazwa elementu

Typ DDE

Dostęp

Opis

MI_CauseCode

Integer

O/Z

Ustawia wartość
SpecialCauseCode dla ręcznie
wprowadzanej próbki.

MI_CauseString

Message (127)

O

Wyświetla opis numeru
wejściowego
SpecialCauseCode dla próbki.

MI_Comment

Message (50)

O/Z

Element ten wykorzystywany
do zapisu/ odczytu różnych
komentarzy wprowadzonych
dla próbką.

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 element Flag dla
ręcznie wprowadzanej próbki.

MI_IgnoreValue

Discrete

O/Z

Ustawia ignorowanie bieżącej
próbki w momencie gdy
Wykres kontrolny jest
automatycznie skalowany.

MI_Mx

Real

O/Z

Ustawia wartość dla
oznaczonego ręcznie
wprowadzonego pomiaru (x=1
do 25).

background image

Załącznik A

A-11

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

Nazwa elementu

Typ DDE

Dostęp

Opis

MI_Save

Discrete

O/Z

Zapisuje wprowadzoną ręcznie w innych
polach MI informację jako nową próbkę.

Uwaga Jeżeli element MI_Save
ustawiony jest na 1, wartości wszystkich
elementów MI zapisywane są do
odpowiednich elementów i DDE
Current, a element
CurrentSampleNumber jest
inkrementowana o 1.

MI_Time

Message
(8)

O/Z

Ustawia czas dla bieżącej próbki. Czas
musi być wprowadzona w formacie
HH:MM:SS. Jeżeli czas zostanie
niepoprawnie wprowadzony, przyjęty
zostanie domyślnie czas bieżący.

background image

A-12

Załącznik A

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

Elementy DDE do zaznaczania SPC

Elementy DDE do zaznaczania mogą być wykorzystane do uzyskiwania szczegółowych
informacji o dowolnej z próbek. Elementy DDE do zaznaczania umożliwiają wprowadzenie
numeru próbki, która ma być wyświetlana. Po wprowadzeniu, program SPC zaktualizuje
wszystkie elementy do zaznaczania, wprowadzając szczegółowe informacje o zaznaczonym
numerze próbki.

Nie można zmienić starych danych, ale można dodać elementy Special Cause Code, Flags
i/lub Comments poprzez wprowadzenie wartości do odpowiednich elementówi, i następnie
ustawienie elementu SelectionUpdate na 1.
Spowoduje to wprowadzenie do rekordu zaznaczonej próbki nowych wartości. Po
wprowadzeniu próbki, program SPC ustawi wartość elementu DDE SelectionUpdate na 0
(zero).

W przypadku rozproszonego SPC, elementy DDE do zaznaczania mają zasięg lokalny dla
każdego ze stanowisk. Są to wartości próbek zarejestrowane na stanowisku sieciowym dla
określonego numeru próbki zebranego produktu. Po ustawieniu elementu DDE do
zaznaczania na numer próbki, z pliku z próbkami na stanowisku sieciowym odczytywane są
dane. Nie można zmienić starych danych, ale można dodać elementy Special Cause Code,
Flags i/lub Comments poprzez wprowadzenie wartości do odpowiednich elementów, i
następnie ustawienie elementu SelectionUpdate na 1. Po ustawieniu wartości
SelectionUpdate na 1, następuje wysłanie elementu Cause Code, Comment, flag i Ignore
Value w formie pakietu do stanowiska sieciowego.

Uwaga Poza zebranymi i wyświetlanymi produktami, wszystkie "Do zaznaczania"
Elementy DDE SPC mają zastosowanie wyłącznie w odniesieniu do zebranych produktów.
Nazwa elementu

Typ DDE

Dostęp

Opis

Selection

Integer

O/Z

Ustawienie tego elementu na numer
próbki powoduje wprowadzenie do
wszystkich zaznaczonych elementów
odpowiednich danych.

SelectionCauseCode

Integer

O/Z

Ustawia wartość SpecialCauseCode
dla zaznaczonej próbki.

SelectionCauseString Message

(128)

O

Wyświetla opis wprowadzonego
Special Cause Code.

SelectionComment

Message
(50)

O/Z

Element ten wykorzystywany do
zapisu/ odczytu różnych komentarzy,
wprowadzonych dla zaznaczonej
próbki.

SelectionCp

Real

O

Element ten wyświetla możliwości dla
zaznaczonej próbki.

SelectionCpk

Real

O

Element ten wyświetla wyś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 element Flag dla zaznaczonej
próbki.

SelectionIgnoreValue

Discrete

O/Z

Ustawia ignorowanie zaznaczonej
próbki w momencie gdy Wykres
kontrolny jest automatycznie skalowany.

SelectionMx

Real

O

Wyświetla wartość dla indywidualnego
pomiaru (x=1 - 25), zawierającego
próbkę.

SelectionProduct

Message
(32)

O

Wyświetla Nazwę produktu dla
zaznaczonej próbki.

background image

Załącznik A

A-13

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

Nazwa elementu

Typ DDE

Dostęp Opis

SelectionRUCL

Real

O

Wyświetla zakres UCL dla
zaznaczonej próbki.

SelectionRLCL

Real

O

Wyświetla zakres LCL dla
zaznaczonej próbki.

SelectionR

Real

O

Wyświetla zakres dla zaznaczonej
próbki.

SelectionRBAR

Real

O

Wyświetla średni zakres dla
zaznaczonej próbki.

SelectionSample

Real

O

Wyświetla wartość zaznaczonego
punkt próbki.

SelectionSampleBar

Real

O

Wyświetla średnio 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ść graniczną
wartość specyfikowaną

SelectionXLSL

Real

O

Wyświetla Dolną, wartość graniczną
wartość specyfikowaną

SelectionXUCL

Real

O

Wyświetla Górną wartość graniczną.

SelectionXLCL

Real

O

Wyświetla Dolną wartość graniczną.

SelSPC2L3Out2SDMsg

Message

O

Zmienna tekstowa dla alarmu "2 z 3
ostatnich próbek poza 2 odchyleniami
standardowymi SS."

SelSPC4L5Out1SDMsg

Message

O

Zmienna tekstowa dla alarmu "4 z 5
ostatnich próbek poza 1 odchyleniami
standardowymi SS."

SelSPCConSampAltUpDnMsg

Integer

O

Zmienna tekstowa dla alarmu
"Wartość kolejnych próbek
naprzemiennie zmniejsza się i
zwiększa."

SelSPCConSampln1SDMsg

Message

O

Zmienna tekstowa dla alarmu
"Kolejne próbki znajdują się
wewnątrz 1 Odchylenia
standardowego."

SelSPCConSamplncDecMsg

Message

O

Zmienna tekstowa dla alarmu
"Wartość kolejnych próbek zmniejsza
się lub zwiększa."

SelSPCConSampOneSideCLMsg

Message

O

Zmienna tekstowa dla alarmu
"Wartość kolejnych próbek znajduje
się po jednej stronie osi symetrii."

SelSPCConSampOut1SDMsg

Message

O

Zmienna tekstowa dla alarmu
"Kolejne próbki znajdują się poza 1
Odchyleniem standardowym."

SelSPCNLNOutNSDMsg

Message

O

Zmienna tekstowa dla alarmu "?
Ostatnia? Próbka poza? Odchyleniem
standardowym?."

background image

A-14

Załącznik A

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

Nazwa elementu

Typ DDE

Dostęp Opis

SelSPCNLNOutNSDSSMsg

Message

O

Zmienna tekstowa dla alarmu
"? Ostatnia? Próbka poza?
Odchyleniem standardowym
SS?."

SelSPCOutRCtrlMsg

Message

O

Zmienna tekstowa dla alarmu
"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."

Uwaga Wiele pośrednich zestawów danych może być ustawionych i połączonych z tym
samym, rzeczywistym Zestawem danych. Można wtedy Zaznaczoną wartość każdego z
Pośrednich Zestawów danych ustawić na inny numer próbki. Pozwala to użytkownikowi na
podglądanie informacji o wielu próbkach w obrębie jednego Zestawu danych.

background image

Załącznik A

A-15

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

Usuwanie zakłóceń przy korzystaniu z funkcji

skryptowych SQL

Wszystkie funkcje SQL zwracają parametr ResultCode, który może zostać wykorzystany
przy usuwaniu zakłóceń. Funkcja SQLErrorMsg() zwraca komunikat o błędzie, dla
zdanego kodu ResultCode.

Przykład:

ErrorMsg=SQLErrorMsg(ResultCode);

gdzie:

ErrorMsg jest zmienną typu Memory Message.
ResultCode jest zmienną całkowitą, z wartością dostarczoną przez
odpowiednią funkcję SQL.

Komunikaty o błędach

W niniejszym dokumencie nie omówiono znaczenia poszczególnych wartości ResultCode,
więcej informacji na temat tych wartości podano w dokumentacji do bazy danych. Należy
również pamiętać o sprawdzeniu informacji wyświetlanych przez program diagnostyczny
Wonderware Logger.

Funkcja SQLErrorMsg() ustawia 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
(ResultCode)

Kod błędu

Opis

0

Operacja zakończona
pomyślnie

Polecenie zostało zakończone
pomyślnie, bez wystąpienia błędu

-5

Ostatni rekord w bazie
danych

Odczytany został ostatni rekord
bazy danych

-1001

Brak pamięci

Brak wolnej pamięci na
zakończenie funkcji

-1002

Błąd w połączeniu

Niepoprawny parametr
ConnectionID przekazany do
funkcji

-1003

Nie znaleziono listy
powiązań

Lista powiązań o zadanej nazwie
nie istnieje

-1004

Nie znaleziono
szablonu

Szablon o zadanej nazwie nie
istnieje

-1005

Błąd wewnętrzny

Wystąpił błąd wewnętrzny.
Skontaktować się z Serwisem.

-1006

Pusty łańcuch znaków

Ostrzeżenie - z bazy danych
odczytano pusty łańcuch znaków

-1007

Obcięty łańcuch
znaków

Ostrzeżenie - łańcuch znaków
odczytany z bazy danych ma więcej
niż 131 znaków w związku z czym
został on obcięty

-1008

Brak klauzuli Where

Brak klauzuli Where dla Delete

background image

A-16

Załącznik A

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

Kod błędu
(ResultCode)

Kod błędu

Opis

-1009

Błąd w komunikacji

Błąd w komunikacji, szczegółowy
opis zakłócenia podany jest w
programie diagnostycznym
Wonderware Logger

-1010

Baza danych
określona w łańcuchu
znaków do
ustanowienia
połączenia, w części
DB= nie istnieje

Określona baza danych nie istnieje

-1011

Brak zaznaczonych
wierszy

Podjęto próbę wykonania polecenia
SQLNumRows(), SQLFirst(),
SQLNext(), lub SQLPrev(), bez
uprzedniego wykonania polecenia
SQLSelect().

-4149

Niepoprawna
instrukcja do
ustanowienia
połączenia lub
niewłaściwy parametr
SQLHandle

Przyczyną może być niewłaściwie
zdefiniowany typ kolumny.
Przykładowo, jeżeli w pliku dBASE
zdefiniować szablon tabeli z
kolumną typu znak, a nie typu
znaki, zasygnalizowany zostanie
błąd

background image

Załącznik A

A-17

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

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

Oracle

Kod błędu

Rozwiązanie

ORA-03112 - Błąd w składni łańcucha
znaków hosta

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 pliku
CONFIG.ORA na wartość równa liczbie
żądanych połączeń. Zamieszczona
poniżej instrukcja przydziela pamięć dla 4
połączeń:

WIN_REMOTE_SESSIONS=4

ORA-3121 - Brak podłączonego
sterownika

Przed uruchomieniem Windows, oraz
przed korzystaniem z InTouch SQL
Access należy uruchomić SQL *NET
TSR, odpowiedni dla systemu
sieciowego.

ORA-6435 - NetBIOS: Brak możliwości
dodania lokalnej nazwy do tabeli nazw

Musi być uruchomiony system sieciowy
(Novell, LAN Manager, itp.)

ORA-09301 - Kernel lokalny
obsługiwany jest wyłącznie w trybie
standardowym

W łańcuchu znaków do ustanowienia
połączenia określić nazwę serwera
("SRVR=").

ORA-06430 - Brak możliwości
połączenia

Zweryfikować poprawność i kolejność
atrybutów w łańcuchu znaków do
ustanowienia połączenia.

background image

A-18

Załącznik A

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

Sybase lub Microsoft SQL Server

Kod błędu

Rozwiązanie

W jednym momencie nie może być
aktywna więcej niż jedna instrukcja

Próba wykonania polecenia SQL po
wykonaniu SQLSelect(). Wywołać
polecenie SQLEnd() w celu zwolnienia
zasobów systemu, lub też przeznaczyć dla
drugiej instrukcji oddzielny parametr
ConnectionID.

Brak wolnej pamięci na wykonanie
polecenia

Spróbować ponownie uruchomić stację
kliencką

Niewłaściwa nazwa tablicy nazwy
obiektu

Nazwa tablicy nie istnieje w używanej
bazie danych. Spróbować skorzystać z
instrukcji DB=nazwa bazy danych.

dBASE

Kod błędu

Rozwiązanie

Plik lub moduł DLL nie znalezione

W przypadku systemu Windows, plik
QEDBF.DLL musi znajdować się w
bieżącej kartotece, lub w kartotece
systemu Windows podanej w ścieżce
DOS.

Błąd w połączeniu

Należy sprawdzić, czy w kartotece
znajdują się odpowiednie pliki DLL. W
przypadku DBF, potrzebny jest plik
QLDBF.DLL.

Niepoprawna instrukcja do
ustanowienia połączenia lub niewłaściwy
parametr SQLHandle

Więcej informacji na temat podano w
programie Wonderware Logger .
Instrukcja SQL może zawierać błąd w
składni.

background image

I-1

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

Index

$

$AccessLevel, 1-2
$AlarmLogging, 1-3
$AlarmPrinterError, 1-3
$AlarmPrinterNoPaper, 1-4
$AlarmPrinterOffline, 1-4
$AlarmPrinterOverflow, 1-5
$ApplicationChanged, 1-5
$ApplicationVersion, 1-6
$ChangePassword, 1-6
$ConfigureUsers, 1-7
$Date, 1-7
$DateString, 1-8
$DateTime, 1-8
$Day, 1-8
$HistoricalLogging, 1-9
$Hour, 1-9
$InactivityTimeout, 1-10
$InactivityWarning, 1-10
$LogicRunning, 1-11
$Minute, 1-11
$Month, 1-11
$Msec, 1-12
$NewAlarm, 1-12
$ObjHor, 1-12
$ObjVer, 1-13
$Operator, 1-13
$OperatorEntered, 1-14
$PasswordEntered, 1-14
$Second, 1-15
$StartDdeConversations, 1-15
$System, 1-15
$Time, 1-16
$TimeString, 1-16
$Year, 1-16

.

.Ack, 2-6
.Alarm, 2-7
.AlarmDevDeadband, 2-8
.AlarmEnabled, 2-9
.AlarmGroup, 2-57
.AlarmValDeadband, 2-10
.Caption, 2-65
.ChartLength, 2-11
.ChartStart, 2-12
.Comment, 2-12, 2-34
.DevTarget, 2-13
.DisplayMode, 2-13
.Enabled, 2-66

.EngUnits, 2-14
.HiHiLimit, 2-14
.HiHiStatus, 2-15
.HiLimit, 2-16
.HiStatus, 2-16
.ListCount, 2-67
.ListIndex, 2-68
.LoLimit, 2-17
.LoLoLimit, 2-17
.LoLoStatus, 2-18
.LoStatus, 2-19
.MajorDevPct, 2-19
.MajorDevStatus, 2-20
.MaxEU, 2-21
.MaxRange, 2-22
.MaxRaw, 2-23
.MinEU, 2-24
.MinorDevPct, 2-25
.MinorDevStatus, 2-26
.MinRange, 2-27
.MinRaw, 2-28
.Name, 2-29
.NewIndex, 2-69
.NextPage, 2-57
.Normal, 2-30
.NumAlarms, 2-58
.OffMsg, 2-31
.OnMsg, 2-31
.PageNum, 2-58
.Pen1-.Pen8, 2-32
.PrevPage, 2-59
.PriFrom, 2-59
.PriTo, 2-60
.ProvidesReg, 2-60
.ProvidesRet, 2-61
.Quality, 2-34
.QualityLimit, 2-36
.QualityLimitString, 2-36
.QualityStatus, 2-37
.QualitySubstatus, 2-38
.QualitySubstatusString, 2-38
.QueryState, 2-62
.QueryType, 2-63
.RawValue, 2-39
.ReadOnly, 2-70
.Reference, 2-40
.ReferenceComplete, 2-40
.ROCPct, 2-41
.ROCStatus, 2-42
.ScooterLockLeft, 2-43
.ScooterLockRight, 2-44
.ScooterPosLeft, 2-45
.ScooterPosRight, 2-46
.SPCStatus, 2-47
.Successful, 2-64

background image

I-2

Index

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

.TagID, 2-47
.TimeDate, 2-48
.TimeDateString, 2-48
.TimeDateTime, 2-48
.TimeDay, 2-49
.TimeHour, 2-49
.TimeMinute, 2-49
.TimeMonth, 2-50
.TimeMsec, 2-50
.TimeSecond, 2-50
.TimeTime, 2-51
.TimeTimeString, 2-51
.TimeYear, 2-51
.TopIndex, 2-71
.TotalPages, 2-64
.Unack, 2-52
.UpdateCount, 2-53
.UpdateInProgress, 2-54
.UpdateTrend, 2-55
.Value, 2-56, 2-72
.Visible, 2-73

A

Abs(), 3-2
Ack(), 3-2
ActivateApp(), 3-3
Alarm, 1-4
Alarmów Funkcje

Ack(), 3-2

Alarmów pola

.Ack, 2-6
.Alarm, 2-7
.AlarmDevDeadband, 2-8
.AlarmEnabled, 2-9
.AlarmValDeadband, 2-10
.DevTarget, 2-13
.HiHiLimit, 2-14
.HiHiStatus, 2-15
.HiLimit, 2-16
.HiStatus, 2-16
.LoLimit, 2-17
.LoLoLimit, 2-17
.LoLoStatus, 2-18
.LoStatus, 2-19
.MajorDevPct, 2-19
.MajorDevStatus, 2-20
.MinorDevPct, 2-25
.MinorDevStatus, 2-26
.Normal, 2-30
.ROCPct, 2-41
.ROCStatus, 2-42
.Unack, 2-52

Alarmów zmienne systemowe

$AlarmLogging, 1-3

$AlarmPrinterError, 1-3
$AlarmPrinterOverflow, 1-5
$NewAlarm, 1-12
$System, 1-15

almAckAll(), 3-3
almAckDisplay(), 3-4
almAckRecent(), 3-4
almAckSelect(), 3-5
almDefQuery(), 3-5
almMoveWindow(), 3-6
almQuery(), 3-7
almSelectAll(), 3-7
almSelectItem(), 3-8
almShowStats(), 3-8
Aplikacji zmienne systemowe

$ApplicationChanged, 1-5
$ApplicationVersion, 1-6

ArcCos(), 3-8
ArcSin(), 3-9
ArcTan(), 3-9

C

ChangePassword(), 3-10
ConnectionID Zmienna, 3-68
ConnectString Zmienna, 3-68
Cos(), 3-10

D

DDE

Control. porównać WWControl()
Execute. porównać WWExecute()
Poke. porównać WWPoke()
Request. porównać WWRequest()

DialogStringEntry(), 3-11
DialogValueEntry(), 3-12
DText(), 3-13

E

ErrorCode, A-3
ErrorNumber, A-2
Exp(), 3-14

F

FileCopy(), 3-14
FileDelete(), 3-15
FileMove(), 3-16
FileReadFields(), 3-17
FileReadMessage(), 3-18
FileWriteFields(), 3-19
FileWriteMessage(), 3-20
Funkcje

Abs(), 3-2

background image

Index

I-3

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

Ack(), 3-2
ActivateApp(), 3-3
almAckAll(), 3-3
almAckDisplay(), 3-4
almAckRecent(), 3-4
almAckSelect(), 3-5
almDefQuery(), 3-5
almMoveWindow(), 3-6
almQuery(), 3-7
almSelectAll(), 3-7
almSelectItem(), 3-8
almShowStats(), 3-8
ArcCos(), 3-8
ArcSin(), 3-9
ArcTan(), 3-9
ChangePassword(), 3-10
Cos(), 3-10
DialogStringEntry(), 3-11
DialogValueEntry(), 3-12
DText(), 3-13
Exp(), 3-14
FileCopy(), 3-14
FileDelete(), 3-15
FileMove(), 3-16
FileReadFields(), 3-17
FileReadMessage(), 3-18
FileWriteFields(), 3-19
FileWriteMessage(), 3-20
GetNodeName(), 3-2

0

GetPropertyD(), 3-21
GetPropertyI(), 3-21
GetPropertyM(), 3-22
Hide(), 3-22
HideSelf(), 3-22
HTGetLastError(), 3-23
HTGetPenName(), 3-24
HTGetTimeAtScooter(), 3-24
HTGetTimeStringAtScooter(), 3-25
HTGetValue(), 3-26
HTGetValueAtScooter(), 3-27
HTGetValueAtZone(), 3-28
HTScrollLeft(), 3-29
HTScrollRight(), 3-29
HTSelectTag(), 3-30
HTSetPenName(), 3-30
HTUpdateToCurrentTime(), 3-31
HTZoomIn(), 3-31
HTZoomOut(), 3-32
InfoAppActive(), 3-32
InfoAppTitle(), 3-33
InfoDisk(), 3-34
InfoFile(), 3-35
InfoInTouchAppDir(), 3-35
InfoResources(), 3-36
Int(), 3-37

IOSetAccessName(), 3-38
IOSetItem(), 3-39
IsAnyAsyncFunctionBusy(), 3-40
Log(), 3-41
LogMessage(), 3-41
LogN(), 3-42
Pi(), 3-42
PlaySound(), 3-43
PrintHT(), 3-43
PrintWindow(), 3-44
RecipeDelete(), 3-46
RecipeGetMessage(), 3-46
RecipeLoad(), 3-47
RecipeSave(), 3-48
RecipeSelectNextRecipe(), 3-49
RecipeSelectPreviousRecipe(), 3-50
RecipeSelectRecipe(), 3-51
RecipeSelectUnit(), 3-52
RestartWindowViewer(), 3-53
Round(), 3-53
SendKeys(), 3-54
SetDDEAppTopic(), 3-55
SetDDEItem(), 3-55
SetPropertyD(), 3-56
SetPropertyI(), 3-56
SetPropertyM(), 3-57
Sgn(), 3-57
Show(), 3-58
ShowAt(), 3-58
ShowHome(), 3-59
ShowTopLeftAt(), 3-59
Sin(), 3-59
SPCConnect(), 3-60
SPCDisconnect(), 3-60
SPCDisplayData(), 3-61
SPCLocateScooter(), 3-61
SPCMoveScooter(), 3-61
SPCSaveSample(), 3-62
SPCSelectDataset(), 3-62
SPCSelectProduct(), 3-62
SPCSetControlLimits(), 3-63
SPCSetMeasurement(), 3-63
SPCSetProductCollected(), 3-64
SPCSetProductDisplayed(), 3-64
SPCSetRangeLimits(), 3-64
SPCSetSpecLimits(), 3-65
SQLAppendStatement(), 3-65
SQLClearParam(), 3-65
SQLClearStatement(), 3-66
SQLClearTable(), 3-66
SQLCommit(), 3-67
SQLConnect(), 3-68
SQLCreateTable(), 3-69
SQLDelete(), 3-70
SQLDisconnect(), 3-71

background image

I-4

Index

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

SQLDropTable(), 3-71
SQLEnd(), 3-71
SQLErrorMsg(), 3-72
SQLExecute(), 3-72
SQLFirst(), 3-73
SQLGetRecord(), 3-73
SQLInsert(), 3-74
SQLInsertEnd(), 3-74
SQLInsertExecute(), 3-75
SQLInsertPrepare(), 3-75
SQLLast(), 3-76
SQLLoadStatement(), 3-76
SQLManageDSN(), 3-77
SQLNext(), 3-77
SQLNumRows(), 3-77
SQLPrepareStatement(), 3-78
SQLPrev(), 3-78
SQLRollback(), 3-79
SQLSelect(), 3-80
SQLSetParamChar(), 3-82
SQLSetParamDate(), 3-82
SQLSetParamDateTime(), 3-83
SQLSetParamDecimal(), 3-83
SQLSetParamFloat(), 3-84
SQLSetParamInt(), 3-84
SQLSetParamLong(), 3-84
SQLSetParamNull(), 3-85
SQLSetParamStatement(), 3-86
SQLSetParamTime(), 3-85
SQLTransact(), 3-86
SQLUpdate(), 3-87
SQLUpdateCurrent(), 3-88
Sqrt(), 3-88
StartApp(), 3-89
StringASCII(), 3-89
StringChar(), 3-90
StringFromIntg(), 3-90
StringFromReal(), 3-91
StringFromTime(), 3-92
StringInString(), 3-93
StringLeft(), 3-93
StringLen(), 3-94
StringLower(), 3-94
StringMid(), 3-95
StringReplace(), 3-96
StringRight(), 3-97
StringSpace(), 3-97
StringTest(), 3-98
StringToIntg(), 3-98
StringToReal(), 3-99
StringTrim(), 3-99
StringUpper(), 3-100
Tan(), 3-100
Text(), 3-101
Troubleshooting, A-1

Trunc(), 3-101
wcAddItem(), 3-102
wcClear(), 3-102
wcDeleteItem(), 3-103
wcDeleteSelection(), 3-103
wcErrorMessage(), 3-104
wcFindItem(), 3-105
wcGetItem(), 3-106
wcGetItemData(), 3-107
wcInsertItem(), 3-108
wcLoadList(), 3-108
wcLoadText(), 3-109
wcSaveList(), 3-110
wcSaveText(), 3-111
wcSetItemData(), 3-112
WWControl(), 3-113
WWExecute(), 3-114
WWPoke(), 3-115
WWRequest(), 3-116

Funkcje matematyczne

Abs(), 3-2
ArcCos(), 3-8
ArcSin(), 3-9
ArcTan(), 3-9
Cos(), 3-10
DText(), 3-13
Exp(), 3-14
Int(), 3-37
Log(), 3-41
LogN(), 3-42
Pi(), 3-42
Round(), 3-53
Sgn(), 3-57
Sin(), 3-59
Sqrt(), 3-88
Tan(), 3-100
Trunc(), 3-101

Funkcje o różnym przeznaczeniu

DialogStringEntry(), 3-11
DialogValueEntry(), 3-12
GetPropertyD(), 3-21
GetPropertyI(), 3-21
GetPropertyM(), 3-22
Hide(), 3-22
HideSelf(), 3-22
HTSelectTag(), 3-30
IOSetAccessName(), 3-38
IOSetItem(), 3-39
LogMessage(), 3-41
PlaySound(), 3-43
PrintWindow(), 3-44
SendKeys(), 3-54
SetDDEAppTopic(), 3-55
SetDDEItem(), 3-55
SetPropertyD(), 3-56

background image

Index

I-5

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

SetPropertyI(), 3-56
SetPropertyM(), 3-57
Show(), 3-58
ShowAt(), 3-58
ShowHome(), 3-59
ShowTopLeftAt(), 3-59

Funkcje skryptowe obiektów sterujących

Error Messages, A-2

Funkcje skryptowe QuickScript. Porównać Funkcje
Funkcje systemowe

ActivateApp(), 3-3
FileCopy(), 3-14
FileDelete(), 3-15
FileMove(), 3-16
FileReadFields(), 3-17
FileReadMessage(), 3-18
FileWriteFields(), 3-19
FileWriteMessage(), 3-20
GetNodeName(), 3-20
InfoAppActive(), 3-32
InfoAppTitle(), 3-33
InfoDisk(), 3-34
InfoFile(), 3-35
InfoInTouchAppDir(), 3-35
InfoResources(), 3-36
IsAnyAsyncFunctionBusy(), 3-40
RestartWindowViewer(), 3-53
StartApp(), 3-89

Funkcje tekstowe

StringASCII(), 3-89
StringChar(), 3-90
StringFromIntg(), 3-90
StringFromReal(), 3-91
StringFromTime(), 3-92
StringInString(), 3-93
StringLeft(), 3-93
StringLen(), 3-94
StringLower(), 3-94
StringMid(), 3-95
StringReplace(), 3-96
StringRight(), 3-97
StringSpace(), 3-97
StringTest(), 3-98
StringToIntg(), 3-98
StringToReal(), 3-99
StringTrim(), 3-99
StringUpper(), 3-100
Text(), 3-101

Funkcje trendów historycznych

HTGetLastError(), 3-23
HTGetPenName(), 3-24
HTGetTimeAtScooter(), 3-24
HTGetTimeStringAtScooter(), 3-25
HTGetValue(), 3-26
HTGetValueAtScooter(), 3-27

HTGetValueAtZone(), 3-28
HTScrollLeft(), 3-29
HTScrollRight(), 3-29
HTSetPenName(), 3-30
HTUpdateToCurrentTime(), 3-31
HTZoomIn(), 3-31
HTZoomOut(), 3-32
PrintHT(), 3-43

G

GetNodeName(), 3-20
GetPropertyD(), 3-21
GetPropertyI(), 3-21
GetPropertyM(), 3-22
GOT - Funkcje

GetPropertyD(), 3-21
GetPropertyI(), 3-21
GetPropertyM(), 3-22
SetPropertyD(), 3-56
SetPropertyI(), 3-56
SetPropertyM(), 3-57

Grupa obiektów sterujących okien - Właściwości

.Caption, 2-65
.Enabled, 2-66
.ListCount, 2-67
.ListIndex, 2-68
.NewIndex, 2-69
.ReadOnly, 2-70
.TopIndex, 2-71
.Value, 2-72
.Visible, 2-73

H

Hide(), 3-22
HideSelf(), 3-22
HTGetLastError(), 3-23
HTGetPenName(), 3-24
HTGetTimeAtScooter(), 3-24
HTGetTimeStringAtScooter(), 3-25
HTGetValue(), 3-26
HTGetValueAtScooter(), 3-27
HTGetValueAtZone(), 3-28
HTScrollLeft(), 3-29
HTScrollRight(), 3-29
HTSelectTag(), 3-30
HTSetPenName(), 3-30
HTUpdateToCurrentTime(), 3-31
HTZoomIn(), 3-31
HTZoomOut(), 3-32

I

I/O

Typy zmiennych, 2-3

background image

I-6

Index

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

InfoAppActive(), 3-32
InfoAppTitle(), 3-33
InfoDisk(), 3-34
InfoFile(), 3-35
InfoInTouchAppDir(), 3-35
InfoResources(), 3-36
Int(), 3-37
IOSetAccessName(), 3-38
IOSetItem(), 3-39
IsAnyAsyncFunctionBusy(), 3-40

K

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

dBASE, A-18
Oracle, A-17
Sybase lub Microsoft SQL Server, A-18

Kody komunikatów o błędach, A-15
Komunikaty kodów błędów, A-4
Komunikaty o błędach

Funkcji dla alarmów rozproszonych, A-2
Funkcji skryptowych obikektów sterujących okien,
A-2

Komunikaty o błędach i ich opis, A-3

L

Log(), 3-41
LogMessage(), 3-41
LogN(), 3-42

N

Nazwy pozycji

Nazwy pozycji DDE SPC, A-5
Pozycje DDE bieżącej próbki SPC, A-7
Pozycje DDE ręcznego wprowadzania SPC, A-10
Pozycje DDE wyświetlania i sterowania, A-5
Pozycje DDE Zaznaczania SPC, A-12

O

Obiekty sterujące okien - Funkcje

wcAddItem(), 3-102
wcClear(), 3-102
wcDeleteItem(), 3-103
wcDeleteSelection(), 3-103
wcErrorMessage(), 3-104
wcFindItem(), 3-105
wcGetItem(), 3-106
wcInsertItem(), 3-108
wcLoadList(), 3-108
wcLoadText(), 3-109
wcSaveList(), 3-110
wcSaveText(), 3-111
wcSetItemData(), 3-112

P

Pi(), 3-42
PlaySound(), 3-43
Pola trendów historycznych

.ChartLength, 2-11
.ChartStart, 2-12
.DisplayMode, 2-13
.MaxRange, 2-22
.MinRange, 2-27
.Pen1-.Pen8, 2-32
.ScooterLockLeft, 2-43
.ScooterLockRight, 2-44
.ScooterPosLeft, 2-45
.ScooterPosRight, 2-46
.TagID, 2-47
.UpdateCount, 2-53
.UpdateInProgress, 2-54
.UpdateTrend, 2-55

Pola zmiennych

.Comment, 2-12, 2-34
.EngUnits, 2-14
.MaxEU, 2-21
.MaxRaw, 2-23
.MinEU, 2-24
.MinRaw, 2-28
.Name, 2-29
.OffMsg, 2-31
.OnMsg, 2-31
.Quality, 2-34
.QualityLimit, 2-36
.QualityLimitString, 2-36
.QualityStatus, 2-37
.QualitySubstatus, 2-38
.QualitySubstatusString, 2-38
.RawValue, 2-39
.Reference, 2-40
.ReferenceComplete, 2-40
.TagID, 2-47
.TimeDate, 2-48
.TimeDateString, 2-48
.TimeDateTime, 2-48
.TimeDay, 2-49
.TimeHour, 2-49
.TimeMinute, 2-49
.TimeMonth, 2-50
.TimeMsec, 2-50
.TimeSecond, 2-50
.TimeTime, 2-51
.TimeTimeString, 2-51
.TimeYear, 2-51
.Value, 2-56

PrintHT(), 3-43
PrintWindow(), 3-44

background image

Index

I-7

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

R

RecipeDelete(), 3-46
RecipeGetMessage(), 3-46
RecipeGetMessages, A-4
RecipeLoad(), 3-47
RecipeLoad, A-3
RecipeSave(), 3-48
RecipeSelectNextRecipe(), 3-49
RecipeSelectPreviousRecipe(), 3-50
RecipeSelectRecipe(), 3-51
RecipeSelectUnit(), 3-52
RestartWindowViewer(), 3-53
ResultCode, A-15
Round(), 3-53
Rozproszone alarmy - Funkcje

almAckAll(), 3-3
almAckDisplay(), 3-4
almAckRecent(), 3-4
almAckSelect(), 3-5
almDefQuery(), 3-5
almMoveWindow(), 3-6
almQuery(), 3-7
almSelectAll(), 3-7
almSelectItem(), 3-8
almShowStats(), 3-8

Rozproszone alarmy - Funkcje skryptowe

Komunikaty o błędach, A-2

Rozproszone grupy alarmowe - Właściwości

.AlarmGroup, 2-57
.NextPage, 2-57
.NumAlarms, 2-58
.PageNum, 2-58
.PrevPage, 2-59
.PriFrom, 2-59
.PriTo, 2-60
.ProvidesReg, 2-60
.ProvidesRet, 2-61
.QueryState, 2-62
.QueryType, 2-63
.Successful, 2-64
.TotalPages, 2-64

S

SendKeys(), 3-54
SetDDEAppTopic(), 3-55
SetDDEItem(), 3-55
SetPropertyD(), 3-56
SetPropertyI(), 3-56
SetPropertyM(), 3-57
Sgn(), 3-57
Show(), 3-58
ShowAt(), 3-58
ShowHome(), 3-59

ShowTopLeftAt(), 3-59
Sin(), 3-59
Skryptowe funkcje

RecipeDelete(), 3-46
RecipeGetMessage(), 3-46
RecipeLoad(), 3-47
RecipeSave(), 3-48
RecipeSelectNextRecipe(), 3-49
RecipeSelectPreviousRecipe(), 3-50
RecipeSelectRecipe(), 3-51
RecipeSelectUnit(), 3-52

SPC - Funkcje

SPCConnect(), 3-60
SPCDisconnect(), 3-60
SPCDisplayData(), 3-61
SPCLocateScooter(), 3-61
SPCMoveScooter(), 3-61
SPCSaveSample(), 3-62
SPCSelectDataset(), 3-62
SPCSelectProduct(), 3-62
SPCSetControlLimits(), 3-63
SPCSetMeasurement(), 3-63
SPCSetProductCollected(), 3-64
SPCSetProductDisplayed(), 3-64
SPCSetRangeLimits(), 3-64
SPCSetSpecLimits(), 3-65

SPC - Nazwy pozycji, A-5
SPC - Pola

.SPCStatus, 2-47

SPCConnect(), 3-60
SPCDisconnect(), 3-60
SPCDisplayData(), 3-61
SPCLocateScooter(), 3-61
SPCMoveScooter(), 3-61
SPCSaveSample(), 3-62
SPCSelectDataset(), 3-62
SPCSelectProduct(), 3-62
SPCSetControlLimits(), 3-63
SPCSetMeasurement(), 3-63
SPCSetProductCollected(), 3-64
SPCSetProductDisplayed(), 3-64
SPCSetRangeLimits(), 3-64
SPCSetSpecLimits(), 3-65
SQL - Funkcje

SQLAppendStatement(), 3-65
SQLClearParam(), 3-65
SQLClearStatement(), 3-66
SQLClearTable(), 3-66
SQLCommit(), 3-67
SQLConnect(), 3-68
SQLCreateTable(), 3-69
SQLDelete(), 3-70
SQLDisconnect(), 3-71
SQLDropTable(), 3-71
SQLEnd(), 3-71

background image

I-8

Index

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

SQLErrorMsg(), 3-72
SQLExecute(), 3-72
SQLFirst(), 3-73
SQLGetRecord(), 3-73
SQLInsert(), 3-74
SQLInsertEnd(), 3-74
SQLInsertExecute(), 3-75
SQLInsertPrepare(), 3-75
SQLLast(), 3-76
SQLLoadStatement(), 3-76
SQLManageDSN(), 3-77
SQLNext(), 3-77
SQLNumRows(), 3-77
SQLPrepareStatement(), 3-78
SQLPrev(), 3-78
SQLRollback(), 3-79
SQLSelect(), 3-80
SQLSetParamChar(), 3-82
SQLSetParamDate(), 3-82
SQLSetParamDateTime(), 3-83
SQLSetParamDecimal(), 3-83
SQLSetParamFloat(), 3-84
SQLSetParamInt(), 3-84
SQLSetParamLong(), 3-84
SQLSetParamNull(), 3-85
SQLSetParamStatement(), 3-86
SQLSetParamTime(), 3-85
SQLTransact(), 3-86
SQLUpdate(), 3-87
SQLUpdateCurrent(), 3-88

SQLAppendStatement(), 3-65
SQLClearParam(), 3-65
SQLClearStatement(), 3-66
SQLClearTable(), 3-66
SQLCommit(), 3-67
SQLConnect(), 3-68
SQLCreateTable(), 3-69
SQLDelete(), 3-70
SQLDisconnect(), 3-71
SQLDropTable(), 3-71
SQLEnd(), 3-71
SQLErrorMsg(), 3-72
SQLErrorMsg, A-15
SQLExecute(), 3-72
SQLFirst(), 3-73
SQLGetRecord(), 3-73
SQLInsert(), 3-74
SQLInsertEnd(), 3-74
SQLInsertExecute(), 3-75
SQLInsertPrepare(), 3-75
SQLLast(), 3-76
SQLLoadStatement(), 3-76
SQLManageDSN(), 3-77
SQLNext(), 3-77
SQLNumRows(), 3-77

SQLPrepareStatement(), 3-78
SQLPrev(), 3-78
SQLRollback(), 3-79
SQLSelect(), 3-80
SQLSetParamChar(), 3-82
SQLSetParamDate(), 3-82
SQLSetParamDateTime(), 3-83
SQLSetParamDecimal(), 3-83
SQLSetParamFloat(), 3-84
SQLSetParamInt(), 3-84
SQLSetParamLong(), 3-84
SQLSetParamNull(), 3-85
SQLSetParamTime(), 3-85
SQLSetStatement(), 3-86
SQLTransact(), 3-86
SQLUpdate(), 3-87
SQLUpdateCurrent(), 3-88
Sqrt(), 3-88
StartApp(), 3-89
StringASCII(), 3-89
StringChar(), 3-90
StringFromIntg(), 3-90
StringFromReal(), 3-91
StringFromTime(), 3-92
StringInString(), 3-93
StringLeft(), 3-93
StringLen(), 3-94
StringLower(), 3-94
StringMid(), 3-95
StringReplace(), 3-96
StringRight(), 3-97
StringSpace(), 3-97
StringTest(), 3-98
StringToIntg(), 3-98
StringToReal(), 3-99
StringTrim(), 3-99
StringUpper(), 3-100
System rejestrowania danych historycznych - Zmienne

$HistoricalLogging, 1-9

Systemowe zmienne informacyjne

$Date, 1-7
$DateString, 1-8
$DateTime, 1-8
$Day, 1-8
$Hour, 1-9
$LogicRunning, 1-11
$Minute, 1-11
$Month, 1-11
$Msec, 1-12
$ObjHor, 1-12
$ObjVer, 1-13
$Second, 1-15
$StartDdeConversations, 1-15
$Time, 1-16
$TimeString, 1-16

background image

Index

I-9

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

$Year, 1-16

T

Tabela typów zmiennych, 2-4
Tan(), 3-100
Text(), 3-101
Trunc(), 3-101
Typ zmiennej a dostępne pola, 2-4
Typy zmiennych, 2-2

I/O, 2-3

I/O Discrete, 2-3
I/O Integer, 2-3
I/O Real, 2-3

Indirect, 2-3
Memory, 2-2

Memory Discrete, 2-2
Memory Integer, 2-2
Memory Message, 2-2
Memory Real, 2-2

Różne, 2-4

Group Var, 2-4
Hist Trend, 2-4
Indirect Analog, 2-3
Indirect Discrete, 2-3
Indirect Message, 2-3
SuperTag, 2-4
Tag ID, 2-4

U

Usuwanie zakłóceń dla funkcji skryptowych receptur, A-3
Usuwanie zakłóceń dla funkcji skryptowych SQL, A-15
Usuwanie zakłóceń dla funkcji skryptowych, A-1
Usuwanie zakłóceń, A-1

Skryptowe funkcje, A-3
SQL funkcje, A-15

W

wcAddItem(), 3-102
wcClear(), 3-102
wcDeleteItem(), 3-103
wcDeleteSelection(), 3-103
wcErrorMessage(), 3-104
wcErrorMessage, A-2
wcFindItem(), 3-105
wcGetItem(), 3-106
wcGetItemData(), 3-107
wcInsertItem(), 3-108
wcLoadList(), 3-108
wcLoadText(), 3-109
wcSaveList(), 3-110
wcSaveText(), 3-111
wcSetItemData(), 3-112

Wewnętrzne zmienne systemowe. Porównać Zmienne

systemowe

WWControl(), 3-113
WWDDE Functions

WWControl(), 3-113
WWExecute(), 3-114
WWPoke(), 3-115
WWRequest(), 3-116

WWExecute(), 3-114
WWPoke(), 3-115
WWRequest(), 3-116

Z

Zabezpieczające funkcje

ChangePassword(), 3-10

Zabezpieczające zmienne systemowe

$AccessLevel, 1-2
$ChangePassword, 1-6
$ConfigureUsers, 1-7
$InactivityTimeout, 1-10
$InactivityWarning, 1-10
$Operator, 1-13
$OperatorEntered, 1-14
$PasswordEntered, 1-14

Zmienne systemowe

$AccessLevel, 1-2
$AlarmLogging, 1-3
$AlarmPrinterError, 1-3
$AlarmPrinterNoPaper, 1-4
$AlarmPrinterOffline, 1-4
$AlarmPrinterOverflow, 1-5
$ApplicationChanged, 1-5
$ApplicationVersion, 1-6
$ChangePassword, 1-6
$ConfigureUsers, 1-7
$Date, 1-7
$DateString, 1-8
$DateTime, 1-8
$Day, 1-8
$HistoricalLogging, 1-9
$Hour, 1-9
$InactivityTimeout, 1-10
$InactivityWarning, 1-10
$LogicRunning, 1-11
$Minute, 1-11
$Month, 1-11
$Msec, 1-12
$NewAlarm, 1-12
$ObjHor, 1-12
$ObjVer, 1-13
$Operator, 1-13
$OperatorEntered, 1-14
$PasswordEntered, 1-14
$Second, 1-15

background image

I-10

Index

Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

$StartDdeConversations, 1-15
$System, 1-15
$Time, 1-16
$TimeString, 1-16
$Year, 1-16


Document Outline


Wyszukiwarka

Podobne podstrony:
LI ASK RT IT700
LI ASK MR IT700
LI ASK OF IT800
LI ASK SA IT700
LI ASK SPC IT700
LI ASK PP IT700
LI ASK RT IT700
LI ASK OF IT800
li ask zz ge3 5E2JZTQ5PYH7Q3CI6HVII64U3BJBL6JHS7BPSTA
LI ASK SA IT711
LI ASK CSC GE1
Phantom Of The Opera All I Ask Of You
LI ASK RT IT711

więcej podobnych podstron