Conversión de formato

Si una expresión aritmética usa dos operandos de diferentes tipos, el operando largo se convierte automáticamente en un valor doble. El resultado de la operación es un valor doble. Si el cálculo debe proporcionar un valor entero (largo), el operando doble o el resultado se debe convertir en un valor largo mediante la función Round. 

Existen varias conversiones de formato de / a tipos específicos de Simatic. estas conversiones de formato solo son útiles en el contexto de las operaciones de «Bloque».

Dtostr

Declaracióncadena DToStr (doble x)
FunciónConvierte el valor doble x en una cadena. El número se muestra exponencial o decimal, según el tamaño.
CruzStrToL, LToStr , StrToD
Ejemplodoble d
d: = 125.56 / 37
depuración (‘Resultado:’ + dtostr (d))

Ltostr

Declaracióncadena LToStr (x larga, raíz larga)
FunciónConvierte el valor largo x en una cadena. El parámetro radix especifica la base sobre la cual debe realizarse la conversión; los valores posibles están en el rango de 2 a 36.
Si radix es 10 yx es menor que cero, LToStr precede al resultado con un signo menos.

Para la conversión a decimal, use la base 10
CruzDToStr , StrToL , StrToD
Ejemplolong l
cadena s
l: = 1247
s: = ltostr (l, 10)
debug (‘Decimal:’ + s)
s: = ltostr (l, 16)
debug (‘Hexadecimal:’ + s)
s: = ltostr (l , 2)
depurar (‘Binario:’ + s)

StrLower

Declaraciónstring StrLower (fuente de cadena)
FunciónConvierte todas las letras mayúsculas de la cadena de origen en minúsculas y devuelve el resultado. La fuente no se cambia. Las letras de la A a la Z se convierten.
CruzStrUpper
Ejemplocadena s
s: =
depuración ‘ABcDEfGH’ (strlower (s))

Strtod

Declaracióndouble StrToD (fuente de cadena)
FunciónConvierte la cadena designada como fuente en un número de punto flotante y devuelve el resultado como un doble.
CruzStr , StrToL
Ejemplodoble d
d: = strtod (‘- 1.7567E + 02’)

Strtol

Declaraciónlong StrToL (fuente de cadena)
FunciónConvierte la cadena designada como fuente en un valor largo.
CruzDToStr , LToStr , StrToD
Ejemplolargo l
l: = strtol (‘- 1’)

Strtolex

Declaraciónlong StrToLEx (fuente de cadena, raíz larga)
FunciónConvierte un número contenido en la cadena designada por la fuente en un valor largo (con signo).
El parámetro radix especifica la base numérica asumida para el número almacenado en la cadena. Se permiten los valores 0, así como de 2 a 36. Si se especifica como raíz 0, los primeros caracteres de la cadena determinan la base numérica a utilizar:
1..9 Representación decimal
0x Representación hexadecimal
0 Representación octal
La conversión termina en el primer carácter no convertible de la cadena.
 
Rangos:
Dec: -2,147,483,648 a 2,147,483,647
Hex: -80000000 a 7FFFFFFF (¡los valores> 7FFFFFFF se convierten a 7FFFFFFF!)
 
Si un valor hexadecimal> 7FFFFFFF se va a convertir a un valor largo sin signo, esto es posible de la siguiente manera:
long n1 , n2
n1: = substr («$ Global: VarString», 0,4)
n2: = substr («$ Global: VarString», 4,4)
«$ Global: VarLong»: = (StrToLEx (n1,16) shl 16) + StrToLEx (n2,16)
CruzStrToL , LToStr
Ejemplolargo l, k
 
l: = StrToLEx (‘0x1D7F’, 0)
k: = StrToLEx (‘00011101011111111’, 2)

StrUpper

Declaraciónstring StrUpper (fuente de cadena)
FunciónConvierte todas las letras minúsculas de la cadena de origen a mayúsculas y devuelve el resultado. La fuente no se cambia. Las letras de la A a la Z se convierten
CruzStrLower
Ejemplocadena s
s: =
depuración ‘ABcDEfGH’ (strupper (s))

Conversiones de formato para tipos de datos de PLC

estas conversiones de formato solo son útiles en el contexto de las operaciones de «Bloque».

DToF

DeclaraciónDToF largo (doble x)
FunciónConvierte el valor doble x al formato de coma flotante del Simatic-S7.
El resultado de esta función no se puede procesar más en el script, pero solo se puede ingresar con SetBlockNum en un bloque de datos, que se debe escribir en un AG de tipo Simatic S7.
CruzSetBlockNum , FToD , DToKG
Ejemplobloque b
b: = NewBlock (6)
SetBlockNum (b, 0, 2, false,
Endian («Internal: InputGanz», false))
SetBlockNum (b, 2, 4, false,
DToF («Intern: InputFliess»)) » S
PS: ShouldBlock ”: = b

DToKG

DeclaraciónDToKG largo (doble x)
FunciónConvierte el valor doble x en un número de coma flotante con el formato KG del Simatic-S5.
CruzKGToD
Ejemplodoble d
larga l
d: = sin (pi)
l: = dtokg (d)
“SPS1: WEG”: = l

Endian

Declaraciónlong Endian (long x, bool all)
FunciónIntercambia bytes altos y bajos del argumento x. Si todo = verdadero, las palabras altas y bajas del argumento x también se intercambian. Esta función facilita el procesamiento de datos que se originan en otras máquinas (por ejemplo, Simatic-S5).
Ejemplolong l
l: = endian («SPS1: DB100 DD1», verdadero)

FToD

Declaracióndoble FToD (largo x)
FunciónConvierte un valor del formato de coma flotante del Simatic-S7 a un valor doble.
Solo los valores extraídos de un bloque de datos leídos de un Simatic S7 AG usando GetBlockNum son útiles para ingresar a esta función.
CruzetBlockNum , DToF , KGToD
Ejemploreturn FToD («SPS: IstBlock», 2, 4, falso))

KGToD

Declaracióndoble KGToD (largo x)
FunciónConvierte un número de coma flotante x con el formato Simatic-S5 KG en un valor doble.
CruzDToKG
Ejemplolargo l
doble d
l: = “SPS1: DB100 DD1”)
d: = kgtod (l)