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: info@astor.com.pl.; http://www.astor.com.pl.
ISBN 83-910632-1-6
iii
Spis treści
Rozdział 1 - 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
$StartDdeConversations ...................................................................................................................................... 1-15
$System ............................................................................................................................................................... 1-15
$Time ................................................................................................................................................................. 1-16
$TimeString ........................................................................................................................................................ 1-16
$Year .................................................................................................................................................................. 1-16
iv
Spis treści
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
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
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
xi
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Wprowadzenie
W podręczniku InTouch - opis funkcji, pól i zmiennych systemowych zamieszczono
wyczerpujący opis pól zmiennych, właściwości obiektów sterujących okien, właściwości
obiektów alarmowych, zmiennych systemowych, oraz funkcji skryptowych. Przedstawiono
również charakterystykę dodatkowych modułów: Recipe Manager, SPC Pro i SQL Access
Manager. Poszczególne rozdziały zawierają:
Rozdział 1 - "Zmienne systemowe" zawiera opis wszystkich predefiniowanych zmiennych
systemowych.
Rozdział 2 - "Pola" zawiera opis pól obiektów do wyświetlania alarmów standardowych i
rozproszonych, obiektów sterujących okien, oraz opis pól trendów
historycznych i zmiennych.
Rozdział 3 - "Funkcje skryptowe" zawiera opis wbudowanych funkcji tekstowych,
matematycznych, systemowych, historycznych, obiektów sterujących oknami,
funkcji do obsługi alarmów rozproszonych, modułów dodatkowych (Recipe,
SPC Pro, SQL), oraz funkcji różnych.
Konwencja opisu
Przykład
Opis
.ChartStart
Ogólnie ujmując, czcionką pogrubioną oznaczone są
pola, zmienne systemowe i funkcje.
Zmienna
Przy opisie składni, czcionką pochyloną zaznaczono
miejsca gdzie należy wprowadzić własne dane.
{ .HiLimit | .HiHiLimit }
Przy opisie składni, kreska pionowa oznacza, że
należy wybrać jeden spośród dwóch lub większej
liczby elementów.
[ErrorMessage=]
Elementy ujęte w nawiasy kwadratowe są opcjonalne.
Z prawej strony każdej zmiennej systemowej, właściwości, pola zmiennej lub nagłówka
funkcji skryptowej podano kategorię zastosowania (bezpieczeństwo, alarm, aplikacja, itp.),
co ma na celu ułatwienie korzystania z podręcznika. Przykładowo:
$AccessLevel
bezpieczeństwo
xii
Wprowadzenie
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Informacje o Instrukcji Użytkownika
W niniejszej instrukcji stosowanych jest szereg symboli, które mają na celu ułatwienie
korzystania z dokumentacji w formie elektronicznej.
! Odwołania tego typu zawierają w rzeczywistości „połączenia” do odpowiednich
punktów i rozdziałów. W celu przejścia do tego punktu lub rozdziału, należy kliknąć to
połączenie. Po przejściu do innego punktu lub rozdziału, można skorzystać z polecenia
"Wstecz", powodującego przejście do pierwotnego miejsca.
" Znak ten informuje, że dodatkowe informacje znajdują się w innych podręcznikach
FactorySuite.
# Znak ten umieszczono obok „Podpowiedzi”, zawierających prostszą lub szybszą
metodę realizacji funkcji lub zadania.
W celu zapoznania się ze środowiskiem edycyjnym programu WindowMaker, oraz jego
narzędziami, należy skorzystać z podręcznika Poradnik użytkownika w formie
elektronicznej.
W celu zapoznania się z oknami, obiektami graficznymi, wizardami, obiektami ActiveX,
itp. należy skorzystać z podręcznika Poradnik użytkownika w formie elektronicznej.
Szczegółowe informacje o środowisku pracy (WindowViewer) podano w podręczniku
InTouch Runtime User's Guide.
Podręcznik FactorySuite System Administrator's Guide zawiera kompletne informacje na
temat elementów składowych pakietu FactorySuite, wymaganiach systemu, omówienie
zagadnień pracy w sieci, integracji produktów, pomocy technicznej, itp.
# Dla każdego komponentu FactorySuite wchodzącego w skład zakupionego przez
Państwa pakietu oprogramowania, dołączona jest wersja komputerowa dokumentacji.
Przykładowo, są to: FactorySuite System Administrator's Guide, SPC PRO,
SQLAccess Manager, Recipe Manager, Industrial SQL Server, InControl, oraz
wszystkie 32- bitowe programy komunikacyjne. w przypadku zakupienia pakietu
FactorySuite+, dostarczana jest również komputerowa wersja dokumentacji dla
komponentów InTrack oraz InBatch.
Wymagane wiadomości
W niniejszej instrukcji przyjęto następujące założenia o użytkowniku:
•
Użytkownik jest zapoznany z systemami operacyjnymi Windows 95 i Windows NT.
•
Posiada umiejętność korzystania z myszki, menu Windows, wybierania opcji, oraz
korzystania z Pomocy komputerowej.
•
Posiada doświadczenie w zakresie programowania lub języka makro. W celu
osiągnięcia jak największych korzyści, użytkownik powinien być zapoznany z takimi
zagadnieniami programowania jak zmienne, deklaracje, funkcje i metody.
Wprowadzenie
xiii
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Pomoc techniczna
Dział Pomocy Technicznej Wonderware oferuje różne metody wsparcia odnośnie
jakichkolwiek produktów Wonderware lub też ich implementacji.
Przed skontaktowaniem się z Działem Pomocy Technicznej, proszę szukać rozwiązania
problemów, mogących wystąpić w czasie korzystania z podręcznika InTouch - Opis
funkcji, pól i zmiennych systemowych, w podręczniku Poradnik użytkownika. Jeżeli okaże
się konieczne skorzystanie z pomocy technicznej, należy mieć przygotowane następujące
informacje:
1. Numer seryjny oprogramowania.
2. Numer wykorzystywanej wersji programu InTouch.
3. Typ i wersję wykorzystywanego sytemu operacyjnego. Przykładowo, Microsoft
Windows NT Wersja 4.0, jednostanowiskowa.
4. Dokładną treść wyświetlanego przez system komunikatu o błędzie.
5. Jakiekolwiek, mogące być pomocne wydruki z Wonderware Logger, narzędzi
diagnostycznych Microsoft Diagnostic (MSD), czy innych aplikacji diagnostycznych.
6. Szczegółowe informacje na temat podejmowanych prób rozwiązania problemów, oraz
ich wyniki.
7. Szczegółowe informacje podające w jaki sposób można odtworzyć zaistniały problem.
8. Jeżeli jest dostępna taka informacja, numer przyporządkowany do tego problemu przez
Dział Pomocy Technicznej Wonderware (dotyczy to problemów aktualnie
opracowywanych).
" Więcej informacji o Pomocy Technicznej podano w wersji komputerowej FactorySuite
System Administrator's Guide.
Informacje o posiadanej licencji FactorySuite
Informacje na temat posiadanej licencji na system FactorySuite, pokazywane są przez
narzędzie do wyświetlania informacji o licencji, dostępne po wybraniu okna dialogowego
About z menu Help programu WindowMaker.
# W celu wyświetlenia okna dialogowego About, należy wybrać polecenie About z
menu Help programu WindowMaker.
" Więcej informacji na temat narzędzi do wyświetlania informacji o licencji podano w
FactorySuite System Administrator's Guide.
1-1
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
R O Z D Z I A Ł 1
Zmienne systemowe
InTouch posiada pewną liczbę predefiniowanych zmiennych systemowych. Zmienne te są
automatycznie tworzone przez program InTouch i identyfikowane za pomocą
poprzedzającego je znaku $. Po uruchomieniu aplikacji InTouch, wartość tych zmiennych
ulega zmianie, w odpowiedzi na stan systemu i zdarzenia zaistniałe w systemie.
Zmienne
systemowe można wykorzystywać wszędzie, gdzie używane są inne zmienne programu
InTouch, np. w połączeniach animacyjnych lub w skryptach.
1-2
Rozdział 1
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
$AccessLevel
bezpieczeństwo
Zmienna ta określa poziom dostępu aktualnie zalogowanego użytkownika.
Sposób użycia
$AccessLevel
Uwagi
Jest to zmienna przeznaczona tylko do odczytu, której wartość determinuje uprawnienia
aktualnie zalogowanego użytkownika. Uprawnienia te dla konkretnego użytkownika
można zmienić z poziomu menu Configure Users programu WindowMaker.
Rzeczywista wartość zmiennej $AccessLevel nie ma żadnego znaczenia dla programu
WindowViewer. Wszelkie żądane "zabezpieczenia" muszą zostać stworzone przez
projektanta aplikacji. Zastosowanie zmiennej $AccessLevel pozwala na zwiększenie
poziomu bezpieczeństwa systemu.
Typ danych
Integer (tylko odczyt)
Zakres wartości
Od 0 do 9999
Przykłady
Wyrażenie zamieszczone poniżej umożliwia wyświetlenie obiektu (np. przycisku) na
ekranie (połączenie animacyjne Miscellaneous/ Visibility), w zależności od poziomu
dostępu zalogowanego użytkownika:.
$AccessLevel >= 2000;
Obiekt może mieć również przypisane połączenie animacyjne do deaktywacji, w którym
wykorzystywane jest wyrażenie zawierające zmienną $AccessLevel.
$AccessLevel < 5411;
IF $AccessLevel <=500 THEN
Show "Access Denied";
{Wyświetlenie komunikatu informującego
o braku możliwości
zalogowania}
ELSE
Show "Access Granted";
{Wyświetlenie komunikatu informującego
o możliwości
zalogowania}
ENDIF;
Patrz również
$Operator, $OperatorEntered, $PasswordEntered; $ConfigureUsers
Zmienne systemowe
1-3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
$AlarmLogging
alarmy
Zmienna ta ponownie inicjuje logowanie i wydruk alarmów w czasie pracy aplikacji. Jest
ona równoważna poleceniu Restart Alarm Log z menu Special programu WindowMaker.
Sposób użycia
$AlarmLogging = 1;
Uwagi
Przypisanie tej zmiennej wartości 1 ponownie inicjuje logowanie i wydruk alarmów w
czasie pracy aplikacji.
Uwaga
Zmiennej $AlarmLogging nie można używać do wyłączania logowania lub
drukowania alarmów. Zastępuje ona wyłącznie polecenie Restart Alarm Log z menu
Special
programu WindowViewer. Jeśli wartość zmiennej $AlarmLogging zostanie
wyświetlona, zawsze pokazywane będzie 0 (Off), nawet jeśli aktualnie odbywa się
logowanie. Przypisanie zmiennej $AlarmLogging innej wartości nie ma żadnego
znaczenia, a wynik takiej operacji jest nieokreślony.
Typ danych
Discrete (tylko zapis)
Zakres wartości
1
Przykłady
Instrukcja zamieszczona poniżej realizuje taką samą funkcję jak wybranie polecenia
Restart Alarm Log
z menu Special programu WindowViewer.
$AlarmLogging = 1;
Patrz również
$HistoricalLogging
$AlarmPrinterError
alarmy
Błąd drukarki alarmów.
Sposób użycia
$AlarmPrinterError
Uwagi
Jeśli drukarka alarmów sygnalizuje błąd, zmienna ta przyjmuje wartość 1.
Typ danych
Discrete (tylko odczyt)
Zakres wartości
0 = Drukarka alarmów nie sygnalizuje błędu
1 = Drukarka alarmów sygnalizuje błąd
Przykład
Jeżeli instrukcja zamieszczona poniżej zostanie użyta jako wyrażenie w połączeniu
animacyjnym wyświetlania wartości analogowej, w przypadku wystąpienia błędu w
drukarce alarmów wyświetlona zostanie liczba 1, natomiast w przeciwnym razie
wyświetlona będzie liczba 0.
$AlarmPrinterError
IF $AlarmPrinterError == 1 THEN
DisplayMessageTag = "Error on alarm printer";
ELSE
DisplayMessageTag = "No error on alarm printer";
ENDIF;
1-4
Rozdział 1
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
$AlarmPrinterNoPaper
alarmy
Zmienna ta sygnalizuje brak papieru w drukarce alarmów.
Sposób użycia
$AlarmPrinterNoPaper
Uwagi
Jeśli w drukarce alarmów brakuje papieru, zmienna przyjmuje wartość 1.
Typ danych
Discrete (tylko odczyt)
Zakres wartości
0 = W drukarce alarmów jest papier
1 = W drukarce alarmów brakuje papieru
Przykład
Jeżeli instrukcja zamieszczona poniżej zostanie użyta w połączeniu animacyjnym
wyświetlania wartości analogowej, oraz jeżeli w drukarce będzie brakować papieru,
wyświetlona zostanie wartość 1, w przeciwnym wypadku, wyświetlona zostanie wartość 0.
$AlarmPrinterNoPaper
Zastosowanie w skrypcie warunkowym zdarzenia OnTrue.
Condition:
$AlarmPrinterOffline == 1
Script:
show "window";
playsound("c:\winnt\system32\alarm.wav",1);
$AlarmPrinterOffline
alarmy
Zmienna ta sygnalizuje brak gotowości do pracy drukarki alarmów.
Sposób użycia
$AlarmPrinterOffline
Uwagi
Jeśli drukarka alarmów nie jest gotowa do pracy, zmienna przyjmuje wartość 1.
Typ danych
Discrete (tylko odczyt)
Zakres wartości
0 = Drukarka alarmów jest gotowa do pracy
1 = Drukarka alarmów nie jest gotowa do pracy (Offline)
Przykład
Jeżeli wyrażenie zamieszczone poniżej zostanie użyte w połączeniu animacyjnym
wyświetlania wartości analogowej, oraz drukarka alarmów nie jest gotowa do pracy,
wyświetlona zostanie wartość 1, natomiast w przypadku przeciwnym, wyświetlona zostanie
wartość 0.
$AlarmPrinterOffline
IF $AlarmPrinterOffline == 1 THEN
Call PLCHorn( ); {
Funkcja skryptowa powodująca uruchomienie
alarmu dźwiękowego w zakładzie
}
ENDIF;
Zmienne systemowe
1-5
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
$AlarmPrinterOverflow
alarmy
Zmienna ta sygnalizuje przepełnienie bufora drukarki alarmów.
Sposób użycia
$AlarmPrinterOverflow
Uwagi
W przypadku przepełnienia bufora drukarki alarmów, zmienna przyjmuje wartość 1.
Typ danych
Discrete (tylko odczyt)
Zakres wartości
0 = Bufor drukarki alarmów nie jest całkowicie wypełniony
1 = Bufor drukarki alarmów jest przepełniony
Przykład
Jeżeli wyrażenie zamieszczone poniżej zostanie użyte w połączeniu animacyjnym
wyświetlania wartości analogowej, oraz nastąpi przepełnienie bufora drukarki alarmów,
wyświetlona zostanie wartość 1, natomiast w przypadku przeciwnym wyświetlona zostanie
wartość 0.
$AlarmPrinterOverflow
$ApplicationChanged
aplikacja
Zmienna ta sygnalizuje zmianę aplikacji nadrzędnej w architekturze NAD (Network
Application Development).
Sposób użycia
$ApplicationChanged
Uwagi
Zmienna ta jest zawsze inkrementowana w przypadku otrzymania sygnału generowanego
po wybraniu polecenia Notify Clients z menu Special programu WindowViewer. W
przypadku uaktualnienia aplikacji, wartość tej zmiennej ustawiana jest na 0. Zmienna ta
jest stosowana do obsługi aplikacji sieciowych.
Typ danych
Real (tylko odczyt)
Przykład
Jeżeli zamieszczona poniżej instrukcja zostanie wykorzystana w skrypcie związanym ze
zmianą wartości pola zmiennej, spowoduje to wykonanie instrukcji tego skryptu. Skrypt
ten powinien powodować wyświetlenie komunikatu, informującego użytkownika o
konieczności ponownego uruchomienia programu WindowViewer w celu uwzględnienia
wprowadzonych zmian.
$ApplicationChanged
1-6
Rozdział 1
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
$ApplicationVersion
aplikacja
Zmienna ta zawiera bieżący numer wersji aplikacji. Wartość tej zmiennej ulega zawsze
zmianie w przypadku zmodyfikowania, dodania lub usunięcia zmiennej albo skryptu
QuickScript.
Sposób użycia
$ApplicationVersion
Uwagi
Brak
Typ danych
Real (tylko odczyt)
Przykład
Jeżeli instrukcja zamieszczona poniżej zostanie użyta w połączeniu animacyjnym
wyświetlania wartości analogowej, wyświetlony zostanie bieżący numer wersji aplikacji
pracującej w programie WindowViewer.
$ApplicationVersion
$ChangePassword
bezpieczeństwo
Zmienna ta służy do wyświetlenia pola dialogowego do zmiany hasła. Działanie jest
równoważne wybraniu polecenia Security, a następnie Change Password, z menu Special
programu WindowMaker.
Sposób użycia
$ChangePassword
Uwagi
Przypisanie tej zmiennej wartości 1 powoduje wyświetlenie okna dialogowego Change
Password
. Jeżeli okno to zostanie zamknięte, wartość zmiennej jest automatycznie
ustawiana na 0. Przypisanie tej zmiennej wartości innej niż 1 nie ma żadnego znaczenia, a
wynik takiej operacji jest nieokreślony.
Typ danych
Discrete (tylko zapis)
Zakres wartości
1
Przykład
Można utworzyć przycisk powiązany ze zmienną dyskretną, której wciśnięcie powoduje
wyświetlenie okna dialogowego Change Password. Przycisk ten powinien mieć pojedyncze
połączenie powiązane ze zmienną dyskretną. W momencie wciśnięcia tego przycisku
wartość zmiennej systemowej $ChangePassword powinna być ustawiana na 1, powodując
tym samym wyświetlenie okna dialogowego.
Patrz również
$AccessLevel, $OperatorEntered, $PasswordEntered, $Operator, $ConfigureUsers
Zmienne systemowe
1-7
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
$ConfigureUsers
bezpieczeństwo
Zmienna ta służy do wyświetlania okna dialogowego Configure Users. Działanie jest
równoważne wybraniu polecenia Security, a następnie Change Password, z menu Special
programu WindowMaker.
Sposób użycia
$ConfigureUsers
Uwagi
Przypisanie tej zmiennej wartości równej 1 powoduje wyświetlenie okna dialogowego
Configure Users
. Po zamknięciu tego okna, wartość zmiennej jest automatycznie
ustawiana na 0. W celu wyświetlenia tego okna, zmienna $AccessLevel musi mieć wartość
większą od 9000. Przypisanie tej zmiennej wartości innej niż 1 nie ma żadnego znaczenia,
a wynik takiej operacji jest nieokreślony.
Typ danych
Discrete (tylko zapis)
Zakres wartości
1
Przykład
Utworzenie przycisku powiązanego ze zmienną dyskretną pozwala użytkownikowi na
wyświetlenie okna dialogowego Configure Users. Przycisk ten powinien mieć pojedyncze
połączenie powiązane ze zmienną dyskretną, a żądane działanie powinno polegać na
ustawieniu wartości. W momencie wciśnięcia tego przycisku wartość zmiennej systemowej
$Configure Users
powinna być ustawiana na 1, powodując wyświetlenie okna
dialogowego.
Patrz również
$Operator, $OperatorEntered, $ChangePassword, $PasswordEntered, $AccessLevel
$Date
system
Wartością tej zmiennej jest całkowita liczba dni, które upłynęły od 1/1/70.
Sposób użycia
$Date
Uwagi
Brak
Typ danych
Integer (tylko odczyt)
Przykład
StringFromTime(($Date*86400)+($Time/1000),3); {
Wraca aktualną datę
}
1-8
Rozdział 1
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
$DateString
system
Wartością tej zmiennej jest data w formacie określonym w pliku WIN.INI.
Sposób użycia
$DateString
Uwagi
Format daty ustawiany jest za pomocą Panelu sterowania systemu Windows, lub po
podwójnym kliknięciu ikony Zegara, umieszczonej z prawej strony Paska zadań.
Typ danych
Memory message (tylko odczyt)
Przykład
If StringRight($DateString,2)== "00" THEN
LogMessage("The Year 2000!");
ENDIF;
$DateTime
system
Wartością tej zmiennej jest ułamkowa liczba dni, które upłynęły od 1/1/70.
Sposób użycia
$DateTime
Uwagi
Brak
Typ danych
Real (tylko odczyt)
Przykład
If StringFromTime($DateTime,4)== "Fri" THEN
DisplayMessageTag = "It's Friday!";
ENDIF;
$Day
system
Wartością tej zmiennej jest bieżący dzień miesiąca.
Sposób użycia
$Day
Uwagi
Zmienna ta przyjmuje wartości od 1 do 31.
Typ danych
Integer (tylko odczyt)
Przykład
If $Day == 15 THEN
Show "Mid-Month Washdown Window";
ENDIF;
Zmienne systemowe
1-9
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
$HistoricalLogging
dane historyczne
Zmienna ta służy do monitorowania i/lub sterowania procesem rejestrowania danych
historycznych. Działanie jej jest równoważne wybraniu polecenia Restart Historical
Logging
z menu Special programu WindowViewer, lub też wybraniu polecenia Stop
Historical Logging
z menu Special programu WindowViewer.
Sposób użycia
$HistoricalLogging
Uwagi
Przypisanie tej zmiennej wartości 0 zatrzymuje rejestrowanie danych historycznych.
Przypisanie tej zmiennej wartości 1 powoduje ponowne rozpoczęcie rejestrowania danych
historycznych. Nie można wznowić rejestrowania danych historycznych za pomocą
zmiennej $HistoricalLogging, o ile rejestrowanie to nie zostało wcześniej skonfigurowane
poprzez wybranie polecenia Configure, a następnie polecenia Historical Logging z menu
Special
programu WindowMaker.
Typ danych
Discrete (odczyt/ zapis)
Przykład
IF (InfoDisk("C",4,$Second)/1024)<50 THEN {Przerwanie rejestrowania
danych historycznych, jeżeli wolna przestrzeń na dysku jest
mniejsza od 50 MB}
$HistoricalLogging = 0;
ENDIF;
Patrz również
$AlarmLogging
$Hour
system
Wartością tej zmiennej jest bieżąca godzina dnia.
Sposób użycia
$Hour
Uwagi
Zmienna ta przyjmuje wartości od 0 do 23.
Typ danych
Integer (tylko odczyt)
Przykład
Skrypt warunkowy zdarzenia On True:
$Hour == 20 AND $Second == 30
PrintWindow("Day Batch Summary",1,1,0,0,0);
1-10
Rozdział 1
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
$InactivityTimeout
bezpieczeństwo
Zmienna ta sygnalizuje, że upłynął skonfigurowany czas, po którym użytkownik zostaje
automatycznie wylogowany z aplikacji wskutek braku aktywności.
Sposób użycia
$InactivityTimeout
Uwagi
Zmienna ta przyjmuje wartość 1, gdy upłynął czas po którym użytkownik zostaje
automatycznie wylogowany z aplikacji wskutek braku aktywności. W celu
skonfigurowania tego czasu, z menu Special wybrać Configure, a następnie kliknąć
WindowViewer
, lub rozwinąć grupę Configure w Eksploratorze aplikacji, a następnie
podwójnie kliknąć WindowViewer. Wyświetlone zostanie okno dialogowe
WindowViewer Properties
z aktywną zakładką właściwości General. W grupie
Inactivity
wprowadzić czas w sekundach.
Typ danych
Discrete (tylko odczyt)
Patrz również
$InactivityWarning
Przykład
Skrypt warunkowy zdarzenia On True:
$InactivityTimeout == 1
Script:
Show "You have been logged off window";
$InactivityWarning
bezpieczeństwo
Zmienna ta sygnalizuje, że upłynął skonfigurowany czas, po którym użytkownik zostaje
ostrzeżony o zbliżającym się automatycznym wylogowaniu z aplikacji wskutek braku
aktywności.
Sposób użycia
$InactivityWarning
Uwagi
Zmienna ta przyjmuje wartość 1, gdy upłynął czas, po którym użytkownik jest ostrzegany
braku aktywności. Licznik czasu braku aktywności użytkownika może być wyzerowany
wyłącznie poprzez kliknięcie myszką lub wciśnięcie klawisza. W celu skonfigurowania
tego czasu, z menu Special wybrać Configure, a następnie kliknąć WindowViewer, lub
rozwinąć grupę Configure w Eksploratorze aplikacji, a następnie podwójnie kliknąć
WindowViewer
. Wyświetlone zostanie okno dialogowe WindowViewer Properties z
aktywną zakładką właściwości General. W grupie Inactivity wprowadzić czas w
sekundach.
Typ danych
Discrete (tylko odczyt)
Przykład
If $InactivityWarning == 1 THEN
Show "You are about to be logged off-window";
ENDIF;
Patrz również
$InactivityTimeOut
Zmienne systemowe
1-11
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
$LogicRunning
system
Zmienna ta monitoruje i/lub steruje wykonywaniem skryptów. Działanie tej zmiennej jest
równoważne wybraniu polecenia Start Logic, lub polecenia Halt Logic z menu Logic
programu WindowViewer.
Uwaga
Nie można przy pomocy tej zmiennej zatrzymać aktualnie wykonywanych funkcji
asynchronicznych, zdefiniowanych przez użytkownika. Można jednakże uniemożliwić
uruchamianie następnych skryptów.
Sposób użycia
$LogicRunning
Uwagi
Przypisanie zmiennej wartości 1 pozwala na uruchamianie skryptów logicznych.
Przypisanie zmiennej wartości 0 uniemożliwia uruchamianie skryptów logicznych.
Typ danych
Discrete (odczyt / zapis)
$Minute
system
Wartością tej zmiennej jest bieżąca minuta godziny.
Sposób użycia
$Minute
Uwagi
Zmienna ta przyjmuje wartości od 0 do 59.
Typ danych
Integer (tylko odczyt)
Przykład
W wyrażeniu tekstowym połączenia animacyjnego:
IF InfoFile("C:\InTouch.32\WIZ.INI",1,$Minute)==1 THEN
LogMessage("The File Exists!");
ENDIF;
$Month
system
Wartością tej zmiennej jest bieżący miesiąc roku.
Sposób użycia
$Month
Uwagi
Zmienna ta przyjmuje wartości od 1 do 12.
Typ danych
Integer (tylko odczyt)
Przykład
IF $Month==10 THEN
CurrentMonthName = "October";
ENDIF;
1-12
Rozdział 1
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
$Msec
system
Wartością tej zmiennej jest bieżąca milisekunda. Częstotliwość uaktualniania tej zmiennej
przez system zależna jest od wartości parametrów Tick Interval i Update Time. W celu
zmiany wartości tych parametrów, z menu Special wybrać Configure, a następnie kliknąć
WindowViewer
, lub rozwinąć grupę Configure w Eksploratorze aplikacji, a następnie
podwójnie kliknąć WindowViewer. Wyświetlone zostanie okno dialogowe
WindowViewer Properties
z aktywną zakładką właściwości General:
Sposób użycia
$Msec
Uwagi
Zmienna ta przyjmuje wartości od 0 do 999.
Typ danych
Integer (tylko odczyt)
$NewAlarm
alarmy
Zmienna ta sygnalizuje wystąpienie nowego alarmu.
Sposób użycia
$NewAlarm
Uwagi
Zmienna przyjmuje wartość 1, gdy pojawi się nowy alarm. Wartość tej zmiennej ustawiana
jest wyłącznie w przypadku wystąpienia alarmu lokalnego. Dotyczy to alarmów lokalnych
(nie dotyczy alarmów zewnętrznych).
Typ danych
Discrete (odczyt / zapis)
Przykład
Zmienną tę można powiązać z funkcją logiczną PlaySound, powodując uruchomienie
alarmu dźwiękowego. Można utworzyć również przycisk do zatwierdzania alarmu,
umożliwiający operatorowi potwierdzenie alarmu i równoczesne wyzerowanie tej zmiennej.
$ObjHor
system
Wartością tej zmiennej jest pozycja środka wybranego obiektu w kierunku poziomym,
wyrażona w punktach ekranowych (pikselach).
Sposób użycia
$ObjHor
Uwagi
Brak
Typ danych
Integer (tylko odczyt)
Patrz również
$ObjVer
Zmienne systemowe
1-13
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
$ObjVer
system
Wartością tej zmiennej jest pozycja środka wybranego obiektu w kierunku pionowym,
wyrażona w punktach ekranowych (pikselach).
Sposób użycia
$ObjVer
Uwagi
Brak
Typ danych
Integer (tylko odczyt)
Patrz również
$ObjHor
$Operator
bezpieczeństwo
Określa zakres działań, które mogą być realizowane przez zalogowanego użytkownika.
Sposób użycia
$Operator
Uwagi
Wartość tej zmiennej reprezentuje nazwę aktualnie zalogowanego operatora.
Typ danych
Message (tylko odczyt)
Przykład
Dostęp do określonego okna może być kontrolowany przy pomocy następującego skryptu:.
IF $Operator == "DayShift" THEN
Show "
Control Panel Window
"
;
ELSE Show "Wrong Operator";
ENDIF;
Patrz również
$OperatorEntered, $AccessLevel, $PasswordEntered, $ChangePassword,
$ConfigureUsers
1-14
Rozdział 1
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
$OperatorEntered
bezpieczeństwo
Zmienna ta służy do wprowadzania nazwy użytkownika.
Sposób użycia
$OperatorEntered
Uwagi
Umożliwia utworzenie okna użytkownika do logowania. Powiązanie z tą zmienną
obiektów do wprowadzania danych reagujących na dotyk i/lub skryptów umożliwia
wprowadzenie nazwy użytkownika.
Uwaga
: Jeżeli zmiennej $OperatorEntered przypisana zostanie jedna z poprawnych
wartości, zmienne systemowe $AccessLevel i $Operator zostaną ustawione na
predefiniowane wartości.
Typ danych
Message (odczyt/zapis)
Patrz również
$AccessLevel, $Operator, $PasswordEntered, $ChangePassword, $ConfigureUsers
$PasswordEntered
bezpieczeństwo
Zmienna ta służy do wprowadzania właściwego hasła.
Sposób użycia
$PasswordEntered
Uwagi
Zmienna ta jest zawsze odczytywana jako pusty łańcuch znaków. Połączenia animacyjne
wyświetlające wartość zmiennej $PasswordEnetered zawsze wyświetlają pusty łańcuch
znaków. Z tego powodu skrypty uaktywniane zmianą wartości danych i uzależnione od
zmiennej $PasswordEntered nie będą nigdy wykonywane. Może zostać wykorzystana do
tworzenia okna użytkownika do logowania. Powiązanie z tą zmienną obiektów do
wprowadzania danych reagujących na dotyk i/lub skryptów umożliwia wprowadzenie przez
użytkownika hasła.
Uwaga:
Gdy zmienna $OperatorEntered przyjmuje dozwoloną wartość, zmienne
systemowe $AccessLevel i $Operator zostaną ustawione na predefiniowane wartości.
Typ danych
Message (tylko zapis)
Patrz również
$AccessLevel, $Operator, $OperatorEntered, $ChangePassword, $ConfigureUsers
Zmienne systemowe
1-15
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
$Second
system
Wartością tej zmiennej jest bieżąca sekunda.
Sposób użycia
$Second
Uwagi
Zmienna ta przyjmuje wartości od 0 do 59.
Typ danych
Integer (tylko odczyt)
Przykład
Wave=100*Sin(6*$Second);
$StartDdeConversations
system
Zmienna ta rozpoczyna nie zainicjowaną konwersację DDE w czasie pracy aplikacji, w
sytuacji, gdy menu Special zostało wyłączone. Działanie jest równoważne wybraniu
polecenia Start Uninitiated Conversations z menu Special programu WindowMaker.
Sposób użycia
$StartDdeConversations
Uwagi
Przypisanie zmiennej wartości 1 powoduje uruchomienie nie zainicjowanej dotychczas
konwersacji DDE.
Typ danych
Discrete (odczyt / zapis)
$System
alarmy
Standardowa, nadrzędna grupa alarmowa.
Sposób użycia
$System
Uwagi
Jeżeli zmienna nie jest przyporządkowana do konkretnej Grupy alarmowej, InTouch
automatycznie przyporządkuje ją do grupy $System. Wszystkie zdefiniowane grupy
alarmowe są podgrupami grupy $System.
Typ danych
System Alarm Group (tylko odczyt)
Przykład
$System.Ack = 1;{Zatwierdzenie wszystkich alarmów}
1-16
Rozdział 1
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
$Time
system
Wartością tej zmiennej jest czas w milisekundach, który upłynął od północy.
Sposób użycia
$Time
Uwagi
Brak
Typ danych
Integer (tylko odczyt)
Przykład
Sec_Midnight = $Time/1000;{Liczba sekund, które upłynęły licząc od
północy}
$TimeString
system
Wartością tej zmiennej jest czas w formacie określonym w pliku WIN.INI.
Sposób użycia
$TimeString
Uwagi
Format czasu ustawiany jest za pomocą Panelu sterowania systemu Windows, lub po
podwójnym kliknięciu ikony Zegara, umieszczonej z prawej strony Paska zadań.
Typ danych
String (tylko odczyt)
Przykład
BatchStartString = $TimeString;
$Year
system
Wartością tej zmiennej jest bieżący rok w czterocyfrowym formacie.
Sposób użycia
$Year
Uwagi
Podaje rok w następującym formacie:
1990
Typ danych
Integer (tylko odczyt)
Przykład
CurrentYear = $Year;
NoYrsTill2000 = 2000 - CurrentYear;
2-1
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
R O Z D Z I A Ł 2
Pola
InTouch wykorzystuje pola do monitorowania i modyfikacji właściwości takich obiektów
jak zmienne, trendy historyczne oraz obiekty sterujące Windows. Pola te mogą być
wykorzystane do monitorowania i zmiany tych właściwości. W zależności od rodzaju
obiektu, istnieją dwie metody korzystania z tych właściwości: bezpośrednio za pomocą
instrukcji o składni Zmienna.pole, lub pośrednio, za pomocą funkcji skryptowej.
Wszystkie obiekty, z wyjątkiem obiektów sterujących okien, oraz obiektów związanych z
alarmowaniem rozproszonym, korzystają ze składni Zmienna.pole. Aby uzyskać dostęp do
właściwości tych obiektów w czasie pracy aplikacji wystarczy wpisać nazwę obiektu,
kropkę i nazwę pola, które ma być wykorzystane w skrypcie lub w połączeniu
animacyjnym. Na przykład, aby umożliwić w czasie pracy aplikacji zmianę górnego progu
alarmowego HiHiLimit zmiennej o nazwie Analog_Tag, można utworzyć przycisk z
połączeniem do wprowadzania wartości, a jako wyrażenie wprowadzić
Analog_Tag.HiHiLimit. W czasie pracy aplikacji operator może kliknąć na ten przycisk i
wpisać nową wartość górnego progu alarmowego zmiennej Analog_Tag.
Obiekty sterujące okien oraz obiekty związane z alarmowaniem rozproszonym
wykorzystują funkcje GetPropertyX oraz SetPropertyX, gdzie X jest typem danych
reprezentowanym przez określoną właściwość (D = Discrete, I = Integer, M = Message).
W celu uniknięcia mylenia z polami zmiennych programu InTouch, obiekty sterujące okien
i obiekty do obsługi alarmów rozproszonych zostały wymienione pod koniec tego
rozdziału. Funkcje te mogą być również stosowane w skryptach, oraz w połączeniach
animacyjnych w celu uzyskania dostępu do określonych właściwości tych obiektów.
! Więcej informacji na temat korzystania z funkcji skryptowych GetProperty i
SetProperty podano w Rozdziale 3 niniejszego podręcznika.
2-2
Rozdział 2
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Typy zmiennych
Przy definiowaniu nowej zmiennej w bazie danych InTouch, należy określić jej typ.
Przykładowo, jeżeli wartość zmiennej jest ustawiana lub odczytywana przez inne aplikacje
Windows jak na przykład program komunikacyjny, należy zadeklarować zmienną typu I/O.
Poniżej opisano wszystkie typy zmiennych oraz sposób ich wykorzystywania.
Zmienne typu pamięciowego (Memory)
Tego typu zmienne wykorzystywane są wewnątrz aplikacji InTouch. Mogą one być
stosowane jako zmienne stałe, oraz do symulacji. Można je także wykorzystywać do
udostępniania wyników obliczeń innym aplikacjom pracującym w środowisku Windows.
Przykładowo, można zadeklarować zmienną typu pamięciowego o wartości początkowej
3.1416, lub można przy użyciu grupy zmiennych typu pamięciowego zapisać receptury. W
czasie symulowania, zmienne te mogą być wykorzystywane do sterowania działaniami
wykonywanymi w tle skryptu. Przykładowo, można zdefiniować zmienną typu
pamięciowego "Licznik", której wartość jest zmieniana w czasie wykonywania skryptu,
dzięki czemu uzyskiwane będą różne efekty animacyjne, zależne od bieżącego etapu
procesu. Istnieją cztery rodzaje zmiennych typu pamięciowego:
Memory Discrete
Zmienna dyskretna o wartości 0 (False, Off), lub 1 (True, On).
Memory Integer
32-bitowa zmienna całkowita ze znakiem o wartościach z zakresu od - 2,147,483,648 do
2,147,483,648.
Memory Real
Zmienna typu rzeczywistego. Zmienna ta może mieć wartość w przedziale
±
3.4e
38
.
Wszystkie obliczenia na zmiennych tego typu wykonywane są z dokładnością do 64-
bitową, a zapamiętywane z dokładnością do 32 bitów.
Memory Message
Zmienna typu tekstowego o długości do 131 znaków.
Pola
2-3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Zmienne typu I/O
Wszystkie zmienne, które czytają lub zapisują wartości w innym programie pracującym w
systemie Windows są zmiennymi typu I/O. Obejmuje to wymianę danych z
programowalnymi sterownikami logicznymi, komputerami sterującymi procesami, oraz
stacjami sieciowymi. Ze zmiennych typu I/O można korzystać zarówno za pomocą
mechanizmu dynamicznej wymiany danych Microsoftu (DDE - Dynamic Data Exchange),
jak i za pomocą protokołu komunikacyjnego SuiteLink.
Każda zmiana wartości zmiennej typu I/O przeznaczonej do zapisu/ odczytu, powoduje
natychmiastową aktualizację tej zmiennej w aplikacjach, w których jest ona
wykorzystywana. Podobnie, powodem aktualizacji może być zmiana wartości zmiennej w
jednej z aplikacji. Domyślnie, wszystkie zmienne typu I/O ustawiane są tak, aby można
było zarówno odczytywać jak i zmieniać ich wartość. Można jednak zdefiniować je jako
przeznaczone wyłącznie do odczytu, poprzez zaznaczenie odpowiedniej opcji w oknie
dialogowym Tagname Dictionary. Istnieją cztery rodzaje zmiennych typu I/O:
I/O Discrete
Zmienna I/O o wartości 0 (False, Off), lub 1 (True, On).
I/O Integer
32-bitowa zmienna całkowita ze znakiem o wartościach z zakresu od - 2,147,483,648 do
2,147,483,648.
I/O Real
Zmienna typu rzeczywistego. Zmienna ta może mieć wartość w przedziale
±
3.4e
38
.
Wszystkie obliczenia na zmiennych tego typu wykonywane są z dokładnością do 64-bitów,
a zapamiętywane z dokładnością do 32 bitów.
I/O Message
Zmienna typu tekstowego o długości do 131 znaków.
Zmienne typu pośredniego(Indirect): dyskretne,
analogowe, tekstowe
Zmienne tego typu pozwalają tworzyć okna, w których źródła wartości zmiennych mogą
być wielokrotnie zmieniane. Przykładowo, można utworzyć skrypt wykonywany przy
zmianie wartości zmiennej, który zmienia źródło wszystkich zmiennych występujących w
oknie, w zależności od wartości zmiennej.
2-4
Rozdział 2
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Pozostałe typy zmiennych
Dostępnych jest szereg specjalnych typów zmiennych, które mogą być wykorzystane do
realizacji złożonych funkcji, jak na przykład dynamiczne wyświetlanie alarmów, tworzenie
trendów historycznych, monitorowanie, oraz sterowanie przypisaniem pisaków do
zmiennych na wykresie trendów historycznych. Dostępne są również zmienne pośrednie,
które umożliwiają odłączenie zmiennej od jednego źródła i przypisanie jej do innego.
Poniżej opisano te cztery specjalne typy zmiennych.
Group Var (Zmienne grupowe)
Ten typ wykorzystywany jest w zmiennych z przyporządkowaną grupą alarmową, do
dynamicznego wyświetlania alarmów, rejestracji zapisu na dysk i drukowania. Zmienna
typu Group Var może być wykorzystana do tworzenia okien alarmowych, lub rejestracji
alarmów, wyświetlających wszystkie alarmy powiązane z określoną grupą zmiennych.
Można również sterować wyświetlanymi lub zarejestrowanymi alarmami poprzez
przyporządkowanie innej Grupy Alarmowej do zmiennej typu Group Var.
Zmienne grupowe typu Group Var mogą być również użyte do tworzenia przycisków
służących do selektywnego wyświetlania alarmów dla różnych instalacji w jednym oknie
alarmowym. Wszystkie pola zmiennych związane z Grupami alarmowymi są również
dostępne w zmiennych typu Group Var.
" Więcej informacji na temat alarmów podano w podręczniku w wersji elektronicznej
Poradnik użytkownika.
Hist Trend (Trend historyczny)
Typ Hist Trend jest wymagany do tworzenia trendów historycznych. Wszystkie pola
dostępne w trendach historycznych mogą być również stosowane w przypadku zmiennych
typu Hist Trend.
Tag ID (Identyfikator zmiennej)
Ten specjalny typ zmiennych jest wykorzystywany w połączeniu z obiektami trendów
historycznych. Za pomocą zmiennej typu Tag ID można uzyskać informacje o zmiennych
rysowanych na trendzie historycznym. W większości przypadków, zmienne typu Tag ID
będą wykorzystywane do wyświetlania nazwy zmiennej rysowanej przez dany pisak, lub też
do zmiany zmiennej przyporządkowanej do pisaka.
Zmienne typu SuperTag
InTouch pozwala na definiowanie szablonów SuperTag, wykorzystywanych do tworzenia
złożonych typów zmiennych. Szablony SupetTags mogą zawierać do 64 zmiennych
składowych, i mogą mieć 2 poziomy zagnieżdżenia. Zmienne składowe mają dokładnie
takie same właściwości jak normalne zmienne. Umożliwiają one tworzenie trendów,
obsługę alarmów, oraz posiadają takie same pola jak zmienne.
" Więcej informacji na temat alarmów podano w podręczniku w wersji elektronicznej
Poradnik użytkownika.
Zestawienie typów pól zmiennych
Tabela pokazana na następnej stronie stanowi rodzaj skrótowego poradnika, określającego
typy pól zmiennych. Podany poniżej przypis odnosi się do tabeli zamieszczonej na
następnej stronie.
*Obsługiwane wyłącznie przez program InTouch v. 7.0. Jeżeli pola te mają być przesyłane
z stacji klienckiej jako zmienne typu I/O, stacja serwera dołącza do nich informacje o
czasie wysłania wartości do stacji klienckiej. Jeżeli jednak wartość tych pól przesyłana jest
przez stację lokalną, zawsze ustawiana jest jakość GOOD, a czas na NO. Oznacza to, że
czas zmiany wartości przez skrypty lub połączenia NIE JEST pamiętany.
Pola
2-5
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
2-6
Rozdział 2
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.Ack
alarmy
Pole to umożliwia sprawdzanie i/lub zmianę statusu zatwierdzenia lokalnego (-ych)
alarmów.
Sposób użycia
Tagname.Ack=1
Parametry
Opis
Tagname
Dowolna zmienna typu Discrete, Integer , Real, Indirect Analog lub
Group Variable.
Uwagi
Przypisanie omawianemu polu zmiennej 1 powoduje zatwierdzenie wszystkich aktywnych
alarmów, które są związane z daną zmienną lub grupą. Jeśli podana zmienna jest zmienną
typu Group Var lub Grupą alarmową, wszystkie nie zatwierdzone alarmy związane ze
zmiennymi wchodzącymi w skład określonej grupy zostają zatwierdzone. W przypadku
gdy zmienna jest innego typu niż Group Var, zatwierdzane są wyłącznie alarmy powiązane
z daną zmienną. Przypisanie omawianemu polu wartości różnej od 1 nie ma żadnego
znaczenia, a wynik takiej operacji jest nieokreślony.
Typ danych
Discrete (odczyt/zapis)
Zakres wartości
1
Przykłady
Podane poniżej wyrażenie powoduje zatwierdzenie alarmu związanego ze zmienną o
nazwie Tag1.
Tag1.Ack=1;
Wyrażenie podane w następnym przykładzie spowoduje zatwierdzenie wszystkich alarmów
należących do grupy alarmów o nazwie PumpStation.
PumpStation.Ack=1;
Do zatwierdzania alarmów można skorzystać z zmiennej pośredniej (używając do tego celu
zmiennej typu GroupVar). Przykładowo, można wprowadzić następujące wyrażenie:
StationAlarms.Name = "PumpStation";
Zdefiniowana została zmienna StationAlarms typu GroupVar, a następnie przypisano do
niej zmienną PumpStation. Tak więc podane poniżej wyrażenie jest bardzo podobne do
zamieszczonych w przykładach powyżej, za wyjątkiem faktu, że jest ono wykorzystywane
do zatwierdzania wszystkich nie zatwierdzonych alarmów w grupie alarmów PumpStation,
która powiązana jest aktualnie ze zmienną typu GroupVar o nazwie StationAlarms.
StationAlarms.Ack=1;
Uwaga
. Polem o wartości przeciwnej do .Ack jest pole .Unack. W przypadku wystąpienia
nie zatwierdzonego alarmu, pole .Unack ustawiane jest na 1. Pole to może zostać następnie
wykorzystane w połączeniu animacyjnym lub skrypcie warunkowym do wyświetlania
komunikatów o niezatwierdzonych alarmach.
Patrz również
.Alarm and .Unack
Pola
2-7
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.Alarm
alarmy
Pole to przyjmuje wartość 1, gdy zmienna, z którą jest ono skojarzone znajduje się w stanie
alarmowym.
Sposób użycia
Tagname.Alarm
Parametry
Opis
Tagname
Dowolna zmienna typu Discrete, Integer , Real, Indirect Analog lub
Group Variable.
Uwagi
Pole to, przeznaczone wyłącznie do odczytu, ma zwykle przypisaną wartość 0. Gdy
wartość zmiennej, z którą pole jest skojarzone przekracza zadany próg alarmowy, wartość
pola zostaje zmieniona przez system na 1. Pole to ma wartość równą 1 do czasu, gdy
zniknie przyczyna alarmu. Jeśli dana zmienna jest zmienną grupową (Group Var), lub jest
nazwą grupy alarmowej, polu .Alarm zostaje przypisana wartość 1 zawsze, gdy
którakolwiek ze zmiennych należących do tej grupy znajdzie się w stanie alarmowym.
Dostępne jest również pole .Normal, o wartości przeciwnej do wartości pola .Alarm.
Typ danych
Discrete (tylko odczyt)
Zakres wartości
0 lub 1
Przykłady
Zamieszczone poniżej wyrażenie sprawdza, czy zmienna "Tag1" jest w stanie alarmowym.
IF (Tag1.Alarm == 1) THEN
Wyrażenia zawarte w poniższej instrukcji IF-THEN będą wykonywane, jeżeli w grupie
alarmów PumpStation występują aktywne alarmy.
IF (PumpStation.Alarm == 1) THEN
MyAlarmMessage="The pumping station currently has an ALARM!";
ENDIF;
Pole to nie jest powiązane z polami .Ack i .Unack. Z tego powodu, nawet jeżeli aktywny
alarm zostanie zatwierdzony, wartość pola .Alarm pozostaje równa 1.
Patrz również
.Ack, .Normal, Ack()
2-8
Rozdział 2
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.AlarmDevDeadband
alarmy
Pole to służy do zmiany i monitorowania procentowej strefy nieczułości (Dead band) dla
"małego" (Minor Deviation) i "dużego" (Major Deviation) alarmu odchyleniowego.
Sposób użycia
Tagname.AlarmDevDeadband
Parametry
Opis
Tagname
Dowolna zmienna typu Discrete, Integer , Real, Indirect Analog lub
Group Var.
Uwagi
Zaznaczenie opcji Retentive Parameters na Liście zmiennych powoduje automatyczne
zapisywanie zmian wartości tego pola przez połączenia animacyjne lub skrypty programu
WindowViewer.
Typ danych
Analog (odczyt/zapis)
Zakres wartości
Od 0 do 100 (integer)
Przykład
Zamieszczone poniżej wyrażenie powoduje zmianę procentowego pola nieczułości na 25%.
Tagname.AlarmDevDeadband=25;
Patrz również
.AlarmValDeadband
Pola
2-9
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.AlarmEnabled
alarmy
Pole to umożliwia włączanie i/lub wyłączanie sygnalizowania alarmów i zdarzeń dla
zmiennej.
Sposób użycia
Tagname.AlarmEnabled
Parametry
Opis
Tagname
Dowolna zmienna typu Discrete, Integer, Real, Indirect Analog lub
GroupVar.
Uwagi
Gdy wartość pola .AlarmEnabled jest ustawiona na 0, wszystkie zdarzenia i alarmy są
ignorowane. Nie są one zapisywane w buforze, ani też na dysku. Aby uniknąć utraty
danych, należy zawsze, gdy to jest możliwe, włączać sygnalizację zdarzeń i alarmów.
Typ danych
Discrete (odczyt/zapis)
Zakres wartości
0 = Wyłączenie sygnalizacji alarmów i zdarzeń
1 = Włączenie sygnalizacji alarmów i zdarzeń (ustawienie domyślne)
Przykłady
Przykładowa instrukcja zamieszczona poniżej włącza sygnalizowanie wszystkich zdarzeń i
alarmów dla zmiennej o nazwie Tag1.
Tag1.AlarmEnabled=0;
Wyrażenia zawarte w poniższej instrukcji IF-THEN będą wykonywane jeżeli dla grupy
alarmów o nazwie "PumpStation" włączona została sygnalizacja zdarzeń i alarmów.
IF (PumpStation.AlarmEnabled == 1) THEN
MyAlarmMessage="The Events and Alarms for the Pump
Station are enabled"
ENDIF;
Patrz również
.Alarm
2-10
Rozdział 2
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.AlarmValDeadband
alarmy
Pole to służy do zmiany i monitorowania procentowej strefy nieczułości (Dead band) dla
alarmu związanego z przekroczeniem progu wartości zmiennej.
Sposób użycia
Tagname.AlarmValDeadband
Parametry
Opis
Tagname
Dowolna zmienna typu, Integer , Real, lub Indirect Analog.
Uwagi
Zaznaczenie opcji Retentive Parameters na Liście zmiennych powoduje automatyczne
zapisywanie zmian wartości tego pola przez połączenia animacyjne lub skrypty programu
WindowViewer.
Typ danych
Analog (odczyt/zapis)
Zakres wartości
Musi mieścić się w zakresie wartości skonfigurowanym dla danej zmiennej.
Przykład
Przykładowa instrukcja zamieszczona poniżej zmienia wartość strefy nieczułości alarmu
dla zmiennej Tag1 na 25.
Tag1.AlarmValDeadband=25;
Patrz również
.AlarmDevDeadband
Pola
2-11
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.ChartLength
dane historyczne
Pole to definiuje długość (w jednostkach czasu) wykresu trendu historycznego.
Sposób użycia
Tagname.ChartLength
Parametry
Opis
Tagname
Dowolna zmienna typu Hist Trend.
Uwagi
Pole to, przeznaczone do odczytu i zapisu, jest używane do zmiany (lub weryfikacji)
długości okna wykresu trendu historycznego. Wartość tego parametru jest wyrażona w
sekundach. Długość definiowana jest jako okres czasu wyświetlany na wykresie trendu
historycznego. Dokładniej ujmując, wzór na obliczenie długości wykresu trendu
historycznego ma następującą postać:
ChartLength=(Date/Time Stamp on Right-Hand Side of Chart) -
(Date/Time Stamp on Left-Hand Side of Chart);
Ponieważ parametry Date/ Time wyrażone są w sekundach które upłynęły od 1/1/70,
wynikiem obliczeń jest "liczba sekund wyświetlanych pomiędzy lewą a prawą krawędzią
wykresu".
Zawsze przy dodawaniu lub odejmowaniu wartości od pola .ChartLength należy
pamiętać, że jego wartość wyrażona jest w sekundach. Zatem, jeżeli należy odjąć "2
godziny" od bieżącej wartości pola .ChartLength, należy wcześniej zamienić "2 godziny"
na liczbę sekund, tzn. (2 godziny ) * (60 minut/ godzinę) * (60 sekund/ minutę) = 7200
sekund.
Typ danych
Integer (odczyt/zapis)
Zakres wartości
Dowolna dodatnia liczba całkowita.
Przykład
Zamieszczone poniżej wyrażenie ustawia długość wykresu na 1 godzinę:
HtTagname.ChartLength=3600 {60 minut * 60 sekund/ minutę};
Przedstawione poniżej wyrażenie powoduje przewinięcie wykresu w lewo o połowę:
HtTagname.ChartStart=HtTagname.ChartStart -
HtTagname.ChartLength / 2;
To wyrażenie z kolei, powoduje przewinięcie wykresu w lewo o 10%:
HtTagname.ChartStart=HtTagname.ChartStart - (.10 *
HtTagname.ChartLength);
Patrz również
.ChartStart
2-12
Rozdział 2
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.ChartStart
dane historyczne
Pole to definiuje datę i czas początku (lewej krawędzi) okna wykresu trendu historycznego.
Sposób użycia
Tagname.ChartLength
Parametry
Opis
Tagname
Dowolna zmienna typu Hist Trend.
Uwagi
Pole to przeznaczone do odczytu i zapisu używane jest do zmiany (lub weryfikacji) daty i
czasu początku (lewej krawędzi) okna wykresu trendu historycznego. Pole to zawiera
liczbę sekund, które upłynęły od północy, 1 stycznia 1970. Punkt początkowy jest datą/
godziną, przedstawianą na początku osi wykresu trendu historycznego.
Typ danych
Integer (odczyt/zapis)
Zakres wartości
Dowolna dodatnia liczba całkowita.
Przykład
Zamieszczone poniżej wyrażenie przesuwa początek wykresu w prawo, o 1 minutę:
HtTagname.ChartStart=HtTagname.ChartStart + 60;
.Comment
zmienna
Pole to zawiera komentarz wprowadzony dla danej zmiennej podczas jej definiowania na
Liście zmiennych.
Sposób użycia
Tagname.Comment
Parametry
Opis
Tagname
Dowolna zmienna.
Uwagi
Chociaż pole to w programie WindowMaker przeznaczone jest wyłącznie do odczytu, jego
wartość może zostać zmieniona w trakcie wykonywania aplikacji (wyłącznie w pamięci).
Po zamknięciu aplikacji i ponownym jej uruchomieniu, przywracana jest stara wartość pola
komentarza. Pole to jest używane przez system alarmowania rozproszonego do odczytu
komentarzy dla alarmów.
Typ danych
Message (tylko odczyt)
Zakres wartości
Dowolny łańcuch znaków zawierający od 1 do 131 znaków. Porównać z zamieszczoną
poniżej uwagą odnośnie dopuszczalnej liczby znaków.
Uwaga
Pole komentarza zmiennej może zostać zmienione wyłącznie z poziomu Listy
zmiennych. Wprowadzenie do pola .Comment nowej wartości w trakcie wykonywania
aplikacji nie powoduje zmiany wartości tego pola, zapisanej na Liście zmiennych. Długość
komentarza wprowadzanego z poziomu Listy zmiennych nie może przekroczyć 131
znaków, oraz nie może przekroczyć 50 znaków w przypadku wprowadzania komentarza w
trakcie pracy aplikacji.
Przykład
W podanym poniżej wyrażeniu tworzony jest łańcuch znaków (wartość zmiennej
tekstowej) zawierający nazwę zmiennej, oraz tekst wprowadzony w polu .Comment tej
zmiennej:
OperatorMessage=MyTag.Name + " has a comment of: " +
MyTag.Comment;
Uwaga
Wartość tego pola zapisywana jest do bazy danych pamiętanej w trakcie pracy
aplikacji. Nie jest ona zapisywana do bazy danych zmiennych.
Pola
2-13
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.DevTarget
alarmy
Pole to służy do monitorowania i/lub zmiany wartości docelowej (od której jest obliczane
odchylenie) dla "małego" (Minor Deviation) i "dużego" (Major Deviation) alarmu
odchyleniowego.
Sposób użycia
Tagname.DevTarget
Parametry
Opis
Tagname
Dowolna zmienna typu, Integer , Real, lub Indirect Analog.
Uwagi
Zaznaczenie opcji Retentive Parameters na Liście zmiennych powoduje automatyczne
zapisywanie zmian wartości tego pola przez połączenia animacyjne lub skrypty programu
WindowViewer.
Typ danych
Analog (odczyt/zapis)
Zakres wartości
Musi mieścić się w zdefiniowanym dla danej zmiennej zakresie wartości.
Przykład
Przykładowa instrukcja zamieszczona poniżej zmienia wartość pola .DevTarget zmiennej
MyTag
na 500.
MyTag.DevTarget=500;
.DisplayMode
dane historyczne
Pole to określa sposób wyświetlania wartości na wykresie trendu historycznego.
Sposób użycia
Tagname.DisplayMode
Parametry
Opis
Tagname
Dowolna zmienna typu Hist Trend.
Uwagi
Brak
Typ danych
Analog (odczyt/zapis)
Zakres wartości
1 = Wyświetlanie wartości min/max dla każdego okresu próbkowania (tryb domyślny).
2 = Wyświetlanie wartości średniej dla każdego okresu próbkowania na tle rozrzutu
wartości.
3 = Wyświetlanie wartości średniej dla każdego okresu próbkowania na tle wykresu
słupkowego.
Przykład
Zamieszczone poniżej wyrażenie powoduje wyświetlanie trendu historycznego
powiązanego ze zmienną MyHistTrendTag w formie wykresu słupkowego.
MyHistTrendTag.DisplayMode=3;
2-14
Rozdział 2
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.EngUnits
zmienna
Pole to umożliwia użytkownikowi odwoływanie się do jednostek inżynierskich zmiennej
analogowej, zgodnie z ich definicją wprowadzoną na Liście zmiennych.
Sposób użycia
Tagname.EngUnits
Parametry
Opis
Tagname
Dowolna zmienna typu, Integer , Real, lub Indirect Analog.
Uwagi
Pole to przyjmuje wartości typu tekstowego i nie ma wpływu na skalowanie, konwersję czy
format wartości zmiennej.
Typ danych
Message (odczyt/zapis)
Zakres wartości
Dowolny łańcuch znaków zawierający od 0 do 31 znaków.
Przykład
IF Temperature.EngUnits == "Celsius" THEN
CALL TempConvert(Temperature);{A Quick Function which might be
used to convert Celsius to Fahrenheit}
ENDIF;
.HiHiLimit
alarmy
Pole to służy do monitorowania i/lub zmiany pierwszej górnej wartości progowej
(HiHiLimit) dla alarmu przekroczenia wartości.
Sposób użycia
Tagname.HiHiLimit
Parametry
Opis
Tagname
Dowolna zmienna typu, Integer , Real, lub Indirect Analog.
Uwagi
Zaznaczenie opcji Retentive Parameters na Liście zmiennych powoduje automatyczne
zapisywanie zmian wartości tego pola przez połączenia animacyjne lub skrypty programu
WindowViewer.
Typ danych
Analog (odczyt/zapis)
Zakres wartości
Musi mieścić się w zdefiniowanym dla danej zmiennej zakresie wartości.
Przykład
Przykładowa instrukcja zamieszczona poniżej zwiększa wartość pola .HiHiLimit (wartość
progowa alarmu) zmiennej MyTag o 5.
MyTag.HiHiLimit=MyTag.HiHiLimit + 5;
Patrz również
.Alarm, .Ack, .LoLimit, .LoLoLimit, .HiLimit, .HiStatus, .HiHiStatus
Pola
2-15
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.HiHiStatus
alarmy
Pole to określa, czy w systemie aktywny jest drugi wysoki alarm progowy HiHiLimit.
Sposób użycia
Tagname.HiHiStatus
Parametry
Opis
Tagname
Dowolna zmienna typu, Integer , Real, lub Indirect Analog.
Uwagi
Wartość tego pola przeznaczonego wyłącznie do odczytu jest zwykle równa 0, w
przypadku wystąpienia alarmu progowego typu HiHi dla zmiennej z którą pole to jest
skojarzone, wartość pola zostaje zmieniona przez system na 1. Pole to ma wartość równą 1
do czasu, gdy zniknie przyczyna alarmu. Pole to jest często używane w połączeniu z
polami .Alarm oraz .Ack, w celu określenia dokładnej przyczyny alarmu związanego z
daną zmienną.
Typ danych
Discrete (tylko odczyt)
Zakres wartości
0 = Stan alarmowy nie występuje
1 = Stan alarmowy występuje
Przykład
Przykładowa instrukcja warunkowa IF-THEN zamieszczona poniżej zostanie wykonana
tylko wtedy, gdy pole .HiHiStatus zmiennej o nazwie MyTag przyjmie wartość 1. Jeżeli
dla zmiennej MyTag uruchomiony zostanie alarm progowy HiHi, wykonane zostaną
wyrażenia zamieszczone w instrukcji IF-THEN.
IF (MyTag.HiHiStatus == 1) THEN
OperatorMessage="MyTag has gone into High-High Alarm";
ENDIF;
Patrz również
.Alarm, .Ack, .LoLimit, .LoLoLimit, .HiLimit, .HiHiLimit, HiStatus
2-16
Rozdział 2
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.HiLimit
alarmy
Pole to służy do monitorowania i/lub zmiany pierwszej górnej wartości progowej (HiLimit)
dla alarmu progowego.
Sposób użycia
Tagname.HiLimit
Parametry
Opis
Tagname
Dowolna zmienna typu, Integer , Real, lub Indirect Analog.
Uwagi
Zaznaczenie opcji Retentive Parameters na Liście zmiennych powoduje automatyczne
zapisywanie zmian wartości tego pola przez połączenia animacyjne lub skrypty programu
WindowViewer.
Typ danych
Analog (odczyt/zapis)
Zakres wartości
Musi mieścić się w zdefiniowanym dla danej zmiennej zakresie wartości.
Przykład
Temperature.HiLimit = 212;
Patrz również
.Alarm, .Ack, .LoLimit, .LoLoLimit, .HiHiLimit, HiStatus, .HiHiStatus
.HiStatus
alarmy
Pole to określa, czy w systemie występuje pierwszy górny alarm progowy (HiLimit).
Sposób użycia
Tagname.HiStatus
Parametry
Opis
Tagname
Dowolna zmienna typu, Integer , Real, lub Indirect Analog.
Uwagi
Wartość tego pola przeznaczonego wyłącznie do odczytu jest zwykle równa 0,a w
przypadku wystąpienia alarmu progowego typu Hi dla zmiennej z którą pole to jest
skojarzone, zostaje zmieniona przez system na 1. Pole to ma wartość równą 1 do czasu,
gdy zniknie przyczyna alarmu. Pole to jest często używane w połączeniu z polami .Alarm
oraz .Ack w celu określenia dokładnej przyczyny alarmu związanego z daną zmienną.
Typ danych
Discrete (tylko odczyt)
Zakres wartości
0 = Stan alarmowy nie występuje
1 = Stan alarmowy występuje
Przykład
IF (MotorAmps.HiStatus == 1) THEN
CALL PumpShutdown( ); {Funkcja skryptowa, wyłączająca
silnik}
ENDIF;
Patrz również
.Alarm, .Ack, .LoLimit, .LoLoLimit, .HiLimit, .HiHiLimit, .HiHiStatus
Pola
2-17
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.LoLimit
alarmy
Pole to służy do monitorowania i/lub zmiany pierwszej dolnej wartości progowej (LoLimit)
dla alarmu progowego.
Sposób użycia
Tagname.LoLimit
Parametry
Opis
Tagname
Dowolna zmienna typu, Integer , Real, lub Indirect Analog.
Uwagi
Zaznaczenie opcji Retentive Parameters na Liście zmiennych powoduje automatyczne
zapisywanie zmian wartości tego pola przez połączenia animacyjne lub skrypty programu
WindowViewer.
Typ danych
Analog (odczyt/zapis)
Zakres wartości
Musi mieścić się w zdefiniowanym dla danej zmiennej zakresie wartości.
Przykład
Zamieszczone poniżej wyrażenie powoduje zmniejszenie wartości pola LoLimit (alarmu
progowego) o 10.
MyTag.LoLimit=MyTag.LoLimit - 10;MyTag.LoLimit=MyTag.LoLimit - 10;
Patrz również
.Alarm, .Ack, .LoLoLimit, .LoStatus, .HiLimit, .HiHiLimit, HiStatus, .HiHiStatus
.LoLoLimit
alarmy
Pole to służy do monitorowania i/lub zmiany drugiej dolnej wartości progowej (LoLoLimit)
dla alarmu progowego.
Sposób użycia
Tagname.LoLoLimit
Parametry
Opis
Tagname
Dowolna zmienna typu, Integer , Real, lub Indirect Analog.
Uwagi
Zaznaczenie opcji Retentive Parameters na Liście zmiennych powoduje automatyczne
zapisywanie zmian wartości tego pola przez połączenia animacyjne lub skrypty programu
WindowViewer.
Typ danych
Analog (odczyt/zapis)
Zakres wartości
Musi mieścić się w zdefiniowanym dla danej zmiennej zakresie wartości.
Przykład
Zamieszczone poniżej wyrażenie powoduje zmniejszenie wartości pola LoLoLimit (alarmu
progowego) o 10.
MyTag.LoLoLimit=MyTag.LoLoLimit - 10;
Patrz również
.Alarm, .Ack, .LoLimit, .HiLimit, .HiHiLimit, HiStatus, .HiHiStatus
2-18
Rozdział 2
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.LoLoStatus
alarmy
Pole to określa, czy w systemie występuje drugi dolny alarm progowy LoLoLimit.
Sposób użycia
Tagname.LoLoStatus
Parametry
Opis
Tagname
Dowolna zmienna typu, Integer , Real, lub Indirect Analog.
Uwagi
Wartość tego pola przeznaczonego wyłącznie do odczytu jest zwykle równa 0. Jeżeli
wystąpi alarm progowy typu LoLo dla zmiennej, z którą pole to jest skojarzone, wartość
pola zostaje zmieniona przez system na 1. Pole to ma wartość równą 1 do czasu, gdy
zniknie przyczyna alarmu. Pole to jest często używane w połączeniu z polami .Alarm oraz
.Ack
, w celu określenia dokładnej przyczyny alarmu związanego z daną zmienną.
Typ danych
Discrete (tylko odczyt)
Zakres wartości
0 = Stan alarmowy nie występuje
1 = Stan alarmowy występuje
Przykład
Przykładowa instrukcja warunkowa IF-THEN zamieszczona poniżej zostanie wykonana
tylko wtedy, gdy pole .LoLoStatus zmiennej o nazwie MyTag ma wartość 1. Jeżeli dla
zmiennej MyTag uruchomiony zostanie alarm progowy LoLo, wykonane zostaną
wyrażenia zamieszczone w instrukcji IF-THEN.
IF (MyTag.LoLoStatus == 1) THEN
OperatorMessage="MyTag has gone into Low-Low Alarm";
ENDIF;
Patrz również
.Alarm, .Ack, .LoLimit, .LoLoLimit, .HiLimit, .HiHiLimit, HiStatus, .HiHiStatus
Pola
2-19
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.LoStatus
alarmy
Pole to określa, czy w systemie występuje pierwszy dolny alarm progowy LoLimit.
Sposób użycia
Tagname.LoStatus
Parametry
Opis
Tagname
Dowolna zmienna typu, Integer , Real, lub Indirect Analog.
Uwagi
Wartość tego pola przeznaczonego wyłącznie do odczytu jest zwykle równa 0. Jeżeli
wystąpi alarm progowy typu Lo dla zmiennej, z którą pole to jest skojarzone, wartość pola
zostaje zmieniona przez system na 1. Pole to ma wartość równą 1 do czasu, gdy zniknie
przyczyna alarmu. Pole to jest często używane w połączeniu z polami .Alarm oraz .Ack w
celu określenia dokładnej przyczyny alarmu związanego z daną zmienną.
Typ danych
Discrete (tylko odczyt)
Zakres wartości
0 = Stan alarmowy nie występuje
1 = Stan alarmowy występuje
Przykład
IF (WaterLevelTank1.LoStatus == 1) THEN
PumpShutdown = 1;
WaterFillValue = 1;
ENDIF;
Patrz również
.Alarm, .Ack, .LoLimit, .LoLoLimit, .HiLimit, .HiHiLimit, HiStatus, .HiHiStatus
.MajorDevPct
alarmy
Monitoruje i/lub zmienia wartość procentowego odchylenia dla alarmu.
Sposób użycia
Tagname.MajorDevPct
Parametry
Opis
Tagname
Dowolna zmienna typu, Integer , Real, lub Indirect Analog.
Uwagi
Zaznaczenie opcji Retentive Parameters na Liście zmiennych powoduje automatyczne
zapisywanie zmian wartości tego pola przez połączenia animacyjne lub skrypty programu
WindowViewer.
Typ danych
Integer (odczyt/zapis)
Zakres wartości
Od 0 do 100%
Przykład
Przykładowe wyrażenie zamieszczone poniżej zmienia wartość pola .MajorDeviation
zmiennej MyTag na 25%.
MyTag.MajorDevPct=25;
Patrz również
.MajorDevStatus
2-20
Rozdział 2
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.MajorDevStatus
alarmy
Pole to określa, czy w systemie występuje alarm dużego odchylenia.
Sposób użycia
Tagname.MajorDevStatus
Parametry
Opis
Tagname
Dowolna zmienna typu, Integer , Real, lub Indirect Analog.
Uwagi
Wartość tego pola przeznaczonego wyłącznie do odczytu jest zwykle równa 0. W
przypadku wystąpienia alarmu odchyleniowego dla zmiennej, z którą pole to jest
skojarzone, wartość pola zostaje zmieniona przez system na 1. Pole to ma wartość równą
1 do czasu, gdy zniknie przyczyna alarmu.
Typ danych
Discrete (tylko odczyt)
Zakres wartości
0 = Stan alarmowy nie występuje
1 = Stan alarmowy występuje
Przykład
Przykładowa instrukcja warunkowa IF-THEN zamieszczona poniżej zostanie wykonana
tylko wtedy, gdy wartość pola .HiHiStatus zmiennej o nazwie MyTag jest równa 1.
Inaczej ujmując, jeżeli dla zmiennej MyTag uruchomiony zostanie alarm dużego
odchylenia, wykonane zostaną wyrażenia zamieszczone w instrukcji IF-THEN.
IF (MyTag.MajorDevStatus == 1) THEN
OperatorMessage="MyTag has gone into a Major Deviation Alarm";
ENDIF;
Uwagi
Pole to jest często używane w połączeniu z polami .Alarm oraz .Ack, w celu określenia
dokładnej przyczyny alarmu związanego z daną zmienną.
Patrz również
.MajorDevPct
Pola
2-21
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.MaxEU
zmienna
Pole to zawiera maksymalną wartość danej zmiennej, wyrażoną w jednostkach
inżynierskich (EU).
Sposób użycia
Tagname.MaxEU
Parametry
Opis
Tagname
Dowolna zmienna typu, Integer , Real, lub Indirect Analog.
Uwagi
Wartość odczytana z programu komunikacyjnego uważana jest za ŹRÓDŁOWĄ (RAW),
jeżeli została ona przysłana do programu WindowViewer po raz pierwszy. Wartości
źródłowe mogą wymagać skalowania. Do skalowania wartości źródłowych przeznaczone
są pola .MinEu i .MaxEu. Rozważmy typowy przykład - załóżmy, że wskaźnik poziomu
cieczy dostarcza informacje do sterownika PLC. Czujnik dołączony do sterownika
przesyła sygnał o wartości od 4 do 20 mA. Sterownik PLC przekształca ten sygnał
(wykorzystując wewnętrzny przetwornik analogowo-cyfrowy) na wartość całkowitą z
zakresu od 0 do 4096. Wartość ta jest zapisywana jako zmienna o nazwie
PoziomZbiornika2.
Wyświetlenie wartości "źródłowej " (z zakresu od 0 do 4096) nie dostarcza żadnej
użytecznej informacji operatorowi. Konieczne jest zatem przekształcenie tej wartości na
jednostki inżynierskie. W tym celu należy prawidłowo skonfigurować pola MaxEU i
MinEU, określające granice zakresu jednostek inżynierskich. W rozważanym przykładzie,
wartość RAW równa 0 (z pola odczytano 4 mA) zostanie przekształcona na "0 Galonów", a
wartość 4096 (z pola odczytano 20 mA) zostanie przekształcona na "100 Galonów". W
celu wyświetlenia poprawnych wartości na ekranie, należy wprowadzić następujące
instrukcje:
Minimum Raw=0,Maximum Raw = 4096
Minimum Engineering Units=0,Maximum Engineering Units=100
Po wprowadzeniu tych instrukcji, jeżeli wartość RAW pola będzie równa 4096, na ekranie
wyświetlona zostanie liczba 100.
Typ danych
Real (tylko odczyt)
Zakres wartości
Zależy od typu zmiennej.
Przykład
Ponieważ pole to jest przeznaczone tylko do odczytu, nie można mu przypisywać wartości.
Wyświetlenie wartości .MinEU oraz .MaxEU lub wykorzystanie ich w obliczeniach jest
bardzo użyteczne i może ułatwić zrozumienie operatorowi zasad konwersji wartości
uzyskiwanych np. ze sterowników lub innych urządzeń.
DialogValueEntry ("IO_Point_717", IO_Point_717.MinEU,
IO_Point_717.MaxEU, "Please Enter a New Value:");
Patrz również
.MinEU, .MinRaw, .MaxRaw, .RawValue
2-22
Rozdział 2
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.MaxRange
dane historyczne
Pole to określa procentową wartość zakresu Jednostek inżynierskich zmiennej, który
powinien być wyświetlany na trendzie dla zmiennej.
Sposób użycia
Tagname.MaxRange
Parametry
Opis
Tagname
Dowolna zmienna typu Hist Trend.
Uwagi
Ponieważ wiele różnych zmiennych może być wyświetlanych na wykresach trendów
historycznych jednocześnie, podawanie dolnej i górnej granicy zakresu wyświetlanych
wartości (pola .MinRange oraz .MaxRange) w jednostkach inżynierskich staje się
niemożliwe, gdyż każda zmienna może mieć (i zwykle ma) zupełnie inny zakres wartości
wyrażony w takich jednostkach. Dlatego też granice zakresu wyraża się jako procentową
część zakresu wartości każdej zmiennej wyrażonego w jednostkach inżynierskich. W ten
sposób, niezależnie od wielkości całego zakresu dla każdej zmiennej, na trendzie
historycznym wyświetlana będzie tylko zadana procentowo część zakresu wartości danej
zmiennej.
Typ danych
Real (odczyt/zapis)
Zakres wartości
Pola .MaxRange i .MinRange mogą przyjmować wartości z przedziału od 0 do 100.
Wartości pól .MinRange i .MaxRange wyrażane są w procentach. Wartość .MinRange
musi być mniejsza od .MaxRange. Jeżeli do jednego z tych pól zostanie przypisana
wartość mniejsza od 0 lub większa od 100, zostanie ona automatycznie zmieniona
odpowiednio na 0 lub 100. Jeżeli wartość podana w polu .MinRange będzie większa lub
równa wartości podanej w polu .MaxRange, na trendzie nie będą wyświetlane żadne dane.
Przykład
Zamieszczone poniżej, przykładowe wyrażenie, zmienia maksymalny, procentowy zakresu
trendu historycznego związanego ze zmienną o nazwie "MyHistTrend" na wartość równą
25%.
MyHistTrendTag.MaxRange=25;
Patrz również
.ChartStart, .ChartLength, .DisplayMode, .MinEU, .MaxEU
Pola
2-23
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.MaxRaw
zmienna
Pole to zawiera górną wartość graniczną dla rzeczywistej wartości źródłowej odczytywanej
z programu komunikacyjnego przez program WindowViewer, pracujący jako klient.
Wartość pola .MaxRaw określana jest na podstawie definicji maksymalnej wartości
źródłowej zmiennej, podanej na Liście zmiennych. Każda zmienna o większej wartości
zostaje zmniejszona do wartości tego pola.
Sposób użycia
Tagname.MaxRaw
Parametry
Opis
Zmienna
Dowolna zmienna typu I/O Discrete, Indirect Discrete, I/O Integer,
Memory Real, Indirect Analog, I/O Message lub Indirect Message.
Uwagi
Pole to przeznaczone wyłącznie do odczytu wykorzystywane jest do wyświetlania górnej
wartości granicznej dla zmiennej źródłowej.
Typ danych
Dowolna zmienna typu Integer lub Real (przeznaczona wyłącznie do odczytu).
Zakres wartości
Dowolna zmienna analogowa.
Przykład
Zamieszczone poniżej wyrażenie umożliwia sprawdzenie czy zmienna nie wyszła poza
zakres normalnych wartości, a więc czy jej wartość nie została obcięta.
IF ((Temp01.RawValue > Temp01.MaxRaw) OR (Temp01.RawValue <
Temp01.MinRaw))THEN
Show "Instrument Failure Window";
ENDIF;
Patrz również
.MinRaw, .RawValue, .MinEU, .MaxEU
2-24
Rozdział 2
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.MinEU
zmienna
Pole to zawiera minimalną wartość danej zmiennej wyrażoną w jednostkach inżynierskich
(EU).
Sposób użycia
Tagname.MinEU
Parametry
Opis
Tagname
Dowolna zmienna typu, Integer , Real, lub Indirect Analog.
Uwagi
Wartość odczytana z programu komunikacyjnego uważana jest za ŹRÓDŁOWĄ (RAW),
jeżeli została ona przysłana do programu WindowViewer po raz pierwszy. Wartości
źródłowe mogą wymagać skalowania. Do skalowania wartości źródłowych przeznaczone
są pola .MinEu i .MaxEu. Rozważmy typowy przykład - załóżmy, że wskaźnik poziomu
cieczy dostarcza informacje do sterownika PLC. Czujnik dołączony do sterownika
przesyła sygnał o wartości od 4 do 20 mA. Sterownik PLC przekształca ten sygnał (za
pomocą przetwornika analogowo-cyfrowego) na wartość całkowitą z zakresu od 0 do 4096.
Wartość ta jest zapisywana jako zmienna o nazwie PoziomZbiornika2.
Wyświetlenie wartości "źródłowej " (z zakresu od 0 do 4096) nie dostarcza żadnej
użytecznej informacji operatorowi. Konieczne jest zatem przekształcenie tej wartości na
jednostki inżynierskie. W tym celu należy prawidłowo skonfigurować pola MaxEU i
MinEU, określające granice zakresu jednostek inżynierskich. W rozważanym przykładzie,
wartość RAW równa 0 (z pola odczytano 4 mA) zostanie przekształcona na "0 Galonów", a
wartość 4096 (z pola odczytano 20 mA) zostanie przekształcona na "100 Galonów". W
celu wyświetlenia tych poprawnych wartości na ekranie należy wprowadzić następujące
instrukcje:
Minimum Raw=0,Maximum Raw = 4096
Minimum Engineering Units=0,Maximum Engineering Units=100
Po wprowadzeniu tych instrukcji, jeżeli wartość RAW pola będzie równa 4096, na ekranie
wyświetlona zostanie liczba 100.
Typ danych
Real (tylko odczyt)
Zakres wartości
Zależy od typu rozważanej zmiennej.
Przykład
AbsoluteTagRange = (Tag.MaxEU - Tag.MinEU);
Patrz również
.MaxEU, .MinRaw, .MaxRaw, .RawValue
Pola
2-25
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.MinorDevPct
alarmy
Sposób użycia
Tagname.MinorDevPct
Parametry
Opis
Tagname
Dowolna zmienna typu, Integer , Real, lub Indirect Analog.
Uwagi
Zaznaczenie opcji Retentive Parameters na Liście zmiennych powoduje automatyczne
zapisywanie zmian wartości tego pola przez połączenia animacyjne lub skrypty programu
WindowViewer.
Typ danych
Integer (odczyt/zapis)
Zakres wartości
Od 0 do 100%
Przykład
Przykładowe wyrażenie zamieszczone poniżej zmienia wartość pola .MinorDevPct
zmiennej o nazwie MyTag na 25%.
MyTag.MinorDevPct=25;
Patrz również
.MinorDevStatus
2-26
Rozdział 2
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.MinorDevStatus
alarmy
Pole to określa, czy w systemie występuje alarm małego odchylenia wartości.
Sposób użycia
Tagname.MinorDevStatus
Parametry
Opis
Tagname
Dowolna zmienna typu, Integer , Real, lub Indirect Analog.
Uwagi
Wartość tego pola przeznaczonego wyłącznie do odczytu jest zwykle równa 0. W
przypadku wystąpienia alarmu odchyleniowego dla zmiennej, z którą pole to jest
skojarzone, wartość pola zostaje zmieniona przez system na 1. Pole to ma wartość równą
1 do czasu, gdy zniknie przyczyna alarmu.
Typ danych
Discrete (tylko odczyt)
Zakres wartości
0 = Stan alarmowy nie występuje
1 = Stan alarmowy występuje
Przykład
Przykładowa instrukcja warunkowa IF-THEN zamieszczona poniżej zostanie wykonana
tylko wtedy, gdy wartość pola .MinorDevStatus ("Alarm małego odchylenia wartości)
zmiennej o nazwie MyTag jest równa 1. Inaczej ujmując, jeżeli dla zmiennej MyTag
uruchomiony zostanie alarm małego odchylenia wartości, wykonane zostaną wyrażenia
zamieszczone w instrukcji IF-THEN.
IF (MyTag.MinorDevStatus == 1) THEN
OperatorMessage="MyTag has gone into a Minor Deviation Alarm";
ENDIF;
Uwagi
Pole to jest często używane w połączeniu z polami .Alarm oraz .Ack, w celu określenia
dokładnej przyczyny generowania alarmu dla danej zmiennej.
Patrz również
.MinorDevPct
Pola
2-27
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.MinRange
dane historyczne
Pole to podaje w procentach dolną granicę zakresu wartości zmiennej, która ma być
wyświetlona w oknie trendu historycznego.
Sposób użycia
Tagname.MinRange
Parametry
Opis
Tagname
Dowolna zmienna typu Hist Trend.
Uwagi
Ponieważ wiele różnych zmiennych może być wyświetlanych na wykresach trendów
historycznych jednocześnie, podawanie dolnej i górnej granicy zakresu wyświetlanych
wartości (pola .MinRange oraz .MaxRange) w jednostkach inżynierskich staje się
niemożliwe, gdyż każda zmienna może mieć (i zwykle ma) zupełnie inny zakres wartości
wyrażony w takich jednostkach. Dlatego też granice zakresu wyraża się jako procentową
część zakresu wartości każdej zmiennej, wyrażonego w jednostkach inżynierskich. W ten
sposób, niezależnie od wielkości całego zakresu dla każdej zmiennej, na trendzie
historycznym wyświetlana będzie tylko zadana procentowo część zakresu wartości danej
zmiennej.
Typ danych
Real (odczyt/zapis)
Zakres wartości
Pola .MaxRange i .MinRange mogą przyjmować wartości z przedziału od 0 do 100.
Wartości pól .MinRange i .MaxRange wyrażane są w procentach. Wartość .MinRange
musi być mniejsza od .MaxRange. Jeżeli do jednego z tych pól zostanie przypisana
wartość mniejsza od 0 lub większa od 100, zostanie ona automatycznie zmieniona
odpowiednio na 0 lub 100. Jeżeli wartość podana w polu .MinRange będzie większa lub
równa wartości podanej w polu .MaxRange, na trendzie nie będą wyświetlane żadne dane.
Przykład
TotalChartHeight=MyHistTrendTag.MaxRange - MyHistTrendTag.MinRange;
Patrz również
.ChartStart, .ChartLength, .DisplayMode, .MinEU, .MaxEU, .MaxRange
2-28
Rozdział 2
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.MinRaw
zmienna
Minimalna wartość zmiennej źródłowej odczytywanej z programu komunikacyjnego przez
program WindowViewer pracujący jako klient. Wartość pola .MinRaw jest wprowadzana
na Liście zmiennych w polu Min Raw, w czasie definiowania zmiennej typu I/O. Każdej
zmienna o mniejszej wartości przypisywana będzie wartość tego pola.
Sposób użycia
Tagname.MinRaw
Parametry
Opis
Tagname
Dowolna zmienna typu I/O Discrete, Indirect Discrete, I/O Integer,
Memory Real, Indirect Analog, I/O Message lub Indirect Message.
Uwagi
Pole to, przeznaczone wyłącznie do odczytu, wykorzystywane do wyświetlania górnej
wartości granicznej zmiennej źródłowej.
Typ danych
Dowolna zmienna typu Integer lub Real (przeznaczona wyłącznie do odczytu).
Zakres wartości
Dowolna zmienna analogowa.
Przykład
Zamieszczone poniżej wyrażenie umożliwia sprawdzenie czy zmienna nie wyszła poza
zakres normalnych wartości, a więc czy jej wartość nie została obcięta.
IF ((Temp01.RawValue > Temp01.MaxRaw) OR (Temp01.RawValue <
Temp01.MinRaw))THEN
Show "Instrument Failure Window";
ENDIF;
Patrz również
.MaxRaw, .RawValue, .MinEU, .MaxEU
Pola
2-29
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.Name
zmienna
Pole to zawiera nazwę zmiennej w postaci łańcucha znaków.
Sposób użycia
Tagname.Name
Parametry
Opis
Tagname
Dowolny typ zmiennej.
Typ danych
Message (odczyt/zapis)
Zakres wartości
Wartość pola .Name może być zmieniana wyłącznie w przypadku zmiennych typu
pośredniego, a więc zmiennych typu Group Var i Tag ID. W czasie przypisywania
wartości do tego pola należy pamiętać o obowiązującej konwencji nazewnictwa, włączając
w to zakres dopuszczalnych znaków, oraz fakt, że pierwszym znakiem musi być litera
alfabetu.
Uwagi
Pole to przeznaczone jest wyłącznie do odczytu w przypadku następujących typów
zmiennych:
Hist Trend, dowolne typy pamięciowe , I/O Type
Pole to przeznaczone jest do odczytu/ zapisu w przypadku następujących typów
zmiennych:
Group Var, Tag ID, Indirect
Jeżeli dla danej zmiennej pole to przeznaczone jest wyłącznie do odczytu, może być
wykorzystane do podawania nazwy zmiennej, bez korzystania ze znaków cudzysłowu np.
wyrażenie MojaZmienna.Name jest równoważne wyrażeniu "MojaZmienna". Mechanizm
ten jest szczególnie użyteczny w przypadku wybrania polecenia Update Use Count z menu
Special
programu WindowMaker, czy też w przypadku poszukiwania odnośników do
zmiennych, ponieważ obydwa te polecenia nie są w stanie odszukać zmiennej, jeżeli jej
nazwa ujęta jest w cudzysłów. Z tego powodu, jeżeli nazwa zmiennej ujęta zostanie w
cudzysłów, a następnie wybrane zostaną polecenia Update Use Counts i Special, Delete
Unused Tags
, zmienna zostanie usunięta, ponieważ nie znalezione zostaną miejsca jej
wykorzystywania. W celu "odwołania" uprzednio przypisanej wartości do zmiennej typu
pośredniego można wprowadzić "".
W przypadku zmiennych, dla których wartość tego pola może być zarówno odczytywana
jak i zmieniana, możliwości wykorzystania są jeszcze większe. Pole to pozwala na zamianę
zmiennych typu pośredniego. Jeżeli pole .Name zmiennej typu pośredniego zostanie
przypisane do nazwy innej zmiennej, oraz jeżeli obydwie zmienne są tego samego typu,
zmienna pośrednia w rzeczywistości staje się inną zmienną, i może być używana we
wszystkich miejscach programu InTouch, w których wykorzystywana była oryginalna
zmienna. Podobnie, można zmienić Grupę alarmów emulowaną przez zmienną typu Group
Var.
Przykład
Instrukcja zamieszczona poniżej wykorzystuje pole .Name przeznaczone wyłącznie do
odczytu i pole komentarza tej samej zmiennej w celu utworzenia komunikatu dla operatora:
MyMessageTag="The tag named " + MyTag.Name + " has a
comment of " + MyTag.Comment;
Zamieszczona poniżej instrukcja, korzystająca z pola .Name przeznaczonego do odczytu/
zapisu, zmienia Grupę alarmów wskazywaną przez zmienną typu Group Var o nazwie
"MyGroupVarTag":
MyGroupVarTag.Name="SomeAlarmGroup";
Opis zastosowania: Należy utworzyć okno graficzne do przedstawiania trzech parametrów
jednego ze 100 odwiertów naftowych. Zamieszczony poniżej skrypt związany ze zmianą
wartości pozwala na uaktualnianie informacji wyświetlanych w oknie graficznym,
stosownie do odwiertu naftowego wybranego przez operatora. W skrypcie związanym z
przyciskiem stosowana jest zmienna o nazwie OilWellNumber.
IndOilWellPump.Name = "OilWellPump" + Text(OilWellNumber, "#");
IndOilWellTEP.Name = "OilWellTemp" + Text(OilWellNumber, "#");
2-30
Rozdział 2
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
IndOilWellPressure.Name = "OilWellPressure" + Text(OilWellNumber,
"#");
W celu wykonania skryptu należy utworzyć przycisk z połączeniem dotykowym do
wprowadzania wartości analogowej ze zmienną OilWellNumber. Jeżeli w trakcie
wykonywania aplikacji operator kliknie ten przycisk a następnie wprowadzi numer
odwiertu, wykonany zostanie powyższy skrypt.
.Normal
alarmy
Wartość tego pola jest równa 1, jeżeli nie jest uruchomiony żaden alarm dla zmiennej.
Sposób użycia
Tagname.Normal
Parametry
Opis
Tagname
Dowolna zmienna typu Discrete, Integer, Real, Indirect Analog lub
Group Var.
Uwagi
Pole to używane jest w skryptach lub połączeniach animacyjnych do zasygnalizowania, że
dana zmienna znajduje się w stanie "normalnym", tzn. nie jest aktywny żaden alarm dla tej
zmiennej. Jeśli dla zmiennej tej aktywny jest jeden lub więcej alarmów, wartość tego pola
jest równa 0.
Typ danych
Discrete (tylko odczyt)
Zakres wartości
0 = Aktywny jest jeden lub więcej alarmów dla zmiennej.
1 = Brak aktywnych alarmów dla danej zmiennej (wartość domyślna).
Przykład
Wyrażenia zawarte w poniższej instrukcji IF-THEN będą wykonywane zawsze, ilekroć nie
będzie aktywnych alarmów dla zmiennej o nazwie "Tag1." Jeżeli dla zmiennej o nazwie
"Tag1" aktywny będzie jeden lub więcej alarmów, wykonywana będzie część "ELSE"
instrukcji:
IF (Tag1.Normal==1) THEN
MyOperatorMessage="Tag1 is OK - No alarms associated
with it";
ELSE
MyOperatorMessage="Tag1 has one or more alarms
active!";
ENDIF;
Patrz również
.Alarm
Pola
2-31
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.OffMsg
zmienna
Pole .OffMsg umożliwia użytkownikowi odwoływanie się do pola komentarza zmiennej
dyskretnej przy przechodzeniu w stan 0, wprowadzonego na Liście zmiennych.
Sposób użycia
Tagname.OffMsg
Parametry
Opis
Tagname
Dowolna zmienna typu Discrete.
Typ danych
Message (odczyt/zapis)
Zakres wartości
Dowolny łańcuch znaków zawierający od 0 do 15 znaków.
Przykład
Jeżeli zmienna MyDiscrete ma wartość 0, zamieszczony poniżej skrypt spowoduje
przypisanie łańcucha znaków zawartego w polu OffMsg na Liście zmiennych do zmiennej
StateMessage.
StateMessage=Dtext (MyDiscrete, MyDiscrete.OnMsg,
MyDiscrete.OffMsg);
Patrz również
.OnMsg
.OnMsg
zmienna
Pole .OnMsg umożliwia użytkownikowi odwoływać się do pola komentarza zmiennej
dyskretnej przy zmianie wartości na 1, wprowadzonego na Liście zmiennych.
Sposób użycia
Tagname.OnMsg
Parametry
Opis
Tagname
Dowolna zmienna typu Discrete.
Typ danych
Message (odczyt/zapis)
Zakres wartości
Dowolny łańcuch znaków zawierający od 0 do 15 znaków.
Przykład
IF IndAnalog.OnMsg == "Running" THEN
TypeOfTag = "IndAnalog was assigned a Motor Starter";
ENDIF;
Patrz również
.OffMsg
2-32
Rozdział 2
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.Pen1 - .Pen8
dane historyczne
Pola te określają przyporządkowanie zmiennych do poszczególnych pisaków na wykresie
trendów historycznych.
Sposób użycia
Tagname{.Pen1 | .Pen2 | .Pen3 | .Pen4 | .Pen5 | .Pen6 | .Pen7 |
.Pen8};
Parametry
Opis
Tagname
Dowolna zmienna typu Hist Trend.
Uwagi
Ze względu na skomplikowane zasady wykorzystania pola .PenX zaleca się, o ile to jest
możliwe, stosowanie funkcji HTSetPenName i HTGetPenName.
Uwaga
Do pola .PenX można przypisywać wyłącznie zmienne lokalne. Nie można
korzystać ze składni, w której określane jest źródło zmiennej. Składnia, w której podawane
jest źródło zmiennej, może być stosowana wyłącznie w przypadku funkcji
HTSetPenName
.
Dobrą metodą nauki korzystania z funkcji operujących na tych polach jest analiza
umieszczonego na ekranie, a następnie rozdzielonego na elementy składowe wizarda
trendów historycznych. Analiza taka umożliwia zrozumienie w jaki sposób pola te
powinny być wykorzystywane.
Typ danych
TagID (odczyt/zapis)
Zakres wartości
Typem danych obowiązującym w tym polu jest typ TagID. Oznacza to, że do tego pola
można przypisać "adres" zmiennej. Do pola tego nie można przypisać nazwy zmiennej.
Może być przypisane wyłącznie pole .TagID zmiennej. Pełne zrozumienie tego opisu
może wymagać skorzystania z informacji o polu .TagID. Ogólnie ujmując, zmienna typu
TagID może być porównywana wyłącznie z inną zmienną typu TagID. Nie można
korzystać z niej w połączeniu ze zmienną innego typu, chyba że do zmiennej innego typu
dodane zostanie pole .TagID.
Chociaż pole to przeznaczone jest do odczytu/ zapisu, jego wartość nie może być
bezpośrednio wyświetlona na ekranie.
Przykłady
Zamieszczone poniżej, przykładowe wyrażenie, przypisuje nową zmienną do pola Pen1
trendu historycznego związanego ze zmienną typu Hist Trend o nazwie "MyHistTrend".
Zamieszczona poniżej instrukcja skryptu Pen1 trendu historycznego powiązanego ze
zmienną "MyHistTrendTag" rozpocznie wyświetlanie danych archiwalnych
zarejestrowanych dla zmiennej o nazwie "MyLoggedTag." Należy zwrócić uwagę w jaki
sposób pole .TagID łączone jest z nazwą zmiennej "MyLoggedTag" w celu przypisania jej
do Pen1. Jest to konieczne, ponieważ pole "Pen1" jest typu "TagID" a operacja
przypisania wymaga zgodności typów (tzn. akceptowalne jest wyrażenie typu
ZmiennaDyskretna = ZmiennaDyskretna, natomiast błędne jest wyrażenie
ZmiennaDyskretna = ZmiennaTypuPamięciowego, pozbawione w rzeczywistości logiki!)
Do pola musi być przypisany obiekt typu TagID.
MyHistTrendTag.Pen1=MyLoggedTag.TagID;
Opierając się na powyższym przykładzie, rozważmy w jaki sposób można wyświetlić
NAZWĘ zmiennej przypisanej do "MyHistTrendTag.Pen1". Informacja taka byłaby
bardzo użyteczna dla operatora. Dodatkowo, wyświetlanie nazwy zmiennej rysowanej na
trendzie historycznym zwiększa funkcjonalność aplikacji. Pozornie, najłatwiejszym
sposobem wyświetlenia wartości wspomnianego pola MyHistTrendTag.Pen1 jest
skorzystanie z połączenia wyświetlającego, ale operacja taka (o czym można się przekonać
samodzielnie) nie daje przewidywanego wyniku. Powodem takiej sytuacji jest fakt, że
rzeczywista wartość pola .Pen1 jest typu całkowitego i zapisana jest w pewnym obszarze
pamięci programu WindowViewer, w formacie nie nadającym się do bezpośredniego
wyświetlania na ekranie. Rozwiązanie wymaga nieco więcej pracy. Najpierw należy
utworzyć nową zmienną typu TagID, na przykład o nazwie "Pen01." Poniżej instrukcji z
poprzedniego przykładu należy umieścić następującą instrukcję:
Pen01=MyHistTrendTag.Pen1;
Pola
2-33
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
W pierwszym przykładzie, zmienna "MyLoggedTag" została przypisana do pola Pen1
zmiennej "MyHistTrendTag." W niniejszym przykładzie, zrealizowana została bardziej
zaawansowana operacja, polegająca na przypisaniu wartości Pen1 zmiennej
"MyHistTrendTag", obecnie równej TagID zmiennej "MyLoggedTag" do zmiennej Pen01.
Powodem takiego działania jest potrzeba dotarcia do pola "Name". Nie można w prosty
sposób wyświetlić na ekranie "MyHistTrendTag.Name", ponieważ pokazywany będzie
zawsze tekst "MyHistTrendTag." Próba wyświetlenia na ekranie "MyHistTrendTag.Pen1"
zakończy się niepowodzeniem ponieważ edytor połączeń nie zezwoli na wyświetlenie Pen1
typu TagID. Jeżeli podjęta zostanie próba wyświetlenia na ekranie wartość pola
MyHistTrendTag.Pen1, edytor połączeń animacyjnych nie pozwoli na to, ponieważ dane w
polu Pen1 są typu TagID i nie mogą być wyświetlane. Przypisując wartość
"MyHistTrendTag.Pen1" do zmiennej typu TagID o nazwie "Pen01", w rzeczywistości do
zmiennej "Pen01" przypisana została zmienna "MyLoggedTag." Przedstawione powyżej
zadanie można również zrealizować za pomocą pojedynczej instrukcji przedstawionej
poniżej. Obydwa rozwiązania są funkcjonalnie identyczne.
Pen01=MyLoggedTag.TagID;
Preferowane jest pierwsze z przedstawionych rozwiązań. Jest ono bardziej naturalne.
Dodatkowo, można po prostu umieścić "MyHistTrendTag.Pen1" jako "zmienną" w
skrypcie zmiany wartości w miejscu: Pen01 = MyHistTrendTag.Pen1; Dzięki temu, nie
wiedząc jak zmienna została przypisana do Pen1, można ją przypisać do zmiennej Pen01.
Pozwala to na ustawiczne wyświetlanie na ekranie NAZWY zmiennej przypisanej do pola
Pen1 trendu historycznego, nawet jeżeli zmienna zostanie zmieniona przez użytkownika
lub też przez skrypt wykonywany przez system.
Analizując głębiej ten przykład, można zażądać wyświetlenia maksymalnej i minimalnej
wartości, wyrażonych w Jednostkach inżynierskich, dla rysowanej zmiennej. Z możliwości
tej korzysta wizard trendu historycznego. Zalecamy umieszczenie na ekranie wizarda
trendu historycznego, a następnie rozdzielenie go i analizę sposobu w jaki został on
zaprojektowany. Jest to dobry przykład sposobu korzystania z tych pól.
Ponieważ zmienne typu TagID, jak na przykład "Pen01", nie mają pól podających wartość
w jednostkach inżynierskich, jak również innych pól zwykle dostępnych w zmiennych, nie
można wykorzystać ich do wyświetlania wartości zmiennej w jednostkach inżynierskich.
Przykładowo, nie jest możliwe wyświetlenie "Pen01.MaxEu" ponieważ edytor połączeń
poinformuje, że nie można odwoływać się do pola .MaxEU w przypadku zmiennej Pen01,
typu TagID.
W celu rozwiązania tego problemu, wystarczy skorzystać ze zmiennej pomocniczej, której
zadaniem jest zapewnienie łączności pomiędzy typem TagID a systemem wyświetlania.
Najpierw należy utworzyć zmienną typu Indirect Analog, np. "IndirectAnalogPen1" W
takim samym skrypcie zmiany wartości jak np. w przykładzie nr 2, wprowadzić następującą
instrukcję:
IndirectAnalogPen1.Name=Pen01.Name;
Nazwa zmiennej Pen01 (w tym momencie równej "MyLoggedTag") jest przypisana do
zmiennej typu pośredniego "IndirectAnalogPen1." Jeżeli zrealizowane zostaną te
czynności, można odwoływać się do wszystkich pól zmiennych dostępnych dla zmiennych
analogowych, w naszym przypadku, dla zmiennej typu całkowitego o nazwie
MyLoggedTag. W tym momencie, w połączeniu wyświetlającym wartości analogowe
można wprowadzić:
IndirectAnalogPen1.MaxEU
Spowoduje to wyświetlenie maksymalnej wartości wyrażonej w jednostkach inżynierskich
dla zmiennej przypisanej w danej chwili do zmiennej "IndirectAnalogPen1." Ponieważ
zostało do niej przypisane w skrypcie zmiany wartości zamieszczonym powyżej pole
Pen01.Name, można z całą pewnością stwierdzić, że maksymalna wartość wyrażona w
jednostkach inżynierskich zmiennej jest w tym momencie przypisana do pola Pen1
zmiennej "MyHistTrendTag."
Patrz również
.TagID, HTGetPenName( ), HTSetPenName( )
2-34
Rozdział 2
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.Quality
zmienna
W celu pełnego zrozumienia właściwości pola .Quality wykorzystywanego w pakiecie
Wonderware, poniżej podano krótką definicję normy jakości. Norma jakości Wonderware
oparta jest na standardzie OLE for Process Control, który z kolei bazuje na normie
Fieldbus Data Quality Specifications.
Flaga jakości reprezentuje jakość wartości danych. Takie rozwiązanie umożliwia zarówno
aplikacjom serwera jak i klienta wyznaczenie żądanego zakresu funkcjonalności do
implementowania.
8 mniej znaczących bitów Flagi Jakości składa się obecnie z trzech pól bitowych: Quality,
Substatus i Limit, o następującym układzie:
QQSSSSLL
Pole Quality pozwala użytkownikowi korzystać z jakości zmiennej typu I/O, w postaci
dostarczonej przez program komunikacyjny.
Uwaga
W przypadku zakłóceń pracy programu komunikacyjnego, pola związane z
jakością zmiennej są automatycznie ustawiane na wartość początkową 0. Równocześnie
wartość 0 przypisywana jest do flagi .ReferenceComplete.
Sposób użycia
Tagname.Quality
Parametry
Opis
Tagname
Dowolna zmienna typu Discrete, Integer, Analog lub Message.
Typ danych
Message (odczyt/zapis)
Zakres wartości
Wartość może należeć do przedziału od 0 do 255.
Przykład
IF I0Tag.Quality <> 192 THEN
LogMessage("This data is not Good!");
ENDIF;
Program komunikacyjny Wonderware może sygnalizować sześć (6) wzajemnie
wykluczających się statusów jakości danych przesyłanych do klientów. Statusy te są
następujące:
OPC QualityBytes
OPC Quality Bits
.QualityStatus
MSByte
LSByte
.QualitySubstatus
War. heks.
XXXXXXXX
QQSSSSLL .QualiyLimit
1. Dobra
0x00C0
00000000
00000000
Q=3
S=0
L=0
2. Obcięta od góry
0x0056
00000000
00000000
Q=1
S=5
L=2
3. Obcięta od dołu
0x0055
00000000
00000000
Q=1
S=5
L=1
4. Brak możliwości
konwersji
0x0040
00000000
00000000
Q=1
S=0
L=0
5. Brak dostępu
0x0004
00000000
00000000
Q=0
S=1
L=0
6. Przerwana
komunikacja
0x0018
00000000
00000000
Q=0
S=6
L=0
Jeżeli aplikacja klienta nie może nawiązać łączności z programem komunikacyjnym, wartość
QualityStatus jest równa 0.
0x0000
00000000
00000000
Q=0
S=0
L=0
Poszczególne statusy jakości sygnalizowane są po spełnieniu następujących warunków:
1. Dobra
•
Połączenie komunikacyjne zostało zweryfikowane.
•
Żądanie dostarczenia danych zostało pomyślnie odebrane przez sterownik PLC, który w
odpowiedzi wysłał poprawny, zwrotny pakiet danych.
•
W trakcie operacji zapisu, o ile taka była realizowana, nie wystąpił błąd.
•
Nie wystąpiły żadne zakłócenia w czasie kownersji danych zawartych w zwrotnym pakiecie
danych.
Przykład
Wrócona została wartość 0x0000A z rejestru zawierającego 10 (w postaci
heksadecymalnej).
Pola
2-35
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
2. Obcięcie od góry
•
Połączenie komunikacyjne zostało zweryfikowane.
•
Żądanie dostarczenia danych zostało pomyślnie odebrane przez sterownik PLC, który w
odpowiedzi wysłał poprawny, zwrotny pakiet danych.
•
Operacja zapisu lub odczytu rejestru została pomyślnie zrealizowana.
•
Konieczne było zmniejszenie wartości, ponieważ przekroczono maksymalną, górną wartość
graniczną.
•
W przypadku łańcucha zanków oznacza to usunięcie części znaków.
Przykład
16 bitowa liczba całkowita jest zmniejszana do wartości 65535.
3. Obcięcie od dołu
•
Połączenie komunikacyjne zostało zweryfikowane.
•
Żądanie dostarczenia danych zostało odebrane pomyślnie przez sterownik PLC, który w
odpowiedzi wysłał poprawny pakiet informacji.
•
Operacja zapisu lub odczytu rejestru została pomyślnie zrealizowana.
•
Konieczne było zwiększenie wartości, ponieważ przekroczono minimalną, dolną wartość
graniczną.
Przykład
16 bitowa liczba całkowita jest zmniejszana do wartości 0.
4. Brak możliwości konwersji
•
Połączenie komunikacyjne zostało zweryfikowane.
•
Żądanie dostarczenia danych zostało odebrane pomyślnie przez sterownik PLC, który w
odpowiedzi wysłał poprawny pakiet informacji.
•
Dostarczone przez sterownik PLC dane nie mogą zostać przekonwertowane na żądany
format.
•
Przyczynami zakłóceń w konwersji mogą być przykładowo:
•
Wysłanie przez program komunikacyjny stałej zamiast danych, lub wysłanie wyłącznie
informacji o jakości.
•
Nieprzydatność danych.
•
Brak informacji czy wartość jest zbyt duża, czy też zbyt mała.
•
Dostarczenie przez sterownik PLC niewłaściwego typu danych.
•
Nadesłanie liczby zmiennoprzecinkowej, ale nie wartości (przykładowo: niewłaściwy
format liczby).
Przykład
Nadesłanie wartości 0x000A z rejestru BCD przetwornika PLC.
5. Brak dostępu
•
Połączenie komunikacyjne zostało zweryfikowane.
•
Żądanie dostarczenia danych zostało odebrane pomyślnie przez sterownik PLC, który w
odpowiedzi wysłał poprawny pakiet informacji.
•
Ze sterownika PLC został wysłany komunikat, o braku dostępu do żądanej wartości.
•
Przyczynami braku dostępu mogą być przykładowo:
•
Brak elementu w pamięci sterownika PLC.
•
Zablokowanie w danym momencie dostępu do elementu (na przykład przez
mechanizm wspólnego korzystania z zasobów).
•
Niewłaściwy format/ typ danych.
•
Podjęcie próby zapisu do elementu przeznaczonego wyłącznie do odczytu.
•
W większości przypadków, wystąpienie zakłóceń w stosunku do jednego elementu ma
wpływ na całą grupę elementów - jest to powodowane przez schemat odczytu
blokowego stosowany przez program komunikacyjny. Przykładowo, jeżeli jeden z
elementów w bloku złożonym z 10 elementów będzie niepoprawny, cały blok zostanie
zaznaczony przez sterownik PLC jako niepoprawny. Zasygnalizowanie przez program
komunikacyjny niewłaściwej liczby elementów w bloku.
•
Nieużyteczność danych.
Przykład
Próba odczytu R40001, jeżeli R40001 nie jest zdefiniowane w mapie pamięci PLC.
2-36
Rozdział 2
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
6. Przerwana komunikacja
•
Dowolna kombinacja następujących przyczyn:
•
Przerwanie transmisji danych.
•
Temat w trybie wolnej wymiany danych (lub w równoważnym trybie).
•
Brak połączenia do sprawdzenia poprawności komunikatów.
•
Brak zasobów w programie komunikacyjnym. Przykładowo, brak możliwości
alokowania pamięci przez program TSR (lub sterownik).
•
Brak zasobów w połączeniu komunikacyjnym.
•
Wyłączenie połączenia komunikacyjnego.
•
Wszystkie kanały komunikacyjne zajęte.
•
Brak możliwość wysłania poprzez sieć komunikatu do sterownika PLC.
Przykład
Próba odczytu danych z wyłączonego sterownika PLC.
Patrz również
.QualityLimit, .QualityStatus, .QualitySubstatus
.QualityLimit
zmienna
Liczba całkowita wykorzystywana do wyświetlania wartości granicznych jakości zmiennej
typu I/O, dostarczanej przez program komunikacyjny przy poprawnie funkcjonującym
połączeniu.
Sposób użycia
Tagname.QualityLimit
Parametry
Opis
Tagname
Dowolna zmienna typu Discrete, Integer, Analog lub Message.
Typ danych
Integer (tylko odczyt)
Zakres wartości
(LLL)
0
Bez ograniczenia
1
Ograniczenie od dołu
2
Ograniczenie od góry
3
Stała
Patrz również
.Quality
.QualityLimitString
zmienna
Pole wykorzystywane do wyświetlania tekstowej wartości granicznej jakości zmiennej I/O,
dostarczanej przez program komunikacyjny przy poprawnie funkcjonującym połączeniu.
Sposób użycia
Tagname.QualityLimitString
Parametry
Opis
Tagname
Dowolna zmienna typu Discrete, Integer, Analog lub Message.
Typ danych
Message (tylko odczyt)
Patrz również
.QualityLimit, .Quality
Pola
2-37
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.QualityStatus
zmienna
Liczba całkowita wykorzystywana do wyświetlania statusu jakości zmiennej I/O,
dostarczanej przez program komunikacyjny przy poprawnie funkcjonującym połączeniu.
Sposób użycia
Tagname.QualityStatus
Parametry
Opis
Tagname
Dowolna zmienna typu Discrete, Integer, Analog lub Message.
Uwagi
Wartość pola bitowego podstatusu (SSSS) zależy od wartości pola jakości (QQSSSSLL).
Typ danych
Integer (tylko odczyt)
Zakres wartości
(SSSS)
0
Zły
1
Niepewny
3
Dobry
Patrz również
.QualitySubStatus, .Quality
.QualityStatusString
zmienna
Liczba całkowita wykorzystywana do wyświetlania statusu jakości w postaci tekstowej, dla
zmiennej I/O, dostarczanej przez program komunikacyjny przy poprawnie funkcjonującym
połączeniu.
Sposób użycia
Tagname.QualityStatusString
Parametry
Opis
Tagname
Dowolna zmienna typu Discrete, Integer, Analog lub Message.
Typ danych
Message (tylko odczyt)
Patrz również
.QualityStatus, .QualitySubStatus, .Quality
2-38
Rozdział 2
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.QualitySubstatus
zmienna
Liczba całkowita wykorzystywana do wyświetlania podstatusu jakości zmiennej I/O,
dostarczanej przez program komunikacyjny przy poprawnie funkcjonującym połączeniu.
Sposób użycia
Tagname.QualitySubstatus
Parametry
Opis
Tagname
Dowolna zmienna typu Discrete, Integer, Analog lub Message.
Typ danych
Integer (tylko odczyt)
Zakres wartości
(SSSS) i (QQ)
Podstatus (SSSS) w przypadku gdy jakość jest ZŁA (QQ=0):
0
Nie określona
1
Błąd w konfiguracji
2
Nie podłączona
3
Uszkodzenie sprzętowe
4
Uszkodzenie czujnika
5
Ostatnio odebrana wartość
6
Uszkodzenie Com
7
Wyłączenie
Podstatus (SSSS) w przypadku gdy jakość jest NIEPEWNA (QQ=1):
0
Nie określona
1
Ostatnio odebrana
wartość
4
Czujnik nie
dokładny
5
Przekroczenie
Jednostek
inżynierskich
6
Sub-normalna
Podstatus (SSSS) w przypadku gdy jakość jest Dobra (QQ=2):
0
Nie określona
6
Lokalne
przepisanie
Patrz również
.QualityStatus, .Quality
.QualitySubstatusString
zmienna
Pole wykorzystywane do wyświetlania podstatusu jakości zmiennej I/O, dostarczanej przez
program komunikacyjny przy poprawnie funkcjonującym połączeniu.
Sposób użycia
Tagname.QualitySubstatusString
Parametry
Opis
Tagname
Dowolna zmienna typu Discrete, Integer, Analog lub Message.
Typ danych
Message (tylko odczyt)
Patrz również
.QualityStatus, .QualitySubstatus, .Quality
Pola
2-39
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.RawValue
zmienna
Rzeczywista wartość odczytana z programu komunikacyjnego przez program
WindowViewer pracujący jako klient. Pole wartości źródłowej pozwala użytkownikowi na
odczytanie wartości zmiennej typu I/O przed wyskalowaniem jej przez program InTouch.
Sposób użycia
Tagname.RawValue
Parametry
Opis
Tagname
Dowolna zmienna typu I/O Discrete, Indirect Discrete, I/O Integer,
Memory Real, Indirect Analog, I/O Message lub Indirect Message.
Uwagi
Pole przeznaczone wyłącznie do odczytu, wykorzystywane do wyświetlania aktualnej
wartości zmiennej dyskretnej lub analogowej typu I/O, przed jej skalowaniem w programie
InTouch.
Typ danych
Integer (tylko odczyt)
Zakres wartości
Wszędzie tam gdzie mogą być stosowane wartości dyskretne lub analogowe.
Przykład
Zamieszczone poniżej wyrażenie umożliwia sprawdzenie czy zmienna nie wyszła poza
zakres normalnych wartości.
IF ((IOtag.RawValue > IOtag.MaxRaw) OR (IOTag.RawValue <
IOTag.MinRaw))THEN
AlarmMessage = "Sensor is out of calibration or requires
replacement.";
ENDIF;
Patrz również
.MinRaw, .MaxRaw, .MinEU, .MaxEU
2-40
Rozdział 2
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.Reference
zmienna
Pole to pozwala operatorowi na dynamiczną zmianę nazwy dostępu (Access Name) i/lub
nazwy elementu (Item) w czasie pracy aplikacji.
Sposób użycia
Tagname.Reference
Parametry
Opis
Tagname
Dowolna zmienna typu I/O Discrete, Indirect Discrete, I/O Integer,
I/O Real, Indirect Analog, I/O Message lub Indirect Message.
Uwagi
Pole to zapewnia łatwą metodę dynamicznej zmiany nazwy dostępu i/lub nazwy elementu.
Typ danych
Message (odczyt/zapis)
Zakres wartości
Dowolny łańcuch znaków zawierający nazwę dostępu i/lub nazwę elementu.
Przykład
Instrukcja zamieszczona poniżej przypisuje do pola z nazwą elementu zmiennej I/O nazwę
elementu wygenerowaną przez funkcję tekstową w zależności od wartości zmiennej
pamięciowej typu całkowitego. Instrukcja ta zastosowana zostanie w skrypcie
warunkowym, do wykonywania operacji na sekwencji zmiennych, z wykorzystaniem do
tego celu pola .ReferenceComplete.
MyTag.Reference="R" + Text( MyIndex, “#” );
{ Jeżeli MyIndex=40001, Nazwa elementu będzie równa:
R40001 }
.ReferenceComplete
zmienna
Wraca potwierdzenie w przypadku zmiany pola .Reference zmiennej, odbiera żądany
element, a uaktualniona wartość jest zapisywana do pola .Value zmiennej.
Sposób użycia
Tagname.ReferenceComplete;
Parametry
Opis
Tagname
Dowolna zmienna typu I/O Discrete, Indirect Discrete, I/O Integer,
I/O Real, Indirect Analog, I/O Message lub Indirect Message.
Uwagi
Pole to jest bardzo użyteczne w połączeniu z polem .Reference. Pole
.ReferenceComplete
wskazuje, że nastąpiła modyfikacja nazwy elementu lub nazwy
dostępu, i co ważniejsze, że nowe wartości zostały uzyskane z nowego źródła danych.
Nawet jeżeli nowe źródło danych jest identyczne z poprzednio wykorzystywanym źródłem
danych, w momencie pierwszego uaktualnienia wartości przez nowe źródło danych, pole to
ustawiane jest na 1.
W czasie procesu uaktualniania, od momentu zmodyfikowania pola .Reference do
momentu pierwszego uaktualnienia wartości przez nowe źródło danych, system ustawia
wartość tego pola na 0.
Typ danych
I/O Discrete (tylko odczyt)
Pola
2-41
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.ROCPct
alarmy
Pole to służy do monitorowania i/lub zmiany maksymalnej, dopuszczalnej zmiany wartości
zmiennej w jednostce czasu.
Sposób użycia
Tagname.ROCPct
Parametry
Opis
Tagname
Dowolna zmienna typu, Integer , Real lub Indirect Analog.
Uwagi
Pole to zawiera wartość wyrażoną w procentach. Jego wartość jest równa wartości
odpowiedniego parametru, wprowadzonego w czasie definiowania zmiennej na Liście
zmiennych. Użytkownik może wyświetlić wartość tego pola lub wykorzystać ją w
skrypcie. Ponadto wartość ta może zostać zmieniona w czasie pracy aplikacji.
Typ danych
Integer (odczyt/zapis)
Zakres wartości
Od 0 do 100%
Przykład
Wyrażenie zamieszczone poniżej ustawia wartość tego pola dla zmiennej MyTag na 25%.
MyTag.ROCPct=25;
Patrz również
.ROCStatus
2-42
Rozdział 2
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.ROCStatus
alarmy
Pole to określa, czy w systemie występuje alarm związany z szybkością zmian wartości
danej zmiennej (Rate of Change).
Sposób użycia
Tagname.ROCStatus
Parametry
Opis
Tagname
Dowolna zmienna typu, Integer , Real lub Indirect Analog.
Uwagi
Wartość tego pola przeznaczonego wyłącznie do odczytu jest zwykle równa 0. W
przypadku aktywowania dla zmiennej alarmu przekroczenia dopuszczalnej prędkości
zmiany wartości, pole to ustawiane jest przez system na 1. Pole to ma wartość równą 1 do
czasu, gdy zniknie przyczyna alarmu.
Typ danych
Discrete (tylko odczyt)
Zakres wartości
0 = Stan alarmowy nie występuje
1 = Stan alarmowy występuje
Przykład
Wyrażenia zawarte w zamieszczonej poniżej instrukcji IF-THEN wykonywane są
wyłącznie wtedy, gdy pole .ROCStatus ("Alarm dopuszczalnej prędkości zmian wartości")
jest równe 1. Inaczej ujmując, jeżeli dla zmiennej MyTag aktywowany zostanie alarm
przekroczenia dopuszczalnej prędkości zmian wartości, wykonane zostaną wyrażenia
zamieszczone w tej instrukcji warunkowej.
IF (MyTag.ROCStatus == 1) THEN
OperatorMessage="MyTag has gone into a Rate-Of-Change-
Alarm";
ENDIF;
Uwagi
Pole to jest często używane w połączeniu z polami .Alarm oraz .Ack, w celu określenia
dokładnej przyczyny alarmu związanego z daną zmienną.
Patrz również
.ROCPct
Pola
2-43
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.ScooterLockLeft
dane historyczne
Pole to uniemożliwia przesunięcie prawego suwaka na wykresie trendu historycznego poza
aktualne położenie lewego suwaka .
Sposób użycia
Tagname.ScooterLockLeft
Parametry
Opis
Tagname
Dowolna zmienna typu Hist Trend.
Uwagi
Ogólnie ujmując, zalecane jest aby użytkownik nie miał możliwości przesunięcie prawego
suwaka w lewo, poza pozycję zajmowaną przez lewy suwak. Jeżeli lewy suwak nie jest
zablokowany, w momencie gdy prawy suwak zostanie przesunięty w lewo poza pozycję
zajmowaną przez lewy suwak, ich pozycje będą równe.
Typ danych
Discrete (odczyt/zapis)
Zakres wartości
0 = FALSE = prawy suwak może zostać przesunięty poza pozycję zajmowaną przez lewy
suwak.
1 = FALSE = prawy suwak nie może zostać przesunięty poza pozycję zajmowaną przez
lewy suwak.
Przykład
Po wykonaniu zamieszczonej poniżej instrukcji, prawy suwak związany ze zmienną typu
HistTrendTag o nazwie "MyHistTrendTag" nie będzie mógł być przesunięty za pozycję
zajmowaną przez lewy suwak.
MyHistTrendTag.ScooterLockLeft=1;
Patrz również
.ScooterPosRight, .ScooterPosLeft, .ScooterLockRight
2-44
Rozdział 2
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.ScooterLockRight
dane historyczne
Pole to uniemożliwia przesunięcie lewego suwaka na wykresie trendu historycznego poza
aktualne położenie prawego suwaka .
Sposób użycia
Tagname.ScooterLockRight
Parametry
Opis
Tagname
Dowolna zmienna typu Hist Trend.
Uwagi
Ogólnie ujmując, zalecane jest aby użytkownik nie miał możliwości przesunięcia lewego
suwaka w prawo, poza pozycję zajmowaną przez prawy suwak. Jeżeli prawy suwak nie jest
zablokowany, w momencie gdy lewy suwak zostanie przesunięty w prawo poza pozycję
zajmowaną przez prawy suwak, ich pozycje będą równe.
Typ danych
Discrete (odczyt/zapis)
Zakres wartości
0 = FALSE = lewy suwak może zostać przesunięty poza pozycję zajmowaną przez prawy
suwak.
1 = FALSE = lewy suwak nie może zostać przesunięty poza pozycję zajmowaną przez
prawy suwak.
Przykład
Po wykonaniu zamieszczonej poniżej instrukcji, lewy suwak związany ze zmienną typu
HistTrendTag o nazwie "MyHistTrendTag" nie będzie mógł być przesunięty za pozycję
zajmowaną przez prawy suwak.
MyHistTrendTag.ScooterLockRight=1;
Patrz również
.ScooterPosRight, .ScooterPosLeft, .ScooterLockLeft
Pola
2-45
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.ScooterPosLeft
dane historyczne
Pole to umożliwia odczyt i/lub zmianę położenia lewego suwaka na wykresie trendu
historycznego.
Sposób użycia
Tagname.ScooterPosLeft
Parametry
Opis
Tagname
Dowolna zmienna typu Hist Trend.
Uwagi
Pole to, przeznaczone do odczytu i zapisu, dynamicznie steruje położeniem lewego suwaka
na wykresie trendu historycznego. Użytkownik może użyć tego pola w skrypcie do
odczytania bieżącej pozycji lewego suwaka, albo też do przestawienia suwaka w inne
położenie na wykresie, poprzez wpisanie zadanej wartości do tego pola.
Pole to jest bardzo często wykorzystywane w połączeniu z funkcją HTGetValue(). W
przypadku korzystania z tego typu funkcji należy określić do którego trendu historycznego
mają być wysyłane zapytania, jak również należy podać bieżące pozycje suwaków. Patrz
przykład poniżej.
Typ danych
Real (odczyt/zapis)
Zakres wartości
Od 0.0 do 1.0; gdzie 0.0 odpowiada lewemu krańcowi wykresu trendu historycznego,
natomiast 1.0 odpowiada prawemu krańcowi tego wykresu.
Przykład
Podana poniżej instrukcja zmienia pozycję zajmowaną przez lewy suwak. Lewy suwak
zostanie przesunięty o 34% całkowitej długości wykresu związanego ze zmienną typu
HistTrendTag o nazwie "MyHistTrendTag", licząc od lewej strony
MyHistTrendTag.ScooterPosLeft=.34;
W zamieszczonym poniżej skrypcie, funkcja HtGetValueAtScooter() została
wykorzystana do odczytu wartości wskazywanej przez pisak Pen1 w miejscu, w którym
znajduje się lewy suwak. Ponieważ zmiana każdego z parametrów funkcji powoduje
ponowne wyznaczenie wartości funkcji, instrukcja ta wykonywana jest po każdej zmianie
pozycji lewego suwaka.
MyRealTag=HTGetValueAtScooter( MyHistTrendTag,
MyHistTrendTag.UpdateCount,1,
MyHistTrendTag.ScooterPosLeft,1,"PenValue");
Patrz również
.ScooterPosRight, .ScooterLockLeft, ScooterLockRight
2-46
Rozdział 2
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.ScooterPosRight
dane historyczne
Pole to umożliwia odczyt i/lub zmianę położenia prawego suwaka na wykresie trendu
historycznego.
Sposób użycia
Tagname.ScooterPosRight
Parametry
Opis
Tagname
Dowolna zmienna typu Hist Trend.
Uwagi
Pole to, przeznaczone do odczytu i zapisu, dynamicznie steruje położeniem prawego
suwaka na wykresie trendu historycznego. Użytkownik może użyć tego pola w skrypcie
do odczytania bieżącej pozycji prawego suwaka, albo też do przestawienia suwaka w inne
położenie na wykresie, poprzez wpisanie zadanej wartości do tego pola.
Pole to jest bardzo często wykorzystywane w połączeniu z funkcją HTGetValue().. W
przypadku korzystania z tego typu funkcji należy określić do którego trendu historycznego
mają być wysyłane zapytania, jak również należy podać bieżące pozycje suwaków. Patrz
przykład poniżej.
Typ danych
Real (odczyt/zapis)
Zakres wartości
Od 0.0 do 1.0; 0.0 odpowiada prawemu krańcowi wykresu trendu historycznego, natomiast
1.0 odpowiada lewemu krańcowi tego wykresu.
Przykłady
Podana poniżej instrukcja zmienia pozycję zajmowana przez prawy suwak. Prawy suwak
zostanie przesunięty o 34% całkowitej długości wykresu związanego ze zmienną typu
HistTrendTag o nazwie "MyHistTrendTag", licząc od prawej strony
MyHistTrendTag.ScooterPosRight=.34;
W zamieszczonym poniżej skrypcie, funkcja HtGetValueAtScooter() została
wykorzystana do odczytu wartości wskazywanej przez pisak Pen1 w miejscu, w którym
znajduje się prawy suwak. Ponieważ zmiana każdego z parametrów funkcji powoduje
ponowne wyznaczenie wartości funkcji, instrukcja ta wykonywana jest po każdej zmianie
pozycji prawego suwaka.
MyRealTag=HTGetValueAtScooter( MyHistTrendTag,
MyHistTrendTag.UpdateCount,2,
MyHistTrendTag.ScooterPosRight,1,"PenValue");
Patrz również
.ScooterPosLeft, .ScooterLockLeft, ScooterLockRight
Pola
2-47
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.SPCStatus
SPC
Pole to określa, czy dla danej zmiennej aktywny jest alarm SPC.
Uwaga
Pole to może być wykorzystywane tylko wtedy, gdy zainstalowany jest moduł SPC
(statystycznej kontroli procesu).
Sposób użycia
Tagname.SPCStatus
Parametry
Opis
Tagname
Dowolna zmienna typu, Integer , Real lub Indirect Analog.
Typ danych
Discrete (tylko odczyt)
Zakres wartości
0 = Alarm SPC nie występuje
1 = Alarm SPC występuje
Uwagi
Wartość tego pola przeznaczonego wyłącznie do odczytu jest zwykle równa 0. W
momencie uruchomienia alarmu SPC, dla zmiennej, z którą pole to jest skojarzone, wartość
pola zostaje zmieniona przez system na 1. Pole to ma wartość równą 1 do czasu, gdy
zniknie przyczyna alarmu.
Przykład
Polecenia zawarte w zamieszczonej poniżej instrukcji IF-THEN będą wykonywane
wyłącznie wtedy, gdy pole .SPCStatus zmiennej o nazwie MyTag ma wartość równą 1.
Inaczej ujmując, jeżeli dla zmiennej MyTag uruchomiony zostanie alarm SPC, wykonane
zostaną polecenia zawarte w instrukcji IF-THEN:
IF (MyTag.SPCStatus == 1) THEN
OperatorMessage="MyTag has gone into an SPC-Alarm";
ENDIF;
.TagID
zmienna
Pole to używane jest w połączeniu ze polami .Pen1-.Pen8 zmiennych typu HistTrendTag
do sprawdzania i/lub zmiany zmiennych, których przebiegi rysowane są przez pisaki na
wykresie trendu historycznego.
Sposób użycia
Tagname.TagID
Parametry
Opis
Tagname
Dowolna zmienna typu Discrete, Indirect Discrete, oraz Indirect
Analog.
Uwagi
Pole .TagID zawiera adres zmiennej, i wykorzystywane jest głównie w kontekście
przypisywania zmiennych do pisaków trendu historycznego.
Typ danych
TagID (tylko odczyt)
Przykład
MyHistTrendTag.Pen6=SomeAnalogTag.TagID;
Patrz również
.Pen1-.Pen8
2-48
Rozdział 2
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.TimeDate
zmienna
Pole typu całkowitego, zawierające liczbę dni, które upłynęły od momentu dostarczenia
wartości typu I/O przez program komunikacyjny, przy poprawnie funkcjonującym
połączeniu typu I/O.
Sposób użycia
Tagname.TimeDate
Parametry
Opis
Tagname
Dowolna zmienna typu Discrete, Integer, Real, Indirect Analog lub
Message.
Typ danych
Integer (tylko odczyt)
.TimeDateString
zmienna
Zmienna tekstowa zawierająca datę w formacie określonym w pliku WIN.INI.
Sposób użycia
Tagname.TimeDateString
Parametry
Opis
Tagname
Dowolna zmienna typu Discrete, Integer, Real, Indirect Analog lub
Message.
Typ danych
Message (tylko odczyt)
.TimeDateTime
zmienna
Pole typu rzeczywistego, zawierające liczbę dni w postaci ułamka, które upłynęły od
momentu dostarczenia wartości typu I/O przez program komunikacyjny, przy poprawnie
funkcjonującym połączeniu typu I/O.
Sposób użycia
Tagname.TimeDateTime
Parametry
Opis
Tagname
Dowolna zmienna typu Discrete, Integer, Real, Indirect Analog lub
Message.
Typ danych
Message (tylko odczyt)
Pola
2-49
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.TimeDay
zmienna
Pole typu całkowitego, zawierające dzień, w którym wartość typu I/O została dostarczona
przez program komunikacyjny, przy poprawnie funkcjonującym połączeniu typu I/O.
Sposób użycia
Tagname.TimeDay
Parametry
Opis
Tagname
Dowolna zmienna typu Discrete, Integer, Real, Indirect Analog lub
Message.
Typ danych
Integer (tylko odczyt)
Zakres wartości
Z przedziału 1 - 31.
.TimeHour
zmienna
Pole typu całkowitego, zawierające liczbę godzin, które upłynęły od momentu dostarczenia
wartości typu I/O przez program komunikacyjny, przy poprawnie funkcjonującym
połączeniu I/O.
Sposób użycia
Tagname.TimeHour
Parametry
Opis
Tagname
Dowolna zmienna typu Discrete, Integer, Real, Indirect Analog lub
Message.
Typ danych
Integer (tylko odczyt)
Zakres wartości
Z przedziału 0 - 23.
.TimeMinute
zmienna
Pole typu całkowitego, zawierające minutę, w której wartość typu I/O została dostarczona
przez program komunikacyjny, przy poprawnie funkcjonującym połączeniu typu I/O.
Sposób użycia
Tagname.TimeMinute
Parametry
Opis
Tagname
Dowolna zmienna typu Discrete, Integer, Real, Indirect Analog lub
Message.
Typ danych
Integer (tylko odczyt)
Zakres wartości
Z przedziału 0 - 59.
2-50
Rozdział 2
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.TimeMonth
zmienna
Pole typu całkowitego, zawierające miesiąc, w którym wartość typu I/O została dostarczona
przez program komunikacyjny, przy poprawnie funkcjonującym połączeniu typu I/O.
Sposób użycia
Tagname.TimeMonth
Parametry
Opis
Tagname
Dowolna zmienna typu Discrete, Integer, Real, Indirect Analog lub
Message.
Typ danych
Integer (tylko odczyt)
Zakres wartości
Z przedziału 1 - 12.
.TimeMsec
zmienna
Pole typu całkowitego, zawierające liczbę milisekund, w momencie gdy wartość typu I/O
została dostarczona przez program komunikacyjny, przy poprawnie funkcjonującym
połączeniu typu I/O.
Sposób użycia
Tagname.TimeMsec
Parametry
Opis
Tagname
Dowolna zmienna typu Discrete, Integer, Real, Indirect Analog lub
Message.
Typ danych
Integer (tylko odczyt)
Zakres wartości
Z przedziału 0 - 999.
.TimeSecond
zmienna
Pole typu całkowitego, zawierające liczbę sekund, w momencie gdy wartość typu I/O
została dostarczona przez program komunikacyjny, przy poprawnie funkcjonującym
połączeniu typu I/O.
Sposób użycia
Tagname.TimeSecond
Parametry
Opis
Tagname
Dowolna zmienna typu Discrete, Integer, Real, Indirect Analog lub
Message.
Typ danych
Integer (tylko odczyt)
Zakres wartości
Z przedziału 0 - 59.
Pola
2-51
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.TimeTime
zmienna
Pole typu całkowitego, zawierające liczbę milisekund które upłynęły od północy do
momentu, gdy wartość typu I/O została dostarczona przez program komunikacyjny, przy
poprawnie funkcjonującym połączeniu typu I/O.
Sposób użycia
Tagname.TimeTime
Parametry
Opis
Tagname
Dowolna zmienna typu Discrete, Integer, Real, Indirect Analog lub
Message.
Typ danych
Integer (tylko odczyt)
Zakres wartości
Z przedziału 0 - 86399999.
.TimeTimeString
zmienna
Pole typu tekstowego zawierające godzinę i datę dostarczania przez program
komunikacyjny wartości zmiennej typu I/O, przy poprawnie funkcjonującym połączeniu
typu I/O.
Sposób użycia
Tagname.TimeTimeString
Parametry
Opis
Tagname
Dowolna zmienna typu Discrete, Integer, Real, Indirect Analog lub
Message.
Typ danych
Message (tylko odczyt)
.TimeYear
zmienna
Pole typu całkowitego, zawierające rok zapisany w postaci czterech cyfr, w którym wartość
zmiennej typu I/O została dostarczona przez program komunikacyjny, przy poprawnie
funkcjonującym połączeniu typu I/O.
Sposób użycia
Tagname.TimeTime
Parametry
Opis
Tagname
Dowolna zmienna typu Discrete, Integer, Real, Indirect Analog lub
Message.
Typ danych
Integer (tylko odczyt)
Zakres wartości
Dowolny rok w formacie ####. Przykładowo 1998.
2-52
Rozdział 2
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.UnAck
alarmy
Pole to umożliwia zmianę statusu niezatwierdzonych alarmów lokalnych.
Sposób użycia
Tagname.Unack=1
Parametry
Opis
Tagname
Dowolna zmienna typu Discrete, Integer, Real Indirect lub
GroupVar.
Uwagi
Przypisanie omawianemu polu zmiennej wartości 1 powoduje usunięcie zatwierdzenia
wszelkich aktywnych alarmów, powiązanych z daną zmienną/ grupą. Jeśli podana zmienna
jest zmienną typu Group Var lub Grupą alarmów, wszystkie nie zatwierdzone alarmy
związane ze zmiennymi wchodzącymi w skład tej grupy zostają zatwierdzone. W
przypadku gdy zmienna jest innego typu niż Group Var, zatwierdzenie alarmu dla tej
zmiennej jest anulowane. Przypisanie omawianemu polu wartości różnej od 1 nie ma
żadnego znaczenia, a wynik takiej operacji jest nieokreślony.
Typ danych
Discrete (odczyt/zapis)
Zakres wartości
1
Przykłady
Przykładowe polecenie, zamieszczone poniżej, powoduje usunięcie zatwierdzenia alarmu
związanego ze zmienną o nazwie Tag1.
Tag1.Unack=1;
Następne przykładowe polecenie służy do usunięcia zatwierdzenia wszelkich
zatwierdzonych alarmów w obrębie grupy alarmowej o nazwie PumpStation.
PumpStation.Unack = 1;
Instrukcja ta jest bardzo podobna do zamieszczonej powyżej, za wyjątkiem faktu, że służy
do usunięcia zatwierdzenia jakichkolwiek zatwierdzonych alarmów w grupie alarmów
związanych w danym momencie ze zmienną typu GroupVar o nazwie "StationAlarms."
Uwaga
. Polem o wartości przeciwnej do .UnAck jest pole .Ack. W przypadku
wystąpienia zatwierdzonego alarmu, pole .Ack ustawiane jest na wartość 1.
Patrz również
.Ack and .Alarm
Pola
2-53
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.UpdateCount
dane historyczne
Wartość tego pola jest zwiększana o 1 każdorazowo, gdy następuje aktualizacja trendu
historycznego związanego z daną zmienną.
Sposób użycia
Tagname.UpdateCount
Parametry
Opis
Tagname
Dowolna zmienna typu Hist Trend.
Uwagi
Pole to jest powiązane bezpośrednio z systemem odczytu danych historycznych.
Każdorazowo, gdy program InTouch zażąda danych dla trendu historycznego związanego z
określoną zmienną typu Hist Trend, żądane dane muszą zostać odczytane z dysku. Po
zakończeniu operacji czytania danych, wartość tego pola jest zwiększana o 1. Pole
.UpdateCount
jest wykorzystywane w wielu funkcjach związanych z trendami
historycznymi, w celu uaktualnienia wyników przeprowadzanych wcześniej obliczeń.
Typ danych
Integer (tylko odczyt)
Zakres wartości
Dowolna dodatnia liczba całkowita.
Przykład
W zamieszczonym poniżej skrypcie, funkcja HtGetValueAtScooter() została
wykorzystana do odczytu wartości wskazywanej przez pisak Pen1 w miejscu, w którym
znajduje się prawy suwak. Ponieważ zmiana jednego z parametrów funkcji powoduje
ponowne wyznaczenie wartości funkcji, każdorazowo po aktualizacji danych (po odczycie
tych danych z dysku) i zwiększeniu wartości pola .UpdateCount o 1, wartość poniższej
funkcji jest wyznaczana na nowo.
MyRealTag=HTGetValueAtScooter( MyHistTrendTag,
MyHistTrendTag.UpdateCount,2,
MyHistTrendTag.ScooterPosRight,1,"PenValue");
Patrz również
.UpdateInProgress, .UpdateTrend
2-54
Rozdział 2
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.UpdateInProgress
dane historyczne
Wartość tego pola jest równa 1 podczas odczytu danych historycznych; jeżeli operacja ta
nie jest realizowana, wartość jest równa 0.
Sposób użycia
Tagname.UpdateInProgress
Parametry
Opis
Tagname
Dowolna zmienna typu Hist Trend.
Uwagi
Pole to jest powiązane bezpośrednio z systemem odczytu danych historycznych.
Każdorazowo, gdy InTouch zażąda danych dla trendu historycznego związanego z
określoną zmienną typu Hist Trend, dane te muszą zostać odczytane z dysku. W czasie
procesu czytania, pole to ma wartość 1. Po zakończeniu tej operacji, wartość pola
.UpdateInProgress
zmieniana jest na 0. Pole .UpdateInProgress jest wykorzystywane w
wielu funkcjach związanych z trendami historycznymi.
Większość trendów historycznych wyświetlanych na ekranie ma mechanizm pozwalający
użytkownikowi na przewijanie wyświetlanych danych. Podczas przeglądania trendu przez
operatora system odczytu danych historycznych musi zapewnić, aby dane wyświetlane na
ekranie były aktualne. Jeśli operator przewinie trend na fragment, który nie jest
wyświetlany na ekranie w danej chwili ani nie znajduje się w pamięci, dane muszą zostać
odczytane z dysku. Ponieważ proces ten wymaga pewnego czasu, system informuje
operatora o trwającym odczycie danych z dysku. Bez tego typu informacji operator może
nie być świadomy tego, że system wykonuje wydane polecenie.
Typ danych
Discrete (tylko odczyt)
Zakres wartości
0 = Operacja aktualizacji nie jest w tym momencie realizowana.
1 = Operacja aktualizacji jest w trakcie realizacji.
Przykłady
Instrukcja zamieszczona poniżej jest powszechnie używana jako wyrażenie w połączeniu
animacyjnym dla obiektu tekstowego, lub na przycisku przewijania wykresu trendu
historycznego. W momencie gdy moduł prezentacji danych historycznych odczytuje
wymagane dane, wyrażenie to ma wartość 1. Po zaktualizowaniu trendu, wyrażenie to ma
wartość 0.
MyHistTrendTag.UpdateInProgress
Patrz również
.UpdateCount, .UpdateTrend
Pola
2-55
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.UpdateTrend
dane historyczne
Pole to umożliwia aktualizację wykresu trendu historycznego.
Sposób użycia
Tagname.UpdateTrend
Parametry
Opis
Tagname
Dowolna zmienna typu Hist Trend.
Uwagi
Trendy historyczne nie są uaktualniane automatycznie. Aby uaktualnić i wyświetlić
bieżące wartości określonych zmiennych, musi zostać zmieniony punkt początkowy
wykresu lub długość wykresu. Wykorzystanie pola .UpdateTrend w skrypcie związanym z
przyciskiem umożliwia operatorowi aktualizację wykresu w czasie pracy aplikacji, zawsze
ilekroć taka potrzeba wystąpi.
Pole to można również zastosować w skrypcie, jeśli inne pola związane ze zmienną trendu
historycznego ulegają zmianom. Zapewni to wyświetlenie zaktualizowanego wykresu
trendu. Przypisanie omawianemu polu wartości różnej od 1 nie ma żadnego znaczenia, a
wynik takiej operacji jest nieokreślony.
Przypisanie wartości różnej od 1 nie ma żadnego znaczenia, a wynik takiej operacji jest
nieokreślony.
Typ danych
Discrete (tylko zapis)
Zakres wartości
1
Przykład
Zamieszczone poniżej wyrażenie powoduje uaktualnienie trendu historycznego związanego
ze zmienną typu HistTrendTag o nazwie "MyHistTrendTag".
MyHistTrendTag.UpdateTrend=1;
2-56
Rozdział 2
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.Value
zmienna
Pole to zawiera wartość danej zmiennej. Jest to również domyślne pole dla każdej
zmiennej programu InTouch. Jeśli nie jest używane inne pole, zakłada się, że użytkownik
posługuje się tym polem.
Sposób użycia
Tagname.Value
Parametry
Opis
Tagname
Dowolna zmienna za wyjątkiem zmiennych typu HistTrendTag.
Uwagi
Pole to jest również domyślnym polem każdej zmiennej programu InTouch. Jeśli nie jest
użyte inne pole, zakłada się, że użytkownik posługuje się tym polem. Pole to jest rzadko
używane, ale w niektórych przypadkach jest użyteczne w celu jaśniejszego zapisu
wykonywanych operacji.
Typ danych
Zależy od typu zmiennej (odczyt/ zapis).
Przykład
Zamieszczone poniżej wrażenie ustawia wartość zmiennej typu Memory Integer o nazwie
MyTag
na wartość 100.
Tagname.Value=100;
Wyrażenie to jest funkcjonalnie identyczne z:
Tagname=100;
Pola
2-57
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.AlarmGroup
alarmowanie rozproszone
Pole to zawiera aktualną listę alarmów obiektu do wyświetlania alarmów rozproszonych.
Sposób użycia
[ErrorNumber=]GetPropertyM("ObjectName.AlarmGroup",Tagname);
Parametry
Opis
ObjectName
Nazwa obiektu alarmowego, np. AlmObj_1.
Tagname
Zmienna typu tekstowego, w której zapisywana jest wartość pola
podczas wykonywania funkcji.
Uwagi
Pole to przeznaczone jest tylko do odczytu i zawiera aktualną listę alarmów
wykorzystywaną w systemie alarmowania rozproszonego przez obiekt alarmowy o podanej
nazwie. Lista ta może być listą grup alarmowych lub listą aplikacji, w których generowane
są alarmy, i które uruchomione są na innych komputerach.
Typ danych
Message (tylko odczyt)
Przykład
Pole to przypisuje bieżące zapytanie alarmowe wykorzystywane przez obiekt do
wyświetlania "AlmObj_1" do zmiennej tekstowej "CurrentQuery".
GetPropertyM("AlmObj_1.AlarmGroup",CurrentQuery)
Patrz również
GetPropertyM()
.NextPage
alarmowanie rozproszone
Pole to powoduje przewinięcie listy wyświetlanych alarmów o jedną stronę ekranu w dół, w
momencie , gdy wartość pola ulega zmianie z 1 na 0.
Sposób użycia
[ErrorNumber=]GetPropertyD("ObjectName.NextPage",Tagname);
[ErrorNumber=]SetPropertyD("ObjectName.NextPage",Value);
Parametry
Opis
ObjectName
Nazwa obiektu alarmowego, np. AlmObj1.
Value
Nazwa zmiennej dyskretnej wykorzystywanej do pamiętania
wartości właściwości w momencie gdy funkcja jest realizowana,
stosowana jako "Zmienna" lub Zmienna.Name.
Tagname
Wartość dyskretna. Może to być również zmienna dyskretna
przechowująca wartość do zapisu w momencie przetwarzania
funkcji.
Uwagi
Zawsze, gdy wartość tego pola ulega zmianie z 1 na 0, obiekt do wyświetlania alarmów
przewinie ekran do przodu o jedną stroną. Po wyświetleniu tej strony wartość zmiennej
zostaje automatycznie ustawiona na 1, chyba że osiągnięty został początek listy. W takim
przypadku wartość ta pozostaje równa 0.
Typ danych
Discrete (odczyt/zapis)
Patrz również
GetPropertyD(), SetPropertyD(), .PrevPage
2-58
Rozdział 2
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.NumAlarms
alarmowanie rozproszone
Pole to zawiera liczbę alarmów w obiekcie alarmowym.
Sposób użycia
[ErrorNumber=]GetPropertyI("ObjectName.NumAlarms",Tagname);
Parametry
Opis
ObjectName
Nazwa obiektu alarmowego, np. AlmObj_1.
Tagname
Zmienna typu Integer, do której funkcja przypisuje wartość
właściwości.
Uwagi
Pole to przeznaczone jest tylko do odczytu i zawiera bieżącą liczbę alarmów
zarejestrowanych w alarmowaniu rozproszonym przez obiekt alarmowy o podanej nazwie.
Liczba ta obejmuje nie tylko alarmy wyświetlane, ale wszystkie alarmy zarejestrowane.
Typ danych
Integer (tylko odczyt)
Przykład
Pole to zwraca bieżące zapytanie alarmowe wykorzystywane przez obiekt do wyświetlania
"AlmObj_1" do zmiennej całkowitej "CurrentQuery".
GetPropertyI("AlmObj_1.NumAlarms",AlarmCount);
Patrz również
GetPropertyI()
.PageNum
alarmowanie rozproszone
Pole to zawiera numer strony aktualnie wyświetlanej w obiekcie alarmowym.
Sposób użycia
[ErrorNumber=]GetPropertyI("ObjectName.PageNum",Tagname);
Parametry
Opis
ObjectName
Nazwa obiektu alarmowego, np. AlmObj_1.
Stosowanych w systemie alarmowania rozproszonego
Zmienna typu Integer,
przechowująca wartość właściwości w momencie realizacji funkcji.
Uwagi
Pole to przeznaczone jest tylko do odczytu i zawiera numer strony aktualnie wyświetlanej
w obiekcie alarmowym w alarmowaniu rozproszonym.
Typ danych
Integer (tylko odczyt)
Przykład
Zamieszczona poniżej instrukcja zwraca bieżący numer strony obiektu do wyświetlania
"AlmObj_1" do zmiennej całkowitej "AlarmPage".
GetPropertyI("AlmObj_1.PageNum",AlarmPage);
Patrz również
GetPropertyI()
Pola
2-59
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.PrevPage
alarmowanie rozproszone
Pole to powoduje przewinięcie listy wyświetlanych alarmów o jedną stronę ekranową
zapełnioną alarmami w górę w sytuacji, gdy wartość pola ulega zmianie z 1 na 0.
Sposób użycia
[ErrorNumber=]GetPropertyD("ObjectName.PrevPage",Tagname);
[ErrorNumber=]SetPropertyD("ObjectName.PrevPage",Value);
Parametry
Opis
ObjectName
Nazwa obiektu alarmowego, np. AlmObj_1.
Tagname
Zmienna (takiego samego typu jaki ma być zwrócony),
przechowująca wartość właściwości w momencie realizacji funkcji.
Value
Wartość dyskretna. Może to być również zmienna dyskretna
przechowująca wartość do zapisu w momencie przetwarzania
funkcji.
Uwagi
Zawsze, gdy wartość tego pola ulega zmianie z 1 na 0, obiekt do wyświetlania alarmów
pokazywał będzie poprzednią stronę. Po wyświetleniu tej strony, wartość zmiennej zostaje
automatycznie ustawiona na 1, chyba że osiągnięty został początek listy. W takim
przypadku wartość ta pozostaje równa 0.
Typ danych
Discrete (odczyt/zapis)
Patrz również
GetPropertyD(), SetPropertyD(), .NextPage
.PriFrom
alarmowanie rozproszone
Pole to zawiera dolny zakres priorytetu alarmów.
Sposób użycia
[ErrorNumber=]GetPropertyI("ObjectName.PriFrom",Tagname);
Parametry
Opis
ObjectName
Nazwa obiektu alarmowego, np. AlmObj_1.
Tagname
Zmienna typu Integer, przechowująca wartość właściwości w
momencie realizacji funkcji.
Uwagi
Pole to zawiera minimalny priorytet wykorzystywany w oknie obiektu alarmowego do
stawiania zapytań alarmowych.
Typ danych
Integer (tylko odczyt)
Przykład
Zamieszczone poniżej wyrażenie ustawia wartość zmiennej "MinPri" na minimalną wartość
priorytetu, wykorzystywaną przez obiekt do wyświetlania alarmów.
GetPropertyI("AlmObj_1.PriFrom",MinPri);
Patrz również
GetPropertyI(), .PriTo
2-60
Rozdział 2
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.PriTo
alarmowanie rozproszone
Pole to zawiera górny zakres priorytetu alarmów.
Sposób użycia
[ErrorNumber=]GetPropertyI("ObjectName.PriTo",Tagname);
Parametry
Opis
ObjectName
Nazwa obiektu alarmowego, np. AlmObj_1.
Tagname
Zmienna typu Integer, przechowująca wartość właściwości w
momencie realizacji funkcji.
Uwagi
Pole to przeznaczone jest tylko do odczytu i zawiera górny zakres priorytetu alarmów
wyświetlanych w oknie obiektu alarmowego, stosowanych w systemie alarmowania
rozproszonego.
Typ danych
Integer (tylko odczyt)
Przykład
Zmienna (takiego samego typu jaki ma być zwrócony), przechowująca wartość właściwości
w momencie realizacji funkcji.
GetPropertyI("AlmObj_1.PriTo",MaxPri);
Patrz również
GetPropertyI(), .PriFrom
.ProviderReq
alarmowanie rozproszone
Pole to zawiera łączną liczbę aplikacji uruchomionych na innych komputerach, aktualnie
odpytywanych pod kątem występowania alarmów.
Sposób użycia
[ErrorNumber=]GetPropertyI("ObjectName.ProviderReq",Tagname);
Parametry
Opis
ObjectName
Nazwa obiektu alarmowego, np. AlmObj_1.
Tagname
Zmienna typu Integer, przechowująca wartość właściwości w
momencie realizacji funkcji.
Uwagi
Pole to przeznaczone jest tylko do odczytu i zawiera łączną liczbę aplikacji
uruchomionych na innych komputerach, aktualnie odpytywanych pod kątem występowania
alarmów w alarmowaniu rozproszonym.
Typ danych
Integer (tylko odczyt)
Przykład
Zamieszczona poniżej instrukcja zwraca liczbę dostawców alarmów wymaganą przez
bieżące zapytanie, wykorzystywaną przez obiekt do wyświetlania alarmów "AlmObj_1".
Wartość ta jest przypisywana zmiennej całkowitej "TotalProv":
GetPropertyI("AlmObj_1.ProviderReq",TotalProv);
Patrz również
GetPropertyI(),
.
ProviderRet
Pola
2-61
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.ProviderRet
alarmowanie rozproszone
Pole to zawiera liczbę aplikacji uruchomionych na innych komputerach, które udzieliły
odpowiedzi na pytanie o występowanie alarmów.
Sposób użycia
[ErrorNumber=]GetPropertyI("ObjectName.ProviderRet",Tagname);
Parametry
Opis
ObjectName
Nazwa obiektu alarmowego, np. AlmObj_1.
Tagname
Zmienna typu Integer, przechowująca wartość właściwości w
momencie realizacji funkcji.
Uwagi
Pole to przeznaczone jest tylko do odczytu i zawiera łączną liczbę aplikacji
uruchomionych na innych komputerach, które udzieliły odpowiedzi na pytanie o
występowanie alarmów w alarmowaniu rozproszonym.
Typ danych
Integer (tylko odczyt)
Przykład
Zamieszczona poniżej instrukcja zwraca do obiektu do wyświetlania alarmów "AlmObj_1",
liczbę dostawców alarmowych którzy pomyślnie przesłali informacje o alarmach. Wartość
ta jest przypisywana zmiennej całkowitej "RetProv":
GetPropertyI("AlmObj_1.ProviderRet",RetProv);
Patrz również
GetPropertyI(),
.ProviderReq
2-62
Rozdział 2
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.QueryState
alarmowanie rozproszone
Pole to zawiera aktualny filtr obowiązujący przy pytaniu o alarmy.
Sposób użycia
[ErrorNumber=]GetPropertyI("ObjectName.QueryState",Tagname);
Parametry
Opis
ObjectName
Nazwa obiektu alarmowego, np. AlmObj_1.
Tagname
Zmienna typu Integer, przechowująca wartość właściwości w
momencie realizacji funkcji.
Uwagi
Pole to przeznaczone jest tylko do odczytu i zawiera aktualny filtr stosowany przy pytaniu
o alarmy przez obiekt alarmowy, w alarmowaniu rozproszonym.
Typ danych
Integer (tylko odczyt)
Zakres wartości
0 = Wszystkie alarmy
1 = Alarmy niepotwierdzone
2 = Alarmy potwierdzone
Przykład
Zamieszczona poniżej instrukcja ustawia wartość zmiennej całkowitej "AlmQueryState" na
filtr bieżącego zapytania obiektu do wyświetlania "AlmObj_1":
GetPropertyI("AlmObj_1.QueryState",AlmQueryState);
Patrz również
GetPropertyI()
Pola
2-63
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.QueryType
alarmowanie rozproszone
Pole to definiuje aktualnie obowiązujący sposób pytania o alarmy.
Sposób użycia
[ErrorNumber=]GetPropertyI("ObjectName.QueryType",Tagname);
Parametry
Opis
ObjectName
Nazwa obiektu alarmowego, np. AlmObj_1.
Tagname
Zmienna typu Integer, przechowująca wartość właściwości w
momencie realizacji funkcji.
Uwagi
Pole to przeznaczone jest tylko do odczytu i określa aktualnie obowiązujący sposób
pytania o alarmy przez obiekt alarmowy, w alarmowaniu rozproszonym.
Typ danych
Integer (tylko odczyt)
Zakres wartości
1 = Historia alarmów
2 = Alarmy bieżące (aktywne)
Przykład
Zamieszczona poniżej instrukcja ustawia wartość zmiennej całkowitej "AlmQueryType" na
typ bieżącego zapytania obiektu do wyświetlania "AlmObj_1":
GetPropertyI("AlmObj_1.QueryType",AlmQueryType);
Patrz również
GetPropertyI()
2-64
Rozdział 2
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.Successful
alarmowanie rozproszone
Pole to dostarcza informacji na temat przebiegu zapytania o alarmy.
Sposób użycia
[ErrorNumber=]GetPropertyD("ObjectName.Successful",Tagname);
Parametry
Opis
ObjectName
Nazwa obiektu alarmowego, np. AlmObj_1.
Tagname
Zmienna typu dyskretnego, przechowująca wartość właściwości w
momencie wykonywania funkcji.
Uwagi
Pole to przeznaczone jest tylko do odczytu i dostarcza informacji na temat przebiegu
zapytania o alarmy przez obiekt alarmowy, w alarmowaniu rozproszonym.
Typ danych
Discrete (tylko odczyt)
Zakres wartości
0 = Błąd
1 = Odpytywanie wykonane
Przykład
Zamieszczona poniżej instrukcja ustawia wartość zmiennej dyskretnej "AlmFlag" na status
ostatniego zapytania obiektu do wyświetlania "AlmObj_1":
GetPropertyD("AlmObj_1.Successful",AlmFlag);
Patrz również
GetPropertyD()
.TotalPages
alarmowanie rozproszone
Pole to zawiera łączną liczbę stron (wypełnionych alarmami) w obiekcie alarmowym.
Sposób użycia
[ErrorNumber=]GetPropertyI("ObjectName.TotalPages",Tagname);
Parametry
Opis
ObjectName
Nazwa obiektu alarmowego, np. AlmObj_1.
Tagname
Zmienna typu Integer, przechowująca wartość właściwości w
momencie realizacji funkcji.
Uwagi
Pole to przeznaczone jest tylko do odczytu i zawiera bieżącą liczbę stron z alarmami w
obiekcie alarmowym o podanej nazwie.
Typ danych
Integer (tylko odczyt)
Przykład
Pole to ustawia wartość zmiennej całkowitej "AlmTotalPage" na sumaryczną liczbę stron w
obiekcie do wyświetlania "AlmObj_1".
GetPropertyI("AlmObj_1.TotalPages",AlmTotalPages);
Patrz również
GetPropertyI()
Pola
2-65
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.Caption
obiekty sterujące okien
Pole to definiuje informację, która ma zostać wyświetlona jako opis pola wyboru.
Sposób użycia
[ErrorNumber=]GetPropertyM ("ControlName.Caption", Tagname );
[ErrorNumber=]SetPropertyM ("ControlName.Caption", "Message");
Parametry
Opis
ControlName
Nazwa obiektu sterującego okna, np. ChkBox_4.
Tagname
Zmienna tekstowa do przechowywania żądanej właściwości.
"Message"
Tekst komunikatu ujęty w cudzysłowy.
Uwagi
Pole to jest zapisywane/ odczytywane zarówno w czasie edycji, jak i w czasie pracy
aplikacji).
Typ danych
Message (odczyt/zapis)
Zastosowanie
Pola wyboru.
Przykład
Zamieszczona poniżej instrukcja ustawia pole .Caption obiektu "CheckBox_1" na wartość
"Blue Paint Option".
SetPropertyM( "CheckBox_1.Caption","Blue Paint Option" );
Patrz również
GetPropertyM(), SetPropertyM()
2-66
Rozdział 2
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.Enabled
obiekty sterujące okien
Pole to określa, czy obiekt sterujący może reagować na zdarzenia wygenerowane przez
użytkownika.
Sposób użycia
[ErrorNumber=] GetPropertyD("ControlName.Enabled", Tagname);
[ErrorNumber=] SetPropertyD("ControlName.Enabled", Discrete);
Parametry
Opis
ControlName
Nazwa obiektu sterującego okna, np. ChkBox_4.
Tagname
Zmienna dyskretna przeznaczona do przechowywania żądanej
właściwości.
Dyskretne
Wartość dyskretna.
0 = Obiekt sterujący jest nieaktywny
1 = Obiekt sterujący jest aktywny
lub,
Zmienna dyskretna przechowująca wartość do zapisu w momencie
wykonywania funkcji.
Uwagi
Pole to jest zapisywane/odczytywane zarówno w czasie edycji, jak i w czasie pracy
aplikacji.
Typ danych
Discrete (odczyt/zapis)
Zastosowanie
Pola tekstowe , pola list , listy rozwijane , pola wyboru i pola wyboru wykluczającego .
Przykład
Zamieszczona poniżej instrukcja dezaktywuje obiekt o nazwie "ListBox_1."
SetPropertyD( "ListBox_1.Enabled",0 );
Patrz również
GetPropertyD(), SetPropertyD()
Pola
2-67
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.ListCount
obiekty sterujące okien
Pole to określa liczbę elementów w polu listy lub na liście rozwijalnej.
Sposób użycia
[ErrorNumber=]GetPropertyI("ControlName.ListCount",Tagname);
Parametry
Opis
ControlName
Nazwa obiektu sterującego okna, np. ListBox_4.
Tagname
Zdefiniowana zmienna zawierająca liczbę elementów na liście.
Uwagi
Pole to jest dostępne tylko w trybie w czasie pracy aplikacji.
Typ danych
Integer (tylko odczyt)
Zastosowanie
Pola listy i listy rozwijalne.
Przykład
Zamieszczona poniżej instrukcja odczytuje liczbę elementów listy o nazwie "ListBox_1" i
przypisuje tę wartość do zmiennej typu Memory Integer o nazwie "MyListBoxCount".
GetPropertyI( "ListBox_1.ListCount",MyListBoxCount );
Patrz również
GetPropertyI()
2-68
Rozdział 2
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.ListIndex
obiekty sterujące okien
Pole to zawiera indeks (zmienną lub liczbę) aktualnie wybranego elementu z listy. Indeks
jest liczbą definiującą pojedynczy element na liście. W przypadku pola listy indeks równy
-1 oznacza, że żaden element nie jest aktualnie wybrany. W przypadku listy rozwijalnej
indeks równy -1 oznacza, że użytkownik wprowadził nowy tekst w polu wprowadzania
tekstu listy rozwijalnej.
Sposób użycia
[ErrorNumber=]GetPropertyI("ControlName.ListIndex",Tagname);
[ErrorNumber=]SetPropertyI("ControlName.ListIndex",Number);
Parametry
Opis
ControlName
Nazwa obiektu sterującego okna, np. ListBox_4.
Tagname
Zdefiniowana zmienna zawierająca liczbę elementów na liście.
Number
Liczba definiująca konkretny element z listy.
Uwagi
Pole to jest dostępne tylko w trybie w czasie pracy aplikacji.
Typ danych
Integer (odczyt/zapis)
Zastosowanie
Pola listy i listy rozwijalne.
Przykład
Zamieszczona poniżej instrukcja odczytuje indeks elementu zaznaczonego na liście o
nazwie "ListBox_1" i przypisuje tę wartość do zmiennej typu Memory Integer o nazwie
"MyListBoxIndex."
GetPropertyI( "ListBox_1.ListIndex",MyListBoxIndex );
Patrz również
GetPropertyI(), SetPropertyI()
Pola
2-69
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.NewIndex
obiekty sterujące okien
Pole to zawiera indeks elementu ostatnio dodanego do pola listy lub listy rozwijalnej za
pomocą funkcji wcAddItem() lub wcInsertItem().
Sposób użycia
[ErrorNumber=]GetPropertyI("ControlName.NewIndex",Tagname);
Parametry
Opis
ControlName
Nazwa obiektu sterującego okna, np. ListBox_4.
Tagname
Zmienna typu całkowitego zawierająca indeks elementu ostatnio
dodanego do pola listy lub listy rozwijalnej. W przypadku pustych
list pole to zawiera wartość -1.
Uwagi
Pole to jest dostępne tylko w czasie pracy aplikacji.
Typ danych
Integer (tylko odczyt)
Zastosowanie
Pola listy i listy rozwijalne.
Przykład
Zamieszczona poniżej instrukcja odczytuje indeks elementu ostatnio dodanego do listy o
nazwie "ListBox_1" i przypisuje tę wartość do zmiennej typu Memory Integer o nazwie
"NewItemIndex."
GetPropertyI("ListBox_1.NewIndex",NewItemIndex);
Patrz również
GetPropertyI(), wcAddItem(), wcInsertItem()
2-70
Rozdział 2
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.ReadOnly
obiekty sterujące okien
Pole to określa, czy zawartość obiektu sterującego w postaci pola tekstowe ma być
przeznaczona tylko do odczytu, czy może dopuszczać również zapis.
Sposób użycia
[ErrorNumber=]GetPropertyD("ControlName.ReadOnly", Tagname);
Parametry
Opis
ControlName
Nazwa obiektu sterującego okna, np. TextBox_1.
Tagname
Zmienna typu dyskretnego, przechowująca wartość właściwości w
momencie wykonywania funkcji.
Uwagi
Pole to jest dostępne zarówno w czasie pracy aplikacji, jak i w czasie jej edycji
.
Typ danych
Discrete (tylko odczyt)
Zakres wartości
0 = Zawartość pola tekstowego umożliwia odczyt i zapis.
1 = Zawartość pola tekstowego jest przeznaczona tylko do odczytu.
Zastosowanie
Pola tekstowe.
Przykład
Poniższa instrukcja odczytuje status pola .ReadOnly obiektu o nazwie "TextBox_1".
GetPropertyD( "TextBox_1.ReadOnly",A_Tagname );
Patrz również
GetPropertyD(), SetPropertyD()
Pola
2-71
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.TopIndex
obiekty sterujące okien
Pole to zawiera odpowiedni indeks (zmienną lub liczbę całkowitą) pierwszego od góry
elementu w polu listy.
Sposób użycia
[ErrorNumber=]GetPropertyI("ControlName.TopIndex", Tagname);
[ErrorNumber=]SetPropertyI("ControlName.TopIndex", Number);
Parametry
Opis
ControlName
Nazwa obiektu sterującego okna, np. ListBox_1.
Tagname
Zmienna typu Integer, przechowująca wartość właściwości w
momencie realizacji funkcji.
Number
Liczba definiująca pierwszy od góry element w polu listy.
Uwagi
Pole to jest dostępne tylko w czasie pracy aplikacji.
Typ danych
Integer (odczyt/zapis)
Zastosowanie
Pola listy.
Przykład
Zamieszczona poniżej instrukcja ustawia wartość pola .TopIndex obiektu o nazwie
"ListBox_1" na wartość 14.
SetPropertyI( "ListBox_1.TopIndex",14 );
Patrz również
GetPropertyI(), SetPropertyI()
2-72
Rozdział 2
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.Value
obiekty sterujące okien
Domyślna właściwość dla wszystkich wizardów obiektów sterujących Windows. Zmiany
tej właściwości zsynchronizowane są z zmiennymi InTouch, oraz z wizardami obiektów
sterujących Windows.
Sposób użycia
[ErrorNumber=]GetPropertyM("ControlName[.Value]", Tagname);
[ErrorNumber=]SetPropertyM("ControlName[.Value]", Value);
[ErrorNumber=]GetPropertyI("ControlName[.Value]", Tagname);
[ErrorNumber=]SetPropertyI("ControlName[.Value]", Value);
[ErrorNumber=]GetPropertyD("ControlName[.Value]", Tagname);
[ErrorNumber=]SetPropertyD("ControlName[.Value]", Value);
Uwaga
Wartość początkowa zmiennej powiązanej z polami listy, lub listą rozwijalną nie
może być wykorzystana do inicjalizowania wartości tych pól listy lub listy rozwijalnej.
Parametry
Opis
ControlName
Nazwa obiektu sterującego okna, np. ChkBox_4.
.Value
Właściwość ta jest opcjonalna. Jeżeli jej wartość nie zostanie
określona, funkcja będzie domyślnie przyjmować, że
wykorzystywane jest pole .Value.
Tagname
Zdefiniowana zmienna programu InTouch (takiego samego typu jak
typ zwracany), przechowująca wartość właściwości w momencie
realizacji funkcji.
Value
Aktualna wartość do zapisania lub zdefiniowana zmienna (takiego
samego typu jak właściwość do zapisania), przechowująca wartość
właściwości do zapisania w momencie wykonywania funkcji.
Uwagi
Pole to umożliwia zapis i odczyt zarówno w czasie pracy aplikacji, jak i w czasie jej edycji.
Jeśli pole .Value jest wykorzystywane w połączeniu z polami listy lub listą rozwijalną , jest
ono przeznaczone tylko do odczytu. Jeśli pole .Value jest wykorzystywane w połączeniu z
polem wyboru, polem wyboru wykluczającego lub polem tekstowym, można zarówno
odczytywać jak również zmieniać jego wartość. Wartość wprowadzona w trakcie edycji
aplikacji, przyjmowana jest jako wartość domyślna w trakcie pracy aplikacji.
Typ danych
Message (zapis/ odczyt) dla pól tekstowych, pól listy i list rozwijalnych.
Integer (zapis/ odczyt) dla pól wyboru wykluczającego.
Discrete (zapis/ odczyt) dla pól wyboru.
Zastosowanie
Pola tekstowe , pola list , listy rozwijane , pola wyboru i pola wyboru wykluczającego .
Przykład
Zamieszczona poniżej instrukcja ustawia wartość pola .Value obiektu pole wyboru
wykluczającego o nazwie "RadioButton_1" na wartość 4.
SetPropertyI( "RadioButton_1.Value",4 );
Patrz również
GetPropertyM(), SetPropertyM(), GetPropertyI(), SetPropertyI(), GetPropertyD(),
SetPropertyD()
Pola
2-73
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.Visible
obiekty sterujące okien
Właściwość ta określa, czy obiekt jest widoczny w oknie.
Sposób użycia
[ErrorNumber=]GetPropertyD("ControlName.Visible",Tagname);
[ErrorNumber=]SetPropertyD("ControlName.Visible",Number);
Parametry
Opis
ControlName
Nazwa obiektu sterującego okna, np. ListBox_1.
Tagname
Zdefiniowana zmienna programu InTouch (takiego samego typu jak
typ zwracany), przechowująca wartość właściwości w momencie
realizacji funkcji.
Number
Wartość dyskretna. Może to być również zmienna dyskretna
przechowująca wartość do zapisu w momencie przetwarzania
funkcji.
Uwagi
Pole to przeznaczone jest do zapisu/ odczytu zarówno w trakcie edycji aplikacji jak
również w momencie wykonywania aplikacji.
Typ danych
Discrete (odczyt/zapis)
Zakres wartości
0 = Obiekt jest niewidoczny
1 = Obiekt jest widoczny
Zastosowanie
Pola tekstowe , pola list , listy rozwijane , pola wyboru i pola wyboru wykluczającego .
Przykład
Zamieszczona poniżej instrukcja przywraca widzialność pola tekstowego o nazwie
"TextBox_1".
SetPropertyD( "TextBox_1.Visible",0 );
Patrz również
GetPropertyD(), SetPropertyD()
3-1
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
R O Z D Z I A Ł 3
Funkcje skryptowe
Jednym z najbardziej istotnych elementów funkcjonalności aplikacji InTouch jest
możliwość korzystania ze skryptów. Skrypty dają możliwość wykonywania poleceń, oraz
operacji logicznych, w zależności od spełnienia określonych kryteriów. Przykładowo,
wciśnięcie klawisza może powodować otwarcie okna, zmianę wartości zmiennej, itd.
Funkcje skryptowe QuickScript są skryptami, które można wywoływać z poziomu innych
skryptów i połączeń animacyjnych. Kod źródłowy takiej funkcji pamiętany jest w jednym
miejscu, tak więc jej edycja umożliwia wprowadzenie zmian we wszystkich aplikacjach, w
których funkcja taka jest wywoływana.
Skrypty umożliwiają utworzenie szeregu zautomatyzowanych funkcji systemowych,
dostosowanych do potrzeb użytkownika.
3-2
Rozdział 3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Abs()
funkcje matematyczne
Zwraca wartość bezwzględną danej liczby.
Składnia
Result=Abs(Number);
Parametry
Opis
Number
Dowolna liczba, zmienna rzeczywista lub całkowita programu
InTouch.
Uwagi
Obliczona wartość bezwględna liczby Number jest przypisywana do zmiennej Result.
Przykłady
Abs(14) zwraca 14
Abs(-7.5) zwraca 7.5
Ack()
alarmy
Funkcja ta służy do zatwierdzania lokalnych alarmów programu InTouch.
Składnia
Ack Tagname;
Parametry
Opis
Tagname
Dowolna zmienna, grupa alarmowa (Alarm Group) lub zmienna
grupowa (Group Var).
Uwagi
Funkcja ta może być użyta w odniesieniu do zmiennej, grupy alarmowej lub zmiennej
grupowej. (Zmienna grupowa jest zmienną, której wartości są nazwami grup alarmowych).
Przykłady
Poniższe instrukcje można zastosować w powiązaniu z przyciskiem, w celu zatwierdzenia
dowolnego, nie potwierdzonego alarmu:
Ack $System; (zatwierdzenie wszystkich alarmów)
Ack Tagname;
Ack GroupName;
Ack GroupVariable;
Funkcje skryptowe
3-3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
ActivateAPP()
system
Funkcja ta służy do uaktywnienia aktualnie uruchomionej aplikacji Windows.
Składnia
ActivateApp TaskName;
Parametry
Opis
TaskName
Nazwa aplikacji, która ma zostać uaktywniona za pomocą funkcji.
Uwagi
TaskName jest ciągiem znaków (włącznie ze spacjami), który pojawia się na Pasku Zadań
lub w Menadżerze zadań (w celu wyświetlenia w systemie Windows NT należy kliknąć
prawym przyciskiem myszy na Pasku zadań, a następnie kliknąć Menadżer zadań lub
wcisnąć Ctrl+Alt+Delete).
Przykład
Poniżej podano przykład sprawdzający czy aktywna jest linia poleceń. Jeżeli jest aktywna,
przenoszona jest na pierwszy plan. W przeciwnym wypadku, jest uruchamiana, z
automatycznym wywołaniem programu systemu DOS edit.com.
IF InfoAppActive( InfoAppTitle("cmd")) == 1 THEN
ActiveApp InfoAppTitle("cmd");
ELSE
StartApp "cmd /c edit";
ENDIF;
Patrz również
StartApp(), InfoAppTitle()
almAckAll()
alarmowanie rozproszone
Funkcja ta służy do zatwierdzania wszystkich alarmów z aktualnej listy odpytywanych
alarmów, włącznie z tymi, które nie są aktualnie wyświetlane w oknie obiektu alarmowego.
Składnia
[Result=]almAckAll(ObjectName,Comment);
Parametry
Opis
ObjectName
Nazwa obiektu alarmowego, np. AlmObj_1.
Comment
Komentarz do zatwierdzania alarmu.
! Kody błędów dla funkcji tego typu można znaleźć w Dodatku A: "Komunikaty o
błędach dla obiektów sterujących Windows i funkcji związanych z alarmowaniem
rozproszonym".
Przykład
MessageTag = "Acknowledge All by” + $Operator;
AlmAckAll("AlmObj_1”, MessageTag);
3-4
Rozdział 3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
almAckDisplay()
alarmowanie rozproszone
Funkcja ta służy do zatwierdzania tylko tych alarmów, które są aktualnie wyświetlane w
oknie obiektu alarmowego.
Składnia
[Result=]almAckDisplay(ObjectName,Comment);
Parametry
Opis
ObjectName
Nazwa obiektu alarmowego, np. AlmObj_1.
Comment
Komentarz do zatwierdzania alarmu.
! Kody błędów dla funkcji tego typu można znaleźć w Dodatku A: "Komunikaty o
błędach dla obiektów sterujących Windows i funkcji związanych z alarmowaniem
rozproszonym".
Przykład
almAckDisplay("
AlmObj_1
”, "Display Acknowledgement”);
almAckRecent()
alarmowanie rozproszone
Funkcja ta służy do zatwierdzania najnowszych alarmów.
Składnia
[Result=]almAckRecent(ObjectName,Comment);
Parametry
Opis
ObjectName
Nazwa obiektu alarmowego, np. AlmObj_1.
Comment
Komentarz do zatwierdzania alarmu.
Uwagi
Kody błędów dla funkcji tego typu można znaleźć w Dodatku A: "Komunikaty o błędach
dla obiektów sterujących Windows i funkcji związanych z alarmowaniem rozproszonym".
Przykład
almAckRecent("
AlmObj_1
”, $DateString);
Funkcje skryptowe
3-5
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
almAckSelect()
alarmowanie rozproszone
Funkcja ta służy do zatwierdzania alarmów zaznaczonych w oknie obiektu alarmowego.
Składnia
[Result=]almAckSelect(ObjectName,Comment);
Parametry
Opis
ObjectName
Nazwa obiektu alarmowego, np. AlmObj_1.
Comment
Komentarz do zatwierdzania alarmu.
! Kody błędów dla funkcji tego typu można znaleźć w Dodatku A: "Komunikaty o
błędach dla obiektów sterujących Windows i funkcji związanych z alarmowaniem
rozproszonym".
Przykład
IF ($Hour > 0 and $Hour < 8) THEN
AckTag = "NightShift”;
ELSE
AckTag = "Day Shift”;
ENDIF;
AlmAckSelect ("AlmObj_1”,AckTag);
almDefQuery()
alarmowanie rozproszone
Wykonanie zapytania w celu zaktualizowania okna obiektu alarmowego przy użyciu
domyślnych parametrów.
Składnia
[Result=]almDefQuery(ObjectName);
Parametry
Opis
ObjectName
Nazwa obiektu alarmowego, np. AlmObj_1.
Uwagi
Domyślne parametry zapytania o alarmy są podawane w czasie edycji aplikacji.
! Kody błędów dla funkcji tego typu można znaleźć w Dodatku A: "Komunikaty o
błędach dla obiektów sterujących Windows i funkcji związanych z alarmowaniem
rozproszonym".
Przykład
almDefQuery("AlmObj_1”);
3-6
Rozdział 3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
almMoveWindow()
alarmowanie rozproszone
Przewija okno obiektu alarmowego.
Składnia
[Result=]almMoveWindow(ObjectName,Options,Repeat);
Parametry
Opis
ObjectName
Nazwa obiektu alarmowego, np. AlmObj_1.
Options
Rodzaj przewijania alarmów.
Typ
Opis
LineDn
O jedną linię w dół.
LineUp
O jedną linię w górę.
PageDn
O jedną stronę w dół.
PageUp
O jedną stronę w górę.
Top
Do początku listy.
Bottom
Do końca listy.
PageRt
O jedna stronę w prawo.
PageLf
O jedna stronę w lewo.
Right
Do końca listy w prawą stronę.
Left
Do końca listy w lewą stronę.
Repeat
Liczba określająca, ile razy operacja ma zostać powtórzona.
! Kody błędów dla funkcji tego typu można znaleźć w Dodatku A: "Komunikaty o
błędach dla obiektów sterujących Windows i funkcji związanych z alarmowaniem
rozproszonym".
Przykład
almMoveWindow("AlmObj_1”, ”Bottom”, 0);
almMoveWindow("AlmObj_1”, ”LineDn”, 3);
almMoveWindow("AlmObj_1”, ”PageUp”, 0);
Funkcje skryptowe
3-7
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
almQuery()
alarmowanie rozproszone
Wykonanie zapytania w celu zaktualizowania obiektu alarmowego.
Składnia
[Result=]almQuery(ObjectName,AlarmList,FromPri,
ToPri,State,Type);
Parametry
Opis
ObjectName
Nazwa obiektu alarmowego. Przykładowo, AlmObj_1.
AlarmList
Grupa alarmowa lub lista grup objętych zapytaniem o alarmy, np.
"MyGroup" lub zmienna typu Message.
FromPri
Dolny zakres priorytetu alarmów, które mają być wyświetlone,
np. 100, lub zmienna typu Integer.
ToPri
Górny zakres priorytetu, dla którego alarmy mają być
wyświetlone. Przykładowo, 900, lub zmienna typu integer.
State
Rodzaj alarmów, które mają być wyświetlone. Przykładowo,
"UnAck" lub zmienna tekstowa. Dopuszczalnymi statusami są
All, UnAck, oraz Ack.
Type
Określa typ zapytania, przykładowo, "Hist" (Alarmy
historyczne"), lub "Summ" (Alarmy bieżące).
! Kody błędów dla funkcji tego typu można znaleźć w Dodatku A: "Komunikaty o
błędach dla obiektów sterujących Windows i funkcji związanych z alarmowaniem
rozproszonym".
Przykład
Poniższa instrukcja powoduje wyświetlenie wszystkich alarmów historycznych określonych
w grupie "MyGroup" o priorytecie zawartym pomiędzy 500 i 600. Funkcja ta spowoduje
ograniczenie liczby alarmów wyświetlanych przez obiekt "Alarm1."
AlmQuery("AlmObj_1","MyGroup",500,600,"All","Hist");
almSelectAll()
alarmowanie rozproszone
Odwraca zaznaczenie wszystkich alarmów w obiekcie alarmowym.
Składnia
[Result=]almSelectAll(ObjectName);
Parametry
Opis
ObjectName
Nazwa obiektu alarmowego, np. AlmObj_1.
! Kody błędów dla funkcji tego typu można znaleźć w Dodatku A: "Komunikaty o
błędach dla obiektów sterujących Windows i funkcji związanych z alarmowaniem
rozproszonym".
Przykład
If $AccessLevel > 8000 THEN
almSelectAll("AlmObj_1”);
almAckSelect("AlmObj_1”, "Ack Selected by a Manager”);
ENDIF;
3-8
Rozdział 3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
almSelectItem()
alarmowanie rozproszone
Odwraca zaznaczenie podświetlonego elementu w obiekcie alarmowym.
Składnia
[Result=]almSelectItem(ObjectName);
Parametry
Opis
ObjectName
Nazwa obiektu alarmowego, np. AlmObj_1.
! Kody błędów dla funkcji tego typu można znaleźć w Dodatku A: "Komunikaty o
błędach dla obiektów sterujących Windows i funkcji związanych z alarmowaniem
rozproszonym".
Przykład
almSelectItem("AlmObj_1”);
almShowStats()
alarmowanie rozproszone
Wyświetla ekran z informacjami statystycznymi obiektu alarmowego.
Składnia
[Result=]almShowStats(ObjectName);
Parametry
Opis
ObjectName
Nazwa obiektu alarmowego, np. AlmObj_1.
! Kody błędów dla funkcji tego typu można znaleźć w Dodatku A: "Komunikaty o
błędach dla obiektów sterujących Windows i funkcji związanych z alarmowaniem
rozproszonym".
Przykład
almSlowStats("AlmObj_1”);
ArcCos()
funkcje matematyczne
Dla liczby z przedziału domkniętego [-1,1] funkcja ta oblicza wartość kąta (z zakresu od 0
do 180 stopni), którego cosinus jest równy tej liczbie.
Składnia
Result=ArcCos(Number);
Parametry
Opis
Number
Dowolna liczba, zmienna rzeczywista lub całkowita programu
InTouch.
Uwagi
Wartość funkcji jest zwracana do zmiennej Result.
Przykład
ArcCos(1) zwraca 0
ArcCos(-1) zwraca 180
Funkcje skryptowe
3-9
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
ArcSin()
funkcje matematyczne
Dla liczby z przedziału domkniętego [-1,1] funkcja ta oblicza wartość kąta (z zakresu od -
90 do 90 stopni), którego sinus jest równy tej liczbie.
Składnia
Result=ArcSin(Number);
Parametry
Opis
Number
Dowolna liczba, zmienna rzeczywista lub całkowita programu
InTouch.
Uwagi
Wartość funkcji jest zwracana do zmiennej Result.
Przykład
ArcSin(1) zwraca 90
ArcSin(-1) zwraca -90
ArcTan()
funkcje matematyczne
Dla danej liczby funkcja ta oblicza wartość kąta (z zakresu od -90 do 90 stopni), którego
tangens jest równy tej liczbie.
Składnia
Result=ArcTan(Number);
Parametry
Opis
Number
Dowolna liczba, zmienna rzeczywista lub całkowita programu
InTouch.
Uwagi
Wartość funkcji jest zwracana do zmiennej Result.
Przykład
ArcTan(1) zwraca 45
ArcTan(0) zwraca 0
3-10
Rozdział 3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
ChangePassword()
bezpieczeństwo
Wyświetla okno dialogowe Change Password pozwalające operatorowi na zmianę
swojego hasła.
Składnia
[Result=]ChangePassword();
Parametry
Opis
[Result]
Przyjmuje jedną z następujących wartości:
0 = Naciśnięty został klawisz Cancel
1 = Naciśnięty został klawisz OK
Uwagi
W aplikacjach z ekranem dotykowym można użyć klawiatury alfanumerycznej.
Przykład
Errmgs=ChangePassword();
Jeśli taka instrukcja zostanie użyta w skrypcie związanym z przyciskiem, w skrypcie
warunkowym lub wywoływanym wskutek zmiany wartości danych, spowoduje to
otworzenie okna dialogowego (z opcjonalną klawiaturą) umożliwiającego użytkownikowi
wprowadzenie nowego hasła dostępu.
Cos()
funkcje matematyczne
Zwraca cosinus kąta podanego w stopniach.
Składnia
Result=Cos(Number);
Parametry
Opis
Number
Dowolna liczba, zmienna rzeczywista lub całkowita programu
InTouch.
Uwagi
Wartość funkcji jest zwracana do zmiennej Result.
Przykład
Cos(90) zwraca 0
Cos(0) zwraca 1
Wave = 50 * Cos(6 * $Minute);
Funkcje skryptowe
3-11
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
DialogStringEntry()
różne
Wyświetla na ekranie klawiaturę alfanumeryczną umożliwiając użytkownikowi zmianę
aktualnej wartości zmiennej tekstowej zdefiniowanej na Liście zmiennych.
Składnia
[Result=]DialogStringEntry(MessageTag_Text,UserPrompt_Text);
Parametry
Opis
Result
Przyjmuje jedną z następujących wartości:
0 = Naciśnięty został klawisz Cancel
1 = Naciśnięty został klawisz OK
-1 = Błąd wewnętrzny
-2 = Brak możliwości inicjacji
-3 = Zmienna nie jest zdefiniowana
-4 = Zmienna nie jest zmienną typu Message
-5 = Brak możliwości zapisu
MessageTag_Text
Podaje nazwę zmiennej typu Message, która ma zostać
zmodyfikowana. Parametr tej funkcji musi zostać podany jako
łańcuch znaków, dlatego nazwa zmiennej musi zostać podana w
cudzysłowie albo przy użyciu pola .Name (bez cudzysłowu).
Dopuszczalne jest również stosowanie jako wskaźnik zmiennej
tekstowej. Porównać z zamieszczonym w dalszej części
przykładem.
UserPrompt_Text
Tekst użytkownika, który ma być wyświetlony w górnej części
klawiatury.
Uwagi
Funkcja jest stosowana głównie w aplikacjach z ekranem dotykowym.
Przykład
Errmsg=DialogStringEntry(MyMessageTag.Name,
"Enter a new string...");
Errmsg=DialogStringEntry("MyMessageTag","Enter a new string...");
Parametry mogą również być wykorzystane w charakterze "wskaźników" do innych
zmiennych, co umożliwia dynamiczne zmiany parametrów w czasie pracy aplikacji.
Errmsg=DialogStringEntry(MessageTagX, MessageDisplay);
W przykładzie powyżej użytkownik może przed wykonaniem funkcji modyfikować jej
parametry, poprzez zastosowanie w połączeniach do wprowadzania danych zmiennych
tekstowych.
Skrypt zamieszczony poniżej spowoduje wyświetlenie klawiatury alfanumerycznej,
pozwalającą na zmodyfikowanie zmiennej MyMessageTag, wyświetlając jednocześnie
komunikat "Enter a new string..." w górnej części klawiatury.
MessageTagX="MyMessageTag";
{
przypisanie zmiennej tekstowej
MyMessageTag (zmienna, która ma być modyfikowana) do zmiennej typu
Memory Message o nazwie MessageTagX}
MessageDisplay="Enter a new string..."; {przypisanie nowego ciągu
znaków do zmiennej typu Memory Message o nazwie MessageDisplay}
Errmsg=DialogStringEntry(MessageTagX,MessageDisplay);
{cudzysłów nie
jest wymagany, ponieważ zmienna MessageTagX została zdefiniowana
jako zmienna typu Message }
3-12
Rozdział 3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
DialogValueEntry()
różne
Funkcja ta wyświetla na ekranie klawiaturę alfanumeryczną umożliwiając użytkownikowi
zmianę aktualnej wartości zmiennej typu Discrete, Integer lub Real na Liście zmiennych.
Składnia
[Result=]DialogValueEntry(ValueTag_Text,
LowLimit,HighLimit,UserPrompt_Text
);
Parametry
Opis
Result
Przyjmuje jedną z następujących wartości:
0 = Naciśnięty został klawisz Cancel
1 = Naciśnięty został klawisz OK
-1 = HighLimit<=LowLimit
-2 = Brak możliwości inicjacji
-3 = Zmienna nie jest zdefiniowana
-4 = Zmienna nie jest zmienną typu Discrete, Integer lub Real
-5 = Brak możliwości zapisu
ValueTag_Text
Nazwa zmiennej typu Discrete, Integer lub Real, która ma zostać
zmodyfikowana. Ten parametr funkcji musi zostać podany jako
łańcuch znaków, dlatego nazwa zmiennej musi zostać podana w
cudzysłowie albo przy użyciu pola .Name (wtedy bez
cudzysłowu). Porównać z zamieszczonym w dalszej części
przykładem.
LowLimit
Określa minimalną dopuszczalną wartość zmiennej. (Powinna ona
być >= od wartości podanych w czasie definiowania zmiennej
wartości w polach Min Value, Min Raw, oraz Min EU, o ile są
wprowadzane wartości do tych pól).
HighLimit
Określa maksymalną dopuszczalną wartość zmiennej. (Powinna
ona być <= od podanych w czasie definiowania zmiennej wartości
w polach Max Value, Max Raw, oraz Max EU, o ile są
wprowadzane wartości do tych pól).
UserPrompt_Text
Tekst (wprowadzony przez użytkownika), który ma zostać
wyświetlony w górnej części klawiatury.
Uwagi
Funkcja jest stosowana głównie w aplikacjach z ekranem dotykowym.
Przykłady
Errmsg=DialogValueEntry(MyIntegerTag.Name, MyIntegerTag.MinEU,
MyIntegerTag.MaxEU, "Enter a new value...");
Errmsg=DialogValueEntry("MyIntegerTag", -100, 100, "Enter a new
value...");
Parametry mogą również działać jako wskaźniki, wskazujące na inne zmienne, co
umożliwia dynamiczną zmianę parametrów w czasie pracy aplikacji.
Errmsg=DialogValueEntry(TagnameX, Min, Max, MessageDisplay);
W przykładzie powyżej użytkownik może przed wykonaniem funkcji modyfikować jej
parametry poprzez wykorzystanie zmiennych wskazujących w połączeniach do
wprowadzania danych.
Funkcje skryptowe
3-13
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Skrypt zamieszczony poniżej spowoduje wyświetlenie klawiatury alfanumerycznej,
pozwalającej na wprowadzenie nowej wartości zmiennej MyIntegerTag, mieszczącej się w
granicach wyznaczonych przez Min i Max, wynoszących odpowiednio -100 i 100,
wyświetlając jednocześnie komunikat "Enter a new value..." w górnej części klawiatury.
TagnameX="MyIntegerTag";
{
przypisanie zmiennej MyIntegerTag
(zmienna, której wartość ma być zmieniona), do zmiennej typu Memory
Message o nazwie TagnameX}
Min=-100;
{minimalna dopuszczalna wartość modyfikowanej zmiennej
typu integer/ real}
Max=100;
{maksymalna, dopuszczalna wartość modyfikowanej zmiennej
typu integer/ real}
MessageDisplay="Enter a new string..."; {przypisanie nowego ciągu
znaków do zmiennej typu Memory Message o nazwie MessageDisplay}
Errmsg=DialogValueEntry(TagnameX, Min, Max, MessageDisplay;
{cudzysłów nie jest wymagany, ponieważ zmienna TagnameX została
zdefiniowana jako zmienna typu tekstowego}
Jeżeli do zmiennej
TagnameX przypisana zostanie inna zmienna typu Discrete, Integer
lub Real, funkcja zmodyfikuje wartość przypisanej zmiennej}
DText()
funkcje tekstowe
Funkcja ta dynamicznie zmienia zawartość zmiennej tekstowej w zależności od wartości
innej zmiennej dyskretnej (typu Discrete).
Składnia
MsgTag=DText(Discrete_Tag,OnMsg,OffMsg);
Parametry
Opis
MsgTag
Zmienna tekstowa .
Discrete_Tag
Zmienna dyskretna (typu Discrete).
OnMsg
Komunikat tekstowy, który będzie wyświetlany, gdy wartość
zmiennej Discrete_Tag wynosi 1 (True, On, Yes).
OffMsg
Komunikat tekstowy, który będzie wyświetlany, gdy wartość
zmiennej Discrete_Tag wynosi 0 (False, Off, No).
Przykład
MessageTag=Dtext(DiscreteTag, DiscreteTag.OnMsg,
DiscreteTag.OffMsg);
If Dtext(D_Tag, "True”, "False”) == "True” THEN
Message=”D_Tag contains a value of 1”;
ELSE
Message=”D_Tag contains a value of 0”;
ENDIF;
3-14
Rozdział 3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Exp()
funkcje matematyczne
Zwraca wartość e podniesioną do potęgi.
Składnia
Result=Exp(Number);
Parametry
Opis
Number
Dowolna liczba, zmienna rzeczywista lub całkowita programu
InTouch.
Uwagi
Liczba e jest podnoszona do potęgi Number, a wynik przypisywany jest do zmiennej
Result.
Przykład
Exp(1) zwraca 2.718...
Zakres argumentów dla tej funkcji: od -88.72 do 88.72.
FileCopy()
system
Kopiuje plik SourceFile do DestFile, podobnie jak polecenie copy systemu DOS czy
funkcja copy systemu Windows.
Składnia
FileCopy(SourceFile,DestFile,DoneTag);
Parametry
Opis
SourceFile
Nazwa pliku źródłowego (do skopiowania), włącznie z pełną
ścieżką dostępu.
DestFile
Nazwa pliku wynikowego, włącznie z pełną ścieżką dostępu, lub
nazwa katalogu (patrz przykłady poniżej).
DoneTag
Nazwa zmiennej używanej przez funkcję FileCopy() do
poinformowania o trwaniu procedury kopiowania. Parametr ten
musi być łańcuchem znaków wskazującym nazwę zmiennej (a nie
samą zmienną). Dlatego więc, jeśli zmienną służącą do
komunikowania o przebiegu operacji jest zmienna Monitor, jako
parametr należy podać "Monitor" lub Monitor.name, a nie
Monitor.
Uwagi
Funkcja FileCopy() zwraca natychmiast wartość 1, jeśli procedura kopiowania została
pomyślnie zainicjowana. Funkcja zwraca 0, jeśli inna procedura znajduje się w trakcie
realizacji (nowa procedura nie może zostać zainicjowana), oraz zwraca -1 w przypadku
błędu. Wartość ta pozwala na monitorowania inicjalizacji funkcji FileCopy().
Status=FileCopy("C:\*.TXT", "C:\BACKUP", "Monitor");
Status jest zmienną typu Integer, o wartościach wartość 1, -1 lub 0. Funkcja FileCopy() jest
wykonywana w tle, dlatego też nie zakłóca innych operacji realizowanych prze program
InTouch. Zmienna DoneTag umożliwia natomiast monitorowanie przez aplikację lub
użytkownika postępu operacji kopiowania. W ten sposób użytkownik może zostać
ostrzeżony o wszelkich błędach, które mogą wystąpić PO zainicjowaniu procedury.
Zmienna ta nie jest równoważna zmiennej Status zastosowanej w przykładzie powyżej,
która wskazuje wyłącznie, czy procedura kopiowania została pomyślnie zainicjowana.
Funkcje skryptowe
3-15
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Pomyślne zainicjowanie procedury kopiowania powoduje zmianę wartości zmiennej
DoneTag. Wartość ta jest ustawiana na 0 w czasie trwania operacji kopiowania. Jeżeli
wartość jest równa 1, operacja została pomyślnie zrealizowana, natomiast pojawienie się
wartości -1 informuje o wystąpieniu błędu przed zakończeniem procedury.
Zwykle nazwami plików są SourceFile i DestFile. Jeśli jednak za pomocą funkcji
FileCopy() kopiowany jest pojedynczy plik, zamiast nazwy pliku wynikowego można użyć
nazwy katalogu:
FileCopy("C:\DATA.TXT", "C:\BACKUP", "Monitor");
Instrukcja ta spowoduje skopiowanie pliku DATA.TXT do katalogu o nazwie BACKUP na
dysku "C:\”. Po zakończeniu tej operacji zmienna Monitor przyjmie wartość 1.
Jeżeli jednak nazwa SourceFile zawiera znaki wzorca, DestFile MUSI być kartoteką (nie
plikiem), bowiem w przeciwnym wypadku zwrócony zostanie błąd.
FileCopy("C:\*.TXT", "C:\BACKUP", "Monitor");
Instrukcja ta spowoduje skopiowanie wszystkich plików o rozszerzeniu .TXT do katalogu
C:BACKUP. Po zakończeniu tej operacji zmienna Monitor przyjmie wartość 1.
FileDelete()
system
Usuwa niepotrzebne pliki.
Składnia
FileDelete(Filename);
Parametry
Opis
FileName
Nazwa pliku do usunięcia.
Uwagi
Jeśli podany plik zostanie znaleziony i pomyślnie usunięty, funkcja zwraca wartość 1. W
przeciwnym razie funkcja zwraca wartość 0.
Przykład
Status=FileDelete("C:\DATA.TXT");
Zmienna Status przyjmuje wartość 1, jeśli plik o nazwie "DATA.TXT” został znaleziony w
katalogu głównym dysku C:, lub też 0, w wypadku przeciwnym.
3-16
Rozdział 3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
FileMove()
system
Działanie tej funkcja ta jest podobna do funkcji FileCopy() z tą różnicą, że powoduje ona
przesunięcie pliku SourceFile w nowe miejsce, a nie skopiowanie go.
Składnia
FileMove(SourceFile,DestFile,DoneTag);
Parametry
Opis
SourceFile
Nazwa pliku źródłowego, włącznie z pełną ścieżką dostępu.
DestFile
Nazwa pliku wynikowego, włącznie z pełną ścieżką dostępu.
DoneTag
Nazwa zmiennej, która zostanie użyta przez funkcję FileMove()
do powiadamiania o trwaniu procedury kopiowania. Parametr ten
musi być łańcuchem znaków wskazującym nazwę zmiennej (a nie
samą zmienną). Dlatego więc, jeśli zmienną służącą do
komunikowania o przebiegu operacji jest zmienna Monitor, jako
parametr należy podać "Monitor" lub Monitor.name, a nie
Monitor.
Uwagi
Funkcja FileMove() zwraca wartość 1, jeśli procedura kopiowania została pomyślnie
zainicjowana. Funkcja zwraca 0, jeśli inna procedura jest aktualnie realizowana (i nowa
procedura nie może zostać zainicjowana) oraz zwraca -1 w przypadku błędu. Używając tej
wartości można monitorować inicjowanie funkcji FileMove():
Status=FileMove("C:\DATA.TXT", "D:\DATA.TXT", "Monitor");
Status jest zmienną typu Integer, która przyjmuje wartość 1, -1 lub 0. Funkcja FileMove()
jest wykonywana w tle, dlatego też nie zakłóca funkcjonowania programu InTouch.
Zmienna DoneTag umożliwia natomiast monitorowanie postępu operacji przesuwania
pliku, przez aplikację lub użytkownika. W ten sposób użytkownik może zostać ostrzeżony
o wszelkich błędach, które mogą wystąpić PO zainicjowaniu procedury. Nie jest ona
równoważna zmiennej Status zastosowanej w przykładzie powyżej, która wskazuje tylko,
czy procedura przesuwania pliku została pomyślnie zainicjowana.
Po pomyślnym zainicjowaniu procedury przesuwania pliku ustawiana jest wartość
zmiennej DoneTag. Wartość ta jest ustawiana na 0, gdy procedura trwa, na 1 po
pomyślnym zakończeniu procedury lub na -1, jeśli przed zakończeniem kopiowania
wystąpi błąd. Jeżeli wartość jest równa 1, operacja została pomyślnie zrealizowana,
natomiast pojawienie się wartości -1 informuje o wystąpieniu błędu przed zakończeniem
procedury.
Jeśli SourceFile i DestFile znajdują się na tym samym dysku, funkcja zmienia tylko adres
miejsca w pamięci, gdzie przechowywane są dane o pliku, bez faktycznego
przemieszczania danych. W takim przypadku procedura jest wykonywana bardzo szybko,
niezależnie od rozmiarów pliku. Jeżeli pliki SourceFile i DestFile umieszczone są na
różnych dyskach, czas potrzebny na zrealizowanie operacji przesunięcia zależy od
rozmiaru pliku. Jest to powodowane przez fakt, że dane muszą być przesunięte z jednego
dysku fizycznego na drugi
Przykład
FileMove ("C:\DATA.TXT","C:\BACKUP\DATA.TXT","Monitor");
Instrukcja ta spowoduje przesunięcie pliku "DATA.TXT” z katalogu głównego dysku "C"
do podkatalogu o nazwie BACKUP na tym dysku: Po zakończeniu tej operacji zmienna
Monitor przyjmie wartość 1.
Uwaga Jeżeli w SourceFile i Destfile podano tę samą kartotekę ale różne nazwy plików,
funkcja ta spowoduje zmianę nazwy plików.
FileMove ("C:\DATA.TXT","C:\DATA.BAK","Monitor");
Instrukcja ta spowoduje zmianę nazwy pliku "DATA.TXT" na "DATA.BAK" w katalogu
głównym dysku C: Po zakończeniu tej operacji zmienna Monitor przyjmie wartość 1.
Funkcje skryptowe
3-17
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
FileReadFields()
system
Odczytuje rekord z zadanego pliku w formacie CSV (Comma Separated Variable -
zmienne oddzielone przecinkami).
Składnia
FileReadFields(Filename,FileOffset,StartTag,NumberOfFields);
Parametry
Opis
FileName
Nazwa pliku źródłowego do odczytu.
FileOffset
Miejsce rozpoczęcia odczytu (w pliku).
StartTag
Nazwa zmiennej zdefiniowanej w programie InTouch, w której
zostanie zapisany pierwszy element odczytany z pliku. Nazwa tej
zmiennej musi kończyć się liczbą (np. MyTag1). Parametr ten
musi być łańcuchem znaków wskazującym nazwę zmiennej (a nie
samą zmienną). Dlatego więc, jeśli rozważaną zmienną ma być
zmienna MyTag1, jako parametr należy podać "MyTag1" lub
MyTag1.name, a nie MyTag1.
NumberOfFields
Jest to liczba elementów do odczytu (liczba pól oddzielonych
przecinkami w każdym rekordzie pliku).
Uwagi
Jeśli parametrem StartTag jest zmienna MyTag1, a parametrem NumberOfFields jest 3, z
pliku odczytane zostaną trzy elementy i zostaną zapisane jako wartości zmiennych
MyTag1, MyTag2 i MyTag3. Zmienne te (o kolejnych numerach w nazwie) muszą zostać
wcześniej utworzone w programie InTouch i mogą być różnych typów (Integer, Message).
Przykłady
Jeśli pierwsza linia pliku C:\DATA\FILE.CSV ma postać:
This is text, 3.1416, 5
to instrukcja ta zamieszczona w skrypcie poniżej odczyta tę linię i zapisze "This is text"
jako zmienną MyTag1, 3.1416 jako zmienną MyTag2, a liczbę 5 jako zmienną MyTag3:
BytePosition=FileReadFields ("C:\DATA\FILE.CSV", 0, "MyTag1", 3);
Funkcja ta po zakończeniu odczytu zwraca nową pozycję bajtu. Można użyć tej wartości
jako parametru FileOffset do następnego odczytu.
FileReadFields ("C:\DATA\FILE.CSV",BytePosition,"MyTag1",3);
Uwaga Długość zmiennych tekstowych w programie InTouch nie może przekraczać 131
znaków.
3-18
Rozdział 3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
FileReadMessage()
system
Odczytuje podaną liczbę bajtów, lub całą linię z podanego pliku.
Składnia
FileReadMessage(Filename,FileOffset,Message_Tag,CharsToRead);
Parametry
Opis
FileName
Nazwa pliku źródłowego do odczytu.
FileOffset
Miejsce rozpoczęcia odczytu (w pliku).
Message_Tag
Nazwa zmiennej programu InTouch, w której zostanie zapisany
pierwszy element odczytany z pliku. Maksymalnie można
zapamiętać 131 znaków.
CharsToRead
Jest to liczba bajtów do odczytu z pliku. W przypadku
przetwarzania plików tekstowych, można ustawić wartość
CharsToRead na 0. Spowoduje to odczyt ciągu znaków do
rozpoczęcia kolejnej linii (znak LF).
Przykład
FileReadMessage ("C:\DATA\FILE.TXT", 0, MsgTag, 0);
Powyższa instrukcja spowoduje odczyt pierwszej linii z pliku "C:\data\fileTXT" i
przypisanie jej do zmiennej o nazwie MsgTag. Funkcja ta po zakończeniu odczytu zwraca
nową pozycję bajtu. Można użyć tej wartości jako parametru FileOffset do następnego
odczytu.
Funkcje skryptowe
3-19
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
FileWriteFields()
system
Zapisuje rekord do zadanego pliku w formacie CSV (Comma Separated Variable -
zmienne oddzielone przecinkami).
Składnia
FileWriteFields(Filename,FileOffset,StartTag,NumberOfFields);
Parametry
Opis
FileName
Nazwa pliku źródłowego, w którym ma zostać zapisany rekord.
Jeśli plik FileName nie istnieje, zostanie utworzony.
FileOffset
Miejsce rozpoczęcia zapisu (w pliku). Jeśli wartość parametru
FileOffset wynosi -1, funkcja dopisze rekord na końcu pliku.
StartTag
Nazwa zmiennej programu InTouch, z której zostanie wzięty
pierwszy element zapisany w pliku. Nazwa tej zmiennej musi
kończyć się liczbą (np. MyTag1). Parametr ten musi być
łańcuchem znaków zawierającym nazwę zmiennej (a nie samą
zmienną). Dlatego więc, jeśli rozważaną zmienną ma być
zmienna MyTag1, jako parametr należy podać "MyTag1" lub
MyTag1.name, a nie MyTag1.
NumberOfFields
Liczba elementów do zapisu (liczba pól oddzielonych
przecinkami w każdym rekordzie pliku).
Uwagi
Jeśli parametrem StartTag jest zmienna MyTag1, a parametrem NumberOfFields jest 3, w
pliku zapisane zostaną trzy elementy przechowywane jako MyTag1, MyTag2 i MyTag3.
Zmienne te (o kolejnych numerach w nazwie) muszą zostać wcześniej utworzone w
programie InTouch i mogą być różnych typów (Integer, Message).
Zamieszczony poniżej skrypt zapisuje linie "This is text, 3.1416,5" do pierwszej linii pliku
C:\DATA\FILE.CSV. "This is text" jest aktualną wartością zmiennej MyTag1, liczba
3.1416 jest wartością zmiennej MyTag2, a liczba 5 jest wartością zmiennej MyTag3:
FileWriteFields ("C:\DATA\FILE.CSV", 0, "MyTag1", 3);
Po zapisie funkcja zwraca nową pozycję położenia w pliku. Można użyć tej wartości jako
parametru FileOffset do następnego odczytu.
Poniższa instrukcja spowoduje zapisanie ciągu znaków MyTag1 na końcu pliku
C:\DATA\\FILE.CSV:
FileWriteFields ("C:\DATA\FILE.CSV", -1, "MyTag1", 3);
3-20
Rozdział 3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
FileWriteMessage()
system
Zapisuje podaną liczbę bajtów (lub całą linię) do podanego pliku.
Składnia
FileWriteMessage(Filename,FileOffset,Message_Tag,LineFeed);
Parametry
Opis
FileName
Nazwa pliku, w którym ma zostać zapisany ciąg znaków. Jeśli
plik FileName nie istnieje, zostanie utworzony.
FileOffset
Miejsce rozpoczęcia zapisu (w pliku). Jeśli wartość parametru
FileOffset wynosi -1, funkcja dopisze rekord na końcu pliku.
Message_Tag
Ciąg znaków, który ma zostać zapisany w pliku.
LineFeed
Parametr ten określa, czy po operacji zapisu przejść do następnej
linii (znak LF). W przypadku zapisu do pliku tekstowego
parametr LineFeed powinien mieć wartość 1.
Uwagi
Po odczycie funkcja zwraca nową pozycję położenia w pliku. Można użyć tej wartości jako
parametru FileOffset do następnego zapisu.
Przykład
Poniższa instrukcja zapis zawartości zmiennej MsgTag na końcu pliku
"C:\DATA\FILE.TXT":
FileWriteMessage ("C:\DATA\FILE.TXT", -1, MsgTag, 1);
GetNodeName()
system
Zwraca za pomocą zmiennej tekstowej nazwę stacji NetDDE.
Składnia
GetNodeName(Tagname,NodeNum);
Parametry
Opis
Tagname
Nazwa zmiennej tekstowej programu InTouch, w której zapisana
zostanie nazwa stacji.
NodeNum
Zmienna całkowita, określająca długość zmiennej tekstowej w
znakach.
Uwagi
Funkcja GetNodeName() zastosowana w skrypcie odczytuje nazwę lokalnej stacji i
zapisuje ją jako zmienną Tagname. Parametr NodeNum podaje długość zmiennej w
znakach).
Uwaga Funkcja ta działa wyłącznie jeżeli w środowisku Windows 95 pracuje NetDDE, lub
też jeżeli pracuje NetworkDDE w środowisku Windows NT.
Przykład
GetNodeName("MyNodeTag",131);
If MyNodeTag == "Master” THEN
MessageTag = "This is the Primary Machine!”;
ENDIF;
Funkcje skryptowe
3-21
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
GetPropertyD()
GOT
Odczytuje wartość dyskretną określonej właściwości.
Składnia
[ErrorNumber=]GetPropertyD("ControlName.Property",Tagname);
Parametry
Opis
ControlName
Nazwa obiektu sterującego okien, np. ChkBox_1, lub nazwa
obiektu do wyświetlania alarmów, np. AlmObj_1.
.Property
Właściwość obiektu sterującego okna lub obiektu do
wyświetlania alarmów.
! Więcej informacji na temat pól zmiennych można znaleźć w rozdziale 2 "Pola".
Tagname
Zdefiniowana zmienna programu InTouch, w której zostaje
zapisana odczytana wartość pola (zmienna tego samego typu, co
odczytana wartość).
! Kody błędów dla funkcji tego typu można znaleźć w Dodatku A: "Komunikaty o
błędach dla obiektów sterujących Windows i funkcji związanych z alarmowaniem
rozproszonym".
GetPropertyI()
GOT
Odczytuje wartość całkowitą określonej właściwości.
Składnia
[ErrorNumber=]GetPropertyI("ControlName.Property",Tagname);
Parametry
Opis
ControlName
Nazwa obiektu sterującego okien, np. ChkBox_1, lub nazwa
obiektu do wyświetlania alarmów, np. AlmObj_1.
.Property
Właściwość obiektu sterującego okna lub obiektu do
wyświetlania alarmów.
! Więcej informacji na temat pól zmiennych można znaleźć w rozdziale 2 "Pola".
Tagname
Zdefiniowana zmienna programu InTouch, w której zostaje
zapisana odczytana wartość pola (zmienna tego samego typu, co
odczytana wartość).
! Kody błędów dla funkcji tego typu można znaleźć w Dodatku A: "Komunikaty o
błędach dla obiektów sterujących Windows i funkcji związanych z alarmowaniem
rozproszonym".
3-22
Rozdział 3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
GetPropertyM()
GOT
Odczytuje wartość tekstową określonej właściwości.
Składnia
[ErrorNumber=]GetPropertyM("ControlName.Property",Tagname);
Parametry
Opis
ControlName
Nazwa obiektu sterującego okien, np. ChkBox_1, lub nazwa
obiektu do wyświetlania alarmów, np. AlmObj_1.
.Property
Właściwość obiektu sterującego okna lub obiektu do
wyświetlania alarmów.
! Więcej informacji na temat pól zmiennych można znaleźć w rozdziale 2 "Pola".
Tagname
Zdefiniowana zmienna programu InTouch, w której zostaje
zapisana odczytana wartość pola (zmienna tego samego typu, co
odczytana wartość).
! Kody błędów dla funkcji tego typu można znaleźć w Dodatku A: "Komunikaty o
błędach dla obiektów sterujących Windows i funkcji związanych z alarmowaniem
rozproszonym".
Hide
różne
Pozwala na ukrycie okna z poziomu skryptu. Funkcja Hide() musi poprzedzać nazwę
każdego okna, które ma być ukryte.
Składnia
Hide Window;
Parametry
Opis
Okno
Nazwa okna lub zmienna tekstowa.
Uwagi
W czasie pracy aplikacji, jeśli okno o podanej nazwie nie istnieje, instrukcja jest
ignorowana. Jeśli celem skryptu jest wyłącznie ukrycie lub wyświetlenia okna, najlepszym
rozwiązaniem jest wykorzystanie połączenia animacyjnego Show Window lub Hide
Window, związanego z przyciskiem.
Przykład
Hide "My Popup Alarm Window";
HideSelf
różne
Ukrywa aktywne okno.
Składnia
HideSelf;
Uwagi
Funkcja ta może zostać użyta tylko w skrypcie związanym z przyciskiem.
Funkcje skryptowe
3-23
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
HTGetLastError()
dane historyczne
Określa, czy podczas ostatniego odczytu danych dla określonego pisaka trendu
historycznego wystąpił błąd.
Składnia
[Result=]HTGetLastError(Hist_Tag,UpdateCount,PenNum);
Parametry
Opis
Hist_Tag
Nazwa zmiennej typu HistTrend reprezentującej trend
historyczny.
UpdateCount Liczba
całkowita reprezentująca wartość pola .UpdateCount
zmiennej reprezentującej trend.
PenNum
Zmienna typu Integer lub liczba całkowita określająca numer
pisaka (od 1 do 8).
Result
Funkcja zwraca następujące wyniki:
Wynik
Opis
0
Brak błędu.
1
Generalny błąd serwera.
2
Moduł trendów historycznych realizuje poprzednie
zapytanie.
3
Błąd pliku.
4
Serwer nie jest załadowany.
5
Trend lub pisak podany jako parametr funkcji nie
istnieje.
6
Nazwa zmiennej reprezentującej trend nie
występuje na liście zmiennych programu InTouch.
7
Numer pisaka podany jako parametr funkcji nie
mieści się w dopuszczalnym zakresie (od 1 do 8).
Przykład
Poniższa instrukcja powoduje odczytanie kodu błędu, który wystąpił podczas ostatniego
odczytu danych historycznych dla pisaka Pen3 trendu związanego ze zmienną Trend1 i
przypisanie tego kodu jako zmiennej całkowitej ResultCode:
[ResultCode=]HTGetLastError("Trend1",Trend1.UpdateCount,3);
Poniższą instrukcję można wykorzystać w wyrażeniu połączenia animacyjnego do
wyświetlania wartości analogowych:
HTGetLastError("Trend1",Trend1.UpdateCount,3);
3-24
Rozdział 3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
HTGetPenName()
dane historyczne
Odczytuje nazwę zmiennej aktualnie przypisanej do określonego pisaka danego trendu
historycznego.
Składnia
MessageResult=HTGetPenName(Hist_Tag,UpdateCount,PenNum);
Parametry
Opis
Hist_Tag
Nazwa zmiennej typu HistTrend reprezentującej trend
historyczny.
UpdateCount Liczba
całkowita zawierająca wartość pola .UpdateCount
zmiennej reprezentującej trend.
PenNum
Zmienna typu Integer lub liczba całkowita określająca numer
pisaka (od 1 do 8). Funkcja zwraca nazwę zmiennej związanej z
tym pisakiem w postaci zmiennej tekstowej (Message).
Przykład
Poniższa instrukcja powoduje odczytanie nazwy zmiennej przypisanej do pisaka Pen2
trendu związanego ze zmienną Trend1, i jej do zmiennej tekstowej TrendPen:
TrendPen=HTGetPenName("Trend1",Trend1.UpdateCount,2);
HTGetTimeAtScooter()
dane historyczne
Podaje w sekundach czas, jaki upłynął od godziny 00:00:00, 1 stycznia 1970 czasu GMT,
dla podanej pozycji suwaka określonej przez ScootLoc i ScooterNum.
Składnia
IntegerResult=HTGetTimeAtScooter(Hist_Tag,UpdateCount,
ScootNum,ScootLoc);
Parametry
Opis
Hist_Tag
Nazwa zmiennej typu HistTrend reprezentującej trend
historyczny.
UpdateCount Liczba
całkowita zawierająca wartość pola .UpdateCount
zmiennej reprezentującej trend.
ScootNum
Zmienna typu Integer lub liczba całkowita określająca prawy (=1)
lub lewy (=2) suwak.
ScootLoc
Liczba rzeczywista równa wartości pola .ScooterPosRight lub
.ScooterPosLeft zmiennej reprezentującej trend.
Uwagi
W przypadku gdy parametry UpdateCount, ScootNum, i ScootLoc ulegną zmianie,
wymuszane jest uaktualnienie wartości wyrażenia. Zapewnia to obliczanie wartości
wyrażenia po znalezieniu nowych danych, lub po przemieszczeniu suwaka.
Przykład
Poniższa instrukcja powoduje odczytanie czasu (w sekundach) dla aktualnej pozycji lewego
suwaka trendu reprezentowanego przez zmienną Trend1:
HTGetTimeAtScooter("Trend1",Trend1.UpdateCount,1,
Trend1.ScooterPosLeft);
Funkcje skryptowe
3-25
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
HTGetTimeStringAtScooter
(
)
dane historyczne
Zwraca ciąg znaków zawierający czas/datę próbki w pozycji suwaka określonej przez
ScootNum i ScootLoc.
Składnia
MessageResult=HTGetTimeStringAtScooter(Hist_Tag,
UpdateCount,ScootNum,ScootLoc,Format_Text);
Parametry
Opis
Hist_Tag
Nazwa zmiennej typu HistTrend reprezentującej trend
historyczny.
UpdateCount Liczba
całkowita reprezentująca wartość pola .UpdateCount
zmiennej reprezentującej trend.
ScootNum
Zmienna typu Integer lub liczba całkowita określająca prawy (=1)
lub lewy (=2) suwak.
ScootLoc
Liczba rzeczywista równa wartości pola .ScooterPosRight lub
.ScooterPosLeft zmiennej reprezentującej trend.
Format_Text
Łańcuch znaków określający format czasu/daty, który ma zostać
użyty. Jako Format_Text akceptowane są następujące łańcuchy
znaków:
"Date" , "Time" , "DateTime" , "DOWShort" (dzień tygodnia w
skrócie, np. Wed - środa), "DOWLong" (dzień tygodnia w
całości, np. Wednesday - środa).
Uwagi
W przypadku gdy parametry UpdateCount, ScootNum, i ScootLoc ulegną zmianie,
wymuszane jest uaktualnienie wartości wyrażenia. Zapewnia to zaktualizowanie wartości
po znalezieniu nowych danych, lub po przemieszczeniu suwaka. Format tekstu określa
zawartość wartości zwracanej.
Przykład
Poniższa instrukcja powoduje odczytanie daty i czasu dla aktualnej pozycji prawego
suwaka trendu reprezentowanego przez zmienną Trend1. Data i czas są zapisywane jako
zmienna tekstowa o nazwie NewRightTimeString w formacie "Time":
NewRightTimeString=HTGetTimeStringAtScooter
("Trend1",Trend1.UpdateCount,2,Trend1.ScooterPosRight,"Time");
3-26
Rozdział 3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
HTGetValue()
dane historyczne
Zwraca wartość określonego typu (np. maksymalna, minimalna, średnia, itp.) dla wykresu
trendu historycznego dla danego pisaka. Parametr UpdateCount wymusza obliczanie
wartości wyrażenia po odczytaniu danych.
Składnia
RealResult=HTGetValue(Hist_Tag,UpdateCount,PenNum,ValType_Text);
Parametry
Opis
Hist_Tag
Nazwa zmiennej typu HistTrend reprezentującej trend
historyczny.
UpdateCount Liczba
całkowita reprezentująca wartość pola .UpdateCount
zmiennej reprezentującej trend.
PenNum
Zmienna typu Integer lub liczba całkowita określająca numer
pisaka (od 1 do 8).
ValType_Text
Łańcuch znaków określający rodzaj wskaźnika, który ma być
obliczony przez funkcję:
Typ Opis
"PenAverageValue" Wartość średnia dla całego trendu.
"PenMaxValue" Wartość maksymalna dla całego trendu.
"PenMinValue" Wartość minimalna dla całego trendu.
"PenMaxEU" Wartość maksymalna w jednostkach
inżynierskich dla całego trendu.
"PenMinEU" Wartość minimalna w jednostkach
inżynierskich dla całego trendu.
"PenStdDev" Wartość odchylenia standardowego dla całego
trendu.
Uwaga W przypadku korzystania z parametru ValType_Text w
połączeniu z funkcją HTGetValue, należy upewnić się, że
wykorzystywany jest jeden z dopuszczalnych typów, wymienionych
powyżej.
Uwagi
Wynikiem obliczeń jest wartość rzeczywista obliczonego wskaźnika, którą można zapisać
jako zmienną pamięciową typu Real.
Przykład
Poniższa instrukcja powoduje odczytanie standardowego odchylenia danych zebranych dla
pola Trend.Pen2.: Wartość ta jest zapamiętywana w zmiennej typu Memory Real o nazwie
LeftHemisphereSD:
LeftHemisphereSD=HTGetValue("Trend1",Trend1.UpdateCount,
2,"PenStdDev");
Funkcje skryptowe
3-27
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
HTGetValueAtScooter()
dane historyczne
Zwraca wartość odpowiedniego typu dla próbki wyznaczonej przez pozycje suwaka na
trendzie oraz numer pisaka. Parametr UpdateCount wymusza obliczanie wartości
wyrażenia po odczytaniu danych.
Składnia
RealResult=HTGetValueAtScooter(Hist_Tag,UpdateCount,ScootNum,
ScootLoc,PenNum,ValType_Text);
Parametry
Opis
Hist_Tag
Nazwa zmiennej typu HistTrend reprezentującej trend
historyczny.
UpdateCount Liczba
całkowita reprezentująca wartość pola .UpdateCount
zmiennej reprezentującej trend.
ScootNum
Zmienna typu Integer lub liczba całkowita określająca prawy (=1)
lub lewy (=2) suwak.
ScootLoc
Liczba rzeczywista równa wartości pola .ScooterPosRight lub
.ScooterPosLeft zmiennej reprezentującej trend.
PenNum
Zmienna typu Integer lub liczba całkowita określająca numer
pisaka (od 1 do 8).
ValType_Text
Łańcuch znaków określający rodzaj wartości, która ma być
obliczona przez funkcję:
Typ
Opis
"PenValue" Wartość na wykresie w pozycji suwaka.
"PenValid"
0 - jeśli wartości nie można wyznaczyć,
Uwaga W przypadku korzystania z parametru ValType_Text w
połączeniu z funkcją HTGetValueAtScooter należy upewnić się, że
wykorzystywany jest jeden z dopuszczalnych typów, wymienionych
powyżej.
Uwagi
Wracana jest zmienna typu Memory Real, reprezentująca wartość obliczoną dla
"PenValue". Wracana jest zmienna typu Discrete, reprezentująca wartość obliczoną dla
"PenValid".
Przykład
Poniższa instrukcja powoduje przypisanie zmiennej dyskretnej o nazwie ValidFlag
wartości 1, jeśli wartość próbki odpowiadającej bieżącej pozycji prawego suwaka dla
pisaka Pen3 na wykresie trendu związanego ze zmienną Trend1 można wyznaczyć, lub
wartości 0, jeśli wartości próbki nie można wyznaczyć:
ValidFlag=HTGetValueAtScooter("Trend1",Trend1.UpdateCount,2,
Trend1.ScooterPosRight,3,"PenValid");
3-28
Rozdział 3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
HTGetValueAtZone()
dane historyczne
Zwraca wartość określonego typu (np. maksymalna, minimalna, średnia, itp.) dla danych
zawartych pomiędzy lewym i prawym suwakiem na wykresie trendu historycznego, dla
danego pisaka. Parametr UpdateCount wymusza obliczanie wartości wyrażenia po
odczytaniu danych.
Składnia
RealResult=HTGetValueAtZone(Hist_Tag,UpdateCount,Scoot1Loc,
Scoot2Loc,PenNum,ValType_Text);
Parametry
Opis
Hist_Tag
Nazwa zmiennej typu HistTrend reprezentującej trend
historyczny.
UpdateCount Liczba
całkowita reprezentująca wartość pola .UpdateCount
zmiennej reprezentującej trend.
Scoot1Loc
Liczba rzeczywista równa wartości pola .ScooterPosLeft
(pozycja lewego suwaka) zmiennej reprezentującej trend.
Scoot2Loc
Liczba rzeczywista równa wartości pola .ScooterPosRight
(pozycja prawego suwaka) zmiennej reprezentującej trend.
PenNum
Zmienna typu Integer lub liczba całkowita określająca numer
pisaka (od 1 do 8).
ValType_Text
Łańcuch znaków określający rodzaj wskaźnika, który ma być
obliczony przez funkcję:
Typ
Opis
"PenAverageValue" Wartość średnia dla obszaru pomiędzy lewym a
prawym suwakiem.
"PenMaxValue" Wartość maksymalna dla obszaru pomiędzy lewym
a prawym suwakiem.
"PenMinValue" Wartość minimalna dla obszaru po-między lewym
a prawym suwakiem.
"PenMaxEU" Wartość maksymalna w jednostkach inżynierskich
dla obszaru pomiędzy lewym a prawym suwakiem.
"PenMinEU" Wartość minimalna w jednostkach inżynierskich
dla obszaru pomiędzy lewym a prawym suwakiem.
"PenStdDev" Wartość odchylenia standardowego dla obszaru
pomiędzy lewym a prawym suwakiem.
Uwaga W przypadku korzystania z parametru ValType_Text w
połączeniu z funkcją HTGetValueAtZone należy upewnić się, że
wykorzystywany jest jeden z dopuszczalnych typów, wymienionych
powyżej.
Uwagi
Wynikiem obliczeń jest wartość rzeczywista obliczonego wskaźnika, którą można zapisać
jako zmienną pamięciową typu Real. Podanie stałych wartości dla parametrów ScootLoc i
Scoot2Loc nie daje żadnego rezultatu, i może być stosowane wyłącznie aby wywołać
funkcję w celu uaktualnienia wyświetlanych linii. Funkcja ta, w celu wyznaczenia granic,
korzysta bezpośrednio z pól trendu.ScooterPosLeft i .ScooterPosRight,
przechowywanych w roboczej bazie danych.
Przykład
Zamieszczona poniżej instrukcja oblicza wartość średnią danych pomiędzy lewym a
prawym suwakiem trendu "Trend1", dla pisaka Pen1. Wartość ta jest zapamiętywana w
zmiennej typu Memory Real o nazwie AvgValue.
AvgValue=HTGetValueAtZone("Trend1",Trend1.UpdateCount,
Trend1.ScooterPosLeft,Trend1.ScooterPosRight,1,
"PenAverageValue");
Funkcje skryptowe
3-29
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
HTScrollLeft()
dane historyczne
Przesuwa punkt początkowy wykresu trendu do tyłu, w stosunku do aktualnego punktu
początkowego o czas stanowiący procentową część długości wykresu trendu. Powoduje to
przewinięcie wykresu w lewo o określoną procentowo wartość.
Składnia
HTScrollLeft(Hist_Tag,Percent);
Parametry
Opis
Hist_Tag
Nazwa zmiennej typu HistTrend reprezentującej trend
historyczny.
Percent
Liczba rzeczywista oznaczająca wartość przesunięcia w
procentach długości wykresu.
Przykład
Poniższa instrukcja powoduje przesunięcie wykresu trendu związanego ze zmienną Trend1
o 10% w prawo:
HTScrollLeft("Trend1",10.0);
Jeśli aktualny wykres rozpoczyna się o 12:00:00, a długość wykresu w jednostkach czasu
wynosi 60 sekund, to po wykonaniu tej operacji nowy wykres będzie zaczynał się o
11:59:54.
HTScrollRight()
dane historyczne
Przesuwa punkt początkowy wykresu trendu do przodu, w stosunku do aktualnego
momentu początkowego o czas stanowiący procentową część długości wykresu trendu.
Powoduje to przewinięcie wykresu w prawo o określoną procentowo wartość.
Składnia
HTScrollRight(Hist_Tag,Percent);
Parametry
Opis
Hist_Tag
Nazwa zmiennej typu HistTrend reprezentującej trend
historyczny.
Percent
Liczba rzeczywista oznaczająca wartość przesunięcia w
procentach długości wykresu.
Przykład
Poniższa instrukcja powoduje przesunięcie wykresu trendu związanego ze zmienną Trend1
o 20% w prawo:
HTScrollRight("Trend1",20.0);
Jeśli aktualny wykres rozpoczyna się o 12:00:00, a długość wykresu w jednostkach czasu
wynosi 60 sekund, to po wykonaniu tej operacji nowy wykres będzie zaczynał się o
12:00:12.
3-30
Rozdział 3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
HTSelectTag()
różne
Wyświetla okno dialogowe Select Tag, za pomocą którego operator może przypisać inną
zmienną do danego pisaka. (W oknie tym wyświetlane są wyłącznie zmienne, które zostały
włączone do logowania historycznego (zaznaczona została opcja Log Data)).
Składnia
HTSelectTag();
Uwagi
Funkcja HTSelectTag() pokazuje wszystkie zmienne, dla których ustawiono opcję Log
Data. Można jednak za pomocą filtra, zdefiniowanego w Przeglądarce zmiennych,
ograniczyć liczbę wyświetlanych zmiennych. Przykładowo, można wyświetlić wyłącznie
zmienne, których nazwa rozpoczyna się od litery A. NIE jest jednak możliwe
wykorzystanie funkcji HTSelectTag() do wyświetlania wszystkich zmiennych
zdefiniowanych w bazie danych, można wyświetlać wyłącznie zmienne historyczne.
Przykłady
Skrypt związany z przyciskiem może zawierać przedstawioną poniżej instrukcję. Powoduje
ona wyświetlenie Przeglądarki zmiennych w programie WindowViewer. Użytkownik może
zaznaczyć jedną ze zmiennych, wyświetlanych na liście. Zmienna ta zostanie następnie
przypisana do pisaka Pen1, trendu historycznego o nazwie HistTrend.
HTSetPenName( "HistTrend", 1, HTSelectTag( ) );
Patrz również
HTSetPenName()
HTSetPenName()
dane historyczne
Przypisanie innej zmiennej do pisaka trendu.
Składnia
HTSetPenName(Hist_Tag,PenNum,Tagname);
Parametry
Opis
Hist_Tag
Nazwa zmiennej typu HistTrend reprezentującej trend
historyczny.
PenNum
Zmienna typu Integer lub liczba całkowita równa numerowi
pisaka (od 1 do 8), który ma zostać związany z zmienną
Tagname.
Tagname
Zmienna tekstowa oznaczająca nazwę zmiennej przypisanej
danemu pisakowi.
Uwagi
Jedyną metodą dodawania zmiennych, od dostawcy danych historycznych w czasie pracy
aplikacji, jest korzystanie z funkcji skryptowych.
Przykłady
Zamieszczona poniżej instrukcja powoduje przypisanie zmiennej OutletPressure do pola
Pen3 trendu Trend1.
HTSetPenName("Trend1",3,"OutletPressure");
Zamieszczona poniżej instrukcja powoduje przypisanie zmiennej rozproszonej
HistPrv1.Tag1 do TrendPen4 trendu Trend1.
HTSetPenName("Trend1",TrendPen4,"HistPrv1.Tag1");
Patrz również
HTSelectTag();
Funkcje skryptowe
3-31
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
HTUpdateToCurrentTime()
dane historyczne
Odczytuje i wyświetla dane historyczne dla okresu kończącego się w bieżącej chwili. Punkt
początkowy wykresu trendu historycznego będzie równy różnicy punktu końcowego i
długości wykresu.
Składnia
HTUpdateToCurrentTime(Hist_Tag);
Parametry
Opis
Hist_Tag
Nazwa zmiennej typu HistTrend reprezentującej trend
historyczny.
Przykład
Poniższa instrukcja powoduje odczytanie i zaktualizowanie, aż do bieżącego momentu,
danych dla wykresu trendu historycznego związanego ze zmienną "Trend1":
HTUpdateToCurrentTime("Trend1");
Jeśli wykres rozpoczyna się o 16:04, a długość wykresu w jednostkach czasu wynosi 60
sekund, to po wykonaniu tej instrukcji wykres będzie kończył się dla danych zebranych o
godzinie 16.04. Nową godziną początkową będzie 16.03.
HTZoomIn()
dane historyczne
Oblicza nową szerokość wykresu oraz punkt początkowy. Jeżeli wartość .ScooterPosLeft
jest równa 0.0, a wartość ScooterPosRight jest równa 1.0, to nowa szerokość wykresu jest
równa szerokości starego wykresu podzielonej przez dwa. Nowy punkt początkowy
zostanie obliczony na podstawie wartości LockString.
Składnia
HTZoomIn(Hist_Tag,LockString);
Parametry
Opis
Hist_Tag
Nazwa zmiennej typu HistTrend reprezentującej trend
historyczny.
LockString
Łańcuch znaków określający sposób zmiany skali wykresu.
Typ
Opis
"StartTime" Punkt
początkowy wykresu pozostaje bez zmian.
"Center"
Centralny punkt wykresu pozostaje bez zmian.
"EndTime" Punkt
końcowy wykresu pozostaje bez zmian.
Uwagi
Jeśli pozycje suwaków nie odpowiadają krawędziom wykresu, nowa długość okna wykresu
będzie odpowiadała odległości pomiędzy suwakami (.ScooterPosLeft a
.ScooterPosRight). W takim przypadku parametr LockString nie jest używany. Minimalna
długość okna wykresu wynosi 1 sekundę. Po zmianie skali wykresu, suwaki przyjmą
następujące pozycje: .ScooterPosLeft=0.0 oraz .ScooterPosRight=1.0.
Przykład
Zamieszczona poniżej instrukcja powoduje dwukrotne powiększenie wyświetlanego
wykresu, z zachowaniem tego punktu początkowego wykresu dla zmiennej "Trend1". Pole
Trend1.ScooterPosRight jest równe 1.0, a pole Trend1.ScooterPosLeft jest równe 0.0. Jeśli
punkt początkowy wykresu przypadał na godz. 13:25:00, długość wykresu w jednostkach
czasu wynosiła 30 sekund, to po wykonaniu operacji powiększenia, nowy wykres będzie
zaczynał się nadal o godz. 13:25:00, ale jego długość wynosić będzie tylko 15 sekund.
HTZoomIn("Trend1","StartTime");
3-32
Rozdział 3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
HTZoomOut()
dane historyczne
Oblicza nową szerokość wykresu oraz punkt początkowy. Nowa szerokość wykresu jest
równa szerokości starego wykresu pomnożonej przez dwa. Nowy punkt początkowy
zostanie obliczony na podstawie wartości LockString.
Składnia
HTZoomOut(Hist_Tag,LockString);
Parametry
Opis
Hist_Tag
Nazwa zmiennej typu HistTrend reprezentującej trend
historyczny.
LockString
Łańcuch znaków określający sposób zmiany skali wykresu.
Typ
Opis
"StartTime" Punkt
początkowy wykresu pozostaje bez zmian.
"Center"
Centralny punkt wykresu pozostaje bez zmian.
"EndTime" Punkt
końcowy wykresu pozostaje bez zmian.
Uwagi
Pozycje suwaków nie mają wpływu na działanie funkcji HTZoomOut, ale po wykonaniu
operacji zmiany skali wykresu przyjmą one następujące wartości: .ScooterPosLeft=0.0
oraz .ScooterPosRight=1.0.
Przykład
Zamieszczona poniżej instrukcja powoduje dwukrotne powiększenie wyświetlanego
wykresu, z zachowaniem tego samego punktu początkowego. Jeśli wykres rozpoczynał się,
przed jego powiększeniem, o godz. 14:15:00, długość wykresu w jednostkach czasu
wynosiła 30 sekund, to po wykonaniu operacji powiększenia nowy wykres będzie zaczynał
się nadal o godz. 14:15:00. Długość wykresu nadal wynosić będzie 60 sekund, a środek
rysowanego wykresu przypadał będzie na godz. 14:15:15.
HTZoomOut("Volume","Center");
InfoAppActive()
system
Sprawdza czy podana aplikacja jest uruchomiona.
Składnia
DiscreteResult=InfoAppActive(AppTitle);
Parametry
Opis
AppTitle
Nazwa sprawdzanej aplikacji podana jako łańcuch znaków.
Przykład
InfoAppActive("Microsoft Excel") zwraca
1 {jeżeli uruchomiony}
InfoAppActive("Calculator") zwraca 0 { jeżeli nie jest uruchomiony}
Uwaga: Nazwę danej aplikacji można uzyskać stosując funkcję InfoAppTitle().
Zamieszczony poniżej skrypt korzysta z funkcji InoAppActive do sprawdzenia listy zadań
uruchomionych w systemie. Jeżeli jest uruchomione zadanie o nazwie Notatnik, zwracana
jest wartość 1. Pozwala to na uniknięcie uruchamiania drugiej kopii programu Notatnik.
Jeżeli funkcja InfoAppActive zwraca wartość 0 (Notatnik nie jest uruchomiony), następuje
jego uruchomienie.
IF InfoAppActive( InfoAppTitle( "Notepad" ) ) == 1 THEN
ActivateApp InfoAppTitle( "Notepad" );
ELSE
StartApp "Notepad";
ENDIF;
Funkcje skryptowe
3-33
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
InfoAppTitle()
system
Zwraca nazwę uruchomionej aplikacji (znajdującą się na pasku tytułowym).
Składnia
MessageResult=InfoAppTitle("ProgramEXEName”);
Parametry
Opis
ProgramEXEName Łańcuch znaków zawierający nazwę pliku z rozszerzeniem .EXE.
Przykład
Zamieszczona poniżej przykładowa instrukcja z parametrem ProgramEXEName= "calc"
zwróci wartość "Kalkulator". Program nazywa się w rzeczywistości calc.exe. W nazwie
programu nie podawać rozszerzenia EXE.
InfoAppTitle("calc") zwraca "Calculator"
InfoAppTitle("excel") zwraca "Microsoft Excel"
3-34
Rozdział 3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
InfoDisk()
system
Zwraca informacje na temat lokalnego lub sieciowego napędu.
Składnia
IntegerResult=InfoDisk("Drive”,InfoType,Trigger);
Parametry
Opis
Drive
Łańcuch znaków lub zmienna tekstowa z nazwą dysku.
InfoType
Liczba całkowita określająca rodzaj informacji:
Typ
Opis
1
Odczyt całkowitej pojemności dysku (w bajtach).
2
Odczyt dostępnego, wolnego obszaru na dysku (w
bajtach).
3
Całkowita pojemność dysku (w kilobajtach).
4
Ilość wolnego obszaru na dysku (w kilobajtach).
Trigger
Funkcja InfoDisk jest wykonywana po każdej zmianie parametru
Trigger. Parametr ten może być dowolną zmienną (bez
ograniczenia do zmiennych systemowych). Parametr ten
wykorzystywany jest wyłącznie w polach wyrażeń połączeń
animacyjnych, można użyć dowolnej wartości w przypadku, gdy
funkcja InfoDisk() wykorzystywana jest w skrypcie, ponieważ
parametr ten nie ma żadnego wpływu na wykonywanie skryptu.
Uwagi
Informacje o dysku określonym parametrem Drive są zwracane jako wartość całkowita.
Przykład
Zamieszczona poniżej instrukcja jest wykonywana co minutę, zwracając bieżącą wartość.
Po umieszczeniu w połączeniu wyświetlającym wartości analogowych, wartość będzie
uaktualniana co minutę.
InfoDisk("C", 1, $Minute) zwraca 233869345 {całkowita pojemność w
bajtach}
InfoDisk("C", 2, $Minute) zwraca 3238935 {wolne miejsce w bajtach}
InfoDisk("C", 3, $Minute) zwraca 228388 {całkowita pojemność w
kilobajtach}
InfoDisk("C", 4, $Minute) zwraca 3163 {wolne miejsce w kilobajtach}
Komentarz
1 kilobajt = 1024 bajtów
Podobnie jak w przypadku innych funkcji, które wykorzystują pojedyncze znaki, jeśli
badany łańcuch znaków (lub zmienna tekstowa) zawiera więcej niż jeden znak, testowany
jest tylko pierwszy znak tego łańcucha. Ponieważ funkcja ta korzysta z informacji
dostarczanych przez system operacyjny, może zwracać błędne wartości w przypadku
zainstalowania w komputerze pracującym w systemie operacyjnym Windows 95 dysku o
pojemności większej niż 2 gigabajty.
Funkcje skryptowe
3-35
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
InfoFile()
system
Zwraca informacje o określonym pliku lub kartotece.
Składnia
IntegerResult=InfoFile("Filename”,”InfoType”,Trigger);
Parametry
Opis
FileName
Łańcuch znaków zawierający nazwę pliku.
InfoType
Liczba całkowita określająca rodzaj informacji:
Typ
Opis
1
Sprawdza czy zadany plik istnieje. Jeżeli parametr
Filename jest plikiem, zwracana jest wartość 1.
Jeżeli parametr Filename jest podkartoteką,
zwracana jest wartość 2. W przypadku gdy funkcja
nie może znaleźć pliku, zwracana jest wartość 0.
2
Rozmiar pliku (w bajtach).
3
Data i czas zapisu pliku (w sekundach od 1
stycznia 1970).
4
Liczba plików odpowiadających opisowi. Wartości
większe od 1 zostaną zwrócone tylko w przypadku
szukania z zastosowaniem znaków * lub ?, gdy
znalezionych może zostać więcej plików
odpowiadających opisowi.
Trigger
Dowolna zmienna. Funkcja InfoFile jest wykonywana po każdej
zmianie parametru Trigger. Parametr ten wykorzystywany jest
wyłącznie w polach wyrażeń połączeń animacyjnych, można użyć
dowolnej wartości w przypadku, gdy funkcja InfoFile()
wykorzystywana jest w skrypcie, ponieważ parametr ten nie ma
żadnego wpływu na wykonywanie skryptu.
Uwagi
Informacje o pliku określonym parametrem FileName są zwracane jako wartość całkowita.
Parametr Filename musi zawierać pełną ścieżkę dostępu do pliku i może zawierać znaki *
oraz ?.
Przykład
Zamieszczona poniżej przykładowa instrukcja zwraca co minutę następujące informacje:
InfoFile("c:\IT56\view.exe", 1, $Minute) zwraca 1
{pik znaleziony}
InfoFile("c:\InTouch\view.exe", 2, $Minute) zwraca 634960
{rozmiar pliku}
InfoFile("c:\InTouch\view.exe", 3, $Minute) zwraca 736701852
{liczba sekund od 1-1-70}
InfoFile("c:\InTouch\*.exe", 4, $Minute) zwraca 17
{znaleziono 17 plików .EXE }
InfoInTouchAppDir()
system
Zwraca kartotekę aktualnej aplikacji InTouch.
Składnia
MessageResult=InfoInTouchAppDir();
Uwagi
Nazwa katalogu aktualnie uruchomionej aplikacji programu InTouch przypisywana jest do
parametru MessageResult.
Przykład
InfoInTouchAppDir() zwraca "c:\InTouch.32\demoapp1"
3-36
Rozdział 3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
InfoResources()
system
Funkcja ta dostarcza różnych informacji o zasobach systemu.
Składnia
IntegerResult=InfoResources(ResourceType,Trigger);
Parametry
Opis
ResourceType
Liczba całkowita określająca rodzaj informacji:
Typ
Opis
1
Wolna pamięć GDI.
2
Wolna pamięć Użytkownika.
3
Liczba bajtów aktualnie wolnej pamięci.
4
Liczba aktywnych aplikacji.
Trigger
Funkcja InfoResources() jest wykonywana po każdej zmianie
parametru Trigger. Parametr ten może być dowolną zmienną (bez
ograniczenia do zmiennych systemowych). Parametr ten
wykorzystywany jest wyłącznie w polach wyrażeń połączeń
animacyjnych. W przypadku, gdy funkcja InfoResources()
wykorzystywana jest w skrypcie, można użyć dowolnej wartości
w przypadku, ponieważ parametr ten nie ma żadnego wpływu na
wykonywanie skryptu.
Uwagi
Żądane informacje o zasobach systemu, zgodnie z wartością parametru ResourceType,
zwracane są jako wartość całkowita.
Przykład
Zamieszczona poniżej przykładowa instrukcja zwraca co minutę następujące informacje:
InfoResources(1, $Minute) zwraca 54 {% wolnych}
InfoResources(2, $Minute) zwraca 36 {% wolnych }
InfoResources(3, $Minute) zwraca 11524093 {bajtów}
InfoResources(4, $Minute)
zwraca 14 {zadań}
Przykład
Informacje o zasobach systemu:
Przypadek 1 i Przypadek 2:
Pamięci GDI i Użytkownika zakodowane są na zwracanie 50% w systemach Windows NT i
Windows 95.
Przypadek 3:
W systemie Windows NT i Windows 95 zwracana jest "liczba wolnych bajtów pliku
stronicowania".
Przypadek 4:
W systemie Windows NT i Windows 95 zwracany jest wynik przeszukiwania wszystkich
okien umieszczonych na samej górze. Zliczane są wyłącznie okna widoczne, nie należące
do innych okien. Nie jest to w rzeczywistości "liczba zadań uruchomionych w danej chwili"
w systemie. Najlepszym przybliżeniem tej liczby jest liczba elementów na zakładce
Aplikacje dostępnej po uruchomieniu Menadżera zadań w systemie Windows NT, lub
liczba pozycji wyświetlana na liście po wciśnięciu klawiszy
CTRL
+
ALT
+
DEL
w systemie
Windows 95.
Funkcje skryptowe
3-37
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Int()
funkcje matematyczne
Zwraca najbliższą liczbę całkowitą, mniejszą lub równą podanej liczbie.
Składnia
IntegerResult=Int(Number);
Parametry
Opis
Number
Dowolna liczba, zmienna rzeczywista lub całkowita programu
InTouch.
Uwagi
W przypadku podanej liczby ujemnej wynikiem działania funkcji jest największa liczba
całkowita mniejsza lub równa argumentowi funkcji.
Przykład
Int(4.7) zwraca 4
Int(-4.7) zwraca -5
3-38
Rozdział 3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
IOSetAccessName()
różne
Zmodyfikowanie części application lub topic Nazwy dostępu w czasie wykonywania aplikacji, co pozwala na
zaimplementowanie strategii hot- backup (rezerwacji komunikacji).
Składnia
IOSetAccessName("AccessName”, "NodeName”, "AppName”, "TopicName”);
Parametry
Opis
AccessName
Istniejąca Nazwa dostępu, dla której mają być przypisane nowe
wartości parametrów AppName, i TopicName. Łańcuch znaków
lub zmienna tekstowa.
NodeName
Sieciowa nazwa komputera
AppName
Nowa wartość parametru AppName. Łańcuch znaków lub
zmienna tekstowa.
TopicName
Nowa wartość parametru TopicName. Łańcuch znaków lub
zmienna tekstowa.
Uwagi
Parametry AccessName, AppName i TopicName mogą być łańcuchami znaków,
wartościami innych zmiennych programu InTouch, lub wartościami funkcji. Przykładowo,
Nazwa dostępu MyAccess może zostać zmieniona tak, aby wskazywać na aplikację
"EXCEL", oraz temat "Sheet1" przy pomocy polecenia:
Przykład
IOSetAccessName("MyAccess1", "KS1", "EXCEL", "Sheet1");
lub poprzez
Number = 1;
AccNameString = "MyAccess" + Text(Number, "#");
IOSetAccessName(AccNameString, "KS1", "EXCEL", "Sheet1");
W przypadku gdy jako TopicName wprowadzony zostanie pusty łańcuch znaków, Nazwa
dostępu bieżącej aplikacji nie ulegnie zmianie, a Nazwa tematu zostanie zaktualizowana.
Zamieszczona poniżej instrukcja zmienia wartość AppName dla parametru AccessName na
"excel", bez wprowadzania zmian w bieżącej wartości TopicName.
IOSetAccessName("MyAccess2", "KS1", "excel", "");
Podobnie, jeżeli dla parametru AppName wprowadzony zostanie pusty łańcuch znaków ,
bieżąca wartość TopicName nie ulegnie zmianie, a parametr AppName zostanie
zaktualizowany. Zamieszczona poniżej instrukcja zmienia wartość TopicName zmiennej
MyAccess3 na "Sheet2", bez zmiany wartości AppName.
IOSetAccessName("MyAccess3","KS1", "", "Sheet2");
Uwaga Wykonywaniu funkcji IOSetAccessName() towarzyszy krótka zwłoka czasowa,
wymagana na przerwanie bieżącej konwersacji oraz zainicjowanie nowej. W czasie tej
zwłoki, wszystkie próby odczytu lub zapisu wartości do nowego tematu kończą się
niepowodzeniem.
Funkcje skryptowe
3-39
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
IOSetItem()
różne
Zmienia nazwę dostępu i/lub nazwę pozycji w polu .Reference zmiennej typu I/O.
Składnia
IOSetItem("Tagname”,”AccessName”,”Item”);
Parametry
Opis
Tagname
Dowolna zmienna typu I/O ujęta w cudzysłowy.
AccessName
Nowa Nazwa dostępu
Item
Nowa Nazwa pozycji
Przykłady
IOSetItem(TagName, AccessName, Item)
Zmienna, Nazwa dostępu, i Nazwa tematu mogą być łańcuchami znaków, wartościami
innych zmiennych programu InTouch, lub wartościami funkcji. Przykładowo, instrukcja
zamieszczona poniżej zmienia pole .Reference zmiennej "MyTag1" na Nazwę dostępu
"excel" i pozycję "R1C1":
IOSetItem("MyTag1", "excel", "R1C1");
lub poprzez
Numer = 1;
TagNameString = "MyTag" + Text(Number, "#");
IOSetItem(TagNameString, "excel", "R1C1");
Jeżeli jako wartość parametrów AccessName i Item podany będzie pusty łańcuch znaków
(""), zmienna zostanie dezaktywowana. Przykładowo, w celu dezaktywacji zmiennej
"MyTag2" należy wpisać:
IOSetItem("MyTag2", "", "");
Podobnie, jeżeli jako wartość parametry Item wprowadzony zostanie pusty łańcuch
znaków, bieżąca wartość pozycji nie ulegnie zmianie, a parametr AccessName zostanie
zaktualizowana. Zmiana nazwy dostępu dla zmiennej "MyTag3" na "excel2", tak jak to
przedstawiono poniżej, nie spowoduje zmiany bieżącej wartości pozycji"
IOSetItem("MyTag3", "excel2", "");
Podobnie, jeżeli jako parametr AccessName wprowadzony zostanie pusty łańcuch znaków ,
bieżąca wartość pozycji nie ulegnie zmianie, a parametr AccessName zostanie
zaktualizowany. Zmiana Nazwy pozycji dla zmiennej "MyTag3" na "R1C2", tak jak to
przedstawiono poniżej, nie spowoduje zmiany bieżącej wartości Nazwy dostępu:
IOSetItem("MyTag4", "", "R1C2");
3-40
Rozdział 3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
IsAnyAsyncFunctionBusy()
system
Zadaniem tej funkcji jest sprawdzenie, czy w danej chwili uruchomiona jest jakakolwiek
funkcja asynchroniczna. Funkcja ta może zostać użyta do wstrzymywania uruchamiania
kolejnych funkcji asynchronicznych, aż do momentu zakończenia wykonywania już
uruchomionych. Pozwala to na synchronizację pracy tych funkcji.
Składnia
DiscreteTag=IsAnyAsyncFunctionBusy(timeout);
Parametry
Opis
DiscreteTag
Zmienna typu dyskretnego której wartość ustalana jest w
następujący sposób:
Jeżeli przekroczony został czas oczekiwania na zakończenie
wykonywania wszystkich funkcji QuickFunction, wartość
zmiennej ZmiennaDyskretna ustawiana jest na 1
Jeżeli nie jest wykonywana żadna funkcja asynchroniczna,
wartość tej zmiennej ustawiana jest natychmiast na 0, lub też
funkcja QuickFunction będzie czekać przez okres czasu, podany
w parametrze timeout. Jeżeli po upływie okresu czasu
określonego parametrem timeout, żadna funkcja QuickFunction
nie będzie w trakcie wykonywania, wartość tej zmiennej zostanie
ustawiona na 0.
timeout
Wartość całkowita podająca w sekundach okres czasu, w ciągu
którego będzie sprawdzane, czy jest uruchomiona funkcja
asynchroniczna.
Przykład
Załóżmy, że zachodzi potrzeba połączenia szeregu baz danych SQL za pomocą
asynchronicznych funkcji QuickFunction, oraz , że operacja ta będzie wymagać 2 minut.
Najpierw należy wywołać funkcję asynchroniczną QuickFunction w celu połączenia się z
bazą danych SQL. Następnie, należy wywołać funkcję IsAnyAsyncFunctionBusy(120) w
celu zapewnienia odpowiedniej ilości czasu na realizację funkcji QuickFunction.
Jeżeli jednakże po upływie dwóch minut połączenie nie zostanie nawiązane, a
asynchroniczna funkcja QuickFunction nadal podejmuje próby realizacji połączenia,
funkcja IsAnyAsyncFunctionBusy() zwracać będzie wartość 1 (true). Można w tym
momencie wyświetlić komunikat informujący operatora, że próba połączenia SQL nie
powiodła się.
Skorzystać z następującego skryptu On Show związanego z oknem.
IF IsAnyAsyncFunctionBusy(120) == 1 THEN
SHOW "SQL Connection Error Dialog";
ENDIF;
Funkcje skryptowe
3-41
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Log()
funkcje matematyczne
Funkcja ta oblicza wartość logarytmu naturalnego z podanej liczby.
Składnia
RealResult=Log(Number);
Parametry
Opis
Number
Dowolna liczba, zmienna rzeczywista lub całkowita programu
InTouch.
Uwagi
Logarytm naturalny z liczby Number jest obliczany i przypisywany do zmiennej
RealResult. Wartość logarytmu naturalnego z liczby 0 jest nie określona.
Przykład
Log(100) zwraca 4.605...
Log(1) zwraca 0
LogMessage
różne
Zapisuje komunikat zdefiniowany przez użytkownika w programie Wonderware Logger.
Składnia
LogMessage("Message_Tag”);
Parametry
Opis
Message_Tag
Łańcuch znaków, który ma zostać zapisany w oknie programu
WWLogger. Łańcuch znaków lub zmienna tekstowa.
Uwagi
Funkcja ta jest bardzo użytecznym narzędziem do szukania przyczyn niepoprawnego
wykonywania skryptów. Umieszczenie funkcji LogMessage() w odpowiednim miejscu w
skrypcie, pozwala na wyznaczenie kolejności wykonywania, ocenę pracy skryptów, oraz
identyfikację wartości zmiennych, przed ich zmianą, a po przekazaniu ich do skryptu.
Każdy komunikat wysyłany do programu Wonderware Logger ma określoną dokładnie
godzinę i datę.
Przykład
LogMessage("Report Script is Running");
Powyższa instrukcja powoduje zapisanie następującego komunikatu w oknie programu
WWLogger:
94/01/14 15:21:14 WWSCRIPT Message: Skrypt z raportem uruchomiony
LogMessage("The Value of MyTag is " + Text(MyTag, "#”));
MyTag+MyTag + 10;
LogMessage("The Value of MyTag is " + Text(MyTag, "#”));
3-42
Rozdział 3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
LogN()
funkcje matematyczne
Zwraca wartość logarytmu o podstawie n z liczby x.
Składnia
Result=LogN(Number,Base);
Parametry
Opis
Number
Dowolna liczba, zmienna rzeczywista lub całkowita programu
InTouch.
Base
Podstawa logarytmu (liczba rzeczywista). Liczba lub zmienna
całkowita.
Uwagi
Wartość podstawy nie może być równa 1.
Przykład
LogN(8, 3) zwraca 1.89279...
LogN(NumberTag, BaseTag) zwraca 0.564...if NumberTag contains 3 and
BaseTag contains 7.
Pi()
funkcje matematyczne
Zwraca wartość liczby Pi.
Składnia
RealResult=Pi();
Przykład
Pi() zwraca 3.1415926...
Funkcje skryptowe
3-43
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
PlaySound()
różne
Odtwarza zadany plik dźwiękowy w formacie .wav, lub też element podany w sekcji
[sounds] pliku
WIN
.
INI
za pomocą urządzenia do odtwarzania dźwięku w Windows (o ile
jest zainstalowane).
Składnia
PlaySound("SoundName”,Flags);
Parametry
Opis
SoundName
Łańcuch znaków lub zmienna tekstowa, zawierająca nazwę pliku
dźwiękowego do odtworzenia.
Flags
Parametr Flags może mieć jedną z następujących wartości:
Typ
Opis
0
Asynchroniczne odtworzenie dźwięku (opcja
domyślna).
1
Synchroniczne odtworzenie dźwięku.
2
Nie zostanie odtworzony dźwięk domyślny. Jako
SoundName można podać nazwę dowolnego pliku
typu .wav. Może to być również dowolna nazwa z
sekcji [Sounds] pliku
WIN
.
INI
.
3
Wartość ta nie jest używana!
4
Wskaźnik do pliku w pamięci. Wartość ta nie jest
wykorzystywana przy pisaniu skryptów.
5-7 Wartość ta nie jest używana!
8
Powtarzanie dźwięku do momentu ponownego
wywołania funkcji PlaySound().
Przykład
PlaySound ("c:\horns.wav",1);
Uwaga: Dźwięk musi fizycznie zmieścić się w dostępnym obszarze pamięci i musi istnieć
możliwość jego odtworzenia na zainstalowanym urządzeniu do odtwarzania. W celu
znalezienia pliku z dźwiękami, kartoteki przeszukiwane są w następującej kolejności:
kartoteka bieżąca, kartoteka systemu Windows, podkartoteka System systemu Windows,
oraz kartoteki podane w instrukcji PATH. Jeśli podany plik .wav nie może zostać
znaleziony, kliknąć menu Start, a następnie kolejno Ustawienia, Panel sterowania i
Dźwięki w celu skonfigurowania domyślnych dźwięków. Jeśli jednak pliku tego nie można
znaleźć, żaden dźwięk nie zostanie odtworzony.
PrintHT()
dane historyczne
Funkcja ta może być wykorzystana do drukowania wykresu trendu historycznego
powiązanego z określoną zmienną typu Hist Trend. W czasie korzystania z tej funkcji,
trend historyczny musi być widoczny na ekranie.
Składnia
PrintHT("Trend_Tag");
Parametry
Opis
Trend_Tag
Nazwa zmiennej typu HistTrend reprezentującej trend
historyczny. Łańcuch znaków lub zmienna tekstowa.
Uwagi
Brak
Przykład
PrintHT("HistTrend1");
3-44
Rozdział 3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
PrintWindow()
różne
Drukuje określone okno.
Składnia
PrintWindow("Window",Left,Top,Width,Height,Options);
Parametry
Opis
Okno
Nazwa okna przeznaczonego do wydruku. Łańcuch znaków lub
zmienna tekstowa.
Left
Liczba zmiennoprzecinkowa oznaczająca wielkość lewego
marginesu w calach. Liczba lub zmienna typu rzeczywistego.
Top
Liczba zmiennoprzecinkowa oznaczająca wielkość górnego
marginesu w calach. Liczba lub zmienna typu rzeczywistego.
Width
Liczba zmiennoprzecinkowa oznaczająca szerokość wydruku w
calach. Może być ona równa 0 (co oznacza największą możliwą
wielkość wydruku) lub może podawać konkretną szerokość.
Liczba lub zmienna typu rzeczywistego.
Height
Liczba zmiennoprzecinkowa oznaczająca wysokość wydruku w
calach. Może być ona równa 0 (co oznacza największą możliwą
wielkość wydruku) lub może podawać konkretną wysokość.
Liczba lub zmienna typu rzeczywistego.
Options
Wartość dyskretna, 0 lub 1, wykorzystywana jeżeli wartość Width
lub Height jest równa 0. Jeśli wartość parametru Options wynosi
1, okno jest drukowane w powiększeniu stanowiącym całkowitą
wielokrotność rozmiarów okna (przy zachowaniu stosunku
długości boków). Wartość 0, 1, lub zmienna typu dyskretnego.
Jeśli wartość parametru Options wynosi 0, okno jest drukowane w
największym możliwym powiększeniu, tak, aby zmieściło się na
stronie.
Uwaga Jeśli okno zawiera mapę bitową, parametr Options należy ustawić na 1, aby
zapobiec "rozciągnięciu" mapy bitowej.
Uwagi
Można przytoczyć wiele przykładów użycia tej funkcji. W przypadku konieczności
wydruku nie tylko wykresu trendu historycznego, ale całego ekranu w czasie pracy
aplikacji, zamiast funkcji PrintHT() i wydruku inicjowanego przez operatora z poziomu
okna dialogu trendu historycznego zaleca się używanie funkcji PrintWindow().
W czasie wykonywania tej funkcji, okno zapisywane jest poza obszarem pamięci ekranu.
Kolejny etap to odczekanie 10 sekund w celu umożliwienia uaktualnienia wartości
wszystkich zmiennych DDE. Następnie okno jest wysyłane do drukarki. W celu
wydrukowania okna, nie musi ono być otwarte czy widoczne.. Okres oczekiwania można
zmienić poprzez dodanie następującej linii w pliku INTOUCH.INI.
PrintWindowWait=10000
gdzie 10000 jest czasem w milisekundach.
Funkcje skryptowe
3-45
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Czcionki są drukowane jako czcionki, obiekty jako mapy bitowe. Okna z białym tłem,
zawierające tylko teksty są drukowane bardzo szybko. Okna z kolorowym tłem,
zawierające wiele obiektów są drukowane znacznie wolniej.
Uwaga Aby zapewnić prawidłowy wydruk tekstu w oknach, zaleca się stosowanie czcionek
"TrueType" we wszystkich polach tekstowych w oknach przeznaczonych do drukowania.
Przy drukowaniu przycisków może okazać się, że tekst na przyciskach zostanie obcięty,
ponieważ czcionka zastosowana w tekście na przycisku jest czcionką systemową, a nie
czcionką "TrueType". Czcionki systemowe na drukarce wyglądają nieco inaczej niż na
ekranie. Jeśli sytuacja taka będzie miała miejsce, należy spróbować zwiększyć rozmiar
przycisku.
Jeśli drukarka przeznaczona jest do drukowania alarmów, aby móc wykorzystywać funkcję
PrintWindow() konieczna jest jeszcze jedna drukarka.
Przykłady
Zamieszczone poniżej przykładowe skrypty warunkowe ON TRUE drukują trzy stronicowy
raport, codziennie o godz. 8:30.
Condition:
$Hour == 8 AND $Minute == 30
Script Body:
PrintWindow("1st Shift Summary",1,1,0,0,0);
PrintWindow("2nd Shift Summary",1,1,0,0,0);
PrintWindow("3rd Shift Summary",1,1,0,0,0);
Funkcja PrintWindow() zwraca wartość 1, jeśli okno o podanej nazwie istnieje i może
zostać wydrukowane. W przeciwnym wypadku zwracana jest wartość 0. W ten sposób
można monitorować wykonanie funkcji.
Status=PrintWindow("Shift Summary",1,1,0,0,0);
Status jest zmienną dyskretną i może przyjmować wartości 0 lub 1.
3-46
Rozdział 3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
RecipeDelete()
receptury
Funkcja ta powoduje usunięcie receptury z zadanego pliku.
Składnia
RecipeDelete("Filename","RecipeName");
Parametry
Opis
FileName
Nazwa pliku z recepturami. Łańcuch znaków lub zmienna
tekstowa.
RecipeName
Nazwa receptury w pliku o podanej nazwie, którego dotyczą
operacje wykonywane przez funkcję. Parametr ten musi zostać
podany przez użytkownika w przypadku funkcji RecipeLoad(),
RecipeSave() oraz RecipeDelete(). Funkcja
RecipeSelectRecipe() zwraca natomiast wartość tego parametru.
Łańcuch znaków lub zmienna tekstowa.
Przykład
Instrukcja zamieszczona poniżej powoduje usunięcie receptury "Recipe1" z pliku
RECFILE.CSV.
RecipeDelete("c:\recipe\recfile.csv", "Recipe1");
RecipeGetMessage()
receptury
Funkcja ta zapisuje kod błędu zwrócony przez funkcję jako zmienną analogową, a
związany z kodem komunikat jako zmienną tekstową.
Składnia
RecipeGetMessage(Analog_Tag,Message_Tag,Number);
Parametry
Opis
Analog_Tag
Zmienna analogowa zawierająca kod błędu.
Message_Tag
Zmienna tekstowa zawierająca komunikat związany z kodem
błędu.
Number
Parametr ten określa maksymalną długość łańcucha znaków
przypisywanego do zmiennej Message_Tag.. Zmienne tekstowe w
programie InTouch mogą przyjmować maksymalną długość 131
znaków. Jeśli maksymalna długość zmiennych nie jest
ograniczona z innych względów, należy przyjmować wartość tego
parametru równą 131. Parametr Number może być wartością stałą
lub zmienną programu InTouch.
Przykład
Zastosowanie funkcji RecipeGetMessage()w skrypcie związanym ze zmianą danych
umożliwia zapisanie kodu błędu do zmiennej analogowej, a związanego z kodem
komunikat może być przypisany do zmiennej tekstowej:
Data Change Script Tagname[.field]:ErrorCode
Script body:RecipeGetMessage(ErrorCode, ErrorMessage,131);
Skrypt ten będzie wykonywany po każdorazowej zmianie wartości zmiennej analogowej
ErrorCode. Spowoduje to odczytanie przez funkcję RecipeGetMessage() aktualnej
wartości zmiennej ErrorCode, oraz zapisanie komunikatu towarzyszącego tej wartości do
zmiennej ErrorMessage.
ErrorCode = RecipeLoad ("c:\App\recipe.csv","Unit1","cookies");
RecipeGetMessage(ErrorCode, ErrorMessageTag, 131);
Funkcje skryptowe
3-47
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
RecipeLoad()
receptury
Funkcja ta powoduje załadowanie receptury (Recipe) dla podanego zestawu zmiennych
(Unit).
Składnia
RecipeLoad("Filename","UnitName","RecipeName");
Parametry
Opis
FileName
Nazwa pliku z recepturami. Parametrem FileName może być stała
tekstowa, lub zmienna tekstowa zawierająca nazwę pliku z
szablonami receptur.
UnitName
Nazwa zestawu zmiennych w pliku receptur, którego dotyczą
operacje wykonywane przez funkcję. Funkcja RecipeLoad()
wymaga od użytkownika podania parametru UnitName. Funkcja
RecipeSelectUnit() zwraca wartość tego parametru. Parametrem
UnitName może być stała tekstowa lub zmienna tekstowa
zawierająca nazwę modułu.
RecipeName
Nazwa receptury w podanym pliku. Funkcje RecipeLoad(),
RecipeSave() i RecipeDelete() wymagają od użytkownika
podania parametru RecipeName. Funkcja RecipeSelectRecipe()
zwraca natomiast wartość tego parametru. Parametr RecipeName
może być podany jako łańcuch znaków lub jako zmienna
programu InTouch (pamięciowa lub DDE).
Przykład
Instrukcja zamieszczona poniżej powoduje załadowanie zestawu wartości zdefiniowanych
jako receptura "Recipe1" w pliku RECFILE.CSV do zestawu zmiennych "Unit1".
RecipeLoad("c:\recipe\recfile.csv", "Unit1", "Recipe1");
3-48
Rozdział 3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
RecipeSave()
receptury
Funkcja ta powoduje zapisanie nowo utworzonej lub zmodyfikowanej receptury (Recipe)
w pliku receptur o podanej nazwie.
Składnia
RecipeSave("Filename","UnitName","RecipeName");
Parametry
Opis
FileName
Nazwa pliku z recepturami. Parametrem FileName może być stałą
tekstową, lub zmienną tekstową zawierająca nazwę pliku z
szablonami receptur.
UnitName
Nazwa zestawu zmiennych w pliku receptur, którego dotyczą
operacje wykonywane przez funkcję. Funkcja RecipeLoad()
wymaga od użytkownika podania parametru UnitName. Funkcja
RecipeSelectUnit() zwraca wartość do tego parametru.
Parametrem UnitName może być stała tekstowa lub zmienna
tekstowa zawierająca nazwę modułu.
RecipeName
Nazwa receptury w podanym pliku FileName. Funkcje
RecipeLoad(), RecipeSave() i RecipeDelete() wymagają od
użytkownika podania parametru RecipeName. Funkcja
RecipeSelectRecipe() zwraca natomiast wartość tego parametru.
Parametr RecipeName może być zadany jako łańcuch znaków lub
jako zmienna programu InTouch (pamięciowa lub DDE).
Przykład
Instrukcja zamieszczona poniżej powoduje zapisanie zmian dokonanych w recepturze o
nazwie "Recipe3" w pliku o nazwie RECFILE.CSV. Jeżeli w pliku recfile.csv nie ma
receptury Recipe3, zostanie ona utworzona. Wartości zostaną przypisane zmiennym
zdefiniowanym dla zestawu Unit2:
RecipeSave("c:\recipe\recfile.csv", "Unit2", "Recipe3");
Funkcje skryptowe
3-49
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
RecipeSelectNextRecipe()
receptury
Funkcja ta powoduje wybranie z pliku receptur receptury o kolejnej zdefiniowanej nazwie.
Składnia
RecipeSelectNextRecipe("Filename", RecipeName, Number);
Parametry
Opis
FileName
Nazwa pliku z recepturami. Nazwa ta może być zadana jako
łańcuch znaków lub jako zmienna programu InTouch
(pamięciowa lub DDE).
RecipeName
Nazwa receptury (Recipe) w podanym pliku FileName. Parametr
ten musi zostać podany przez użytkownika w przypadku funkcji
RecipeLoad(), RecipeSave() oraz RecipeDelete(). Funkcja
RecipeSelectRecipe() zwraca natomiast wartość tego parametru.
Parametr RecipeName może być zadany jako łańcuch znaków lub
jako zmienna programu InTouch (pamięciowa lub DDE).
Number
Jeśli zadaniem funkcji jest wypełnienie zmiennej tekstowej
znakami, pole to służy do zadawania maksymalnej długości
zapisywanego łańcucha znaków. Zmienne tekstowe w programie
InTouch mogą przyjmować maksymalną długość 131 znaków.
Jeśli maksymalna długość zmiennych nie jest ograniczona z
innych względów, należy przyjmować wartość tego parametru
równą 131. Parametr Number może być wartością stałą lub
zmienną programu InTouch.
Przykład
Instrukcja zamieszczona poniżej powoduje odczytanie aktualnej wartości zmiennej
tekstowej RecipeName i wybranie z pliku następnej receptury. Jeśli zmienna RecipeName
nie ma żadnej przypisanej wartości lub nie może zostać znaleziona, funkcja zwraca nazwę
pierwszej receptury w pliku. Jeśli zmienna RecipeName zawiera aktualnie nazwę ostatniej
receptury w pliku, jej wartość pozostaje bez zmian. (Receptury są zapisywane w pliku w
kolejności ich tworzenia.)
RecipeSelectNextRecipe("c:\recipe\recfile.csv", RecipeName, 131);
3-50
Rozdział 3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
RecipeSelectPreviousRecipe()
receptury
Funkcja ta powoduje wybranie z pliku receptur poprzedniej receptury.
Składnia
RecipeSelectPreviousRecipe("Filename",RecipeName,Number);
Parametry
Opis
FileName
Nazwa pliku z recepturami. Nazwa ta może być zadana jako
łańcuch znaków lub jako zmienna programu InTouch
(pamięciowa lub DDE).
RecipeName
Nazwa receptury w podanym pliku FileName. Parametr ten musi
zostać podany przez użytkownika w przypadku funkcji
RecipeLoad(), RecipeSave() oraz RecipeDelete(). Funkcja
RecipeSelectRecipe() zwraca natomiast wartość tego parametru.
Parametr RecipeName może być zadany jako łańcuch znaków lub
jako zmienna programu InTouch (pamięciowa lub DDE).
Number
Jeśli zadaniem funkcji jest wypełnienie zmiennej tekstowej
znakami, pole to służy do zadawania maksymalnej długości
zapisywanego łańcucha znaków. Zmienne tekstowe w programie
InTouch mogą przyjmować maksymalną długość 131 znaków.
Jeśli maksymalna długość zmiennych nie jest ograniczona z
innych względów, należy przyjmować wartość tego parametru
równą 131. Parametr Number może być wartością stałą lub
zmienną programu InTouch.
Przykład
Instrukcja zamieszczona poniżej powoduje odczytanie aktualnej wartości zmiennej
tekstowej RecipeName i wybranie z pliku poprzedniej receptury. Wrócona wartość zostanie
zapamiętana w RecipeName, zastępując poprzednią wartość. Jeśli zmienna RecipeName
zawiera aktualnie nazwę pierwszej receptury w pliku, jej wartość pozostaje bez zmian. Jeśli
zmienna RecipeName zawiera aktualnie nazwę ostatniej receptury w pliku, jej wartość
pozostaje bez zmian. (Receptury są zapisywane w pliku w kolejności ich tworzenia.)
RecipeSelectPreviousRecipe("c:\recipe\recfile.csv", RecipeName,
131);
Funkcje skryptowe
3-51
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
RecipeSelectRecipe()
receptury
Funkcja ta powoduje wybranie z pliku receptur receptury o podanej nazwie.
Składnia
RecipeSelectRecipe("Filename",RecipeName,Number);
Parametry
Opis
FileName
Nazwa pliku z recepturami. Nazwa ta może być zadana jako
łańcuch znaków lub jako zmienna programu InTouch
(pamięciowa lub DDE).
RecipeName
Nazwa receptury w podanym pliku FileName. Parametr ten musi
zostać podany przez użytkownika w przypadku funkcji
RecipeLoad(), RecipeSave() oraz RecipeDelete(). Funkcja
RecipeSelectRecipe() natomiast zwraca wartość tego parametru.
Parametr RecipeName może być zadany jako łańcuch znaków lub
jako zmienna programu InTouch (pamięciowa lub DDE).
Number
Jeśli zadaniem funkcji jest wypełnienie zmiennej tekstowej
znakami, pole to służy do zadawania maksymalnej długości
zapisywanego łańcucha znaków. Zmienne tekstowe w programie
InTouch mogą przyjmować maksymalną długość 131 znaków.
Jeśli maksymalna długość zmiennych nie jest ograniczona z
innych względów, należy przyjmować wartość tego parametru
równą 131. Parametr Number może być wartością stałą lub
zmienną programu InTouch.
Przykład
Zamieszczona poniżej instrukcja powoduje otwarcie okna dialogowego Select a Recipe:
RecipeSelectRecipe("c:\recipe\recfile.csv", RecipeName, 131);
Po wybraniu z okna dialogowego żądanej receptury, jej nazwa jest zwracana za pomocą
zmiennej RecipeName.
3-52
Rozdział 3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
RecipeSelectUnit()
receptury
Funkcja ta powoduje wybranie z pliku receptur zestawu zmiennych, do którego zostanie
załadowana bieżąca receptura.
Składnia
RecipeSelectUnit("Filename", UnitName,Number);
Parametry
Opis
FileName
Nazwa pliku z recepturami. Nazwa ta może być zadana jako
łańcuch znaków lub jako zmienna programu InTouch
(pamięciowa lub DDE).
UnitName
Nazwa zestawu zmiennych w pliku receptur, którego dotyczą
operacje wykonywane przez funkcję. Funkcja RecipeLoad()
wymaga od użytkownika podania parametru UnitName. Funkcja
RecipeSelectUnit() zwraca wartość do tego parametru. Parametr
RecipeName może być zadany jako łańcuch znaków lub jako
zmienna programu InTouch (pamięciowa lub DDE).
Number
Jeśli zadaniem funkcji jest wypełnienie zmiennej tekstowej
znakami, pole to służy do zadawania maksymalnej długości
zapisywanego łańcucha znaków. Zmienne tekstowe w programie
InTouch mogą przyjmować maksymalną długość 131 znaków.
Jeśli maksymalna długość zmiennych nie jest ograniczona z
innych względów, należy przyjmować wartość tego parametru
równą 131. Parametr Number może być wartością stałą lub
zmienną programu InTouch.
Przykład
Zamieszczona poniżej instrukcja powoduje otwarcie okna dialogowego Select a Unit:
RecipeSelectUnit("c:\recipe\recfile.csv", UnitName, 131);
Po wybraniu z okna dialogowego zestawu, jego nazwa jest zwracana za pomocą zmiennej
UnitName.
Uwaga Zarówno funkcja RecipeSelectRecipe(), jak i funkcja RecipeSelectUnit() 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.
Funkcje skryptowe
3-53
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
RestartWindowViewer
system
Pozwala użytkownikowi na sterowane zamknięcie i ponowne uruchomienie programu
WindowViewer.
Składnia
RestartWindowViewer;
Uwagi
Funkcja ta powoduje automatyczne zamknięcie, a potem natychmiastowe otwarcie
programu WindowViewer. Pozwala to na uaktualnianie aplikacji w przypadku nie
korzystania z funkcji automatycznego uaktualniania w architekturze NAD (Network
Application Development). Funkcja ta może zostać wykorzystana wraz ze zmienną
$ApplicationChanged do sprawdzenia czy aplikacja została uaktualniona, i czy ma być
zamknięta przez użytkownika. W przypadku korzystania z opcji NAD, Notify Operator,
operator może spowodować opóźnienie uaktualniania, jak również można tę funkcję
stosować w skrypcie związanym z przyciskiem. Pozwala to operatorowi na automatyczne
zamknięcie i ponowne uruchomienie programu WindowViewer w dogodnym momencie.
Patrz również
$ApplicationChanged
Round()
funkcje matematyczne
Zaokrągla liczbę rzeczywistą z podaną dokładnością.
Składnia
RealResult=Round(Number,Precision);
Parametry
Opis
Number
Dowolna liczba, zmienna rzeczywista lub całkowita programu
InTouch.
Precision
Dokładność, z jaką podana liczba ma zostać zaokrąglona. Liczba,
zmienna rzeczywista lub całkowita.
Uwagi
Parametr Precision określa do jakiej dokładności przybliżona zostanie wartość Number.
Przykłady
Round(4.3, 1) zwraca 4
Round(4.3, .01) zwraca 4.30
Round(4.5, 1) zwraca 5
Round(-4.5, 1) zwraca -5
Round(106, 5) zwraca 105
Round(43.7, .5) zwraca 43.5
Patrz również
Trunc()
3-54
Rozdział 3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
SendKeys
różne
Wysyła sekwencję klawiszy do aplikacji. Funkcja SendKeys może symulować naciśnięcie
większości klawiszy. Mechanizm ten pozwala na wprowadzanie danych do aplikacji, lub
też wywoływanie jej poleceń. Za pomocą instrukcji SendKeys można wysłać większość
klawiszy. Każdy klawisz jest reprezentowany przez jeden lub więcej znaków, np. litera A -
przez A, klawisz Enter - przez ENTER.
Składnia
SendKeys KeySequence;
Parametry
Opis
KeySequence
Dowolna sekwencja klawiszy lub zmienna tekstowa InToucha.
Uwagi
Aby zasymulować naciśnięcie kilku klawiszy, należy uszeregować kody wprowadzanych
znaków. Przykładowo, w celu wysłania symbolu dolara ($) i znaku (b), należy wprowadzić
$b. Poniżej zamieszczono listę kodów różnych klawiszy klawiatury komputera:
Klawisze
Kod
Klawisze
Kod
BACKSPACE
{BACKSPACE} lub {BS}HOME
{HOME}
BREAK
{BREAK}
INSERT
{INSERT}
CAPSLOCK
{CAPSLOCK}
LEFT
{LEFT}
DELETE
{DELETE} lub {DEL}
NUMLOCK
{NUMLOCK}
DOWN
{DOWN}
PAGE DOWN
{PGDN}
END
{END}
PAGE UP
{PGUP}
ENTER
{ENTER} lub ~ (tylda)
PRTSC
{PRTSC}
ESCAPE
{ESCAPE} lub {ESC}
RIGHT
{RIGHT}
F1
{F1}*
TAB
{TAB}
UP
{UP}
* W ten sposób budowane są nazwy dla pozostałych klawiszy funkcyjnych.
Klawisze specjalne (SHIFT, CTRL oraz ALT) posiadają własne kody:
Klawisze
Kod
SHIFT +
CTRL ^
ALT %
Funkcje skryptowe
3-55
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Przykłady
Jeśli dwa klawisze mają zostać wciśnięto jednocześnie, wymagany jest nawias przy kodzie
drugiego klawisza. Instrukcja zamieszczona poniżej zastępuje przytrzymanie naciśniętego
klawisza CTRL, naciśnięcie klawisza ALT, a po nim wprowadzenie litery p:
SendKeys "^(%(p))";
Powyższe polecenie może poprzedzać instrukcja zawierająca funkcję ActivateApp w celu
skierowania kodów klawiszy do odpowiedniej aplikacji.
Instrukcja zamieszczona poniżej uaktywnia arkusz kalkulacyjny Excel i wysyła do niego
kombinację klawiszy CTRL+P (która może uruchamiać zdefiniowaną wcześniej
makroinstrukcję drukowania, ze zdefiniowanym skrótem klawiszowym CTRL+P):
ActivateApp "Microsoft Excel";
SendKeys "^(p)";
W celu wyświetlenia okna dialogowego do wprowadzania hasła w programie
WindowViewer można skorzystać z następującej instrukcji:
SendKeys "%(SYL)";
Z przyciskiem o nazwie HELP można związać następujący skrypt:
SendKeys "{F1}";
SetDDEAppTopic()
różne
Począwszy od wersji 7.0 programu InTouch, funkcja ta zastąpiona została przez
IOSetAccessName. Porównać IOSetAccessName.
! Więcej informacji na temat funkcji IOSetAccessName podano w odpowiednim
punkcie niniejszego podręcznika.
SetDDEItem()
różne
Począwszy od wersji 7.0 programu InTouch, funkcja ta zastąpiona została przez
IOSetItem. Porównać IOSetItem.
! Więcej informacji na temat funkcji IOSetItem podano w odpowiednim punkcie
niniejszego podręcznika.
3-56
Rozdział 3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
SetPropertyD()
GOT
Funkcja ta nadaje właściwości wartość dyskretną w czasie wykonywania aplikacji.
Składnia
[ErrorNumber=]SetPropertyD("ControlName.Property", DiscreteTag);
Parametry
Opis
ControlName
Nazwa obiektu sterującego okien, np. ChkBox_1, lub nazwa
obiektu do wyświetlania alarmów, np. AlmObj_1.
.Property
Właściwość obiektu sterującego okna lub obiektu do
wyświetlania alarmów.
! Więcej informacji na temat pól zmiennych można znaleźć w rozdziale 2 "Pola".
DiscreteTag
Wartość dyskretna (0 lub 1) lub zmienna dyskretna programu
InTouch, której wartość zostanie zapisana jako wartość
odpowiedniego pola wskutek wykonania funkcji. Typowe
zastosowanie:
0 = Obiekt sterujący jest nieaktywny
1 = Obiekt sterujący jest aktywny
! Kody błędów dla funkcji tego typu można znaleźć w Dodatku A: "Komunikaty o
błędach dla obiektów sterujących Windows i funkcji związanych z alarmowaniem
rozproszonym".
SetPropertyI()
GOT
Funkcja ta nadaje właściwości wartość całkowitą w czasie wykonywania aplikacji.
Składnia
[ErrorNumber=]SetPropertyI("ControlName.Property", Integer);
Parametry
Opis
ControlName
Nazwa obiektu sterującego okien, np. ChkBox_1, lub nazwa
obiektu do wyświetlania alarmów, np. AlmObj_1.
.Property
Właściwość obiektu sterującego okna, lub obiektu do
wyświetlania alarmów.
! Więcej informacji na temat pól zmiennych można znaleźć w rozdziale 2 "Pola".
Integer
Liczba lub zmienna całkowita.
! Kody błędów dla funkcji tego typu można znaleźć w Dodatku A: "Komunikaty o
błędach dla obiektów sterujących Windows i funkcji związanych z alarmowaniem
rozproszonym".
Funkcje skryptowe
3-57
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
SetPropertyM()
GOT
Funkcja ta nadaje właściwości wartość tekstową w czasie wykonywania aplikacji.
Składnia
[ErrorNumber=]SetPropertyM("ControlName.Property", "MessageTag");
Parametry
Opis
ControlName
Nazwa obiektu sterującego okien, np. ChkBox_1, lub nazwa
obiektu do wyświetlania alarmów, np. AlmObj_1.
.Property
Właściwość obiektu sterującego okna, lub obiektu do
wyświetlania alarmów.
! Więcej informacji na temat pól zmiennych można znaleźć w rozdziale 2 "Pola".
MessageTag
Łańcuch znaków, który zostanie przypisany do właściwości
obiektu o nazwie ControlName. Łańcuch znaków lub zmienna
tekstowa.
! Kody błędów dla funkcji tego typu można znaleźć w Dodatku A: "Komunikaty o
błędach dla obiektów sterujących Windows i funkcji związanych z alarmowaniem
rozproszonym".
Sgn()
funkcje matematyczne
Określa znak podanej wartości (+,-,0).
Składnia
IntegerResult=Sgn(Number);
Parametry
Opis
Number
Dowolna liczba, zmienna rzeczywista lub całkowita programu
InTouch.
Uwagi
Jeżeli parametr będzie liczbą dodatnią, zwrócona zostanie wartość 1. Jeśli parametr jest
ujemny, zwrócona zostanie wartość -1, a w przypadku zera funkcja zwraca 0.
Przykłady
Sgn(425) zwraca 1
Sgn(0) zwraca 0
Sgn(-37.3) zwraca -1
3-58
Rozdział 3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Show
różne
Wyświetlenie określonego okna. (Nazwa okna musi być ujęta w cudzysłów.)
Składnia
Show "Window";
Parametry
Opis
Window
Nazwa okna, które ma zostać wyświetlone. Łańcuch znaków lub
zmienna tekstowa.
Uwagi
Window musi być nazwą istniejącego okna lub okna, które zostanie utworzone. W czasie
pracy aplikacji, jeśli okno o podanej nazwie nie istnieje, instrukcja jest ignorowana. Jeśli
nazwa okna zmieni się, musi ona zostać zmieniona również w skrypcie.
Przykład
Show "Alarm Summary Window";
Uwaga Jeśli celem skryptu jest tylko ukrywanie lub wyświetlanie okna, zaleca się
wykorzystanie połączenia animacyjnego Show Window lub Hide Window. W przypadku
używania tych połączeń, jeśli nazwa okna ulegnie zmianie, InTouch automatycznie dokona
zmian.
ShowAt()
różne
Określa w pikselach położenie okna w kierunku poziomym i pionowym w momencie jego
wyświetlania.
Składnia
ShowAt("Window",Horiz,Vert);
Parametry
Opis
Window
Nazwa okna. Łańcuch znaków lub zmienna tekstowa.
Horiz
Współrzędna pozioma. Parametr ten może być wartością stałą lub
zmienną programu InTouch.
Vert
Współrzędna pionowa. Parametr ten może być wartością stałą lub
zmienną programu InTouch.
Uwagi
Po otwarciu okna, jest ono ustawiane na środku względem współrzędnych położenia
poziomego i pionowego. Okno nie zostanie wycentrowane, jeśli jedna z jego krawędzi
wykracza poza obszar ekranu. W takiej sytuacji zostanie ono wyrównane do krawędzi
ekranu.
Przykłady
W zamieszczonej poniżej instrukcji, 100 oznacza położenie piksela w kierunku poziomym,
a 200 w kierunku pionowym:
ShowAt("Window Name",100,200);
Aby umożliwić dynamiczną zmianę pozycji okna w czasie wykonywania aplikacji, ze
zmiennymi pamięciowymi zastosowanymi jako parametry funkcji, np. TagHoriz i TagVert
można powiązać obiekty służące do wprowadzania danych (połączenia animacyjne). W
takim przypadku omawiana funkcja przyjmie postać:
ShowAt("Boiler Room 7 Details",TagHoriz,TagVert);
Zamieszczona poniżej instrukcja umożliwia określenie położenia w pikselach, zmienne
wewnętrzne $ObjHor i $ObjVer mogą zostać przypisane do analogowego połączenia
wyświetlającego, dzięki czemu na ekranie wyświetlane będą współrzędne aktualnie
zaznaczonego obiektu. Zastosowanie zmiennych $ObjHor i $ObjVer w skrypcie lub
przycisku pozwala na wyświetlenie okna w pozycji środkowej względem obiektu lub
przycisku.
ShowAt("Window Name",$ObjHor,$ObjVer);
Patrz również
$ObjHor, $ObjVer, ShowTopLeftAt()
Funkcje skryptowe
3-59
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
ShowHome
różne
Wyświetlenie okna (-okien) "startowych". Okna startowe to okna automatycznie otwierane
po uruchomieniu programu WindowViewer. (Okna startowe ustawiane są za pomocą
zakładki WindowViewer Properties - Home Windows.
Składnia
ShowHome;
ShowTopLeftAt()
różne
Określa w pikselach współrzędną poziomą i pionową lewego, górnego rogu okna, w
momencie jego wyświetlania.
Składnia
ShowTopLeftAt("Window",Horiz,Vert);
Parametry
Opis
Window
Nazwa okna. Łańcuch znaków lub zmienna tekstowa.
Horiz
Współrzędna pozioma Parametr ten może być wartością stałą lub
zmienną programu InTouch.
Vert
Współrzędna pionowa Parametr ten może być wartością stałą lub
zmienną programu InTouch.
Uwagi
Po otwarciu okna, jego lewy, górny róg umieszczany jest w miejscu wskazywanym przez
współrzędną poziomą i pionową. (Współrzędne lewego, górnego narożnika ekranu
wynoszą 0,0.) Działanie tej funkcji jest takie same jak funkcji ShowAt(), za wyjątkiem
faktu, że steruje ona położeniem lewego, górnego okna.
Patrz również
ShowAT()
Sin()
funkcje matematyczne
Zwraca sinus kąta podanego w stopniach.
Składnia
Result=Sin(AngleNumber);
Parametry
Opis
AngleNumber
Wartość kąta w stopniach. Dowolna liczba, zmienna rzeczywista
lub całkowita programu InTouch.
Uwagi
Wartość tej funkcji jest przypisywana do zmiennej Result.
Przykład
Sin(90) zwraca 1
Sin(0) zwraca 0
wave = 100 * sin (6 * $second);
Patrz również
Cos(), Tan()
3-60
Rozdział 3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
SPCConnect()
SPC
Funkcja ta jest używana w połączeniu z automatycznym zbieraniem zestawów danych.
Przed rozpoczęciem automatycznego zbierania zestawów danych, należy wywołać tę
funkcję w celu poinformowania SPC, jaki użytkownik jest przy stanowisku:
Składnia
SPCConnect("User”,”Password”);
Parametry
Opis
User
Nazwa bazy danych użytkownika. Łańcuch znaków lub zmienna
tekstowa.
Hasło.
Hasło użytkownika. Łańcuch znaków lub zmienna tekstowa.
Uwagi
Wykonanie tej funkcji spowoduje połączenie użytkownika z baza danych, oraz rozpoczęcie
automatycznego odczytywania zestawów danych, w oparciu o wprowadzony przez
użytkownika identyfikator. Jeżeli w bazie danych nie zostało zdefiniowane hasło, można
wprowadzić następujący skrypt:
Przykład
SPCConnect("User1", "");
SPCDisconnect()
SPC
Funkcja ta służy do odłączania użytkownika od bazy danych SPC Pro. Wykonanie tej
funkcji spowoduje przerwanie zbierania danych z wszystkich zestawów danych
przypisanych do użytkownika.
Składnia
SPCDisconnect();
Uwagi
Wykonanie tej funkcji spowoduje odłączenie użytkownika od bazy danych, oraz
zatrzymanie automatycznego odczytywania zestawów danych.
Przykład
SPCDisconnect();
Funkcje skryptowe
3-61
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
SPCDisplayData()
SPC
Funkcja ta zapewnia mechanizm wygodnego przewijania wykresu w celu wyświetlenia
odpowiedniej daty lub godziny. Status przeszukiwania danych SPC można monitorować za
pomocą zmiennej. Jeżeli SPC odszuka dane, zwracana jest wartość 0, jeżeli natomiast w
ciągu określonego czasu dane nie zostaną znalezione, zwracana jest wartość 1.
Składnia
[Status=]SPCDisplayData("Dataset", "DateString", "TimeString",
RangeInHours );
Parametry
Opis
Dataset
Nazwa bieżącego zestawu danych. Łańcuch znaków lub zmienna
tekstowa.
DateString
Data w formacie mm/dd/rr. Łańcuch znaków lub zmienna
tekstowa.
TimeString
Godzina w formacie gg:mm:ss. Łańcuch znaków lub zmienna
tekstowa.
RangeInHours
Okres czasu, dla którego dane będą wyświetlane. Parametr ten
może być wartością stałą lub zmienną programu InTouch.
Przykład
StatusTag = SPCDisplayData("Dataset", "DateString",
"TimeString" , RangeInHours);
SPCLocateScooter()
SPC
Funkcja ta zapewnia mechanizm wygodnego przewijania suwaka w celu wyświetlenia
odpowiedniej próbki. Wartość zmiennej suwaka, zapisanej w bazie danych, zostanie
zaktualizowana, przypisana zostanie jej wartość X-Bar. Przypisanie parametrowi
SampleNumber wartości 0 powoduje ukrycie/ deaktywację suwaka.
Składnia
SPCLocateScooter( "Dataset", SampleNumber );
Parametry
Opis
Dataset
Nazwa bieżącego zestawu danych. Łańcuch znaków lub zmienna
tekstowa.
SampleNumber
Numer dowolnej, nie zawierającej błędów próbki. Parametr ten
może być wartością stałą lub zmienną programu InTouch.
SPCMoveScooter()
SPC
Funkcja ta zapewnia mechanizm wygodnego przewijania suwaka w celu wyświetlenia odpowiedniej próbki.
Wartość zmiennej suwaka, zapisanej w bazie danych, zostanie zaktualizowana, przypisana zostanie jej wartość
próbki X-Bar.
Składnia
SPCMoveScooter( "Dataset", IncrementValue );
Parametry
Opis
Dataset
Nazwa bieżącego zestawu danych. Łańcuch znaków lub zmienna
tekstowa.
IncrementValue
Dowolny numer. W celu przewinięcia do przodu należy
wprowadzić wartość dodatnią, natomiast w celu przewinięcia do
tyłu należ wyprowadzić wartość ujemną. Parametr ten może być
wartością stałą lub zmienną programu InTouch.
3-62
Rozdział 3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
SPCSaveSample()
SPC
Funkcja ta służy do ręcznego zapisu próbki wejściowej. Funkcja ta używana jest w
połączeniu z funkcją SPCSetMeasurement().
Składnia
SPCSaveSample("Dataset");
Parametry
Opis
Dataset
Nazwa bieżącego zestawu danych. Łańcuch znaków lub zmienna
tekstowa.
Uwagi
Wykonanie instrukcji zawierającej tę funkcję spowoduje zapisanie próbki jako zestawu
danych (Dataset) o określonej nazwie. Funkcja ta korzysta z ręcznie wprowadzonych
wartości pomiarów próbki. Wartości ustawiane są zarówno za pomocą zmiennych DDE
MI_Mx (gdzie x numer pomiaru z przedziału od 1 do 25), jak i za pomocą funkcji
SPCSetMeasurement() (pomiary 1 do 300).
Patrz również
SPCSetMeasurement()
SPCSelectDataset()
SPC
Wyświetla okno dialogowe pozwalające użytkownikowi na wybranie żądanego zestawu
danych.
Składnia
DatasetName=SPCSelectDataset()
Uwagi
Skrypt ten powoduje otwarcie okna dialogowego Select a Dataset.
Po wybraniu nazwy zestawu danych, funkcja przypisuje go do zmiennej DatasetName.
Funkcja ta może również służyć do zmiany nazwy zestawu danych opisanego przez
zmienną typu Indirect Dataset.
SPCSelectProduct()
SPC
Wyświetla okno dialogowe pozwalające użytkownikowi na wybranie produktu z podanego
zestawu danych.
Składnia
ProductName=SPCSelectProduct(Dataset);
Uwagi
Funkcja ta zastosowana w skrypcie pozwala na otwarcie okna dialogowego Select a
Product.
Po wybraniu nazwy wyrobu, funkcja przypisuje go do zmiennej ProductName. Funkcja ta
może również służyć do zmiany nazwy produktu w zestawie danych Dataset.
Funkcje skryptowe
3-63
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
SPCSetControlLimits()
SPC
Funkcja ta umożliwia wygodne wprowadzenie (ręcznie lub w sposób automatyczny, w
wyniku zaistnienia określonych zdarzeń) wartości granicznych dla wykresu kontrolnego
(Control Chart).
Składnia
SPCSetControlLimits("Dataset",XUCL,XLCL);
Parametry
Opis
Dataset
Nazwa bieżącego zestawu danych. Łańcuch znaków lub zmienna
tekstowa.
XUCL
Wartość, która ma zostać wykorzystana jako górny limit
kontrolny (UCL) dla wykresu kontrolnego. Liczba lub zmienna
typu rzeczywistego.
XLCL
Wartość, która ma zostać wykorzystana jako dolny limit
kontrolny (LCL) dla wykresu kontrolnego. Liczba lub zmienna
typu rzeczywistego.
Uwagi
Wyniki pomiarów są zapisywane w próbce za pomocą funkcji SPCSaveSample().
Patrz również
SPCSaveSample(), SPCSetRangeLimits(), SPCSetSpecLimits()
SPCSetMeasurement()
SPC
Funkcja ta umożliwia wygodne wprowadzenie (ręcznie lub w sposób automatyczny, w
wyniku zaistnienia określonych zdarzeń) analogowych wartości z pomiaru poprzez
wykonanie skryptu.
Składnia
SPCSetMeasurement("Dataset",Measurement,Value);
Parametry
Opis
Dataset
Nazwa bieżącego zestawu danych. Łańcuch znaków lub zmienna
tekstowa.
Measurement
Numer pomiaru (od 1 do 300). Parametr ten może być wartością
stałą lub zmienną programu InTouch.
Value
Wartość która ma być zapisana do określonego numeru
pomiarów. Liczba lub zmienna typu rzeczywistego.
Uwagi
Z funkcji SPCSaveSample() należy korzystać po uprzednim ustawieniu wszystkich
pomiarów na zapisywanie danych w bazie danych.
3-64
Rozdział 3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
SPCSetProductCollected()
SPC
Funkcja ta umożliwia zmianę wyrobu (Product), dla którego zbierane są dane w obrębie
danego zestawu danych (Dataset).
Składnia
SPCSetProductCollected("Dataset","Product");
Parametry
Opis
Dataset
Nazwa bieżącego zestawu danych. Łańcuch znaków lub zmienna
tekstowa.
Product
Nazwa Produktu, dla którego mają być zbierane dane. Łańcuch
znaków lub zmienna tekstowa.
Uwagi
Funkcja ta nie zmienia wyrobu, dla którego wyświetlane są dane. Możliwe jest
gromadzenie danych jednego produktu i wyświetlanie danych dla innego produktu,
używając tej funkcji do gromadzenia a funkcji SPCSetProductDisplayed() do
wyświetlania:
Przykład
SPCSetProductCollected("Data5838", "Widgets");
Patrz również
SPCSetProductDislpayed()
SPCSetProductDislpayed()
SPC
Funkcja ta umożliwia zmianę wyrobu (Product), dla którego wyświetlane są dane w obrębie
danego zestawu zmiennych (Dataset).
Składnia
SPCSetProductDisplayed("Dataset","Product");
Parametry
Opis
Dataset
Nazwa bieżącego zestawu danych. Łańcuch znaków lub zmienna
tekstowa.
Product
Nazwa wyrobu, dla którego mają być wyświetlane dane .
Łańcuch znaków lub zmienna tekstowa.
Przykład
SPCSetProductDisplayed("ADataSetName", "AProductName");
Patrz również
SPCSetProductCollected()
SPCSetRangeLimits()
SPC
Funkcja ta umożliwia wygodne wprowadzenie (ręcznie lub w sposób automatyczny, w
wyniku zaistnienia określonych zdarzeń) wartości granicznych dla wykresu
rozpiętościowego (Range Chart).
Składnia
SPCSetRangeLimits("Dataset",RUCL,RLCL);
Parametry
Opis
Dataset
Nazwa bieżącego zestawu danych. Łańcuch znaków lub zmienna
tekstowa.
RUCL
Wartość, która ma zostać wykorzystana jako górny limit
kontrolny (UCL) dla wykresu rozpiętościowego. Liczba lub
zmienna typu rzeczywistego.
RLCL
Wartość, która ma zostać wykorzystana jako dolny limit
kontrolny (LCL) dla wykresu rozpiętościowego. Liczba lub
zmienna typu rzeczywistego.
Patrz również
SPCSetControlLimits(), SPCSetSpecLimits()
Funkcje skryptowe
3-65
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
SPCSetSpecLimits()
SPC
Funkcja ta umożliwia wygodne wprowadzenie (ręcznie lub w sposób automatyczny, w
wyniku zaistnienia określonych zdarzeń) wartości granicznych specyfikacyjnych (dla
wykresu kontrolnego (Control Chart).
Składnia
SPCSetSpecLimits("Dataset",XUSL,XLSL);
Parametry
Opis
Dataset
Nazwa bieżącego zestawu danych. Łańcuch znaków lub zmienna
tekstowa.
XUSL
Wartość, która ma zostać wykorzystana jako górny limit
specyfikacyjny (USL) dla wykresu rozpiętościowego. Liczba lub
zmienna typu rzeczywistego.
XLSL
Wartość, która ma zostać wykorzystana jako dolny limit
specyfikacyjny (LSL) dla wykresu rozpiętościowego. Liczba lub
zmienna typu rzeczywistego.
Patrz również
SPCSetControlLimits(), SPCSetRangeLimits()
SQLAppendStatement()
SQL
Dalsza część instrukcji SQL zawarta w zmiennej tekstowej. Funkcja ta zwraca kody
błędów.
Składnia
[ResultCode=]SQLAppendStatement(ConnectionID,"SQLStatement");
Parametry
Opis
ConnectionID
Zmienna typu Memory Integer, utworzona przez użytkownika do
pamiętania numeru (ID) przypisywanego przez funkcję
SQLConnect do każdego połączenia z bazą danych.
SQLStatement
Łańcuch znaków, który ma zostać dołączony do instrukcji.
Przykład
[ResultCode=]SQLAppendStatement(ConnectionID,"where
tablename.columnname=(any value or string)");
Patrz również
SQLConnect()
SQLClearParam()
SQL
Funkcja ta powoduje usunięcie wartości danego parametru. Przed wykonaniem funkcji
SQLExecute() musi zostać wywołana ponownie funkcja SQLSetParam().
Składnia
[ResultCode=]SQLClearParam(SQLHandle,ParameterNumber);
Parametry
Opis
SQLHandle
Wartość całkowita zwracana przez SQL po użyciu funkcji
SQLPrepareStatement().
ParameterNumber
Parametr do zmodyfikowania w instrukcji SQL.
Patrz również
SQLPrepareStatement(),SQLExecute()
3-66
Rozdział 3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
SQLClearStatement()
SQL
Zwolnienie zasobów powiązanych z instrukcją określoną przez SQLHandle.
Składnia
[ResultCode=]SQLClearStatement(ConnectionID,SQLHandle);
Parametry
Opis
ConnectionID
Zmienna typu Memory Integer, utworzona przez użytkownika do
pamiętania numeru (ID) przypisywanego przez funkcję
SQLConnect do każdego połączenia z bazą danych.
SQLHandle
Wartość całkowita zwracana przez SQL po użyciu funkcji
SQLPrepareStatement().
Patrz również
SQLConnect()
SQLClearTable()
SQL
Funkcja ta usuwa wszystkie rekordy z tablicy w bazie danych, ale nie usuwa samej tablicy.
Składnia
[ResultCode=]SQLClearTable(ConnectionID,"TableName");
Parametry
Opis
ConnectionID
Zmienna typu Memory Integer, utworzona przez użytkownika do
pamiętania numeru (ID) przypisywanego przez funkcję
SQLConnect do każdego połączenia z bazą danych.
TableName
Nazwa tablicy w bazie danych, której dotyczy operacja usuwania
rekordów.
Przykład
Aby usunąć wszystkie rekordy z tablicy BATCH1, można użyć następującej instrukcji:
[ResultCode=]SQLClearTable(ConnectionID,"BATCH1");
Patrz również
SQLConnect()
Funkcje skryptowe
3-67
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
SQLCommit()
SQL
Funkcja SQLCommit() powoduje wykonanie zestawu transakcji. Grupa poleceń
zawierających się pomiędzy funkcjami SQLTransact() i SQLCommit() nosi nazwę
zestawu transakcji. Zestaw transakcji jest traktowany jak pojedyncza transakcja. Po
wykonaniu polecenia SQLTransact(), wszystkie kolejne operacje nie będą kierowane do
bazy danych, aż do momentu kolejnego wywołania polecenia SQLCommit().
Składnia
[ResultCode=]SQLCommit(ConnectionID);
Parametry
Opis
ConnectionID
Zmienna typu Memory Integer, utworzona przez użytkownika do
pamiętania numeru (ID) przypisywanego przez funkcję
SQLConnect do każdego połączenia z bazą danych.
Uwaga Przy pisaniu skryptów zawierających funkcję SQLCommit() należy zachować
dużą ostrożność. Ponieważ czas wykonania skryptu jest mnożony przez liczbę transakcji w
zestawie transakcji, włączanie wielu poleceń do zestawu transakcji istotnie zwalania
działanie aplikacji.
Przykład
ResultCode = SQLTransact( ConnectionID);
ResultCode = SQLInsertPrepare( ConnectionID, TableName, BindList,
SQLHandle );
ResultCode = SQLInsertExecute( ConnectionID, BindList, SQLHandle);
ResultCode = SQLInsertExecute( ConnectionID, BindList, SQLHandle);
ResultCode = SQLInsertExecute( ConnectionID, BindList, SQLHandle);
ResultCode = SQLInsertEnd( ConnectionID, SQLHandle );
ResultCode = SQLCommit( ConnectionID);
{3 operacje wstawienia}
Patrz również
SQLRollback(), SQLTransact()
3-68
Rozdział 3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
SQLConnect()
SQL
Funkcja ta służy do założenia połączenia pomiędzy programem InTouch a bazą danych
wyszczególnioną za pomocą parametru ConnectString.
Składnia
[ResultCode=]SQLConnect(ConnectionID,"ConnectString");
Parametry
Opis
ConnectionID
Zmienna typu Memory Integer, utworzona przez użytkownika do
pamiętania numeru (ID) przypisywanego przez funkcję
SQLConnect do każdego połączenia z bazą danych.
ConnectString
Nazwa bazy danych, oraz dodatkowe informacje potrzebne do
zalogowania, wymagane przez funkcje SQLConnect().
Przykład
Instrukcja zamieszczona poniżej łączy program InTouch z programem IBM OS/2 Database
Manager, z bazą danych o nazwie SAMPLE:
[ResultCode=]SQLConnect(ConnectionID,"DSN=OS2DM;DB=SAMPLE");
Funkcja ta zwraca wartość zmiennej ConnectionID, wykorzystywanej jako parametr we
wszystkich, następujących w dalszej kolejności, wywołaniach funkcji z grupy SQL.
Parametr ConnectString identyfikuje bazę danych i zawiera dodatkowe informacje
potrzebne do ustanowienia połączenia z tą bazą. Posiada on następujący format:
"DSN=data source name[;attribute=value[;attribute=value]...]"
Każda z baz danych może wymagać podania innych atrybutów. QUELIB rozpoznaje
następujące atrybuty:
" Więcej informacji na temat atrybutów obsługiwanych przez określone bazy danych
podano w Rozdziale 2 podręcznika SQL Access for InTouch User's Guide.
Atrybut
Wartość
DSN
Nazwa źródła danych (Data Source Name) skonfigurowana w programie
Microsoft ODBC Administrator.
DLG
Jeżeli DLG=1, wyświetlane jest okno dialogowe pozwalające na wpisanie
informacji potrzebnych do ustanowienia połączenia.
DRV
W celu zachowania zgodności z SQL Access w programie InTouch v.
4.11, wartość ta jest wykorzystywana jeżeli nazwa źródła danych (DSN)
nie została podana w łańcuchu znaków połączenia. QELIB zmienia ten
atrybut na nazwę źródła danych.
UID
Nazwa identyfikacyjna do logowania.
PWD
Hasło.
MODIFYSQL Atrybut wykorzystywany przez QELIB w celu zapewnienia
kompatybilności języka SQL używanego w aplikacji i języka SQL
używanego w bazie danych. Gdy wartość tego atrybutu jest ustawiona na
1 (wartość domyślna), sterownik bazy danych oczekuje składni instrukcji
zgodnej z ODBC, którą zmodyfikuje w razie potrzeby w celu
dostosowania jej do bazy danych. Gdy wartość tego atrybutu jest
ustawiona na 0, sterownik bazy danych oczekuje składni instrukcji
zgodnej ze składnią bazy danych. Mechanizm ten pozwala na używanie
aplikacji opracowanych z zastosowaniem SQL opartego na sterownikach
QELIB 1.0.
REREADAFTERUPDATE
Jeżeli wartość tego atrybutu jest ustawiona na 1, QELIB ponownie
odczytuje rekord z bazy danych po jego aktualizacji. Jest to użyteczna
właściwość w przypadku pobierania właściwej wartości z automatycznie
aktualizowanych kolumn, zawierających np. czas.
REREADAFTERINSERT
Jeżeli wartość tego atrybutu jest ustawiona na 1, QELIB ponownie
odczytuje rekord z bazy danych po jego wstawieniu. Mechanizm ten jest
użyteczny w przypadku pobierania właściwej wartości z automatycznie
aktualizowanych kolumn, zawierających np. czas.
Funkcje skryptowe
3-69
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
SQLCreateTable()
SQL
Funkcja ta tworzy tablicę w bazie danych przy wykorzystaniu parametrów ze wzorca
tablicy (Table Template) o określonej nazwie. Wzorce tablic, zdefiniowane w pliku
SQL.DEF, określają strukturę tablic.
Składnia
[ResultCode=]SQLCreateTable(ConnectionID,TableName,TemplateName);
Parametry
Opis
ConnectionID
Zmienna typu Memory Integer, utworzona przez użytkownika do
pamiętania numeru (ID) przypisywanego przez funkcję
SQLConnect do każdego połączenia z bazą danych.
TableName
Nazwa tablicy w bazie danych, której dotyczy operacja.
TemplateName
Nazwa zdefiniowanego wzorca tablicy, który ma zostać użyty
przez funkcję.
Przykład
Instrukcja zamieszczona poniżej powoduje utworzenie tablicy o nazwie BATCH1, dla
której nazwy i typy kolumn zdefiniowane są we wzorcu o nazwie TEMPLATE.
[ResultCode=]SQLCreateTable(ConnectionID,"BATCH1","TEMPLATE");
Uwaga Jeżeli parametr wprowadzony w skrypcie ujęty jest w cudzysłów, np. "Parametr1",
jako parametr użyty zostanie wprowadzony łańcuch znaków. Jeżeli znaki cudzysłowów nie
są używane, system przyjmuje, ze Parameter1 jest zmienną, po czym przeszukuje bazę
danych programu InTouch w celu znalezienia wartości zmiennej Parameter1. Przykładowo:
"c:\main\file" vs. location
gdzie: Location jest zmienną tekstowa programu InTouch.
"c:\main\file" jest łańcuchem znaków
Patrz również
SQLConnect()
3-70
Rozdział 3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
SQLDelete()
SQL
Funkcja ta usuwa rekord lub kilka rekordów.
Składnia
[ResultCode=]SQLDelete(ConnectionID,TableName,WhereExpr);
Uwaga Funkcja SQLDelete() może być wywołana z pustym parametrem WhereExpression.
Parametry
Opis
ConnectionID
Zmienna typu Memory Integer, utworzona przez użytkownika do
pamiętania numeru (ID) przypisywanego przez funkcję
SQLConnect do każdego połączenia z bazą danych.
TableName
Nazwa tablicy w bazie danych, której dotyczy operacja.
WhereExpression
Warunek, który może być spełniony lub niespełniony dla każdego
wiersza tablicy. Funkcja wybiera tylko te wiersze z tablicy, dla
których warunek jest spełniony. Warunek musi mieć następujący
format:
Nazwa_kolumny operator_porównania wyrażenie
Uwaga Jeśli obowiązującym typem danych w kolumnie są dane
tekstowe, wyrażenie musi zostać wpisane w apostrofach.
Poniższy przykład służy do wybrania wszystkich wierszy, w
których w kolumnie name występuje ciąg znaków EmployeeID:
name='EmployeeID'
Kolejny przykład służy do wybrania wszystkich wierszy, w
których w kolumnie partno występuje liczba od 100 do 199:
partno>=100 and partno<200
Następny przykład służy do wybrania wszystkich wierszy, w
których w kolumnie temperature występuje liczba większa od
350:
temperature>350
Przykład
Instrukcja zamieszczona poniżej powoduje usunięcie z tablicy o nazwie BATCH1
wszystkich rekordów, w których w kolumnie lotno występuje liczba równa 65:
[ResultCode=]SQLDelete(ConnectionID,"BATCH1","lotno=65");
Patrz również
SQLConnect()
Funkcje skryptowe
3-71
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
SQLDisconnect()
SQL
Funkcja ta służy do odłączenia użytkownika od bazy danych.
Składnia
[ResultCode=]SQLDisconnect(ConnectionID);
Parametry
Opis
ConnectionID
Zmienna typu Memory Integer, utworzona przez użytkownika do
pamiętania numeru (ID) przypisywanego przez funkcję
SQLConnect do każdego połączenia z bazą danych.
Patrz również
SQLConnect()
SQLDropTable()
SQL
Funkcja ta usuwa tablicę z bazy danych.
Składnia
[ResultCode=]SQLDropTable(ConnectionID,TableName);
Parametry
Opis
ConnectionID
Zmienna typu Memory Integer, utworzona przez użytkownika do
pamiętania numeru (ID) przypisywanego przez funkcję
SQLConnect do każdego połączenia z bazą danych.
TableName
Nazwa tablicy w bazie danych, której dotyczy operacja.
Przykład
Zamieszczona poniżej instrukcja usuwa tablicę BATCH1, po wykonaniu jej tablica ta nie
będzie dostępna i nie będzie reagować na żadne polecenia.
[ResultCode=]SQLDropTable(ConnectionID,"BATCH1");
Patrz również
SQLConnect()
SQLEnd()
SQL
Funkcja ta jest wykorzystywana po funkcji SQLSelect() w celu zwolnienia zasobów, które
były użyte do zapamiętania tablicy wynikowej (Results Table).
Składnia
[ResultCode=]SQLEnd(ConnectionID);
Parametry
Opis
ConnectionID
Zmienna typu Memory Integer, utworzona przez użytkownika do
pamiętania numeru (ID) przypisywanego przez funkcję
SQLConnect do każdego połączenia z bazą danych.
Patrz również
SQLConnect(), SQLSelect()
3-72
Rozdział 3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
SQLErrorMsg()
SQL
Odczytuje tekst komunikatu o błędzie związanego z zadanym kodem błędu ResultCode.
ErrorMsg jest zmienną typu Memory Message (maksymalnie 131 znaków), powiązaną z
parametrem ResultCode.
Składnia
SQLErrorMsg(ResultCode);
Parametry
Opis
ResultCode
Zmienna całkowita zwracana przez większość funkcji SQL. Jej
wartość wynosi 0, jeśli funkcja została wykonana pomyślnie oraz
jest ujemną liczbą całkowitą, jeśli funkcja nie została wykonana.
! Więcej informacji na temat kodów błędów podano Dodatku A, "Diagnostyka funkcji
SQL".
Przykład
ErrorMsg=SQLErrorMsg(ResultCode);
Patrz również
SQLConnect()
SQLExecute()
SQL
Funkcja ta wykonuje instrukcję SQL. Jeśli instrukcja służy do wyboru danych z bazy,
parametr BindList określa nazwę listy powiązań między kolumnami bazy danych i
zmiennymi programu InTouch. Jeśli lista powiązań jest PUSTA, żadne zmienne nie zostaną
powiązane z kolumnami w bazie danych. Przykładowo, instrukcjami SQL mogą być Create
View, Insert, itp. Funkcja ta zwraca kody błędów. Jeśli instrukcja została "przygotowana"
za pomocą funkcji SQLPepareStatement(), jako parametru SQLHandle należy użyć
wartości zwróconej przez tę funkcję. Jeśli instrukcja nie została "przygotowana", wartość
parametru SQLHandle powinna wynosić zero.
Składnia
[ResultCode=]SQLExecute(ConnectionID,BindList,SQLHandle);
Parametry
Opis
ConnectionID
Zmienna typu Memory Integer, utworzona przez użytkownika do
pamiętania numeru (ID) przypisywanego przez funkcję
SQLConnect do każdego połączenia z bazą danych.
BindList
Lista powiązań między kolumnami bazy danych i zmiennymi
programu InTouch
SQLHandle
Wartość całkowita zwracana przez SQL po użyciu funkcji
SQLPrepareStatement().
Patrz również
SQLConnect(),SQLPrepareStatement()
Uwaga Jeżeli instrukcja nie została przygotowana, funkcja SQLExecute() może być
wywołana jeden raz. Jeśli instrukcja została przygotowana, może być wywoływana wiele
razy.
Funkcje skryptowe
3-73
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
SQLFirst()
SQL
Funkcja ta wybiera pierwszy rekord z tablicy wynikowej (Results Table) utworzonej
poprzez wykonanie ostatniej funkcji SQLSelect(). Przed wykonaniem tego polecenia musi
być wywołana funkcja SQLSelect().
Składnia
[ResultCode=]SQLFirst(ConnectionID);
Parametry
Opis
ConnectionID
Zmienna typu Memory Integer, utworzona przez użytkownika do
pamiętania numeru (ID) przypisywanego przez funkcję
SQLConnect do każdego połączenia z bazą danych.
Patrz również
SQLConnect(), SQLSelect()
SQLGetRecord()
SQL
Funkcja ta odczytuje z bufora rekord określony przez parametr RecordNumber.
Składnia
[ResultCode=]SQLGetRecord(ConnectionID,Record Number);
Parametry
Opis
ConnectionID
Zmienna typu Memory Integer, utworzona przez użytkownika do
pamiętania numeru (ID) przypisywanego przez funkcję
SQLConnect do każdego połączenia z bazą danych.
RecordNumber
Numer rekordu, który ma zostać odczytany.
Przykład
[ResultCode=]SQLGetRecord(ConnectionID,3);
Patrz również
SQLConnect()
3-74
Rozdział 3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
SQLInsert()
SQL
Funkcja ta wstawia nowy rekord do tablicy o podanej nazwie, wykorzystując wartości
zmiennych z podanej listy powiązań. Parametr BindList definiuje wykorzystywane zmienne
programu InTouch, oraz powiązania pomiędzy nimi, a kolumnami bazy danych.
Składnia
[ResultCode=]SQLInsert(ConnectionID,TableName,BindList);
Parametry
Opis
ConnectionID
Zmienna typu Memory Integer, utworzona przez użytkownika do
pamiętania numeru (ID) przypisywanego przez funkcję
SQLConnect do każdego połączenia z bazą danych.
TableName
Nazwa tablicy w bazie danych, której dotyczy operacja.
BindList
Lista powiązań między kolumnami bazy danych i zmiennymi
programu InTouch
Przykład
Instrukcja zamieszczona poniżej powoduje wstawienie nowego rekordu do tablicy o nazwie
ORG przy wykorzystaniu wartości zmiennych z listy o nazwie List1.
[ResultCode=]SQLInsert(ConnectionID,"ORG","List1");
Uwaga W celu szybkiego wstawienia rekordów do tablicy, zamiast funkcji SQLInsert()
można użyć trzech innych funkcji. Funkcja SQLInsert() w jednej operacji przygotowuje
instrukcję wstawienia, wykonuje ją i zwalnia wykorzystywane zasoby. Przy ponownym
wywołaniu funkcji SQLInsert() wszystkie te operacje są wykonywane ponownie. Zabiera
to znacznie więcej czasu, niż wykorzystanie trzech funkcji wymienionych poniżej, które
realizują poszczególne etapy omawianego zadania. Po wywołaniu funkcja
SQLInsertPrepare() (przygotowanie) można wykonać dowolną liczbę razy funkcję
SQLInsertExecute() (wstawienie rekordu), a następnie zakończyć wstawianie wywołując
funkcję SQLInsertEnd().
Patrz również
SQLConnect(), SQLInsert(), SQLInsertPrepare(), SQLInsertExecute(), SQLInsertEnd()
SQLInsertEnd()
SQL
Przerwanie instrukcji.
Składnia
[ResultCode=]SQLInsertEnd(ConnectionID,SQLHandle);
Parametry
Opis
ConnectionID
Zmienna typu Memory Integer, utworzona przez użytkownika do
pamiętania numeru (ID) przypisywanego przez funkcję
SQLConnect do każdego połączenia z bazą danych.
SQLHandle
Wartość całkowita zwracana przez SQL po użyciu funkcji
SQLPrepareStatement().
Patrz również
SQLConnect(), SQLPrepareStatement()
Funkcje skryptowe
3-75
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
SQLInsertExecute()
SQL
Funkcja ta wykonuje przygotowaną instrukcję wstawiania rekordów do tablicy.
Składnia
[ResultCode=]SQLInsertExecute(ConnectionID,BindList,SQLHandle);
Parametry
Opis
ConnectionID
Zmienna typu Memory Integer, utworzona przez użytkownika do
pamiętania numeru (ID) przypisywanego przez funkcję
SQLConnect do każdego połączenia z bazą danych.
BindList
Lista powiązań między kolumnami bazy danych i zmiennymi
programu InTouch
SQLHandle
Wartość całkowita zwracana przez SQL po użyciu funkcji
SQLPrepareStatement().
Patrz również
SQLConnect(), SQLPrepareStatement()
SQLInsertPrepare()
SQL
Funkcja ta przygotowuje instrukcję wstawiania rekordów do tablicy. Instrukcja wstawiania
nie jest wykonywana. Parametr SQLHandle jest zmienną całkowitą, której wartość jest
ustalana po wykonaniu instrukcji.
Składnia
[ResultCode=]SQLInsertPrepare(ConnectionID,TableName,BindList,
SQLHandle);
Parametry
Opis
ConnectionID
Zmienna typu Memory Integer, utworzona przez użytkownika do
pamiętania numeru (ID) przypisywanego przez funkcję
SQLConnect do każdego połączenia z bazą danych.
TableName
Nazwa tablicy w bazie danych, której dotyczy operacja.
BindList
Lista powiązań między kolumnami bazy danych i zmiennymi
programu InTouch
SQLHandle
Wartość całkowita zwracana przez SQL po użyciu funkcji
SQLPrepareStatement().
Patrz również
SQLConnect(), SQLPrepareStatement()
3-76
Rozdział 3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
SQLLast()
SQL
Funkcja ta wybiera ostatni rekord z tablicy wynikowej (Results Table) utworzonej poprzez
wykonanie ostatniej funkcji SQLSelect(). Przed wykonaniem tego polecenia musi być
wywołana funkcja SQLSelect().
Składnia
[ResultCode=]SQLLast(ConnectionID);
Parametry
Opis
ConnectionID
Zmienna typu Memory Integer, utworzona przez użytkownika do
pamiętania numeru (ID) przypisywanego przez funkcję
SQLConnect do każdego połączenia z bazą danych.
Przykład
[ResultCode=]SQLLast(ConnectionID);
Patrz również
SQLConnect(), SQLSelect()
SQLLoadStatement()
SQL
Funkcja ta odczytuje instrukcję zapisaną w pliku FileName. W tym momencie funkcja ta
wykazuje podobieństwo do instrukcji utworzonej za pomocą funkcji SQLSetStatement(),
oraz może być dołączana za pomocą funkcji SQLAppendStatement, lub wykonywana za
pomocą funkcji SQLExecute. W jednym pliku może znajdować się wyłącznie jedna
instrukcja. Funkcja SQLAppendStatement() może być jednak wykorzystana do
dołączania do instrukcji, jeżeli nie były wywoływane funkcje SQLPrepareStatement()
lub SQLExecute().
Składnia
[ResultCode=]SQLLoadStatement(ConnectionID,FileName);
Parametry
Opis
ConnectionID
Zmienna typu Memory Integer, utworzona przez użytkownika do
pamiętania numeru (ID) przypisywanego przez funkcję
SQLConnect do każdego połączenia z bazą danych.
FileName
Nazwa pliku zawierającego odczytywaną instrukcję.
Uwagi
Przygotowuje instrukcję SQL utworzoną za pomocą funkcji: SQLSetStatement() lub
SQLLoadStatement(). Funkcja zwraca parametr SQLHandle.
Przykład
[ResultCode=]SQLLoadStatement(ConnectionID,"C:\InTouchAppname\SQL.t
xt")
SQL.txt = Select ColumnName from TableName where ColumnName>100;
Patrz również
SQLConnect(), SQLAppendStatement(), SQLExecute(), SQLPrepareStatement
Funkcje skryptowe
3-77
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
SQLManageDSN()
SQL
Funkcja ta uruchamia program konfiguracyjny Microsoft ODBC Manager. Można go
wykorzystać do dodawania, usuwania i modyfikacji nazw źródeł danych (Data Source
Names).
Składnia
SQLManageDSN(ConnectionID);
Parametry
Opis
ConnectionID
Zmienna typu Memory Integer, utworzona przez użytkownika do
pamiętania numeru (ID) przypisywanego przez funkcję
SQLConnect do każdego połączenia z bazą danych.
SQLNext()
SQL
Funkcja ta wybiera następny rekord z tablicy wynikowej (Results Table) utworzonej
poprzez wykonanie ostatniej funkcji SQLSelect(). Funkcja SQLPrepareStatement() musi
następować po funkcji SQLSelect().
Składnia
[ResultCode=]SQLNext(ConnectionID);
Parametry
Opis
ConnectionID
Zmienna typu Memory Integer, utworzona przez użytkownika do
pamiętania numeru (ID) przypisywanego przez funkcję
SQLConnect do każdego połączenia z bazą danych.
Przykład
[ResultCode=]SQLNext(ConnectionID);
Patrz również
SQLConnect(), SQLSelect()
SQLNumRows()
SQL
Funkcja ta oblicza, ile wierszy spełnia kryteria podane w ostatnio użytej funkcji
SQLSelect(). Przykładowo, warunek WhereExpression podany jako jeden z parametrów
funkcji SQLSelect() może spełniać 40 lub 4000 wierszy, co może decydować o dalszym
toku postępowania. Może być wykorzystane do określenia, która funkcja będzie
wykonywana jako następna.
Składnia
SQLNumRows(ConnectionID);
Parametry
Opis
ConnectionID
Zmienna typu Memory Integer, utworzona przez użytkownika do
pamiętania numeru (ID) przypisywanego przez funkcję
SQLConnect do każdego połączenia z bazą danych.
Przykład
Instrukcja zamieszczona poniżej powoduje przypisanie liczby wybranych wierszy do
zmiennej całkowitej NumRows:
NumRows=SQLNumRows(ConnectionID);
Patrz również
SQLConnect()
3-78
Rozdział 3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
SQLPrepareStatement()
SQL
SQLPrepareStatement() przygotowuje istniejącą instrukcję SQL do wykorzystania jej
przez funkcję SQLSetParam(). Instrukcja może zostać utworzona zarówno za pomocą
SQLSetStatement(), jak i SQLLoadStatement(). Funkcja zwraca parametr SQLHandle.
Składnia
[ResultCode=]SQLPrepareStatement(ConnectionID,SQLHandle);
Parametry
Opis
ConnectionID
Zmienna typu Memory Integer, utworzona przez użytkownika do
pamiętania numeru (ID) przypisywanego przez funkcję
SQLConnect do każdego połączenia z bazą danych.
SQLHandle
Wartość całkowita zwracana przez SQL po użyciu funkcji
SQLPrepareStatement().
Przykład
[ResultCode=]SQLPrepareStatement(ConnectionID,SQLHandle);
Patrz również
SQLConnect(), SQLSelect(), SQLSetStatement(), SQLLoadStatement()
SQLPrev()
SQL
Funkcja ta wybiera poprzedni rekord z tablicy wynikowej (Results Table) utworzonej
poprzez wykonanie ostatniej funkcji SQLSelect().
Składnia
[ResultCode=]SQLPrev(ConnectionID);
Parametry
Opis
ConnectionID
Zmienna typu Memory Integer, utworzona przez użytkownika do
pamiętania numeru (ID) przypisywanego przez funkcję
SQLConnect do każdego połączenia z bazą danych.
Uwagi
Funkcja SQLPrepareStatement() musi następować po funkcji SQLSelect().
Przykład
[ResultCode=]SQLPrev(ConnectionID);
Patrz również
SQLConnect(), SQLSelect()
Funkcje skryptowe
3-79
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
SQLRollback()
SQL
Funkcja SQLRollback() cofa ostatnio wykonany zestaw transakcji. Grupa poleceń
zawartych pomiędzy funkcjami SQLTransact() i SQLCommit() lub SQLRollback nosi
nazwę zestawu transakcji. Zestaw transakcji jest traktowany jak pojedyncza transakcja. Po
wykonaniu polecenia SQLTransact(), wszystkie kolejne operacje nie będą kierowane do
bazy danych, aż do momentu kolejnego wywołania polecenia SQLCommit().
Składnia
[ResultCode=]SQLRollback(ConnectionID,);
Parametry
Opis
ConnectionID
Zmienna typu Memory Integer, utworzona przez użytkownika do
pamiętania numeru (ID) przypisywanego przez funkcję
SQLConnect do każdego połączenia z bazą danych.
Przykład
ResultCode =SQLTransact( ConnectionID);
ResultCode = SQLInsertPrepare( ConnectionID, TableName, BindList,
SQLHandle );
ResultCode = SQLInsertExecute( ConnectionID, BindList, SQLHandle);
ResultCode = SQLInsertExecute( ConnectionID, BindList, SQLHandle);
ResultCode = SQLInsertExecute( ConnectionID, BindList, SQLHandle);
ResultCode = SQLInsertEnd( ConnectionID, SQLHandle );
ResultCode =SQLRollback( ConnectionID);
{Po Transact() ignorowane są wszystkie polecenia Baz danych bez
zmian}
Patrz również
SQLCommit(), SQLTransact()
3-80
Rozdział 3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
SQLSelect()
SQL
Funkcja ta wybiera informacje z wyszczególnionej tablicy w bazie danych. Podczas
wykonywania funkcji SQLSelect() w pamięci tworzona jest tymczasowa tablica wynikowa
(Results Table), zawierająca rekordy, które można przeszukiwać używając funkcji
SQLFirst(), SQLLast(), SQLNext() i SQLPrev().
Uwaga Po wykonaniu funkcji SQLSelect() zawsze należy użyć funkcji SQLEnd() w celu
zwolnienia zasobów, które były użyte do zapamiętania tablicy wynikowej (Results Table).
Składnia
[ResultCode=]SQLSelect(ConnectionID,TableName,BindList,
WhereExpr,OrderByExpr);
Parametry
Opis
ConnectionID
Zmienna typu Memory Integer, utworzona przez użytkownika do
pamiętania numeru (ID) przypisywanego przez funkcję
SQLConnect do każdego połączenia z bazą danych.
TableName
Nazwa tablicy w bazie danych, której dotyczy operacja.
BindList
Lista powiązań między kolumnami bazy danych i zmiennymi
programu InTouch
WhereExpression
Warunek, który może być spełniony lub niespełniony dla każdego
wiersza tablicy. Funkcja wybiera z tablicy tylko te wiersze, dla
których warunek jest spełniony. Warunek musi mieć następujący
format:
Nazwa_kolumny operator_porównania wyrażenie
Uwaga Jeśli w kolumnie znajdują się dane typu tekstowego,
wyrażenie musi zostać wpisane w apostrofach.
Poniższy przykład służy do wybrania wszystkich wierszy, w
których w kolumnie name występuje ciąg znaków EmployeeID:
name='EmployeeID'
Kolejny przykład służy do wybrania wszystkich wierszy, w
których w kolumnie partno występuje liczba od 100 do 199:
partno>=100 and partno<200
Następny przykład służy do wybrania wszystkich wierszy, w
których w kolumnie temperature występuje liczba większa od
350:
temperature>350
Przykłady wyrażenia WhereExpression:
WhereExpr - zmienna typu Memory Message.
OrderByExpr - zmienna typu Memory Message.
Speed_Input - Memory Real - Liczba wprowadzana przez
użytkownika
Serial_Input - Memory Message - Tekst wprowadzony przez
użytkownika
Przykład dla danych typu analogowego
WhereExpr = "Speed = " + text(Speed_Input,”#.##”);
# Ponieważ Speed_Input jest liczbą, musi ona zostać przekonwertowana na tekst, co
pozwoli na dołączenie jej do wyrażenia tekstowego.
Przykład dla danych typu tekstowego
WhereExpr = "Ser_No = " + Serial_input + "";
# Ponieważ Serial_Input jest łańcuchem znaków, wartość ujęta musi być w apostrofy,
np. WhereExpr="Ser_No='125gh";
Przykłady dla danych typu tekstowego z wykorzystaniem instrukcji like
Funkcje skryptowe
3-81
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
WhereExpr = "Ser_No like " + "125%"
# W przypadku korzystania z słowa Like można stosować znak % jako filtr.
Przykłady dla danych typu tekstowego i analogowego, stosowanych z operatorem
And:
WhereExpr = "Ser_No = " + Serial_input + "" + " and " + "Speed = "
+ text(Speed_Input,”#.##”);
OrderByExpr = "";
# Jeżeli kolejność nie odgrywa żadnej roli, wpisać pusty łańcuch znaków, tak jak w
przykładzie powyżej.
SQLSelect z zastosowaniem zmiennej WhereExpr
ResultCode =
SQLSelect(Connect_Id,TableName,BindList,WhereExpr,OrderByExpr);
Error_msg = SQLErrorMsg( ResultCode );
SQLSelect, WhereExpr wbudowane w funkcję
ResultCode = SQLSelect(Connect_Id,TableName,BindList, "Ser_No =
" + Serial_input + "'", OrderByExpr);
Error_msg = SQLErrorMsg( ResultCode );
Uwaga Po zakończeniu SQLSelect() należy zawsze wywoływać funkcję
SQLEnd(Connect_Id). Jeżeli funkcja SQLEnd() nie zostanie wywołana, zasoby nie
zostaną zwolnione, co może spowodować brak wolnej pamięci w czasie wykonywania
aplikacji.
OrderByExpression Definiuje kolumnę i kierunek sortowania. Do sortowania można
korzystać wyłącznie z nazw kolumn, a wyrażenie musi mieć
postać:
Nazwa_kolumny [ASC|DESC]
Poniższe wyrażenie spowoduje uporządkowanie wybranej tablicy
względem kolumny manager, w porządku malejącym:
"manager ASC"
W celu posortowania kilku kolumn, wyrażenie musi mieć postać:
Nazwa_kolumny [ASC|DESC],
Nazwa_kolumny [ASC|DESC]
Kolejne wyrażenie spowoduje uporządkowanie wybranej tablicy
względem kolumny temperature w porządku rosnącym i
względem kolumny time w porządku malejącym:
" temperature ASC, time DESC"
Przykład
Instrukcja zamieszczona poniżej powoduje wybranie z tablicy o nazwie BATCH (przy
wykorzystaniu listy powiązań o nazwie List1) wszystkich rekordów, w których w kolumnie
type znajduje się słowo cookie. Odczytana tablica zostanie uporządkowana rosnąco
względem kolumny amount i malejąco względem kolumny sugar:
[ResultCode=]SQLSelect(ConnectionID,"BATCH","List1","type='cookie'"
,"amount ASC, sugar DESC");
Kolejna przykładowa instrukcja powoduje wybranie wszystkich danych z bazy danych, bez
określania warunków WhereExpression i OrderByExpression:
[ResultCode=]SQLSelect(ConnectionID,"BATCH","List1","","");
Patrz również
SQLFirst(), SQLConnect(), SQLLast(), SQLNext(), SQLPrev(), SQLEnd(), SQLSelect()
3-82
Rozdział 3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
SQLSetParamChar()
SQL
Funkcja ta powoduje przypisanie łańcucha znaków określonemu parametrowi tekstowemu.
Funkcja SQLSetParamChar() może być wywoływana wiele razy przed wykonaniem
instrukcji SQL, w wyniku czego parametr może być złożeniem kolejno przypisywanych
łańcuchów znaków. Puste łańcuchy znaków są ignorowane.
Składnia
[ResultCode=]SQLSetParamChar(SQLHandle,ParameterNumber,
ParameterValue,MaxLen);
Parametry
Opis
SQLHandle
Wartość całkowita zwracana przez SQL po użyciu funkcji
SQLPrepareStatement().
ParameterNumber
Numer parametru w instrukcji SQL.
ParameterValue
Przypisywana wartość parametru.
MaxLen
Maksymalny rozmiar kolumny, z którą związany jest parametr.
Opcja ta wyznacza czy parametr jest typu o różnej liczbie
znaków, czy też typu o znacznie różnej liczbie znaków. Jeżeli
parametr MaxLen ma długość równą lub większa od maksymalnej
wartości dopuszczalnej w bazie danych, to parametr jest typu o
różnej liczbie znaków. Jeżeli jest dłuższy, ma typ o znacznie
różnej liczbie znaków.
Przykład
[ResultCode=]SQLSetParamChar(SQLHandle,ParameterNumber,
ParameterValue,MaxLen);
Patrz również
SQLPrepareStatement()
SQLSetParamDate()
SQL
Funkcja ta powoduje przypisanie łańcucha znaków określonemu parametrowi
reprezentującemu datę.
Składnia
[ResultCode=]SQLSetParamDate(SQLHandle,ParameterNumber,
ParameterValue);
Parametry
Opis
SQLHandle
Wartość całkowita zwracana przez SQL po użyciu funkcji
SQLPrepareStatement().
ParameterNumber
Numer parametru w instrukcji SQL.
ParameterValue
Przypisywana wartość parametru.
Przykład
[ResultCode=]SQLSetParamDate(SQLHandle,ParameterNumber,
ParameterValue);
Patrz również
SQLPrepareStatement()
Funkcje skryptowe
3-83
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
SQLSetParamDateTime()
SQL
Funkcja ta powoduje przypisanie łańcucha znaków określonemu parametrowi
zawierającemu datę i czas.
Składnia
[ResultCode=]SQLSetParamDateTime(SQLHandle,ParameterNumber,
ParameterValue,Precision);
Parametry
Opis
SQLHandle
Wartość całkowita zwracana przez SQL po użyciu funkcji
SQLPrepareStatement().
ParameterNumber
Numer parametru w instrukcji SQL.
ParameterValue
Przypisywana wartość parametru.
Precision
Długość wartość daty-czasu do przypisania. Jest to liczba
znaków, wykorzystywanych w ParameterValue.
Przykład
[ResultCode=]SQLSetParamDateTime(SQLHandle,ParameterNumber,
ParameterValue,Precision);
Patrz również
SQLPrepareStatement()
SQLSetParamDecimal()
SQL
Funkcja ta powoduje przypisanie łańcucha znaków (cyfr) określonemu parametrowi
dziesiętnemu. Precision jest liczbą cyfr, a Scale jest liczbą cyfr po kropce dziesiętnej.
Składnia
[ResultCode=]
SQLSetParamDecimal(SQLHandle,ParameterNumber,
ParameterValue,Precision,Scale);
Parametry
Opis
SQLHandle
Wartość całkowita zwracana przez SQL po użyciu funkcji
SQLPrepareStatement().
ParameterNumber
Numer parametru w instrukcji SQL.
ParameterValue
Przypisywana wartość parametru.
Precision
Długość wartość daty-czasu do przypisania. Jest to liczba
znaków, wykorzystywanych w ParameterValue.
Scale
Liczba cyfr po kropce dziesiętnej.
Przykład
[ResultCode=]SQLSetParamDecimal(SQLHandle,ParameterNumber,
ParameterValue,Precision, Scale);
Patrz również
SQLPrepareStatement()
3-84
Rozdział 3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
SQLSetParamFloat()
SQL
Funkcja ta powoduje ustawienie wartości danego parametru na wartość równą
ParameterValue.
Składnia
[ResultCode=]SQLSetParamFloat(SQLHandle,ParameterNumber,
ParameterValue);
Parametry
Opis
SQLHandle
Wartość całkowita zwracana przez SQL po użyciu funkcji
SQLPrepareStatement().
ParameterNumber
Numer parametru w instrukcji SQL.
ParameterValue
Przypisywana wartość parametru.
Przykład
[ResultCode=]SQLSetParamFloat(SQLHandle,ParameterNumber,
ParameterValue);
Patrz również
SQLPrepareStatement()
SQLSetParamInt()
SQL
Funkcja ta powoduje ustawienie wartości danego parametru na wartość równą
ParameterValue.
Składnia
[ResultCode=]SQLSetParamInt(SQLHandle,ParameterNumber,
ParameterValue);
Parametry
Opis
SQLHandle
Wartość całkowita zwracana przez SQL po użyciu funkcji
SQLPrepareStatement().
ParameterNumber
Numer parametru w instrukcji SQL.
ParameterValue
Przypisywana wartość parametru.
Przykład
[ResultCode=]SQLSetParamInt(SQLHandle,ParameterNumber,
ParameterValue);
Patrz również
SQLPrepareStatement()
SQLSetParamLong()
SQL
Funkcja ta powoduje ustawienie wartości danego parametru na wartość równą
ParameterValue.
Składnia
[ResultCode=]SQLSetParamLong(SQLHandle,ParameterNumber,
ParameterValue);
Parametry
Opis
SQLHandle
Wartość całkowita zwracana przez SQL po użyciu funkcji
SQLPrepareStatement().
ParameterNumber
Numer parametru w instrukcji SQL.
ParameterValue
Przypisywana wartość parametru.
Przykład
[ResultCode=]SQLSetParamLong(SQLHandle,ParameterNumber,
ParameterValue);
Patrz również
SQLPrepareStatement()
Funkcje skryptowe
3-85
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
SQLSetParamNull()
SQL
Funkcja ta powoduje przypisanie określonemu parametrowi wartości zerowej (pustej).
Składnia
[ResultCode=]SQLSetParamNull(SQLHandle,ParameterNumber,
ParameterType,Precision,Scale);
Parametry
Opis
SQLHandle
Wartość całkowita zwracana przez SQL po użyciu funkcji
SQLPrepareStatement().
ParameterNumber
Numer parametru w instrukcji SQL.
ParameterType
Typ danych określonego parametru:
Typ
Value
Opis
Char
1
Łańcuch znaków o stałej
długości wypełniony znakami
pustymi
Var Char
2
Łańcuch znaków o zmiennej
długości
Decimal
3
Liczba dziesiętna w kodzie BCD
Integer
4
4-bajtowa liczba całkowita ze
znakiem
Small Integer
5
2-bajtowa liczba całkowita ze
znakiem
Float
6
4-bajtowa liczba
zmiennoprzecinkowa
Double
Precision Float
7
8-bajtowa liczba
zmiennoprzecinkowa
DateTime
8
26-bajtowa reprezentacja daty i
czasu
Date
111
26-bajtowa reprezentacja daty i
czasu
Time
112
26-bajtowa reprezentacja daty i
czasu
No Type
0
Brak typu danych
Precision Dokładność wartości podawanych w systemie dziesiętnym,
maksymalna liczba znaków, lub długość bajtów przeznaczonych
do zapisu daty i czasu.
Scale
Liczba cyfr po kropce dziesiętnej. Jest wymagana tylko w
przypadku, gdy dotyczy zerowanego parametru.
Uwagi
Jeśli dla tego samego parametru została wywołana już funkcja SQLSetParam(), nie można
użyć żadnego typu danych.
Przykład
[ResultCode=]SQLSetParamNull(SQLHandle,ParameterNumber,
ParameterType,Precision,Scale);
Patrz również
SQLPrepareStatement()
3-86
Rozdział 3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
SQLSetParamTime()
SQL
Funkcja ta powoduje przypisanie łańcucha znaków określonemu parametrowi
reprezentującemu czas.
Składnia
[ResultCode=]SQLSetParamTime(SQLHandle,ParameterNumber,
ParameterValue);
Parametry
Opis
SQLHandle
Wartość całkowita zwracana przez SQL po użyciu funkcji
SQLPrepareStatement().
ParameterNumber
Numer parametru w instrukcji SQL.
ParameterValue
Przypisywana wartość parametru.
Przykład
[ResultCode=]SQLSetParamTime(SQLHandle,ParameterNumber,
ParameterValue);
Patrz również
SQLPrepareStatement()
SQLSetStatement()
SQL
Funkcja ta tworzy bufor instrukcji SQL wykorzystując do tego celu wartość SQLStatement,
dla ustanowionego połączenia ConnectionID. Jedno połączenie ConnectionID może
korzystać tylko z jednego bufora. Funkcja ta zwraca kody błędów.
Składnia
[ResultCode=]SQLSetStatement(ConnectionID,SQLStatement);
Parametry
Opis
ConnectionID
Zmienna typu Memory Integer, utworzona przez użytkownika do
pamiętania numeru (ID) przypisywanego przez funkcję
SQLConnect do każdego połączenia z bazą danych.
SQLStatement
Właściwa instrukcja SQL, jak w poniższym przykładzie.
Przykład
[ResultCode=]SQLSetStatement(ConnectionID,"Select LotNo, LotName
from LotInfo");
W zamieszczonym poniżej przykładzie, wartość SQLHandle ustawiona zostaje na 0, dzięki
czemu instrukcja nie wywołuje SQLPrepare(Connect_Id,SQLHandle) przed wykonaniem
instrukcji. Ponieważ SQLHandle nie została utworzona przez SQLPrepare w celu
poprawnego zakończenia tego zaznaczania, skorzystać z funkcji SQLEnd w miejsce
SQLClearStatement().
SQLSetStatement( Connect_Id, "Select Speed, Ser_No from tablename
where Ser_No =" + Serial_input + "");
SQLExceute(Connect_Id,0);
W zamieszczonym poniżej przykładzie, SQLHandle jest tworzona za pomocą
SQLPrepareStatement, i wykorzystywana w funkcji SQLExecute. W celu zakończenia tej
instrukcji zaznaczania skorzystać z funkcji SQLClearStatement w celu uwolnienia
zasobów, oraz zwolnienia SQLhandle.
SQLSetStatement( Connect_Id, "Select Speed, Ser_No from tablename
where Ser_No =" + Serial_input + "");
SQLPrepareStatement(Connect_Id,SQlHandle);
SQLExceute(Connect_Id,SqlHandle);
Patrz również
SQLConnect()
Funkcje skryptowe
3-87
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
SQLTransact()
SQL
Funkcja SQLTransact() określa początek zestawu transakcji. Grupa poleceń
zawierających się pomiędzy funkcjami SQLTransact() i SQLCommit() nosi nazwę
zestawu transakcji. Zestaw transakcji jest traktowany jak pojedyncza transakcja. Po
wykonaniu polecenia SQLTransact(), wszystkie kolejne operacje nie będą kierowane do
bazy danych, aż do momentu kolejnego wywołania polecenia SQLCommit().
Składnia
[ResultCode=]SQLTransact(ConnectionID);
Parametry
Opis
ConnectionID
Zmienna typu Memory Integer, utworzona przez użytkownika do
pamiętania numeru (ID) przypisywanego przez funkcję
SQLConnect do każdego połączenia z bazą danych.
Uwaga Przy pisaniu skryptów z użyciem funkcji SQLTransact() należy zachować dużą
ostrożność. Ponieważ czas wykonania skryptu jest mnożony przez liczbę transakcji w
zestawie transakcji, włączanie wielu poleceń do zestawu transakcji istotnie zwalnia
działanie aplikacji.
Patrz również
SQLCommit(), SQLRollback()
SQLUpdate()
SQL
Funkcja ta powoduje zmodyfikowanie rekordu w wyszczególnionej tablicy w bazie danych
przy użyciu bieżących wartości zmiennych powiązanych z kolumnami tablicy.
Składnia
[ResultCode=]SQLUpdate(ConnectionID,TableName,BindList,
WhereExpr);
Parametry
Opis
ConnectionID
Zmienna typu Memory Integer, utworzona przez użytkownika do
pamiętania numeru (ID) przypisywanego przez funkcję
SQLConnect do każdego połączenia z bazą danych.
TableName
Nazwa tablicy w bazie danych, której dotyczy operacja.
BindList
Lista powiązań między kolumnami bazy danych i zmiennymi
programu InTouch
WhereExpression
Warunek, który może być spełniony lub niespełniony dla każdego
wiersza tablicy. Funkcja aktualizuje tylko te wiersze w tablicy,
dla których warunek jest spełniony. Warunek musi mieć
następujący format:
Nazwa_kolumny operator_porównania wyrażenie
Uwaga Jeśli obowiązującym typem danych w kolumnie są dane
tekstowe, wyrażenie musi zostać wpisane w apostrofach.
Poniższy przykład służy do wybrania wszystkich wierszy, w
których w kolumnie name występuje ciąg znaków EmployeeID:
name='EmployeeID'
Kolejny przykład służy do wybrania wszystkich wierszy, w
których w kolumnie partno występuje liczba od 100 do 199:
partno>=100 and partno<200
Następny przykład służy do wybrania wszystkich wierszy, w
których w kolumnie temperature występuje liczba większa od
350:
temperature>350
Przykład
Zamieszczone poniżej wyrażenie powoduje uaktualnienie wszystkich rekordów tablicy
BATCH, dla których numer serii jest równy 65, do bieżącej wartości zmiennych
określonych za pomocą parametru BindList "List1".
[ResultCode=]SQLUpdate(ConnectionID,"BATCH","List1","lotno=65");
3-88
Rozdział 3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Uwaga Należy sprawdzić, czy rekordy nie powtarzają się. W przypadku gdy w tabeli będą
znajdować się identyczne rekordy, zostaną one wszystkie uaktualnione.
Patrz również
SQLConnect()
SQLUpdateCurrent()
SQL
Funkcja ta pobiera zaznaczony rekord i uaktualnia go. Zamieszczony poniżej przykład
spowoduje uaktualnienie zaznaczonego w danym momencie rekordu.
Składnia
[ResultCode=]SQLUpdateCurrent(ConnectionID);
Parametry
Opis
ConnectionID
Zmienna typu Memory Integer, utworzona przez użytkownika do
pamiętania numeru (ID) przypisywanego przez funkcję
SQLConnect do każdego połączenia z bazą danych.
Przykład
[ResultCode=]SQLUpdateCurrent(ConnectionID);
Patrz również
SQLConnect()
Sqrt()
funkcje matematyczne
Funkcja ta oblicza pierwiastek kwadratowy z podanej liczby.
Składnia
Real Result=Sqrt(Number);
Parametry
Opis
Number
Dowolna liczba, zmienna rzeczywista lub całkowita programu
InTouch.
Real Result
Zmienna typu rzeczywistego, przeznaczona do przechowywania
wyniku.
Przykład
AnalogTag1=Sqrt(AnalogTag2);
Funkcje skryptowe
3-89
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
StartApp
system
Automatyczne uruchomienie innej aplikacji Windows.
Składnia
StartApp "AppName";
Parametry
Opis
AppName
Nazwa programu (pliku z rozszerzeniem .EXE) aplikacji do
uruchomienia, (np. WRITE.EXE).
Chociaż rozszerzenie .EXE w nazwie pliku nie jest wymagane, zaleca się jego wpisywanie.
Można również wprowadzać parametry, w przypadkach gdy aplikacja je obsługuje.
Nie są obsługiwane długie nazwy plików, jednak jeżeli zachodzi potrzeba korzystania z
takich nazw, można wprowadzać te nazwy w postaci w jakiej są one przedstawiane w
systemie Dos:
Jeżeli długa nazwa dostępu ma postać: :C:\Program files\Microsoft Office\Office\Excel.
Wprowadzić: C:\Progra~1\Micros~2\Office\Excel (postać w systemie Dos).
SetApp "C:\Progra~1\Micros~2\Office\Excel";
Jeżeli wykorzystywany jest plik windows i pokazywane są wszystkie informacje o pliku, w
środkowej kolumnie umieszczona będzie nazwa w postaci, w jakiej jest ona
reprezentowana w systemie Dos.
Przykłady
Zamieszczona poniżej instrukcja powoduje uruchomienie programu Microsoft Windows
Wordpad.
StartApp "Wordpad.exe";
Patrz również
ActivateAPP()
StringASCII()
funkcje tekstowe
Zwraca kod ASCII pierwszego znaku zadanej zmiennej tekstowej
Składnia
IntegerResult=StringASCII("Char");
Parametry
Opis
Char
Zmienna tekstowa lub łańcuch znaków alfanumerycznych.
Uwagi
Kod ASCII pierwszego znaku ciągu znaków Char zostanie przypisany do zmiennej
IntegerResult. W czasie wykonywania funkcji, testowany lub zmieniany jest wyłącznie
pojedynczy znak. Jeśli łańcuch znaków lub zmienna tekstowa podana jako parametr funkcji
StringASCII() zawiera więcej niż jeden znak, podany zostanie tylko kod pierwszego znaku.
Przykłady
StringASCII("A") zwraca 65
StringASCII("A Mixer is Running") zwraca 65
StringASCII("a mixer is running") zwraca 97
Patrz również
StringChar()
3-90
Rozdział 3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
StringChar()
funkcje tekstowe
Zwraca znak dla zadanego kodu ASCII.
Składnia
MessageResult=StringChar(ASCII);
Parametry
Opis
ASCII
Kod ASCII lub zmienna typu całkowitego.
Uwagi
Znak o podanym (jako parametr ASCII) kodzie ASCII zostanie przypisany do zmiennej
MessageResult. Jednym z zastosowań tej funkcji jest dołączanie do zmiennych tekstowych
znaków ASCII, które nie są reprezentowane na klawiaturze.
Przykład
ControlString=MessageTag+StringChar(13)+StringChar(10);
W przykładzie powyżej, do zmiennej MessageTag dołączone zostały znaki [CR(13)] i
[LF(10)], a całość została zapisana jako ControlString. Wstawianie znaków o kodach spoza
normalnego zakresu 32-126 może być bardzo użyteczne przy tworzeniu kodów sterujących
dla urządzeń zewnętrznych, takich jak drukarki lub modemy.
Funkcja ta jest często wykorzystywana do tworzenia poleceń SQL. W wyrażeniu
WhereExpression wartości tesktowe muszą często ujęte być w znaki cudzysłowów, można
je wstawić za pomocą funkcji StringChar(34).
Patrz również
StringASCII()
StringFromIntg()
funkcje tekstowe
Zamienia wartość całkowitą na odpowiadający jej ciąg znaków.
Składnia
MessageResult=StringFromIntg(Number,Base);
Parametry
Opis
Number
Liczba do konwersji. Parametr ten może być wartością stałą lub
zmienną programu InTouch.
Base
Parametr określający system zapisu. Parametr ten może być
wartością stałą lub zmienną programu InTouch.
Uwagi
Liczba całkowita Integer jest przekształcana na system określony przez parametr Base
(dwójkowy, szesnastkowy, itp.), a wynik tej operacji jest zapisywany jako MessageResult.
Przykłady
StringFromIntg(26, 2) zwraca "11010"
StringFromIntg(26, 8) zwraca "32"
StringFromIntg(26, 16) zwraca "1A"
Patrz również
StringToIntg(), StringFromReal(), StringToReal(), Text()
Funkcje skryptowe
3-91
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
StringFromReal()
funkcje tekstowe
Przekształca liczbę w formacie rzeczywistym na odpowiadający jej ciąg znaków, zapisując
ją w formacie zmiennoprzecinkowym lub w formacie wykładniczym.
Składnia
MessageResult=StringFromReal(Number,Precision,"Type");
Parametry
Opis
Number
Jest konwertowany zgodnie z parametrami Precision i Type, a
wartość przypisywana jest do MessageResult. Liczba lub
zmienna typu rzeczywistego.
Precision
Podaje ile miejsc dziesiętnych należy wyświetlić. Parametr ten
może być wartością stałą lub zmienną programu InTouch.
Type Parametr
określający system zapisu:
Typ
Opis
"f"
8-bajtowa liczba zmiennoprzecinkowa
"e"
Notacja "naukowa" z małym e.
"E"
Notacja "naukowa" z dużym E.
Przykłady
StringFromReal(263.355, 2,"f") zwraca "263.36"
StringFromReal(263.355, 2,"e") zwraca "2.63e2"
StringFromReal(263.55, 3,"E") zwraca "2.636E2"
Patrz również
StringToReal(), StringFromIntg(), StringToIntg(), Text()
3-92
Rozdział 3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
StringFromTime()
funkcje tekstowe
Przekształca czas (wyrażany w sekundach licząc od 01-01-1970) na ciąg znaków.
Składnia
MessageResult=StringFromTime(SecsSince1-1-70,StringType);
Parametry
Opis
SecsSince1-1-70
Konwersja przeprowadzana jest zgodnie z parametrem
StringTypei, a wynik zwracany za pomocą MessageResult.
StringType Parametr
określający system zapisu:
Typ
Opis
1
Zapis daty w formacie ustawionym w Panelu
sterowania Windows. (Podobny do formatu
zmiennej systemowej $DateString.)
2
Zapis czasu w formacie ustawionym w Panelu
sterowania Windows. (Podobny do formatu
zmiennej systemowej $TImeString.)
3
Wyświetlenie tekstu składającego się z 24 znaków,
podającego zarówno datę jak i godzinę.
"Wed Jan 02 02:03:55 1993"
4
Wyświetlenie skrótowego oznaczenia dla dnia
tygodnia.
"Wed"
5
Wyświetlenie pełnej nazwy dnia tygodnia.
"Wednesday"
Przykłady
StringFromTime(86400, 1) zwraca "1/2/70"
StringFromTime(86400, 2) zwraca "12:00:00 AM"
StringFromTime(86400, 3) zwraca "Fri Jan 02 00:00:00 1970"
StringFromTime(86400, 4) zwraca "Fri"
StringFromTime(86400, 5) zwraca "Friday"
Funkcje skryptowe
3-93
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
StringInString()
funkcje tekstowe
Funkcja ta podaje pozycję określonej grupy znaków w łańcuchu znaków.
Składnia
IntegerResult=StringInString("Text","SearchFor"
,StartPos,CaseSens);
Parametry
Opis
Text
Łańcuch znaków przeszukiwany pod kątem występowania grupy
znaków SearchFor. Jeśli grupa ta występuje w kilku miejscach,
do zmiennej IntegerResult przypisywane jest miejsce pierwszego
wystąpienia. Łańcuch znaków lub zmienna tekstowa.
SearchFor
Poszukiwany ciąg znaków tekst.
StartPos Liczba
całkowita określająca miejsce początkowe przeszukiwania
łańcucha Text. Parametr ten może być wartością stałą lub zmienną
programu InTouch.
CaseSens Parametr
określający, czy przy przeszukiwaniu łańcucha znaków
mają być rozróżniane duże i małe litery (0=nie, 1=tak). Parametr
ten może być wartością stałą lub zmienną programu InTouch.
Przykład
StringInString("The mixer is running", "mix", 1, 0) zwraca 5
StringInString("Today is Thursday", "day", 1, 0) zwraca 3
StringInString("Today is Thursday", "day", 10, 0) zwraca 15
StringInString("Today is Veteran's Day", "Day", 1, 1) zwraca 20
StringInString("Today is Veteran's Day", "Night", 1, 1) zwraca 0
StringLeft()
funkcje tekstowe
Zwraca liczbę znaków określoną przez Chars, począwszy od znaku umieszczonego skrajnie
po lewej stronie.
Składnia
MessageResult=StringLeft(Text,Chars);
Parametry
Opis
Text
Łańcuch znaków lub zmienna tekstowa.
Chars
Liczba znaków, które ma zwrócić funkcja, lub zmienna typu
całkowitego.
Uwagi
Jeśli wartość parametru Chars wynosi 0, funkcja zwraca cały łańcuch znaków.
Przykład
StringLeft("The Control Pump is On", 3) zwraca "The"
StringLeft("Pump 01 is On", 4) zwraca "Pump"
StringLeft("Pump 01 is On", 96) zwraca "Pump 01 is On"
StringLeft("The Control Pump is On", 0) zwraca "The Control
Pump is On"
3-94
Rozdział 3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
StringLen()
funkcje tekstowe
Zwraca liczbę całkowitą określającą długość zadanej zmiennej tekstowej.
Składnia
IntegerResult=StringLen(Text);
Parametry
Opis
Text
Łańcuch znaków lub zmienna tekstowa.
Uwagi
Długość tekstu Text (w znakach) przypisywana jest do zmiennej IntegerResult. Zliczane są
wszystkie znaki w zmiennej tekstowej, włączając w to znaki standardowo nie wyświetlane.
Przykład
StringLen("Twelve percent") zwraca 14
StringLen("12%") zwraca 3
StringLen("The end." + StringChar(13)) zwraca 10
Uwaga [CR] jest znakiem powrotu karetki o kodzie ASCII 13
StringLower()
funkcje tekstowe
Zamienia wszystkie znaki pisane duże literą na znaki pisane małą literą, a wynik tej
operacji umieszczany jest w zmiennej MessageResult.
Składnia
MessageResult=StringLower(Text);
Parametry
Opis
Text
Tekst, w którym duże litery mają być zmienione na małe.
Łańcuch znaków lub zmienna tekstowa.
Uwagi
Funkcja nie zmienia małych liter, cyfr, symboli i znaków specjalnych (a także, niestety,
polskich dużych liter na małe).
Przykłady
StringLower("TURBINE") zwraca "turbine"
StringLower("22.2 Is The Value") zwraca "22.2 is the value."
Funkcje skryptowe
3-95
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
StringMid()
funkcje tekstowe
Zwraca liczbę znaków określoną parametrem Chars, rozpoczynając od pozycji określonej
przez parametr StartChar. Funkcja ta nieznacznie różni się od swoich odpowiedników:
funkcji StringLeft() i StringRight(), ponieważ umożliwia ona określenie zarówno
początku jak i końca łańcucha znaków.
Składnia
MessageResult=StringMid(Text,StartChar,Chars);
Parametry
Opis
Text
Łańcuch znaków lub zmienna tekstowa.
StartChar Liczba
całkowita określająca miejsce pierwszego znaku z grupy.
Parametr ten może być wartością stałą lub zmienną programu
InTouch.
Chars
Liczba znaków do odczytania. Parametr ten może być wartością
stałą lub zmienną programu InTouch.
Przykłady
StringMid("The Furnace is Overheating",5,7,) zwraca
"Furnace"
StringMid("The Furnace is Overheating",13,3) zwraca "is "
StringMid("The Furnace is Overheating",16,50) zwraca
"Overheating"
Patrz również
StringLeft(),StringRight()
3-96
Rozdział 3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
StringReplace()
funkcje tekstowe
Funkcja ta zastępuje określoną grupę znaków w podanym łańcuchu znaków (lub zmiennej
tekstowej). Dzięki tej funkcji można zastępować znaki, słowa lub frazy w łańcuchach
znaków i zmiennych tekstowych.
Składnia
MessageResult=StringReplace(Text,SearchFor,ReplaceWith,
CaseSens,NumToReplace,MatchWholeWords);
Parametry
Opis
Text
Łańcuch znaków lub zmienna tekstowa podlegające
modyfikacjom.
SearchFor
Poszukiwana grupa znaków, która ma zostać wymieniona na inną.
Łańcuch znaków lub zmienna tekstowa.
ReplaceWith
Dowolny tekst. Łańcuch znaków lub zmienna tekstowa.
CaseSens
Parametr określający, czy przy przeszukiwaniu łańcucha znaków
mają być rozróżniane duże i małe litery . (0-nie i 1=tak). Liczba
luz zmienna typu całkowitego.
NumToReplace
Liczba wystąpień, w których ma być wprowadzona zamiana.
(-1=wszystkie.) Liczba lub zmienna typu całkowitego.
MatchWholeWords
Określa czy działanie funkcji ograniczone zostanie do
zastępowania całych słów. (0-nie i 1=tak.) Liczba lub zmienna
typu całkowitego.
Jeżeli parametr MatchWholeWords zostanie ustawiony na 1, a
SearchFor na "and", znaki "and" w słowie "handle" nie zostaną
zastąpione. Jeśli natomiast parametr MatchWholeWords zostanie
ustawiony na 0, grupa znaków "and" występująca w słowie
"handle" zostanie zastąpiona.
Przykłady
StringReplace("In From Within","In","Out",0,1,0) zwraca "Out
From Within" (zastąpienie wyłącznie pierwszego wystąpienia)
StringReplace("In From Within","In","Out",0,-1,0) zwraca "Out
From without" (zastąpienie wszystkich wystąpień)
StringReplace("In From Within","In","Out",1,-1,0) zwraca "Out
From Within" (zastępowanie z uwzględnieniem wielkości liter)
StringReplace("In From Within","In","Out",0,-1,1) zwraca "Out
From Within" (zastępowanie całych słów)
Uwaga Funkcja StringReplace() nie rozpoznaje znaków specjalnych, np. @#$%&*().
Traktuje je jako znaki rozdzielające. Przykładowo, wywołanie funkcji StringReplace()
((abc#,abc#,1234,0,1,1), nie spowoduje żadnego zastąpienia. Znak # zostanie potraktowany
jako znak rozdzielający.
Funkcje skryptowe
3-97
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
StringRight()
funkcje tekstowe
Zwraca liczbę znaków określoną przez parametr Chars, począwszy od znaku
umieszczonego skrajnie po prawej stronie.
Składnia
MessageResult=StringRight(Text,Chars);
Parametry
Opis
Text
Łańcuch znaków lub zmienna tekstowa.
Chars
Liczba znaków, które ma zwrócić funkcja, lub zmienna typu
całkowitego.
Uwagi
Jeśli wartość parametru Chars wynosi 0, funkcja zwraca cały łańcuch znaków.
Przykłady
StringRight("The Pump is On", 2) zwraca "On"
StringRight("The Pump is On", 5) zwraca "is On"
StringRight("The Pump is On", 87) zwraca "The Pump is On"
StringRight("The Pump is On", 0) zwraca "The Pump is On"
StringSpace()
funkcje tekstowe
Wstawia łańcuch spacji do zmiennej tekstowej lub do wyrażenia.
Składnia
MessageResult=StringSpace(NumSpaces);
Parametry
Opis
NumSpaces
Liczba spacji do wygenerowania. Parametr ten może być
wartością stałą lub zmienną programu InTouch.
Uwagi
Funkcja StringSpace() zwraca łańcuch spacji o długości zadanej za pomocą parametru
NumSpaces.
Przykłady
Wszystkie spacje reprezentowane są za pomocą znaku "×".
StringSpace(4) zwraca "××××"
"Pump" + StringSpace(1) + "Station" zwraca "Pump×Station"
3-98
Rozdział 3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
StringTest()
funkcje tekstowe
Sprawdza typ pierwszego znaku łańcucha znaków.
Składnia
DiscreteResult=StringTest(Text,TestType)
Parametry
Opis
Text
Łańcuch znaków na którym operuje funkcja. Łańcuch znaków lub
zmienna tekstowa.
TestType
Kryterium sprawdzania, zgodnie z poniższym zestawieniem:
Typ
Opis
1
Znak alfanumeryczny ('A'-'Z', 'a-z' i '0-9')
2
Cyfra (od '0' do '9')
3
Litera alfabetu (od 'A' do 'Z', od 'a' do 'z')
4
Duża litera alfabetu (od 'A' do 'Z')
5
Mała litera alfabetu (od 'a' do 'z')
6
Znak interpunkcyjny (0x21-0x2F)
7
Znak ASCII (0x00-0x7F)
8
Znak heksadecymalny ('A'-'F' or 'a'-'f' or '0'-'9')
9
Znak drukowany (0x21-0x2F)
10
Znak sterujący (0x00-0x1F lub 0x7F)
11
Znaki spacji (0x09-0x0D lub 0x20)
Uwagi
Jeśli pierwszy znak łańcucha znaków Text jest znakiem zgodnym z kryterium określonym
za pomocą TestType, funkcja StringTest() ustawia DiscreteResult na 1. Jeżeli funkcja
StringTest() zawiera większą liczbę znaków, sprawdzany jest typ wyłącznie pierwszego
znaku.
Przykłady
StringTest("ACB123",1) zwraca 1
StringTest("ABC123",5) zwraca 0
StringToIntg()
funkcje tekstowe
Funkcja ta przekształca wartość numeryczną łańcucha znaków (lub zmiennej tekstowej) na
wartość całkowitą, która może być użyta do obliczeń matematycznych.
Składnia
IntegerResult=StringToIntg(Text);
Parametry
Opis
Text
Łańcuch znaków na którym operuje funkcja. Łańcuch znaków lub
zmienna tekstowa.
Uwagi
Gdy określana jest wartość łańcucha znaków, system odczytuje pierwszy znak łańcucha i
określa jego wartość numeryczną. Jeśli pierwszy znak nie jest cyfrą ani znakiem minus "-"
(puste miejsca są ignorowane), wartość numeryczna łańcucha znaków wynosi 0. Jeśli
pierwszy znak jest cyfrą lub znakiem minus "-", system odczytuje kolejne znaki do czasu
napotkania znaku nie będącego cyfrą.
Przykłady
Jeżeli
Tekst="ABCD", to ZmiennaAnaalogowa =0.
J
eżeli
Tekst
="Wartość jest równa 22.2", to ZmiennaCałkowita
=22
(ponieważ liczby całkowite nie mają części ułamkowej).
Jeżeli
Tekst
="Wartość jest równa 22", then ZmiennaCałkowita =
0.
Patrz również
StringFromIntg(), StringFromReal(), StringToReal(), Text()
Funkcje skryptowe
3-99
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
StringToReal()
funkcje tekstowe
Przekształca zmienną tekstową na wartość rzeczywistą (liczbę zmiennoprzecinkową), na
której mogą być przeprowadzone obliczenia matematyczne.
Składnia
RealResult=StringToReal(Text);
Parametry
Opis
Text
Łańcuch znaków na którym operuje funkcja. Łańcuch znaków lub
zmienna tekstowa.
Uwagi
Gdy określana jest wartość łańcucha znaków, system odczytuje pierwszy znak łańcucha i
określa jego wartość numeryczną. Jeśli pierwszy znak nie jest cyfrą ani znakiem minus "-"
(puste miejsca są ignorowane), wartość numeryczna łańcucha znaków wynosi 0. Jeśli
pierwszy znak jest cyfrą lub znakiem minus "-", system odczytuje kolejne znaki do czasu
napotkania znaku nie będącego cyfrą.
Przykłady
Jeżeli
Tekst ="ABCD", to ZmiennaRzeczywista=0.
Jeżeli
Tekst
="Wartość jest równa 22.261", to
ZmiennaRzeczywista=22.261.
Jeżeli
Tekst
=" Wartość jest równa 22", to
ZmiennaRzeczywista=0.
Patrz również
StringFromReal(), StingFromIntg(), StringToIntg(), Text()
StringTrim()
funkcje tekstowe
Usuwa niepotrzebne spacje z łańcucha znaków.
Składnia
MessageResult=StringTrim(Text,TrimType);
Parametry
Opis
Text
Łańcuch znaków z którego będą usuwane spacje. Łańcuch
znaków lub zmienna tekstowa.
TrimType
Kryterium sprawdzania, zgodnie z poniższym zestawieniem:
Typ
Opis
1
Spacje zostaną usunięte z początku łańcucha
znaków (wszystkie spacje na lewo od pierwszego
znaku, który nie jest spacją).
2
Spacje zostaną usunięte z końca łańcucha znaków
(wszystkie spacje na prawo od ostatniego znaku,
który nie jest spacją).
3
Usunięte zostaną wszystkie spacje z wyjątkiem
pojedynczych spacji pomiędzy słowami.
Uwagi
Text jest przeszukiwany pod kątem występowania spacji o kodach ASCII 0x09-0x0D lub
0x20, które zostaną usunięte. Parametr TrimType określa, które spacje zostaną usunięte.
Przykład
Wszystkie spacje reprezentowane są za pomocą znaku "×".
StringTrim("×××××This×is×a××test×××××", 1) zwraca
"This×is×a××test×××××"
StringTrim("×××××This×is×a××test×××××", 2) zwraca
"×××××This×is×a××test"
StringTrim("×××××This×is×a××test×××××", 3) zwraca
"This×is×a×test"
Uwaga Funkcja StringReplace() pozwala na usunięcie WSZYSTKICH spacji z zadanej
zmiennej tekstowej. W tym celu należy zamienić wszystkie spacje na pusty łańcuch
znaków.
3-100
Rozdział 3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
StringUpper()
funkcje tekstowe
Przekształca wszystkie małe litery w podanym tekście na duże.
Składnia
MessageResult=StringUpper(Text);
Parametry
Opis
Text
Tekst, w którym małe litery mają być zmienione na duże.
Łańcuch znaków lub zmienna tekstowa.
Uwagi
Funkcja nie zmienia małych liter, cyfr, symboli i znaków specjalnych (a także, niestety,
polskich małych liter na duże).
Przykłady
StringUpper("abcd") zwraca "ABCD."
StringUpper("22.2 is the value") zwraca "22.2 IS THE VALUE"
Tan()
funkcje matematyczne
Zwraca tangens kąta podanego w stopniach.
Składnia
Result=Tan(AngleNumber);
Parametry
Opis
AngleNumber
Wartość kąta w stopniach. Dowolna liczba, zmienna rzeczywista
lub całkowita programu InTouch.
Przykłady
Wave = 10 + 50 * Tan(6 * $seconds);
Tan(45) zwraca 1
Tan(0) zwraca 0
Patrz również
Sin(), Cos()
Funkcje skryptowe
3-101
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Text()
funkcje tekstowe
Funkcja ta powoduje zapisanie wartości zmiennej analogowej (całkowitej lub rzeczywistej)
w postaci łańcucha znaków, w określonym przez parametr Format_Text formacie zapisu.
Składnia
MessageResult=Text(Analog_Tag,"Format_Text");
Parametry
Opis
Analog_Tag
Liczba, zmienna rzeczywista lub całkowita, do konwersji.
Format_Text
Parametr określający format zapisu. Łańcuch znaków lub zmienna
tekstowa.
Przykłady
MessageTag=Text(66,"#.00");
Message_Tag jest zmienną tekstową , 66 jest wartością zmiennej całkowitej lub
rzeczywistej, a "#0.00" reprezentuje format zapisu wartości zmiennej:
Jeżeli
ZmiennaAnalogowa=66, to ZmiennaTekstowa=66.00.
Jeżeli
ZmiennaAnalogowa =22.269, to ZmiennaTekstowa=22.27.
Jeżeli
ZmiennaAnalogowa =9.999, to ZmiennaTekstowa=10.00.
LogMessage("The current value of FreeserRoomTemp is:" + Text
(FreezerRoomTemp, "#.#"));
W zamieszczonym poniżej przykładzie, zmienna MessageTag zostanie ustawiona na
wartość "One=1 Two=2".
MessageTag = "One + " + Text(1,"#") + StringChar(32) + "Two +" +
Text(2,"#");
Patrz również
StringFromIntg(), StringToIntg(), StringFromReal(), StringToReal()
Trunc()
funkcje matematyczne
Przybliża liczbę rzeczywistą przez odrzucenie części po prawej stronie kropki dziesiętnej.
Składnia
ResultNumericTag=Trunc(Number);
Parametry
Opis
Number
Dowolna liczba, zmienna rzeczywista lub całkowita programu
InTouch.
Uwagi
Wynik wykonania tej funkcji jest taki sam, jak zapisania wartości zmiennej rzeczywistej
jako zmiennej całkowitej .
Przykłady
Trunc(4.3) zwraca 4
Trunc(-4.3) zwraca -4
Patrz również
Round()
3-102
Rozdział 3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
wcAddItem()
obiekty sterujące okien
Dodaje łańcuch znaków do listy lub listy rozwijalnej. Jeśli lista lub lista rozwijalna nie
zostały utworzone jako posortowane, tekst jest dodawany na końcu listy. W przeciwnym
wypadku, tekst jest wstawiany do listy, po czym jest ona ponownie sortowana.
Składnia
[ErrorNumber=]wcAddItem("ControlName","MessageTag");
Parametry
Opis
ControlName
Nazwa obiektu sterującego okna, np. ListBox_1. Łańcuch znaków
lub zmienna tekstowa.
MessageTag
Łańcuch znaków do wyświetlania. Łańcuch znaków lub zmienna
tekstowa.
! Kody błędów dla funkcji tego typu można znaleźć w Dodatku A: "Komunikaty o
błędach dla obiektów sterujących Windows i funkcji związanych z alarmowaniem
rozproszonym".
Zastosowanie
Listy i listy rozwijalne.
Przykłady
Instrukcja zamieszczona poniżej dodaje łańcuch znaków do listy po otwarciu okna (przy
użyciu skryptu związanego z oknem OnShow), zawierającego obiekt lista:
wcAddItem("ListBox_1", "Chocolate");
wcAddItem("ListBox_1", "Vanilla");
wcAddItem("ListBox_1", "Strawberry");
Patrz również
wcInsertItem()
wcClear()
obiekty sterujące okien
Funkcja ta usuwa wszystkie elementy z listy (List box) lub listy rozwijalnej (Combo box).
Składnia
[ErrorNumber=]wcClear("ControlName");
Parametry
Opis
ControlName
Nazwa obiektu sterującego okna, np. ListBox_1. Łańcuch znaków
lub zmienna tekstowa.
! Kody błędów dla funkcji tego typu można znaleźć w Dodatku A: "Komunikaty o
błędach dla obiektów sterujących Windows i funkcji związanych z alarmowaniem
rozproszonym".
Zastosowanie
Listy i listy rozwijalne.
Przykład
Jeśli instrukcja zamieszczona poniżej zostanie np. zapisana w skrypcie związanym z
przyciskiem, wciśnięcie tego przycisku spowoduje usunięcie wszystkich elementów listy
ListBox_1:
wcClear("ListBox_1");
Funkcje skryptowe
3-103
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
wcDeleteItem()
obiekty sterujące okien
Funkcja ta usuwa pole listy lub element listy rozwijalnej o podanym indeksie.
Składnia
[ErrorNumber=]wcDeleteItem("ControlName",ItemIndex);
Parametry
Opis
ControlName
Nazwa obiektu sterującego okna, np. ListBox_1. Łańcuch znaków
lub zmienna tekstowa.
ItemIndex
Numer oznaczający pozycję elementu na liście. Parametr ten
może być wartością stałą lub zmienną programu InTouch.
! Kody błędów dla funkcji tego typu można znaleźć w Dodatku A: "Komunikaty o
błędach dla obiektów sterujących Windows i funkcji związanych z alarmowaniem
rozproszonym".
Zastosowanie
Listy i listy rozwijalne.
Przykład
Zamieszczona poniżej instrukcja, po wciśnięciu skryptu klawiszowego, powoduje usunięcie
3-o elementu listy,.
wcDeleteItem("ListBox_1", 3);
wcDeleteSelection()
obiekty sterujące okien
Usuwa aktualnie wybrany element z listy lub listy rozwijalnej.
Składnia
[ErrorNumber =]wcDeleteSelection("ControlName");
Parametry
Opis
ControlName
Nazwa obiektu sterującego okna, np. ListBox_1. Łańcuch znaków
lub zmienna tekstowa.
! Kody błędów dla funkcji tego typu można znaleźć w Dodatku A: "Komunikaty o
błędach dla obiektów sterujących Windows i funkcji związanych z alarmowaniem
rozproszonym".
Zastosowanie
Listy i listy rozwijalne.
Przykład
Jeżeli wciśnięty zostanie przycisk zawierający zamieszczoną poniżej instrukcję, usunięte
zostaną wszystkie, zaznaczone w danym momencie elementy listy rozwijalnej:
wcDeleteSelection("ListBox_1");
3-104
Rozdział 3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
wcErrorMessage()
obiekty sterujące okien
Funkcja ta zwraca komunikat tekstowy opisujący błąd.
Składnia
ErrorMessage=wcErrorMessage(ErrorNumber);
Parametry
Opis
ErrorMessage
Zmienna tekstowa.
ErrorNumber
Liczba zwracana przez obiekty sterujące okien. Liczba lub
zmienna całkowita.
! Kody błędów dla funkcji tego typu można znaleźć w Dodatku A: "Komunikaty o
błędach dla obiektów sterujących Windows i funkcji związanych z alarmowaniem
rozproszonym".
Zastosowanie
Pola tekstu, listy, listy rozwijalne, pola wyboru i pola wyboru wykluczającego.
Przykłady
Jeśli podczas ładowania listy wystąpi błąd, opis błędu w formie komunikatu tekstowego
zostanie zapisany jako zmienna tekstowa ErrorDescription. W poniższym przykładzie w
połączeniu animacyjne wyświetlającym wartości tekstowe wykorzystano zmienną
ErrorDescription w celu wyświetlenia komunikatu błędzie.
Skrypt związany z oknem On Show:
ErrorNumber=wcLoadList("ListBox_1","c:\InTouch\recipe.txt");
ErrorDescription=wcErrorMessage(errornumber);
Funkcja ta może również zostać wykorzystana do wyświetlania komunikatów o błędach dla
wszystkich funkcji związanych z obiektami sterującymi Windows:
ErrorNumber=wcAddItem("ListBox_1","United States");
ErrorMsg=wcErrorMessage(ErrorNumber);
Funkcje skryptowe
3-105
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
wcFindItem()
obiekty sterujące okien
Funkcja ta wyznacza indeks pierwszego elementu listy lub listy rozwijalnej, który
odpowiada podanemu łańcuchowi znaków Message.
Składnia
[ErrorNumber=]wcFindItem ("ControlName","MessageTag",DiscreteTag,
Tagname);
Parametry
Opis
ControlName
Nazwa obiektu sterującego okna, np. ListBox_1. Łańcuch znaków
lub zmienna tekstowa.
MessageTag
Łańcuch znaków do celów porównawczych. Łańcuch znaków lub
zmienna tekstowa.
DiscreteTag
Określa sposób w jaki będą porównywane łańcuchy znaków.
Przyjmuje jedną z następujących wartości:
0 = przy porównywaniu nie są rozróżniane litery duże i małe
1 = litery duże i małe są rozróżniane przy porównywaniu
Tagname
Nazwa zmiennej typu całkowitego.
! Kody błędów dla funkcji tego typu można znaleźć w Dodatku A: "Komunikaty o
błędach dla obiektów sterujących Windows i funkcji związanych z alarmowaniem
rozproszonym".
Zastosowanie
Listy i listy rozwijalne.
3-106
Rozdział 3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
wcGetItem()
obiekty sterujące okien
Funkcja ta odczytuje łańcuch znaków związany z elementem listy lub listy rozwijalnej,
określony przez parametr ItemIndex.
Składnia
[ErrorNumber=]wcGetItem("ControlName",ItemIndex,Tagname);
Parametry
Opis
ControlName
Nazwa obiektu sterującego okna, np. ListBox_1. Łańcuch znaków
lub zmienna tekstowa.
ItemIndex
Numer oznaczający pozycję elementu na liście. Liczba lub
zmienna całkowita.
Tagname
Nazwa zmiennej typu całkowitego lub rzeczywistego. Funkcja
wcGetItem przypisuje do tej zmiennej wartość numeryczną,
odpowiadającą elementowi.
! Kody błędów dla funkcji tego typu można znaleźć w Dodatku A: "Komunikaty o
błędach dla obiektów sterujących Windows i funkcji związanych z alarmowaniem
rozproszonym".
Zastosowanie
Listy i listy rozwijalne.
Przykład
Wciśniecie przycisku z którym powiązane jest zamieszczone poniżej wyrażenie powoduje
przypisanie łańcucha znaków, odpowiadającego 10-u elementowi listy rozwijalnej
zmiennej tekstowej ListSelection.
wcGetItem("Combobox_1", 10, ListSelection);
Jeśli dziesiątym elementem listy jest "Vanilia", zmiennej ListSelection będzie odpowiadał
łańcuch znaków "Vanilia".
Funkcje skryptowe
3-107
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
wcGetItemData()
obiekty sterujące okien
Funkcja ta zwraca wartość całkowitą związaną z elementem listy lub listy rozwijalnej,
określonym przez parametr ItemIndex.
Składnia
[ErrorNumber=]wcGetItemData("ControlName",ItemIndex,Tagname);
Parametry
Opis
ControlName
Nazwa obiektu sterującego okna, np. ListBox_1. Łańcuch znaków
lub zmienna tekstowa.
ItemIndex
Numer oznaczający pozycję elementu na liście. Liczba lub
zmienna całkowita.
Tagname
Nazwa zmiennej typu całkowitego lub rzeczywistego. Funkcja
wcGetItemdata przypisuje tej zmiennej wartość numeryczną,
odpowiadającą elementowi.
! Kody błędów dla funkcji tego typu można znaleźć w Dodatku A: "Komunikaty o
błędach dla obiektów sterujących Windows i funkcji związanych z alarmowaniem
rozproszonym".
Zastosowanie
Listy i listy rozwijalne.
Przykład
Jeśli instrukcja zamieszczona poniżej zostanie np. zapisana w skrypcie związanym z
przyciskiem , po naciśnięciu tego przycisku odczyta ona wartość numeryczną związaną z
piątym elementem listy ListBox_1 i przypisze ją do zmiennej ItemValue:
wcGetItemData("ListBox_1", 5, ItemValue);
Jeśli piątemu elementowi listy przypisana jest wartość całkowita 4500, zmiennej ItemValue
zostanie przypisana wartość 4500.
Patrz również
wcSetItemData()
3-108
Rozdział 3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
wcInsertItem()
obiekty sterujące okien
Wstawia do listy łańcuch znaków. ItemIndex jest numerem pozycji na liście, gdzie będzie
umieszczony łańcuch znaków. W przeciwieństwie do funkcji wcAddItem(), funkcja
wcInsertItem() nie sortuje listy, nawet jeśli pole listy lub lista rozwijalna zostały
utworzone jako posortowane.
Składnia
[ErrorNumber=]wcInsertItem("ControlName",ItemIndex,"MessageTag");
Parametry
Opis
ControlName
Nazwa obiektu sterującego okna, np. ListBox_1. Łańcuch znaków
lub zmienna tekstowa.
ItemIndex
Numer oznaczający pozycję elementu na liście. Jeśli ten parametr
ma wartość -1, łańcuch znaków zostanie dodany na końcu listy.
Liczba lub zmienna całkowita.
MessageTag
Zawiera łańcuch znaków, który ma być wstawiony w miejscu
określonym przez ItemIndex. Łańcuch znaków lub zmienna
tekstowa.
! Kody błędów dla funkcji tego typu można znaleźć w Dodatku A: "Komunikaty o
błędach dla obiektów sterujących Windows i funkcji związanych z alarmowaniem
rozproszonym".
Zastosowanie
Listy i listy rozwijalne.
Przykład
Jeśli instrukcja zamieszczona poniżej zostanie np. umieszczona w skrypcie związanym z
przyciskiem, naciśnięcie tego przycisku wstawia ona nowy element o nazwie "Blueberry"
do listy, na czwartym miejscu od góry:
wcInsertItem("ListBox_1", 4, "Blueberry");
Patrz również
wcAddItem()
wcLoadList()
obiekty sterujące okien
Funkcja ta zastępuje zawartość elementów listy lub listy rozwijalnej elementami
wczytanymi z pliku FileName.
Składnia
[ErrorNumber=]wcLoadList("ControlName","Filename");
Parametry
Opis
ControlName
Nazwa obiektu sterującego okna, np. ListBox_1. Łańcuch znaków
lub zmienna tekstowa.
FileName
Zmienna lub tekst zawierająca nazwę pliku z zawartością
elementu listy w formacie ASCII. Jeśli nie zostanie tu podana
pełna ścieżka dostępu do pliku, a tylko jego nazwa, funkcja
będzie poszukiwać pliku w katalogu aplikacji. Łańcuch znaków
lub zmienna tekstowa.
! Kody błędów dla funkcji tego typu można znaleźć w Dodatku
A: "Komunikaty o błędach dla obiektów sterujących Windows i
funkcji związanych z alarmowaniem rozproszonym".
Zastosowanie
Listy i listy rozwijalne.
Przykład
Instrukcja zamieszczona poniżej wczytuje poprawnie sformatowaną listę (umieszczoną w
pliku c:\InTouch.32\wclist.txt.) do listy rozwijalnej, w momencie otwarcia okna
zawierającego tę listę (wykorzystywany jest o tego celu skrypt związany z oknem On
Show):
wcLoadList("Combobox_1", "c:\InTouch.32\wclist.txt");
Patrz również
wcAddItem(), wcSaveList()
Funkcje skryptowe
3-109
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
wcLoadText()
obiekty sterujące okien
Funkcja ta zastępuje zawartość pola tekstowego zawartością pliku o nazwie FileName.
Składnia
[ErrorNumber=]wcLoadText("ControlName", "Filename");
Parametry
Opis
ControlName
Nazwa obiektu sterującego okna, np. ListBox_1. Łańcuch znaków
lub zmienna tekstowa.
FileName
Zmienna lub tekst zawierający nazwę pliku z zawartością pola
tekstowego w formacie ASCII. Jeśli nie zostanie tu podana pełna
ścieżka dostępu do pliku, a tylko jego nazwa, funkcja będzie
poszukiwać pliku w katalogu aplikacji. Łańcuch znaków lub
zmienna tekstowa.
Uwagi
Funkcja wcLoadText() obsługuje pliki zawierające dane w formacie ASCII, np. utworzone
za pomocą programu Microsoft Notatnik. Kody błędów dla okien wymieniono w
załączniku A.
" Więcej informacji na temat zaawansowanych metod wyświetlania plików podano w
opisie przeglądarki dokumentów, wchodzącej w skład pakietu Factory Suite's
Productivity Pack.
Zastosowanie
Pola tekstowe.
Przykład
Instrukcja zamieszczona poniżej wczytuje zawartość pliku tekstowego
(c:\InTouch.32\readme.txt) do pola tekstowego w momencie po otwarciu okna
zawierającego pole tekstowe (przy użyciu skryptu związanego z oknem On Show):
wcLoadText("Textbox_1", "c:\InTouch.32\readme.txt");
3-110
Rozdział 3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
wcSaveList()
obiekty sterujące okien
Funkcja ta zastępuje zawartość pliku FileName elementami obiektu lista lub lista
rozwijalna.
Składnia
[ErrorNumber=]wcSaveList("ControlName","Filename");
Parametry
Opis
ControlName
Nazwa obiektu sterującego okna, np. ListBox_1. Łańcuch znaków
lub zmienna tekstowa.
FileName
Zmienna lub tekst określający nazwę pliku z zawartością listy w
formacie ASCII. Jeśli plik nie istnieje, to zostaje utworzony.
Tekst zapisany w pliku może zostać następnie załadowany do
pola tekstu przy użyciu funkcji wcLoadText(). Łańcuch znaków
lub zmienna tekstowa.
! Kody błędów dla funkcji tego typu można znaleźć w Dodatku A: "Komunikaty o
błędach dla obiektów sterujących Windows i funkcji związanych z alarmowaniem
rozproszonym".
Zastosowanie
Listy i listy rozwijalne.
Przykład
Zamieszczona poniżej instrukcja powoduje zapisanie elementów listy w pliku
(c:\InTouch.32\newlist.txt), w momencie naciśnięcia przycisku:
wcSaveList("ListBox_1", "c:\InTouch.32\newlist.txt");
Uwaga Jeżeli pliki ASCII wykorzystywane do tworzenia listy lub listy rozwijalnej
zostały utworzone przy pomocy innego programu, muszą być odpowiednio
sformatowane, oraz zawierać wszystkie, wymagane dodatkowo informacje. Format:
TypObiektu, LiczbaElementów
ElementListy, WartośćElementu
ElementListy, WartośćElementu
: :
: :
ElementListy, WartośćElementu
Przykład: Zamieszczony poniżej plik, wczytywany do listy, zawiera trzy elementy,
elementy nie mają przyporządkowanych wartości (więcej informacji na temat wartości
danych elementów podano w opisie funkcji wcSetItemData()). Plik ten ma następujący
format:
COMBOBOX, 3
Czekolada, 0
Wanilia, 0
Truskawki, 0
Opis: COMBOBOX jest typem obiektu. LiczbaElementów jest równa 3, ponieważ lista
zawiera następujące elementy: Czekolada, Wanilia, Truskawki. Czekolada jest
umieszczona na liście jako pierwszy element. Wanilia jako drugi, a Truskawki jako trzeci.
Każdy z tych elementów ma wartość równą 0.
Patrz również
wcLoadList(), wcSetItemData()
Funkcje skryptowe
3-111
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
wcSaveText()
obiekty sterujące okien
Zapisuje tekst z pola tekstu do pliku FileName.. Jeśli plik nie istnieje, to zostaje utworzony.
Jeśli istnieje, musi być to plik umożliwiający odczyt i zapis.
Składnia
[ErrorNumber=]wcSaveText("ControlName","Filename");
Parametry
Opis
ControlName
Nazwa obiektu sterującego okna, np. ListBox_1. Łańcuch znaków
lub zmienna tekstowa.
FileName
Zmienna lub tekst określający nazwę pliku z zawartością listy w
formacie ASCII. Jeśli nie zostanie tu podana pełna ścieżka
dostępu do pliku, a tylko jego nazwa, funkcja zapisze plik w
katalogu aplikacji. Jeśli plik nie istnieje, to zostaje utworzony.
Tekst zapisany w pliku może zostać następnie załadowany do
pola tekstu przy użyciu funkcji wcLoadText(). Łańcuch znaków
lub zmienna tekstowa.
! Kody błędów dla funkcji tego typu można znaleźć w Dodatku A: "Komunikaty o
błędach dla obiektów sterujących Windows i funkcji związanych z alarmowaniem
rozproszonym".
Zastosowanie
Pola tekstu.
Przykład
Wciśnięciu przycisku z którym powiązany jest zamieszczony poniżej skrypt powoduje
zapisanie informacji wprowadzonej w polu tekstowym do pliku
(c:\InTouch.32\newtext.txt).
wcSaveText("Textbox_1", "c:\InTouch.32\newtext.txt");
Uwaga Funkcja wcSaveText() zapisuje pliki w formacie ASCII, tak, jak np. Notatnik systemu Windows.
Patrz również
wcLoadList()
3-112
Rozdział 3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
wcSetItemData()
obiekty sterujące okien
Funkcja ta przypisuje wartości całkowite (Number) elementom listy określonym przez
parametr ItemIndex. Funkcja umożliwia przypisanie liczby do łańcucha znaków.
Składnia
[ErrorNumber=]wcSetItemData("ControlName",ItemIndex,Number);
Parametry
Opis
ControlName
Nazwa obiektu sterującego okna, np. ListBox_1. Łańcuch
znaków lub zmienna tekstowa.
ItemIndex
Numer oznaczający pozycję elementu na liście. Liczba lub
zmienna całkowita.
Number
Liczba całkowita zawierająca wartość elementu. Liczba lub
zmienna całkowita.
Uwagi
Pełna lista zawierająca elementy może być utworzona za pomocą innego programu (np.
Notatnika), a następnie wczytana poprzez wywołanie odpowiedniej funkcji. Pliki te musza
być odpowiednio sformatowane, zgodnie z instrukcjami, podanymi przy opisie funkcji
wcSaveList().
! Kody błędów dla funkcji tego typu można znaleźć w Dodatku A: "Komunikaty o
błędach dla obiektów sterujących Windows i funkcji związanych z alarmowaniem
rozproszonym".
Przykłady
Mamy do czynienia z trzyskładnikową recepturą, zawierającą mąkę, cukier i sól. Dane:
ilość mąki to 4500 gramów, cukru 1500 gramów a soli 325 gramów. Wartości te są
przypisywane poszczególnym elementom w polu listy przy użyciu skryptu typu
DataChange wykonywanego po wybraniu receptury o określonej nazwie:
wcSetItemData("ListBox_1", 1, 4500); {ustawienie 1-go elementu na
liście (mąka)=4500}
wcSetItemData("ListBox_1", 2, 1500); { ustawienie 2-go elementu na
liście (cukier)=1500}
wcSetItemData("ListBox_1", 3, 325); { ustawienie 3-go elementu na
liście (sól)=325}
Funkcja wcGetItemData() zwraca wartość elementu o podanym indeksie. Ta wartość
numeryczna przypisywana jest do parametru Tagname. Parametr ten może być zmienną
typu I/O Integer, zapisującą swoją wartość bezpośrednio do urządzenia.
Patrz również
wcLoadList(), wcSaveList(), wcGetItemData()
Funkcje skryptowe
3-113
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
WWControl()
różne
Pozwala na Przywrócenie,. Zminimalizowanie, Maksymalizowanie lub Zamknięcie
aplikacji z poziomu pakietu InTouch.
Składnia
WWControl("AppTitle","ControlType");
Parametry
Opis
AppTitle
Nazwa sterowanej aplikacji. Nazwę danej aplikacji można
uzyskać za pomocą funkcji InfoAppTitle(). Łańcuch znaków lub
zmienna tekstowa.
ControlType
Określa w jaki sposób ma zachowywać się aplikacja po
uruchomieniu (działanie jest identyczne z wybraniem
odpowiedniego polecenia z menu do sterowania oknem). Łańcuch
znaków lub zmienna tekstowa.
Typ
Opis
"Restore"
Uaktywnienie okna danej aplikacji i wyświetlenie
go z przywróceniem poprzedniego rozmiaru i
pozycji.
"Minimize"
Uaktywnienie okna danej aplikacji i zmniejszenie
go do ikony.
"Maximize"
Uaktywnienie okna danej aplikacji i wyświetlenie
go na całym ekranie.
"Close"
Zamknięcie danej aplikacji.
Przykłady
WWControl("Calculator","Restore");
WWControl("Microsoft Excel","Close");
WWControl(InfoAppTitle("View"), "Close");
Patrz również
InFoAppTitle(), ActivateApp(), StartApp()
3-114
Rozdział 3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
WWExecute()
WWDDE
Wykonanie polecenia (za pomocą protokołu DDE) do określonej aplikacji (Application) i
tematu (Topic).
Składnia
[Status=]WWExecute("Application","Topic","Command");
Parametry
Opis
Application
Nazwa aplikacji, do której jest wysyłane polecenie. Łańcuch
znaków lub zmienna tekstowa.
Topic
Nazwa tematu w obrębie aplikacji, do której jest wysyłane
polecenie. Łańcuch znaków lub zmienna tekstowa.
Polecenie
Polecenie, które ma zostać wysłane. Łańcuch znaków lub
zmienna tekstowa.
Uwagi
Łąńcuch znaków Command zostanie przesłany do określonej aplikacji (Application) i
tematu (Topic).
Przykłady
Poniższa instrukcja spowoduje wykonanie makroinstrukcji w Excelu:
Macro="Macro1!TestMacro";
Command="[Run(" + StringChar(34) + Macro + StringChar(34) +
",0)]";
WWExecute("excel","system",Command);
Wykonanie instrukcji WWExecute("excel","system",Command); spowoduje wysłanie do
Excela następującego polecenia (i uruchomienie makra TestMacro):
[Run("Macro1!TestMacro")]
Poniższa instrukcja spowoduje wykonanie makroinstrukcji w bazie danych Access:
WWExecute("MSAccess","system","MyMacro");
Funkcja WWExecute zwraca wartość 1, jeśli aplikacja jest uruchomiona, podany temat
(Topic) istnieje i polecenie zostało pomyślnie przesłane. Funkcja zwraca wartość 0, jeśli
aplikacja jest zajęta oraz -1, jeśli wystąpi błąd. Tak więc można monitorować status
polecenia:
Status=WWExecute("excel","system",Command);
Status jest zmienną typu Integer, o wartościach 1, -1 lub 0.
Funkcje skryptowe
3-115
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
WWPoke()
WWDDE
Funkcja ta wysyła wartość (za pomocą protokołu DDE) do zadanej pozycji (Item) i tematu
(Topic) wewnątrz określonej aplikacji (Application).
Składnia
[Status=]WWPoke("Application","Topic","Item","TextValue");
Parametry
Opis
Aplikacja
Nazwa aplikacji, do której wysyłany jest łańcuch znaków.
Łańcuch znaków lub zmienna tekstowa.
Topic
Nazwa tematu w obrębie aplikacji, do której jest wysyłane
polecenie. Łańcuch znaków lub zmienna tekstowa.
Item
Nazwa pozycji w obrębie tematu. Łańcuch znaków lub zmienna
tekstowa.
TextValue
Zmienna tekstowa lub łańcuch znaków. Jeśli zachodzi potrzeba
przesłania liczby, można przekształcić ją na łańcuch znaków
używając jednej z funkcji: Text(), StringFromIntg() lub
StringFromReal(). Łańcuch znaków lub zmienna tekstowa.
Uwagi
Zamieszczona poniżej instrukcja powoduje wysłanie wartości Textvalue do określonej
pozycji (Item), tematu (Topic) i aplikacji (Application).
Przykład
Poniższa instrukcja przekształca wartość numeryczną na łańcuch znaków i przesyła ją do
komórki arkusza kalkulacyjnego Excel:
String=Text(Value,"0");
WWPoke("excel","sheet1","r1c1",String);
" Więcej informacji na temat współpracy arkusza kalkulacyjnego Excel 5.0 z programem
InTouch (przy pomocy DDE) podano w InTouch - Poradnik Użytkownika.
Uwaga Wynik działania funkcji WWPoke() przy przesyłaniu danych w obrębie tej samej
aplikacji InTouch jest nieokreślony. Nie jest gwarantowane pomyślne wykonanie
polecenia WWPoke(), a najbardziej prawdopodobne jest wystąpienie błędu przekroczenia
dopuszczalnego okresu oczekiwania.
Funkcja WWPoke() zwraca wartość 1, jeśli aplikacja jest uruchomiona, podany temat
istnieje i łańcuch znaków został pomyślnie przesłany. Funkcja zwraca wartość 0, jeśli
aplikacja jest zajęta oraz -1, jeśli wystąpi błąd. Tak więc można monitorować status
polecenia:
Status=WWPoke("excel","sheet1","r1c1",String);
Status jest zmienną typu Integer, o wartościach 1, -1 lub 0.
Patrz również
Text(), StringFromIntg(), StringFromReal()
3-116
Rozdział 3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
WWRequest()
WWDDE
Funkcja ta wysyła jedno polecenie odczytu wartości (za pomocą protokołu DDE) z
określonej aplikacji (Application), tematu (Topic) i pozycji (Item).
Składnia
WWRequest(Application,Topic,Item,ValueMsg_Tag);
Parametry
Opis
Application
Nazwa aplikacji, z której ma być przesłany łańcuch znaków.
Łańcuch znaków lub zmienna tekstowa.
Topic
Nazwa tematu w obrębie aplikacji, z której ma być przesłany
łańcuch znaków. Łańcuch znaków lub zmienna tekstowa.
Item
Pozycja w obrębie tematu z której odczytywane będą dane.
Łańcuch znaków lub zmienna tekstowa.
ValueMsg_Tag
Zmienna tekstowa ujęta w cudzysłowy, zawierająca dane czytane
z określonej aplikacji (Application), tematu (Topic) i pozycji
(Item). Łańcuch znaków lub zmienna tekstowa.
Uwagi
Zamieszczona poniżej instrukcja przypisuje zmiennej ValueMsg_Tag wartość DDE
odczytaną z określonej pozycji (Item), tematu (Topic) i aplikacji (Application).
Wartość ta jest zmienną tekstową. Jeżeli otrzymana wartość jest wartością numeryczną,
należy ją przekonwertować za pomocą funkcji StringToIntg() lub StringToReal().
Przykłady
Poniższa instrukcja wysyła żądanie przesłania zawartości komórki Excela i przekształca
przesłany łańcuch znaków na wartość liczbową:
WWRequest("excel","[Book1.xls]sheet1","r1c1",Result);
Value=StringToReal(Result);
Funkcja WWRequest zwraca wartość 1, jeśli aplikacja jest uruchomiona, podany temat
istnieje i łańcuch znaków został pomyślnie przesłany. Funkcja zwraca wartość 0, jeśli
aplikacja jest zajęta oraz -1, jeśli wystąpi błąd. Tak więc można monitorować status
polecenia:
Status=WWRequest("excel","[Book1.xls]sheet1","r1c1",Result);
Status jest zmienną typu Integer, o wartościach 1, -1 lub 0.
Patrz również
StringToIntg(), StringToReal()
A-1
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Z A Ł Ą C Z N I K A
Usuwanie zakłóceń przy korzystaniu z funkcji
skryptowych
Szereg funkcji skryptowych zwraca wartość, zależną od wyniku ich działania. Wartość ta
nazywana jest kodem wynikowym, lub kodem błędu, i może być zastosowana do określenia
rezultatu działania funkcji. W niniejszym załączniku opisano kody wynikowe dla funkcji
skryptowych obiektów sterujących okien, receptur, oraz funkcji skryptowych SQL. Opisano
również Elementy SPC DDE, które mogą być zastosowane do odczytywania Zestawów
danych, oraz do sterowania operacjami na wykresach.
A-2
Załącznik A
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Komunikaty o błędach dla obiektów sterujących
okien i alarmów rozproszonych
Funkcje związane z obiektami sterującymi okien i z alarmowaniem rozproszonym
zwracają wartość zależną od wyniku działania funkcji. Zwracana wartość jest
wykorzystywana do diagnozowania błędów i może być podstawiona pod zmienną
całkowitą. Przykładowo:
ErrorNumber = wcGetItem("ControlName", Number, Tagname);
gdzie:
ErrorNumber
jest zmienną typu Integer w której zapisany jest kod błędu. Wartość ta może
być przekazana do funkcji wcErrorMessage(). Funkcja wcMessage() zwraca opis
tekstowy błędu. Przykładowo:
ErrorMsg = wcErrorMessge(ErrorNumber);
gdzie:
ErrorMsg jest zmienną tekstową zawierającą opis błędu. W zamieszczonej poniżej tabeli
zestawiono kody oraz ich opis.
Kod błędu
Opis
0
Operacja zakończona pomyślnie
-1
Błąd ogólny
-2
Brak pamięci
-3
Atrybut tylko do odczytu
-4
Określony element już istnieje
-5
Nieznana nazwa obiektu
-6
Nieznana nazwa właściwości
-x*
Błąd nieznany
* -x
jest dowolnym numerem.
Załącznik A
A-3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Usuwanie zakłóceń przy korzystaniu z funkcji do
obsługi receptur
W celu odczytania kodu błędu zwracanego przez funkcje receptur należy go przypisać do
zmiennej całkowitej, zdefiniowanej w programie InTouch.
Przykład:
ErrorCode = RecipeLoad(FileName, UnitName, RecipeName);
Funkcja RecipeLoad() ustawia wartość zmiennej ErrorCode na 0, o ile jej działanie
zakończyło się pomyślnie. W przypadku wystąpienia błędu w czasie wykonywania funkcji
RecipeLoad(), jego kod zostanie przypisany do zmiennej analogowej ErrorCode. Poniżej
zamieszczono zestawienie wszystkich kodów błędów, oraz odpowiadające im komunikaty,
wraz z ich opisem.
Wartość
Błąd
Opis
0
Operacja zakończona
pomyślnie
Pomyślne wykonanie wywołanej funkcji receptur.
-1
Brak szablonu receptur
Brak pliku z określonym szablonem receptury
-2
Nie uruchomiona
aplikacja
WindowViewer
Funkcja receptur została wywołana przez inny
program, ale nie może zostać wykonana ponieważ
program WindowViewer nie jest uruchomiony
-3
Brak pamięci
Zbyt mało pamięci na zakończenie wykonywanego
działania
-4
Zbyt długi wiersz w
pliku z szablonem
receptury
Liczba znaków w wierszu pliku z szablonem
receptury przekracza maksymalną, dopuszczalną
wartość.
-5
Obcięta linia w pliku
receptury
Linia w pliku z szablonem receptury została obcięta
-6
Brak poprawnego pliku
z szablonami receptur
Wskazany plik nie jest poprawnym plikiem z
szablonami receptur .
CSV
.
! Więcej informacji na temat zestawów i nazw
receptur podano w podręczniku w wersji
elektronicznej Recipe Manager User's Guide.
-7
Spodziewane "unit" lub
"recipe"
W pliku z szablonami receptur brakuje nazwy
zestawu lub nazwy receptury.
! Więcej informacji na temat zestawów i nazw
receptur podano w podręczniku w wersji
elektronicznej Recipe Manager User's Guide.
-8
Brak zdefiniowanych
zestawów w pliku z
szablonami receptur
W pliku z szablonami receptur nie zostały
zdefiniowane zestawy danych.
-9
Nazwa receptury nie
znaleziona w pliku z
szablonami receptur
Określona nazwa receptury nie została
zdefiniowana w pliku z szablonami receptur.
-10
Nazwa zestawu nie
znaleziona w pliku z
szablonami receptur
Określona nazwa zestawu nie została zdefiniowana
w pliku z szablonami receptur.
A-4
Załącznik A
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Wartość
Błąd
Opis
-12
Spodziewane słowo
"Analog", "Discrete",
"Message"
Wprowadzony został niewłaściwy typ
elementu w pliku z szablonami receptur.
Dopuszczalne jest stosowanie wyłącznie
typów Analog, Discrete i Message.
-13
Niezgodność typów
"Analog", "Discrete",
lub "Message"
Niezgodność typów pomiędzy zadaną
zmienną a typem elementu np. element
receptury jest typu analogowego, a w
zestawie zdefiniowano dla niego zmienną
typu tekstowego.
-14
Niewłaściwa wartość
dyskretna, spodziewana
wartość "0" lub "1"
W pliku z szablonami receptur wprowadzona
została niewłaściwa wartość dla typu
dyskretnego. Dopuszczalnymi wartościami
typu dyskretnego są 0 lub 1.
-15
Niemożliwe otwarcie
pliku tymczasowego
Plik tymczasowy nie może zostać otworzony,
prawdopodobnie z powodu braku wolnego
miejsca na dysku.
-16
Błąd w czasie zapisu do
pliku z szablonem
receptury
W czasie zapisywania do pliku z szablonem
receptury wystąpił błąd
-17
Brak wyboru ze strony
użytkownika
Użytkownika wybrał polecenie Cancel w
oknie dialogowym Select a Recipe, a nie
nazwę receptury.
-19
Szablon receptury jest
wykorzystywany przez
inną aplikację
Żądany szablon receptury jest już otwarty,
przez co nie jest dostępny dla programu
WindowViewer.
Wyświetlanie komunikatów dla kodów błędów
Każda funkcja receptur zwraca numer kodu błędu. Umieszczenie go w skrypcie funkcji
RecipeGetMessage() pozwala na przypisanie komunikatu błędu do zmiennej tekstowej.
W tym celu można skorzystać z następującego skryptu związanego ze zmianą wartości:
RecipeGetMessage(ErrorCode, ErrorMessage, 131);
Skrypt ten będzie wykonywany po każdorazowej zmianie wartości zmiennej analogowej
ErrorCode. Spowoduje on odczytanie przez funkcję RecipeGetMessage() aktualnej
wartości liczbowej zmiennej ErrorCode oraz zapisanie komunikatu towarzyszącego tej
wartości jako zmiennej ErrorMessage.
Załącznik A
A-5
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Nazwy elementów SPC DDE
Z elementów DDE można korzystać w celu uzyskania informacji o zestawach danych, oraz
w celu sterowania operacjami na wykresach. Nazwa aplikacji to SPC. Nazwa tematu jest
nazwą zestawu danych.
Uwaga Wszystkie elementy SPC DDE traktowane są tak samo zarówno w przypadku
rozproszonego SPC, jak i w przypadku nie rozproszonego SPC, jednak w przypadku
rozproszonego SPC nazwa tematu musi być typu Indirect Dataset.
DDE SPC sterowanie i wyświetlanie
Elementy DDE sterowania i wyświetlania przeznaczone są do sterowania i wyświetlania
informacji o tematach Zestawu danych. Z elementów DDE Sterowania korzystają wszystkie
stanowiska. Są to wartości zestawów danych zebranych produktów dla zdalnego zestawu
danych. Każde stanowisko korzysta ze swoich elementów wyświetlania DDE. Są to
wartości próbne dla produktu wyświetlanego na lokalnym stanowisku.
Zmodyfikowane próbki mogą być wykorzystane w odniesieniu do zebranych
wyświetlanych produktów lokalnego zestawu danych. Zmiany wprowadzone poprzez
kliknięcie na wyświetlanym wykresie są uwzględniane w wyświetlanym produkcie.
Elementy SPC DDE wprowadzają zmiany w zebranych produktach. Wyświetlany produkt,
oraz zebrane produkty muszą posiadać swoje własne wartości próbne, którymi są ostatnio
zebrane próbki.
Dla zebranych i wyświetlanych produktów oceniane są i pamiętane alarmy. Są one
sygnalizowane dla zebranych produktów wyłącznie w czasie pracy aplikacji.
Uwaga Poza zebranymi i wyświetlanymi produktami, wiele elementów SPC DDE może
być stosowanych wyłącznie w odniesieniu do zebranych produktów. Elementy te oznaczone
są przez umieszczenie znaku (*) przed nazwą elementu SPC DDE na liście.
Nazwa elementu
Typ DDE
Dostęp
Opis
AutoCollection
Discrete
O/Z
Aktywowanie/ deaktywowanie
automatycznego zbierania danych.
*CalculateControlLimits
Discrete
O/Z
Ustawienie wartości 1 powoduje
rozpoczęcie obliczania wartości
granicznych sterowania.
DatasetName
Message
(32)
O/Z
Ustawia parametr DatasetName,
wykorzystywany przez Indirect
Dataset.
HistogramLCL
Real
O
Wyświetla Dolne wartości
graniczne sterowania histogramu,
w oparciu o populację.
HistogramUCL
Real
O
Wyświetla Górne wartości
graniczne sterowania histogramu,
w oparciu o populację.
Kurtosis
Real
O
Kształt dystrybucji histogramów.
LastSampleDisplayed
Integer
O/Z
Ustawia numer ostatniej próbki
wyświetlanej przez Zestaw
danych.
*ManualInputDialog
Discrete
O/Z
Ustawienie wartości 1 powoduje
wyświetlanie wbudowanego okna
dialogowego do ręcznego
wprowadzania danych.
MeasurementsPerSample
Integer
O
Wyświetlenie skonfigurowanej
liczby pomiarów przypadających
na próbkę
NewProduct
Message
(32)
O/Z
Wykorzystywana do tworzenia
nowej Nazwy produktu.
A-6
Załącznik A
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Nazwa elementu
Typ DDE
Dostęp
Opis
*ProductCollected
Message (32)
O/Z
Zmienia Nazwę produktu
zebranego przez Zestaw
danych.
ProductDisplayed
Message (32)
O/Z
Zmienia Nazwę produktu
wyświetlanego przez Zestaw
danych.
SampleSize
Integer
O
Rozmiar próbki dla Zestawu
danych NP.
SamplesPerControlChart
Integer
O/Z
Ustawia liczbę próbek
wyświetlanych na Wykresie
kontrolnym.
SamplesPerHistogram
Integer
O/Z
Ustawia liczbę próbek
wyświetlanych na
histogramie.
SamplesPerLimitCalc
Integer
O/Z
Ustawia liczbę próbek
wykorzystywanych przy
obliczaniu kontrolnych
wartości granicznych.
SamplesPerPareto
Integer
O/Z
Ustawia liczbę próbek
wykorzystywanych do
wyświetlania na wykresie
kontrolnym Pareto.
SelSPCOutSpecMsg
Message
O
Zmienna tekstowa dla alarmu
"Próbka poza dopuszczalnymi
wartościami granicznymi."
Skewness
Real
O
Wyświetla odchylenie od
średniej na Histogramie.
SPCAllowSampDelMod
Discrete
O/Z
Włączenie/ wyłączenie opcji
Delete i Modify menu
rozwijanego po wciśnięciu
prawego przycisku myszy.
StartCollection
Discrete
O/Z
Ustawienie wartości 1
powoduje rozpoczęcie cyklu
automatycznego zbierania.
Załącznik A
A-7
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Elementy DDE SPC bieżącej próbki
Wszystkie elementy DDE bieżącej próbki odnoszą się do ostatnio zebranej próbki
zadanego Zestawu danych. Mogą one być zastosowane do zmodyfikowania źródłowych
danych, oraz wartości granicznych dla Nazwy zestawu danych. W celu wprowadzenia
zmian w informacjach o bieżącej próbce, należy zapisać odpowiedni element DDE, a
następnie ustawić element DDE CurrentUpdate na 1. Efekt będzie identyczny jak w
przypadku ponownego wprowadzenia próbki, i spowoduje ponowne wykonanie
odpowiednich obliczeń. Po wprowadzeniu próbki, program SPC ustawi wartość elementu i
DDE CurrentUpdate na 0. Rozpoczęcie przez następną próbkę cyklu zbierania, blokuje
możliwość uaktualnienia elementu DDE bieżącej próbki.
Z elementów DDE bieżącej próbki korzystają wspólnie wszystkie stacje. Wartości tych
elementówi reprezentują ostatnio zebraną próbkę zebranego produktu.
W przypadku rozproszonego SPC, na początku wszystkie wartości ustawiane są na zero.
SPC co 5 sekund łączy się z bazą danych oraz sprawdza nowe dane. Zawsze w przypadku
znalezienia nowych informacji, wartości elementów są uaktualniane. Modyfikacje bieżącej
próbki są buforowane lokalnie, aż do ustawienia elementu CurrentUpdate na 1. Następnie
wartości umieszczane są w pakiecie bieżącej próbki i wysyłane do sieciowego stanowiska
zestawu danych w celu przeprowadzania analizy i zapamiętania ich. Modyfikacje bieżących
próbek wskazujące na inny zebrany produkt, oraz bieżące próbki o numerze różnym od
ostatnio zapisanej próbki są odrzucane przez Serwer.
Uwaga Poza zebranymi i wyświetlanymi produktami, wszystkie "Bieżące" Elementy i
DDE SPC mają zastosowanie wyłącznie w odniesieniu do zebranych produktów.
Nazwa elementu
Typ DDE
Dostęp
Opis
CurrentCauseCode
Integer
O/Z
Ustawia wartość SpecialCauseCode
dla bieżącej próbki.
CurrentCauseString
Message
(128)
O
Wyświetla opis numeru
SpecialCauseCode dla bieżącej próbki.
CurrentComment
Message
(50)
O/Z
Element wykorzystywany do zapisu
różnych komentarzy powiązanych z
bieżącą próbką.
CurrentCp
Real
O
Element ten wyświetla możliwości dla
bieżącej próbki.
CurrentCpk
Real
O
Element ten wyświetla wyśrodkowane
możliwości dla bieżącej próbki.
CurrentDate
Message
(8)
O/Z
Ustawia datę dla bieżącej próbki w
formacie DD/MM/YY. Jeżeli data
zostanie niepoprawnie wprowadzona,
przyjęta zostanie data bieżąca.
CurrentFlag
Discrete
O/Z
Ustawia element flag dla bieżącej
próbki.
CurrentIgnoreValue
Discrete
O/Z
Ustawia ignorowanie bieżącej próbki
w momencie gdy Wykres kontrolny
jest automatycznie skalowany.
CurrentMx
Real
O/Z
Ustawia indywidualny pomiar wartości
dla bieżącej próbki. (x=1 do 25.)
CurrentR
Real
O
Elementten wyświetla zakres dla
bieżącej próbki.
CurrentRBar
Real
O/Z
Element ten ustawia średni zakres dla
bieżącej próbki.
CurrentRLCL
Real
O/Z
Element ten ustawia dolne, kontrolne
wartości graniczne.
A-8
Załącznik A
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Nazwa elementu
Typ DDE
Dostęp
Opis
CurrentRUCL
Real
O/Z
Element ten ustawia górne, kontrolne
wartości graniczne.
CurrentSample
Real
O
Element ten wyświetla wartość ostatniego
punktu próbkowania (tj. X, C, P).
CurrentSampleBar
Real
O/Z
Ustawia średnią bieżącej próbki w danym
punkcie próbkowania.
CurrentSampleNumber
Integer
O
Wyświetla numer ostatnio zebranej próbki.
CurrentTarget
Real
O/Z
Ustawia wartość docelową w danym
punkcie próbkowania.
CurrentTime
Message
(8)
O/Z
Ustawia czas dla bieżącej próbki w
formacie HH:MM:SS. Jeżeli czas zostanie
niepoprawnie wprowadzony, przyjęty
zostanie czas bieżący.
CurrentUpdate
Discrete
O/Z
Element ten należy ustawić na 1 w celu
wprowadzenia zmian w informacji o
próbce, w dowolnym z bieżących pól.
CurrentXLCL
Real
O/Z
Ustawia Dolną, kontrolną wartość
graniczną (LCL - Lower Control Limit) dla
bieżącej próbki.
CurrentXLSL
Real
O/Z
Ustawia Dolną, wartość graniczną
specyfikowaną (LSL - Lower Specification
Limit) dla bieżącej próbki.
CurrentXUCL
Real
O/Z
Ustawia Górną , kontrolną wartość
graniczną (UCL - Upper Control Limit) dla
bieżącej próbki.
CurrentXUSL
Real
O/Z
Ustawia Górną, wartość graniczną
specyfikowaną (USL - Upper Specification
Limit) dla bieżącej próbki.
SPC2L3Out2SD
Integer
O
Licznik alarmów dla alarmu "2 z 3
ostatnich próbek poza 2 odchyleniami
standardowymi SS."
SPC2L3Out2SDMsg
Message
O
Zmienna tekstowa dla alarmu "2 z 3
ostatnich próbek poza 2 odchyleniami
standardowymi SS."
SPC4L5Out1SD
Integer
O
Licznik alarmów dla alarmu "4 z 5
ostatnich próbek poza 1 odchyleniem
standardowym SS."
SPC4L5Out1SDMsg
Message
O
Zmienna tekstowa dla alarmu "4 z 5
ostatnich próbek poza 1 odchyleniem
standardowym SS."
SPCConSampAltUpDn
Integer
O
Licznik alarmów dla alarmu "Wartość
kolejnych próbek naprzemiennie zmniejsza
się i zwiększa."
SPCConSampAltUpDnMsg
Message
O
Zmienna tekstowa dla alarmu "Wartość
kolejnych próbek naprzemiennie zmniejsza
się i zwiększa."
SPCConSampln1SD
Integer
O
Licznik alarmów dla alarmu "Kolejne
próbki znajdują się wewnątrz 1 Odchylenia
standardowego."
SPCConSampln1SDMsg
Message
O
Zmienna tekstowa dla alarmu "Kolejne
próbki znajdują się wewnątrz 1 Odchylenia
standardowego."
Załącznik A
A-9
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Nazwa elementu
Typ DDE
Dostęp Opis
SPCConSamplncDec
Integer
O
Licznik alarmów dla alarmu "Wartość
kolejnych próbek zmniejsza się lub
zwiększa."
SPCConSamplncDecMsg
Message
O
Zmienna tekstowa dla alarmu "Wartość
kolejnych próbek zmniejsza się lub
zwiększa."
SPCConSampOneSideCL
Integer
O
Licznik alarmów dla alarmu "Wartość
kolejnych próbek znajduje się po jednej
stronie osi symetrii."
SPCConSampOneSideCLMsg
Message
O
Zmienna tekstowa dla alarmu "Wartość
kolejnych próbek znajduje się po jednej
stronie osi symetrii."
SPCConSampOut1SD
Integer
O
Licznik alarmów dla alarmu "Kolejne
próbki znajdują się poza 1 Odchyleniem
standardowym."
SPCConSampOut1SDMsg
Message
O
Zmienna tekstowa dla alarmu "Kolejne
próbki znajdują się poza 1 Odchyleniem
standardowym."
SPCNLNOutNSD
Integer
O
Licznik alarmów dla alarmu "? Poza
ostatnią? próbka poza? Standardowym
odchyleniem."
SPCNLNOutNSDMsg
Message
O
Zmienna tekstowa dla alarmu "? Poza
ostatnią? próbka poza? Standardowym
odchyleniem."
SPCNLNOutNSDSS
Integer
O
Licznik alarmów dla alarmu "?Poza
ostatnią? Próbka poza ? standardowym
odchyleniem SS."
SPCNLNOutNSDSSMsg
Message
O
Zmienna tekstowa dla alarmu "?Poza
ostatnią? Próbka poza ? standardowym
odchyleniem SS."
SPCOutRCtrl
Integer
O
Licznik alarmów dla alarmu "Zakres
poza kontrolnymi wartościami
granicznymi."
SPCOutRCtrlMsg
Message
O
Zmienna tekstowa dla alarmu "Zakres
poza kontrolnymi wartościami
granicznymi."
SPCOutXCtrl
Integer
O
Licznik alarmów dla alarmu Wykresu X
"Próbka poza kontrolnymi wartościami
granicznymi."
SPCOutXCtrlMsg
Message
O
Zmienna tekstowa dla alarmu Wykresu
X "Próbka poza kontrolnymi
wartościami granicznymi."
SPCOutSpec
Integer
O
Licznik alarmów dla alarmu "Próbka
poza dopuszczalnymi wartościami
specyfikowanymi."
SPCOutSpecMsg
Message
O
Zmienna tekstowa dla alarmu "Próbka
poza dopuszczalnymi wartościami
granicznymi."
SPCResetAlarmCounters
Discrete
O/Z
Zeruje wszystkie liczniki alarmów.
A-10
Załącznik A
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Elementy DDE SPC ręcznego wprowadzania
Elementy DDE ręcznego wprowadzania stosowane są do tworzenia okien użytkownika do
ręcznego wprowadzania danych. W celu zastosowania elementów ręcznego wprowadzania
danych, ustawić wartości odpowiednich elementów, a następnie ustawić element DDE
MI_Save na wartość 1. Spowoduje to wprowadzenie informacji zawartych w innych polach
MI jako nowej próbki. Po wprowadzeniu próbki, program SPC ustawi wartość elementu
DDE MI_Save na 0 (zero).
W przypadku rozproszonego SPC, elementy ręcznego wprowadzania danych mają zasięg
lokalny dla każdego ze stanowisk. Wartości są lokalnie buforowane na każdym ze
stanowisk, aż do momentu kiedy element DDE MI_Save zostanie ustawiona na 1. Po
ustawieniu MI_Save na 1, wartości umieszczane są w pakiecie ręcznie wprowadzonych
danych i wysyłane do sieciowego stanowisk zestawu danych w celu przeprowadzenia
analizy i ich zapisania.
Uwaga Poza zebranymi i wyświetlanymi produktami, wszystkie elementy DDE SPC
"Ręczne" mają zastosowanie wyłącznie w odniesieniu do zebranych produktów.
Nazwa elementu
Typ DDE
Dostęp
Opis
MI_CauseCode
Integer
O/Z
Ustawia wartość
SpecialCauseCode dla ręcznie
wprowadzanej próbki.
MI_CauseString
Message (127)
O
Wyświetla opis numeru
wejściowego
SpecialCauseCode dla próbki.
MI_Comment
Message (50)
O/Z
Element ten wykorzystywany
do zapisu/ odczytu różnych
komentarzy wprowadzonych
dla próbką.
MI_Date
Message (8)
O/Z
Ustawia datę dla bieżącej
próbki. Data musi być
wprowadzona w formacie
DD/MM/YY. Jeżeli data
zostanie niepoprawnie
wprowadzona, przyjęta
zostanie data bieżąca.
MI_Flag
Discrete
O/Z
Ustawia element Flag dla
ręcznie wprowadzanej próbki.
MI_IgnoreValue
Discrete
O/Z
Ustawia ignorowanie bieżącej
próbki w momencie gdy
Wykres kontrolny jest
automatycznie skalowany.
MI_Mx
Real
O/Z
Ustawia wartość dla
oznaczonego ręcznie
wprowadzonego pomiaru (x=1
do 25).
Załącznik A
A-11
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Nazwa elementu
Typ DDE
Dostęp
Opis
MI_Save
Discrete
O/Z
Zapisuje wprowadzoną ręcznie w innych
polach MI informację jako nową próbkę.
Uwaga Jeżeli element MI_Save
ustawiony jest na 1, wartości wszystkich
elementów MI zapisywane są do
odpowiednich elementów i DDE
Current, a element
CurrentSampleNumber jest
inkrementowana o 1.
MI_Time
Message
(8)
O/Z
Ustawia czas dla bieżącej próbki. Czas
musi być wprowadzona w formacie
HH:MM:SS. Jeżeli czas zostanie
niepoprawnie wprowadzony, przyjęty
zostanie domyślnie czas bieżący.
A-12
Załącznik A
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Elementy DDE do zaznaczania SPC
Elementy DDE do zaznaczania mogą być wykorzystane do uzyskiwania szczegółowych
informacji o dowolnej z próbek. Elementy DDE do zaznaczania umożliwiają wprowadzenie
numeru próbki, która ma być wyświetlana. Po wprowadzeniu, program SPC zaktualizuje
wszystkie elementy do zaznaczania, wprowadzając szczegółowe informacje o zaznaczonym
numerze próbki.
Nie można zmienić starych danych, ale można dodać elementy Special Cause Code, Flags
i/lub Comments poprzez wprowadzenie wartości do odpowiednich elementówi, i następnie
ustawienie elementu SelectionUpdate na 1.
Spowoduje to wprowadzenie do rekordu zaznaczonej próbki nowych wartości. Po
wprowadzeniu próbki, program SPC ustawi wartość elementu DDE SelectionUpdate na 0
(zero).
W przypadku rozproszonego SPC, elementy DDE do zaznaczania mają zasięg lokalny dla
każdego ze stanowisk. Są to wartości próbek zarejestrowane na stanowisku sieciowym dla
określonego numeru próbki zebranego produktu. Po ustawieniu elementu DDE do
zaznaczania na numer próbki, z pliku z próbkami na stanowisku sieciowym odczytywane są
dane. Nie można zmienić starych danych, ale można dodać elementy Special Cause Code,
Flags i/lub Comments poprzez wprowadzenie wartości do odpowiednich elementów, i
następnie ustawienie elementu SelectionUpdate na 1. Po ustawieniu wartości
SelectionUpdate na 1, następuje wysłanie elementu Cause Code, Comment, flag i Ignore
Value w formie pakietu do stanowiska sieciowego.
Uwaga Poza zebranymi i wyświetlanymi produktami, wszystkie "Do zaznaczania"
Elementy DDE SPC mają zastosowanie wyłącznie w odniesieniu do zebranych produktów.
Nazwa elementu
Typ DDE
Dostęp
Opis
Selection
Integer
O/Z
Ustawienie tego elementu na numer
próbki powoduje wprowadzenie do
wszystkich zaznaczonych elementów
odpowiednich danych.
SelectionCauseCode
Integer
O/Z
Ustawia wartość SpecialCauseCode
dla zaznaczonej próbki.
SelectionCauseString Message
(128)
O
Wyświetla opis wprowadzonego
Special Cause Code.
SelectionComment
Message
(50)
O/Z
Element ten wykorzystywany do
zapisu/ odczytu różnych komentarzy,
wprowadzonych dla zaznaczonej
próbki.
SelectionCp
Real
O
Element ten wyświetla możliwości dla
zaznaczonej próbki.
SelectionCpk
Real
O
Element ten wyświetla wyśrodkowane
możliwości dla zaznaczonej próbki.
SelectionDate
Message
(8)
O
Element ten wyświetla datę dla
zaznaczonej próbki.
SelectionFlag
Discrete
O/Z
Ustawia element Flag dla zaznaczonej
próbki.
SelectionIgnoreValue
Discrete
O/Z
Ustawia ignorowanie zaznaczonej
próbki w momencie gdy Wykres
kontrolny jest automatycznie skalowany.
SelectionMx
Real
O
Wyświetla wartość dla indywidualnego
pomiaru (x=1 - 25), zawierającego
próbkę.
SelectionProduct
Message
(32)
O
Wyświetla Nazwę produktu dla
zaznaczonej próbki.
Załącznik A
A-13
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Nazwa elementu
Typ DDE
Dostęp Opis
SelectionRUCL
Real
O
Wyświetla zakres UCL dla
zaznaczonej próbki.
SelectionRLCL
Real
O
Wyświetla zakres LCL dla
zaznaczonej próbki.
SelectionR
Real
O
Wyświetla zakres dla zaznaczonej
próbki.
SelectionRBAR
Real
O
Wyświetla średni zakres dla
zaznaczonej próbki.
SelectionSample
Real
O
Wyświetla wartość zaznaczonego
punkt próbki.
SelectionSampleBar
Real
O
Wyświetla średnio zaznaczonej
próbki w zaznaczonym punkcie
próbki.
SelectionTarget
Real
O
Wyświetla docelową wartość dla
zaznaczonej próbki.
SelectionTime
Message
(8)
O
Element ten wyświetla Czas dla
zaznaczonej próbki.
SelectionUpdate
Discrete
O/Z
Aktualizuje zmiany wprowadzone w
polach Zaznaczonej próbki
SelectionXUSL
Real
O
Wyświetla Górną, wartość graniczną
wartość specyfikowaną
SelectionXLSL
Real
O
Wyświetla Dolną, wartość graniczną
wartość specyfikowaną
SelectionXUCL
Real
O
Wyświetla Górną wartość graniczną.
SelectionXLCL
Real
O
Wyświetla Dolną wartość graniczną.
SelSPC2L3Out2SDMsg
Message
O
Zmienna tekstowa dla alarmu "2 z 3
ostatnich próbek poza 2 odchyleniami
standardowymi SS."
SelSPC4L5Out1SDMsg
Message
O
Zmienna tekstowa dla alarmu "4 z 5
ostatnich próbek poza 1 odchyleniami
standardowymi SS."
SelSPCConSampAltUpDnMsg
Integer
O
Zmienna tekstowa dla alarmu
"Wartość kolejnych próbek
naprzemiennie zmniejsza się i
zwiększa."
SelSPCConSampln1SDMsg
Message
O
Zmienna tekstowa dla alarmu
"Kolejne próbki znajdują się
wewnątrz 1 Odchylenia
standardowego."
SelSPCConSamplncDecMsg
Message
O
Zmienna tekstowa dla alarmu
"Wartość kolejnych próbek zmniejsza
się lub zwiększa."
SelSPCConSampOneSideCLMsg
Message
O
Zmienna tekstowa dla alarmu
"Wartość kolejnych próbek znajduje
się po jednej stronie osi symetrii."
SelSPCConSampOut1SDMsg
Message
O
Zmienna tekstowa dla alarmu
"Kolejne próbki znajdują się poza 1
Odchyleniem standardowym."
SelSPCNLNOutNSDMsg
Message
O
Zmienna tekstowa dla alarmu "?
Ostatnia? Próbka poza? Odchyleniem
standardowym?."
A-14
Załącznik A
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Nazwa elementu
Typ DDE
Dostęp Opis
SelSPCNLNOutNSDSSMsg
Message
O
Zmienna tekstowa dla alarmu
"? Ostatnia? Próbka poza?
Odchyleniem standardowym
SS?."
SelSPCOutRCtrlMsg
Message
O
Zmienna tekstowa dla alarmu
"Zakres poza kontrolnymi
wartościami granicznymi."
SelSPCOutXCtrlMsg
Message
O
Zmienna tekstowa dla alarmu
Wykresu X "Próbka poza
kontrolnymi wartościami
granicznymi."
SelSPCOutSpecMsg
Message
O
Zmienna tekstowa dla alarmu
"Próbka poza dopuszczalnymi
wartościami granicznymi."
Uwaga Wiele pośrednich zestawów danych może być ustawionych i połączonych z tym
samym, rzeczywistym Zestawem danych. Można wtedy Zaznaczoną wartość każdego z
Pośrednich Zestawów danych ustawić na inny numer próbki. Pozwala to użytkownikowi na
podglądanie informacji o wielu próbkach w obrębie jednego Zestawu danych.
Załącznik A
A-15
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Usuwanie zakłóceń przy korzystaniu z funkcji
skryptowych SQL
Wszystkie funkcje SQL zwracają parametr ResultCode, który może zostać wykorzystany
przy usuwaniu zakłóceń. Funkcja SQLErrorMsg() zwraca komunikat o błędzie, dla
zdanego kodu ResultCode.
Przykład:
ErrorMsg=SQLErrorMsg(ResultCode);
gdzie:
ErrorMsg jest zmienną typu Memory Message.
ResultCode jest zmienną całkowitą, z wartością dostarczoną przez
odpowiednią funkcję SQL.
Komunikaty o błędach
W niniejszym dokumencie nie omówiono znaczenia poszczególnych wartości ResultCode,
więcej informacji na temat tych wartości podano w dokumentacji do bazy danych. Należy
również pamiętać o sprawdzeniu informacji wyświetlanych przez program diagnostyczny
Wonderware Logger.
Funkcja SQLErrorMsg() ustawia wartość zmiennej tekstowej ErrorMsg. Poniżej
zamieszczono zestawienie wybranych kodów błędów, oraz odpowiadające im komunikaty,
wraz z ich opisem.
Kod błędu
(ResultCode)
Kod błędu
Opis
0
Operacja zakończona
pomyślnie
Polecenie zostało zakończone
pomyślnie, bez wystąpienia błędu
-5
Ostatni rekord w bazie
danych
Odczytany został ostatni rekord
bazy danych
-1001
Brak pamięci
Brak wolnej pamięci na
zakończenie funkcji
-1002
Błąd w połączeniu
Niepoprawny parametr
ConnectionID przekazany do
funkcji
-1003
Nie znaleziono listy
powiązań
Lista powiązań o zadanej nazwie
nie istnieje
-1004
Nie znaleziono
szablonu
Szablon o zadanej nazwie nie
istnieje
-1005
Błąd wewnętrzny
Wystąpił błąd wewnętrzny.
Skontaktować się z Serwisem.
-1006
Pusty łańcuch znaków
Ostrzeżenie - z bazy danych
odczytano pusty łańcuch znaków
-1007
Obcięty łańcuch
znaków
Ostrzeżenie - łańcuch znaków
odczytany z bazy danych ma więcej
niż 131 znaków w związku z czym
został on obcięty
-1008
Brak klauzuli Where
Brak klauzuli Where dla Delete
A-16
Załącznik A
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Kod błędu
(ResultCode)
Kod błędu
Opis
-1009
Błąd w komunikacji
Błąd w komunikacji, szczegółowy
opis zakłócenia podany jest w
programie diagnostycznym
Wonderware Logger
-1010
Baza danych
określona w łańcuchu
znaków do
ustanowienia
połączenia, w części
DB= nie istnieje
Określona baza danych nie istnieje
-1011
Brak zaznaczonych
wierszy
Podjęto próbę wykonania polecenia
SQLNumRows(), SQLFirst(),
SQLNext(), lub SQLPrev(), bez
uprzedniego wykonania polecenia
SQLSelect().
-4149
Niepoprawna
instrukcja do
ustanowienia
połączenia lub
niewłaściwy parametr
SQLHandle
Przyczyną może być niewłaściwie
zdefiniowany typ kolumny.
Przykładowo, jeżeli w pliku dBASE
zdefiniować szablon tabeli z
kolumną typu znak, a nie typu
znaki, zasygnalizowany zostanie
błąd
Załącznik A
A-17
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Kody błędów dla poszczególnych baz danych
Oracle
Kod błędu
Rozwiązanie
ORA-03112 - Błąd w składni łańcucha
znaków hosta
Jeżeli uruchamiany jest program
NETINIT.EXE należy umieścić go w
grupie Autostart systemu Windows.
Jeżeli uruchamiany jest program
NETINIT.EXE i nawiązywane jest
więcej niż jedno połączenie, lub też
uruchamianych jest więcej niż jedna
sesja, należy przydzielić więcej pamięci.
W tym celu należy ustawić parametr
WIN_REMOTE_SESSIONS pliku
CONFIG.ORA na wartość równa liczbie
żądanych połączeń. Zamieszczona
poniżej instrukcja przydziela pamięć dla 4
połączeń:
WIN_REMOTE_SESSIONS=4
ORA-3121 - Brak podłączonego
sterownika
Przed uruchomieniem Windows, oraz
przed korzystaniem z InTouch SQL
Access należy uruchomić SQL *NET
TSR, odpowiedni dla systemu
sieciowego.
ORA-6435 - NetBIOS: Brak możliwości
dodania lokalnej nazwy do tabeli nazw
Musi być uruchomiony system sieciowy
(Novell, LAN Manager, itp.)
ORA-09301 - Kernel lokalny
obsługiwany jest wyłącznie w trybie
standardowym
W łańcuchu znaków do ustanowienia
połączenia określić nazwę serwera
("SRVR=").
ORA-06430 - Brak możliwości
połączenia
Zweryfikować poprawność i kolejność
atrybutów w łańcuchu znaków do
ustanowienia połączenia.
A-18
Załącznik A
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Sybase lub Microsoft SQL Server
Kod błędu
Rozwiązanie
W jednym momencie nie może być
aktywna więcej niż jedna instrukcja
Próba wykonania polecenia SQL po
wykonaniu SQLSelect(). Wywołać
polecenie SQLEnd() w celu zwolnienia
zasobów systemu, lub też przeznaczyć dla
drugiej instrukcji oddzielny parametr
ConnectionID.
Brak wolnej pamięci na wykonanie
polecenia
Spróbować ponownie uruchomić stację
kliencką
Niewłaściwa nazwa tablicy nazwy
obiektu
Nazwa tablicy nie istnieje w używanej
bazie danych. Spróbować skorzystać z
instrukcji DB=nazwa bazy danych.
dBASE
Kod błędu
Rozwiązanie
Plik lub moduł DLL nie znalezione
W przypadku systemu Windows, plik
QEDBF.DLL musi znajdować się w
bieżącej kartotece, lub w kartotece
systemu Windows podanej w ścieżce
DOS.
Błąd w połączeniu
Należy sprawdzić, czy w kartotece
znajdują się odpowiednie pliki DLL. W
przypadku DBF, potrzebny jest plik
QLDBF.DLL.
Niepoprawna instrukcja do
ustanowienia połączenia lub niewłaściwy
parametr SQLHandle
Więcej informacji na temat podano w
programie Wonderware Logger .
Instrukcja SQL może zawierać błąd w
składni.
I-1
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Index
$
$AccessLevel, 1-2
$AlarmLogging, 1-3
$AlarmPrinterError, 1-3
$AlarmPrinterNoPaper, 1-4
$AlarmPrinterOffline, 1-4
$AlarmPrinterOverflow, 1-5
$ApplicationChanged, 1-5
$ApplicationVersion, 1-6
$ChangePassword, 1-6
$ConfigureUsers, 1-7
$Date, 1-7
$DateString, 1-8
$DateTime, 1-8
$Day, 1-8
$HistoricalLogging, 1-9
$Hour, 1-9
$InactivityTimeout, 1-10
$InactivityWarning, 1-10
$LogicRunning, 1-11
$Minute, 1-11
$Month, 1-11
$Msec, 1-12
$NewAlarm, 1-12
$ObjHor, 1-12
$ObjVer, 1-13
$Operator, 1-13
$OperatorEntered, 1-14
$PasswordEntered, 1-14
$Second, 1-15
$StartDdeConversations, 1-15
$System, 1-15
$Time, 1-16
$TimeString, 1-16
$Year, 1-16
.
.Ack, 2-6
.Alarm, 2-7
.AlarmDevDeadband, 2-8
.AlarmEnabled, 2-9
.AlarmGroup, 2-57
.AlarmValDeadband, 2-10
.Caption, 2-65
.ChartLength, 2-11
.ChartStart, 2-12
.Comment, 2-12, 2-34
.DevTarget, 2-13
.DisplayMode, 2-13
.Enabled, 2-66
.EngUnits, 2-14
.HiHiLimit, 2-14
.HiHiStatus, 2-15
.HiLimit, 2-16
.HiStatus, 2-16
.ListCount, 2-67
.ListIndex, 2-68
.LoLimit, 2-17
.LoLoLimit, 2-17
.LoLoStatus, 2-18
.LoStatus, 2-19
.MajorDevPct, 2-19
.MajorDevStatus, 2-20
.MaxEU, 2-21
.MaxRange, 2-22
.MaxRaw, 2-23
.MinEU, 2-24
.MinorDevPct, 2-25
.MinorDevStatus, 2-26
.MinRange, 2-27
.MinRaw, 2-28
.Name, 2-29
.NewIndex, 2-69
.NextPage, 2-57
.Normal, 2-30
.NumAlarms, 2-58
.OffMsg, 2-31
.OnMsg, 2-31
.PageNum, 2-58
.Pen1-.Pen8, 2-32
.PrevPage, 2-59
.PriFrom, 2-59
.PriTo, 2-60
.ProvidesReg, 2-60
.ProvidesRet, 2-61
.Quality, 2-34
.QualityLimit, 2-36
.QualityLimitString, 2-36
.QualityStatus, 2-37
.QualitySubstatus, 2-38
.QualitySubstatusString, 2-38
.QueryState, 2-62
.QueryType, 2-63
.RawValue, 2-39
.ReadOnly, 2-70
.Reference, 2-40
.ReferenceComplete, 2-40
.ROCPct, 2-41
.ROCStatus, 2-42
.ScooterLockLeft, 2-43
.ScooterLockRight, 2-44
.ScooterPosLeft, 2-45
.ScooterPosRight, 2-46
.SPCStatus, 2-47
.Successful, 2-64
I-2
Index
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
.TagID, 2-47
.TimeDate, 2-48
.TimeDateString, 2-48
.TimeDateTime, 2-48
.TimeDay, 2-49
.TimeHour, 2-49
.TimeMinute, 2-49
.TimeMonth, 2-50
.TimeMsec, 2-50
.TimeSecond, 2-50
.TimeTime, 2-51
.TimeTimeString, 2-51
.TimeYear, 2-51
.TopIndex, 2-71
.TotalPages, 2-64
.Unack, 2-52
.UpdateCount, 2-53
.UpdateInProgress, 2-54
.UpdateTrend, 2-55
.Value, 2-56, 2-72
.Visible, 2-73
A
Abs(), 3-2
Ack(), 3-2
ActivateApp(), 3-3
Alarm, 1-4
Alarmów Funkcje
Ack(), 3-2
Alarmów pola
.Ack, 2-6
.Alarm, 2-7
.AlarmDevDeadband, 2-8
.AlarmEnabled, 2-9
.AlarmValDeadband, 2-10
.DevTarget, 2-13
.HiHiLimit, 2-14
.HiHiStatus, 2-15
.HiLimit, 2-16
.HiStatus, 2-16
.LoLimit, 2-17
.LoLoLimit, 2-17
.LoLoStatus, 2-18
.LoStatus, 2-19
.MajorDevPct, 2-19
.MajorDevStatus, 2-20
.MinorDevPct, 2-25
.MinorDevStatus, 2-26
.Normal, 2-30
.ROCPct, 2-41
.ROCStatus, 2-42
.Unack, 2-52
Alarmów zmienne systemowe
$AlarmLogging, 1-3
$AlarmPrinterError, 1-3
$AlarmPrinterOverflow, 1-5
$NewAlarm, 1-12
$System, 1-15
almAckAll(), 3-3
almAckDisplay(), 3-4
almAckRecent(), 3-4
almAckSelect(), 3-5
almDefQuery(), 3-5
almMoveWindow(), 3-6
almQuery(), 3-7
almSelectAll(), 3-7
almSelectItem(), 3-8
almShowStats(), 3-8
Aplikacji zmienne systemowe
$ApplicationChanged, 1-5
$ApplicationVersion, 1-6
ArcCos(), 3-8
ArcSin(), 3-9
ArcTan(), 3-9
C
ChangePassword(), 3-10
ConnectionID Zmienna, 3-68
ConnectString Zmienna, 3-68
Cos(), 3-10
D
DDE
Control. porównać WWControl()
Execute. porównać WWExecute()
Poke. porównać WWPoke()
Request. porównać WWRequest()
DialogStringEntry(), 3-11
DialogValueEntry(), 3-12
DText(), 3-13
E
ErrorCode, A-3
ErrorNumber, A-2
Exp(), 3-14
F
FileCopy(), 3-14
FileDelete(), 3-15
FileMove(), 3-16
FileReadFields(), 3-17
FileReadMessage(), 3-18
FileWriteFields(), 3-19
FileWriteMessage(), 3-20
Funkcje
Abs(), 3-2
Index
I-3
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
Ack(), 3-2
ActivateApp(), 3-3
almAckAll(), 3-3
almAckDisplay(), 3-4
almAckRecent(), 3-4
almAckSelect(), 3-5
almDefQuery(), 3-5
almMoveWindow(), 3-6
almQuery(), 3-7
almSelectAll(), 3-7
almSelectItem(), 3-8
almShowStats(), 3-8
ArcCos(), 3-8
ArcSin(), 3-9
ArcTan(), 3-9
ChangePassword(), 3-10
Cos(), 3-10
DialogStringEntry(), 3-11
DialogValueEntry(), 3-12
DText(), 3-13
Exp(), 3-14
FileCopy(), 3-14
FileDelete(), 3-15
FileMove(), 3-16
FileReadFields(), 3-17
FileReadMessage(), 3-18
FileWriteFields(), 3-19
FileWriteMessage(), 3-20
GetNodeName(), 3-2
GetPropertyD(), 3-21
GetPropertyI(), 3-21
GetPropertyM(), 3-22
Hide(), 3-22
HideSelf(), 3-22
HTGetLastError(), 3-23
HTGetPenName(), 3-24
HTGetTimeAtScooter(), 3-24
HTGetTimeStringAtScooter(), 3-25
HTGetValue(), 3-26
HTGetValueAtScooter(), 3-27
HTGetValueAtZone(), 3-28
HTScrollLeft(), 3-29
HTScrollRight(), 3-29
HTSelectTag(), 3-30
HTSetPenName(), 3-30
HTUpdateToCurrentTime(), 3-31
HTZoomIn(), 3-31
HTZoomOut(), 3-32
InfoAppActive(), 3-32
InfoAppTitle(), 3-33
InfoDisk(), 3-34
InfoFile(), 3-35
InfoInTouchAppDir(), 3-35
InfoResources(), 3-36
Int(), 3-37
IOSetAccessName(), 3-38
IOSetItem(), 3-39
IsAnyAsyncFunctionBusy(), 3-40
Log(), 3-41
LogMessage(), 3-41
LogN(), 3-42
Pi(), 3-42
PlaySound(), 3-43
PrintHT(), 3-43
PrintWindow(), 3-44
RecipeDelete(), 3-46
RecipeGetMessage(), 3-46
RecipeLoad(), 3-47
RecipeSave(), 3-48
RecipeSelectNextRecipe(), 3-49
RecipeSelectPreviousRecipe(), 3-50
RecipeSelectRecipe(), 3-51
RecipeSelectUnit(), 3-52
RestartWindowViewer(), 3-53
Round(), 3-53
SendKeys(), 3-54
SetDDEAppTopic(), 3-55
SetDDEItem(), 3-55
SetPropertyD(), 3-56
SetPropertyI(), 3-56
SetPropertyM(), 3-57
Sgn(), 3-57
Show(), 3-58
ShowAt(), 3-58
ShowHome(), 3-59
ShowTopLeftAt(), 3-59
Sin(), 3-59
SPCConnect(), 3-60
SPCDisconnect(), 3-60
SPCDisplayData(), 3-61
SPCLocateScooter(), 3-61
SPCMoveScooter(), 3-61
SPCSaveSample(), 3-62
SPCSelectDataset(), 3-62
SPCSelectProduct(), 3-62
SPCSetControlLimits(), 3-63
SPCSetMeasurement(), 3-63
SPCSetProductCollected(), 3-64
SPCSetProductDisplayed(), 3-64
SPCSetRangeLimits(), 3-64
SPCSetSpecLimits(), 3-65
SQLAppendStatement(), 3-65
SQLClearParam(), 3-65
SQLClearStatement(), 3-66
SQLClearTable(), 3-66
SQLCommit(), 3-67
SQLConnect(), 3-68
SQLCreateTable(), 3-69
SQLDelete(), 3-70
SQLDisconnect(), 3-71
I-4
Index
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
SQLDropTable(), 3-71
SQLEnd(), 3-71
SQLErrorMsg(), 3-72
SQLExecute(), 3-72
SQLFirst(), 3-73
SQLGetRecord(), 3-73
SQLInsert(), 3-74
SQLInsertEnd(), 3-74
SQLInsertExecute(), 3-75
SQLInsertPrepare(), 3-75
SQLLast(), 3-76
SQLLoadStatement(), 3-76
SQLManageDSN(), 3-77
SQLNext(), 3-77
SQLNumRows(), 3-77
SQLPrepareStatement(), 3-78
SQLPrev(), 3-78
SQLRollback(), 3-79
SQLSelect(), 3-80
SQLSetParamChar(), 3-82
SQLSetParamDate(), 3-82
SQLSetParamDateTime(), 3-83
SQLSetParamDecimal(), 3-83
SQLSetParamFloat(), 3-84
SQLSetParamInt(), 3-84
SQLSetParamLong(), 3-84
SQLSetParamNull(), 3-85
SQLSetParamStatement(), 3-86
SQLSetParamTime(), 3-85
SQLTransact(), 3-86
SQLUpdate(), 3-87
SQLUpdateCurrent(), 3-88
Sqrt(), 3-88
StartApp(), 3-89
StringASCII(), 3-89
StringChar(), 3-90
StringFromIntg(), 3-90
StringFromReal(), 3-91
StringFromTime(), 3-92
StringInString(), 3-93
StringLeft(), 3-93
StringLen(), 3-94
StringLower(), 3-94
StringMid(), 3-95
StringReplace(), 3-96
StringRight(), 3-97
StringSpace(), 3-97
StringTest(), 3-98
StringToIntg(), 3-98
StringToReal(), 3-99
StringTrim(), 3-99
StringUpper(), 3-100
Tan(), 3-100
Text(), 3-101
Troubleshooting, A-1
Trunc(), 3-101
wcAddItem(), 3-102
wcClear(), 3-102
wcDeleteItem(), 3-103
wcDeleteSelection(), 3-103
wcErrorMessage(), 3-104
wcFindItem(), 3-105
wcGetItem(), 3-106
wcGetItemData(), 3-107
wcInsertItem(), 3-108
wcLoadList(), 3-108
wcLoadText(), 3-109
wcSaveList(), 3-110
wcSaveText(), 3-111
wcSetItemData(), 3-112
WWControl(), 3-113
WWExecute(), 3-114
WWPoke(), 3-115
WWRequest(), 3-116
Funkcje matematyczne
Abs(), 3-2
ArcCos(), 3-8
ArcSin(), 3-9
ArcTan(), 3-9
Cos(), 3-10
DText(), 3-13
Exp(), 3-14
Int(), 3-37
Log(), 3-41
LogN(), 3-42
Pi(), 3-42
Round(), 3-53
Sgn(), 3-57
Sin(), 3-59
Sqrt(), 3-88
Tan(), 3-100
Trunc(), 3-101
Funkcje o różnym przeznaczeniu
DialogStringEntry(), 3-11
DialogValueEntry(), 3-12
GetPropertyD(), 3-21
GetPropertyI(), 3-21
GetPropertyM(), 3-22
Hide(), 3-22
HideSelf(), 3-22
HTSelectTag(), 3-30
IOSetAccessName(), 3-38
IOSetItem(), 3-39
LogMessage(), 3-41
PlaySound(), 3-43
PrintWindow(), 3-44
SendKeys(), 3-54
SetDDEAppTopic(), 3-55
SetDDEItem(), 3-55
SetPropertyD(), 3-56
Index
I-5
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
SetPropertyI(), 3-56
SetPropertyM(), 3-57
Show(), 3-58
ShowAt(), 3-58
ShowHome(), 3-59
ShowTopLeftAt(), 3-59
Funkcje skryptowe obiektów sterujących
Error Messages, A-2
Funkcje skryptowe QuickScript. Porównać Funkcje
Funkcje systemowe
ActivateApp(), 3-3
FileCopy(), 3-14
FileDelete(), 3-15
FileMove(), 3-16
FileReadFields(), 3-17
FileReadMessage(), 3-18
FileWriteFields(), 3-19
FileWriteMessage(), 3-20
GetNodeName(), 3-20
InfoAppActive(), 3-32
InfoAppTitle(), 3-33
InfoDisk(), 3-34
InfoFile(), 3-35
InfoInTouchAppDir(), 3-35
InfoResources(), 3-36
IsAnyAsyncFunctionBusy(), 3-40
RestartWindowViewer(), 3-53
StartApp(), 3-89
Funkcje tekstowe
StringASCII(), 3-89
StringChar(), 3-90
StringFromIntg(), 3-90
StringFromReal(), 3-91
StringFromTime(), 3-92
StringInString(), 3-93
StringLeft(), 3-93
StringLen(), 3-94
StringLower(), 3-94
StringMid(), 3-95
StringReplace(), 3-96
StringRight(), 3-97
StringSpace(), 3-97
StringTest(), 3-98
StringToIntg(), 3-98
StringToReal(), 3-99
StringTrim(), 3-99
StringUpper(), 3-100
Text(), 3-101
Funkcje trendów historycznych
HTGetLastError(), 3-23
HTGetPenName(), 3-24
HTGetTimeAtScooter(), 3-24
HTGetTimeStringAtScooter(), 3-25
HTGetValue(), 3-26
HTGetValueAtScooter(), 3-27
HTGetValueAtZone(), 3-28
HTScrollLeft(), 3-29
HTScrollRight(), 3-29
HTSetPenName(), 3-30
HTUpdateToCurrentTime(), 3-31
HTZoomIn(), 3-31
HTZoomOut(), 3-32
PrintHT(), 3-43
G
GetNodeName(), 3-20
GetPropertyD(), 3-21
GetPropertyI(), 3-21
GetPropertyM(), 3-22
GOT - Funkcje
GetPropertyD(), 3-21
GetPropertyI(), 3-21
GetPropertyM(), 3-22
SetPropertyD(), 3-56
SetPropertyI(), 3-56
SetPropertyM(), 3-57
Grupa obiektów sterujących okien - Właściwości
.Caption, 2-65
.Enabled, 2-66
.ListCount, 2-67
.ListIndex, 2-68
.NewIndex, 2-69
.ReadOnly, 2-70
.TopIndex, 2-71
.Value, 2-72
.Visible, 2-73
H
Hide(), 3-22
HideSelf(), 3-22
HTGetLastError(), 3-23
HTGetPenName(), 3-24
HTGetTimeAtScooter(), 3-24
HTGetTimeStringAtScooter(), 3-25
HTGetValue(), 3-26
HTGetValueAtScooter(), 3-27
HTGetValueAtZone(), 3-28
HTScrollLeft(), 3-29
HTScrollRight(), 3-29
HTSelectTag(), 3-30
HTSetPenName(), 3-30
HTUpdateToCurrentTime(), 3-31
HTZoomIn(), 3-31
HTZoomOut(), 3-32
I
I/O
Typy zmiennych, 2-3
I-6
Index
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
InfoAppActive(), 3-32
InfoAppTitle(), 3-33
InfoDisk(), 3-34
InfoFile(), 3-35
InfoInTouchAppDir(), 3-35
InfoResources(), 3-36
Int(), 3-37
IOSetAccessName(), 3-38
IOSetItem(), 3-39
IsAnyAsyncFunctionBusy(), 3-40
K
Kody błędów dla poszczególnych baz danych
dBASE, A-18
Oracle, A-17
Sybase lub Microsoft SQL Server, A-18
Kody komunikatów o błędach, A-15
Komunikaty kodów błędów, A-4
Komunikaty o błędach
Funkcji dla alarmów rozproszonych, A-2
Funkcji skryptowych obikektów sterujących okien,
A-2
Komunikaty o błędach i ich opis, A-3
L
Log(), 3-41
LogMessage(), 3-41
LogN(), 3-42
N
Nazwy pozycji
Nazwy pozycji DDE SPC, A-5
Pozycje DDE bieżącej próbki SPC, A-7
Pozycje DDE ręcznego wprowadzania SPC, A-10
Pozycje DDE wyświetlania i sterowania, A-5
Pozycje DDE Zaznaczania SPC, A-12
O
Obiekty sterujące okien - Funkcje
wcAddItem(), 3-102
wcClear(), 3-102
wcDeleteItem(), 3-103
wcDeleteSelection(), 3-103
wcErrorMessage(), 3-104
wcFindItem(), 3-105
wcGetItem(), 3-106
wcInsertItem(), 3-108
wcLoadList(), 3-108
wcLoadText(), 3-109
wcSaveList(), 3-110
wcSaveText(), 3-111
wcSetItemData(), 3-112
P
Pi(), 3-42
PlaySound(), 3-43
Pola trendów historycznych
.ChartLength, 2-11
.ChartStart, 2-12
.DisplayMode, 2-13
.MaxRange, 2-22
.MinRange, 2-27
.Pen1-.Pen8, 2-32
.ScooterLockLeft, 2-43
.ScooterLockRight, 2-44
.ScooterPosLeft, 2-45
.ScooterPosRight, 2-46
.TagID, 2-47
.UpdateCount, 2-53
.UpdateInProgress, 2-54
.UpdateTrend, 2-55
Pola zmiennych
.Comment, 2-12, 2-34
.EngUnits, 2-14
.MaxEU, 2-21
.MaxRaw, 2-23
.MinEU, 2-24
.MinRaw, 2-28
.Name, 2-29
.OffMsg, 2-31
.OnMsg, 2-31
.Quality, 2-34
.QualityLimit, 2-36
.QualityLimitString, 2-36
.QualityStatus, 2-37
.QualitySubstatus, 2-38
.QualitySubstatusString, 2-38
.RawValue, 2-39
.Reference, 2-40
.ReferenceComplete, 2-40
.TagID, 2-47
.TimeDate, 2-48
.TimeDateString, 2-48
.TimeDateTime, 2-48
.TimeDay, 2-49
.TimeHour, 2-49
.TimeMinute, 2-49
.TimeMonth, 2-50
.TimeMsec, 2-50
.TimeSecond, 2-50
.TimeTime, 2-51
.TimeTimeString, 2-51
.TimeYear, 2-51
.Value, 2-56
Index
I-7
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
R
RecipeDelete(), 3-46
RecipeGetMessage(), 3-46
RecipeGetMessages, A-4
RecipeLoad(), 3-47
RecipeLoad, A-3
RecipeSave(), 3-48
RecipeSelectNextRecipe(), 3-49
RecipeSelectPreviousRecipe(), 3-50
RecipeSelectRecipe(), 3-51
RecipeSelectUnit(), 3-52
RestartWindowViewer(), 3-53
ResultCode, A-15
Round(), 3-53
Rozproszone alarmy - Funkcje
almAckAll(), 3-3
almAckDisplay(), 3-4
almAckRecent(), 3-4
almAckSelect(), 3-5
almDefQuery(), 3-5
almMoveWindow(), 3-6
almQuery(), 3-7
almSelectAll(), 3-7
almSelectItem(), 3-8
almShowStats(), 3-8
Rozproszone alarmy - Funkcje skryptowe
Komunikaty o błędach, A-2
Rozproszone grupy alarmowe - Właściwości
.AlarmGroup, 2-57
.NextPage, 2-57
.NumAlarms, 2-58
.PageNum, 2-58
.PrevPage, 2-59
.PriFrom, 2-59
.PriTo, 2-60
.ProvidesReg, 2-60
.ProvidesRet, 2-61
.QueryState, 2-62
.QueryType, 2-63
.Successful, 2-64
.TotalPages, 2-64
S
SendKeys(), 3-54
SetDDEAppTopic(), 3-55
SetDDEItem(), 3-55
SetPropertyD(), 3-56
SetPropertyI(), 3-56
SetPropertyM(), 3-57
Sgn(), 3-57
Show(), 3-58
ShowAt(), 3-58
ShowHome(), 3-59
ShowTopLeftAt(), 3-59
Sin(), 3-59
Skryptowe funkcje
RecipeDelete(), 3-46
RecipeGetMessage(), 3-46
RecipeLoad(), 3-47
RecipeSave(), 3-48
RecipeSelectNextRecipe(), 3-49
RecipeSelectPreviousRecipe(), 3-50
RecipeSelectRecipe(), 3-51
RecipeSelectUnit(), 3-52
SPC - Funkcje
SPCConnect(), 3-60
SPCDisconnect(), 3-60
SPCDisplayData(), 3-61
SPCLocateScooter(), 3-61
SPCMoveScooter(), 3-61
SPCSaveSample(), 3-62
SPCSelectDataset(), 3-62
SPCSelectProduct(), 3-62
SPCSetControlLimits(), 3-63
SPCSetMeasurement(), 3-63
SPCSetProductCollected(), 3-64
SPCSetProductDisplayed(), 3-64
SPCSetRangeLimits(), 3-64
SPCSetSpecLimits(), 3-65
SPC - Nazwy pozycji, A-5
SPC - Pola
.SPCStatus, 2-47
SPCConnect(), 3-60
SPCDisconnect(), 3-60
SPCDisplayData(), 3-61
SPCLocateScooter(), 3-61
SPCMoveScooter(), 3-61
SPCSaveSample(), 3-62
SPCSelectDataset(), 3-62
SPCSelectProduct(), 3-62
SPCSetControlLimits(), 3-63
SPCSetMeasurement(), 3-63
SPCSetProductCollected(), 3-64
SPCSetProductDisplayed(), 3-64
SPCSetRangeLimits(), 3-64
SPCSetSpecLimits(), 3-65
SQL - Funkcje
SQLAppendStatement(), 3-65
SQLClearParam(), 3-65
SQLClearStatement(), 3-66
SQLClearTable(), 3-66
SQLCommit(), 3-67
SQLConnect(), 3-68
SQLCreateTable(), 3-69
SQLDelete(), 3-70
SQLDisconnect(), 3-71
SQLDropTable(), 3-71
SQLEnd(), 3-71
I-8
Index
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
SQLErrorMsg(), 3-72
SQLExecute(), 3-72
SQLFirst(), 3-73
SQLGetRecord(), 3-73
SQLInsert(), 3-74
SQLInsertEnd(), 3-74
SQLInsertExecute(), 3-75
SQLInsertPrepare(), 3-75
SQLLast(), 3-76
SQLLoadStatement(), 3-76
SQLManageDSN(), 3-77
SQLNext(), 3-77
SQLNumRows(), 3-77
SQLPrepareStatement(), 3-78
SQLPrev(), 3-78
SQLRollback(), 3-79
SQLSelect(), 3-80
SQLSetParamChar(), 3-82
SQLSetParamDate(), 3-82
SQLSetParamDateTime(), 3-83
SQLSetParamDecimal(), 3-83
SQLSetParamFloat(), 3-84
SQLSetParamInt(), 3-84
SQLSetParamLong(), 3-84
SQLSetParamNull(), 3-85
SQLSetParamStatement(), 3-86
SQLSetParamTime(), 3-85
SQLTransact(), 3-86
SQLUpdate(), 3-87
SQLUpdateCurrent(), 3-88
SQLAppendStatement(), 3-65
SQLClearParam(), 3-65
SQLClearStatement(), 3-66
SQLClearTable(), 3-66
SQLCommit(), 3-67
SQLConnect(), 3-68
SQLCreateTable(), 3-69
SQLDelete(), 3-70
SQLDisconnect(), 3-71
SQLDropTable(), 3-71
SQLEnd(), 3-71
SQLErrorMsg(), 3-72
SQLErrorMsg, A-15
SQLExecute(), 3-72
SQLFirst(), 3-73
SQLGetRecord(), 3-73
SQLInsert(), 3-74
SQLInsertEnd(), 3-74
SQLInsertExecute(), 3-75
SQLInsertPrepare(), 3-75
SQLLast(), 3-76
SQLLoadStatement(), 3-76
SQLManageDSN(), 3-77
SQLNext(), 3-77
SQLNumRows(), 3-77
SQLPrepareStatement(), 3-78
SQLPrev(), 3-78
SQLRollback(), 3-79
SQLSelect(), 3-80
SQLSetParamChar(), 3-82
SQLSetParamDate(), 3-82
SQLSetParamDateTime(), 3-83
SQLSetParamDecimal(), 3-83
SQLSetParamFloat(), 3-84
SQLSetParamInt(), 3-84
SQLSetParamLong(), 3-84
SQLSetParamNull(), 3-85
SQLSetParamTime(), 3-85
SQLSetStatement(), 3-86
SQLTransact(), 3-86
SQLUpdate(), 3-87
SQLUpdateCurrent(), 3-88
Sqrt(), 3-88
StartApp(), 3-89
StringASCII(), 3-89
StringChar(), 3-90
StringFromIntg(), 3-90
StringFromReal(), 3-91
StringFromTime(), 3-92
StringInString(), 3-93
StringLeft(), 3-93
StringLen(), 3-94
StringLower(), 3-94
StringMid(), 3-95
StringReplace(), 3-96
StringRight(), 3-97
StringSpace(), 3-97
StringTest(), 3-98
StringToIntg(), 3-98
StringToReal(), 3-99
StringTrim(), 3-99
StringUpper(), 3-100
System rejestrowania danych historycznych - Zmienne
$HistoricalLogging, 1-9
Systemowe zmienne informacyjne
$Date, 1-7
$DateString, 1-8
$DateTime, 1-8
$Day, 1-8
$Hour, 1-9
$LogicRunning, 1-11
$Minute, 1-11
$Month, 1-11
$Msec, 1-12
$ObjHor, 1-12
$ObjVer, 1-13
$Second, 1-15
$StartDdeConversations, 1-15
$Time, 1-16
$TimeString, 1-16
Index
I-9
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
$Year, 1-16
T
Tabela typów zmiennych, 2-4
Tan(), 3-100
Text(), 3-101
Trunc(), 3-101
Typ zmiennej a dostępne pola, 2-4
Typy zmiennych, 2-2
I/O Discrete, 2-3
I/O Integer, 2-3
I/O Real, 2-3
Memory Discrete, 2-2
Memory Integer, 2-2
Memory Message, 2-2
Memory Real, 2-2
Różne, 2-4
Group Var, 2-4
Hist Trend, 2-4
Indirect Analog, 2-3
Indirect Discrete, 2-3
Indirect Message, 2-3
SuperTag, 2-4
Tag ID, 2-4
U
Usuwanie zakłóceń dla funkcji skryptowych receptur, A-3
Usuwanie zakłóceń dla funkcji skryptowych SQL, A-15
Usuwanie zakłóceń dla funkcji skryptowych, A-1
Usuwanie zakłóceń, A-1
Skryptowe funkcje, A-3
SQL funkcje, A-15
W
wcAddItem(), 3-102
wcClear(), 3-102
wcDeleteItem(), 3-103
wcDeleteSelection(), 3-103
wcErrorMessage(), 3-104
wcErrorMessage, A-2
wcFindItem(), 3-105
wcGetItem(), 3-106
wcGetItemData(), 3-107
wcInsertItem(), 3-108
wcLoadList(), 3-108
wcLoadText(), 3-109
wcSaveList(), 3-110
wcSaveText(), 3-111
wcSetItemData(), 3-112
Wewnętrzne zmienne systemowe. Porównać Zmienne
systemowe
WWControl(), 3-113
WWDDE Functions
WWControl(), 3-113
WWExecute(), 3-114
WWPoke(), 3-115
WWRequest(), 3-116
WWExecute(), 3-114
WWPoke(), 3-115
WWRequest(), 3-116
Z
Zabezpieczające funkcje
ChangePassword(), 3-10
Zabezpieczające zmienne systemowe
$AccessLevel, 1-2
$ChangePassword, 1-6
$ConfigureUsers, 1-7
$InactivityTimeout, 1-10
$InactivityWarning, 1-10
$Operator, 1-13
$OperatorEntered, 1-14
$PasswordEntered, 1-14
Zmienne systemowe
$AccessLevel, 1-2
$AlarmLogging, 1-3
$AlarmPrinterError, 1-3
$AlarmPrinterNoPaper, 1-4
$AlarmPrinterOffline, 1-4
$AlarmPrinterOverflow, 1-5
$ApplicationChanged, 1-5
$ApplicationVersion, 1-6
$ChangePassword, 1-6
$ConfigureUsers, 1-7
$Date, 1-7
$DateString, 1-8
$DateTime, 1-8
$Day, 1-8
$HistoricalLogging, 1-9
$Hour, 1-9
$InactivityTimeout, 1-10
$InactivityWarning, 1-10
$LogicRunning, 1-11
$Minute, 1-11
$Month, 1-11
$Msec, 1-12
$NewAlarm, 1-12
$ObjHor, 1-12
$ObjVer, 1-13
$Operator, 1-13
$OperatorEntered, 1-14
$PasswordEntered, 1-14
$Second, 1-15
I-10
Index
Astor Sp. z o.o. – Autoryzowany Dystrybutor Wonderware
$StartDdeConversations, 1-15
$System, 1-15
$Time, 1-16
$TimeString, 1-16
$Year, 1-16