4.Modbus y Registradores de Datos de Campbell Scientific

4.1Descripción

CRBasic es el lenguaje de programación que se usa con todos los registradores de datos CRBasic de Campbell Scientific. Normalmente, se utiliza software LoggerNet de Campbell Scientific cuando se programa en CRBasic.

El registrador CR6 de Campbell Scientific puede comunicarse directamente con la interfaz modelo 8960-01C, utilizando el protocolo RS-485. Sin embargo, los registradores CR1000 y CR800 no soportan el protocolo RS-485.  Para adaptarse a esto, geokon dispone del convertidor RS-485 a TTL/USB modelo 8020-38.

4.2 Convertidor TTL Y/O USB A RS-485 Modelo 8020-38

geokon fabrica el Convertidor Bus Direccionable Modelo 8020-38 para conectar conjuntos de sensores direccionables a computadoras personales, dispositivos de lectura, registradores de datos y controladores lógicos programables. El convertidor actúa como puente usando los protocolos TTL o USB entre los lectores y los conjuntos de sensores habilitados para RS-485 de geokon.

Para obtener más información, consulte el Manual de instrucciones del modelo 8020-38.

04_Modbus_y_Registradores_de_Datos00202.png

 

 Figura 11: Convertidor TTL/USB a RS-485 Modelo 8020-38

Nota: El registrador que utilice debe contar con el conector apropiado.

Si su registrador de datos no cuenta conversión RS-485 incorporada, conecte el cableado usando el diagrama en Figura 12.

Readout_Converter_Wiring.png

 

 Figura 12: Cableado de dispositivo de lectura sin conversión RS-485

Si su registrador de datos cuenta conversión RS-485 incorporada, conecte conecte el cableado usando el diagrama en Figura 13.

485_Wiring.png

   

 Figura 13: Cableado de registrador de datos con conversión RS-485 incorporada

4.3Programa de Muestra

El siguiente programa utiliza la interfaz Modelo 8960-01C para conectarse directamente a cualquier sensor sencillo de cuerda vibrante geokon. La interfaz 8960-01C utiliza los comandos MODBUS RTU y muestra una lectura de frecuencia (Hz) para la cuerda vibrante.  Muestra una lectura de resistencia (ohmios) para el termistor.

Nota: Los números de la tabla de registro 8960-01C MODBUS RTU comienzan con 0. Los registradores de datos de Campbell Scientific reconocen los números de la tabla de registro MODBUS RTU que comienzan por 1. Todos los números de registro CRBasic son +1. Ejemplo: ModbusMaster no enviará 0x118 a menos que se ingrese "&H119" en la línea de comando.

 

'Define address of the 8960-01C

Const Address = 1      'Address of Interface, used in variable declaration

 

'Constants used in Steinhart-Hart equation to calculate sensor temperature

'for 3k thermistor

 Const    A = 1.4051E-3

Const B = 2.369E-4

Const C = 1.019E-7

 

Public ErrorCode         'Error Code sent back from ModBus command

Public Hz(Address)   'Frequency (Hz) from incoming data

Public Digits(Address)   'Calculated Digits

Public Res(Address)   'Resistance (Ohms) from incoming data

Public Celsius(Address)   'Calculated temperature (Celsius)

'Define Data Tables

DataTable (Test, 1,-1)

  Sample (Address,Digits(),IEEE4)

  Sample (Address,Celsius(),IEEE4)

EndTable

'Main Program

BeginProg

 'Open COMport with RS-485 communications at 115200 baud rate

   SerialOpen (ComC1,115200,16,0,50,3)   'CR6 program

   SerialOpen (Com1,115200,16,0,50)   'CR1000 program

 'Read the interface/sensor every 30 seconds

   Scan (30,Sec,0,0)

 'Reset temporary storage for both Resistance and Hz so not to retain

 'previous reading

   Res(Address) = 0

   Hz(Address) = 0

  'Flush Serial between readings

   SerialFlush (ComC1)

  'Write to register 0x118 to trigger interface

  'NOTE: ModbusMaster won't send 0x118 unless "&H119" is entered

   ModbusMaster (ErrorCode,ComC1,115200,Address,6,1,&H119,1,1,10,0)

  'Delay after triggering the measurement

   Delay (1,1,Sec)

  'Use Modbus command to retrieve Hertz from string

   ModbusMaster (ErrorCode,ComC1,115200,Count,3,Hz(Address),&H101,1,1,10,0)

  'Calculate Digits from Hertz

   Digits(Address) = (Hz(Address)^2)/1000

  'Use Modbus command to retrieve thermistor resistance

   ModbusMaster (ErrorCode,ComC1,115200,Address,3,Res(Address),&H103,1,1,10,0)

  'Calculate thermistor temperature from Ohms to Celsius using Steinhart-Hart

  'equation

   Celsius(Address) = 1/(A+B*LN(Res(Address))+C*LN(Res(Address))^3)-273.15

  Next

 'Call table to store data

 CallTable Test

NextScan

EndProg