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

Transkrypt

InTouch 7.0 - Opis funkcji, pól i zmiennych systemowych
Wonderware FactorySuite
Opis funkcji, pól
i zmiennych systemowych
Podręcznik Użytkownika
Wersja A
Grudzień 1997
Wonderware Corporation
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: [email protected].; http://www.astor.com.pl.
ISBN 83-910632-1-6
iii
Spis treści
Wprowadzenie
Rozdział 1 - Zmienne systemowe
xi
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
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
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
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
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
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
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
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
xi
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
Zmienna
{ .HiLimit | .HiHiLimit }
[ErrorMessage=]
Ogólnie ujmując, czcionką pogrubioną oznaczone są
pola, zmienne systemowe i funkcje.
Przy opisie składni, czcionką pochyloną zaznaczono
miejsca gdzie należy wprowadzić własne dane.
Przy opisie składni, kreska pionowa oznacza, że
należy wybrać jeden spośród dwóch lub większej
liczby elementów.
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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
bezpieczeństwo
xii
Wprowadzenie
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.
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Wprowadzenie
xiii
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.
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
1-1
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.
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
1-2
Rozdział 1
$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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Zmienne systemowe
$AlarmLogging
1-3
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;
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
1-4
Rozdział 1
$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;
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Zmienne systemowe
$AlarmPrinterOverflow
1-5
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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
1-6
Rozdział 1
$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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Zmienne systemowe
$ConfigureUsers
1-7
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ę}
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
1-8
Rozdział 1
$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;
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Zmienne systemowe
$HistoricalLogging
1-9
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);
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
1-10
Rozdział 1
$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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Zmienne systemowe
$LogicRunning
1-11
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;
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
1-12
Rozdział 1
$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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Zmienne systemowe
$ObjVer
1-13
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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
1-14
Rozdział 1
$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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Zmienne systemowe
$Second
1-15
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}
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
1-16
Rozdział 1
$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;
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
2-1
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.
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
2-2
Rozdział 2
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.4e38.
Wszystkie obliczenia na zmiennych tego typu wykonywane są z dokładnością do 64bitową, a zapamiętywane z dokładnością do 32 bitów.
Memory Message
Zmienna typu tekstowego o długości do 131 znaków.
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Pola
2-3
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.4e38.
Wszystkie obliczenia na zmiennych tego typu wykonywane są z dokładnością do 64-bitów,
a zapamiętywane z dokładnością do 32 bitów.
I/O 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.
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
2-4
Rozdział 2
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.
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Pola
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
2-5
2-6
Rozdział 2
.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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Pola
.Alarm
2-7
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()
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
2-8
Rozdział 2
.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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Pola
.AlarmEnabled
2-9
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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
2-10
Rozdział 2
.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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Pola
.ChartLength
2-11
dane historyczne
Pole to definiuje długość (w jednostkach czasu) wykresu trendu historycznego.
Sposób użycia
Uwagi
Tagname.ChartLength
Parametry
Opis
Tagname
Dowolna zmienna typu Hist Trend.
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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
2-12
Rozdział 2
.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.
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Pola
.DevTarget
2-13
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;
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
2-14
Rozdział 2
.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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Pola
.HiHiStatus
2-15
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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
2-16
Rozdział 2
.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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Pola
.LoLimit
2-17
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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
2-18
Rozdział 2
.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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Pola
.LoStatus
2-19
alarmy
Pole to określa, czy w systemie występuje pierwszy dolny alarm progowy LoLimit.
Sposób użycia
Tagname.LoStatus
Parametry
Tagname
Opis
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
Tagname
Opis
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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
2-20
Rozdział 2
.MajorDevStatus
alarmy
Pole to określa, czy w systemie występuje alarm dużego odchylenia.
Sposób użycia
Tagname.MajorDevStatus
Parametry
Tagname
Opis
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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Pola
.MaxEU
2-21
zmienna
Pole to zawiera maksymalną wartość danej zmiennej, wyrażoną w jednostkach
inżynierskich (EU).
Sposób użycia
Tagname.MaxEU
Parametry
Tagname
Uwagi
Opis
Dowolna zmienna typu, Integer , Real, lub Indirect Analog.
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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
2-22
Rozdział 2
.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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Pola
.MaxRaw
2-23
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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
2-24
Rozdział 2
.MinEU
zmienna
Pole to zawiera minimalną wartość danej zmiennej wyrażoną w jednostkach inżynierskich
(EU).
Sposób użycia
Tagname.MinEU
Parametry
Tagname
Uwagi
Opis
Dowolna zmienna typu, Integer , Real, lub Indirect Analog.
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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Pola
.MinorDevPct
Sposób użycia
2-25
alarmy
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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
2-26
Rozdział 2
.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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Pola
.MinRange
2-27
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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
2-28
Rozdział 2
.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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Pola
.Name
2-29
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, "#");
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
2-30
Rozdział 2
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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Pola
.OffMsg
2-31
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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
2-32
Rozdział 2
.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
Uwagi
Tagname{.Pen1 | .Pen2 | .Pen3 | .Pen4 | .Pen5 | .Pen6 | .Pen7 |
.Pen8};
Parametry
Opis
Tagname
Dowolna zmienna typu Hist Trend.
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;
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Pola
2-33
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( )
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
2-34
Rozdział 2
.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:
1.
2.
3.
4.
Dobra
Obcięta od góry
Obcięta od dołu
Brak możliwości
konwersji
5. Brak dostępu
6. Przerwana
komunikacja
OPC QualityBytes
.QualityStatus
.QualitySubstatus
.QualiyLimit
War. heks.
OPC Quality Bits
MSByte
LSByte
QQSSSSLL
XXXXXXXX
0x00C0
0x0056
0x0055
0x0040
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
Q=3
Q=1
Q=1
Q=1
S=0
S=5
S=5
S=0
L=0
L=2
L=1
L=0
0x0004
0x0018
00000000
00000000
00000000
00000000
Q=0
Q=0
S=1
S=6
L=0
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
•
•
•
•
Przykład
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.
Wrócona została wartość 0x0000A z rejestru zawierającego 10 (w postaci
heksadecymalnej).
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Pola
2-35
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.
16 bitowa liczba całkowita jest zmniejszana do wartości 65535.
Przykład
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ą.
16 bitowa liczba całkowita jest zmniejszana do wartości 0.
Przykład
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).
Nadesłanie wartości 0x000A z rejestru BCD przetwornika PLC.
Przykład
5. Brak dostępu
•
•
•
•
Przykład
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.
Próba odczytu R40001, jeżeli R40001 nie jest zdefiniowane w mapie pamięci PLC.
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
2-36
Rozdział 2
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
1
2
3
Patrz również
Bez ograniczenia
Ograniczenie od dołu
Ograniczenie od góry
Stała
.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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Pola
.QualityStatus
2-37
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
1
3
Patrz również
Zły
Niepewny
Dobry
.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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
2-38
Rozdział 2
.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
1
2
3
4
5
6
7
Nie określona
Błąd w konfiguracji
Nie podłączona
Uszkodzenie sprzętowe
Uszkodzenie czujnika
Ostatnio odebrana wartość
Uszkodzenie Com
Wyłączenie
Podstatus (SSSS) w przypadku gdy jakość jest NIEPEWNA (QQ=1):
0
1
4
5
6
Nie określona
Ostatnio odebrana
wartość
Czujnik nie
dokładny
Przekroczenie
Jednostek
inżynierskich
Sub-normalna
Podstatus (SSSS) w przypadku gdy jakość jest Dobra (QQ=2):
0
6
Patrz również
Nie określona
Lokalne
przepisanie
.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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Pola
.RawValue
2-39
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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
2-40
Rozdział 2
.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:
.ReferenceComplete
R40001 }
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
Uwagi
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.
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)
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Pola
.ROCPct
2-41
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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
2-42
Rozdział 2
.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-ChangeAlarm";
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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Pola
.ScooterLockLeft
2-43
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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
2-44
Rozdział 2
.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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Pola
.ScooterPosLeft
2-45
dane historyczne
Pole to umożliwia odczyt i/lub zmianę położenia lewego suwaka na wykresie trendu
historycznego.
Sposób użycia
Uwagi
Tagname.ScooterPosLeft
Parametry
Opis
Tagname
Dowolna zmienna typu Hist Trend.
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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
2-46
Rozdział 2
.ScooterPosRight
dane historyczne
Pole to umożliwia odczyt i/lub zmianę położenia prawego suwaka na wykresie trendu
historycznego.
Sposób użycia
Uwagi
Tagname.ScooterPosRight
Parametry
Opis
Tagname
Dowolna zmienna typu Hist Trend.
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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Pola
.SPCStatus
2-47
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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
2-48
Rozdział 2
.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
Typ danych
Tagname.TimeDate
Parametry
Opis
Tagname
Dowolna zmienna typu Discrete, Integer, Real, Indirect Analog lub
Message.
Integer (tylko odczyt)
.TimeDateString
zmienna
Zmienna tekstowa zawierająca datę w formacie określonym w pliku WIN.INI.
Sposób użycia
Typ danych
Tagname.TimeDateString
Parametry
Opis
Tagname
Dowolna zmienna typu Discrete, Integer, Real, Indirect Analog lub
Message.
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
Typ danych
Tagname.TimeDateTime
Parametry
Opis
Tagname
Dowolna zmienna typu Discrete, Integer, Real, Indirect Analog lub
Message.
Message (tylko odczyt)
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Pola
.TimeDay
2-49
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.
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
2-50
Rozdział 2
.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.
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Pola
.TimeTime
2-51
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
Typ danych
Tagname.TimeTimeString
Parametry
Opis
Tagname
Dowolna zmienna typu Discrete, Integer, Real, Indirect Analog lub
Message.
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.
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
2-52
Rozdział 2
.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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Pola
.UpdateCount
2-53
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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
2-54
Rozdział 2
.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
Uwagi
Tagname.UpdateInProgress
Parametry
Opis
Tagname
Dowolna zmienna typu Hist Trend.
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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Pola
.UpdateTrend
2-55
dane historyczne
Pole to umożliwia aktualizację wykresu trendu historycznego.
Sposób użycia
Uwagi
Tagname.UpdateTrend
Parametry
Opis
Tagname
Dowolna zmienna typu Hist Trend.
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;
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
2-56
Rozdział 2
.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;
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Pola
.AlarmGroup
2-57
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
Tagname
Nazwa obiektu alarmowego, np. AlmObj_1.
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
Value
Nazwa obiektu alarmowego, np. AlmObj1.
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.
Wartość dyskretna. Może to być również zmienna dyskretna
przechowująca wartość do zapisu w momencie przetwarzania
funkcji.
Tagname
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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
2-58
Rozdział 2
.NumAlarms
alarmowanie rozproszone
Pole to zawiera liczbę alarmów w obiekcie alarmowym.
Sposób użycia
[ErrorNumber=]GetPropertyI("ObjectName.NumAlarms",Tagname);
Parametry
Opis
ObjectName
Tagname
Nazwa obiektu alarmowego, np. AlmObj_1.
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()
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Pola
.PrevPage
2-59
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
Tagname
Nazwa obiektu alarmowego, np. AlmObj_1.
Zmienna (takiego samego typu jaki ma być zwrócony),
przechowująca wartość właściwości w momencie realizacji funkcji.
Wartość dyskretna. Może to być również zmienna dyskretna
przechowująca wartość do zapisu w momencie przetwarzania
funkcji.
Value
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
Tagname
Nazwa obiektu alarmowego, np. AlmObj_1.
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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
2-60
Rozdział 2
.PriTo
alarmowanie rozproszone
Pole to zawiera górny zakres priorytetu alarmów.
Sposób użycia
[ErrorNumber=]GetPropertyI("ObjectName.PriTo",Tagname);
Parametry
Opis
ObjectName
Tagname
Nazwa obiektu alarmowego, np. AlmObj_1.
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
Tagname
Nazwa obiektu alarmowego, np. AlmObj_1.
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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Pola
.ProviderRet
2-61
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
Tagname
Nazwa obiektu alarmowego, np. AlmObj_1.
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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
2-62
Rozdział 2
.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
Tagname
Nazwa obiektu alarmowego, np. AlmObj_1.
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()
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Pola
.QueryType
2-63
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
Tagname
Nazwa obiektu alarmowego, np. AlmObj_1.
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()
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
2-64
Rozdział 2
.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
Tagname
Nazwa obiektu alarmowego, np. AlmObj_1.
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
Tagname
Nazwa obiektu alarmowego, np. AlmObj_1.
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()
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Pola
.Caption
2-65
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
Tagname
"Message"
Nazwa obiektu sterującego okna, np. ChkBox_4.
Zmienna tekstowa do przechowywania żądanej właściwości.
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()
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
2-66
Rozdział 2
.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
Tagname
Nazwa obiektu sterującego okna, np. ChkBox_4.
Zmienna dyskretna przeznaczona do przechowywania żądanej
właściwości.
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.
Dyskretne
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()
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Pola
.ListCount
2-67
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
Tagname
Nazwa obiektu sterującego okna, np. ListBox_4.
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()
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
2-68
Rozdział 2
.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
Tagname
Number
Nazwa obiektu sterującego okna, np. ListBox_4.
Zdefiniowana zmienna zawierająca liczbę elementów na liście.
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
Przykład
Pola listy i listy rozwijalne.
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()
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Pola
.NewIndex
2-69
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
Tagname
Nazwa obiektu sterującego okna, np. ListBox_4.
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()
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
2-70
Rozdział 2
.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
Tagname
Nazwa obiektu sterującego okna, np. TextBox_1.
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()
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Pola
.TopIndex
2-71
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
Tagname
Nazwa obiektu sterującego okna, np. ListBox_1.
Zmienna typu Integer, przechowująca wartość właściwości w
momencie realizacji funkcji.
Liczba definiująca pierwszy od góry element w polu listy.
Number
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()
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
2-72
Rozdział 2
.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
.Value
Nazwa obiektu sterującego okna, np. ChkBox_4.
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.
Zdefiniowana zmienna programu InTouch (takiego samego typu jak
typ zwracany), przechowująca wartość właściwości w momencie
realizacji funkcji.
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.
Tagname
Value
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()
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Pola
.Visible
2-73
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
Tagname
Nazwa obiektu sterującego okna, np. ListBox_1.
Zdefiniowana zmienna programu InTouch (takiego samego typu jak
typ zwracany), przechowująca wartość właściwości w momencie
realizacji funkcji.
Wartość dyskretna. Może to być również zmienna dyskretna
przechowująca wartość do zapisu w momencie przetwarzania
funkcji.
Number
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()
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
3-1
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.
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
3-2
Rozdział 3
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;
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Funkcje skryptowe
ActivateAPP()
3-3
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
Comment
Nazwa obiektu alarmowego, np. AlmObj_1.
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);
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
3-4
Rozdział 3
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
Comment
Nazwa obiektu alarmowego, np. AlmObj_1.
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
Comment
Nazwa obiektu alarmowego, np. AlmObj_1.
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);
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Funkcje skryptowe
almAckSelect()
3-5
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
Comment
Nazwa obiektu alarmowego, np. AlmObj_1.
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
Uwagi
[Result=]almDefQuery(ObjectName);
Parametry
Opis
ObjectName
Nazwa obiektu alarmowego, np. AlmObj_1.
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”);
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
3-6
Rozdział 3
almMoveWindow()
alarmowanie rozproszone
Przewija okno obiektu alarmowego.
Składnia
[Result=]almMoveWindow(ObjectName,Options,Repeat);
Parametry
Opis
ObjectName
Options
Nazwa obiektu alarmowego, np. AlmObj_1.
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ę.
Liczba określająca, ile razy operacja ma zostać powtórzona.
Repeat
! 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);
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Funkcje skryptowe
almQuery()
3-7
alarmowanie rozproszone
Wykonanie zapytania w celu zaktualizowania obiektu alarmowego.
Składnia
[Result=]almQuery(ObjectName,AlarmList,FromPri,
ToPri,State,Type);
Parametry
Opis
ObjectName
AlarmList
Nazwa obiektu alarmowego. Przykładowo, AlmObj_1.
Grupa alarmowa lub lista grup objętych zapytaniem o alarmy, np.
"MyGroup" lub zmienna typu Message.
Dolny zakres priorytetu alarmów, które mają być wyświetlone,
np. 100, lub zmienna typu Integer.
Górny zakres priorytetu, dla którego alarmy mają być
wyświetlone. Przykładowo, 900, lub zmienna typu integer.
Rodzaj alarmów, które mają być wyświetlone. Przykładowo,
"UnAck" lub zmienna tekstowa. Dopuszczalnymi statusami są
All, UnAck, oraz Ack.
Określa typ zapytania, przykładowo, "Hist" (Alarmy
historyczne"), lub "Summ" (Alarmy bieżące).
FromPri
ToPri
State
Type
! 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;
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
3-8
Rozdział 3
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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Funkcje skryptowe
ArcSin()
3-9
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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
3-10
Rozdział 3
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);
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Funkcje skryptowe
DialogStringEntry()
3-11
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
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.
Tekst użytkownika, który ma być wyświetlony w górnej części
klawiatury.
MessageTag_Text
UserPrompt_Text
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 }
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
3-12
Rozdział 3
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
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.
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).
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).
Tekst (wprowadzony przez użytkownika), który ma zostać
wyświetlony w górnej części klawiatury.
ValueTag_Text
LowLimit
HighLimit
UserPrompt_Text
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.
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Funkcje skryptowe
3-13
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
Discrete_Tag
OnMsg
Zmienna tekstowa .
Zmienna dyskretna (typu Discrete).
Komunikat tekstowy, który będzie wyświetlany, gdy wartość
zmiennej Discrete_Tag wynosi 1 (True, On, Yes).
Komunikat tekstowy, który będzie wyświetlany, gdy wartość
zmiennej Discrete_Tag wynosi 0 (False, Off, No).
OffMsg
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;
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
3-14
Rozdział 3
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.
Nazwa pliku wynikowego, włącznie z pełną ścieżką dostępu, lub
nazwa katalogu (patrz przykłady poniżej).
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.
DestFile
DoneTag
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.
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Funkcje skryptowe
3-15
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.
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
3-16
Rozdział 3
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
Uwagi
FileMove(SourceFile,DestFile,DoneTag);
Parametry
Opis
SourceFile
DestFile
DoneTag
Nazwa pliku źródłowego, włącznie z pełną ścieżką dostępu.
Nazwa pliku wynikowego, włącznie z pełną ścieżką dostępu.
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.
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.
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Funkcje skryptowe
FileReadFields()
3-17
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
FileOffset
StartTag
Nazwa pliku źródłowego do odczytu.
Miejsce rozpoczęcia odczytu (w pliku).
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.
Jest to liczba elementów do odczytu (liczba pól oddzielonych
przecinkami w każdym rekordzie pliku).
NumberOfFields
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.
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
3-18
Rozdział 3
FileReadMessage()
system
Odczytuje podaną liczbę bajtów, lub całą linię z podanego pliku.
Składnia
FileReadMessage(Filename,FileOffset,Message_Tag,CharsToRead);
Parametry
Opis
FileName
FileOffset
Message_Tag
Nazwa pliku źródłowego do odczytu.
Miejsce rozpoczęcia odczytu (w pliku).
Nazwa zmiennej programu InTouch, w której zostanie zapisany
pierwszy element odczytany z pliku. Maksymalnie można
zapamiętać 131 znaków.
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).
CharsToRead
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.
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Funkcje skryptowe
FileWriteFields()
3-19
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.
Miejsce rozpoczęcia zapisu (w pliku). Jeśli wartość parametru
FileOffset wynosi -1, funkcja dopisze rekord na końcu pliku.
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.
Liczba elementów do zapisu (liczba pól oddzielonych
przecinkami w każdym rekordzie pliku).
FileOffset
StartTag
NumberOfFields
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);
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
3-20
Rozdział 3
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.
Miejsce rozpoczęcia zapisu (w pliku). Jeśli wartość parametru
FileOffset wynosi -1, funkcja dopisze rekord na końcu pliku.
Ciąg znaków, który ma zostać zapisany w pliku.
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.
FileOffset
Message_Tag
LineFeed
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.
Zmienna całkowita, określająca długość zmiennej tekstowej w
znakach.
NodeNum
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;
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Funkcje skryptowe
GetPropertyD()
3-21
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.
Właściwość obiektu sterującego okna lub obiektu do
wyświetlania alarmów.
.Property
! 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.
Właściwość obiektu sterującego okna lub obiektu do
wyświetlania alarmów.
.Property
! 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".
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
3-22
Rozdział 3
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.
Właściwość obiektu sterującego okna lub obiektu do
wyświetlania alarmów.
.Property
! 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.
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Funkcje skryptowe
HTGetLastError()
3-23
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.
Liczba całkowita reprezentująca wartość pola .UpdateCount
zmiennej reprezentującej trend.
Zmienna typu Integer lub liczba całkowita określająca numer
pisaka (od 1 do 8).
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).
UpdateCount
PenNum
Result
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);
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
3-24
Rozdział 3
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.
Liczba całkowita zawierająca wartość pola .UpdateCount
zmiennej reprezentującej trend.
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).
UpdateCount
PenNum
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.
Liczba całkowita zawierająca wartość pola .UpdateCount
zmiennej reprezentującej trend.
Zmienna typu Integer lub liczba całkowita określająca prawy (=1)
lub lewy (=2) suwak.
Liczba rzeczywista równa wartości pola .ScooterPosRight lub
.ScooterPosLeft zmiennej reprezentującej trend.
UpdateCount
ScootNum
ScootLoc
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);
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Funkcje skryptowe
HTGetTimeStringAtScooter()
3-25
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.
Liczba całkowita reprezentująca wartość pola .UpdateCount
zmiennej reprezentującej trend.
Zmienna typu Integer lub liczba całkowita określająca prawy (=1)
lub lewy (=2) suwak.
Liczba rzeczywista równa wartości pola .ScooterPosRight lub
.ScooterPosLeft zmiennej reprezentującej trend.
Ł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).
UpdateCount
ScootNum
ScootLoc
Format_Text
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");
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
3-26
Rozdział 3
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.
Liczba całkowita reprezentująca wartość pola .UpdateCount
zmiennej reprezentującej trend.
Zmienna typu Integer lub liczba całkowita określająca numer
pisaka (od 1 do 8).
Ł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.
UpdateCount
PenNum
ValType_Text
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");
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Funkcje skryptowe
HTGetValueAtScooter()
3-27
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.
Liczba całkowita reprezentująca wartość pola .UpdateCount
zmiennej reprezentującej trend.
Zmienna typu Integer lub liczba całkowita określająca prawy (=1)
lub lewy (=2) suwak.
Liczba rzeczywista równa wartości pola .ScooterPosRight lub
.ScooterPosLeft zmiennej reprezentującej trend.
Zmienna typu Integer lub liczba całkowita określająca numer
pisaka (od 1 do 8).
Ł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ć,
UpdateCount
ScootNum
ScootLoc
PenNum
ValType_Text
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");
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
3-28
Rozdział 3
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.
Liczba całkowita reprezentująca wartość pola .UpdateCount
zmiennej reprezentującej trend.
Liczba rzeczywista równa wartości pola .ScooterPosLeft
(pozycja lewego suwaka) zmiennej reprezentującej trend.
Liczba rzeczywista równa wartości pola .ScooterPosRight
(pozycja prawego suwaka) zmiennej reprezentującej trend.
Zmienna typu Integer lub liczba całkowita określająca numer
pisaka (od 1 do 8).
Ł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.
UpdateCount
Scoot1Loc
Scoot2Loc
PenNum
ValType_Text
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");
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Funkcje skryptowe
HTScrollLeft()
3-29
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.
Liczba rzeczywista oznaczająca wartość przesunięcia w
procentach długości wykresu.
Percent
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.
Liczba rzeczywista oznaczająca wartość przesunięcia w
procentach długości wykresu.
Percent
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.
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
3-30
Rozdział 3
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.
Zmienna typu Integer lub liczba całkowita równa numerowi
pisaka (od 1 do 8), który ma zostać związany z zmienną
Tagname.
Zmienna tekstowa oznaczająca nazwę zmiennej przypisanej
danemu pisakowi.
PenNum
Tagname
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();
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Funkcje skryptowe
HTUpdateToCurrentTime()
3-31
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
Przykład
HTUpdateToCurrentTime(Hist_Tag);
Parametry
Opis
Hist_Tag
Nazwa zmiennej typu HistTrend reprezentującej trend
historyczny.
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.
Ł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.
LockString
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");
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
3-32
Rozdział 3
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.
Ł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.
LockString
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
Przykład
DiscreteResult=InfoAppActive(AppTitle);
Parametry
Opis
AppTitle
Nazwa sprawdzanej aplikacji podana jako łańcuch znaków.
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;
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Funkcje skryptowe
InfoAppTitle()
3-33
system
Zwraca nazwę uruchomionej aplikacji (znajdującą się na pasku tytułowym).
Składnia
Przykład
MessageResult=InfoAppTitle("ProgramEXEName”);
Parametry
Opis
ProgramEXEName
Łańcuch znaków zawierający nazwę pliku z rozszerzeniem .EXE.
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"
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
3-34
Rozdział 3
InfoDisk()
system
Zwraca informacje na temat lokalnego lub sieciowego napędu.
Składnia
IntegerResult=InfoDisk("Drive”,InfoType,Trigger);
Parametry
Opis
Drive
InfoType
Łańcuch znaków lub zmienna tekstowa z nazwą dysku.
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).
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.
Trigger
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.
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Funkcje skryptowe
InfoFile()
3-35
system
Zwraca informacje o określonym pliku lub kartotece.
Składnia
IntegerResult=InfoFile("Filename”,”InfoType”,Trigger);
Parametry
Opis
FileName
InfoType
Łańcuch znaków zawierający nazwę pliku.
Liczba całkowita określająca rodzaj informacji:
Typ
Opis
Sprawdza czy zadany plik istnieje. Jeżeli parametr
1
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.
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.
Trigger
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"
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
3-36
Rozdział 3
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.
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.
Trigger
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
InfoResources(4, $Minute) zwraca 14
Przykład
{bajtów}
{zadań}
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.
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Funkcje skryptowe
Int()
3-37
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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
3-38
Rozdział 3
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.
Sieciowa nazwa komputera
Nowa wartość parametru AppName. Łańcuch znaków lub
zmienna tekstowa.
Nowa wartość parametru TopicName. Łańcuch znaków lub
zmienna tekstowa.
NodeName
AppName
TopicName
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.
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Funkcje skryptowe
IOSetItem()
3-39
różne
Zmienia nazwę dostępu i/lub nazwę pozycji w polu .Reference zmiennej typu I/O.
Składnia
Przykłady
IOSetItem("Tagname”,”AccessName”,”Item”);
Parametry
Opis
Tagname
AccessName
Item
Dowolna zmienna typu I/O ujęta w cudzysłowy.
Nowa Nazwa dostępu
Nowa Nazwa pozycji
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");
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
3-40
Rozdział 3
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.
Wartość całkowita podająca w sekundach okres czasu, w ciągu
którego będzie sprawdzane, czy jest uruchomiona funkcja
asynchroniczna.
timeout
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;
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Funkcje skryptowe
Log()
3-41
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, "#”));
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
3-42
Rozdział 3
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.
Podstawa logarytmu (liczba rzeczywista). Liczba lub zmienna
całkowita.
Base
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...
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Funkcje skryptowe
PlaySound()
3-43
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.
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().
Flags
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");
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
3-44
Rozdział 3
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.
Liczba zmiennoprzecinkowa oznaczająca wielkość lewego
marginesu w calach. Liczba lub zmienna typu rzeczywistego.
Liczba zmiennoprzecinkowa oznaczająca wielkość górnego
marginesu w calach. Liczba lub zmienna typu rzeczywistego.
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.
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.
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.
Left
Top
Width
Height
Options
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.
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Funkcje skryptowe
3-45
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.
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
3-46
Rozdział 3
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.
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.
RecipeName
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
Message_Tag
Zmienna analogowa zawierająca kod błędu.
Zmienna tekstowa zawierająca komunikat związany z kodem
błędu.
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.
Number
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);
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Funkcje skryptowe
RecipeLoad()
3-47
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.
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.
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).
UnitName
RecipeName
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");
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
3-48
Rozdział 3
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.
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.
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).
UnitName
RecipeName
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");
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Funkcje skryptowe
RecipeSelectNextRecipe()
3-49
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).
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).
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.
RecipeName
Number
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);
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
3-50
Rozdział 3
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).
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).
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.
RecipeName
Number
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);
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Funkcje skryptowe
RecipeSelectRecipe()
3-51
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).
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).
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.
RecipeName
Number
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.
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
3-52
Rozdział 3
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).
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).
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.
UnitName
Number
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() są
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.
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Funkcje skryptowe
RestartWindowViewer
3-53
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.
Dokładność, z jaką podana liczba ma zostać zaokrąglona. Liczba,
zmienna rzeczywista lub całkowita.
Precision
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()
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
3-54
Rozdział 3
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
Uwagi
SendKeys KeySequence;
Parametry
Opis
KeySequence
Dowolna sekwencja klawiszy lub zmienna tekstowa InToucha.
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
BACKSPACE
BREAK
CAPSLOCK
DELETE
DOWN
END
ENTER
ESCAPE
F1
{BACKSPACE} lub {BS}HOME
{BREAK}
INSERT
{CAPSLOCK}
LEFT
{DELETE} lub {DEL} NUMLOCK
{DOWN}
PAGE DOWN
{END}
PAGE UP
{ENTER} lub ~ (tylda) PRTSC
{ESCAPE} lub {ESC}
RIGHT
{F1}*
TAB
UP
Kod
{HOME}
{INSERT}
{LEFT}
{NUMLOCK}
{PGDN}
{PGUP}
{PRTSC}
{RIGHT}
{TAB}
{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
+
^
%
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Funkcje skryptowe
Przykłady
3-55
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.
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
3-56
Rozdział 3
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.
Właściwość obiektu sterującego okna lub obiektu do
wyświetlania alarmów.
.Property
! 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.
Właściwość obiektu sterującego okna, lub obiektu do
wyświetlania alarmów.
.Property
! 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".
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Funkcje skryptowe
SetPropertyM()
3-57
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.
Właściwość obiektu sterującego okna, lub obiektu do
wyświetlania alarmów.
.Property
! 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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
3-58
Rozdział 3
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
Horiz
Nazwa okna. Łańcuch znaków lub zmienna tekstowa.
Współrzędna pozioma. Parametr ten może być wartością stałą lub
zmienną programu InTouch.
Współrzędna pionowa. Parametr ten może być wartością stałą lub
zmienną programu InTouch.
Vert
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()
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Funkcje skryptowe
ShowHome
3-59
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
Horiz
Nazwa okna. Łańcuch znaków lub zmienna tekstowa.
Współrzędna pozioma Parametr ten może być wartością stałą lub
zmienną programu InTouch.
Współrzędna pionowa Parametr ten może być wartością stałą lub
zmienną programu InTouch.
Vert
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()
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
3-60
Rozdział 3
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 użytkownika. Łańcuch znaków lub zmienna tekstowa.
Hasło.
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();
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Funkcje skryptowe
SPCDisplayData()
3-61
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.
Data w formacie mm/dd/rr. Łańcuch znaków lub zmienna
tekstowa.
Godzina w formacie gg:mm:ss. Łańcuch znaków lub zmienna
tekstowa.
Okres czasu, dla którego dane będą wyświetlane. Parametr ten
może być wartością stałą lub zmienną programu InTouch.
DateString
TimeString
RangeInHours
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.
Numer dowolnej, nie zawierającej błędów próbki. Parametr ten
może być wartością stałą lub zmienną programu InTouch.
SampleNumber
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.
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.
IncrementValue
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
3-62
Rozdział 3
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.
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Funkcje skryptowe
SPCSetControlLimits()
3-63
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.
Wartość, która ma zostać wykorzystana jako górny limit
kontrolny (UCL) dla wykresu kontrolnego. Liczba lub zmienna
typu rzeczywistego.
Wartość, która ma zostać wykorzystana jako dolny limit
kontrolny (LCL) dla wykresu kontrolnego. Liczba lub zmienna
typu rzeczywistego.
XUCL
XLCL
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.
Numer pomiaru (od 1 do 300). Parametr ten może być wartością
stałą lub zmienną programu InTouch.
Wartość która ma być zapisana do określonego numeru
pomiarów. Liczba lub zmienna typu rzeczywistego.
Measurement
Value
Uwagi
Z funkcji SPCSaveSample() należy korzystać po uprzednim ustawieniu wszystkich
pomiarów na zapisywanie danych w bazie danych.
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
3-64
Rozdział 3
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.
Nazwa Produktu, dla którego mają być zbierane dane. Łańcuch
znaków lub zmienna tekstowa.
Product
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.
Nazwa wyrobu, dla którego mają być wyświetlane dane .
Łańcuch znaków lub zmienna tekstowa.
Product
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.
Wartość, która ma zostać wykorzystana jako górny limit
kontrolny (UCL) dla wykresu rozpiętościowego. Liczba lub
zmienna typu rzeczywistego.
Wartość, która ma zostać wykorzystana jako dolny limit
kontrolny (LCL) dla wykresu rozpiętościowego. Liczba lub
zmienna typu rzeczywistego.
RUCL
RLCL
Patrz również
SPCSetControlLimits(), SPCSetSpecLimits()
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Funkcje skryptowe
SPCSetSpecLimits()
3-65
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.
Wartość, która ma zostać wykorzystana jako górny limit
specyfikacyjny (USL) dla wykresu rozpiętościowego. Liczba lub
zmienna typu rzeczywistego.
Wartość, która ma zostać wykorzystana jako dolny limit
specyfikacyjny (LSL) dla wykresu rozpiętościowego. Liczba lub
zmienna typu rzeczywistego.
XUSL
XLSL
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.
Łańcuch znaków, który ma zostać dołączony do instrukcji.
SQLStatement
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().
Parametr do zmodyfikowania w instrukcji SQL.
ParameterNumber
Patrz również
SQLPrepareStatement(),SQLExecute()
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
3-66
Rozdział 3
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.
Wartość całkowita zwracana przez SQL po użyciu funkcji
SQLPrepareStatement().
SQLHandle
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.
Nazwa tablicy w bazie danych, której dotyczy operacja usuwania
rekordów.
TableName
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()
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Funkcje skryptowe
SQLCommit()
3-67
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 =
ResultCode =
SQLHandle );
ResultCode =
ResultCode =
ResultCode =
ResultCode =
ResultCode =
SQLTransact( ConnectionID);
SQLInsertPrepare( ConnectionID, TableName, BindList,
SQLInsertExecute( ConnectionID, BindList, SQLHandle);
SQLInsertExecute( ConnectionID, BindList, SQLHandle);
SQLInsertExecute( ConnectionID, BindList, SQLHandle);
SQLInsertEnd( ConnectionID, SQLHandle );
SQLCommit( ConnectionID);
{3 operacje wstawienia}
Patrz również
SQLRollback(), SQLTransact()
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
3-68
Rozdział 3
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
ConnectionID
Przykład
Opis
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().
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
DSN
Wartość
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.
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Funkcje skryptowe
SQLCreateTable()
3-69
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.
Nazwa tablicy w bazie danych, której dotyczy operacja.
Nazwa zdefiniowanego wzorca tablicy, który ma zostać użyty
przez funkcję.
TableName
TemplateName
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()
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
3-70
Rozdział 3
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.
Nazwa tablicy w bazie danych, której dotyczy operacja.
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
TableName
WhereExpression
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()
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Funkcje skryptowe
SQLDisconnect()
3-71
SQL
Funkcja ta służy do odłączenia użytkownika od bazy danych.
Składnia
Patrz również
[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.
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.
Nazwa tablicy w bazie danych, której dotyczy operacja.
TableName
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
Patrz również
[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.
SQLConnect(), SQLSelect()
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
3-72
Rozdział 3
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.
Lista powiązań między kolumnami bazy danych i zmiennymi
programu InTouch
Wartość całkowita zwracana przez SQL po użyciu funkcji
SQLPrepareStatement().
BindList
SQLHandle
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.
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Funkcje skryptowe
SQLFirst()
3-73
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
Patrz również
[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.
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.
Numer rekordu, który ma zostać odczytany.
RecordNumber
Przykład
[ResultCode=]SQLGetRecord(ConnectionID,3);
Patrz również
SQLConnect()
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
3-74
Rozdział 3
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.
Nazwa tablicy w bazie danych, której dotyczy operacja.
Lista powiązań między kolumnami bazy danych i zmiennymi
programu InTouch
TableName
BindList
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.
Wartość całkowita zwracana przez SQL po użyciu funkcji
SQLPrepareStatement().
SQLHandle
Patrz również
SQLConnect(), SQLPrepareStatement()
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Funkcje skryptowe
SQLInsertExecute()
3-75
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.
Lista powiązań między kolumnami bazy danych i zmiennymi
programu InTouch
Wartość całkowita zwracana przez SQL po użyciu funkcji
SQLPrepareStatement().
BindList
SQLHandle
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.
Nazwa tablicy w bazie danych, której dotyczy operacja.
Lista powiązań między kolumnami bazy danych i zmiennymi
programu InTouch
Wartość całkowita zwracana przez SQL po użyciu funkcji
SQLPrepareStatement().
TableName
BindList
SQLHandle
Patrz również
SQLConnect(), SQLPrepareStatement()
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
3-76
Rozdział 3
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.
Nazwa pliku zawierającego odczytywaną instrukcję.
FileName
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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Funkcje skryptowe
SQLManageDSN()
3-77
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
Przykład
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.
Instrukcja zamieszczona poniżej powoduje przypisanie liczby wybranych wierszy do
zmiennej całkowitej NumRows:
NumRows=SQLNumRows(ConnectionID);
Patrz również
SQLConnect()
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
3-78
Rozdział 3
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.
Wartość całkowita zwracana przez SQL po użyciu funkcji
SQLPrepareStatement().
SQLHandle
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()
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Funkcje skryptowe
SQLRollback()
3-79
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
Przykład
[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.
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
zmian}
Patrz również
SQLCommit(), SQLTransact()
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Baz danych bez
3-80
Rozdział 3
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.
Nazwa tablicy w bazie danych, której dotyczy operacja.
Lista powiązań między kolumnami bazy danych i zmiennymi
programu InTouch
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
TableName
BindList
WhereExpression
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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Funkcje skryptowe
3-81
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
Przykład
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"
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()
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
3-82
Rozdział 3
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().
Numer parametru w instrukcji SQL.
Przypisywana wartość parametru.
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.
ParameterNumber
ParameterValue
MaxLen
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().
Numer parametru w instrukcji SQL.
Przypisywana wartość parametru.
ParameterNumber
ParameterValue
Przykład
[ResultCode=]SQLSetParamDate(SQLHandle,ParameterNumber,
ParameterValue);
Patrz również
SQLPrepareStatement()
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Funkcje skryptowe
SQLSetParamDateTime()
3-83
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().
Numer parametru w instrukcji SQL.
Przypisywana wartość parametru.
Długość wartość daty-czasu do przypisania. Jest to liczba
znaków, wykorzystywanych w ParameterValue.
ParameterNumber
ParameterValue
Precision
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().
Numer parametru w instrukcji SQL.
Przypisywana wartość parametru.
Długość wartość daty-czasu do przypisania. Jest to liczba
znaków, wykorzystywanych w ParameterValue.
Liczba cyfr po kropce dziesiętnej.
ParameterNumber
ParameterValue
Precision
Scale
Przykład
[ResultCode=]SQLSetParamDecimal(SQLHandle,ParameterNumber,
ParameterValue,Precision, Scale);
Patrz również
SQLPrepareStatement()
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
3-84
Rozdział 3
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().
Numer parametru w instrukcji SQL.
Przypisywana wartość parametru.
ParameterNumber
ParameterValue
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().
Numer parametru w instrukcji SQL.
Przypisywana wartość parametru.
ParameterNumber
ParameterValue
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().
Numer parametru w instrukcji SQL.
Przypisywana wartość parametru.
ParameterNumber
ParameterValue
Przykład
[ResultCode=]SQLSetParamLong(SQLHandle,ParameterNumber,
ParameterValue);
Patrz również
SQLPrepareStatement()
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Funkcje skryptowe
SQLSetParamNull()
3-85
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().
Numer parametru w instrukcji SQL.
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
7
8-bajtowa liczba
Precision Float
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
Dokładność wartości podawanych w systemie dziesiętnym,
maksymalna liczba znaków, lub długość bajtów przeznaczonych
do zapisu daty i czasu.
Liczba cyfr po kropce dziesiętnej. Jest wymagana tylko w
przypadku, gdy dotyczy zerowanego parametru.
ParameterNumber
ParameterType
Precision
Scale
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()
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
3-86
Rozdział 3
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().
Numer parametru w instrukcji SQL.
Przypisywana wartość parametru.
ParameterNumber
ParameterValue
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.
Właściwa instrukcja SQL, jak w poniższym przykładzie.
SQLStatement
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()
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Funkcje skryptowe
SQLTransact()
3-87
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.
Nazwa tablicy w bazie danych, której dotyczy operacja.
Lista powiązań między kolumnami bazy danych i zmiennymi
programu InTouch
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
TableName
BindList
WhereExpression
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");
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
3-88
Rozdział 3
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.
Zmienna typu rzeczywistego, przeznaczona do przechowywania
wyniku.
Real Result
Przykład
AnalogTag1=Sqrt(AnalogTag2);
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Funkcje skryptowe
StartApp
3-89
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()
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
3-90
Rozdział 3
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.
Parametr określający system zapisu. Parametr ten może być
wartością stałą lub zmienną programu InTouch.
Base
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()
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Funkcje skryptowe
StringFromReal()
3-91
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.
Podaje ile miejsc dziesiętnych należy wyświetlić. Parametr ten
może być wartością stałą lub zmienną programu InTouch.
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.
Precision
Type
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()
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
3-92
Rozdział 3
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.
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"
StringType
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"
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Funkcje skryptowe
StringInString()
3-93
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.
Poszukiwany ciąg znaków tekst.
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.
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.
SearchFor
StartPos
CaseSens
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
Chars
Łańcuch znaków lub zmienna tekstowa.
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"
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
3-94
Rozdział 3
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."
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Funkcje skryptowe
StringMid()
3-95
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
StartChar
Łańcuch znaków lub zmienna tekstowa.
Liczba całkowita określająca miejsce pierwszego znaku z grupy.
Parametr ten może być wartością stałą lub zmienną programu
InTouch.
Liczba znaków do odczytania. Parametr ten może być wartością
stałą lub zmienną programu InTouch.
Chars
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()
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
3-96
Rozdział 3
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.
Poszukiwana grupa znaków, która ma zostać wymieniona na inną.
Łańcuch znaków lub zmienna tekstowa.
Dowolny tekst. Łańcuch znaków lub zmienna tekstowa.
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.
Liczba wystąpień, w których ma być wprowadzona zamiana.
(-1=wszystkie.) Liczba lub zmienna typu całkowitego.
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.
SearchFor
ReplaceWith
CaseSens
NumToReplace
MatchWholeWords
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.
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Funkcje skryptowe
StringRight()
3-97
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
Chars
Łańcuch znaków lub zmienna tekstowa.
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"
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
3-98
Rozdział 3
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.
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)
TestType
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.
Jeż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()
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Funkcje skryptowe
StringToReal()
3-99
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.
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.
TrimType
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.
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
3-100
Rozdział 3
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
Przykłady
Result=Tan(AngleNumber);
Parametry
Opis
AngleNumber
Wartość kąta w stopniach. Dowolna liczba, zmienna rzeczywista
lub całkowita programu InTouch.
Wave = 10 + 50 * Tan(6 * $seconds);
Tan(45) zwraca 1
Tan(0) zwraca 0
Patrz również
Sin(), Cos()
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Funkcje skryptowe
Text()
3-101
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
Przykłady
MessageResult=Text(Analog_Tag,"Format_Text");
Parametry
Opis
Analog_Tag
Format_Text
Liczba, zmienna rzeczywista lub całkowita, do konwersji.
Parametr określający format zapisu. Łańcuch znaków lub zmienna
tekstowa.
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()
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
3-102
Rozdział 3
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.
Łańcuch znaków do wyświetlania. Łańcuch znaków lub zmienna
tekstowa.
MessageTag
! 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");
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Funkcje skryptowe
wcDeleteItem()
3-103
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.
Numer oznaczający pozycję elementu na liście. Parametr ten
może być wartością stałą lub zmienną programu InTouch.
ItemIndex
! 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");
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
3-104
Rozdział 3
wcErrorMessage()
obiekty sterujące okien
Funkcja ta zwraca komunikat tekstowy opisujący błąd.
Składnia
ErrorMessage=wcErrorMessage(ErrorNumber);
Parametry
Opis
ErrorMessage
ErrorNumber
Zmienna tekstowa.
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);
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Funkcje skryptowe
wcFindItem()
3-105
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.
Łańcuch znaków do celów porównawczych. Łańcuch znaków lub
zmienna tekstowa.
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
Nazwa zmiennej typu całkowitego.
MessageTag
DiscreteTag
Tagname
! 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.
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
3-106
Rozdział 3
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.
Numer oznaczający pozycję elementu na liście. Liczba lub
zmienna całkowita.
Nazwa zmiennej typu całkowitego lub rzeczywistego. Funkcja
wcGetItem przypisuje do tej zmiennej wartość numeryczną,
odpowiadającą elementowi.
ItemIndex
Tagname
! 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".
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Funkcje skryptowe
wcGetItemData()
3-107
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.
Numer oznaczający pozycję elementu na liście. Liczba lub
zmienna całkowita.
Nazwa zmiennej typu całkowitego lub rzeczywistego. Funkcja
wcGetItemdata przypisuje tej zmiennej wartość numeryczną,
odpowiadającą elementowi.
ItemIndex
Tagname
! 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()
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
3-108
Rozdział 3
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.
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.
Zawiera łańcuch znaków, który ma być wstawiony w miejscu
określonym przez ItemIndex. Łańcuch znaków lub zmienna
tekstowa.
ItemIndex
MessageTag
! 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.
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.
FileName
! 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()
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Funkcje skryptowe
wcLoadText()
3-109
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.
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.
FileName
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");
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
3-110
Rozdział 3
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.
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.
FileName
! 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()
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Funkcje skryptowe
wcSaveText()
3-111
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.
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.
FileName
! 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()
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
3-112
Rozdział 3
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.
Numer oznaczający pozycję elementu na liście. Liczba lub
zmienna całkowita.
Liczba całkowita zawierająca wartość elementu. Liczba lub
zmienna całkowita.
ItemIndex
Number
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);
liście (sól)=325}
{ ustawienie 3-go elementu na
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()
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Funkcje skryptowe
WWControl()
3-113
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.
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.
ControlType
Przykłady
WWControl("Calculator","Restore");
WWControl("Microsoft Excel","Close");
WWControl(InfoAppTitle("View"), "Close");
Patrz również
InFoAppTitle(), ActivateApp(), StartApp()
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
3-114
Rozdział 3
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.
Nazwa tematu w obrębie aplikacji, do której jest wysyłane
polecenie. Łańcuch znaków lub zmienna tekstowa.
Polecenie, które ma zostać wysłane. Łańcuch znaków lub
zmienna tekstowa.
Topic
Polecenie
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.
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Funkcje skryptowe
WWPoke()
3-115
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.
Nazwa tematu w obrębie aplikacji, do której jest wysyłane
polecenie. Łańcuch znaków lub zmienna tekstowa.
Nazwa pozycji w obrębie tematu. Łańcuch znaków lub zmienna
tekstowa.
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.
Topic
Item
TextValue
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()
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
3-116
Rozdział 3
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.
Nazwa tematu w obrębie aplikacji, z której ma być przesłany
łańcuch znaków. Łańcuch znaków lub zmienna tekstowa.
Pozycja w obrębie tematu z której odczytywane będą dane.
Łańcuch znaków lub zmienna tekstowa.
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.
Topic
Item
ValueMsg_Tag
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()
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
A-1
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.
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
A-2
Załącznik A
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
0
-1
-2
-3
-4
-5
-6
-x*
Opis
Operacja zakończona pomyślnie
Błąd ogólny
Brak pamięci
Atrybut tylko do odczytu
Określony element już istnieje
Nieznana nazwa obiektu
Nieznana nazwa właściwości
Błąd nieznany
* -x jest dowolnym numerem.
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Załącznik A
A-3
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
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.
0
! 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.
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
A-4
Załącznik A
Wartość
Błąd
Opis
Wprowadzony został niewłaściwy typ
elementu w pliku z szablonami receptur.
Dopuszczalne jest stosowanie wyłącznie
typów Analog, Discrete i Message.
-12
Spodziewane słowo
"Analog", "Discrete",
"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.
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Załącznik A
A-5
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
AutoCollection
Discrete
O/Z
*CalculateControlLimits
Discrete
O/Z
DatasetName
Message
(32)
O/Z
HistogramLCL
Real
O
HistogramUCL
Real
O
Kurtosis
LastSampleDisplayed
Real
Integer
O
O/Z
*ManualInputDialog
Discrete
O/Z
MeasurementsPerSample
Integer
O
NewProduct
Message
(32)
O/Z
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Opis
Aktywowanie/ deaktywowanie
automatycznego zbierania danych.
Ustawienie wartości 1 powoduje
rozpoczęcie obliczania wartości
granicznych sterowania.
Ustawia parametr DatasetName,
wykorzystywany przez Indirect
Dataset.
Wyświetla Dolne wartości
graniczne sterowania histogramu,
w oparciu o populację.
Wyświetla Górne wartości
graniczne sterowania histogramu,
w oparciu o populację.
Kształt dystrybucji histogramów.
Ustawia numer ostatniej próbki
wyświetlanej przez Zestaw
danych.
Ustawienie wartości 1 powoduje
wyświetlanie wbudowanego okna
dialogowego do ręcznego
wprowadzania danych.
Wyświetlenie skonfigurowanej
liczby pomiarów przypadających
na próbkę
Wykorzystywana do tworzenia
nowej Nazwy produktu.
A-6
Załącznik A
Nazwa elementu
Typ DDE
Dostęp
*ProductCollected
Message (32)
O/Z
ProductDisplayed
Message (32)
O/Z
SampleSize
Integer
O
SamplesPerControlChart
Integer
O/Z
SamplesPerHistogram
Integer
O/Z
SamplesPerLimitCalc
Integer
O/Z
SamplesPerPareto
Integer
O/Z
SelSPCOutSpecMsg
Message
O
Skewness
Real
O
SPCAllowSampDelMod
Discrete
O/Z
StartCollection
Discrete
O/Z
Opis
Zmienia Nazwę produktu
zebranego przez Zestaw
danych.
Zmienia Nazwę produktu
wyświetlanego przez Zestaw
danych.
Rozmiar próbki dla Zestawu
danych NP.
Ustawia liczbę próbek
wyświetlanych na Wykresie
kontrolnym.
Ustawia liczbę próbek
wyświetlanych na
histogramie.
Ustawia liczbę próbek
wykorzystywanych przy
obliczaniu kontrolnych
wartości granicznych.
Ustawia liczbę próbek
wykorzystywanych do
wyświetlania na wykresie
kontrolnym Pareto.
Zmienna tekstowa dla alarmu
"Próbka poza dopuszczalnymi
wartościami granicznymi."
Wyświetla odchylenie od
średniej na Histogramie.
Włączenie/ wyłączenie opcji
Delete i Modify menu
rozwijanego po wciśnięciu
prawego przycisku myszy.
Ustawienie wartości 1
powoduje rozpoczęcie cyklu
automatycznego zbierania.
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Załącznik A
A-7
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
CurrentCauseCode
Integer
O/Z
CurrentCauseString
Message
(128)
Message
(50)
O
CurrentCp
Real
O
CurrentCpk
Real
O
CurrentDate
Message
(8)
O/Z
CurrentFlag
Discrete
O/Z
CurrentIgnoreValue
Discrete
O/Z
CurrentMx
Real
O/Z
CurrentR
Real
O
CurrentRBar
Real
O/Z
CurrentRLCL
Real
O/Z
CurrentComment
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
O/Z
Opis
Ustawia wartość SpecialCauseCode
dla bieżącej próbki.
Wyświetla opis numeru
SpecialCauseCode dla bieżącej próbki.
Element wykorzystywany do zapisu
różnych komentarzy powiązanych z
bieżącą próbką.
Element ten wyświetla możliwości dla
bieżącej próbki.
Element ten wyświetla wyśrodkowane
możliwości dla bieżącej próbki.
Ustawia datę dla bieżącej próbki w
formacie DD/MM/YY. Jeżeli data
zostanie niepoprawnie wprowadzona,
przyjęta zostanie data bieżąca.
Ustawia element flag dla bieżącej
próbki.
Ustawia ignorowanie bieżącej próbki
w momencie gdy Wykres kontrolny
jest automatycznie skalowany.
Ustawia indywidualny pomiar wartości
dla bieżącej próbki. (x=1 do 25.)
Elementten wyświetla zakres dla
bieżącej próbki.
Element ten ustawia średni zakres dla
bieżącej próbki.
Element ten ustawia dolne, kontrolne
wartości graniczne.
A-8
Załącznik A
Nazwa elementu
Typ DDE
Dostęp
CurrentRUCL
Real
O/Z
CurrentSample
Real
O
CurrentSampleBar
Real
O/Z
CurrentSampleNumber
CurrentTarget
Integer
Real
O
O/Z
CurrentTime
Message
(8)
O/Z
CurrentUpdate
Discrete
O/Z
CurrentXLCL
Real
O/Z
CurrentXLSL
Real
O/Z
CurrentXUCL
Real
O/Z
CurrentXUSL
Real
O/Z
SPC2L3Out2SD
Integer
O
SPC2L3Out2SDMsg
Message
O
SPC4L5Out1SD
Integer
O
SPC4L5Out1SDMsg
Message
O
SPCConSampAltUpDn
Integer
O
SPCConSampAltUpDnMsg
Message
O
SPCConSampln1SD
Integer
O
SPCConSampln1SDMsg
Message
O
Opis
Element ten ustawia górne, kontrolne
wartości graniczne.
Element ten wyświetla wartość ostatniego
punktu próbkowania (tj. X, C, P).
Ustawia średnią bieżącej próbki w danym
punkcie próbkowania.
Wyświetla numer ostatnio zebranej próbki.
Ustawia wartość docelową w danym
punkcie próbkowania.
Ustawia czas dla bieżącej próbki w
formacie HH:MM:SS. Jeżeli czas zostanie
niepoprawnie wprowadzony, przyjęty
zostanie czas bieżący.
Element ten należy ustawić na 1 w celu
wprowadzenia zmian w informacji o
próbce, w dowolnym z bieżących pól.
Ustawia Dolną, kontrolną wartość
graniczną (LCL - Lower Control Limit) dla
bieżącej próbki.
Ustawia Dolną, wartość graniczną
specyfikowaną (LSL - Lower Specification
Limit) dla bieżącej próbki.
Ustawia Górną , kontrolną wartość
graniczną (UCL - Upper Control Limit) dla
bieżącej próbki.
Ustawia Górną, wartość graniczną
specyfikowaną (USL - Upper Specification
Limit) dla bieżącej próbki.
Licznik alarmów dla alarmu "2 z 3
ostatnich próbek poza 2 odchyleniami
standardowymi SS."
Zmienna tekstowa dla alarmu "2 z 3
ostatnich próbek poza 2 odchyleniami
standardowymi SS."
Licznik alarmów dla alarmu "4 z 5
ostatnich próbek poza 1 odchyleniem
standardowym SS."
Zmienna tekstowa dla alarmu "4 z 5
ostatnich próbek poza 1 odchyleniem
standardowym SS."
Licznik alarmów dla alarmu "Wartość
kolejnych próbek naprzemiennie zmniejsza
się i zwiększa."
Zmienna tekstowa dla alarmu "Wartość
kolejnych próbek naprzemiennie zmniejsza
się i zwiększa."
Licznik alarmów dla alarmu "Kolejne
próbki znajdują się wewnątrz 1 Odchylenia
standardowego."
Zmienna tekstowa dla alarmu "Kolejne
próbki znajdują się wewnątrz 1 Odchylenia
standardowego."
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Załącznik A
Nazwa elementu
Typ DDE
Dostęp Opis
SPCConSamplncDec
Integer
O
SPCConSamplncDecMsg
Message
O
SPCConSampOneSideCL
Integer
O
SPCConSampOneSideCLMsg
Message
O
SPCConSampOut1SD
Integer
O
SPCConSampOut1SDMsg
Message
O
SPCNLNOutNSD
Integer
O
SPCNLNOutNSDMsg
Message
O
SPCNLNOutNSDSS
Integer
O
SPCNLNOutNSDSSMsg
Message
O
SPCOutRCtrl
Integer
O
SPCOutRCtrlMsg
Message
O
SPCOutXCtrl
Integer
O
SPCOutXCtrlMsg
Message
O
SPCOutSpec
Integer
O
SPCOutSpecMsg
Message
O
SPCResetAlarmCounters
Discrete
O/Z
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
A-9
Licznik alarmów dla alarmu "Wartość
kolejnych próbek zmniejsza się lub
zwiększa."
Zmienna tekstowa dla alarmu "Wartość
kolejnych próbek zmniejsza się lub
zwiększa."
Licznik alarmów dla alarmu "Wartość
kolejnych próbek znajduje się po jednej
stronie osi symetrii."
Zmienna tekstowa dla alarmu "Wartość
kolejnych próbek znajduje się po jednej
stronie osi symetrii."
Licznik alarmów dla alarmu "Kolejne
próbki znajdują się poza 1 Odchyleniem
standardowym."
Zmienna tekstowa dla alarmu "Kolejne
próbki znajdują się poza 1 Odchyleniem
standardowym."
Licznik alarmów dla alarmu "? Poza
ostatnią? próbka poza? Standardowym
odchyleniem."
Zmienna tekstowa dla alarmu "? Poza
ostatnią? próbka poza? Standardowym
odchyleniem."
Licznik alarmów dla alarmu "?Poza
ostatnią? Próbka poza ? standardowym
odchyleniem SS."
Zmienna tekstowa dla alarmu "?Poza
ostatnią? Próbka poza ? standardowym
odchyleniem SS."
Licznik alarmów dla alarmu "Zakres
poza kontrolnymi wartościami
granicznymi."
Zmienna tekstowa dla alarmu "Zakres
poza kontrolnymi wartościami
granicznymi."
Licznik alarmów dla alarmu Wykresu X
"Próbka poza kontrolnymi wartościami
granicznymi."
Zmienna tekstowa dla alarmu Wykresu
X "Próbka poza kontrolnymi
wartościami granicznymi."
Licznik alarmów dla alarmu "Próbka
poza dopuszczalnymi wartościami
specyfikowanymi."
Zmienna tekstowa dla alarmu "Próbka
poza dopuszczalnymi wartościami
granicznymi."
Zeruje wszystkie liczniki alarmów.
A-10
Załącznik A
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
MI_CauseCode
Integer
O/Z
MI_CauseString
Message (127)
O
MI_Comment
Message (50)
O/Z
MI_Date
Message (8)
O/Z
MI_Flag
Discrete
O/Z
MI_IgnoreValue
Discrete
O/Z
MI_Mx
Real
O/Z
Opis
Ustawia wartość
SpecialCauseCode dla ręcznie
wprowadzanej próbki.
Wyświetla opis numeru
wejściowego
SpecialCauseCode dla próbki.
Element ten wykorzystywany
do zapisu/ odczytu różnych
komentarzy wprowadzonych
dla próbką.
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.
Ustawia element Flag dla
ręcznie wprowadzanej próbki.
Ustawia ignorowanie bieżącej
próbki w momencie gdy
Wykres kontrolny jest
automatycznie skalowany.
Ustawia wartość dla
oznaczonego ręcznie
wprowadzonego pomiaru (x=1
do 25).
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Załącznik A
Nazwa elementu
MI_Save
Typ DDE
Discrete
A-11
Dostęp
Opis
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)
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
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.
A-12
Załącznik A
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
Selection
Integer
O/Z
SelectionCauseCode
Integer
O/Z
SelectionCauseString Message
(128)
Message
SelectionComment
(50)
O
O/Z
SelectionCp
Real
O
SelectionCpk
Real
O
SelectionDate
O
SelectionFlag
Message
(8)
Discrete
SelectionIgnoreValue
Discrete
O/Z
SelectionMx
Real
O
SelectionProduct
Message
(32)
O
O/Z
Opis
Ustawienie tego elementu na numer
próbki powoduje wprowadzenie do
wszystkich zaznaczonych elementów
odpowiednich danych.
Ustawia wartość SpecialCauseCode
dla zaznaczonej próbki.
Wyświetla opis wprowadzonego
Special Cause Code.
Element ten wykorzystywany do
zapisu/ odczytu różnych komentarzy,
wprowadzonych dla zaznaczonej
próbki.
Element ten wyświetla możliwości dla
zaznaczonej próbki.
Element ten wyświetla wyśrodkowane
możliwości dla zaznaczonej próbki.
Element ten wyświetla datę dla
zaznaczonej próbki.
Ustawia element Flag dla zaznaczonej
próbki.
Ustawia ignorowanie zaznaczonej
próbki w momencie gdy Wykres
kontrolny jest automatycznie skalowany.
Wyświetla wartość dla indywidualnego
pomiaru (x=1 - 25), zawierającego
próbkę.
Wyświetla Nazwę produktu dla
zaznaczonej próbki.
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Załącznik A
Nazwa elementu
Typ DDE
Dostęp Opis
SelectionRUCL
Real
O
SelectionRLCL
Real
O
SelectionR
Real
O
SelectionRBAR
Real
O
SelectionSample
Real
O
SelectionSampleBar
Real
O
SelectionTarget
Real
O
SelectionTime
Message
(8)
O
SelectionUpdate
Discrete
O/Z
SelectionXUSL
Real
O
SelectionXLSL
Real
O
SelectionXUCL
SelectionXLCL
Real
Real
O
O
SelSPC2L3Out2SDMsg
Message
O
SelSPC4L5Out1SDMsg
Message
O
SelSPCConSampAltUpDnMsg
Integer
O
SelSPCConSampln1SDMsg
Message
O
SelSPCConSamplncDecMsg
Message
O
SelSPCConSampOneSideCLMsg
Message
O
SelSPCConSampOut1SDMsg
Message
O
SelSPCNLNOutNSDMsg
Message
O
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
A-13
Wyświetla zakres UCL dla
zaznaczonej próbki.
Wyświetla zakres LCL dla
zaznaczonej próbki.
Wyświetla zakres dla zaznaczonej
próbki.
Wyświetla średni zakres dla
zaznaczonej próbki.
Wyświetla wartość zaznaczonego
punkt próbki.
Wyświetla średnio zaznaczonej
próbki w zaznaczonym punkcie
próbki.
Wyświetla docelową wartość dla
zaznaczonej próbki.
Element ten wyświetla Czas dla
zaznaczonej próbki.
Aktualizuje zmiany wprowadzone w
polach Zaznaczonej próbki
Wyświetla Górną, wartość graniczną
wartość specyfikowaną
Wyświetla Dolną, wartość graniczną
wartość specyfikowaną
Wyświetla Górną wartość graniczną.
Wyświetla Dolną wartość graniczną.
Zmienna tekstowa dla alarmu "2 z 3
ostatnich próbek poza 2 odchyleniami
standardowymi SS."
Zmienna tekstowa dla alarmu "4 z 5
ostatnich próbek poza 1 odchyleniami
standardowymi SS."
Zmienna tekstowa dla alarmu
"Wartość kolejnych próbek
naprzemiennie zmniejsza się i
zwiększa."
Zmienna tekstowa dla alarmu
"Kolejne próbki znajdują się
wewnątrz 1 Odchylenia
standardowego."
Zmienna tekstowa dla alarmu
"Wartość kolejnych próbek zmniejsza
się lub zwiększa."
Zmienna tekstowa dla alarmu
"Wartość kolejnych próbek znajduje
się po jednej stronie osi symetrii."
Zmienna tekstowa dla alarmu
"Kolejne próbki znajdują się poza 1
Odchyleniem standardowym."
Zmienna tekstowa dla alarmu "?
Ostatnia? Próbka poza? Odchyleniem
standardowym?."
A-14
Załącznik A
Nazwa elementu
Typ DDE
Dostęp Opis
SelSPCNLNOutNSDSSMsg
Message
O
SelSPCOutRCtrlMsg
Message
O
SelSPCOutXCtrlMsg
Message
O
SelSPCOutSpecMsg
Message
O
Zmienna tekstowa dla alarmu
"? Ostatnia? Próbka poza?
Odchyleniem standardowym
SS?."
Zmienna tekstowa dla alarmu
"Zakres poza kontrolnymi
wartościami granicznymi."
Zmienna tekstowa dla alarmu
Wykresu X "Próbka poza
kontrolnymi wartościami
granicznymi."
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.
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Załącznik A
A-15
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)
0
-1001
Kod błędu
Operacja zakończona
pomyślnie
Ostatni rekord w bazie
danych
Brak pamięci
-1002
Błąd w połączeniu
-1003
-1005
Nie znaleziono listy
powiązań
Nie znaleziono
szablonu
Błąd wewnętrzny
-1006
Pusty łańcuch znaków
-1007
Obcięty łańcuch
znaków
-1008
Brak klauzuli Where
-5
-1004
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Opis
Polecenie zostało zakończone
pomyślnie, bez wystąpienia błędu
Odczytany został ostatni rekord
bazy danych
Brak wolnej pamięci na
zakończenie funkcji
Niepoprawny parametr
ConnectionID przekazany do
funkcji
Lista powiązań o zadanej nazwie
nie istnieje
Szablon o zadanej nazwie nie
istnieje
Wystąpił błąd wewnętrzny.
Skontaktować się z Serwisem.
Ostrzeżenie - z bazy danych
odczytano pusty ł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
Brak klauzuli Where dla Delete
A-16
Załącznik A
Kod błędu
(ResultCode)
-1009
-1010
-1011
-4149
Kod błędu
Błąd w komunikacji
Baza danych
określona w łańcuchu
znaków do
ustanowienia
połączenia, w części
DB= nie istnieje
Brak zaznaczonych
wierszy
Niepoprawna
instrukcja do
ustanowienia
połączenia lub
niewłaściwy parametr
SQLHandle
Opis
Błąd w komunikacji, szczegółowy
opis zakłócenia podany jest w
programie diagnostycznym
Wonderware Logger
Określona baza danych nie istnieje
Podjęto próbę wykonania polecenia
SQLNumRows(), SQLFirst(),
SQLNext(), lub SQLPrev(), bez
uprzedniego wykonania polecenia
SQLSelect().
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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Załącznik A
A-17
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.
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
A-18
Załącznik A
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.
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
I-1
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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.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
I-2
Index
.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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Index
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
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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
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
I-3
I-4
Index
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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Index
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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
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
I-5
I-6
Index
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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Index
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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
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
I-7
I-8
Index
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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Index
$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
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
I-9
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
I-10
Index
$StartDdeConversations, 1-15
$System, 1-15
$Time, 1-16
$TimeString, 1-16
$Year, 1-16
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware

Podobne dokumenty