3.1.2  Metody

 

ApplicationText

 

string ApplicationText(string aTextId);

Function ApplicationText (ByVal aTextId As  String) As String 

 

Funkcja zapewnia wsparcie dla aplikacji wielojęzycznych. Zwraca napis z puli napisów aplikacji. Zwracany jest napis o identyfikatorze podanym w parametrze aTextId w wersji językowej zgodnej z aktualnym jezykiem pracy aplikacji.

 

 

CreateThread

 

Thread CreateThread(ThreadStart aThreadFunction);

Function CreateThread (ByVal aThreadFunction As  System.Threading.ThreadStart) As System.Threading.Thread 

 

Funkcja tworzy nowy wątek wykonawczy skryptu. Parametr aThreadFunction określa funkcję, która zostanie wykonana w nowym wątku. Funkcja wątku musi być zgodna z systemowym delegatem ThreadStart. Funkcja CreateThread zwraca systemowy obiekt klasy Thread, za pośrednictwem którego można kontrolować pracę skryptu.

W skryptach Asix.Evo zalecane jest tworzenie wątków za pośrednictwem funkcji CreateThread, zamiast bezpośrednich metod  platformy .Net.

Przykład:

                C#

void ThreadFnc()

{

//

// kod wątku

//

}

public bool Initialize(string[] aParameters, IApplication aApplication)
{

   Thread t1 = aApplication.CreateThread(ThreadFnc);

          t1.Start();

   return false;
}

      

                VB

Sub ThreadFun()

'           

' kod wątku

'

End Sub

      

Public Function Initialize(ByVal aParameters() As String, ByVal aApplication As _

IApplication) As Boolean Implements IScript.Initialize

      

   Dim t1 As System.Threading.Thread

   t1 = aApplication.CreateThread(AddressOf ThreadFun)

   t1.Start()

   Return False

 

End Function

 

 

Funkcja ThreadFnc stanowi kod wątku. Wywołanie CreateThread tworzy wątek, a funkcja Start  obiektu Thread uruchamia wątek.

 

 

 

ExecuteAction

 

bool ExecuteAction(string aAction);

bool ExecuteAction(string aAction, bool aWaitForFinish);

Function ExecuteAction (ByVal aAction As  String) As Boolean 

Function ExecuteAction (ByVal aAction As  String, , ByVal aWaitForFinishRefresh As  Boolean) As Boolean 

 

 

Funkcja uruchamia akcję operatorską określoną parametrem aAction. Parametr aWaitForFinish określa czy należy oczekiwać na zakończenie wykonywania akcji operatorskiej. Wartość false lub brak parametru oznacza, że akcja operatorska zostanie wykonana asynchronicznie. Funkcja zwraca wartość false, gdy wystąpił błąd wykonania akcji.

Funkcja ExecuteAction rozszerza możliwości skryptów Asix.Evo o pełny zestaw operacji realizowanych w aplikacjach przy pomocy akcji operatorskich. Należy jednak zwrócić uwagę, że niektóre akcje wykonane w kontekście skryptu rezydentnego mogą mieć niekorzystne działanie. Na przykład, wykonanie akcji OpenWindow w przypadkowej chwili czasu może stanowić zaskoczenie dla użytkownika.

 

 

 

GetActiveAlarms

 

string[] GetActiveAlarms(string aDomain);

Function GetActiveAlarms (ByVal aDomain As  String) As String() 

 

Funkcja zwraca tablicę identyfikatorów wszystkich aktualnie aktywnych alarmów w domenie alarmowej określonej parametrem aDomain. Jeżeli nazwa domeny jest pusta, to wywołanie dotyczy domeny domyślnej (pierwszej zdefiniowanej) aplikacji.

 

 

 

GetAlarm

 

                IAlarm GetAlarm(string aAlarmName);

IAlarm GetAlarm(string aDomainName, string aAlarmName);

Function GetAlarm (ByVal aAlarmName As  String) As IAlarm 

Function GetAlarm (ByVal aDomain As  String, ByVal aAlarmName As  String) As IAlarm

 

Funkcja zwraca  referencję do obiektu realizującego interfejs IAlarm dla alarmu o identyfikatorze określonym przez parametr aAlarmName z domeny o nazwie aDomain. Wersja wywołania bez podania nazwy domeny dotyczy domeny domyślnej (pierwszej zdefiniowanej) aplikacji.

Interfejs IAlarm pozwala na uzyskanie informacji na temat definicji alarmu i jego aktualnego stanu. Pozwala też na kontrolę stanu alarmu: zgłaszanie, kończenie i potwierdzanie alarmu.

 

 

GetAlarmDomainController 

 

string[] GetAlarmDomainController(string aDomain);

Function GetAlarmDomainController (ByVal aDomain As  String) As String()

 

Funkcja zwraca nazwę stanowiska aktywnego kontrolera domenie alarmowej określonej parametrem aDomain. Jeżeli nazwa domeny jest pusta, to wywołanie dotyczy domeny domyślnej (pierwszej zdefiniowanej) aplikacji.

 

 

GetAlarmDomains 

 

string[] GetAlarmDomains();

Function GetAlarmDomains () As String() 

 

Funkcja zwraca tablicę nazw wszystkich aktywnych domen alarmowych zdefiniowanych w aplikacji.

 

 

GetAlarmDomainStationMode

 

AlarmStationMode GetAlarmDomainStationName(string aDomain);

Function GetAlarmDomainStationName (ByVal aDomain As  String) As AlarmStationMode 

 

Funkcja zwraca aktualny tryb pracy systemu alarmów w domenie alarmowej określonej parametrem aDomain. Jeżeli nazwa domeny jest pusta, to wywołanie dotyczy domeny domyślnej (pierwszej zdefiniowanej) aplikacji.

Typ wyliczeniowy AlarmStationMode może przyjmować następujące wartości: ActiveController, PasiveController, Terminal i Undetermined. Tryb  Undetermined jest trybem przejściowym, który może zostać zwrócony w stanach nieustalonych, np. w trakcie uruchamiania domeny.

 

 

GetAlarmDomainStatistics

 

AlarmDomainStatistics GetAlarmDomainStatistics(string aDomain);

Function GetAlarmDomainStatistics (ByVal aDomain As  String) As AlarmDomainStatistics

 

Funkcja zwraca obiekt klasy AlarmDomainStatistics, za pośrednictwem którego można sprawdzić szereg informacji statystycznych dotyczących aktualnego stanu domeny alarmowej określonej parametrem aDomain. Jeżeli nazwa domeny jest pusta, to wywołanie dotyczy domeny domyślnej (pierwszej zdefiniowanej) aplikacji.

 

 

 

GetAppData

 

string[] GetAppData(string aId);

Function GetAppData (ByVal aId As  String) As Object

 

Funkcja zwraca wartość wskazanej danej aplikacyjnej.

 

 

 

 

GetChannelState

 

 

ChannelState GetChannelState(string aChannelName);

Function GetChannelName (ByVal aChannelName As  String) As ChannelState

Funkcja zwraca aktualny status pracy kanału komunikacyjnego o nazwie podanej w parametrze aChannelName.

Typ wyliczeniowy ChannelState może przyjmować następujące wartości:

Correct - Kanał pracuje poprawnie

Initializing - Inicjalizacja kanału

MainChannelCommunicationError - Błąd komunikacji

MainChannelCommunicationErrorRedundantCommunication - Błąd komunikacji redundantnej

ControllerSTOP - Stan STOP sterownika

TempraryOff  - Tymczasowo wyłączony

RedundantEvoDriver - W kanale Asix.Evo jest aktywny drajwer redundantny

OtherError - Inny błąd kanału

Unknown Channel - Nieznany kanał

Undetermined - Nieokreślony stan kanału

 

 

GetDefinedAlarms

 

string[] GetDefinedAlarms(string aDomain);

Function GetDefinedAlarms (ByVal aDomain As  String) As String() 

 

Funkcja zwraca tablicę identyfikatorów wszystkich alarmów zdefiniowanych w domenie alarmowej określonej parametrem aDomain. Jeżeli nazwa domeny jest pusta, to wywołanie dotyczy domeny domyślnej (pierwszej zdefiniowanej) aplikacji.

 

 

 

GetDiagStations

 

string[] GetDiagStations();

Function GetDiagStations () As String() 

 

Funkcja zwraca listę stanowisk, dla których dostępne są dane diagnostyczne Diagnostyki centralnej.

 

 

 

GetPowerGuardMeter

 

IPowerGuardMeter GetPowerGuardMeter(string aMeterName);

Function GetPowerGuardMeter(ByVal aMeterName As  String) As IPowerGuardMeter

 

Funkcja zwraca interfejs miernika strażnika mocy o nazwie określonej parametrem aMeterName. Jeżeli miernik o danej nazwie nie istnieje, to zwraca null.

 

 

 

GetStationDiagInfo

 

StationDiagData GetStationDiagInfo(string aStation);

Function GetStationDiagInfo(ByVal aStation As  String) As StationDiagData

 

Dla danego stanowiska funkcja zwraca dane diagnostyczne zgromadzone na serwerze diagnostyki centralnej. Nazwa stanowiska może być podana jako np.: SRV1 lub TERMINAL1&192.168.1.10 lub TERMINAL1@KOMPUTER_BIURO lub TERMINAL1@RDS_SRV#1

 

 

 

 

GetTrendPatternPoints

 

 

TrendPatternPoint[] GetTrendPatternPoints(string aPatternName);

Function GetTrendPatternPoints(ByVal aPatternName As  String) As TrendPatternPoint() 

 

Funkcja zwraca tablicę punktów dla przebiegu wzorcowego o nazwie podanej w parametrze aPatternName.

Funkcja używana w skryptach, których zadaniem jest transfer przebiegu krzywej wzorcowej do sterownika.

 

 

 

GetUserInfo

 

UserInfo GetUserInfo(string aUserId);

Function GetUserInfo(ByVal aUserId As  String) As UserInfo

 

Funkcja zwraca informacje o wskazanym użytkowniku Asix.Evo.

 

 

 

 

GetVariable

 

 

IVariable GetVariable(string aVarName, bool aRefresh, bool  aWithTimeStampsEvent);

IVariable GetVariable(string aVarName, bool aRefresh);

Function GetVariable(ByVal aVarName As  String, ByVal aRefresh As  Boolean) As IVariable

Function GetVariable(ByVal aVarName As  String, ByVal aRefresh As  Boolean, ByVal aWithTimeStampsEvent As  Boolean) As IVariable

 

Funkcja zwraca  referencję do obiektu realizującego interfejs IVariable dla zmiennej o nazwie  określonej przez parametr aVarName. Parametr aRefresh określa, czy należy rozpocząć odświeżanie(okresowy odczyt) wartości zmiennej. Odświeżanie należy włączyć w przypadku monitorowania zmian wartości bieżącej zmiennej. Jeżeli skrypt będzie korzystał tylko z danych archiwalnych lub jedynie sterował wartością zmiennej, to włączenie odświeżania jest zbędne.

Parametr aWithTimeStampsEvent określa w jaki sposób wywoływana będzie funkcja monitorowania wartości zmiennych (deklarowana metodą RegisterStateEvent interfejsu IVariable). Wartość false lub brak parametru oznacza, że funkcja moniotorowania będzie wykonywana tylko wtedy, gdy zmieni się wartość lub status zmiennej. Wartość true oznacza, że kontrolowane będą także zmiany stempla czasu wartości.

Interfejs IVariable pozwala na uzyskanie informacji na temat definicji zmiennej oraz jej aktualnej wartości. Pozwala też na odczyt wartości archiwalnych oraz udostępnia metody zapisu wartości zmiennej.

 

 

 

GetVariableArcData

 

ArcVariableState[ ] GetVariableArcData(string aVarName,DateTime aStartTime, DateTime aEndTime, string aAggregate, TimeSpan aAggregateInterval);

Function GetVariableArcData(ByVal aVarName As  String,ByVal aStartTime As Date, ByVal aEndTime As Date, ByVal aAggregate As String, ByVal aAggregateInterval As System.TimeSpan) As ArcVariableState( ) 

 

Funkcja pozwala na odczyt danych archiwalnych dla zmiennej określonej przez parametr aVarName. Parametry aStartTime i aEndTime oznaczają kolejno początek i koniec okresu czasu, z jakiego dane należy odczytać. Parametr aAggregate określa nazwę zastosowanego agregatu, a parametr aAggregateInterval okres jego wyliczania.

W momencie wykonania metody działanie skryptu jest zawieszane do chwili zakończenia odczytu danych archiwalnych. Metoda zwraca tablicę punktów (obiektów ArcVariableState) odczytanego przebiegu archiwalnego. W przypadku błędy zwracane jest wartość null.

Alternatywnym sposobem odczytu danych archiwalnych jest metoda OrderArcData interfejsu IVariable.

 

Zobacz też

 

Rodzaje agregatów danych archiwalnych - patrz:  Rodzaje agregatów danych archiwalnych

 

Przykład:

C#

       public bool Initialize(string[] aParameters, IApplication aApplication)

       {

ArcVariableState[] values = aApplication.GetVariableArcData("Pomiar1",

 DateTime.Today, DateTime.Now, "average", TimeSpan.FromMinutes(15));

            

             if (values == null)

                    aApplication.ReportMessage(EvoMessageType.Error, "Read error");

             else

             {

                    foreach (ArcVariableState v in values)

aApplication.ReportMessage(EvoMessageType.Info,

v.TimeStamp.ToString() + ": " + v.Value.ToString());

             }

                

return true;

       }

 

VB

Public Function Initialize(ByVal aParameters() As String, ByVal aApplication As _

IApplication) As Boolean Implements IScript.Initialize

      

Dim values As ArcVariableState()

              values = aApplication.GetVariableArcData("Pomiar1", Date.Today, Date.Now, _

                    "average", TimeSpan.FromMinutes(15))

 

             If (values Is Nothing)

                    aApplication.ReportMessage(EvoMessageType.Error, "Read Error")

             Else

                    For Each v As ArcVariableState In values

                           aApplication.ReportMessage(EvoMessageType.Error, _

                                  v.TimeStamp.ToString() + ": " + v.Value.ToString())

                    Next v

             End If 

Return True

End Function

 

 

Wywołanie metody GetVariableArcData  powoduje odczyt 15-minutowych wartości średnich z okresu od początku dnia do chwili bieżącej. Jeżeli odczyt zakończył się poprawnie, to do logu komunikatów zapisywane są wszystkie wartości archiwalne, które zostały zwrócone w tablicy elementów klasy ArcVariableState.

 

 

 

GetVariableAttribute

 

object GetVariableAttribute(string aVarName, string aAttributeName);

Function GetVariableAttribute (ByVal aVarName As  String, ByVal aAttributeName As  String) As Object 
 

Funkcja zwraca definicję atrybutu o nazwie aAttributeName, dla zmiennej procesowej określonej parametrem aVarName.

 

 

 

GetVariableNames

 

String[] GetVariableNames(string aAttributeName, string aAttributeValue);

Function GetVariableNames(ByVal aAttributeName As  String, ByVal aAttributeValue As  String) As String()

 

Funkcja zwraca tablicę nazw wszystkich zmiennych, dla których atrybut o nazwie podanej w parametrze aAttributeName jest zgodny z wartością poodaną w parametrze aAttributeValue. W parametrze aAttributeValue można stosować znaki specjalne * i ?.

 

Przykład:

 

C#

sring[] n = aApplication.GetVariableNames("Channel", "K1");       

VB

Dim n As String() = aApplication.GetVariableNames("Channel", "K1")

 

Powyższe wywołanie zwraca tablicę nazw wszystkich zmiennych z kanału komunikacyjnego o nazwie K1.

 

 

GetVariableValue

 

VariableState GetVariableValue(string aVariableName, bool aForceRead);

Function GetVariableValue(ByVal aVariableName As  String, ByVal aForceRead As  Boolean) As VariableState

 

Funkcja zwraca obiekt klasy VariableState z bieżąca wartością zmiennej o nazwie podanej w parametrze aVariableName. Wartość false parametru aForceRead oznacza, że zwrócona wartość pochodzi z ostatniego planowego odświeżenia wartości zmiennej. Wartość true powoduje bezpośredni odczyt aktualnej wartości zmiennej w chwili wykonania funkcji.

 

 

GlobalProperty

 

object GlobalProperty(string aPropertyName);

Function GlobalProperty (ByVal aPropertyName As  String) As Object 
 

Funkcja zwraca definicję właściwości globalnej aplikacji o nazwie określonej parametrem aPropertyName.

 

 

HasRole

 

bool HasRole(string aRoleName);

Function HasRole (ByVal aRoleName As  String) As Boolean 
 

Funkcja zwraca wartość logiczną, która określa, czy aktualnie zalogowany użytkownik pełni rolę o nazwie przekazanej w parametrze aRoleName.

 

 

LoginUser

 

bool LoginUser(string aUser, string aPassword);

Function LoginUser (ByVal aUser As  String, , ByVal aPassword As  Boolean) As Boolean 

 

Funkcja powoduje zalogowanie użytkownika o identyfikatorze i haśle podanym w parametrach wywołania. Funkcja zwraca wartość true, gdy operacja zakończyła się poprawnie.

Funkcja LoginUser może być użyta w przypadku tworzenia własnych mechanizmów logowania użytkownika, także wykorzystujących mechanizmy sprzętowe.

 

 

OPCTime

 

 

DateTime OPCTime(string aOPCTimeString);

DateTime OPCTime(string aOPCTimeString, DateTime  aBaseTime);

Function OPCTime(ByVal aOPCTimeString As  String) As Date

Function OPCTime (ByVal aOPCTimeString As  String, ByVal aBaseTime As  Date) As Date

 

Funkcja zwraca chwilę czasu wyliczoną na podstawie czasu bazowego i przesunięcia określonego  wyrażeniem formatującym OPC. Czas  bazowy jest określony parametrem aBaseTime lub jest czasem aktualnym dla wywołania jednoargumentowego.

Przesunięcie przekazywane w parametrze  aOPCTimeString opisane jest rozszerzonym wyrażeniem formatującym OPC postaci:

 [NOW|SECOND|MINUTE|HOUR|DAY|WEEK|MONTH|YEAR][cykl[/przesunięcie]] [[+|-][liczba][Y|MO|W|D|H|M|S]...]

Pierwsza część wyrażenia określa początkowe przesunięcie, np. HOUR początek godziny. Klauzule  cykl i przesunięcie  pozwalają na implementacje cykli, np. HOUR8/6 pozwala na wyliczenie początku 8-godzinnej zmiany, gdzie pierwsza zmiana zaczyna się o godzinie 6. Końcowa część wyrażenia pozwala dodatkowo przesunąć czas, np. HOUR-15M , oznacza 15 minut przed początkiem godziny.

 

 

ReadVariables

 

 

VariableState() ReadVariables(params string[] aVarNames);

Function ReadVariables(ByVal ParamArray aVarNames As  String()) As VariableState()

 

Funkcja wykonuje grupowy odczyt wartości wielu zmiennych procesowych. Nazwy zmiennych podawane są tablicy przekazywanej w parametrze aVarNames. Funkcja zwraca tablicę obiektów klasy VariableState z bieżącymi wartościami zmiennych. Funkcja wykonuje rzeczywisty odczyt wartości zmiennych (w taki sam sposób jak metoda GetVariableValue z parametrem aForceRead ustawionym na true). Czas wykonania funkcji zależy od liczby zmiennych i stosowanych kanałów komunikacyjnych. Jest jednak z reguły znacznie krótszy niż dla wielokrotnego wywołania metody GetVariableValue.

 

 

 

RegisterAlarmDomainEvents

 

IAlarmEventInfo RegisterAlarmDomainEvents(string aDomain, AlarmEvent aFunction,  AlarmDomainEvents aEvent); 

 

Function RegisterAlarmDomainEvents(ByVal aDomain As  String, ByVal aFunction As  AlarmEvent, ByVal aEvent As AlarmDomainEvents) As IAlarmEventInfo 

 

Funkcja służy do zarejestrowania funkcji zwrotnej, która będzie wywoływana przy każdym zdarzeniu związanym ze zmianą stanu domeny.  Parametr aEvent  określa rodzaj zdarzeń, które należy monitorować. Typ wyliczeniowy AlarmDomainEvents przybiera następujące wartości: AlarmBegin (wykrycie początku alarmu), AlarmEnd (wykrycie końca alarmu), AlarmManagement (zmiana stanu wynikająca z działań operatora, np. potwierdzenia alarmu), DomainStart (uruchomienie pracy domeny),  DomainStop (zatrzymanie pracy domeny), All (wszystkie typy zdarzeń). Możliwe jest łączenie typów zdarzeń operatorem sumy logicznej.

 

Parametr aFunction określa funkcję monitorującą stan alarmu - musi ona być zgodna z delegatem AlarmEvent.

 

delegate void AlarmEvent(string aDomain, string aAlarm, AlarmState aAlarmState, AlarmEventType aEventType); 

 

Delegate Sub AlarmEvent(ByVal aDomain As  String, ByVal aAlarm As String, ByVal aAlarmState As  AlarmState ,ByVal aEventType As  AlarmEventType).

 

W momencie wywołania funkcji monitorującej przekazywane są do niej trzy parametry. Parametry  aDomain  i aAlarm  określają odpowiednio nazwę domeny i identyfikator alarmu, którego wywołanie funkcji zwrotnej dotyczy. Parametr aAlarmState przekazuje obiekt, z którego można odczytać aktualny stan alarmu.  Parametr aEventType  określa rodzaj zdarzenia. Typ wyliczeniowy AlarmEventType przybiera następujące wartości: AlarmBegin (wykrycie początku alarmu) , AlarmEnd (wykrycie końca alarmu), AlarmManagement (zmiana stanu wynikająca z działań operatora, np. potwierdzenia alarmu), DomainStart (uruchomienie pracy domeny),  DomainStop (zatrzymanie pracy domeny).

 

Metoda RegisterAlarmDomainEvents zwraca obiekt interfejsu IAlarmEvcentInfo. Obiekt ten udostępnia jedną metodę UnregisterStateEvent. Służy ona do wyrejestrowania funkcji monitorującej.

Przykład:

C#

IAlarmEventInfo alarmInfo;

IApplication application; 

 

public bool Initialize(string[] aParameters, IApplication aApplication)

{

application = aApplication;

 

       alarmInfo = aApplication.RegisterAlarmDomainEvents("DemoB1", AlarmFun,

                    AlarmDomainEvents.AlarmBegin | AlarmDomainEvents.AlarmEnd);

       return false;

}

      

public void FinalizeScript()

{

       if (alarmInfo != null)

             alarmInfo.UnregisterStateEvent();

}     

      

void AlarmFun(string aDoamin,string aId, AlarmState aState, AlarmEventType aType)

{

       if (aType == AlarmEventType.AlarmBegin)

              application.ReportMessage(EvoMessageType.Info,

                    "Wykryty początek alarmu " + aId + ", czas detekcji " +

                    aState.BeginDetectionTimeStamp);

       else if (aType == AlarmEventType.AlarmEnd)

             application.ReportMessage(EvoMessageType.Info,

                    "Wykryty koniec alarmu " + aId + ", czas detekcji " +

aState.EndDetectionTimeStamp);

}

 

 

 

VB

       Dim alarmInfo As IAlarmEventInfo

       Dim application As IApplication  

      

       Public Function Initialize(ByVal aParameters() As String, ByVal aApplication _

As IApplication) As Boolean Implements IScript.Initialize

      

              application = aApplication

             alarmInfo = aApplication.RegisterAlarmDomainEvents("DemoB1", _

AddressOf AlarmFun, _

                    AlarmDomainEvents.AlarmBegin Or AlarmDomainEvents.AlarmEnd)

             Return False

       End Function

 

       Public Sub FinalizeScript() Implements IScript.FinalizeScript

            

             If Not alarmInfo Is Nothing      

                    alarmInfo.UnregisterStateEvent()

             End If

 

       End Sub

      

      

       Sub AlarmFun(aDomain As String, aId As String, aState As AlarmState, _

aType As AlarmEventType)

            

             If aType = AlarmEventType.AlarmBegin

                    application.ReportMessage(EvoMessageType.Info, _

                           "Wykryty początek alarmu " + aId + ", czas detekcji " + _

aState.BeginDetectionTimeStamp)

             Else If aType = AlarmEventType.AlarmEnd

                    application.ReportMessage(EvoMessageType.Info, _

                           "Wykryty koniec alarmu " + aId + ", czas detekcji " + _

aState.EndDetectionTimeStamp)

             End If

                          

       End Sub

 

 

Powyższy kod rejestruje funkcję monitorującą w domenie DemoB1 dla zdarzeń początków i końców alarmów. Funkcja monitorująca zapisuje w logu komunikatów informację o każdym rozpoczętym i zakończonym alarmie.

 

 

 

 

 

 RegisterAppDataEvent

 

IEventInfo RegisterAppDataEvent(SimpleEvent aFunction);

Function RegisterAppDataEvent(ByVal aFunction As  SimpleEvent) As IEventInfo

 

Funkcja służy do zarejestrowania funkcji zwrotnej, która będzie wywoływana przy każdym zdarzeniu związanym ze zmianą wartości którejś z danych aplikacyjnych (AppData).

Parametr aFunction określa funkcję monitorującą stan danych aplikacyjnych - musi ona być zgodna z delegatem AppDataEvent:

 

delegate void AppDataEvent(string aAppDataId); 

 

Delegate Sub AppDataEvent(ByVal aAppDataId As  String)

 

 

 

 

RegisterTimeEvent

 

IEventInfo RegisterTimeEvent(SimpleEvent aFunction, TimeSpan aPeriod, TimeSpan aAlign);

Function RegisterTimeEvent(ByVal aFunction As  SimpleEvent, ByVal aPeriod As  System.TimeSpan, ByVal aAlign As  System.TimeSpan) As IEventInfo

 

Funkcja służy do zarejestrowania funkcji zwrotnej, która będzie cyklicznie wywoływana w określonych odstępach czasu. Parametr aFunction określa funkcję, która będzie wykonywana okresowo - musi ona być zgodna z delegatem SimpleEvent.

delegate void SimpleEvent();

Delegate Sub SimpleEvent()

Parametr aPeriod określa okres czasu z jakim funkcja zwrotna będzie wykonywana. Parametr aAlign określa wyrównanie czasu uruchomienia względem początku doby. Jeżeli parametr jest mniejszy niż zero (np. TimeSpan.FromSeconds(-1) ), to wyrównanie nie jest wykonywane. Jeżeli aAlign jest równy zero, to funkcja zwrotna będzie wywoływana co okres aPeriod, zaczynając od godziny 00:00. Jeżeli aAlign jest większy niż zero, to funkcja zwrotna będzie wywoływana co okres aPeriod, zaczynając od godziny 00:00 + aAlign.

Funkcja RegisterTimeEvent zwraca wartość, którą można użyć do wyrejestrowania funkcji zwrotnej przy pomocy metody UnregisterEvent.

Przykład:

                C#

void CallbackFun()

{

//

// kod funkcji zwrotnej

//

}

public bool Initialize(string[] aParameters, IApplication aApplication)
{

   aApplication.RegisterTimeEvent(CallbackFun, TimeSpan.FromHours(1),

                                  TimeSpan.FromMinutes(15));

   return false;
}

      

                VB

Sub CallbackFun()

'           

' kod funkcji zwrotnej

'

End Sub

      

Public Function Initialize(ByVal aParameters() As String, ByVal aApplication As _

IApplication) As Boolean Implements IScript.Initialize

      

   aApplication.RegisterTimeEvent(AddressOf CallbackFun, TimeSpan.FromHours(1),_

                                  TimeSpan.FromMinutes(15))

   Return False

 

End Function

 

Funkcja zwrotna CallbackFun będzie wykonywana co godzinę z przesunięciem 15 minut, czyli o godzinach 0:15, 1:15, 2:15 itd.

 

 

 

ReportMessage

 

void ReportMessage(EvoMessageType aType, string aText);

Sub ReportMessage (ByVal aType As  EvoMessageType, ByVal aText As  String)  

Funkcja zapisuje w aplikacyjnym logu komunikat o treści podanej w parametrze aText. Parametr aType określa ważność komunikatu. Wyliczeniowy typ EvoMessageType przyjmuje następujące wartości: Exception, Error, Warning, Info, Trace. Komunikaty typu  Trace nie są wyświetlane w okienku komunikatów, są jedynie zapisywane w pliku logu.

Poziom raportowania pracy skryptu w logu komunikatów jest w gestii projektanta skryptu. Należy jednak pamiętać o dokładnym raportowaniu wszystkich błędów, które wystąpiły w trakcie pracy. Dotyczy to szczególnie skryptów rezydentnych.

 

 

RestartScript

 

void RestartScript();

Sub RestartScript()

 

Metoda pozwala na wykonanie pełnego restart skryptu. Należy stosować wtedy, gdy własny kod kontrolny skryptu stwierdzi jego nieprawidłowe działanie wymagające restartu. Niezależnie od tego mechanizmu, w przypadku niekontrolowanego upadku skrytpu, możliwy jest jego automatyczny restart (jeżeli została ustawiona właściwość RestartIfFailed interfejsu IScriptSettings).

 

 

 

 SetAppData

 

 

void SetAppData(string aId);

Sub SetAppData (ByVal aId As  String, ByVal aData As  Object)

 

Funkcja ustawia lub zmienia wartość wskazanej danej aplikacyjnej.

 

Przykład 1:

public bool Initialize(string[] aParameters, IApplication aApplication)

{

       aApplication.SetAppData("Number_1", 12);

             

       return true;

}

 

 Przykład 2:

public bool Initialize(string[] aParameters, IApplication aApplication)

{

       DataTable dt = new DataTable();

             

       dt.Columns.Add("X", typeof(double));

       dt.Columns.Add("Y", typeof(double));

       dt.Columns.Add("Label", typeof(string));

       dt.Columns.Add("Color", typeof(string));

             

       for(int i = 0; i < 10; i++)

       {

              Color c = Color.FromArgb(mRnd.Next(255), mRnd.Next(255), mRnd.Next(255));

dt.Rows.Add(i, mRnd.Next(100), "L" + mRnd.Next(100), Askom.Ascent.StringHelper.ColorToHex(c) );

       }

             

       mApplication.SetAppData("DataTable_1", dt);

}

 

 

 

SetReturnValue

 

 

void SetReturnValue(object aData);

Sub SetReturnValue (ByVal aData As  Object)

 

Funkcja ustawia przekazany argument aData jako wartość zwracaną przez skrypt.

Przykład:

Ponizszy skrypt zwraca jako wynik wartość liczbową odczytaną z pliku tekstowego o nazwie przekazanej jako pierwszy parametr z wiersza o numerze przekazanym jako drugi argument.

 

public bool Initialize(string[] aParameters, IApplication aApplication)

       {     

              try          

              {            

                     // Nazwa pliku przekazana jako pierwszy parametr. Plik znajduje sie w katalogu głównym aplikacji

                     string path = Path.Combine(aApplication.ApplicationDirectory, aParameters[0]);

                    

                     // Numer wiersza przekazany jako drugi argument

                     int lineNo = int.Parse(aParameters[1]);

                    

                     //Odczyt linii pliku tekstowego

                     var lines = File.ReadLines(path);

                    

                     if(lines != null)

                     {

                           //Szukamy wiersza o zadanym numerze

                           int i = 0;

                           foreach(string line in lines)

                           {

                                  if(i == lineNo)

                                  {

                                         //Znaleziono wiersz - zwracamy jego wartość jako liczbę zmiennoprzecinkową

                                         double dv = double.Parse(line);

                                         aApplication.SetReturnValue(dv);

                                         return true;

                                  }                                

                                  i++;

                           }                         

                     }

                    

                     aApplication.ReportMessage(EvoMessageType.Error,

                           string.Format("W pliku {0} nie odnaleziono wiersza o numerze {1}.", aParameters[0], aParameters[1]));              

              }

              catch (Exception ex)

              {

                     aApplication.ReportMessage(EvoMessageType.Error, ex.Message);

              }

             

              return true;

       } 

 

Zobacz też: Funkcja  ScriptValue

 

 

 

 

 

SetVariableBits

 

bool SetVariableBits(string aVariableName, long aValue, long aMask);

bool SetVariableBits(string aVariableName, long aValue, long aMask, StatusOpc aStatus);

bool SetVariableBits(string aVariableName, long aValue, long aMask, StatusOpc aStatus, DateTime aTimeStamp);

Function SetVariableBits(ByVal aVariableName As String, ByVal aValue As  Long, ByVal aMask As  Long) As Boolean 

Function SetVariableBits(ByVal aVariableName As String, ByVal aValue As  Long, ByVal aMask As  Long, ByVal aStatus As  Askom.Ascent.StatusOpc) As Boolean 

Function SetVariableBits(ByVal aVariableName As String, ByVal aValue As  Long, ByVal aMask As  Long, ByVal aStatus As  Askom.Ascent.StatusOpc, ByVal aTimeStamp As Date) As Boolean 

 

Funkcja powoduje wysterowanie zmiennej procesowej o nazwie podanej w parametrze aVariableName na wartość podaną w parametrze aValue z dodatkowym maskowaniem zmienianych bitów przez parametr aMask. W pierwszej fazie wykonania odczytywana jest bieżąca wartość zmiennej, a następnie bity, którym w masce aMask odpowiada wartość 1, zmieniane są zgodnie z wartościami w parametrze aValue.

Wersja wywołania z parametrem aStatus dodatkowo ustawia nowy status zmiennej. Wersje bez parametru aStatus ustawiają zawsze status na StatusOpc.Good.

Wersja wywołania z parametrem aTimeStamp dodatkowo ustawia nowy stempel czasu zmiennej. Wersje bez parametru aTimeStamp ustawiają zawsze stempel czasu i na chwilę wykonania funkcji.

Funkcja zwraca wartość false w przypadku niepowodzenia. Ponieważ funkcja wykonywana jest w sposób asynchroniczny, to test poprawności dotyczy tylko spełnienia warunków wstępnych. W przypadku błędu komunikacji zostanie on zgłoszony w panelu komunikatów.

 

 

SetVariables

 

bool SetVariables(string[] aVarNames, object[] aValues);

bool SetVariables(string[] aVarNames, object[] aValues, StatusOpc aStatus);

bool SetVariables(string[] aVarNames, object[] aValues, StatusOpc aStatus, DateTime aTimeStamp );

Function SetVariables(ByVal aVarNames As String(), ByVal aValues As  Object()) As Boolean 

Function SetVariables(ByVal aVarNames As String(), ByVal aValues As  Object(), ByVal aStatus As  Askom.Ascent.StatusOpc) As Boolean 

Function SetVariables(ByVal aVarNames As String(), ByVal aValues As  Object(), ByVal aStatus As  Askom.Ascent.StatusOpc,ByVal aTimeStamp As Date) As Boolean

 

Funkcja powoduje wysterowanie zmiennych procesowej o nazwach podanych w tablicy aVarNames na wartości podane w tablicy aValues. Rozmiary tablic nazw i wartości muszą być identyczne. Czas wykonania sterowań przez funkcję SetVariables jest z reguły krótszy niż wykonanie kilku wywołań metody SetVariableValue.

Wersja wywołania z parametrem aStatus dodatkowo ustawia nowy status zmiennych. Wersje bez parametru aStatus ustawiają zawsze status na StatusOpc.Good.

Wersja wywołania z parametrem aTimeStamp dodatkowo ustawia nowy stempel czasu zmiennych. Wersje bez parametru aTimeStamp ustawiają zawsze stempel czasu i na chwilę wykonania funkcji.

Możłiwość ustawienia czasu i statusu zależy od typu kanału, do którego zmienna należy. W szczególności, tej funkcjonalności nie mają zazwyczaj kanały fizyczne.

Funkcja zwraca wartość false w przypadku niepowodzenia. Ponieważ funkcja wykonywana jest w sposób asynchroniczny, to test poprawności dotyczy tylko spełnienia warunków wstępnych. W przypadku błędu komunikacji zostanie on zgłoszony w panelu komunikatów.

 

 

SetVariablesSync

 

IVariableControlState[] SetVariablesSync(string[] aVarNames, object[] aValues);

IVariableControlState[]SetVariablesSync(string[] aVarNames, object[] aValues, StatusOpc aStatus);

IVariableControlState[]SetVariablesSync(string[] aVarNames, object[] aValues, StatusOpc aStatus, DateTime aTimeStamp );

Function SetVariablesSync(ByVal aVarNames As String(), ByVal aValues As  Object()) As IVariableControlState() 

Function SetVariablesSync(ByVal aVarNames As String(), ByVal aValues As  Object(), ByVal aStatus As  Askom.Ascent.StatusOpc) As IVariableControlState() 

Function SetVariablesSync(ByVal aVarNames As String(), ByVal aValues As  Object(), ByVal aStatus As  Askom.Ascent.StatusOpc, ByVal aTimeStamp As Date) As IVariableControlState() 

 

Funkcja służy do grupowego sterownia wartościami zmiennych z kontrolą rzeczywistego wykonania wszystkich sterowań. Poza tym działa identycznie jak metoda SetVariables.

Funkcja powoduje wysterowanie zmiennych procesowej o nazwach podanych w tablicy aVarNames na wartości podane w tablicy aValues. Rozmiary tablic nazw i wartości muszą być identyczne. Czas wykonania sterowań przez funkcję SetVariables jest z reguły krótszy niż wykonanie kilku wywołań metody SetVariableValue.

Wersja wywołania z parametrem aStatus dodatkowo ustawia nowy status zmiennych. Wersje bez parametru aStatus ustawiają zawsze status na StatusOpc.Good.

Wersja wywołania z parametrem aTimeStamp dodatkowo ustawia nowy stempel czasu zmiennych. Wersje bez parametru aTimeStamp ustawiają zawsze stempel czasu i na chwilę wykonania funkcji.

Możłiwość ustawienia czasu i statusu zależy od typu kanału, do którego zmienna należy. W szczególności, tej funkcjonalności nie mają zazwyczaj kanały fizyczne.

Funkcja zwraca referencje do obiektu klasy IVariableControlState. Obiekt ten może służyć do kontroli procesu wykonania operacji.

Przykład:

             C#

             string[] varNames = new string[]{"var1","var2"};

       object[] varVals = new object[]{101,102};

                   

       IVariableControlState[] rs = aApplication.SetVariablesSync(varNames, varVals);

       bool allFinished = false;

       while (!allFinished)

       {

              aApplication.Sleep(TimeSpan.FromMilliseconds(100)); // or do something

                   

             allFinished = true;

             foreach(IVariableControlState s in rs)

             {

                    if (s.ControlStatus == VariableControlStatus.Pending)

                    {

                           allFinished = false;

                           break;

                    }

             }

       }

       foreach(IVariableControlState s in rs)

       {

             if (s.ControlStatus == VariableControlStatus.Error)

                    aApplication.ReportMessage(EvoMessageType.Error,

 "Write failed: " + s.ErrorMsg);

       }     

     VB

             Dim varNames As String() = {"var1","var2"}

       Dim varVals As Object() = {101,102}

      

       Dim s As IVariableControlState

       Dim rs As IVariableControlState() = aApplication.SetVariablesSync(varNames, varVals)

      

       Dim allFinished As Boolean = False

       While Not allFinished

      

             aApplication.Sleep(TimeSpan.FromMilliseconds(100)) ' or do something

            

             allFinished = True

             For Each s In rs

                    If s.ControlStatus = VariableControlStatus.Pending Then

                           allFinished = False

                           Exit For

                    End If

             Next

                   

       End While

                   

       For Each s In rs

             If s.ControlStatus = VariableControlStatus.Error Then

                    aApplication.ReportMessage(EvoMessageType.Error, "Write failed: " + _

s.ErrorMsg)

             End If

       Next

 

 

 

SetVariableValue

 

bool SetVariableValue(string aVariableName, object aValue);

bool SetVariableValue(string aVariableName, object aValue, StatusOpc aStatus);

bool SetVariableValue(string aVariableName, object aValue, StatusOpc aStatus, DateTime aTimeStamp );

Function SetVariableValue(ByVal aVariableName As String, ByVal aValue As  Object) As Boolean 

Function SetVariableValue(ByVal aVariableName As String, ByVal aValue As  Object, ByVal aStatus As  Askom.Ascent.StatusOpc) As Boolean 

Function SetVariableValue(ByVal aVariableName As String, ByVal aValue As  Object, ByVal aStatus As  Askom.Ascent.StatusOpc, ByVal aTimeStamp As Date) As Boolean

 

Funkcja powoduje wysterowanie zmiennej procesowej o nazwie podanej w parametrze aVariableName na wartość podaną w parametrze AValue.

Wersja wywołania z parametrem aStatus dodatkowo ustawia nowy status zmiennej. Wersje bez parametru aStatus ustawiają zawsze status na StatusOpc.Good.

Wersja wywołania z parametrem aTimeStamp dodatkowo ustawia nowy stempel czasu zmiennej. Wersje bez parametru aTimeStamp ustawiają zawsze stempel czasu i na chwilę wykonania funkcji.

Możliwość ustawienia czasu i statusu zależy od typu kanału, do którego zmienna należy. W szczególności, tej funkcjonalności nie mają zazwyczaj kanały fizyczne.

Funkcja zwraca wartość false w przypadku niepowodzenia. Ponieważ funkcja wykonywana jest w sposób asynchroniczny, to test poprawności dotyczy tylko spełnienia warunków wstępnych. W przypadku błędu komunikacji zostanie on zgłoszony w panelu komunikatów.

 

 

Sleep

 

void Sleep(TimeSpan aTimeSpan);

Sub Sleep (ByVal aTimeSpan As  System.TimeSpan)  

Funkcja zawiesza działanie bieżącego wątku skryptu na okres czasu podany w parametrze aTimeSpan. Funkcję należy stosować wszędzie tam, gdzie wymagane jest odczekanie na zajście jakiegoś zdarzenia lub upłynięcie określonego odcinka czasu. W żadnym przypadku nie należy stosować aktywnej pętli testującej warunki - prowadzi to do nadmiernego obciążenia procesora).

 

 

Przykład:

                C#

       aApplication.Sleep(TimeSpan.FromSeconds(5));

                VB

       aApplication.Sleep(TimeSpan.FromSeconds(5))

               

Wywołanie zawiesza działania skryptu na 5 sekund.     

 

 

TerminateScript

 

void TerminateScript(bool aWithFinalize);

Sub TerminateScript (ByVal aWithFinalize As  Boolean)

Wywołanie funkcji powoduje zakończenie pracy skryptu. Parametr aWithFinalize określa, czy w trakcie procesu rozładowania skryptu należy wykonać metodę Finalize skryptu.

Funkcja TerminateScript jest używana tylko w szczególnych przypadkach. Skrypty interakcyjne (jednorazowe) zazwyczaj kończone są przez wyjście z funkcji Initialize z wartością zwracaną true. Skrypty rezydentne są kończone automatycznie w momencie końca pracy aplikacji.

 

 

ToggleBits

 

 

bool ToggleBits(string aVariableName, long aMask);

bool SetVariableToggleBits(string aVariableName, long aMask, StatusOpc aStatus);

bool ToggleBits(string aVariableName, long aMask, StatusOpc aStatus, DateTime aTimeStamp);

Function ToggleBits(ByVal aVariableName As String, ByVal aMask As  Long) As Boolean 

Function ToggleBits(ByVal aVariableName As String, ByVal aMask As  Long, ByVal aStatus As  Askom.Ascent.StatusOpc) As Boolean 

Function ToggleBits(ByVal aVariableName As String, ByVal aMask As  Long, ByVal aStatus As  Askom.Ascent.StatusOpc, ByVal aTimeStamp As Date) As Boolean 

 

Funkcja powoduje zmianę wartości wybranych bitów zmiennej procesowej o nazwie podanej w parametrze aVariableName na ich wartość przeciwną. W pierwszej fazie wykonania odczytywana jest bieżąca wartość zmiennej, a następnie bity, którym w parametrze aMask odpowiada wartość 1, zmieniane są na wartość przeciwną. Pozostałe bity zmiennej pozostają bez zmiany.

Wersja wywołania z parametrem aStatus dodatkowo ustawia nowy status zmiennej. Wersje bez parametru aStatus ustawiają zawsze status na StatusOpc.Good.

Wersja wywołania z parametrem aTimeStamp dodatkowo ustawia nowy stempel czasu zmiennej. Wersje bez parametru aTimeStamp ustawiają zawsze stempel czasu i na chwilę wykonania funkcji.

Funkcja zwraca wartość false w przypadku niepowodzenia. Ponieważ funkcja wykonywana jest w sposób asynchroniczny, to test poprawności dotyczy tylko spełnienia warunków wstępnych. W przypadku błędu komunikacji zostanie on zgłoszony w panelu komunikatów.

 

 

UnregisterEvent

 

void UnregisterEvent(IEventInfo aCallbackInfo);

Sub UnregisterEvent(ByVal aCallbackInfo As IEventInfo) 

Wyrejestrowanie funkcji uruchamianej czasowo, która została wcześniej zarejestrowana przy pomocy funkcji RegisterTimeEvent. Jako parametr aCallbackInfo należy przekazać wartość zwróconą w momencie rejestrowania funkcji.

 

 

WriteArcSeries

 

IArcWriteSeriesResult WriteArcSeries(string aVarName, ArcSeriesSample[] aSamples, WriteSeriesFlags aFlags, ByVal Char aArcType=”*”);

 Function WriteArcSeries(ByVal aVarName As String, ByVal aSamples As ArcSeriesSample(), ByVal aFlags As WriteSeriesFlags, Optional ByVal aArcType As String = ”*”) As IArcWriteSeriesResult  

Metoda zapisuje bezpośrednio serię danych aSamples do archiwum danego typu aArcType wskazanej zmiennej aVarName. Typ archiwum moze być podany jako: B (bazodanowe),D (dzienne),Y (roczne),M (miesieczne),X (bazodanowe X) lub * (dowolne). Maksymalnie można zapisać jednorazowo 1000 próbek.