Icono de información FA.svgIcono de ángulo hacia abajo.svgDatos del proyecto
AutoresRob Andrews
UbicaciónKingston , Canadá
En vez deTI verde
Manifiesto del OKHDescargar

CRBasic es el lenguaje de programación que controla la funcionalidad de un registrador de datos científico Campbell . El programa controla todos los procesos en el registrador relacionados con la recopilación de datos, incluidos nombres de variables, diseños de tablas de datos, definiciones y rangos de transductores y operación del puerto de control.

Para comenzar un programa en CRBasic, se recomienda crear primero un programa abreviado, disponible a través de loggernet, que contiene un asistente y permite la creación de la estructura básica de un programa que incluye tablas y declaraciones de sensores. Una vez que el programa se ha creado en forma abreviada, se puede editar en CRBasic para agregar cualquier funcionalidad avanzada requerida. Esta guía cubre la funcionalidad básica de CRBasic, así como algunos detalles específicos de la programación en el sitio de pruebas de St.Lawrence College. Hay documentación más detallada para la codificación disponible en el manual CR1000 que se encuentra en el sitio web de Campbell Scientific.

En cualquier código CRBasic, hay tres secciones principales: i) declaración de variables ii) definición de tabla iii) colección

Declaración de variables

La primera parte del código define todas las variables que recopilará el registrador de datos mediante el comando Público . Las variables singulares se definen ingresando el nombre de la variable y las variables de matriz, que se pueden usar para almacenar múltiples valores bajo nombres de variables indexadas, se definen agregando la longitud de la matriz entre paréntesis después del nombre de la variable. Por ejemplo:

Declara una variable Temp_C_2 que tiene 25 valores indexables. Esto resulta útil cuando se utiliza un multiplexor, ya que cada índice puede representar un puerto del multiplexor. Sin embargo, estas variables indexadas pueden convertirse en un problema, ya que es difícil distinguir a qué sensor físico están conectadas. Debido a esto, es útil utilizar el comando Alias ​​para cambiar el nombre de cada valor dentro de la matriz para representar el sensor que representa. Por ejemplo:

Cambia el nombre del quinto valor en Temp_C_2 para mostrar que está midiendo el termopar en la quinta posición de la primera fila de la matriz.

Declaración de tabla

Una vez definidas las variables, existe la opción de dividirlas en varias tablas de datos para facilitar la manipulación de los datos. En este caso, todas las variables se muestran en una única tabla, denominada Tabla1. Además, es posible promediar el tiempo de los datos dentro de las tablas. Esto permitiría la recopilación de datos, por ejemplo, a intervalos de 1 minuto, pero solo almacenaría los promedios de 5 minutos de estos datos en la tabla. La ventaja de esto es una alta resolución de recopilación, al tiempo que se reduce el tamaño del archivo de datos recopilado, lo que lo hace más manejable para el almacenamiento, la transmisión y el posprocesamiento.

En el caso de este programa, los datos se muestrean y recopilan a intervalos de 5 minutos. La razón de esto es la inclusión de multiplexores en este sistema, que tienen ciclos de vida limitados. Por lo tanto, se optó por reducir el número de ciclos experimentados por el multiplexor muestreando únicamente a intervalos de 5 minutos, lo que ofrece un buen compromiso entre los tiempos de ciclo y la resolución de los datos.

La tabla de datos se declara utilizando las dos líneas siguientes:

Que define el uso de la memoria y el intervalo de grabación para la tabla de datos. Un atributo importante de las tablas en un sistema Campbell Scientific es el uso de memoria de bucle. La memoria base de la unidad está relativamente limitada a 4 MB para almacenar el programa y todos los datos. En el caso de que los datos recopilados excedan el espacio de memoria disponible en el sistema, los datos pasarán a la parte superior de la tabla de datos y borrarán primero los datos más antiguos. El estado de la memoria de la estación se puede ver a través de la utilidad de configuración del dispositivo o la pantalla de conexión.

Recopilación de datos

La recopilación de datos se produce en un bucle repetitivo que se ejecuta hasta que el controlador detiene manualmente el programa a través de loggernet. El comienzo de este bucle está indicado por las dos líneas de código siguientes:

Lo que inicia el ciclo y configura una exploración cada 5 minutos, según el reloj del registrador de datos. Cada comando que sigue a este se ejecuta secuencialmente cuando se inicia el escaneo.

Cada medición es iniciada por su propia línea en el programa, que declara el tipo de medición a realizar, el canal de entrada desde el que se lee y cualquier posprocesamiento especial requerido para la medición. Por ejemplo:

Lee la medida de tensión diferencial del canal 1 y la almacena en la variable SlrW, con un rango de tensión de 25 mV. El resto de los argumentos de esta declaración se relacionan con detalles específicos de cómo se recopila el valor, y se puede encontrar una descripción completa de estos en la ayuda de CRBasic. Además, al hacer clic derecho en una declaración de medición, aparecerá una ventana que describe cada parámetro de entrada y detalla los estándares para cada valor.

Para medir un multiplexor, se requiere un código más complejo. Los pasos básicos para medir un multiplexor son:

i) Inicialice la unidad configurando el puerto de resolución en alto

ii) Ingrese a un bucle de escaneo y envíe un pulso al puerto CLK que configura el relé en la primera entrada

iii) Lea el valor medido en la ranura correcta de la matriz. Tenga en cuenta que debido a que se toman dos mediciones de un solo extremo por canal diferencial, cada declaración de VoltSe registra dos valores secuenciales en dos ranuras secuenciales en la matriz de medición. Esto se hace estableciendo el campo 'repeticiones' (segundo campo en esta declaración) en 2, lo que toma una medida del canal declarado (en este caso 13) y lo coloca en la primera ranura de la matriz, y luego toma una medida. del siguiente canal, en este caso el 14, y lo coloca en la siguiente ranura del conjunto.

iv) Regrese al principio y continúe repitiendo la exploración hasta que se hayan leído todos los puertos del multiplexor.

v) Configure el puerto RES en nivel bajo para desactivar el registrador de datos.

Al final del programa se deben llamar las tablas que almacenan todas las variables que se han recopilado permanentemente en las tablas predefinidas.

Código más reciente del SEARC OTF

El siguiente es el código más reciente que se utiliza en SEARC OTF. Tenga en cuenta que cualquier línea con el prefijo ' representa un comentario de código.

'Programa ejecutándose en el registrador de datos St.Lawrence CR1000 desde enero de 2011

'Creado por Atajo (2.8)

'Declarar variables

BattV pública

público slrw

Público SlrkJ_2

Público SlrW_2

público slrkj

Público SlrW_3

Público SlrkJ_3

Público SR50A(2)

TCDT pública

DBTCDT público

RTempC público

Temperatura pública_C(25)

Público RTempC_2

Temp. pública_C_2(25)

AirTC público

Salud pública pública

WS_ms público

Dirección de viento pública

SEvolt público(64)

Público SEvolt_2(64)

Sensor público_altura

Profundidad de nieve pública

Conteo público

'Variables de alias para facilitar la identificación de los datos. Estos son los nombres que se registrarán en la tabla de datos.

Alias ​​SR50A(1)=DT

Alias ​​SR50A(2)=Q

Alias ​​SEvolt(1)=V1.1V

De lo contrario SEvolt(2)=V1.2V

Alias ​​​​SEvolt(3)=V1.3V

Alias ​​​​SEvolt(4)=V1.4V

Alias ​​SEvolt(5)=V1.5V

Alias ​​​​SEvolt(6)=V1.6V

Alias ​​​​SEvolt(7)=V1.7V

Alias ​​SEvolt(8)=V1.8V

Alias ​​SEvolt(9)=V2.1V

Alias ​​​​SEvolt(10)=V2.2V

Alias ​​SEvolt(11)=V2.3V

Alias ​​​​SEvolt(12)=V2.4V

Alias ​​SEvolt(13)=V2.5V

Alias ​​SEvolt(14)=V2.6V

Alias ​​​​SEvolt(15)=V2.7V

Alias ​​​​SEvolt(16)=V2.8V

Alias ​​SEvolt(17)=V3.1V

Alias ​​​​SEvolt(18)=V3.2V

Alias ​​SEvolt(19)=V3.3V

Alias ​​​​SEvolt(20)=V3.4V

Alias ​​​​SEvolt(21)=V3.5V

Alias ​​​​SEvolt(22)=V3.6V

Alias ​​​​SEvolt(23)=V3.7V

Alias ​​​​SEvolt(24)=V3.8V

Alias ​​SEvolt(25)=V4.1V

Alias ​​SEvolt(26)=V4.2V

Alias ​​​​SEvolt(27)=V4.3V

Alias ​​​​SEvolt(28)=V4.4V

Alias ​​SEvolt(29)=V4.5V

Alias ​​SEvolt(30)=V4.6V

Alias ​​SEvolt(31)=V4.7V

Alias ​​​​SEvolt(32)=V4.8V

Otro SEvoltio(33)=C1.1C

Alias ​​SEvolt(34)=C1.2C

Otro SEvoltio(35)=C1.3C

Otro SEvolt(36)=C1.4C

Otro SEvolt(37)=C1.5C

Otro SEvolt(38)=C1.6C

Alias ​​​​SEvolt(39)=C1.7C

Alias ​​SEvolt(40)=C1.8C

Alias ​​SEvolt(41)=C2.1C

Alias ​​SEvolt(42)=C2.2C

Alias ​​SEvolt(43)=C2.3C

Alias ​​SEvolt(44)=C2.4C

Alias ​​SEvolt(45)=C2.5C

Alias ​​SEvolt(46)=C2.6C

Alias ​​SEvolt(47)=C2.7C

Alias ​​SEvolt(48)=C2.8C

Alias ​​​​SEvolt(49)=C3.1C

Alias ​​​​SEvolt(50)=C3.2C

Alias ​​​​SEvolt(51)=C3.3C

Alias ​​​​SEvolt(52)=C3.4C

Alias ​​SEvolt(53)=C3.5C

Alias ​​​​SEvolt(54)=C3.6C

Alias ​​​​SEvolt(55)=C3.7C

Alias ​​​​SEvolt(56)=C3.8C

Alias ​​SEvolt(57)=C4.1C

Alias ​​​​SEvolt(58)=C4.2C

Alias ​​​​SEvolt(59)=C4.3C

Alias ​​SEvolt(60)=C4.4C

Alias ​​SEvolt(61)=C4.5C

Alias ​​​​SEvolt(62)=C4.6C

Alias ​​​​SEvolt(63)=C4.7C

Alias ​​​​SEvolt(64)=C4.8C

Alias ​​SEvolt_2(1)=V1.9V

Alias ​​SEvolt_2(2)=V1.10V

Alias ​​SEvolt_2(3)=V1.11V

Alias ​​SEvolt_2(4)=V1.12V

Alias ​​SEvolt_2(5)=V1.13V

Alias ​​SEvolt_2(6)=V1.14V

Alias ​​SEvolt_2(7)=V1.15V

Alias ​​SEvolt_2(8)=V1.16V

Alias ​​SEvolt_2(9)=V2.9V

Alias ​​SEvolt_2(10)=V2.10V

Alias ​​SEvolt_2(11)=V2.11V

Alias ​​SEvolt_2(12)=V2.12V

Alias ​​SEvolt_2(13)=V2.13V

Alias ​​SEvolt_2(14)=V2.14V

Alias ​​SEvolt_2(15)=V2.15V

Alias ​​SEvolt_2(16)=V2.16V

Alias ​​SEvolt_2(17)=V3.9V

Alias ​​SEvolt_2(18)=V3.10V

Alias ​​SEvolt_2(19)=V3.11V

Alias ​​SEvolt_2(20)=V3.12V

Alias ​​SEvolt_2(21)=V3.13V

Alias ​​SEvolt_2(22)=V3.14V

Alias ​​SEvolt_2(23)=V3.15V

Alias ​​SEvolt_2(24)=V3.16V

Alias ​​SEvolt_2(25)=V4.9V

Alias ​​SEvolt_2(26)=V4.10V

Alias ​​SEvolt_2(27)=V4.11V

Alias ​​SEvolt_2(28)=V4.12V

Alias ​​SEvolt_2(29)=V4.13V

Alias ​​SEvolt_2(30)=V4.14V

Alias ​​SEvolt_2(31)=V4.15V

Alias ​​SEvolt_2(32)=V4.16V

Otros SEvolt_2(33)=C1.9C

Alias ​​SEvolt_2(34)=C1.10C

Otros SEvolt_2(35)=C1.11C

Otros SEvolt_2(36)=C1.12C

Otro SEvolt_2(37)=C1.13C

Otros SEvolt_2(38)=C1.14C

Otros SEvolt_2(39)=C1.15C

Alias ​​SEvolt_2(40)=C4.13C

Alias ​​SEvolt_2(41)=C2.9C

Alias ​​SEvolt_2(42)=C2.10C

Alias ​​SEvolt_2(43)=C2.11C

Alias ​​SEvolt_2(44)=C2.12C

Alias ​​SEvolt_2(45)=C2.13C

Alias ​​SEvolt_2(46)=C2.14C

Alias ​​SEvolt_2(47)=C2.15C

Alias ​​SEvolt_2(48)=C4.14C

Alias ​​SEvolt_2(49)=C3.9C

Alias ​​SEvolt_2(50)=C3.10C

Alias ​​SEvolt_2(51)=C3.11C

Alias ​​SEvolt_2(52)=C3.12C

Alias ​​SEvolt_2(53)=C3.13C

Alias ​​SEvolt_2(54)=C3.14C

Alias ​​SEvolt_2(55)=C3.15C

Alias ​​SEvolt_2(56)=C4.15C

Alias ​​SEvolt_2(57)=C4.9C

Alias ​​SEvolt_2(58)=C4.10C

Alias ​​SEvolt_2(59)=C4.11C

Alias ​​SEvolt_2(60)=C4.12C

Otros Temp_C(1)=T3.4

Otros Temp_C(2)=T3.5

Otros Temp_C(3)=T3.6

Otra temperatura_C(4)=T3.7

Alias ​​Temp_C(5)=T4.1

Alias ​​Temp_C(6)=T4.2

Alias ​​Temp_C(7)=T4.3

Alias ​​Temp_C(8)=T4.4

Alias ​​Temp_C(9)=T4.5

Alias ​​Temp_C(10)=T4.6

Alias ​​Temp_C(11)=T4.7

Alias ​​Temp_C(12)=T2.10

Alias ​​Temp_C(13)=T2.11

Alias ​​Temp_C(14)=T2.12

Alias ​​Temp_C(15)=T2.13

Alias ​​Temp_C(16)=T2.15

Otra temperatura_C(17)=T3.11

Otra temperatura_C(18)=T3.12

Otra temperatura_C(19)=T3.13

Otra temperatura_C(20)=T3.15

Alias ​​Temp_C(21)=T4.15

De lo contrario Temp_C(22)=Tempty1

Alias ​​Temp_C(23)=Tempty2

De lo contrario Temp_C(24)=Tempty3

De lo contrario Temp_C(25)=Tempty4

Otro Temp_C_2(1)=T1.1

Otro Temp_C_2(2)=T1.2

Otro Temp_C_2(3)=T1.3

Otro Temp_C_2(4)=T1.4

Otro Temp_C_2(5)=T1.5

Otro Temp_C_2(6)=T1.6

Otro Temp_C_2(7)=T1.7

Otro Temp_C_2(8)=T1.8

Otro Temp_C_2(9)=T1.9

Otro Temp_C_2(10)=T1.10

Otro Temp_C_2(11)=T1.11

Otro Temp_C_2(12)=T1.12

Otro Temp_C_2(13)=T1.13

Otro Temp_C_2(14)=T1.14

Otro Temp_C_2(15)=T1.15

Alias ​​Temp_C_2(16)=T2.1

Alias ​​Temp_C_2(17)=T2.2

Alias ​​Temp_C_2(18)=T2.3

Alias ​​Temp_C_2(19)=T2.4

Alias ​​Temp_C_2(20)=T2.5

Alias ​​Temp_C_2(21)=T2.6

Alias ​​Temp_C_2(22)=T2.7

Otro Temp_C_2(23)=T3.1

Otro Temp_C_2(24)=T3.2

Otro Temp_C_2(25)=T3.3

'Declarar las unidades para cada medida

Unidades BattV=Voltios

Unidades SlrW=W/m^2

Unidades SlrkJ_2=kJ/m^2

Unidades SlrW_2=W/m^2

Unidades SlrkJ=kJ/m^2

Unidades SlrW_3=W/m^2

Unidades SlrkJ_3=kJ/m^2

Unidades RTempC=Grados C

Unidades Temp_C=Grados C

Unidades RTempC_2=Grados C

Unidades Temp_C_2=Grados C

Unidades AirTC=Grados C

Unidades HR=%

Unidades WS_ms=metros/segundo

Unidades WindDir=Grados

'Definir tablas de datos, la Tabla 1 es la única tabla utilizada en este programa.

'La tabla se promedia en intervalos de 5 minutos y la recopilación de 'datos se produce en el mismo intervalo, por lo tanto, los valores promedio son 'en realidad la medición puntual tomada en ese momento

Tabla de datos (Tabla1, Verdadero, -1)

Intervalo de datos(0,5,Min,10)

Promedio(1,SlrW,FP2,Falso)

Totalizar(1,SlrkJ_2,IEEE4,Falso)

Promedio(1,SlrW_2,FP2,Falso)

Totalizar(1,SlrkJ,IEEE4,Falso)

Promedio(1,SlrW_3,FP2,Falso)

Totalizar(1,SlrkJ_3,IEEE4,Falso)

Promedio(1,DT,FP2,Falso)

Promedio(1,Q,FP2,Falso)

Promedio(1,TCDT,FP2,Falso)

Promedio(1,DBTCDT,FP2,Falso)

Promedio(1,RTempC_2,FP2,Falso)

Promedio(1,Profundidad_nieve,FP2,Falso)

Promedio(1,Temp_C_2(1),FP2,Falso)

Promedio(1,Temp_C_2(2),FP2,Falso)

Promedio(1,Temp_C_2(3),FP2,Falso)

Promedio(1,Temp_C_2(4),FP2,Falso)

Promedio(1,Temp_C_2(5),FP2,Falso)

Promedio(1,Temp_C_2(6),FP2,Falso)

Promedio(1,Temp_C_2(7),FP2,Falso)

Promedio(1,Temp_C_2(8),FP2,Falso)

Promedio(1,Temp_C_2(9),FP2,Falso)

Promedio(1,Temp_C_2(10),FP2,Falso)

Promedio(1,Temp_C_2(11),FP2,Falso)

Promedio(1,Temp_C_2(12),FP2,Falso)

Promedio(1,Temp_C_2(13),FP2,Falso)

Promedio(1,Temp_C_2(14),FP2,Falso)

Promedio(1,Temp_C_2(15),FP2,Falso)

Promedio(1,Temp_C_2(16),FP2,Falso)

Promedio(1,Temp_C_2(17),FP2,Falso)

Promedio(1,Temp_C_2(18),FP2,Falso)

Promedio(1,Temp_C_2(19),FP2,Falso)

Promedio(1,Temp_C_2(20),FP2,Falso)

Promedio(1,Temp_C_2(21),FP2,Falso)

Promedio(1,Temp_C_2(22),FP2,Falso)

Promedio(1,Temp_C_2(23),FP2,Falso)

Promedio(1,Temp_C_2(24),FP2,Falso)

Promedio(1,Temp_C_2(25),FP2,Falso)

Promedio(1,RTempC,FP2,Falso)

Promedio(1,Temp_C(1),FP2,Falso)

Promedio(1,Temp_C(2),FP2,Falso)

Promedio(1,Temp_C(3),FP2,Falso)

Promedio(1,Temp_C(4),FP2,Falso)

Promedio(1,Temp_C(5),FP2,Falso)

Promedio(1,Temp_C(6),FP2,Falso)

Promedio(1,Temp_C(7),FP2,Falso)

Promedio(1,Temp_C(8),FP2,Falso)

Promedio(1,Temp_C(9),FP2,Falso)

Promedio(1,Temp_C(10),FP2,Falso)

Promedio(1,Temp_C(11),FP2,Falso)

Promedio(1,Temp_C(12),FP2,Falso)

Promedio(1,Temp_C(13),FP2,Falso)

Promedio(1,Temp_C(14),FP2,Falso)

Promedio(1,Temp_C(15),FP2,Falso)

Promedio(1,Temp_C(16),FP2,Falso)

Promedio(1,Temp_C(17),FP2,Falso)

Promedio(1,Temp_C(18),FP2,Falso)

Promedio(1,Temp_C(19),FP2,Falso)

Promedio(1,Temp_C(20),FP2,Falso)

Promedio(1,Temp_C(21),FP2,Falso)

Promedio(1,Temp_C(22),FP2,Falso)

Promedio(1,Temp_C(23),FP2,Falso)

Promedio(1,Temp_C(24),FP2,Falso)

Promedio(1,Temp_C(25),FP2,Falso)

Promedio(1,SEvolt(1),FP2,Falso)

Promedio(1,SEvolt(2),FP2,Falso)

Promedio(1,SEvolt(3),FP2,Falso)

Promedio(1,SEvolt(4),FP2,Falso)

Promedio(1,SEvolt(5),FP2,Falso)

Promedio(1,SEvolt(6),FP2,Falso)

Promedio(1,SEvolt(7),FP2,Falso)

Promedio(1,SEvolt(8),FP2,Falso)

Promedio(1,SEvolt(9),FP2,Falso)

Promedio(1,SEvolt(10),FP2,Falso)

Promedio(1,SEvolt(11),FP2,Falso)

Promedio(1,SEvolt(12),FP2,Falso)

Promedio(1,SEvolt(13),FP2,Falso)

Promedio(1,SEvolt(14),FP2,Falso)

Promedio(1,SEvolt(15),FP2,Falso)

Promedio(1,SEvolt(16),FP2,Falso)

Promedio(1,SEvolt(17),FP2,Falso)

Promedio(1,SEvolt(18),FP2,Falso)

Promedio(1,SEvolt(19),FP2,Falso)

Promedio(1,SEvolt(20),FP2,Falso)

Promedio(1,SEvolt(21),FP2,Falso)

Promedio(1,SEvolt(22),FP2,Falso)

Promedio(1,SEvolt(23),FP2,Falso)

Promedio(1,SEvolt(24),FP2,Falso)

Promedio(1,SEvolt(25),FP2,Falso)

Promedio(1,SEvolt(26),FP2,Falso)

Promedio(1,SEvolt(27),FP2,Falso)

Promedio(1,SEvolt(28),FP2,Falso)

Promedio(1,SEvolt(29),FP2,Falso)

Promedio(1,SEvolt(30),FP2,Falso)

Promedio(1,SEvolt(31),FP2,Falso)

Promedio(1,SEvolt(32),FP2,Falso)

Promedio(1,SEvolt(33),FP2,Falso)

Promedio(1,SEvolt(34),FP2,Falso)

Promedio(1,SEvolt(35),FP2,Falso)

Promedio(1,SEvolt(36),FP2,Falso)

Promedio(1,SEvolt(37),FP2,Falso)

Promedio(1,SEvolt(38),FP2,Falso)

Promedio(1,SEvolt(39),FP2,Falso)

Promedio(1,SEvolt(40),FP2,Falso)

Promedio(1,SEvolt(41),FP2,Falso)

Promedio(1,SEvolt(42),FP2,Falso)

Promedio(1,SEvolt(43),FP2,Falso)

Promedio(1,SEvolt(44),FP2,Falso)

Promedio(1,SEvolt(45),FP2,Falso)

Promedio(1,SEvolt(46),FP2,Falso)

Promedio(1,SEvolt(47),FP2,Falso)

Promedio(1,SEvolt(48),FP2,Falso)

Promedio(1,SEvolt(49),FP2,Falso)

Promedio(1,SEvolt(50),FP2,Falso)

Promedio(1,SEvolt(51),FP2,Falso)

Promedio(1,SEvolt(52),FP2,Falso)

Promedio(1,SEvolt(53),FP2,Falso)

Promedio(1,SEvolt(54),FP2,Falso)

Promedio(1,SEvolt(55),FP2,Falso)

Promedio(1,SEvolt(56),FP2,Falso)

Promedio(1,SEvolt(57),FP2,Falso)

Promedio(1,SEvolt(58),FP2,Falso)

Promedio(1,SEvolt(59),FP2,Falso)

Promedio(1,SEvolt(60),FP2,Falso)

Promedio(1,SEvolt(61),FP2,Falso)

Promedio(1,SEvolt(62),FP2,Falso)

Promedio(1,SEvolt(63),FP2,Falso)

Promedio(1,SEvolt(64),FP2,Falso)

Promedio(1,SEvolt_2(1),FP2,Falso)

Promedio(1,SEvolt_2(2),FP2,Falso)

Promedio(1,SEvolt_2(3),FP2,Falso)

Promedio(1,SEvolt_2(4),FP2,Falso)

Promedio(1,SEvolt_2(5),FP2,Falso)

Promedio(1,SEvolt_2(6),FP2,Falso)

Promedio(1,SEvolt_2(7),FP2,Falso)

Promedio(1,SEvolt_2(8),FP2,Falso)

Promedio(1,SEvolt_2(9),FP2,Falso)

Promedio(1,SEvolt_2(10),FP2,Falso)

Promedio(1,SEvolt_2(11),FP2,Falso)

Promedio(1,SEvolt_2(12),FP2,Falso)

Promedio(1,SEvolt_2(13),FP2,Falso)

Promedio(1,SEvolt_2(14),FP2,Falso)

Promedio(1,SEvolt_2(15),FP2,Falso)

Promedio(1,SEvolt_2(16),FP2,Falso)

Promedio(1,SEvolt_2(17),FP2,Falso)

Promedio(1,SEvolt_2(18),FP2,Falso)

Promedio(1,SEvolt_2(19),FP2,Falso)

Promedio(1,SEvolt_2(20),FP2,Falso)

Promedio(1,SEvolt_2(21),FP2,Falso)

Promedio(1,SEvolt_2(22),FP2,Falso)

Promedio(1,SEvolt_2(23),FP2,Falso)

Promedio(1,SEvolt_2(24),FP2,Falso)

Promedio(1,SEvolt_2(25),FP2,Falso)

Promedio(1,SEvolt_2(26),FP2,Falso)

Promedio(1,SEvolt_2(27),FP2,Falso)

Promedio(1,SEvolt_2(28),FP2,Falso)

Promedio(1,SEvolt_2(29),FP2,Falso)

Promedio(1,SEvolt_2(30),FP2,Falso)

Promedio(1,SEvolt_2(31),FP2,Falso)

Promedio(1,SEvolt_2(32),FP2,Falso)

Promedio(1,SEvolt_2(33),FP2,Falso)

Promedio(1,SEvolt_2(34),FP2,Falso)

Promedio(1,SEvolt_2(35),FP2,Falso)

Promedio(1,SEvolt_2(36),FP2,Falso)

Promedio(1,SEvolt_2(37),FP2,Falso)

Promedio(1,SEvolt_2(38),FP2,Falso)

Promedio(1,SEvolt_2(39),FP2,Falso)

Promedio(1,SEvolt_2(40),FP2,Falso)

Promedio(1,SEvolt_2(41),FP2,Falso)

Promedio(1,SEvolt_2(42),FP2,Falso)

Promedio(1,SEvolt_2(43),FP2,Falso)

Promedio(1,SEvolt_2(44),FP2,Falso)

Promedio(1,SEvolt_2(45),FP2,Falso)

Promedio(1,SEvolt_2(46),FP2,Falso)

Promedio(1,SEvolt_2(47),FP2,Falso)

Promedio(1,SEvolt_2(48),FP2,Falso)

Promedio(1,SEvolt_2(49),FP2,Falso)

Promedio(1,SEvolt_2(50),FP2,Falso)

Promedio(1,SEvolt_2(51),FP2,Falso)

Promedio(1,SEvolt_2(52),FP2,Falso)

Promedio(1,SEvolt_2(53),FP2,Falso)

Promedio(1,SEvolt_2(54),FP2,Falso)

Promedio(1,SEvolt_2(55),FP2,Falso)

Promedio(1,SEvolt_2(56),FP2,Falso)

Promedio(1,SEvolt_2(57),FP2,Falso)

Promedio(1,SEvolt_2(58),FP2,Falso)

Promedio(1,SEvolt_2(59),FP2,Falso)

Promedio(1,SEvolt_2(60),FP2,Falso)

Promedio(1,SEvolt_2(61),FP2,Falso)

Promedio(1,SEvolt_2(62),FP2,Falso)

Promedio(1,SEvolt_2(63),FP2,Falso)

Promedio(1,SEvolt_2(64),FP2,Falso)

Promedio(1,AirTC,FP2,Falso)

Muestra(1,RH,FP2)

Promedio(1,WS_ms,FP2,Falso)

Muestra(1,WindDir,FP2)

Mesa final

Tabla de datos (Tabla2, Verdadero, -1)

Intervalo de datos (0,1440, mín., 10)

Mínimo(1,BattV,FP2,Falso,Falso)

Mesa final

'Programa principal, aquí es donde se realizan todas las mediciones.

IniciarProg

'Configurar un análisis para que se realice cada 5 minutos

Escanear(5,min,1,0)

'Registrador de datos predeterminado Batería Medición de voltaje BattV

Batería (BattV)

'Medidas directas del piranómetro CMP22 SlrkJ y SlrW

VoltDiff(SlrW,1,mV25,1,Verdadero,0,_60Hz,1,0)

Si SlrW<0 entonces SlrW=0

SlrkJ=SlrW*33.25942

SlrW=SlrW*105.9322

'CMP11 Mediciones del piranómetro SlrkJ_2 y SlrW_2

'Este sensor ha sido reemplazado temporalmente por un 'piranómetro de prueba, con un factor de calibración diferente

VoltDiff(SlrW_2,1,mV25,2,Verdadero,0,_60Hz,1,0)

Si SlrW_2<0 Entonces SlrW_2=0

SlrkJ_2=SlrW_2*33.25942

'SlrW_2=SlrW_2*105.5966 *****Factor CMP 11****

SlrW_2=SlrW_2*142.857

'Medidas del piranómetro difuso CMP22 SlrkJ_3 y SlrW_3

VoltDiff(SlrW_3,1,mV25,3,Verdadero,0,_60Hz,1,0)

Si SlrW_3<0 Entonces SlrW_3=0

SlrkJ_3=SlrW_3*33.25942

SlrW_3=SlrW_3*110.8647

'Medidas del sensor de rango sónico SR50A (salida SDI-12)

'La altura del sensor se configuró en una medida arbitraria para el 'principio

Altura_sensor=2

Grabadora SDI12(SR50A(),7,"0","M1!",1,0)

TCDT=DT*SQR((AireTC+273.15)/273.15)

Profundidad_nieve=Altura_sensor-TCDT

'Medidas de termopar tipo T (cobre-constantan) 'Temp_C_2() en el multiplexor AM25T

AM25T(Temp_C_2(),25,mV2_5C,1,4,TipoT,RTempC_2,5,3,3,Verdadero,0,_60Hz,1,0)

'Medidas de termopar tipo T (cobre-constantan) 'Temp_C() en el multiplexor AM25T

AM25T(Temp_C(),25,mV2_5C,1,5,TipoT,RTempC,5,4,3,Verdadero,0,_60Hz,1,0)

'05103 Mediciones del sensor de dirección y velocidad del viento

'Mide la velocidad del viento

Conteo de pulsos(WS_ms,1,1,1,1,0.098,0)

'Mide la dirección del viento, esta medición utiliza el puerto 1 de excitación'

BrHalf(DirViento,1,mV2500,11,1,1,2500,Verdadero,0,_60Hz,355,0)

Si WindDir>=360 Entonces WindDir=0

'Encienda ambos multiplexores AM16/32

Conjunto de puertos(2,1)

Retraso (0,150, mseg)

'Inicializar contador de datos

Lcuenta=1

'Iniciar escaneo del primer multiplexor

Subexploración(0,useg,32)

'Cambiar al siguiente canal del multiplexor AM16/32

Puerto de pulso(1,10000)

Retraso (0,100,useg)

'Medidas genéricas de voltaje de extremo único SEVolt() en 'el multiplexor AM16/32: modifique este código para leer 'corriente como 0-2.5 y voltaje como 0-5V

VoltSe(SEvolt(LCount),2,mV5000,13,Verdadero,0,_60Hz,1,0)

LCuenta=LCuenta+2

SiguienteSubScan

'Escanear multiplexor AYA occidental

LCount=1

Subexploración(0,useg,32)

'Cambiar al siguiente canal del multiplexor AM16/32

Puerto de pulso(1,10000)

Retraso (0,100,useg)

'Los dos últimos canales diferenciales de este multiplexor 'también miden la temperatura y la humedad relativa, y estas declaraciones IF 'garantizan que se midan correctamente.

Si Lcount=61

'Medir la temperatura del aire

VoltDiff (AirTC,1,mV2500,8,Verdadero,0,_60Hz,0.1,-40)

De lo contrario, LCount = 63

'Medidas genéricas de tensión diferencial RH:

VoltDiff (RH,1,mV2500,8,Verdadero,0,_60Hz,0.1,0)

Demás

'Medidas genéricas de voltaje de extremo único SEVolt() en 'el multiplexor AM16/32: modifique este código para leer 'corriente como 0-2.5 y voltaje como 0-5V

VoltSe(SEvolt_2(LCount),2,mV5000,15,Verdadero,0,_60Hz,1,0)

Terminara si

LCuenta=LCuenta+2

SiguienteSubScan

'Apague el multiplexor AM16/32

Conjunto de puertos(2,0)

Retraso (0,150, mseg)

'Llamar tablas de datos y almacenar datos

LlamarTabla(Tabla1)

LlamarTabla(Tabla2)

Siguiente escaneo

FinProg

Icono de información FA.svgIcono de ángulo hacia abajo.svgDatos de la página
Parte deProtocolos de laboratorio del Queens Applied Sustainability Group , tesis de Rob Andrews
Palabras clavefotovoltaica
AutoresRob Andrews
LicenciaCC-BY-SA-3.0
IdiomaEnglish (en)
Relacionado0 subpáginas , 8 páginas enlazan aquí
Impacto5.670 páginas vistas
Creado7 de abril de 2011 por Rob Andrews
Modificado23 de octubre de 2023 por Guión de mantenimiento
Cookies help us deliver our services. By using our services, you agree to our use of cookies.