解决方案
硬件输入和输出延迟取决于系统定义文件中指定的执行模式。在系统资源管理器的“控制器”页面上,可以选择“
并行执行”模式或“
低延迟执行”模式。在这些执行模式下,以下行为适用于DAQ和FPGA硬件输入/输出:
并行执行(DAQ和FPGA-默认)
- 第一个循环-采集硬件输入并将其传递给模型。
- 第二个循环-模型处理获取的数据并生成输出数据。此数据已发送到输出缓冲区,但尚未生成。
- 第三循环-生成硬件输出。
因此,从输入到输出存在两个滴答延迟。
低延迟执行(DAQ和FPGA-默认)
- 第一个循环-采集硬件输入并将其传递给模型。该模型处理获取的数据并生成输出数据。此数据已发送到输出缓冲区,但尚未生成。
- 第二个循环-生成硬件输出。
因此,从输入到输出只有一个滴答延迟。
对于DAQ硬件,输入和输出任务使用相同的硬件采样时钟,因此必须等待下一个滴答更新输出信号。另一方面,FPGA任务使用反馈节点将数据按硬件时序写入输出。可以删除这些反馈节点,因此将在同一循环迭代中生成输出信号。但是,这样做将导致FPGA IO输出没有硬件定时。这将导致代码中更多的抖动,因此请记住,此方法会牺牲一些确定性。在这种情况下,以下行为适用:
并行执行(FPGA-无硬件定时)
- 第一个循环-采集硬件输入并将其传递给模型。
- 第二循环-模型处理获取的数据并生成输出数据。该数据被发送到输出缓冲区并由硬件生成。
因此,存在一个滴答延迟,加上从输入到输出的大约高优先级(HP)循环持续时间。
低延迟执行(FPGA-无硬件定时)
- 第一个循环-采集硬件输入并将其传递给模型。该模型处理获取的数据并生成输出数据。该数据被发送到输出缓冲区并由硬件生成。
因此,从输入到输出大约有HP Loop持续时间的延迟。在这种情况下,HP循环持续时间将比并行执行设置更长,因为HP循环持续时间包括模型执行时间。