Programming a CR1000 Datalogger/zh
CRBasic 是一种编程语言,用于控制Campbell Scientific数据记录仪的功能。该程序控制记录仪中与数据采集相关的所有过程,包括变量名称、数据表布局、传感器定义和量程以及控制端口操作。
要开始使用 CRBasic 编写程序,建议先在 Loggernet 提供的 Shortcut 中创建一个程序。Shortcut 包含一个向导,可以创建程序的基本结构,包括表格和传感器声明。程序在 Shortcut 中创建完成后,即可在 CRBasic 中对其进行编辑,添加所需的任何高级功能。本指南涵盖了 CRBasic 的基本功能,以及在圣劳伦斯学院测试站点进行编程的一些具体细节。更详细的编码文档可在Campbell Scientific 网站上的 CR1000 手册中找到。
任何 CRBasic 代码都包含三个主要部分:i) 变量声明 ii) 表定义 iii) 集合
变量声明
代码的第一部分使用`Public`命令定义了数据记录器将要收集的所有变量。单个变量通过输入变量名来定义,而数组变量(可用于存储多个值,并使用索引作为变量名)则通过在变量名后用方括号添加数组长度来定义。例如:
声明一个名为 Temp_C_2 的变量,它有 25 个可索引的值。这在使用多路复用器时非常有用,因为每个索引都可以代表一个多路复用器端口。然而,这些索引变量也可能带来问题,因为很难区分它们连接到哪个物理传感器。因此,使用Alias命令将数组中的每个值重命名以表示它所代表的传感器会很有帮助。例如:
将 Temp_C_2 中的第五个值重命名,以表明这是在测量数组第一行第五个位置的热电偶。
表声明
定义好变量后,可以选择将它们拆分成多个数据表,以便更轻松地进行数据操作。在本例中,所有变量都输出到一个名为 Table1 的表中。此外,还可以对表中的数据进行时间平均。例如,可以以 1 分钟的间隔采集数据,但表中仅存储该数据的 5 分钟平均值。这样做的好处是,在保证数据采集精度的同时,还能减小采集的数据文件大小,使其更易于存储、传输和后处理。
本程序采用5分钟间隔进行数据采样和采集。这是因为系统中使用了多路复用器,而多路复用器的循环寿命有限。因此,选择5分钟间隔采样以减少多路复用器的循环次数,从而在循环时间和数据分辨率之间取得良好的平衡。
数据表使用以下两行代码声明:
这定义了数据表的内存使用量和记录间隔。Campbell Scientific 系统中数据表的一个重要特性是循环内存的使用。设备的基本内存相对较小,只有 4MB,用于存储程序和所有数据。如果采集的数据超过了系统可用内存空间,数据将循环到数据表的顶部,首先擦除最早的数据。可以通过设备配置实用程序或连接屏幕查看工作站的内存状态。
数据收集
数据采集在一个重复循环中进行,该循环会一直运行,直到控制器通过日志记录器手动停止程序为止。循环的开始由以下两行代码标记:
该命令启动循环,并根据数据记录器时钟设置每 5 分钟进行一次扫描。此后的每个命令都会在扫描开始时按顺序执行。
程序中每项测量都由单独的一行代码启动,该行代码声明要进行的测量类型、读取数据的输入通道以及测量所需的任何特殊后处理。例如:
从通道 1 读取差分电压测量值,并将其存储在变量 SlrW 中,电压范围为 25 mV。此声明中的其余参数与值的采集方式有关,完整的说明可在 CRBasic 帮助中找到。此外,右键单击测量声明将打开一个窗口,其中描述了每个输入参数以及每个值的标准。
要测量多路复用器,需要更复杂的代码。测量多路复用器的基本步骤如下:
i) 通过将res端口设置为高来初始化单元
ii) 进入扫描循环,并向CLK端口发送脉冲,将继电器设置为第一个输入。
iii) 将测量值读入数组的正确槽位。请注意,由于每个差分通道都要进行两次单端测量,因此每次声明 VoltSe 都会将两个连续的值记录到测量数组的两个连续槽位中。这是通过将“repetitions”字段(此声明中的第二个字段)设置为 2 来实现的,这样会从声明的通道(本例中为 13)读取一个测量值并将其放入数组的第一个槽位,然后从下一个通道(本例中为 14)读取一个测量值并将其放入数组的下一个槽位。
iv) 返回开头,继续重复扫描,直到读取多路复用器上的所有端口。
v) 将 RES 端口设置为低电平以停用数据记录器
程序结束时,必须调用表函数,将所有收集到的变量永久存储在预定义的表中。
SEARC OTF 的最新代码
以下是SEARC OTF目前使用的最新代码。请注意,任何以单引号 (') 开头的行都表示代码注释。
“该程序自2011年1月起在圣劳伦斯CR1000数据记录仪中运行”
由 Short Cut (2.8) 创建
声明变量
公共 BattV
公共 slrW
公共 SlrkJ_2
公共 SlrW_2
公共 SlrkJ
公共 SlrW_3
公共 SlrkJ_3
公共 SR50A(2)
公共TCDT
公共 DBTCDT
公共 RTempC
公共温度_C(25)
公共 RTempC_2
公共温度_C_2(25)
公共航空运输公司
公共RH
公共 WS_ms
公共风向
公共 SEvolt(64)
公共 SEvolt_2(64)
公共传感器高度
公共积雪深度
公共 LCount
为变量设置别名,以便更轻松地识别数据。这些名称将被记录在数据表中。
别名 SR50A(1)=DT
别名 SR50A(2)=Q
别名 SEvolt(1)=V1.1V
别名 SEvolt(2)=V1.2V
别名 SEvolt(3)=V1.3V
别名 SEvolt(4)=V1.4V
别名 SEvolt(5)=V1.5V
别名 SEvolt(6)=V1.6V
别名 SEvolt(7)=V1.7V
别名 SEvolt(8)=V1.8V
别名 SEvolt(9)=V2.1V
别名 SEvolt(10)=V2.2V
别名 SEvolt(11)=V2.3V
别名 SEvolt(12)=V2.4V
别名 SEvolt(13)=V2.5V
别名 SEvolt(14)=V2.6V
别名 SEvolt(15)=V2.7V
别名 SEvolt(16)=V2.8V
别名 SEvolt(17)=V3.1V
别名 SEvolt(18)=V3.2V
别名 SEvolt(19)=V3.3V
别名 SEvolt(20)=V3.4V
别名 SEvolt(21)=V3.5V
别名 SEvolt(22)=V3.6V
别名 SEvolt(23)=V3.7V
别名 SEvolt(24)=V3.8V
别名 SEvolt(25)=V4.1V
别名 SEvolt(26)=V4.2V
别名 SEvolt(27)=V4.3V
别名 SEvolt(28)=V4.4V
别名 SEvolt(29)=V4.5V
别名 SEvolt(30)=V4.6V
别名 SEvolt(31)=V4.7V
别名 SEvolt(32)=V4.8V
别名 SEvolt(33)=C1.1C
别名 SEvolt(34)=C1.2C
别名 SEvolt(35)=C1.3C
别名 SEvolt(36)=C1.4C
别名 SEvolt(37)=C1.5C
别名 SEvolt(38)=C1.6C
别名 SEvolt(39)=C1.7C
别名 SEvolt(40)=C1.8C
别名 SEvolt(41)=C2.1C
别名 SEvolt(42)=C2.2C
别名 SEvolt(43)=C2.3C
别名 SEvolt(44)=C2.4C
别名 SEvolt(45)=C2.5C
别名 SEvolt(46)=C2.6C
别名 SEvolt(47)=C2.7C
别名 SEvolt(48)=C2.8C
别名 SEvolt(49)=C3.1C
别名 SEvolt(50)=C3.2C
别名 SEvolt(51)=C3.3C
别名 SEvolt(52)=C3.4C
别名 SEvolt(53)=C3.5C
别名 SEvolt(54)=C3.6C
别名 SEvolt(55)=C3.7C
别名 SEvolt(56)=C3.8C
别名 SEvolt(57)=C4.1C
别名 SEvolt(58)=C4.2C
别名 SEvolt(59)=C4.3C
别名 SEvolt(60)=C4.4C
别名 SEvolt(61)=C4.5C
别名 SEvolt(62)=C4.6C
别名 SEvolt(63)=C4.7C
别名 SEvolt(64)=C4.8C
别名 SEvolt_2(1)=V1.9V
别名 SEvolt_2(2)=V1.10V
别名 SEvolt_2(3)=V1.11V
别名 SEvolt_2(4)=V1.12V
别名 SEvolt_2(5)=V1.13V
别名 SEvolt_2(6)=V1.14V
别名 SEvolt_2(7)=V1.15V
别名 SEvolt_2(8)=V1.16V
别名 SEvolt_2(9)=V2.9V
别名 SEvolt_2(10)=V2.10V
别名 SEvolt_2(11)=V2.11V
别名 SEvolt_2(12)=V2.12V
别名 SEvolt_2(13)=V2.13V
别名 SEvolt_2(14)=V2.14V
别名 SEvolt_2(15)=V2.15V
别名 SEvolt_2(16)=V2.16V
别名 SEvolt_2(17)=V3.9V
别名 SEvolt_2(18)=V3.10V
别名 SEvolt_2(19)=V3.11V
别名 SEvolt_2(20)=V3.12V
别名 SEvolt_2(21)=V3.13V
别名 SEvolt_2(22)=V3.14V
别名 SEvolt_2(23)=V3.15V
别名 SEvolt_2(24)=V3.16V
别名 SEvolt_2(25)=V4.9V
别名 SEvolt_2(26)=V4.10V
别名 SEvolt_2(27)=V4.11V
别名 SEvolt_2(28)=V4.12V
别名 SEvolt_2(29)=V4.13V
别名 SEvolt_2(30)=V4.14V
别名 SEvolt_2(31)=V4.15V
别名 SEvolt_2(32)=V4.16V
别名 SEvolt_2(33)=C1.9C
别名 SEvolt_2(34)=C1.10C
别名 SEvolt_2(35)=C1.11C
别名 SEvolt_2(36)=C1.12C
别名 SEvolt_2(37)=C1.13C
别名 SEvolt_2(38)=C1.14C
别名 SEvolt_2(39)=C1.15C
别名 SEvolt_2(40)=C4.13C
别名 SEvolt_2(41)=C2.9C
别名 SEvolt_2(42)=C2.10C
别名 SEvolt_2(43)=C2.11C
别名 SEvolt_2(44)=C2.12C
别名 SEvolt_2(45)=C2.13C
别名 SEvolt_2(46)=C2.14C
别名 SEvolt_2(47)=C2.15C
别名 SEvolt_2(48)=C4.14C
别名 SEvolt_2(49)=C3.9C
别名 SEvolt_2(50)=C3.10C
别名 SEvolt_2(51)=C3.11C
别名 SEvolt_2(52)=C3.12C
别名 SEvolt_2(53)=C3.13C
别名 SEvolt_2(54)=C3.14C
别名 SEvolt_2(55)=C3.15C
别名 SEvolt_2(56)=C4.15C
别名 SEvolt_2(57)=C4.9C
别名 SEvolt_2(58)=C4.10C
别名 SEvolt_2(59)=C4.11C
别名 SEvolt_2(60)=C4.12C
别名 Temp_C(1)=T3.4
别名 Temp_C(2)=T3.5
别名 Temp_C(3)=T3.6
别名 Temp_C(4)=T3.7
别名 Temp_C(5)=T4.1
别名 Temp_C(6)=T4.2
别名 Temp_C(7)=T4.3
别名 Temp_C(8)=T4.4
别名 Temp_C(9)=T4.5
别名 Temp_C(10)=T4.6
别名 Temp_C(11)=T4.7
别名 Temp_C(12)=T2.10
别名 Temp_C(13)=T2.11
别名 Temp_C(14)=T2.12
别名 Temp_C(15)=T2.13
别名 Temp_C(16)=T2.15
别名 Temp_C(17)=T3.11
别名 Temp_C(18)=T3.12
别名 Temp_C(19)=T3.13
别名 Temp_C(20)=T3.15
别名 Temp_C(21)=T4.15
别名 Temp_C(22)=Tempty1
别名 Temp_C(23)=Tempty2
别名 Temp_C(24)=Tempty3
别名 Temp_C(25)=Tempty4
别名 Temp_C_2(1)=T1.1
别名 Temp_C_2(2)=T1.2
别名 Temp_C_2(3)=T1.3
别名 Temp_C_2(4)=T1.4
别名 Temp_C_2(5)=T1.5
别名 Temp_C_2(6)=T1.6
别名 Temp_C_2(7)=T1.7
别名 Temp_C_2(8)=T1.8
别名 Temp_C_2(9)=T1.9
别名 Temp_C_2(10)=T1.10
别名 Temp_C_2(11)=T1.11
别名 Temp_C_2(12)=T1.12
别名 Temp_C_2(13)=T1.13
别名 Temp_C_2(14)=T1.14
别名 Temp_C_2(15)=T1.15
别名 Temp_C_2(16)=T2.1
别名 Temp_C_2(17)=T2.2
别名 Temp_C_2(18)=T2.3
别名 Temp_C_2(19)=T2.4
别名 Temp_C_2(20)=T2.5
别名 Temp_C_2(21)=T2.6
别名 Temp_C_2(22)=T2.7
别名 Temp_C_2(23)=T3.1
别名 Temp_C_2(24)=T3.2
别名 Temp_C_2(25)=T3.3
声明每项测量的单位
电池电压单位=伏特
单位 SlrW=W/m^2
单位 SlrkJ_2=kJ/m^2
单位 SlrW_2=W/m^2
单位 SlrkJ=kJ/m^2
单位 SlrW_3=W/m^2
单位 SlrkJ_3=kJ/m^2
单位:RTempC=摄氏度
单位 Temp_C=摄氏度
单位 RTempC_2=摄氏度
单位 Temp_C_2=摄氏度
单位 AirTC=摄氏度
单位:RH=%
单位 WS_ms=米/秒
单位:风向=度
定义数据表,表 1 是本程序中使用的唯一表。
表格中的平均值是按5分钟的时间间隔计算的,数据采集也是以相同的时间间隔进行的,因此平均值实际上是该时间点的测量值。
数据表(Table1,True,-1)
DataInterval(0,5,分钟,10)
平均值(1,SlrW,FP2,False)
总计(1,SlrkJ_2,IEEE4,False)
平均值(1,SlrW_2,FP2,False)
Totalize(1,SlrkJ,IEEE4,False)
平均值(1,SlrW_3,FP2,False)
总计(1,SlrkJ_3,IEEE4,False)
平均值(1,DT,FP2,False)
平均值(1,Q,FP2,False)
平均值(1,TCDT,FP2,False)
平均值(1,DBTCDT,FP2,False)
平均值(1,RTempC_2,FP2,False)
平均值(1,雪深,FP2,False)
平均值(1,Temp_C_2(1),FP2,False)
平均值(1,Temp_C_2(2),FP2,False)
平均值(1,Temp_C_2(3),FP2,False)
平均值(1,Temp_C_2(4),FP2,False)
平均值(1,Temp_C_2(5),FP2,False)
平均值(1,Temp_C_2(6),FP2,False)
平均值(1,Temp_C_2(7),FP2,False)
平均值(1,Temp_C_2(8),FP2,False)
平均值(1,Temp_C_2(9),FP2,False)
平均值(1,Temp_C_2(10),FP2,False)
平均值(1,Temp_C_2(11),FP2,False)
平均值(1,Temp_C_2(12),FP2,False)
平均值(1,Temp_C_2(13),FP2,False)
平均值(1,Temp_C_2(14),FP2,False)
平均值(1,Temp_C_2(15),FP2,False)
平均值(1,Temp_C_2(16),FP2,False)
平均值(1,Temp_C_2(17),FP2,False)
平均值(1,Temp_C_2(18),FP2,False)
平均值(1,Temp_C_2(19),FP2,False)
平均值(1,Temp_C_2(20),FP2,False)
平均值(1,Temp_C_2(21),FP2,False)
平均值(1,Temp_C_2(22),FP2,False)
平均值(1,Temp_C_2(23),FP2,False)
平均值(1,Temp_C_2(24),FP2,False)
平均值(1,Temp_C_2(25),FP2,False)
平均值(1,RTempC,FP2,False)
平均值(1,Temp_C(1),FP2,False)
平均值(1,Temp_C(2),FP2,False)
平均值(1,Temp_C(3),FP2,False)
平均值(1,Temp_C(4),FP2,False)
平均值(1,Temp_C(5),FP2,False)
平均值(1,Temp_C(6),FP2,False)
平均值(1,Temp_C(7),FP2,False)
平均值(1,Temp_C(8),FP2,False)
平均值(1,Temp_C(9),FP2,False)
平均值(1,Temp_C(10),FP2,False)
平均值(1,Temp_C(11),FP2,False)
平均值(1,Temp_C(12),FP2,False)
平均值(1,Temp_C(13),FP2,False)
平均值(1,Temp_C(14),FP2,False)
平均值(1,Temp_C(15),FP2,False)
平均值(1,Temp_C(16),FP2,False)
平均值(1,Temp_C(17),FP2,False)
平均值(1,Temp_C(18),FP2,False)
平均值(1,Temp_C(19),FP2,False)
平均值(1,Temp_C(20),FP2,False)
平均值(1,Temp_C(21),FP2,False)
平均值(1,Temp_C(22),FP2,False)
平均值(1,Temp_C(23),FP2,False)
平均值(1,Temp_C(24),FP2,False)
平均值(1,Temp_C(25),FP2,False)
平均值(1,SEvolt(1),FP2,False)
平均值(1,SEvolt(2),FP2,False)
平均值(1,SEvolt(3),FP2,False)
平均值(1,SEvolt(4),FP2,False)
平均值(1,SEvolt(5),FP2,False)
平均值(1,SEvolt(6),FP2,False)
平均值(1,SEvolt(7),FP2,False)
平均值(1,SEvolt(8),FP2,False)
平均值(1,SEvolt(9),FP2,False)
平均值(1,SEvolt(10),FP2,False)
平均值(1,SEvolt(11),FP2,False)
平均值(1,SEvolt(12),FP2,False)
平均值(1,SEvolt(13),FP2,False)
平均值(1,SEvolt(14),FP2,False)
平均值(1,SEvolt(15),FP2,False)
平均值(1,SEvolt(16),FP2,False)
平均值(1,SEvolt(17),FP2,False)
平均值(1,SEvolt(18),FP2,False)
平均值(1,SEvolt(19),FP2,False)
平均值(1,SEvolt(20),FP2,False)
平均值(1,SEvolt(21),FP2,False)
平均值(1,SEvolt(22),FP2,False)
平均值(1,SEvolt(23),FP2,False)
平均值(1,SEvolt(24),FP2,False)
平均值(1,SEvolt(25),FP2,False)
平均值(1,SEvolt(26),FP2,False)
平均值(1,SEvolt(27),FP2,False)
平均值(1,SEvolt(28),FP2,False)
平均值(1,SEvolt(29),FP2,False)
平均值(1,SEvolt(30),FP2,False)
平均值(1,SEvolt(31),FP2,False)
平均值(1,SEvolt(32),FP2,False)
平均值(1,SEvolt(33),FP2,False)
平均值(1,SEvolt(34),FP2,False)
平均值(1,SEvolt(35),FP2,False)
平均值(1,SEvolt(36),FP2,False)
平均值(1,SEvolt(37),FP2,False)
平均值(1,SEvolt(38),FP2,False)
平均值(1,SEvolt(39),FP2,False)
平均值(1,SEvolt(40),FP2,False)
平均值(1,SEvolt(41),FP2,False)
平均值(1,SEvolt(42),FP2,False)
平均值(1,SEvolt(43),FP2,False)
平均值(1,SEvolt(44),FP2,False)
平均值(1,SEvolt(45),FP2,False)
平均值(1,SEvolt(46),FP2,False)
平均值(1,SEvolt(47),FP2,False)
平均值(1,SEvolt(48),FP2,False)
平均值(1,SEvolt(49),FP2,False)
平均值(1,SEvolt(50),FP2,False)
平均值(1,SEvolt(51),FP2,False)
平均值(1,SEvolt(52),FP2,False)
平均值(1,SEvolt(53),FP2,False)
平均值(1,SEvolt(54),FP2,False)
平均值(1,SEvolt(55),FP2,False)
平均值(1,SEvolt(56),FP2,False)
平均值(1,SEvolt(57),FP2,False)
平均值(1,SEvolt(58),FP2,False)
平均值(1,SEvolt(59),FP2,False)
平均值(1,SEvolt(60),FP2,False)
平均值(1,SEvolt(61),FP2,False)
平均值(1,SEvolt(62),FP2,False)
平均值(1,SEvolt(63),FP2,False)
平均值(1,SEvolt(64),FP2,False)
平均值(1,SEvolt_2(1),FP2,False)
平均值(1,SEvolt_2(2),FP2,False)
平均值(1,SEvolt_2(3),FP2,False)
平均值(1,SEvolt_2(4),FP2,False)
平均值(1,SEvolt_2(5),FP2,False)
平均值(1,SEvolt_2(6),FP2,False)
平均值(1,SEvolt_2(7),FP2,False)
平均值(1,SEvolt_2(8),FP2,False)
平均值(1,SEvolt_2(9),FP2,False)
平均值(1,SEvolt_2(10),FP2,False)
平均值(1,SEvolt_2(11),FP2,False)
平均值(1,SEvolt_2(12),FP2,False)
平均值(1,SEvolt_2(13),FP2,False)
平均值(1,SEvolt_2(14),FP2,False)
平均值(1,SEvolt_2(15),FP2,False)
平均值(1,SEvolt_2(16),FP2,False)
平均值(1,SEvolt_2(17),FP2,False)
平均值(1,SEvolt_2(18),FP2,False)
平均值(1,SEvolt_2(19),FP2,False)
平均值(1,SEvolt_2(20),FP2,False)
平均值(1,SEvolt_2(21),FP2,False)
平均值(1,SEvolt_2(22),FP2,False)
平均值(1,SEvolt_2(23),FP2,False)
平均值(1,SEvolt_2(24),FP2,False)
平均值(1,SEvolt_2(25),FP2,False)
平均值(1,SEvolt_2(26),FP2,False)
平均值(1,SEvolt_2(27),FP2,False)
平均值(1,SEvolt_2(28),FP2,False)
平均值(1,SEvolt_2(29),FP2,False)
平均值(1,SEvolt_2(30),FP2,False)
平均值(1,SEvolt_2(31),FP2,False)
平均值(1,SEvolt_2(32),FP2,False)
平均值(1,SEvolt_2(33),FP2,False)
平均值(1,SEvolt_2(34),FP2,False)
平均值(1,SEvolt_2(35),FP2,False)
平均值(1,SEvolt_2(36),FP2,False)
平均值(1,SEvolt_2(37),FP2,False)
平均值(1,SEvolt_2(38),FP2,False)
平均值(1,SEvolt_2(39),FP2,False)
平均值(1,SEvolt_2(40),FP2,False)
平均值(1,SEvolt_2(41),FP2,False)
平均值(1,SEvolt_2(42),FP2,False)
平均值(1,SEvolt_2(43),FP2,False)
平均值(1,SEvolt_2(44),FP2,False)
平均值(1,SEvolt_2(45),FP2,False)
平均值(1,SEvolt_2(46),FP2,False)
平均值(1,SEvolt_2(47),FP2,False)
平均值(1,SEvolt_2(48),FP2,False)
平均值(1,SEvolt_2(49),FP2,False)
平均值(1,SEvolt_2(50),FP2,False)
平均值(1,SEvolt_2(51),FP2,False)
平均值(1,SEvolt_2(52),FP2,False)
平均值(1,SEvolt_2(53),FP2,False)
平均值(1,SEvolt_2(54),FP2,False)
平均值(1,SEvolt_2(55),FP2,False)
平均值(1,SEvolt_2(56),FP2,False)
平均值(1,SEvolt_2(57),FP2,False)
平均值(1,SEvolt_2(58),FP2,False)
平均值(1,SEvolt_2(59),FP2,False)
平均值(1,SEvolt_2(60),FP2,False)
平均值(1,SEvolt_2(61),FP2,False)
平均值(1,SEvolt_2(62),FP2,False)
平均值(1,SEvolt_2(63),FP2,False)
平均值(1,SEvolt_2(64),FP2,False)
平均值(1,AirTC,FP2,False)
样本(1,RH,FP2)
平均值(1,WS_ms,FP2,False)
示例(1,风向,FP2)
桌尾
数据表(Table2,True,-1)
DataInterval(0,1440,分钟,10)
Minimum(1,BattV,FP2,False,False)
桌尾
主程序,所有测量都在这里进行。
开始程序
设置每 5 分钟扫描一次
扫描(5,分钟,1,0)
默认数据记录器电池电压测量 BattV
电池(BattV)
CMP22 直接辐射计测量 SlrkJ 和 SlrW
VoltDiff(SlrW,1,mV25,1,True,0,_60Hz,1,0)
如果 SlrW<0,则 SlrW=0
SlrkJ=SlrW*33.25942
SlrW=SlrW*105.9322
'CMP11 日射强度计测量 SlrkJ_2 和 SlrW_2
该传感器已暂时替换为测试用辐射表,其校准系数不同。
VoltDiff(SlrW_2,1,mV25,2,True,0,_60Hz,1,0)
如果 SlrW_2<0,则 SlrW_2=0
SlrkJ_2=SlrW_2*33.25942
'SlrW_2=SlrW_2*105.5966 *****CMP 11 因子****
SlrW_2=SlrW_2*142.857
'CMP22 漫射辐射计测量 SlrkJ_3 和 SlrW_3
VoltDiff(SlrW_3,1,mV25,3,True,0,_60Hz,1,0)
如果 SlrW_3<0,则 SlrW_3=0
SlrkJ_3=SlrW_3*33.25942
SlrW_3=SlrW_3*110.8647
SR50A 超声波测距传感器(SDI-12 输出)测量
“传感器高度在开始时被设置为任意测量值”。
传感器高度=2
SDI12Recorder(SR50A(),7,"0","M1!",1,0)
TCDT=DT*SQR((AirTC+273.15)/273.15)
雪深=传感器高度-TCDT
“T型(铜-康铜)热电偶测量” AM25T多路复用器上的Temp_C_2()
AM25T(Temp_C_2(),25,mV2_5C,1,4,TypeT,RTempC_2,5,3,3,True,0,_60Hz,1,0)
“T型(铜-康铜)热电偶测量” AM25T多路复用器上的Temp_C()
AM25T(Temp_C(),25,mV2_5C,1,5,TypeT,RTempC,5,4,3,True,0,_60Hz,1,0)
'05103 风速和风向传感器测量
测量风速
PulseCount(WS_ms,1,1,1,1,0.098,0)
测量风向,此测量使用激励端口 1
BrHalf(WindDir,1,mV2500,11,1,1,2500,True,0,_60Hz,355,0)
如果风向>=360,则风向=0
打开两个 AM16/32 多路复用器
PortSet(2,1)
延迟(0,150,毫秒)
初始化数据计数器
Lcount=1
开始扫描第一个多路复用器
SubScan(0,uSec,32)
切换到下一个 AM16/32 多路复用器频道
PulsePort(1,10000)
延迟(0、100、微秒)
在 AM16/32 多路复用器上使用 SEVolt() 函数进行通用单端电压测量:修改此代码以读取 0-2.5V 的电流和 0-5V 的电压。
VoltSe(SEvolt(LCount),2,mV5000,13,True,0,_60Hz,1,0)
LCount=LCount+2
NextSubScan
扫描西部 AYA 多路复用器
LCount=1
SubScan(0,uSec,32)
切换到下一个 AM16/32 多路复用器频道
PulsePort(1,10000)
延迟(0、100、微秒)
该多路复用器的最后两个差分通道也测量温度和相对湿度,这些 IF 语句确保正确测量这些参数。
如果 Lcount=61
测量气温
VoltDiff (AirTC,1,mV2500,8,True,0,_60Hz,0.1,-40)
否则如果 LCount=63
通用差分电压测量 RH:
VoltDiff (RH,1,mV2500,8,True,0,_60Hz,0.1,0)
别的
在 AM16/32 多路复用器上使用 SEVolt() 函数进行通用单端电压测量:修改此代码以读取 0-2.5V 的电流和 0-5V 的电压。
VoltSe(SEvolt_2(LCount),2,mV5000,15,True,0,_60Hz,1,0)
结束如果
LCount=LCount+2
NextSubScan
关闭 AM16/32 多路复用器
PortSet(2,0)
延迟(0,150,毫秒)
调用数据表并存储数据
调用表(表1)
调用表(表2)
NextScan
结束程序
| 作者 | |
|---|---|
| 执照 | CC-BY-SA-3.0 |
| 组织 | 女王大学 |
| 引用方式 | R. Andrews (2011–2026)。“CR1000 数据记录仪编程”。Appropedia 。检索日期:2026 年 4 月 27 日。 |
