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

ops/2024/11/8 17:36:14/

五、基于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/ops/131989.html

相关文章

Aop+自定义注解实现数据字典映射

数据字典 Web项目开发中,字典表的一般都会存在,主要用来给整个系统提供基础服务。 比如男女性别的类型可以使用0和1来进行表示,在存储数据和查询数据的时候,就可以使用字典表中的数据进行翻译处理。 再比如之前做的一个项目中宠物…

Unity图形学之Shader结构

Unity - Manual: ShaderLab: Legacy Lighting 1.Shader 语言: OpenGL:SGL 跨平台性能非常好 GLSL语言 OpenGL Shader LanguageDX:微软 非跨平台 性能非常好 HLSL语言 High Level Shader LanguageCG:微软和英伟达 联合开发CG …

如何为 Redis 设置密码

前言 Redis 是一个高性能的键值对数据库,广泛应用于缓存、消息队列等场景。为了保障 Redis 服务的安全性,设置密码认证是非常重要的一步。 方法一:通过编辑配置文件设置密码 1. 找到 redis.conf 配置文件 通常情况下,redis.co…

国产光耦在现代电子中的多功能性和性能

近几年,随着国内电子行业的快速发展,国产光耦合器取得了显著的进步,其创新旨在满足现代电子行业的严格需求。这些光耦合器提供了包括隔离、信号传输和抗噪声等基本功能,使其适用于工业、汽车和消费电子等多个领域。本文将探讨这些…

金融市场中的量化分析:正大科技如何赋能投资者决策

在当前金融市场中,量化分析技术已成为许多投资者提升决策效率的重要工具。正大科技致力于通过量化分析,帮助投资者基于数据和算法做出更为科学的市场判断。本文将探讨量化分析在金融市场中的应用,并展示正大科技如何利用量化手段优化投资策略…

微服务实战系列之玩转Docker(十八)

导览 前言Q:如何保障容器云环境下etcd集群的数据安全一、安全机制身份认证必学必看1. 启动参数2. 授权命令3. 开启认证 二、应用实践1. 访问容器2. 查看认证是否开启3. 查看是否已创建用户4. 创建用户5. 开启认证6. 验证是否开启7. 验证数据 结语系列回顾 前言 etc…

WebSocket 及时通信 - 2024最新版前端秋招面试短期突击面试题【100道】

WebSocket 及时通信 - 2024最新版前端秋招面试短期突击面试题【100道】 🌐 1. 你对 WebSocket 的理解是什么? WebSocket 是一种通讯协议,提供了在单个 TCP 连接上进行全双工(双向)通信的能力。与传统的 HTTP 请求-响…

杨辉三角,洗牌算法

杨辉三角 给定一个非负整数numRows&#xff0c;生成杨辉三角的前numRows行。 在杨辉三角中&#xff0c;每个数是它的左上方和右上方的数的和。 public List<List<Integer>> generate(int numRows){List<List<Integer>> ret new ArrayList<>();…