Promotic
WikipediaLinkedInYoutubeTwitterFacebook

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. byte. 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. Tento převod 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). Tento převod 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 desetinný oddělovač, znak čárka (","), bez ohledu na nastavení v OS Windows.
200 - Value -> Array of Boolean - Binárně 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:
- typ Byte: v poli bude 8 hodnot (opak transformace typu 221)
- typ Integer: v poli bude 16 hodnot (opak transformace typu 222)
- typ Long: v poli bude 32 hodnot (opak transformace typu 223)
- typ Single: v poli bude 32 hodnot (opak transformace typu 224)
- typ Double: v poli bude 64 hodnot (opak transformace typu 225)
201 - Value -> Array of Byte - Binárně vytvoří pole (Array) hodnot typu Byte. Každá hodnota pole bude mít hodnotu jednoho bajtu parametru vValue. Parametr vValue může být:
- typ Byte: v poli bude 1 hodnota (opak transformace typu 221)
- typ Integer: v poli budou 2 hodnoty (opak transformace typu 222)
- typ Long: v poli budou 4 hodnoty (opak transformace typu 223)
- typ Single: v poli budou 4 hodnoty (opak transformace typu 224)
- typ Double: v poli bude 8 hodnot (opak transformace typu 225)
202 - Value -> Array of Integer - Binárně vytvoří pole (Array) hodnot typu Integer. Každá hodnota pole bude mít hodnotu jednoho dvoubajtu parametru vValue. Parametr vValue může být:
- typ Integer: v poli bude 1 hodnota (opak transformace typu 222)
- typ Long: v poli budou 2 hodnoty (opak transformace typu 223)
- typ Single: v poli budou 2 hodnoty (opak transformace typu 224)
- typ Double: v poli budou 4 hodnoty (opak transformace typu 225)
203 - Value -> Array of Long - Binárně 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:
- typ Long: v poli bude 1 hodnota (opak transformace typu 223)
- typ Single: v poli budou 1 hodnota (opak transformace typu 224)
- typ Double: v poli budou 2 hodnoty (opak transformace typu 225)
221 - Array -> Byte - Binárně 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 - Binárně 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 - Binárně 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 - Binárně 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 - Binárně 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 jsou ve vstupní hodnotě typu Array tři hodnoty typu Byte, například 1A 00 B8 (hexadecimálně), pak výstupem bude String s obsahem 6 znaků "1A00B8".
Vhodné pokud je potřeba binární data uložit do textu.
241 - HexaString -> Array - Opak předchozí transformace, tzn. z hodnoty HexaString udělá hodnotu typu Array jejichž všechny položky jsou typu Byte
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 PC. 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á číslice čísla v desítkové soustavě je uložena do 4 bitů. To znamená, že v typu Long je 8 číslic (rozsah 0-99999999). Tento formát se používá často v různých HW zařízeních. Konstanta v BCD formátu se dá lehce zapsat tak, že decimální číslo se uvede prefixem pro zápis hexadecimálně, 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 hexadecimálně. 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 otestováním, 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 (hexadecimálně).
}
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 ovladaču 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: Přidána 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.Tavičská 845/21 703 00 Ostrava-Vítkovice