在DataTable中记录程序常量 _Campbellsci论坛问答

我想在程序启动时在DataTable(或等效程序)中记录常数值(使用Const或ConstTable结构定义)。这可以在DataTable中完成吗,即使用sample()指令?

我想在扫描开始前更新这样一个表,例如:

在DataTable中记录程序常量
_Campbellsci论坛问答

开始进度
调用表日志常量

...
下一次扫描
结束程序

新对话如下:

柯文,


构造表
常数A=1
常数B=2
结束构造表

DataTable(常量,True,100)
样品(1、A、FP2)
样品(1、B、FP2)
床头柜

开始进度
调用表(常量)
扫描(1,秒,0,0)
下一次扫描
结束程序

新对话如下:

是的,这就是我想做的。我不知道数据表sample()指令是否可以(或不能)处理常量。

我的目标是记录程序中定义的(所有或部分)常量。这种需要有两个原因,最明显的是,如果ConstTable块中的常量发生更改,它们可能不会被记录或记录在任何地方。

另一个原因是,即使我们知道程序中的常量是什么,生成的数据表也可能暗示(错误地!)给定的程序适用于整个数据集,因此如果程序发生更改,可能无法判断哪些常量在起作用(并且更改不会迫使表重新分配)。

我希望您的解决方案应该在其他数据表的旁边留下一个带有时间戳的常量值记录。

这适用于字符串和数字类型的常量吗?

谢谢

新对话如下:

数字字符串与(大小合理的)字符串之间应该没有任何问题(不要试图在其中存储论文)。

我在CR200上做了类似的事情,这样现场技术人员就可以检索所使用的常量/设置,因为你无法从记录器中检索CR200程序。所以,我明白你是从哪里来的。

查看您关于多个ConstTables的其他帖子

新对话如下:

如上所述,我一直在测试将常量存储在数据表中,它在大多数情况下都能很好地工作。出现了几个问题,也许可以在文档中加以澄清。试验台是第17版的CR1000。

一个问题是sample()指令不记录常量的名称,而是将字段命名为“”;匿名1“;依此类推。这似乎是合理的,因为常量在运行的程序中可能会被它们的值替换,所以在调用数据表时不存在名称。fieldNames()指令可以用来解决这个问题。

另一个问题是,当以这种方式使用时,“fp2”数据类型会给出不正确的(和变化的)结果。解决方法似乎是酌情使用“ieee4”或“uint2”类型。“字符串”数据类型工作正常。

我在其他输出表中没有看到“fp2”数据类型的问题,所以这有点令人担忧。在某些情况下,是否最好避免这种数据类型?

我能想到几个“;愿望清单”;可能有助于解决第一个问题的想法。一种方法是添加SampleConstant()指令来保留名称,甚至可能省略数据类型(因为它没有在常量声明中指定)。

另一种情况是,如果sample()和相关的输出指令允许fieldName有一个可选参数,那么就不需要额外的指令了。

*最后更新者:kirving于2009年8月18日下午6:37*

新对话如下:

在数据表中存储常量的尝试效果不佳。我认为,由于浮点表示,事情可能只是令人困惑,但在某些情况下,结果是错误的。

我有一些正常声明的常量,其他常量在ConstTable中:

常量STATION_ID=5160

构造表
...
const ATRH_ MODEL=“;HMP45C”;
const ATRH_SN=“";
常量AT_MULT=0.1
常量AT_OFS=-40
常量RH_MULT=0.1
常量RH_OFS=0
...

以及这些数据表输出指令:

数据表(常数,1,20)
示例(1,STATION_ID,uint2)
字段名称(“STATION_ID”)
示例(1,ATRH_MODEL,字符串)
字段名称(“ATRH_MODEL”)
示例(1,ATRH_SN,字符串)
字段名称(“ATRH_SN”)
样本(1,AT_MULT,即4)
字段名称(“AT_MULT”)
示例(1,AT_OFS,即4)
字段名称(“AT_OFS”)
样本(1,RH_MULT,即4)
字段名称(“RH_MULT”)
样本(1,RH_OFS,即4)
字段名称(“RH_OFS”)
...

得到的数据表输出看起来像:

时间戳2009-08-18 17:22:22.13
记录0
站点ID 0
ATRH型HMP45C
ATRH_SN?
最低0.1
AT_OFS 8.265195e-040
RH_最小值0.1

嗯,不知怎么,-40变成了8.265195e-040,这显然是错误的。

以下是当ieee4条目为fp2时的输出:

时间戳2009-08-17 16:48:16.86 2009-08-17 17:19:39.84
记录0 1
站点ID 0 0
ATRH型HMP45C型HMP45C
ATRH_SN?
最低0.1 4
时间0 0
最大值0 328
RH_OFS 0 0(_O)

这里有两条记录输出,要么是因为我在记录仪上循环通电,要么是由于我使用CR1000KD键盘更改了不同的ConstTable常数(不是其中之一)。

我做错什么了吗?在第一种情况下,循环功率,将采样值作为ieee4数据类型,对于零值常数产生完全不同(且错误)的值。

ConstTable本身似乎工作得很好,除了列表中只有7个字符的名称可见(但全名显示在编辑屏幕中)。所有常数值都能清晰、正确地显示,可以编辑,程序会按照广告中的内容重新启动和编译。此外,程序签名会发生变化,下载程序会显示任何更改的常量的新值。所有这些都很好,但我想用时间戳记录这些值——否则可能很难知道生成数据时有什么值。

困惑。。。

知识范围

新对话如下:

我最近在常数存储方面遇到了这个限制——我们将把这个问题提交给开发团队。

同时,更简单的做法是忘记存储常数,或者将值声明为变量,在程序开始时直接初始化,也许在BEGIN之后和主扫描之前,或者在程序开始后再次创建等于常数的变量。这有点浪费内存,但避免了对字段名声明的需要。

新对话如下:

我已经更改了使用字符串数组的方案,这可以说是一种更干净的方法。&运算符完成从常量到字符串值的转换,因此不用担心类型。

谢谢你的帮助。——知识范围

新对话如下:

为了将来参考,我被告知并刚刚使用OS17进行了检查,在最近的操作系统中,使用采样常数的问题已经得到了解决。

数据表中变量的匿名名称问题仍然存在,需要使用fieldname命令。

*最后更新者:aps于2009年8月20日凌晨3:51*

新对话如下:

我们的测试是使用OS17运行的,但字符串以外的类型的结果不可靠。你没有看到OS17的问题吗?

分享到:

原文链接:,转发请注明来源!
海洋仪器网 仪器使用 在DataTable中记录程序常量 _Campbellsci论坛问答
「在DataTable中记录程序常量 _Campbellsci论坛问答」评论列表

发表评论