我正在尝试编写一个 Labview 程序,该程序从串行端口 RS-232 上的热传感器获取输入,对其应用一些基本转换,并将其显示在屏幕上。
我想知道是否有可能以某种方式在labview中模拟传感器,或者通过使用一些外部模拟器应用程序,这样我就可以在访问实际硬件之前测试我的程序。
这可能吗?
我有 Labview 2011。
我正在尝试编写一个 Labview 程序,该程序从串行端口 RS-232 上的热传感器获取输入,对其应用一些基本转换,并将其显示在屏幕上。
我想知道是否有可能以某种方式在labview中模拟传感器,或者通过使用一些外部模拟器应用程序,这样我就可以在访问实际硬件之前测试我的程序。
这可能吗?
我有 Labview 2011。
测试 VI 逻辑的最快方法是制作一个包含示例数据的 CSV 文件,并将从传感器读取的部分临时替换为以相同速率从 CSV 文件中读取数据值的部分。
尝试在较低级别模拟串行端口输入可能不值得,因为 Labview 通常非常可靠地将数据从硬件获取到您的 VI - 这取决于您如何使用它!
您可以让另一个程序模拟传感器并写入不同的 COM 端口。然后,您可以使用零调制解调器电缆连接这些 COM 端口。
为此,您必须弄清楚传感器的工作原理,并将适当格式的数据输入第二个 COM 端口。这些数据最终会被第一个 COM 端口接收,并最终被您的待开发应用程序接收。
如果您将所有通信代码封装在一个子VI或一组子VI中,与执行转换和显示部分的代码分开,您可以轻松地将测试代码和测试数据替换为真实的传感器数据。您可以编写一个生成测试数据的子VI,稍后将其替换为真实的传感器通信子VI,或者您可以在子VI中使用案例结构来选择与真实传感器进行通信和仅输出测试数据(正如Moray建议的那样,您可以从文件中读取,以便轻松更改它)。
我建议您编写单独的子 VI 来打开与传感器的通信,从中获取数据点,并在完成后关闭通信端口(尽管您可能只使用串行或 VISA 关闭功能)。使用通信端口(又名 VISA 会话)和错误线将这些 VI 链接在一起。'open' VI 可以接受一个指定是否使用真实/模拟数据的输入,并将该选择存储在全局变量(或功能性全局 VI)中,'get data' VI 每次调用时都会检查该变量。
glglgl 建议从另一个串口发送模拟数据也不错;您在这里需要做的就是在某种循环中使用串行发送和接收功能,在接收命令和发回输出方面做与真实传感器相同的事情。这样做的好处是您不需要对主程序进行任何更改,无论它是连接到真实传感器还是模拟程序,它的工作方式都应该完全相同。然而,现实世界中的串行通信问题通常是由于仪器或设备没有完全按照他们的规格要求做的,所以仅仅因为你的程序与你的模拟完美配合并不能保证它会与你的模拟完美配合。真正的传感器,如果真正的传感器做了你没想到的事情:-)
尽管其他答案提供了一些非常棒的想法,但我找到了一种更简单的方法来模拟传感器输入,这对初学者来说很方便。
打开 Labview Modbus 库并运行“MB Serial Master Example.vi”
现在应该可以使用示例程序将值读/写到模拟器中。
可以分析示例程序的框图,以了解数据是如何在 Modbus 协议的幕后传输的。