Configurar Cimplicity para comunicar con PLC Modbus. 

En nuestro caso, las pruebas de comunicaciones se realizaron con el simulador ModSim y también con un PLC de GE PACSystems RX3i CP305. 

Primero configuramos Cimplicity, debemos agregar el protocolo al proyecto 

Crear el puerto: 


Configurarlo. 



Crear un dispositivo (“Device”)


Configuración: 

En el caso que el Model Type “STAT_PLC” no está disponible, hay que abrir un Command Prompt de Windows (en caso contrario, podemos saltar a la descripción de la pestaña “Modbus TCP/IP”, dentro de este mismo apartado)

Desde el command prompt, hemos de acceder al subdirectorio “master” y ejecutar el siguiente comando:

Idtpop model

Esto nos exportará el contenido del archivo de configuración “model” a un formato de texto plano editable. 
Abriremos el nuevo archivo de texto plano “model.idt” con el notepad y añadiremos la siguiente línea:

MB_TCPIP|STAT_PLC|35

Una vez guardado, re-importamos esta configuración modificada en Cimplicity con el comando opuesto:

Scpop model

Con esto completado, podemos actualizar al configuración y ya deberíamos ver la opción “PLC_STAT” en el campo “model type”.


Pasamos a la pestaña “Modbus TCP/IP” para configurar la dirección del esclavo Modbus con el que deseamos comunicar.

En la dirección IP del dispositivo se colocó también una @ y el Id modbus del dispositivo (XXX.XXX.XXX.XXX@1). 
En las pruebas realizadas, tanto como si lo colocamos o no lo colocamos, la comunicación trabaja correctamente. 

En cualquier caso, se supone que para ciertos elementos será obligatorio colocarlo como en el caso de que se utilice un Gateway modbus. Normalmente el Id de dispositivo es el 1 o el 255 pero puede variar según el dispositivo a leer. 

→ Nota: La opción “Word Reverse” puede ser necesaria o no, dependiendo del dispositivo.


Configurar el archivo master_mbtcp0.ini 

Archivo ubicado en \data de la carpeta del proyecto de la siguiente manera.

Si el archivo no existe, crearlo. 

→ Nota: el nombre del archivo corresponde al nombre del puerto en Cimplicity con la extensión *.ini, la primera línea del archivo entre corchetes se refiere al nombre del dispositivo. 

Estructura del archivo master_mbtcp0.ini :

[MODBUS_DEVICE]

UseTheseDomainSizes=1

UseCounts=0

OneCoilWrite=0

OneRegWrite=0

ConservesConn=1

ConnSecondary=0

COILS=65535

DISC INPUTS=65535

INPUT REG.=65535

HOLDING REG.=65535

GEN REF FILE1=0

GEN REF FILE2=0

GEN REF FILE3=0

GEN REF FILE4=0

GEN REF FILE5=0

GEN REF FILE6=0

GEN REF FILE7=0

GEN REF FILE8=0

GEN REF FILE9=0

GEN REF FILE10=0

DP_INPUT REG.=0

DP_HOLDING REG.=0

Este archivo marca el rango de posiciones de memoria del esclavo modbus con el que vamos a comunicar. 
Este ejemplo proporciona los valores típicos, correspondientes a un rango de posiciones de memoria relativamente amplio.


Configurar el archivo MODBUS_DEVICE_FS.INI 

Ubicado en \data de la carpeta del proyecto de la siguiente manera, si el archivo no existe, crearlo. 

→ Nota: el nombre del archivo corresponde al nombre del device en Cimplicity + _FS con la extensión .ini, la primera línea del archivo entre corchetes se refiere al nombre del dispositivo. 

Estructura del archivo MODBUS_DEVICE_FS.INI :

[MODBUS_DEVICE]

MaxDomainCount=1152

Model=35

DomainCount=18

DomainIndex0=0

DomainName0=COILS

DomainStartAddr0=1

DomainSize0=65535

DomainCaching0=1

DomainAddrType0=0

DomainIndex1=1

DomainName1=DISC INPUTS

DomainStartAddr1=1

DomainSize1=65535

DomainCaching1=1

DomainAddrType1=0

DomainIndex2=2

DomainName2=DUMMY

DomainStartAddr2=0

DomainSize2=0

DomainCaching2=1

DomainAddrType2=2

DomainIndex3=3

DomainName3=INPUT REG.

DomainStartAddr3=1

DomainSize3=65535

DomainCaching3=1

DomainAddrType3=2

DomainIndex4=4

DomainName4=HOLDING REG.

DomainStartAddr4=1

DomainSize4=65535

DomainCaching4=1

DomainAddrType4=2

DomainIndex5=5

DomainName5=DUMMY

DomainStartAddr5=0

DomainSize5=0

DomainCaching5=1

DomainAddrType5=2

DomainIndex6=6

DomainName6=GEN REF FILE1

DomainStartAddr6=0

DomainSize6=0

DomainCaching6=1

DomainAddrType6=2

DomainIndex7=7

DomainName7=GEN REF FILE2

DomainStartAddr7=0

DomainSize7=0

DomainCaching7=1

DomainAddrType7=2

DomainIndex8=8

DomainName8=GEN REF FILE3

DomainStartAddr8=0

DomainSize8=0

DomainCaching8=1

DomainAddrType8=2

DomainIndex9=9

DomainName9=GEN REF FILE4

DomainStartAddr9=0

DomainSize9=0

DomainCaching9=1

DomainAddrType9=2

DomainIndex10=10

DomainName10=GEN REF FILE5

DomainStartAddr10=0

DomainSize10=0

DomainCaching10=1

DomainAddrType10=2

DomainIndex11=11

DomainName11=GEN REF FILE6

DomainStartAddr11=0

DomainSize11=0

DomainCaching11=1

DomainAddrType11=2

DomainIndex12=12

DomainName12=GEN REF FILE7

DomainStartAddr12=0

DomainSize12=0

DomainCaching12=1

DomainAddrType12=2

DomainIndex13=13

DomainName13=GEN REF FILE8

DomainStartAddr13=0

DomainSize13=0

DomainCaching13=1

DomainAddrType13=2

DomainIndex14=14

DomainName14=GEN REF FILE9

DomainStartAddr14=0

DomainSize14=0

DomainCaching14=1

DomainAddrType14=2

DomainIndex15=15

DomainName15=GEN REF FILE10

DomainStartAddr15=0

DomainSize15=0

DomainCaching15=1

DomainAddrType15=2

DomainIndex16=16

DomainName16=DP_INPUT REG.

DomainStartAddr16=1

DomainSize16=0

DomainCaching16=1

DomainAddrType16=4

DomainIndex17=17

DomainName17=DP_HOLDING REG.

DomainStartAddr17=1

DomainSize17=0

DomainCaching17=1

DomainAddrType17=4

Crear los puntos Discretos 



Configuramos el tipo de dato en la pestaña General 

En la pestaña Device colocamos el PLC (Device ID:) del que se van a leer los datos Modbus, se configura la dirección en address: y si es necesario un offset, también se coloca el criterio con el que se desea que se actualicen los datos. 

 Nota: En este ejemplo el tag booleano que leemos es el bit 0 (offset 0) de la palabra Modbus 400004, de esto se puede deducir que el campo offset corresponde al bit a leer empezando por 0 hasta 15 de un registro (Word) modbus. 


También se puede leer un Coil Register utilizando la siguiente sintaxis en la dirección 0XXXX ó 0XXXXX dependiendo si se está direccionando a 5 dígitos o a 6 dígitos, ejemplo de direcciones: 

00001 → coil 1 direccionamiento a 5 dígitos 
000005 → coil 5 direccionamiento a 6 dígitos 

IMPORTANTE: mientras se realizaban pruebas, al activar Diagnostic Data, se vió que la comunicación con ese bit caía. → NO ACTIVAR EL DIAGNOSTIG DATA para los Point Modbus 


Esta es la pestaña de configuración si se lee un bit tipo Coil 

Crear los puntos Analógicos. 



Los datos analógicos pueden ser registros de 5 o 6 dígitos.
Las direcciones se configuran así, Holding: 4XXXX ó 4XXXXX dependiendo de si son 5 o 6 dígitos ejemplo: 

40005 → Holding 5 direccionado a 5 dígitos 

400125 → Holding 125 direccionado a 6 dígitos 

IMPORTANTE: mientras se realizaban pruebas, al activar Diagnostic Data, se vió que la comunicación con ese bit caía. → NO ACTIVAR EL DIAGNOSTIG DATA para los Point Modbus 


Configuración del Project Parameters 

Queda tal se muestra en la siguiente imagen: 

Ejemplo de las lecturas vía ModbusTCP

La siguiente imagen muestra los points comunicando en el Point  Control Panel de Cimplicity

Referencias:

Instrucciones técnicas de GE Digital que complementan esta nota técnica y añaden información adicional. 
Para acceder a algunos de estos enlaces es preciso estar registrado en el portal de GE Digital. 
Si tiene alguna dificultad accediendo, puede contactar con el personal de Opertek