ModBus Constructor Guía de incio rápido © 2006 by KurySoft. Todos los derechos reservados Web: www.kurysoft.com Fecha: 28-Nov-2006 ModBus Constructor ÍNDICE 1. INTRODUCCIÓN............................................................................................ 3 2. DESCRIPCIÓN DE DISPOSITIVOS MODBUS.............................................. 4 2.1. Coriolis Mass Flow Meter. .......................................................................... 4 2.1.1. 2.1.2. 2.1.3. 2.1.4. T1. Mass Flow Meter Holding Registers. .................................................................. 4 T2. Mass Flow Meter Coils........................................................................................ 6 T3. Mass Flow Meter Command. .............................................................................. 6 T4. Mass Flow Metter Exception Responses. ........................................................... 6 2.2. Descripción de los parámetros principales................................................. 6 2.3. Distribución de los campos de datos en la forma..................................... 12 2.4. Añadir peticiones. ..................................................................................... 13 2.5. Parámetros del simulador......................................................................... 18 2.5.1. T5. Discrete value simulation. ................................................................................. 18 2.5.2. T6. Analogous value simulation. ............................................................................. 18 3. UTILIZAR EL DISPOSITIVO MODBUS........................................................ 20 4. TÉRMINOS Y DEFINICIONES..................................................................... 22 4.1. Objetos. .................................................................................................... 22 4.2. Tipos de datos de Modbus Constructor.................................................... 22 4.2.1. Numeric types ......................................................................................................... 22 4.2.2. Discrete types ......................................................................................................... 22 4.3. Data encoding. ......................................................................................... 22 4.3.1. Long. .......................................................................................................................23 4.3.2. Float. ....................................................................................................................... 23 4.3.3. Double..................................................................................................................... 23 4.4. Reglas de aplicación de las funciones de Modbus................................... 23 4.5. Format examples...................................................................................... 24 4.5.1. 4.5.2. 4.5.3. 4.5.4. Numeric types ......................................................................................................... 24 Discrete types ......................................................................................................... 24 Default for numeric types ........................................................................................ 25 Default for discrete types ........................................................................................ 25 Guía de inicio rápido -2- ©2006 KurySoft. www.kurysoft.com ModBus Constructor 1. INTRODUCCIÓN. ¡Gracias por utilizar Modbus Constructor! Modbus Constructor fue creado para ayudar a los elaboradores, programadores y usuarios a probar y ajustar los dispositivos Modbus. Modbus Constructor permite rápidamente crear modelos para administrar datos en dispositivos MODBUS. En el mercado existen muchos programas similares, pero en ellos los datos se visualizan como columnas de números abstractos de un mismo tipo, que resultan difíciles de percibir y analizar, más aun si el dispositivo utiliza en sus registros datos de distintos tipos aleatorios. En Modbus Constructor podrá trabajar con los principales tipos de datos: “integer”, “long” (integer), “float”, “double” (float) y “byte”, para registros individuales o grupos de registros. Los tipos enteros podrán ser representados como “signed”, “unsigned”, “HEX” o “binary”. Modbus Constructor permite la representación de un mismo registro de distintas formas. Por ejemplo, si dos registros adyacentes contienen números “long”, se les podrá dar campos de datos adicionales que contengan registros de “HEX” o “unsigned integer”. Los campos de datos correspondientes a los elementos de datos (registros o elementos discretos) podrán ser ordenados en el proyecto a su gusto. Puede especificar el color, tamaño, tipo de letra o anotación para cada campo. Los elementos discretos que ocupan áreas de dirección continuas pueden compartir un campo, así son más fáciles de percibir y ahorran espacio. Modbus Constructor permite crear para cada campo de datos del registro transformación linear, lo que, a su vez, permite convertir las unidades internas en unidades convencionales o de cualquier otro sistema. Por ejemplo, si el registro contiene valores de presión en miliamperios, en otras palabras, el equipo recibe la señal de salida del sensor de presión en valores de corriente, se puede representar este valor en kgf/cm2 o lb/pulg2. Modbus Constructor permite realizar peticiones automáticas para todas las funciones compatibles (01, 02, 03, 04, 05, 06, 15, 16, 22, 23), Que serán realizadas en concordancia con el período individual dado para cada petición. Es posible determinar las peticiones que se realizarán por voluntad del usuario con ayuda del menú o diálogos. Es cómodo para establecer los comandos de control, cambiar los parámetros y para realizar peticiones de prueba. El proyecto se puede utilizar para cuestionar el dispositivo en el modo “Master”, y para simular el dispositivo en el modo “Slave”. Además, en el modo “Slave” es posible establecer cambios de datos según cualquier regla determinada. Modbus Constructor permite añadir al proyecto inscripciones, marcos o ilustraciones. Modbus Constructor incluye el programa utilitario Modbus Reader, que utiliza el modelo creado con ayuda de Modbus Constructor para trabajar con el dispositivo. Modbus Reader es un freeware. Si usted ha creado un proyecto para algún dispositivo, sus clientes no tendrán que comprar Modbus Constructor – será suficiente descargar el freeware Modbus Reader. Modbus Reader permite trabajar con varios proyectos al mismo tiempo, es decir, cuestionar o simular varios dispositivos utilizando uno o varios puertos de comunicación. Además de las peticiones determinadas en el proyecto, es posible modificar elementos de datos del dispositivo, con solo hacer clic en el campo de datos asociado, tanto en el modo “Master” (mandando la petición adecuada), como en el modo “Slave”. Guía de inicio rápido -3- ©2006 KurySoft. www.kurysoft.com ModBus Constructor 2. DESCRIPCIÓN DE DISPOSITIVOS MODBUS. En este capítulo, paso por paso, aprenderá ha crear proyectos con el dispositivo “Coriolis Mass Flow Meter” (Contador de flujo másico “Coriolis”) como ejemplo. describir registros “Holding” y “Coils” de este dispositivos transformar datos en unidades estándares utilizar formateo de datos colocar campos de datos definir las peticiones (comandos) automáticas y controladas desde el menú especifica los parámetros para el simulador en el modo “Slave” 2.1. Coriolis Mass Flow Meter. Veamos la descripción del dispositivo. Este equipo mide la masa de líquidos o gases pasada por él. Funciona tanto en una como en otra dirección. Si el flujo pasa en dirección correcta, el conteo incrementa, si pasa en dirección inversa el conteo se realiza hacia atrás, y puede llegar a valores negativos. Además, puede funcionar como dosímetro. Está equipado con dos salidas discretas (colectores abiertos) para controlar la válvula o el motor en ambos sentidos de flujo. La porción la indica el usuario. Si el valor de la porción indicada es positivo, se activa el flujo en dirección correcta, si el valor es negativo – en dirección inversa. El dispositivo utiliza la interfaz RS-485, protocolo Modbus RTU. Inicie Modbus Constructor: Start ⇒Programs ⇒ModbusConstructor⇒MBConstructor.exe Cree un nuevo proyecto: File⇒New Guarde el proyecto en un archivo nombrado “Coriolis.mbc”: File⇒Save as… Analicemos el mecanismo del protocolo de intercambio Modbus para este contador de flujo. La tabla Т1 representa la descripción de los registros del contador de flujo. 2.1.1. T1. Mass Flow Meter Holding Registers. Función Dirección (decimal) Tipos de datos Tipo de dispositivo 0000 unsigned integer Read-only Versión de memoria fija 0001 unsigned integer Read-only Dirección Modbus 0002 unsigned integer Instalación de fábrica 1 unsigned integer 4800, 9600 o 19200 baudios Instalación de fábrica 9600 Al escribir cualquier valor distinto a 4800, 9600 o 19200 obtiene el valor 9600 Velocidad de transmisión 0003 Notas Paridad 0004 byte (MSB) 0-sin paridad 1-paridad impar 2-paridad par Instalación de fábrica 2 (par) Bit de parada 0004 byte (LSB) 0 – 1 bit de parada 2 – dos bits de parada Guía de inicio rápido -4- ©2006 KurySoft. www.kurysoft.com ModBus Constructor Función Porción Contador másico Dirección (decimal) 0005 0007 Tipos de datos Notas long (1) (3) Una unidad equivale a 0.1 kg. long (1) Una unidad equivale a 0.1 kg., puede ser negativo Al leer visualiza la masa acumulada después de borrar el contador Flujo másico 0009 integer Una unidad equivale a 0.1 kg/min. Positivo con flujo en dirección correcta Negativo con flujo en dirección inversa Densidad 0010 unsigned integer Una unidad equivale a 1000/32768 kg/m3 Temperatura 0011 integer Una unidad equivale a 250/511 ºC Presión 0012 unsigned integer Señal del sensor de presión excesiva 4-20 mА 1023 corresponde a 20 mA (40 kgf/cm2) 205 corresponde 4 mA (0 kgf/cm2) Tiempo de medida 0013 unsigned long (1) segundos Registro de control 0015 unsigned integer (2) Masa por pulsación 0016 unsigned integer Una unidad equivale a 0.1 kg. Coeficientes de calibración 0017-0024 Permite la grabación con el jumper J7 instalado Reserva 0025-0031 no se utiliza en esta versión (1) Los “long integres” se instalan en los registros de la siguiente manera: la palabra superior en el primer registro, la inferior en el segundo. Por ejemplo, el número 01020304h (16909060 en decimal) será instalado así: registro A+0: 0102h registro A+1: 0304h transmitido: 01 02 03 04 (2) Al leer visualiza el régimen de trabajo: 0 – modo de medida (por defecto) 1 – modo de dosímetro inactivo. Las dos válvulas cerradas. 2 – modo de dosímetro activo. Una de las válvulas abierta, la porción se mide. Al grabar realiza las siguientes operaciones: 0 – pasa al modo de medida del modo de dosímetro inactivo. Se ignora si el dosímetro está en modo activo. 1 – si está en modo de medida, pasa al modo de dosímetro inactivo, borra los contadores de masa y tiempo, cierra las dos válvulas. Si está modo de dosímetro activo, pasa al modo dosímetro inactivo. 2 – empieza a medir la porción de acuerdo con el valor del registro 5 (tamaño de la porción) 4 – borra los contadores de masa y tiempo (solo en los modos 0 y 1) 8 – ajusta el valor cero de flujo (solo en los modos 0 y 1) (3) se utiliza para guardar el tamaño de las porciones, cuando funciona en modo de dosímetro. Una unidad equivale a 0.1 kg. Guía de inicio rápido -5- ©2006 KurySoft. www.kurysoft.com ModBus Constructor La tabla Т2 representa la descripción de los “Coils”. 2.1.2. T2. Mass Flow Meter Coils. Dirección (decimal) Función Tipos de datos Notas Salida de control del flujo en dirección correcta 0000 Read-Only en el modo de dosificador 1-válvula abierta 0- válvula cerrada Salida de control del flujo en dirección inversa 0001 Read-Only en el modo de dosificador 1- válvula abierta 0- válvula cerrada Reserva 00020031 no se utiliza en esta versión El contador de flujo másico es compatible con los siguientes comandos y excepciones: 2.1.3. T3. Mass Flow Meter Command. Código de función Tipo de comando 01 Read Read coil status 03 Read Read holding registers 05 Write Write single coil 06 Write Write single register 15 Write Write multiple coils 16 Write Write multiple registers Nombre 2.1.4. T4. Mass Flow Metter Exception Responses. Code Name Description 01 Illegal function Function code not supported. 02 Illegal data address The data address in the query is not an allowable address for the device. 03 Illegal data value A value contained in the query data field is not an allowable value for the device. 2.2. Descripción de los parámetros principales. Describa los registros y los “Coils” del contador de flujo. En el menú Settings elija Objects: Settings⇒ Objects Guía de inicio rápido -6- ©2006 KurySoft. www.kurysoft.com ModBus Constructor Aparecerá una forma parecida a una hoja de cálculo electrónica. En la columna Object, destaque quince celdas (la cantidad de registros del contador de flujo). Haga clic con el botón derecho en el área selccionada y aparecerá un menú desplegable con los tipos de objetos. Haga clic en Holding register. Ahora debe dar a cada registro dirección y nombre de acuerdo con la descripción. haga doble clic con el botón izquierdo en la primera celda vacía de la columna Label escriba el nombre del registro “Device type” haga doble clic con el botón izquierdo en la celda adyacente a la columna Address, escriba “0” escriba los nombres y las direcciones de los demás elementos. Guía de inicio rápido -7- ©2006 KurySoft. www.kurysoft.com ModBus Constructor Para representar los números (long, float y double) se utilizan varios registros, y por eso pueden representarse de distintas formas. En la mayoría de los casos los fabricantes hacen indicaciones explícitas sobre como deberán representarse estos números. Para determinar el modo de almacenamiento de los números en los registros, utilice la sección Data Encoding. En la descripción vemos que el dispositivo utiliza datos de distintos tipos. Especifique los tipos necesarios. haga clic con el botón derecho en la columna Data y elija en el menú desplegable el punto necesario. si es necesario, ponga Unsigned en la columna Show. Habíamos especificado como unidad de masa el kilogramo (kg), pero en el contador de flujo se utiliza como unidad 0.1 kg. Modbus Constructor tiene un mecanismo especial para esta clase de problemas. Introduzca la expresión Ax+B en la columna Scale y el número del registro, o grupo de registros (si el número es complejo de tipo long, float o double) correspondiente sufrirá una transformación linear. Esto resulta cómodo al utilizar unidades de medida diferentes a las que usa el dispositivo. Escriba en la columna Scale para los registros 5, 7, 9 y 15 la expresión “0.1x+0”. De este modo cambiará la unidad interna del contador a kilogramos. Guía de inicio rápido -8- ©2006 KurySoft. www.kurysoft.com ModBus Constructor Del mismo modo puede cambiar la densidad: D = x * 1000 / 32768 = 0.03052x Y la temperatura: T = x * 250 / 511 = 0.489x Con la presión resulta un poco más complicado, hay que resolver una ecuación: Presión P = Ax + B x1 = 205, P1 = 0 ⇒ B = - 205 * A x2 = 1023, P2 = 40 ⇒ 40 = A*1023 + 205*B A = 40/(1023 - 205) = 0.049 B = -205*A=-205*0.049 = -10.045 Como podemos ver no es tan difícil transformar los valores en unidades corrientes. Bueno y ¿que hay con el tiempo? Para pequeños intervalos de tiempo los segundos son convenientes, pero cuando se trata de cientos y miles de segundos, resultan incómodos. Para resolver esto formateamos. El formateo de datos se utiliza: en primer lugar, para hacer los números más claros en segundo lugar, para evitar que las cifras sobrellenen el campo de salida. Guía de inicio rápido -9- ©2006 KurySoft. www.kurysoft.com ModBus Constructor Para cada tipo de datos el formato está asignado por defecto. No hay necesidad de elegir el formato por defecto, si el existente le conviene deje el campo vacío. Utilice el formato por defecto para crear un formato propio. Más detallado sobre las reglas de formateo en la sección Format examples. Haga clic con el botón derecho en la fila “Portion, kg” columna Format. Elija el punto Default. En el campo aparecerá la siguiente cadena de caracteres “## ###”. El contador másico mide la masa y el flujo de masa con una exactitud de 0.1 kg y 0.1 kg/min respectivamente. Si dejar el formato por defecto, no se verá la parte fraccionaria. Para mostrarla debemos añadir a la cadena de caracteres “.0”. Obtendremos: “# ### ### ##0.0” para la masa y la porción “## ##0.0” para el flujo Así como el conversor analógico-digital de la señal del sensor de presión presenta una resolución de 0.05 kg/cm2, tiene sentido mostrar dos dígitos después de la coma decimal: “## ##0.00” Escriba en el campo Default value del registro “Presión, kgs/cm2” el número “10”. Apriete “Enter”. El valor será mostrado como “10.00”. La temperatura y la densidad déjelos enteros. Hagamos que el tiempo se visualice de dos modos. El primer modo lo dejamos en segundos, el segundo modo será formateado en “hh:mm:ss”, para mostrar el tiempo en el formato “horas: minutos: segundos”. haga doble clic en el campo vacío de la columna Object elija Holding register haga doble clic en la misma fila de la columna Data elija el tipo Long elija el atributo Unsigned en la columna Show en el campo Label escriba “Time, hh:mm:ss” escriba en el campo la dirección “13” Guía de inicio rápido - 10 - ©2006 KurySoft. www.kurysoft.com ModBus Constructor escriba en el campo Format “hh:mm:ss” escriba en el campo Default value “1000” (tiempo en segundos) haga clic sobre el nombre de la columna Address, para poner los registros en orden ascendente 1000 serán mostrados como “00:16:40” Y finalmente describa los “Coils” del medidor de flujo: destaque con el ratón dos campos vacíos en la columna Object haga clic sobre ellos con el botón derecho en el menú desplegable elija “Coils” nombre un Coil “flujo correcto”, asígnele la dirección “0” nombre el otro Coil “flujo inverso”, asígnele la dirección “1” Ha descrito las características principales del medidor de flujo. Apriete el botón “OK”. Guarde el proyecto: File⇒Save. Guía de inicio rápido - 11 - ©2006 KurySoft. www.kurysoft.com ModBus Constructor 2.3. Distribución de los campos de datos en la forma. En la esquina superior derecha de la forma verá los campos de datos y las etiquetas de los objetos hechos por nosotros. Haga clic con el botón izquierdo en cualquier campo en blanco. Se resaltará con el color azul oscuro. Apriete el botón izquierdo en el campo selccionado y; sin soltar el botón, muévalo al lado. Para selecciones múltiples apriete el botón Ctrl, y, sin soltarlo, destaque los objetos necesarios. Haga lo mismo con los demás campos, hasta que las etiquetas estén en su sitio. Tenga en cuenta, que cuando mueve un campo junto con el se mueve la etiqueta, pero no al contrario – cuando usted mueve la etiqueta el campo se queda en su sitio. Destaque la etiqueta ”Mass counter, kg”. Estírela hacia la izquierda hasta que ocupe una fila. Haga lo mismo con las demás etiquetas. Para mejor legibilidad separe los campos de los parámetros en prueba de los demás campos. Empiece por la esquina superior derecha. Para separar visualmente los grupos de campos utilice marcos. Haga clic en la forma con el botón derecho. En el menú desplegable elija Add ⇒ Frame. Cambie la posición y el tamaño del marco para colocarlo alrededor del grupo. Haga lo mismo con los campos pertenecientes a control y los parámetros de comunicación. Guía de inicio rápido - 12 - ©2006 KurySoft. www.kurysoft.com ModBus Constructor Apriete Ctrl+S para guardar el proyecto. 2.4. Añadir peticiones. Para que el dispositivo remoto transmita los datos y cumpla las acciones necesarias, en el protocolo de Modbus las peticiones se pueden procesar de tres modos: automáticamente mediante el menú mediante el diálogo Abra la ventana de configuración de las peticiones: Settings⇒Requests. En la parte inferior de la ventana verá una tabla que contiene los elementos de la estructura de los datos. En la parte superior de la ventana verá una tabla que contiene los parámetros de las peticiones. Primero crearemos las peticiones automáticas que leen el contenido de los registros y los Coils del contador de flujo. haga doble clic en una celda vacía en la columna Function en el menú desplegable elija 03.Read holding registers. En la tabla aparecerá una fila con los parámetros de petición por defecto haga clic otra vez sobre la fila en la tabla inferior destaque las celdas correspondientes a los registros en la columna Address haga clic con el botón derecho en el menú desplegable elija Apply haga lo mismo con los Coils. Utilice la función 01.Read coils Guía de inicio rápido - 13 - ©2006 KurySoft. www.kurysoft.com ModBus Constructor Usted puede cambiar el período mínimo de la petición. Haga doble clic en la celda necesaria de la columna Min.period, ms. Escriba 300 milisegundos para ambas peticiones. Tenga en cuenta que este parámetro define el período mínimo posible con el que se procesan los datos. Este tiempo puede ser mayor debido al tiempo que se necesita para realizar otras peticiones. Si se establece el valor “0” para este parámetro, la petición se realizará en el período de tiempo más corto posible. Para controlar efectivamente el contador de flujo deberá introducir comandos. El comando se especifica introduciendo ciertos valores en el registro de control con dirección 15. cree la petición ”06.Write single register” en la tabla inferior en la columna Write address destaque la celda con la dirección 15 (registro de control) haga clic con el botón derecho en el menú desplegable apriete Apply haga doble clic en la celda de la columna Write escriba “0” – este valor será inscrito en el registro de control al realizar este comando en la tabla superior en la columna Label escriba el nombre del comando “Modo de medida”. Este nombre aparecerá como un punto del menú. haga doble clic en la celda de la columna Control en le menú desplegable elija Menu 1 Haga lo mismo para crear los comandos: “Modo dosificador” (valor 1) “Medir la porción” (valor 2) “Poner a cero” (valor 4) Guía de inicio rápido - 14 - ©2006 KurySoft. www.kurysoft.com ModBus Constructor “Ajuste del cero” (valor 8) Cree los comandos para controlar las válvulas: cree la petición “15.Write multiple coils” en la tabla inferior en la columna Write address destaque las celdas con las direcciones de los Coils 0 y 1 haga clic con el botón derecho en el menú desplegable apriete Apply haga doble clic en la celda de la columna Write con dirección 0, escriba “1” haga doble clic en la celda de la columna Write con dirección 1, escriba “0” al realizar este comando se abrirá la válvula en dirección correcta, y se cerrará en dirección inversa nombre el comando “Abrir en dirección correcta” cree el comando “Abrir en dirección inversa”: para el Coil con dirección 0 escriba “0” para el Coil con dirección 1 escriba “1” Y finalmente cree el comando “Cerrar el flujo”, que cierra las dos válvulas: escriba en los dos Coils el valor “0” Guía de inicio rápido - 15 - ©2006 KurySoft. www.kurysoft.com ModBus Constructor Una parte de los comandos se utilizan para controlar en el modo dosificador, la otra en el modo de medida, ya que en el modo de medida no se pueden controlar las válvulas. Hay dos comandos comunes para los dos modos: “Poner a cero” y “Ajuste del cero”. En el menú colóquelos aparte uno de otro. Para eso: Cree dos peticiones, por ejemplo, “01.Read coils” elija en Control “Menu 1” en lugar del nombre escriba el símbolo “-“ (guión) Estas peticiones no serán accesibles desde el menú pero servirán como divisores entre los puntos. apriete el botón izquierdo en la celda en la columna Function. sin soltar el botón arrastre y coloque la celda entre “Medir la porción” y “Poner a cero” actuando de manera similar sitúe los puntos como en la ilustración debajo Guía de inicio rápido - 16 - ©2006 KurySoft. www.kurysoft.com ModBus Constructor En la etiqueta del menú caption cambie el nombre “Menu 1” por “Control”. Apriete OK. Guarde el proyecto: Ctrl+S. En el menú aparecerá un nuevo punto - Control: Un menú igual aparecerá en Modbus Reader cuando abra su proyecto en él, y podrá utilizarlo para realizar los comandos que haya creado. En Modbus Constructor este menú es inactivo. Ahora especifique los diálogos para cambiar la configuración del dispositivo remoto. Abra de nuevo la forma Requests. cree la petición “16.Write multiple register” nombre la petición “Tamaño de la porción” póngale dirección “5” cree la petición “16. Write multiple register” nombre la petición “Parámetros de comunicación” póngale direcciones de 2 a 4 cree la petición “06.Write single register” nombre la petición “Masa por una pulsación, kg” póngale dirección “16” instale los parámetros de control para los tres comandos “Dialog (menu 2)” cambie el nombre “Menu 1” por “MFM Settings” apriete “OK” guarde el proyecto: Ctrl+S En el menú aparecerá otro punto - “MFM Settings”. Abra el menú y elija “Parámetros de comunicación”. Aparecerá un diálogo que permite cambiar los parámetros de comunicación del contador de masa. Al trabajar con Modbus Reader los campos de datos de estos diálogos Guía de inicio rápido - 17 - ©2006 KurySoft. www.kurysoft.com ModBus Constructor contendrán: o valores actuales recibidos directamente del dispositivo por medio de los comandos de lectura, o valores por defecto. Los valores por defecto se utilizan si los datos correspondientes no habían sido leídos nunca antes del momento de abrir el diálogo, por ejemplo, si estaban desconectadas las peticiones automáticas. 2.5. Parámetros del simulador. Cualquier proyecto creado con Modbus Constructor, puede ser utilizado por Modbus Reader tanto para hacer peticiones al dispositivo en modo “Master”, como para simular el dispositivo en modo “Slave”. Usted puede cambiar el valor de los registros y los datos discretos a mano en el modo “Slave”, o automáticamente de acuerdo con la función especificada. La función se instala con ayuda de los siguientes parámetros: Default value, Value1, Value2, Period. Para los elementos discretos y los registros en Hex y Binary se aplica la siguiente regla: 2.5.1. T5. Discrete value simulation. Tiempo 0 < t < 1/3 Period Valor del elemento de datos Default value 1/3 Period < t < 2/3 Period Value1 2/3 Period < t < Period Value2 Period < t < 4/3 Period 4/3 Period < t < 5/3 Period Default value Value1 … … Para los registros que contienen datos de tipo Float, Double, así como números enteros (ya sean Signed o Unsigned), los valores se cambian de la siguiente manera: 2.5.2. T6. Analogous value simulation. Tiempo 0 < t < 1/3 Period Valor del elemento de datos linear function from Default value to Value1 1/3 Period < t < 2/3 Period linear function from Value1 to Value2 2/3 Period < t < Period linear function from Value2 to Default value Period < t < 4/3 Period 4/3 Period < t < 5/3 Period … linear function from Default value to Value1 linear function from Value1 to Value2 … Si “Period” es igual a cero, se utiliza Default value. Abra la ventana Objects: Settings⇒ Objects y ponga los parámetros como en la ilustración debajo. Tenga en cuenta que el valor Value1 para el elemento “Time” es igual a un tercio del valor del período, y el valor Value2 es igual a dos tercios. En este caso el valor “Time” será precisamente igual al tiempo pasado desde el momento de la conexión. apriete “OK” Guía de inicio rápido - 18 - ©2006 KurySoft. www.kurysoft.com ModBus Constructor guarde el proyecto: Ctrl+S Guía de inicio rápido - 19 - ©2006 KurySoft. www.kurysoft.com ModBus Constructor 3. UTILIZAR EL DISPOSITIVO MODBUS. En este capitulo usted aprenderá a interactuar con dispositivos descritos con ayuda de Modbus Constructor. En lugar de un dispositivo real usará un simulador. Si su PC tiene dos puertos de comunicación únalos por medio de cables sin modem. Un puerto se utilizará como “master”, el otro como “slave”. Si su PC tiene solo un puerto de comunicación, instale Modbus Reader en otro ordenador con, al menos, un puerto de comunicación y conéctelos por medio de cables sin modem. Usted puede descargar el archivo de instalación individual de Modbus Reader aquí: http://www.kurysoft.com/products.shtml. Inicie Modbus Reader: Start ⇒Programs ⇒ModbusConstructor⇒MBReader.exe Abra el archivo Coriolos.mbc. en el menú Mode ponga el indicador “Master” en el menú Connection elija el primer puerto de comunicación (por ejemplo СОМ1) abra otro archivo Coriolos.mbc. en el menú Mode ponga el indicador “Slave” en el menú Connection elija el otro puerto de comunicación (por ejemplo СОМ2) ponga las dos formas juntas de manera que se vean todos los campos. Si es necesario cambie las dimensiones asegúrese que los parámetros de comunicación de los dos puertos coinciden. Para abrir el diálogo que cambia estos parámetros apriete Ctrl+P asegúrese que “Master” y “Slave” tienen el mismo ID. Para abrir el diálogo que cambia el ID apriete Ctrl+I asegúrese que en el menú Mode para la forma “Master” esté puesto el indicador en Auto request enable, y para la forma “Slave” esté puesto el indicador en Simulation enable Tenga en cuenta que los campos en la forma “Master” están vacíos y en la forma “Slave” tienen valores por defecto. Apriete F3 para conectarse. Verá que los datos en la forma “Master” se cambian sincrónico con los datos de la forma “Slave”. Guía de inicio rápido - 20 - ©2006 KurySoft. www.kurysoft.com ModBus Constructor Cuando la forma master está activa se hacen disponibles dos menús adicionales Control y MFM Settings, creados por usted en el capítulo “Añadir peticiones”. Haga clic en la forma master para hacerla activa. Utilice los puntos de estos menús para ver como se cambian los datos al realizar los comandos. Usted puede directamente editar los datos de los elementos en la forma “Slave” si el modo de simulador está desconectado: haga clic en la forma “Slave” quite el indicador del punto Simulation Enable del menú Mode Los datos dejarán de cambiar. doble clic en el campo “Density” de la forma “Slave” escriba algún número apriete Enter En el campo correspondiente de la forma “Master” aparecerá el mismo número en cuanto “Master” realice la siguiente petición de lectura de registros. De la misma manera se pueden escribir valores individuales en los registros y los elementos discretos del dispositivo. doble clic en el campo “Density” de la forma “Master” escriba algún número apriete Enter No se olvide guardar la configuración corriente al terminar el trabajo, si cree que le será necesaria. Para esto en el menú File elija Save session. Guarde el archivo con el nombre Coriolis.mbs. Ahora, cuando ya usted sabe los principios básicos para operar con Modbus Constructor y Modbus Reader, podrá crear proyectos para trabajar con dispositivos Modbus reales más rápido que cuanto ha tardado en realizar este ejemplo. Guía de inicio rápido - 21 - ©2006 KurySoft. www.kurysoft.com ModBus Constructor 4. TÉRMINOS Y DEFINICIONES. 4.1. Objetos. En la especificación de Modbus el objeto es un elemento de datos que se puede leer o escribir independiente de otros datos. Hay cuatro tipos de objetos: 1. Coil single bit Read-Write 2. Discrete input single bit Read-Only 3. Holding register 16-bits word Read-Write 4. Input register 16-bits word Read-Only 4.2. Tipos de datos de Modbus Constructor. Modbus Constructor soporta los siguientes tipos de datos: 4.2.1. Numeric types Type Quantity of bits Quantity of registers integer (signed or unsigned) 16 1 long 32 2 32 2 (signed or unsigned) float double 64 4 MSByte (signed or unsigned) * 8 ½ (most significant byte - MSB) LSByte (signed or unsigned) * 8 ½ (least significant byte - LSB) *Byte (MSB o LSB) no puede ser leído o escrito independiente de otro byte del registro. 4.2.2. Discrete types Type single multiple Quantity of bits 1 2-16 4.3. Data encoding. Para representar los tipos long, float y double se utilizan varios registros consecutivos. Se utilizan dos métodos de inscripción de estos números en los registros: directo y “swapped (inverse)”. Guía de inicio rápido - 22 - ©2006 KurySoft. www.kurysoft.com ModBus Constructor 4.3.1. Long. B3 B2 B1 B0 MSB LSB Register A Register A+1 Transmitted first Default B1 B0 (LSB) B3 (MSB) B2 B3 (MSB) B2 B1 B0 (LSB) Swapped last 4.3.2. Float. B3 B2 B1 B0 SEEEEEEE EMMMMMMM MMMMMMMM MMMMMMMM Donde el valor de “floating point” (punto flotante) = S1.M * 2E-127 Register A Register A+1 Transmitted first Default B1 B0 (LSB) B3 (MSB) B2 B3 (MSB) B2 B1 B0 (LSB) Swapped last 4.3.3. Double. B7 B6 B5-B1 B0 SEEEEEEE EEEEMMMMM MMMMMMMM MMMMMMMM Donde el valor de “double precision floating point” (punto flotante de doble precisión) = S1.M * 2E-1023 Register A Register A+1 Register A+2 Register A+3 Transmitted first last Default B1 B0 B3 B2 B5 B4 B7 B6 Swapped B7 B6 B5 B4 B3 B2 B1 B0 4.4. Reglas de aplicación de las funciones de Modbus. Usted puede crear una petición para leer o escribir cualquier elemento de datos del dispositivo, solo en caso de que este elemento esté especificado en el proyecto. Por ejemplo, si está especificado aunque sea un Holding register, siempre podrá utilizar las funciones 03, 06. Guía de inicio rápido - 23 - ©2006 KurySoft. www.kurysoft.com ModBus Constructor En el diálogo Options (menú Settings) usted puede permitir o suprimir las funciones adicionales para Holding register 16, 22, 23. Si alguna de estas funciones está suprimida, cuando trabaje en el modo de simulador Modbus Reader responderá “Exeption 1 (Illegal Function)” a cualquier petición que utilice esta función. Funciones principales* Elemento Funciones adicionales Coil 01 – Read coils 15– Read multiple coils Discrete input 02 – Read discrete inputs - Holding register 03 – Read holding registers 06 – Write single register 16 – Write multiple registers 22 – Write mask register 23 – Read/write registers Input register 04 – Read input registers - *Al menos un elemento deberá estar especificado. 4.5. Format examples. Para visualizar los números en forma más cómoda utilice formateo. El formateo permite evitar que después de la coma decimal aparezcan números con demasiados dígitos. 4.5.1. Numeric types Números Formato Visualiza 12345 ### ##0 12 345 12345 0 000 000 0 012 345 123.45678 # ##0.000 123.457 123.45678 0.00 E+00 1.23 E+02 12 +## 000 + 012 0.45678 .000 000 000 .456 780 000 12345 hh:mm:ss 03:25:45 Si el campo de datos contiene varios elementos discretos, el formateo le ayudará a visualizarlos por separado. 4.5.2. Discrete types Bits Formato Visualiza 11110000 0000 0000 1111 0000 11110000 0000 0 0 0 0 0000 0 0 0 0 11110000 0 11110000 11110000 00 1111000 0 11110000 000 00 000 111 10 000 Guía de inicio rápido - 24 - ©2006 KurySoft. www.kurysoft.com ModBus Constructor 4.5.3. Default for numeric types Tipo Formato integer ## ##0 long # ### ### ##0 byte ##0 float 0.00 double 0.000 E+00 4.5.4. Default for discrete types Tipo Formato single (1) 0 multiple 2 00 multiple 3 000 multiple 4 0000 multiple 5 0 0000 multiple 9 0 0000 0000 multiple 16 0000 0000 0000 0000 Guía de inicio rápido - 25 - ©2006 KurySoft. www.kurysoft.com