Configuracion de Bus

Namespace

https://forgeiec.io/v2/bus-config

Este esquema describe la extension ForgeIEC del formato XML PLCopen para almacenar la configuracion de buses de campo dentro de archivos de proyecto .forge. Utiliza el mecanismo estandar <addData> definido por PLCopen TC6.

Resumen

La configuracion de bus define la topologia fisica de una planta: los segmentos (redes de bus) contienen dispositivos, y cada dispositivo esta vinculado a las variables de E/S del proyecto mediante un bus binding.

Proyecto .forge
  +-- Segmentos (redes de bus)
  |     +-- Dispositivos
  |           +-- Variables (via bus binding en el pool de direcciones)
  +-- Pool de direcciones (FAddressPool)
        +-- Variable: DI_1, %IX0.0, busBinding -> Maibeere
        +-- Variable: DO_1, %QX0.0, busBinding -> Maibeere

Estructura XML

La configuracion de bus se almacena como <addData> a nivel de proyecto:

<project>
  <!-- Contenido PLCopen estandar -->
  <types>...</types>
  <instances>...</instances>

  <!-- Configuracion de bus ForgeIEC -->
  <addData>
    <data name="https://forgeiec.io/v2/bus-config"
          handleUnknown="discard">
      <fi:busConfig xmlns:fi="https://forgeiec.io/v2">

        <fi:segment id="a3f7c2e1-..."
                    protocol="modbustcp"
                    name="Bus de campo Nave 1"
                    enabled="true"
                    interface="eth0"
                    bindAddress="192.168.24.100/24"
                    gateway=""
                    pollIntervalMs="0">

          <fi:device hostname="Maibeere"
                     ipAddress="192.168.24.25"
                     port="502"
                     slaveId="1"
                     anvilGroup="Maibeere"/>

          <fi:device hostname="Stachelbeere"
                     ipAddress="192.168.24.26"
                     port="502"
                     slaveId="1"
                     anvilGroup="Stachelbeere"/>

        </fi:segment>

      </fi:busConfig>
    </data>
  </addData>
</project>

Elementos

fi:busConfig

Elemento raiz. Contiene uno o mas elementos fi:segment.

AtributoRequeridoDescripcion
xmlns:fisiNamespace: https://forgeiec.io/v2

fi:segment

Un segmento de bus de campo (red fisica).

AtributoRequeridoTipoDescripcion
idsiUUIDIdentificador unico del segmento
protocolsiStringProtocolo: modbustcp, modbusrtu, ethercat, profibus
namesiStringNombre visible (libre)
enablednoBoolSegmento activo (true) o desactivado (false). Por defecto: true
interfacenoStringInterfaz de red (ej. eth0, /dev/ttyUSB0)
bindAddressnoStringIP/CIDR de la interfaz (ej. 192.168.24.100/24)
gatewaynoStringDireccion de gateway (vacio = sin gateway)
pollIntervalMsnoIntIntervalo de sondeo en milisegundos (0 = lo mas rapido posible)

fi:device

Un dispositivo dentro de un segmento.

AtributoRequeridoTipoDescripcion
hostnamesiStringNombre del dispositivo (usado como ID)
ipAddressnoStringDireccion IP (Modbus TCP)
portnoIntPuerto TCP (por defecto: 502)
slaveIdnoIntID esclavo Modbus
anvilGroupnoStringGrupo Anvil IPC para transporte zero-copy

Vinculacion Variable-Dispositivo

Las variables de E/S no se listan dentro del elemento fi:device. En su lugar, cada variable del pool de direcciones lleva un atributo busBinding que apunta al hostname del dispositivo:

FLocatedVariable
  name: "DI_1"
  address: "%IX0.0"
  anvilGroup: "Maibeere"
  busBinding:
    deviceId: "Maibeere"
    modbusAddress: 0
    count: 1

Asignacion de direcciones IEC

La direccion IEC de una variable vinculada se deriva de la topologia fisica:

Base del segmento + Offset del dispositivo + Posicion del registro
Rango de direccionesSignificadoFuente
%IX / %IW / %IDEntrada fisicaBus binding
%QX / %QW / %QDSalida fisicaBus binding
%MX / %MW / %MDMarcador (sin E/S fisica)Asignador de pool

Protocolos soportados

ProtocoloValor protocolMedioDaemon bridge
Modbus TCPmodbustcpEthernettongs-modbustcp
Modbus RTUmodbusrtuRS-485 (serie)tongs-modbusrtu
EtherCATethercatEthernet (tiempo real)tongs-ethercat
Profibus DPprofibusSerie (bus de campo)tongs-profibus

Compatibilidad

El atributo handleUnknown="discard" asegura que las herramientas PLCopen que no conocen ForgeIEC puedan ignorar la configuracion de bus sin generar errores. A su vez, ForgeIEC lee los bloques <addData> desconocidos de otros fabricantes y los preserva al guardar.


Configuracion de Bus ForgeIEC — Sin conexion, conforme PLCopen, sin redundancia.

blacksmith@forgeiec.io