基于LabVIEW应用ARINC 429板卡实现数据通讯——(下篇)

devtools/2024/11/7 13:30:05/

五、基于LabVIEW实现数据通讯

基于LabVIEW实现429板卡的数据通讯是调用API 动态链接库文件来实现的。该文件中有许多的板卡操作函数,在调用板卡中必须按照一定的函数调用流程来操作板卡,否则极易出现板卡操作错误。

1、API函数的调用步骤

API函数的调用步骤如下所示:

   (1)打开板卡并初始化

        打开板卡 (CHR429_OpenDev 或 CHR429_OpenDevEx) 

        获取板卡信息﹤可选﹥ (CHR429_GetDevInfo) 

        复位板卡 (CHR429_ResetDev) 

        使能板卡时间计数器﹤可选﹥(CHR429_EnableTimeStamp) 

(2)通道参数配置 

        通道模式设置[自环/正常] (CHR429_Channel_Mode) 

        通道 429 字格式设置﹤可选﹥ (CHR429_Channel_SetWordFormat) 

        通道 429 方向设置﹤可选﹥ (CHR429_Channel_Dir)(仅 CHR32XXX-D 产品需配置)

(3)数据的接收 

        通道初始化参数配置(CHR429_Rx_Channel_Init 或 CHR429_Rx_Channel_InitEx)

        添加接收时间戳﹤可选﹥(CHR429_Rx_Channel_AddTimeStamp) 

        SD 标号过滤使能﹤可选﹥(CHR429_Rx_Channel_EnableFilter) 

        添加 SD 标号过滤﹤可选﹥需先使能SD标号过滤,再添加过滤SD标号(CHR429_Rx_Channel_AddFilter 或 CHR429_Rx_Channel_AddFilterTable) 

        接收中断使能﹤可选﹥ (CHR429_Rx_Channel_SetInt) 

        创建接收中断事件﹤可选﹥(CHR429_Rx_Channel_CreateEvent)

        接收 FIFO 复位 (CHR429_Rx_Channel_ClearFIFO)

        开始接收 (CHR429_Rx_Channel_Start)

        查询接收方式:1读取接收 FIFO 数据量(CHR429_Rx_Channel_FIFOCount)

                                 2若接收 FIFO 的数据量≠0,则可读取数据(CHR429_Rx_Channel_Read) 

                                 3可重复 1、2 步不停读取数据 

        中断接收方式:1等待接收中断事件﹤可选﹥(CHR429_Rx_Channel_WaitEvent) 

                                 2读取接收 FIFO 的数据量(CHR429_Rx_Channel_FIFOCount)

                                 3若接收 FIFO 的数据量≠ 0,则可读取数据(CHR429_Rx_Channel_Read)

                                 4可重复 1、2、3 步不停读取数据 

        停止接收 (CHR429_Rx_Channel_Stop)

        中断禁止﹤可选﹥ (CHR429_Rx_Channel_SetInt)

        关闭接收中断事件﹤可选﹥(CHR429_Rx_Channel_CloseEvent)

4、数据的发送

        1通道初始化参数配置(CHR429_Tx_Channel_Init 或 CHR429_Tx_Channel_InitEx)

        2配置 429 消息块(CHR429_Tx_Channel_WriteCB)

        3开始消息块的发送(CHR429_Tx_Channel_Start)

5、关闭板卡 

        应用程序退出时,复位板卡(CHR429_ResetDev),并关闭板卡(CHR429_CloseDev) 

2、函数中数据结构说明

(1)板卡设备参数信息(CHR429_GetDevParInfo/读取板卡设备参数信息):dwCardType——板卡类型 dwhwVersion——硬件版本号、 dwdvrVersion——驱动版本号、dwlibVersion——库版本号、dwBoardID——拨码开关 ID(板卡不支持)、dwSN——序列号、dwChMax——通道数。

(2)设置通道模式参数信息CHR429_Channel_Mode/设置429通道模式):Channel——通道号16通道板卡则取值范围0~15Mode——429 模式 1:正常工作模式 0:自检工作模式

(3)设置通道子格式参数CHR429_Channel_SetWordFormat/设置 429 通道字格式):Channel——通道号、WordFormat——字格式 1:格式 2(即总线数据格式) 0:格式 1。如下图13所示即是32位数据的两种不同字格式,在板卡自带的测试软件中解析数据字是按照格式1进行的。图14是25位数据的字格式。

(4)发送通道参数配置(CHR429_Tx_Channel_Init/429 发送通道初始化配置):BaudRate——波特率,取值范围为0~50-150Kbps/1-100/2-50/3-48/4-12.5/5-10DataBit——数据位长度,取值2532 Parity——校验方式,取值范围为0~20-无校验/1-奇校验/2-偶校验

图13 32位数据字格式

图14 25位数据字格式

(6)配置429消息块参数(CHR429_Tx_Channel_WriteCB/配置429消息块):Channel——通道号MsgNum——消息id号,从0开始编号,到255结束。由于消息是顺序执行的,消息块中的消息编号必须连续。 pstTxcb ——429 发送配置结构(TxRunning——消息发送初始状态,TRUE:在调用CHR429_Tx_Channel_Start函数后,本消息会被执行,FALSE:在调用CHR429_Tx_Channel_Start函数后,硬件将会跳过该消息,消息不会被执行,直到用户调用函数CHR429_Tx_Channel_MsgRunning来启动消息的执行、TxPeriod——消息发送周期,分辨率1ms,0:为事件消息;非 0:周期消息、TxInitPeriod——消息发送周期的初始值,分辨率 1ms。可以调整消息开始运行的初始点、TxGap——字间隔,分辨率100us,表示上一个429字消息的结尾到下一个429字消息的开头、TxData——消息中待发送的 429 字数据)。

(7)设置接收中断、触发深度参数(CHR429_Rx_Channel_SetInt /设置接收中断、触发深度):Channel——通道号、Enabled——中断使能控制,0-禁止中断 1-使能中断、Depth——FIFO触发深度值(中断使能时该参数有效) ,取值 0~32767(接收有时间),取值 0~65535(接收无时间)若接收 FIFO里429数据量大于或等于触发深度值时,则有中断发生

3、LabVIEW进行通讯测试

基于LabVIEW在进行429板卡内部通道之间数据通讯时,应严格按照上面说到的函数调用顺序编写程序,具体的调用过程如下图15所示,该程序是普通的数据通讯范例,没有设置中断等其他功能。当开始发送数据时,周期发送数据字为AABBCC01(可以看到周期消息配置参数中周期设置为500ms);点击事件消息时,会发送一组为AABB555的数据字。

图15 函数调用过程图

编写好程序设置好参数后运行。操作界面如下图16所示,这里还是选择4通道发送、3通道接收来实现数据通讯。点击开始发送,通道4周期发送数据字“AABBCC01”,(周期为500ms),点击发送事件消息则发送一次数据字“AABB5555”。

图16 用户操作界面

六、基于示波器观察数据传输

429总线传输的是双极性归零式信号,信号从高电平回归零电平表示逻辑状态“1”;信号从低电平回归到零电平表示逻辑状态0。如下图20波形所示,红色框选中的为逻辑“0”、蓝色框选中的为逻辑“1”。

图17 双极性归零式信号示意

以图16接收到的数据进行波形分析,如下图18所示,每一个方框的宽度代表一个周期,即红色圈代表500ms。如此示波器抓取到的周期消息和事件消息在时间上的显示关系是十分清楚的。注意这里示波器显示的波形数据是在总线上传输的数据顺序。读取的时候还需要按照输入的字格式进行转化。

图18 抓取到的数据时间关系

将图18抓取到的波形选择一个进行放大观察,其具体的一个429数据字如下图19所示,示波器上显示的数据为“0000,0001,1001,1110,1110,1010,1010,1010”,从左到右显示的是32位数据的最低位和最高位。需要特别说明的是,标号位的发送数据顺序与正常顺序相反,先发送高字节在发送低字节(即7~0、8~31)。
    本帧数据下发的是周期消息,数据字为“AABBCC01”,转化成二进制数为“1010,1010,1011,1011,1100,1100,0000,0001”。由于数据选择字格式1发送和接收,也就是说波形显示是7-0、8-31(总线数据还是按照标志位、SDI、DATA、SSM、P的顺序)。Lab-001、SDI-01、DATA-1010101010111011110、SSM-02、P-0。

若需要读取解析本帧数据,需将示波器上的第31位放至第8位,29-30位放至第9-10位。这样转换后数据就是格式一“1010,1010,1011,1011,1100,1100,0000,0001”。

图19 格式一发送数据后在总线上的传输顺序

图19 格式二发送数据后在总线上的传输顺序(常用)

设置周期的效果我们在图18的波形中已经观察过了,周期对周期消息设置有效,而事件消息中与周期起到对应作用的则是字间隔,如下图20所示,第一个429数据字的字间隔设置为0,第二个429数据字的字间隔取3,效果如下图所示(在该硬件板卡中,为了使两条消息有所区分,即设置默认时间间隔100us,若设置字间隔为3则两条消息间隔由400us)。

图20 设置字间隔的作用


http://www.ppmy.cn/devtools/131725.html

相关文章

语言模型的评测

语言模型的评测 内在评测 在内在评测中,测试文本通常由与预训练中所用的文本独立同分布的文本构成,不依赖于具体任务。最为常用的内部评测指标是困惑度(Perplexity) 困惑度是衡量语言模型对测试文本预测能力的一个指标&#xf…

vue3 + element-plus 的 upload + axios + django 文件上传并保存

之前在网上搜了好多教程,一直没有找到合适自己的,要么只有前端部分没有后端,要么就是写的不是很明白。所以还得靠自己摸索出来后,来此记录一下整个过程。 其实就是不要用默认的 action,要手动实现上传方式 http-reque…

Python基于TensorFlow实现双向循环神经网络GRU加注意力机制分类模型(BiGRU-Attention分类算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后关注获取。 1.项目背景 随着深度学习技术的发展,循环神经网络(RNN)及其变种如门控循环…

QML项目实战:自定义Switch按钮

目录 一.添加模块 1.QtQuick.Controls 2.1 2.QtGraphicalEffects 1.12 二.自定义Switch 三.标签 四.效果 五.代码 一.添加模块 1.QtQuick.Controls 2.1 QtQuick.Controls 提供了一组预定义的 UI 控件,这些控件可以用于构建现代、响应式的用户界面。它包括按…

通过嵌套循环输出二维矩阵

输出以下4*5的矩阵。 1 2 3 4 52 4 6 8 103 6 9 12 154 8 12 16 20 输入格式: 无。 输出格式: 二维矩阵 代码如下&#xff1a; #include <stdio.h> int main() {for (int i 1; i < 4; i) {//行for (int j 1; j < 5; …

JS实现漂亮的登录页面(氛围感页面)

代码&#xff1a; <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>登录</title><style…

Javascript属性遮蔽问题

先了解一下Object.defineProperty()方法 Object.defineProperty() 静态方法会直接在一个对象上定义一个新属性&#xff0c;或修改其现有属性&#xff0c;并返回此对象。 //obj&#xff1a;要定义的对象 //prop&#xff1a;一个字符串或 Symbol&#xff0c;指定了要定义或修改…

Streamlit 入门使用指南及与 FastAPI 的配合使用

Streamlit 入门使用指南及与 FastAPI 的配合使用 Streamlit 是一个用于构建数据应用的快速 Web 应用框架&#xff0c;它特别适合数据科学家和机器学习工程师&#xff0c;无需复杂的前端开发知识即可创建交互式应用。结合 FastAPI&#xff0c;可以轻松构建后端服务并将其与 Str…