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ón | cadena DToStr (doble x) |
Función | Convierte el valor doble x en una cadena. El número se muestra exponencial o decimal, según el tamaño. |
Cruz | StrToL, LToStr , StrToD |
Ejemplo | doble d d: = 125.56 / 37 depuración (‘Resultado:’ + dtostr (d)) |
Ltostr
Declaración | cadena LToStr (x larga, raíz larga) |
Función | Convierte 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 |
Cruz | DToStr , StrToL , StrToD |
Ejemplo | long 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ón | string StrLower (fuente de cadena) |
Función | Convierte 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. |
Cruz | StrUpper |
Ejemplo | cadena s s: = depuración ‘ABcDEfGH’ (strlower (s)) |
Strtod
Declaración | double StrToD (fuente de cadena) |
Función | Convierte la cadena designada como fuente en un número de punto flotante y devuelve el resultado como un doble. |
Cruz | Str , StrToL |
Ejemplo | doble d d: = strtod (‘- 1.7567E + 02’) |
Strtol
Declaración | long StrToL (fuente de cadena) |
Función | Convierte la cadena designada como fuente en un valor largo. |
Cruz | DToStr , LToStr , StrToD |
Ejemplo | largo l l: = strtol (‘- 1’) |
Strtolex
Declaración | long StrToLEx (fuente de cadena, raíz larga) |
Función | Convierte 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) |
Cruz | StrToL , LToStr |
Ejemplo | largo l, k l: = StrToLEx (‘0x1D7F’, 0) k: = StrToLEx (‘00011101011111111’, 2) |
StrUpper
Declaración | string StrUpper (fuente de cadena) |
Función | Convierte 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 |
Cruz | StrLower |
Ejemplo | cadena 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ón | DToF largo (doble x) |
Función | Convierte 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. |
Cruz | SetBlockNum , FToD , DToKG |
Ejemplo | bloque 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ón | DToKG largo (doble x) |
Función | Convierte el valor doble x en un número de coma flotante con el formato KG del Simatic-S5. |
Cruz | KGToD |
Ejemplo | doble d larga l d: = sin (pi) l: = dtokg (d) “SPS1: WEG”: = l |
Endian
Declaración | long Endian (long x, bool all) |
Función | Intercambia 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). |
Ejemplo | long l l: = endian («SPS1: DB100 DD1», verdadero) |
FToD
Declaración | doble FToD (largo x) |
Función | Convierte 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. |
Cruz | etBlockNum , DToF , KGToD |
Ejemplo | return FToD («SPS: IstBlock», 2, 4, falso)) |
KGToD
Declaración | doble KGToD (largo x) |
Función | Convierte un número de coma flotante x con el formato Simatic-S5 KG en un valor doble. |
Cruz | DToKG |
Ejemplo | largo l doble d l: = “SPS1: DB100 DD1”) d: = kgtod (l) |