Promotic

TransformValue - metoda obiektu Pm

Opis:
Transformacja wartości.
Składnia:
Variant TransformValue(Variant vValue, Long nType)
Parametry:
vValue(Variant) Wartość, która zostanie przetransformowana.
nType(Long) Typ transformacji
1 - 12 -> 21 - W wartości typu Integer zamieni 1.<->2. bajt (patrz Przykład1). Chodzi o tzw. transformację wartości 2-bajtowej z Little-endian do Big-endian (lub odwrotnie).
2 - 1234 -> 4321 - W wartości typu Long zamieni 1.<->4. bajt oraz 2.<->3. bajt. Chodzi o tzw. transformację wartości 4-bajtowej z Little-endian do Big-endian (lub odwrotnie).
20 - Long -> BCD - Przetransformuje wartość typu Long (zakres 0-99999999) do wartości typu Long w formacie BCD (patrz Przykład2).
21 - BCD -> Long - Przetransformuje wartość typu Long w formacie BCD do wartości typu Long.
40 - ElementArray -> Array - Transformacja tablicy (Array), gdzia pozycje są rzeczywistego elementarnego typu danych (tzn. nie są typu Variant) do standardowej (VBScript) postaci, gdzia każda pozycja jest typu Variant z ustawionym podtypem. Taka konwersja może okazać się konieczna na przykład jeżeli tablica została uzyskana z komunikacji lub z funkcji biblioteki DLL.
41 - Array -> ElementArray - Transformacja standardowej tablicy VBScript (Array), gdzie każda pozycja jest typu Variant, do tablicy, gdzie wszystkie pozycje są takiego samego elementárního typu danych (tzn. nie są typu Variant). Taka konwersja może być konieczna na przykład jeżeli tablica jest przesyłana do komunikacji (dla OPC patrz Transmisja wektora danych) lub do funkcji biblioteki DLL.
50 - Matrix -> TranspMatrix - W wartości typu macierz (tablica 2-wymiarowa Array) przeprowadzi zamianę wierszy na kolumny i kolumn na wiersze (macierz transponowana).
100 - Simatic -> Single - Wartość typu Single przetransformuje z formatu liczby rzeczywistej w PLC SIMATIC S5.
101 - Single -> Simatic - Wartość typu Single przetransformuje do formatu liczby rzeczywistej w PLC SIMATIC S5.
120 - Real -> "99x9" - Wartość skonwertuje na łańcuch, gdzie w przypadku liczb rzeczywistych (Single, Double lub Date) zostanie zastosowany separator dziesiętny według ustawienia w SO Windows.
Niniejsza i dwie następujące transformacje są stosowne na przykład do zapisu wartości do plików tekstowych, patrz Współdzielenie danych poprzez pliki.
121 - Real -> "99.9" - Wartość skonwertuje na łańcuch, gdzie w przypadku liczb rzeczywistych (Single, Double lub Date) zostanie zastosowany separator dziesiętny kropka ("."), bez względu na ustawienie w SO Windows.
122 - Real -> "99,9" - Wartość skonwertuje na łańcuch, gdzie w przypadku liczb rzeczywistych (Single, Double lub Date) zostanie zastosowany separator miejsc dziesiętnych, znak przecinek (","), bez względu na ustawienie w SO Windows.
200 - Value -> Array of Boolean - Wytworzy tablicę (Array) wartości typu Boolean (patrz Przykład3). Każda wartość tablicy będzie mieć wartość jednego bitu parametru vValue. Parametr vValue może być:
- typ danych Byte: w tablicy będzie 8 wartości (odwrotne do transformacji typu 221)
- typ danych Integer: w tablicy będzie 16 wartości (odwrotne do transformacji typu 222)
- typ danych Long: w tablicy będzie 32 wartości (odwrotne do transformacji typu 223)
- typ danych Single: w tablicy będzie 32 wartości (odwrotne do transformacji typu 224)
- typ danych Double: w tablicy będzie 64 wartości (odwrotne do transformacji typu 225)
201 - Value -> Array of Byte - Wytworzy tablicę (Array) wartości typu Byte. Każda wartość tablicy będzie mieć wartość jednego bajtu parametru vValue. Parametr vValue może być:
- typ danych Byte: w tablicy będzie 1 wartość (odwrotne do transformacji typu 221)
- typ danych Integer: w tablicy będzie 2 wartości (odwrotne do transformacji typu 222)
- typ danych Long: w tablicy będzie 4 wartości (odwrotne do transformacji typu 223)
- typ danych Single: w tablicy będzie 4 wartości (odwrotne do transformacji typu 224)
- typ danych Double: w tablicy będzie 8 wartości (odwrotne do transformacji typu 225)
202 - Value -> Array of Integer - Wytworzy tablicę (Array) wartości typu Integer. Każda wartość tablicy będzie mieć wartość jednego dwubajtu parametru vValue. Parametr vValue może być:
- typ danych Integer: w tablicy będzie 1 wartość (odwrotne do transformacji typu 222)
- typ danych Long: w tablicy będzie 2 wartości (odwrotne do transformacji typu 223)
- typ danych Single: w tablicy będzie 2 wartości (odwrotne do transformacji typu 224)
- typ danych Double: w tablicy będzie 4 wartości (odwrotne do transformacji typu 225)
203 - Value -> Array of Long - Wytworzy tablicę (Array) wartości typu Long. Każda wartość tablicy będzie mieć wartość jednego dwubajtu parametru vValue. Parametr vValue może być:
- typ danych Long: w tablicy będzie 1 wartość (odwrotne do transformacji typu 223)
- typ danych Single: w tablicy będzie 1 wartość (odwrotne do transformacji typu 224)
- typ danych Double: w tablicy będzie 2 wartości (odwrotne do transformacji typu 225)
221 - Array -> Byte - Wytworzy wartość typu Byte. Parametr vValue może być:
- Array: 8 wartości typu Boolean (odwrotne do transformacji typu 200)
- Array: 1 wartości typu Byte (odwrotne do transformacji typu 201)
222 - Array -> Integer - Wytworzy wartość typu Integer (patrz Przykład3). Parametr vValue może być:
- Array: 16 wartości typu Boolean (odwrotne do transformacji typu 200)
- Array: 2 wartości typu Byte (odwrotne do transformacji typu 201)
- Array: 1 wartości typu Integer (odwrotne do transformacji typu 202)
223 - Array -> Long - Wytworzy wartość typu Long. Parametr vValue może być:
- Array: 32 hodnot typu Boolean (odwrotne do transformacji typu 200)
- Array: 4 hodnot typu Byte (odwrotne do transformacji typu 201)
- Array: 2 hodnot typu Integer (odwrotne do transformacji typu 202)
- Array: 1 wartości typu Long (odwrotne do transformacji typu 203)
- wartość typu Single (odwrotne do transformacji typu 224)
224 - Array -> Single - Wytworzy wartość typu Single. Parametr vValue może być:
- Array: 32 wartości typu Boolean (odwrotne do transformacji typu 200)
- Array: 4 wartości typu Byte (odwrotne do transformacji typu 201)
- Array: 2 wartości typu Integer (odwrotne do transformacji typu 202)
- Array: 1 wartości typu Long (odwrotne do transformacji typu 203)
- wartość typu Long (odwrotne do transformacji typu 223)
225 - Array -> Double - Wytworzy wartość typu Double. Parametr vValue może być:
- Array: 64 wartości typu Boolean (odwrotne do transformacji typu 200)
- Array: 8 wartości typu Byte (odwrotne do transformacji typu 201)
- Array: 4 wartości typu Integer (odwrotne do transformacji typu 202)
- Array: 2 wartości typu Long (odwrotne do transformacji typu 203)
240 - Array -> HexaString - Wejściem jest wartość typu Array którego wszystkie pozycje są typu Byte. Wyjściem jest wartość typu String z tzw. zawartością HexaString.
Przykład: Jeżeli w wartości wejściowej typu Array występują trzy wartości typu Byte, na przykład 1A 00 B8 (w układzie szesnastkowym), wtedy wyjściem będzie String o zawartości 6 znaków "1A00B8".
Dogodne w przypadku potrzeby zapisywania danych binarnych w formie tekstowej.
Dla tego typu transformacji dogodniejszym jest zastosowanie metody PmBuffer.GetHexaString.
241 - HexaString -> Array - Odwrotność poprzedniej transformacji, tzn. z wartości HexaString wytworzy wartość typu Array którego wszystkie pozycje są typu Byte
Dla tego typu transformacji dogodniejszym jest zastosowanie metody PmBuffer.SetHexaString.
Wartość zwrotna:
Zwraca przetransformowaną wartość odpowiedniego typu.
Jeżeli wystąpi błąd, wtedy metoda zwraca: null dla JavaScript lub Empty dla VBScript (można sprawdzić przy pomocy metody Pm.IsValid).
Notatka:
Metoda wykonuje różnego rodzaju transformacje wartości, których nie można w prosty sposób wykonać przy pomocy funkcji w skrypcie.
Notatka dotycząca wartości w PLC SIMATIC S5: Wartości w tym sterowniku PLC mają odrębny format wewnętrzny w porównaniu z formatem na komputerach. Wartości rzeczywiste trzeba transformować przy pomocy transformacji typu 100 (101), Wartości całkowite trzeba transformować przy pomocy transformacji typu 1 (2).
Notatka dotycząca formatu BCD (Binary Coded Decimal): każda cyfra liczby w układzie dziesiątkowym jest zapisana do 4 bitów. To znaczy, że w Long występuje 8 cyfr (zakres 0-99999999). Format ten jest często stosowany w różnego rodzaju sprzęcie. Stała w formacie BCD można w prosty sposób zapisać tak, że liczba dziesiątkowa zostanie przedstawiona z prefiksem odpowiadającym zapisowi w układzie szesnastkowym, a więc stała 999 przetransformowana do wartości w formacie BCD jest równa &h999.

Metoda ta nie działa w Web panelach.
Przykład1:
Zamiana bajtów w wartości typu Integer (wartość 2-bajtowa)
JavaScriptVBScriptWybierz oraz skopiuj do schowka

var Val = 3;
var ValNew = Pm.TransformValue(Val, 1);
W zmiennej ValNew będzie wartość 768, 300 w układzie szesnastkowym. To znaczy, że wartość &h0003 zopstała przetransformowana na wartość &h0300.
Przykład2:
Przetransformuje wartość 99 do formatu BCD (tzn. do wartości 153) ze sprawdzeniem, czy nie doszło do błędu.
JavaScriptVBScriptWybierz oraz skopiuj do schowka

var nVal = 99;
var nBcd = Pm.TransformValue(nVal, 20);
if (Pm.IsValid(nBcd))
{
Pm.Debug("Val=" + nVal + "-> BCD=" + nBcd);   // Val=99 -> BCD=153
Pm.Debug(0x99);   // Zapis tejże wartości w formie stałej (w układzie szesnastkowym).
}
Przykład3:
Przetransformuje wartość -2 typu Integer w zmiennej Val1 na tablicę bitów (na tablicę wartości typu Boolean) do zmiennej Arr (wartość -2 jest bitowo równa 1111111111111110). Następnie z tej tablicy zostanie z powrotem wytworzona wartość typu Long do zmiennej Val2. Dla kontroli dokładne informacje o zmiennych Arr oraz Val2 zostaną wyprowadzone do pozycji Debug INFO systemu przy pomocy metody Pm.Debug.
JavaScriptVBScriptWybierz oraz skopiuj do schowka

var Val1 = CInt(-2);
var Arr = Pm.TransformValue(Val1, 200);
var Val2 = Pm.TransformValue(Arr, 222);
Pm.Debug(Arr, 1);
Pm.Debug(Val2, 1);

Historia:
Pm8.02.08: Uogólnienie transformacji liczby typu Double (typy transformacji 200-203, 225).
Pm8.01.05: Usunięty błąd: (221-224) powodowało narastanie wykorzystywanej pamięci.
Pm8.01.02: Nowe typy transformacji typu 240 oraz 241 do konwersji HexaString do tablicy bajtów i odwrotnie. Transformacje te służą do wsparcia drivera komunikacyjnego PmChar, lecz mogą zostać zastosowane także do innych celów, np. kiedy istnieje wymóg wypisania danych binarnych do wartości typu String (np. do pliku tekstowego).
Pm8.00.02: Nowa opcja (nType=50) dla transpozycji macierzy (zamiana wierszy i kolumn).
Nawigacja:
 
- Pm
 
- Abs
- Cos
- E
- Exp
- LN2
- PI
- Pow
- Sin
- Tan
- TransformValue
 
 
© MICROSYS, spol. s r.o.