ADDM: Conversión de una cadena en una dirección
El bloque de funciones ADDM convierte una dirección de destino representada como una cadena en una estructura ADDRESS. Puede utilizar la estructura ADDRESS como entrada de un bloque de funciones de comunicación.
Descripción de parámetros específicos de ADDM
Entrada/Salida |
Tipo |
Comentario |
---|---|---|
AddrTable |
ADDRESS |
Esta es la estructura de ADDRESS que debe completar el bloque de funciones. |
Entrada |
Tipo |
Comentario |
---|---|---|
Execute |
BOOL |
Ejecuta la función en el flanco ascendente. |
Addr |
STRING |
Dirección en el tipo STRING que convertir al tipo ADDRESS (consulte los detalles más adelante). |
Salida |
Tipo |
Comentario |
---|---|---|
Done |
BOOL |
Done se establece en TRUE cuando la función se lleva a cabo correctamente. NOTA: Cuando la operación se interrumpe con la entrada Abort, Done no se establece en 1 (solo Aborted). |
Error |
BOOL |
Error se establece en TRUE cuando la función se detiene al detectar un error. Cuando se ha detectado un error, CommError y OperError contienen información sobre el error detectado. |
CommError |
BYTE |
CommError contiene códigos de errores de comunicación. |
NOTA: Un flanco ascendente de la entrada Execute ejecuta la conversión y devuelve una actualización inmediata de AddrTable. Sin embargo, AddrTable retiene el último valor cuando se detecta un error (es decir, cuando la cadena Addr no es correcta).
Los bloques de funciones requieren un flanco ascendente para iniciarse. El bloque de funciones debe ver primero la entrada Execute como FALSE para detectar un flanco ascendente posterior.
|
FUNCIONAMIENTO IMPREVISTO DEL EQUIPO |
Realice siempre la primera llamada a un bloque de funciones con la entrada Execute establecida en FALSE de manera que pueda detectar un flanco ascendente posterior. |
El incumplimiento de estas instrucciones puede causar la muerte, lesiones serias o daño al equipo. |
Addr STRING para el formato de dirección ASCII
Para las direcciones ASCII, solo se solicita el número del puerto de comunicaciones:
'<communication port number>'
Por ejemplo, para enviar un mensaje definido por el usuario en la línea serie 2, utilice la cadena '2'.
En esta tabla se definen los campos en la salida ADDM para el formato de dirección ASCII:
Campo |
Tipo |
Valor |
Ejemplo |
---|---|---|---|
_Type |
BYTE |
Reservado |
No utilizado |
_CliID |
BYTE |
Reservado |
No utilizado |
Rack |
BYTE |
Número de bastidor (siempre 0) |
0 |
Module |
BYTE |
Número de módulo (siempre 0) |
0 |
Link |
<communication port number> |
2 |
|
_ProtId |
BYTE |
No utilizado |
No utilizado |
AddrLen |
BYTE |
0 |
0 |
UnitId |
BYTE |
No utilizado |
No utilizado |
AddrExt |
ADDR_EXT |
No utilizado |
No utilizado |
Addr STRING para el formato de dirección de TCP Modbus
Dirección de un esclavo estándar TCP Modbus
Para el formato de la dirección del esclavo estándar TCP Modbus, se solicitan el número de puerto de comunicaciones (3 para el puerto Ethernet incorporado) y la dirección IP de destino:
'<communication port number>{<IP address>}'
NOTA: Un esclavo estándar TCP Modbus utiliza la dirección de Modbus 255 (el valor predeterminado UnitId). Sin embargo, un dispositivo TCP Modbus puede tener un valor diferente (por ejemplo, un dispositivo TeSys tiene la dirección de Modbus 1). En este caso, añada el valor UnitId:
'<communication port number>{<IP address>}<UnitId>'
Se utiliza de forma predeterminada el puerto TCP 502. Es posible utilizar un puerto no estándar añadiendo el número de puerto solicitado a la dirección IP:
'<communication port number>{<IP address>:<port>}'
Por ejemplo, para enviar un mensaje en la dirección IP del esclavo TCP Modbus 192.168.1.2 a través del puerto TCP estándar 502, utilice esta cadena: '3{192.168.1.2}'
La función ADDM completa la entrada/salida AddrTable con estos valores:
Campo |
Tipo |
Valor |
Ejemplo |
---|---|---|---|
_Type |
BYTE |
Reservado |
No utilizado |
_CliID |
BYTE |
Reservado |
No utilizado |
Rack |
BYTE |
Número de bastidor |
0 |
Module |
BYTE |
Número de módulo |
0 |
Link |
<communication port number> |
3 |
|
_ProtId |
BYTE |
0 para Modbus |
0 |
AddrLen |
BYTE |
Longitud de UnitID + AdrExt en bytes |
7 |
UnitId |
BYTE |
Dirección Modbus (255 de forma predeterminada) |
255 |
AddrExt |
TCP_ADDR_EXT |
A |
192 |
B |
168 |
||
C |
1 |
||
D |
2 |
||
<puerto> (valor predeterminado = 502) |
502 |
Dirección de un esclavo serie Modbus a través de la pasarela Ethernet/línea serie
También es posible dirigir un esclavo Modbus a través de una pasarela Ethernet/línea serie:
La petición incluye el número de puerto de comunicaciones, la dirección IP de la pasarela (con o sin puerto TCP) y la dirección del esclavo serie Modbus (parámetro UnitId):
'<communication port number>{<IP address>}<slave address>'
Por ejemplo, para enviar un mensaje en la dirección del esclavo serie Modbus 5 a través de una pasarela Ethernet/línea serie en la dirección IP 192.168.1.2 mediante el puerto TCP estándar 502, utilice esta cadena: '3{192.168.1.2}5'
La función ADDM completa la entrada/salida AddrTable con estos valores:
Campo |
Tamaño |
Valor |
Ejemplo |
---|---|---|---|
_Type |
BYTE |
Reservado |
No utilizado |
_CliID |
BYTE |
Reservado |
No utilizado |
Rack |
BYTE |
Número de bastidor |
0 |
Module |
BYTE |
Número de módulo |
0 |
Link |
<communication port number> |
3 |
|
_ProtId |
BYTE |
0 para Modbus |
0 |
AddrLen |
BYTE |
Longitud de UnitID + AdrExt en bytes |
7 |
UnitId |
BYTE |
<Dirección de esclavo> |
5 |
AddrExt |
TCP_ADDR_EXT |
A |
192 |
B |
168 |
||
C |
1 |
||
D |
2 |
||
Número de puerto TCP (valor predeterminado = 502) |
502 |
En el siguiente ejemplo se muestra la implementación conjunta de los bloques de funciones ADDM y SINGLE_WRITE. El bloque de funciones ADDM convierte la STRING indicada '1.8' a la variable stSlave8OnSL1 de tipo ADDRESS. Si la conversión se ha realizado correctamente, se activará la entrada Execute del siguiente bloque de funciones SINGLE_WRITE.