解决方案简介
天博综合体育中国官方网站bMax-Pro SSIM仪表的高速OEM集成指南,p powermax-pro in c#
简介
客户越来越多地使用天博综合体育中国官方网站bMax-Pro SSIM仪表进行深入集成,编写自定义代码以流式传输高速数据。除我们的技术指导外,这种类型的仪表接口还需要在客户方面具有很高的能力来实施。本文档旨在为成功提供工具。
确定集成所需的工具。
我们提供的相干仪表连接(CMC)软件程序可与天博综合体育中国官方网站bMax-Pro SSIM仪表一起使用,能够以20kHz / 50US示例率实时读取和流式传输高速数据并实时导出到文件。 该过程很复杂,并在用户/程序员方面拥有很多经验。过去,本文档中提供的数据已在过去的多个客户网站上获得成功。需要的资源…
1。 客户方面有经验的程序员或软件工程师编程接口。
2。 天博综合体育中国官方网站bMax-Pro SSIM用户手册(尤其是主机接口章)。
3。 CMC应用程序已安装并运行以查看I/O成绩单函数。
a。 显示可比较操作设置的SCPI命令。
b。 尽管不需要,但有些命令多次发送。
4。 此技术说明。
该过程的高级别概述 - 重要点。
编程SSIM仪表时,在整个过程中需要使用一些重要点。请参阅下面的过程项。
1。 数据采集可以通过两种方式进行:
a。 停止计数 - 发送n样品后自动停止
·强烈建议停止停止
b。 连续 - 运行直到明确命令被主机停下来
·更复杂,因为仪表在停止之前发送额外的记录
2。 数据采集可以通过两种方式进行编码:
a。 二进制
·二进制强烈建议!
b。 ascii
3。 这两个编码允许发送各种数据
a。 优化速度(不要发送您不需要的数据)与收集更多的速度,以防万一
b。 选项:
- 主要(测量)
- X,Y偏移(仅来自LM传感器)
- 数据采集标志(始终建议)
- 序列ID(仅用于能量)
- 脉冲周期(仅用于能量)
c。 记录在SCPI参考中
d。 SSIM不会向数据样本发送时间戳信息
时间戳通常在接收端重建,通过按样本速率增加变量。
4。 握手
a。 与SCPI互动时,您将看不到响应是否关闭
b。 但通常禁用流数据
c。 发行之前发行为最后一个命令
数据采集概述。
DAQ可以在ASCII或二进制中完成 - 每个样本:
- 二进制:只需读取适当的字节数,然后根据您请求的编码标志将其包装到目标结构中。不需要数字转换。
- 二进制流USB占块,通常单个读取不会返回所需的所有字节。您需要重复读取字节,直到组装了所需的数字为止。
- 推荐二进制,因为它更快,更紧凑,不需要昂贵的文本到数字转换
- for ASCII:阅读一行文本并根据您的要求编码标志对其进行解析
我们的CMC软件在单独的线程中进行数据采集,以便在线程等待读取数据时不会阻止UI。线程是本文档范围之外的高级主题。
发送设置SCPI命令以配置您的特定测量值
1。 首先,您至少需要(按任何顺序)
- 发送conf:mes:mode w选择电源或J用于能量测量
- 发送conf:read:mode binary指定二进制模式(推荐)
- 发送conf:item pri,f天博综合体育中国官方网站g指定您只需要测量和标记数据。二进制数据将包括
- 4个字节浮点(IEEE浮点数)测量值,其次是
- 2个字节未签名的整数标志
- 许多其他命令可能与您的情况有关
2。 最后,按顺序执行以下步骤:
i。发送SYST:COMM:交叉关闭handshakiing
ii。刷新输入缓冲区 - 您需要丢弃发送上述命令时积累的任何握手,错误消息或其他无关输入数据,以便您的第一个读取将从第一个数据记录的开头开始。如何做到这一点高度取决于您的编译器,运行时系统和操作系统。
iii。发送开始100
- 告诉仪表开始获取,在100个记录后停止
- 包括记录计数,以便仪表发送固定数量的记录。最初只使用几个记录来测试/调试。
然后开始读取数据
1。一次记录
2。直到计数用尽
要注意的东西
每个数据记录通常都包含一个标志单词。这些测量标志中的几个应检查每个样本:
1. pertemp = 0x80- 指示传感器的过热和获取可能应终止,并且在任何情况下都应报告错误
2. 终止= 0x8000- 指示仪表检测到的致命误差(例如传感器断开连接),并且必须单方面终止采集;没有更多的数据即将到来
3. Missingsamples = 0x100- 主机无法从仪表,仪表的内部缓冲区Overran和某些数据记录中读取足够快的数据,从流中省略了一些数据记录。数据ACQ可以继续,但标志标记了数据中的不连续性
C#接口代码的示例。
最常见的客户请求是“我如何捕获此高速流并为自己的目的操纵它?”下一节涵盖了流式传输高速数据所需的数据采集循环。
线程- 数据获取的内部循环
线程的本质是一个循环,反复调用readonerecord获取每个数据样本。任何错误(例外)导致该功能退出。它还实现可选的opotoncount功能。
首次通过循环,ReadOnereCord调用是发送开始命令后的第一个读取的数据。循环一直持续到加载所有数据并添加到Capturebuffer.
数据是一个全局静态临时数组,足够大以处理任何记录。
isstopping是一个全局标志,它标志着所有采集代码过早终止。
terminedbymeter测试(record.f天博综合体育中国官方网站gs&MeasurementF天博综合体育中国官方网站gs.terminated)!= 0),,
其中终止= 0x8000//仪表声明单侧终止
可能会忽略以蓝色突出显示的部分。
受保护的覆盖void threadbody()尝试 BoostThreadPriority(); //能量模式必须实际等待一会儿才能实现 ondaq_statechanged(daq_state.start);
//带有所需字节数的数据阵列 尽管( !isstopping
&&readonerecord
()数据
)) //填充数据阵列带有所需的字节数 while(!isstopping && readonerecord(data)) //如果我们在等待时获得数据,那么我们将不再等待 如果(iSwaiting) isWaiting = false; ondaq_statechanged(daq_state.tinged); //复制二进制数据
进入数据记录 #如果preallocate_data_records record.read(数据
); #别的 record = new DataRecordSingle(数据
); #endif #if trace_daq_hs_read && debug tracelogger.traceRead($“ daq.hs.read:record.toString_ashex() // record.toStringex()'); #endif //如果仪表设置了中止标志,那么我们必须停止 //(不应添加此记录以捕获缓冲区) if(terminedBymeter(记录)) 休息;//将数据记录添加到capturebuffer,分配了时间戳 capturebuffer.timestampandadd(记录);
tracedata(“ add [0]:1”,recordsRead,record.tostring());;Count ++;
if(stoponcount && count> = apcation)
break;
捕获(异常EX) //报告所有未被告求的例外并终止线程 ReportException(ex); // Try语句的所有退出都需要成功退出 onthreadexits();
readonerecord- 数据采集的内部环路
readonerecord反复调用读取功能以将所需的字节加载到目标数据数组中。
读者的心脏是前两个循环。其他大多数代码与您系统上可能不会出现的特殊情况有关。
如果出于任何原因,ReadOneRecord无法获取所有数据,则返回false并因此终止线程循环。许多其他特殊条件可能会终止循环。
复杂性结果是因为COM端口上的读取功能不一定返回所请求的所有数据。如果它们的返回少于所需的返回,则内部循环会反复获取数据的剩余量。
Channel.Read本质上是.net serialport读取函数。
唯一的扭曲是整个目标数组作为参数传递,索引表示应放置新数据的位置,计数是请求多少个字节。读取返回实际读取了多少个字节的计数,这可能小于要求。
isstopping
是一个全局标志,它向所有采集代码发出信号。
受保护的虚拟bool readonerecord(byte []数据) int count = data.length; int index = 0;sampletime.start();
//反复尝试读取1个记录, //超时重新启动不完整的内部循环 while(计数> 0 &&!isstopping
) 尝试 //内部循环读取一个记录,但是 //可能会在完成该阅读之前出来 while(计数> 0 &&!isstopping
) int actual = channel.read(数据,索引,计数); 如果(实际<= 0) // eof“无法发生”因此致命错误 ReportUnpentefeof(); 返回false; 计数 - =实际; 索引 +=实际; //如果我们到达这里,我们有一个完整的记录//统计数据仅用于完整记录 bytesread += data.length; RecordsRead ++; //在能量模式下,我们有时会等待很长时间才能阅读, //因此,阅读时超时是正常的 捕获(TimeOutException) //等待终止操作时停止 if(Stopping) 返回false; //终止DAQ //否则如果我们不停止超时... //在电源模式下不允许超时 if(!operationmode_istrueEnergy && sampletime.e天博综合体育中国官方网站psedmilliseconds> powermodemaxe天博综合体育中国官方网站psed_ms) reportun etpectedTimeOut(); 返回false; //终止DAQ //首次开始等待的信号triggerwait首次开始等待 如果(!iSwaiting) isWaiting = true; ondaq_statechanged(daq_state.triggerwait); //如果不停止或PowerMode超时,请忽略超时 继续; 最后 sampletime.stop(); //外部循环
返回(count == 0); //非零计数信号故障
联系人coherent
提供帮助或其他信息,访问我们的支持服务页面。例如,如果您找不到传感器的校准证书,我们可以发送替换。
要安排保修服务或年度重新校准,请先与您的区域连贯服务中心联系以获得退货材料授权(RMA)编号。使用您保留的运输盒和包装材料将传感器安全地运回工厂,然后运送到此地址:
Coherent,Inc。
attn:rma#
27650 SW 95th Ave.
Wilsonville,或97070