Promotic
WikipediaLinkedInYoutubeTwitterFacebook

TransformValue - metoda objektu Pm

Popis:
Transformace hodnoty.
Syntaxe:
TransformValue(vValue As Variant, nType As Integer) As Variant
Volání:
x = Pm.TransformValue(vValue, nType)
Parametry:
vValue(Variant) Hodnota, která bude transformovaná.
nType(Integer) Typ transformace
1 - 12 -> 21 - V hodnotě typu Integer vymění 1.a 2. byte (viz Příklad1). Jedná se o tzv. transformaci 2-Byte hodnoty z LittleEndian do BigEndian (nebo opačně).
2 - 1234 -> 4321 - V hodnotě typu Long vymění 1.a 4. byte a 2. a 3. byte. Jedná se o tzv. transformaci 4-Byte hodnoty z LittleEndian do BigEndian (nebo opačně).
20 - Long -> BCD - Hodnotu typu Long (v intervalu 0-99999999) převede do BCD formátu v typu Long (viz Příklad2).
21 - BCD -> Long - Hodnotu typu Long v BCD formátu převede do 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 když 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 když 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 (dvojrozmě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" - Hodnotu 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ů. Viz také Pm.CDbl, CStr.

121 - Real -> "99.9" - Hodnotu 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" - Hodnotu 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:
- pole (Array): 8 hodnot typu Boolean (opak transformace typu 200)
- pole (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:
- pole (Array) 16 hodnot typu Boolean (opak transformace typu 200)
- pole (Array) 2 hodnot typu Byte (opak transformace typu 201)
- pole (Array) 1 hodnota typu Integer (opak transformace typu 202)
223 - Array -> Long - Binárně vytvoří hodnotu typu Long. Parametr vValue může být:
- pole (Array) 32 hodnot typu Boolean (opak transformace typu 200)
- pole (Array) 4 hodnot typu Byte (opak transformace typu 201)
- pole (Array) 2 hodnot typu Integer (opak transformace typu 202)
- pole (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:
- pole (Array) 32 hodnot typu Boolean (opak transformace typu 200)
- pole (Array) 4 hodnot typu Byte (opak transformace typu 201)
- pole (Array) 2 hodnot typu Integer (opak transformace typu 202)
- pole (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:
- pole (Array) 64 hodnot typu Boolean (opak transformace typu 200)
- pole (Array) 8 hodnot typu Byte (opak transformace typu 201)
- pole (Array) 4 hodnot typu Integer (opak transformace typu 202)
- pole (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ě 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 HexaString hodnoty udělá Array jejichž všechny položky jsou typu Byte
Vrácená hodnota:
Vrací transformovanou hodnotu příslušného typu. Chyba je indikována vrácením hodnoty typu Empty (lze testovat metodou Pm.IsValid).
Poznámka:

Metoda provádí různé typy transformací hodnoty, které nelze jednoduše provést pomocí funkcí 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ů. Tzn. že v typu Long je 8 číslic (interval 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 hexadecimální zápis, takže konstanta 999 převedena do BCD hodnoty je &h999.

 
Tato metoda prozatím není funkční pro Web Obrazy.
Příklad1:
Výměna bajtů v hodnotě typu Integer (v 2-bajtové hodnotě)
Dim Val, ValNew
Val = 3
ValNew = Pm.TransformValue(Val, 1)
V proměnné ValNew nyní bude hodnota 768, což je 300 hexadecimálně. Tzn. hodnota &h0003 se transformovala na hodnotu &h0300.
Příklad2:
Převedení hodnoty 999 do BCD formátu s otestováním, zda nenastala chyba. Vypsání téže hodnoty v podobě konstanty s využitím hexadecimálního zápisu.
Dim Val, ValNew
Val = 999
ValNew = Pm.TransformValue(Val, 20)
If Pm.IsValid(ValNew) Then
  Pm.Debug ValNew
  Pm.Debug &h999
End If
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 se z tohoto pole 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 INFO systému metodou Pm.Debug.
Dim Val1, Arr, Val2
Val1 = CInt(-2)
Arr = Pm.TransformValue(Val1, 200)
Val2 = Pm.TransformValue(Arr, 222)
Pm.Debug Arr,1
Pm.Debug Val2,1
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