Promotic

TransformValue - metoda objektu Pm

Popis:
Transformace hodnoty.
Syntaxe:
Variant TransformValue(Variant vValue, Long nType)
Parametry:
vValue(Variant) Hodnota, která bude transformovaná.
nType(Long) Typ transformace
1 - 12 -> 21 - V hodnotě typu Integer vymění 1.<->2. bajt (viz Příklad1). Jedná se o tzv. transformaci 2-bajtové hodnoty z Little-endian do Big-endian (nebo opačně).
2 - 1234 -> 4321 - V hodnotě typu Long vymění 1.<->4. bajt a 2.<->3. bajt. Jedná se o tzv. transformaci 4-bajtové hodnoty z Little-endian do Big-endian (nebo opačně).
20 - Long -> BCD - Převede hodnotu typu Long (rozsah 0-99999999) do hodnoty typu Long v BCD formátu (viz Příklad2).
21 - BCD -> Long - Převede hodnotu typu Long v BCD formátu do hodnoty typu Long.
40 - ElementArray -> Array - Převedení pole (Array), kde položky pole jsou skutečného elementárního datového typu (tzn. nejsou typu Variant) do standardního (VBScript) tvaru, kde každá položka pole je typu Variant s nastaveným podtypem. Tato konverze může být potřebná například pokud je pole získáno z komunikace nebo z funkce DLL knihovny.
41 - Array -> ElementArray - Převedení standardního VBScript pole (Array), kde každá položka pole je typu Variant, do pole, kde všechny položky jsou stejného elementárního datového typu (tzn. nejsou typu Variant). Tato konverze může být potřebná například pokud je pole zasíláno do komunikace (pro OPC viz Přenos vektoru dat) nebo do funkce DLL knihovny.
50 - Matrix -> TranspMatrix - V hodnotě typu matice (2-rozměrné pole Array) se provede vzájemná výměna řádků a sloupců matice (transponovaná matice).
100 - Simatic -> Single - Hodnotu typu Single transformuje z formátu reálného čísla PLC SIMATIC S5.
101 - Single -> Simatic - Hodnotu typu Single transformuje do formátu reálného čísla PLC SIMATIC S5.
120 - Real -> "99x9" - Hodnota se převede na řetězec, kde pro reálné čísla (Single, Double nebo Date) se použije desetinný oddělovač podle nastavení v OS Windows.
Tato a následující dvě transformace jsou vhodné například pro ukládání hodnot do textových souborů, viz Sdílení dat prostřednictvím souborů.
121 - Real -> "99.9" - Hodnota se převede na řetězec, kde pro reálné čísla (Single, Double nebo Date) se použije jako desetinný oddělovač tečka ("."), bez ohledu na nastavení v OS Windows.
122 - Real -> "99,9" - Hodnota se převede na řetězec, kde pro reálné čísla (Single, Double nebo Date) se použije jako oddělovač desetinných míst, znak čárka (","), bez ohledu na nastavení v OS Windows.
200 - Value -> Array of Boolean - Vytvoří pole (Array) hodnot typu Boolean (viz Příklad3). Každá hodnota pole bude mít hodnotu jednoho bitu parametru vValue. Parametr vValue může být:
- datový typ Byte: v poli bude 8 hodnot (opak transformace typu 221)
- datový typ Integer: v poli bude 16 hodnot (opak transformace typu 222)
- datový typ Long: v poli bude 32 hodnot (opak transformace typu 223)
- datový typ Single: v poli bude 32 hodnot (opak transformace typu 224)
- datový typ Double: v poli bude 64 hodnot (opak transformace typu 225)
201 - Value -> Array of Byte - Vytvoří pole (Array) hodnot typu Byte. Každá hodnota pole bude mít hodnotu jednoho bajtu parametru vValue. Parametr vValue může být:
- datový typ Byte: v poli bude 1 hodnota (opak transformace typu 221)
- datový typ Integer: v poli budou 2 hodnoty (opak transformace typu 222)
- datový typ Long: v poli budou 4 hodnoty (opak transformace typu 223)
- datový typ Single: v poli budou 4 hodnoty (opak transformace typu 224)
- datový typ Double: v poli bude 8 hodnot (opak transformace typu 225)
202 - Value -> Array of Integer - Vytvoří pole (Array) hodnot typu Integer. Každá hodnota pole bude mít hodnotu jednoho dvoubajtu parametru vValue. Parametr vValue může být:
- datový typ Integer: v poli bude 1 hodnota (opak transformace typu 222)
- datový typ Long: v poli budou 2 hodnoty (opak transformace typu 223)
- datový typ Single: v poli budou 2 hodnoty (opak transformace typu 224)
- datový typ Double: v poli budou 4 hodnoty (opak transformace typu 225)
203 - Value -> Array of Long - Vytvoří pole (Array) hodnot typu Long. Každá hodnota pole bude mít hodnotu jednoho čtyřbajtu parametru vValue. Parametr vValue může být:
- datový typ Long: v poli bude 1 hodnota (opak transformace typu 223)
- datový typ Single: v poli budou 1 hodnota (opak transformace typu 224)
- datový typ Double: v poli budou 2 hodnoty (opak transformace typu 225)
221 - Array -> Byte - Vytvoří hodnotu typu Byte. Parametr vValue může být:
- Array: 8 hodnot typu Boolean (opak transformace typu 200)
- Array: 1 hodnota typu Byte (opak transformace typu 201)
222 - Array -> Integer - Vytvoří hodnotu typu Integer (viz Příklad3). Parametr vValue může být:
- Array: 16 hodnot typu Boolean (opak transformace typu 200)
- Array: 2 hodnot typu Byte (opak transformace typu 201)
- Array: 1 hodnota typu Integer (opak transformace typu 202)
223 - Array -> Long - Vytvoří hodnotu typu Long. Parametr vValue může být:
- Array: 32 hodnot typu Boolean (opak transformace typu 200)
- Array: 4 hodnot typu Byte (opak transformace typu 201)
- Array: 2 hodnot typu Integer (opak transformace typu 202)
- Array: 1 hodnota typu Long (opak transformace typu 203)
- hodnota typu Single (opak transformace typu 224)
224 - Array -> Single - Vytvoří hodnotu typu Single. Parametr vValue může být:
- Array: 32 hodnot typu Boolean (opak transformace typu 200)
- Array: 4 hodnot typu Byte (opak transformace typu 201)
- Array: 2 hodnot typu Integer (opak transformace typu 202)
- Array: 1 hodnota typu Long (opak transformace typu 203)
- hodnota typu Long (opak transformace typu 223)
225 - Array -> Double - Vytvoří hodnotu typu Double. Parametr vValue může být:
- Array: 64 hodnot typu Boolean (opak transformace typu 200)
- Array: 8 hodnot typu Byte (opak transformace typu 201)
- Array: 4 hodnot typu Integer (opak transformace typu 202)
- Array: 2 hodnoty typu Long (opak transformace typu 203)
240 - Array -> HexaString - Vstupem je hodnota typu Array jejichž všechny položky jsou typu Byte. Výstupem je hodnota typu String s tzv. HexaString obsahem.
Příklad: Pokud vstupní hodnota typu Array obsahuje tři hodnoty typu Byte, například 1A 00 B8 (v hexadecimálním tvaru), pak výstupem bude String s obsahem 6 znaků "1A00B8".
Vhodné pokud je potřeba binární data uložit do textu.
Pro tento typ transformace je lepší použít metodu PmBuffer.GetHexaString.
241 - HexaString -> Array - Opak předchozí transformace, tzn. z hodnoty HexaString udělá hodnotu typu Array jejichž všechny položky jsou typu Byte
Pro tento typ transformace je lepší použít metodu PmBuffer.SetHexaString.
Vrácená hodnota:
Vrací transformovanou hodnotu příslušného typu.
Pokud vznikne chyba, pak metoda vrací: null pro JavaScript nebo Empty pro VBScript (lze testovat metodou Pm.IsValid).
Poznámka:
Metoda provádí různé typy transformací hodnoty, které nelze jednoduše provést pomocí funkcí ve skriptu.
Poznámka pro hodnoty v PLC SIMATIC S5: Hodnoty na tomto PLC mají odlišný vnitřní formát oproti formátu na počítači. Reálné hodnoty se převádějí typem transformace 100 (101), Celočíselné hodnoty se převádějí typem transformace 1 (2).
Poznámka pro BCD (Binary Coded Decimal) formát: každá cifra čísla v desítkové soustavě je uložena do 4 bitů. To znamená, že v typu Long je 8 cifer (rozsah 0-99999999). Tento formát se používá často v různých HW zařízeních. Konstanta ve formátu BCD se dá lehce zapsat tak, že decimální číslo se uvede prefixem pro zápis v hexadecimálním tvaru, takže konstanta 999 převedena do BCD hodnoty je &h999.

Tato metoda není funkční ve Web obrazech.
Příklad1:
Výměna bajtů v hodnotě typu Integer (2-bajtová hodnota)
JavaScriptVBScriptVyber a zkopíruj do schránky

var Val = 3;
var ValNew = Pm.TransformValue(Val, 1);
V proměnné ValNew nyní bude hodnota 768, což je 300 v hexadecimálním tvaru. To znamená, že hodnota &h0003 se transformovala na hodnotu &h0300.
Příklad2:
Převede hodnotu 99 do BCD formátu (tzn. do hodnoty 153) s testem, zda nenastala chyba.
JavaScriptVBScriptVyber a zkopíruj do schránky

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);   // Zápis téže hodnoty v podobě konstanty (v hexadecimálním tvaru).
}
Příklad3:
Převede hodnotu -2 typu Integer v proměnné Val1 na pole bitů (na pole hodnot typu Boolean) do proměnné Arr (hodnota -2 je bitově 1111111111111110). Pak z tohoto pole se vytvoří zase zpět hodnota typu Long do proměnné Val2. Pro kontrolu se podrobné informace o proměnných Arr a Val2 zapíší do položky Debug INFO systému metodou Pm.Debug.
JavaScriptVBScriptVyber a zkopíruj do schránky

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

Historie:
Pm8.02.08: Zobecnění o transformace čísla typu Double (typy transformace 200-203, 225).
Pm8.01.05: Opravená chyba: pro operace 221-224 způsobovala narůstání používané paměti.
Pm8.01.02: Nové typy transformací typu 240 a 241 pro konverzi HexaString do pole bajtů a zpět. Tyto transformace jsou určeny pro podporu komunikačního ovladače PmChar, ale mohou sloužit i k jiným účelům, např. když se požaduje vypsat binární data do hodnoty typu String (např. do textového souboru).
Pm8.00.02: Nová volba (nType=50) pro transpozici matice (výměna řádků a sloupců).
Navigace:
 
- Pm
 
- Abs
- Cos
- E
- Exp
- LN2
- PI
- Pow
- Sin
- Tan
- TransformValue
 
 
© MICROSYS, spol. s r.o.