3.4.2  Metody

 

OrderArcData

 

IArcQueryResult OrderArcData(ArcQuery aQuery);  

Function OrderArcData (ByVal aQuery As ArcQuery) As IArcQueryResult

 

Funkcja służy do odczytu danych archiwalnych zmiennej procesowej. Obiekt klasy ArcQuery przekazywany jako parametr aQuery określa parametry odczytu, w szczególności okres czasu i sposób agreagacji. Funkcja OrderArcData jedynie inicjuje proces odczytu danych historycznych. Zwracany obiekt interfejsu IArcQueryResult  służy do kontroli procesu pozyskania danych oraz odczytu danych wynikowych.

Przykład:

              

                C#

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

       {

          IVariable iv = aApplication.GetVariable("A004", false);

 

IArcQueryResult qr = iv.OrderArcData(new ArcQuery(DateTime.Today, DateTime.Now,

                                     "average", TimeSpan.FromMinutes(15)));

          if (qr.ResultStatus == ArcResultStatus.Processing)

   qr.Wait();

      

            

          if (qr.ResultStatus == ArcResultStatus.Error)

             aApplication.ReportMessage(EvoMessageType.Error, "OrderArcData error: " +

                                         qr.ErrorDescription);

          else

          {

              foreach (ArcVariableState v in qr.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 iv As IVariable

   iv = aApplication.GetVariable("A004", False)

 

   Dim qr As IArcQueryResult

   qr = iv.OrderArcData(New ArcQuery(Date.Today, Date.Now, _

        "average", TimeSpan.FromMinutes(15)))

            

   If (qr.ResultStatus = ArcResultStatus.Processing)

      Qr.Wait()

   End If

            

            

   If (qr.ResultStatus = ArcResultStatus.Error)

      aApplication.ReportMessage(EvoMessageType.Error, _

                       "OrderArcData error: " + qr.ErrorDescription)

   Else

      For Each v As ArcVariableState In qr.Values

         aApplication.ReportMessage(EvoMessageType.Error, _

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

      Next v

   End If

   Return True

End Function

 

 

Przekazany w wywołaniu metody OrderArcData obiekt klasy ArcQuery powoduje odczyt 15-minutowych wartości średnich z okresu od początku dnia do chwili bieżącej. Po inicjacji odczytu następuje oczekiwanie na koniec operacji poprzez wywołanie funkcji Wait obiektu IArcQueryResult, zwróconego w wyniku wykonania metody OrderArcData. Jeżeli odczyt zakończył się poprawnie, to do logu komunikatów zapisywane są wszystkie wartości archiwalne, które zostały zwrócone poprzez właściwość Values obiektu klasy IArcQueryResult.

 

 

Read

 

VariableState Read();  

 Function Read () As VariableState

 

Funkcja zwraca obiekt klasy VariableState, z którego można odczytać aktualną wartość i status zmiennej procesowej. Funkcja wymusza rzeczywisty odczyt zmiennej, wartość zmiennej pochodzi z momentu wykonania funkcji.

Czas wykonania funkcji zależy od czasu wykonania operacji odczytu wartości zmiennej ze źródła danych.

 

 

RegisterStateEvent

 

 

void RegisterStateEvent(VariableEvent aFunction);

Sub RegisterStateEvent(ByVal aFunction As  VariableEvent) 

 

Funkcja służy do zarejestrowania funkcji zwrotnej, która będzie wywoływana przy każdej zmianie wartości, statusu lub czasu kontrolowanej zmiennej. Parametr aFunction określa funkcję monitorującą stan zmiennej – musi ona być zgodna z delegatem VariableEvent.

delegate void VariableEvent(string aVariableName, VariableState aVariableState);

Delegate Sub VariableEvent(ByVal aVariableName As  String, ByVal aVariableState As  VariableState)

W momencie wywołania funkcji monitorującej przekazywane są do niej dwa parametry. Parametr  aVariableName określa nazwę zmiennej. Możliwe jest podłączenie tej samej funkcji monitorującej do wielu zmiennych, a poprzez parametr aVariableName można rozróżnić, której zmiennej wywołanie dotyczy. Parametr aVariableState przekazuje obiekt, z którego można odczytać aktualny stan zmiennej.

Do poprawnego działania funkcji monitorującej wymagane jest włączenie odświeżania zmiennej w momencie tworzenia obiektu interfejsu IVariable. Funkcję monitorującą można wyrejestrować przy pomocy metody UnregisterStateEvent.

Przykład:

            

                C#

IApplication application;

void ValueFun(string aVariableName, VariableState aVariableState)

{

// kod funkcji zwrotnej

   application.ReportMessage(EvoMessageType.Info, aVariableName + " = " +

                             aVariableState.FormattedValue);

            

}

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

   application = aApplication;

   IVariable iv = aApplication.GetVariable("varTest", true);

   iv.RegisterStateEvent(ValueFun);

   return false;
}

      

               

 

 VB

Dim application As IApplication

Sub ValueFun(aVariableName As String, aVariableState As VariableState)

   ' kod funkcji zwrotnej

   application.ReportMessage(EvoMessageType.Info, aVariableName & _

" = " & aVariableState.FormattedValue)

End Sub

      

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

IApplication) As Boolean Implements Initialize

      

   application = aApplication  

   Dim iv As IVariable

   iv = application.GetVariable("varTest", True)

   iv.RegisterStateEvent(AddressOf ValueFun)

   Return False

 

End Function

 

 

Powyższy kod tworzy obiekt IVariable dla zmiennej  varTest z włączonym odświeżaniem zmiennej. Następnie rejestrowana jest funkcja monitorująca ValueFun, która przy każdej zmienie stanu zmiennej zapisuje w logu komunikatów informację złożoną z nazwy zmiennej i jej aktualnej wartości.

 

 

SetVariableBits

 

bool SetVariableBits(long aValue, long aMask);

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

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

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

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

Function SetVariableBits(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 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.

 

 

SetVariableBitsSync

 

IVariableControlResultSetVariableBitsSync(long aValue, long aMask, StatusOpc aStatus, DateTime aTimeStamp);

Function SetVariableBitsSync(ByVal aValue As  Long, ByVal aMask As  Long, ByVal aStatus As  Askom.Ascent.StatusOpc, ByVal aTimeStamp As Date) As IVariableControlResult

 

Funkcja powoduje wysterowanie zmiennej procesowej 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.

Parametr aStatus ustawia nowy status zmiennej, a parametr aTimeStamp nowy stempel czasu zmiennej.

Funkcja pozwala na kontrolę rzeczywistego wykonania sterowania. Poza tym działa identycznie jak metoda SetVariableBits.

Funkcja zwraca referencje do obiektu klasy IVariableControlResult. Obiekt ten służy do kontroli procesu wykonania operacji.

Przykład zastosowania znajduje się w opisie metody SetVariableValueSync.

 

 

SetVariableValue

 

 

bool SetVariableValue(object aValue);

bool SetVariableValue(object aValue, StatusOpc aStatus);

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

Function SetVariableValue(ByVal aValue As  Object) As Boolean 

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

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

 

 

Funkcja powoduje wysterowanie zmiennej procesowej 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.

 

 

SetVariableValueSync

 

IVariableControlResultSetVariableValueSync(object aValue, StatusOpc aStatus, DateTime aTimeStamp );

Function SetVariableValueSync(ByVal aValue As  Object, ByVal aStatus As  Askom.Ascent.StatusOpc, ByVal aTimeStamp As Date) As IVariableControlResult

 

 

Funkcja powoduje wysterowanie zmiennej procesowej na wartość podaną w parametrze AValue.

Parametr aStatus ustawia nowy status zmiennej, a parametr aTimeStamp nowy stempel czasu zmiennej.

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 pozwala na kontrolę rzeczywistego wykonania sterowania. Poza tym działa identycznie jak metoda SetVariableValue.

Funkcja zwraca referencje do obiektu klasy IVariableControlResult. Obiekt ten służy do kontroli procesu wykonania operacji.

Przykład:

          

             C#

       IVariable v = aApplication.GetVariable("var1", true);

...

       IVariableControlResult r = v.SetVariableValueSync(100, Askom.Ascent.StatusOpc.Good,

 DateTime.Now );

       r.Wait();

       if (r.ControlStatus == VariableControlStatus.Error)

       {

          aApplication.ReportMessage(EvoMessageType.Error, "Write failed: " + r.ErrorMsg);

       }

       else

       {

          // write successful

       }

     VB

       Dim v As IVariable = aApplication.GetVariable("m1_czas", True)

       ...

       Dim r As IVariableControlResult = v.SetVariableValueSync(100,

 Askom.Ascent.StatusOpc.Good, DateTime.Now)

       r.Wait()

       If (r.ControlStatus = VariableControlStatus.Error)

              aApplication.ReportMessage(EvoMessageType.Error, "Write failed: " + r.ErrorMsg)

       Else

             ‘ write successful

       End If

 

ToggleBits

 

 

bool ToggleBits(long aMask);

bool SetVariableToggleBits(long aMask, StatusOpc aStatus);

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

Function ToggleBits(ByVal aMask As  Long) As Boolean 

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

Function ToggleBits(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 na 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.

 

 

ToggleBitsSync

 

 

IVariableControlResultToggleBitsSync(long aMask, StatusOpc aStatus, DateTime aTimeStamp);

Function ToggleBitsSync(ByVal aMask As  Long, ByVal aStatus As  Askom.Ascent.StatusOpc, ByVal aTimeStamp As Date) As IVariableControlResult

 

Funkcja powoduje zmianę wartości wybranych bitów zmiennej procesowej na 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.

Parametr aStatus ustawia nowy status zmiennej, a parametr aTimeStamp nowy stempel czasu zmiennej.

Funkcja pozwala na kontrolę rzeczywistego wykonania sterowania. Poza tym działa identycznie jak metoda ToggleBits.

Funkcja zwraca referencje do obiektu klasy IVariableControlResult. Obiekt ten służy do kontroli procesu wykonania operacji.

Przykład zastosowania znajduje się w opisie metody SetVariableValueSync.

 

 

UnregisterStateEvent

 

void UnregisterStateEvent();

Sub UnregisterStateEvent() 

 

Wyrejestrowanie funkcji monitorującej wartości zmiennej, która została wcześniej zarejestrowana przy pomocy funkcji RegisterStateEvent.

 

 

VariableAttribute

 

object VariableAttribute(string aAttributeName);

Function VariableAttribute (ByVal aAttributeName As  String) As Object 
 

Funkcja zwraca definicję atrybutu określonego parametrem aAttributeName.