cRIO9040中NI9871模块的测试

news2024/9/29 12:12:33

硬件准备

  • CompactRIO9040
  • NI9871
  • 直流电源(可调)
  • 网线
  • RJ50转DB9线
  • 鸣志STF03-R驱动器和步进电机

软件安装

参考:cRIO9040中NI9381模块的测试

此外,需安装NI-Serial 9870和9871扫描引擎支持

打开NI Measurement&Automation Explorer(MAX)- 远程系统 - cRIO9040 - 添加/删除软件 - 选择NI-Serial 9870和9871扫描引擎支持。
在这里插入图片描述

硬件准备

NI-9871介绍
NI‑9871为CompactRIO系统增加了RS485/RS422串行端口。 串行端口可直接通过FPGA访问,从而灵活地与串行设备通进行信。 模块的各个端口上均配有独立缓冲器,可节省FPGA空间,并简化编程。 NI‑9871支持标准启动位、停止位和握手设置。 该接口使用外接电源,在各种串行端口条件下均能提供最高兼容性和可靠性。
在这里插入图片描述
将NI9871插入卡槽内,需外接+8 V ~ +28 V的DC电源,将可调直流电源接到NI9871下部电源并调整到+10V。

将RJ50转DB9线接入PORT1-PORT4任意端口(这里注意要用RJ50的网口,和常规的RJ45不一样)

将DB9端口接入一个转换接口接到鸣志STF03-R驱动器的COM1.
在这里插入图片描述
采用四线制接线方式,将鸣志STF03-R驱动器的RX+连接至主控制器的TX+,驱动器的RX-连接至主控制器的TX-;驱动器的TX+连接至主控制器的RX+,驱动器的TX-连接至主控制器的RX-;驱动器的GND连接至主控制器的GND。STF03-R

注意:驱动器RS-485通讯口内部已作隔离,从机驱动器通讯口GND必须与主机上位控制器GND共地,与其他从机驱动器通讯口GND共地;

鸣志STF03-R驱动器接线:
在这里插入图片描述
NI-9871 RS485/RS422 DB-9接线:NI-9871 Getting Started
在这里插入图片描述

软件测试

首先新建终端
在这里插入图片描述
在这里插入图片描述

由于NI9381仅支持扫描模式和FPGA模式,故测试这两种模式。(NI-DAQmx API不用)
C Series Module and CompactDAQ or CompactRIO Hardware Compatibility with LabVIEW

在这里插入图片描述

实时扫描模式

在机箱属性中,选择扫描接口
在这里插入图片描述

直接在cRIO下新建VI,方法和串口通信一样,选择串口号时,前两个是机箱上的串口,后面4个串口就是NI9871的4个串口。
在这里插入图片描述

简单测试了正转、反转、停止。
在这里插入图片描述

具体指令参考:Modbus_Manual_CN202203.pdf

FPGA模式-中断模式

前期步骤同上,机箱属性编程模式更改为FPGA接口。
在这里插入图片描述
该设备不支持FPGA I/O 节点,所以无法拖入,直接创建method选择写入方法

在这里插入图片描述

在C:\Program Files\NI\LVAddons\crio\1\examples\CompactRIO\Module Specific\NI 987x\Serial Loopback中可参考NI-987x Serial Loopback例程。

由于自己利用例程新建项目时出现找不到op control 属性的问题,最后干脆直接在例程基础上修改了。(把例程文件的只读属性取消了,备份一份)

首先把例程中cRIO模块属性的IP修改为自己的设备,并且连接。
在这里插入图片描述
移除原来的9870模块,在FPGA中重新添加自己的9871模块。在这里插入图片描述
打开9870 Interface Interrupt (FPGA).vi修改为9871的对应端口
在这里插入图片描述
修改好以后编译FPGA程序,这里FPGA程序执行所请求的动作后,将IRQ 1设置为向主机VI发出信号,表明FPGA已准备好进行下一次操作。在这里插入图片描述
打开Serial Loopback Interrupt (Host).vi进行修改,把两次write中间增加约100ms的延时,将发送格式转为16进制。

配置FPGA VI引用,选择之前编译好的FPGA程序并绑定引用至自定义类型 用来将FPGA VI引用作为接口。
在这里插入图片描述

在这里插入图片描述
运行Host程序,电机即可正反转。

FPGA模式-DMA模式

步骤同前类似,修改9870 Interface DMA (FPGA).vi为9871的对应端口
在这里插入图片描述
这里新建两个FIFO ,READ_FIFO用于从Target to Host,WRITE_FIFO用于从 Host to Target 。

写入时,主机将要写入字节先传入WRITE_FIFO然后再给9871的写入字节方法。

读取时,将9871读取的字节传入READ_FIFO,再传给主机。

打开Serial Loopback DMA (Host).vi同样进行修改,把两次write中间增加约100ms的延时,将发送格式转为16进制。
在这里插入图片描述

运行Host程序,电机即可正反转。

参考

在扫描模式下发现,配置NI 987x模块并与之通信
NI 9871 (Scan Interface)
NI 9871 (FPGA Interface)
C Series Serial Module Error Codes

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1485519.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++之set、multiset

1、set简介 set是一种关联式容器,包含的key值唯一,所有元素都会在插入时自动被排序,其存储结构为红黑树。set只能通过迭代器(iterator)访问。 set和multiset的区别: (1)set不允许容器中有重复的元素&…

C++_程序流程结构_选择结构_if

程序流程结构 C/C支持最基本的三种程序运行结构:顺序、选择、循环结构 顺序结构:程序按顺序执行,不发生跳转选择结构:依据条件是否满足,有选择地执行相应功能循环结构:依据条件是否满足,循环多…

跟 AI 学 StarRocks:简介

因为要支持公司的 BI 建设,团队引入了 StarRocks 数据库,此前我没有了解过此项技术,不过因为有架构师引入了此项技术栈,就顺便学习一下。 一、什么是 MPP 数据库? MPP 数据库指的是大规模并行处理(Massiv…

zotero | 多平台同步 | 坚果云

zotero注册登陆 打开zotero软件,mac电脑打开首选项,如下图所示: 然后点击同步选项,如下图所示,如果已经有账号,请登陆账号,无则注册账号之后再登陆; 注册坚果云账号 注册完坚果…

QT6 libModbus 用于ModbusTcp客户端读写服务端

虽然在以前的文章中多次描述过,那么本文使用开源库libModbus,可得到更好的性能,也可移植到各种平台。 性能:读1次和写1次约各用时2ms。 分别创建了读和写各1个连接指针,用于读100个寄存器和写100个寄存器,读写分离。 客户端&am…

文心一言 VS 讯飞星火 VS chatgpt (206)-- 算法导论15.4 3题

三、设计 LCS-LENGTH的带备忘的版本,运行时间为O(mn)。需要写代码的时候,请用go语言。 文心一言,代码正常运行: LCS-LENGTH(Longest Common Subsequence Length)问题的带备忘的版本通常指的是使用动态规划…

备考2024年小学生古诗文大会:历年真题15题练习和独家解析

如何提高小学生古诗词的知识?如何激发小学生古诗词的学习兴趣?如何提高小学古诗词的学习成绩?如何备考2024年小学生古诗文大会?... 如果你也在关注这些问题,我的建议是参加每年一度的小学生古诗词大会(免费…

金融行业专题|期货超融合架构转型与场景探索合集(2023版)

更新内容: 更新 SmartX 超融合在期货行业的覆盖范围、部署规模与应用场景。新增 CTP 主席系统实践与评测、容器云资源池等场景实践。更多超融合金融核心生产业务场景实践,欢迎下载阅读电子书《SmartX 金融核心生产业务场景探索文章合集》。 面对不断变…

云计算与大数据课程笔记(一)云计算背景与介绍

如何实现一个简易搜索引擎? 实现一个简易的搜索引擎可以分为几个基本步骤:数据收集(爬虫)、数据处理(索引)、查询处理和结果呈现。下面是一个概括的实现流程: 1. 数据收集(爬虫&am…

Android和Linux的嵌入式开发差异

最近开始投入Android的怀抱。说来惭愧,08年就听说这东西,当时也有同事投入去看,因为恶心Java,始终对这玩意无感,没想到现在不会这个嵌入式都快要没法搞了。为了不中年失业,所以只能回过头又来学。 首先还是…

vue实现水印功能

目录 一、应用场景 二、实现原理 三、详细开发 1.水印的实现方式 2.防止用户通过控制台修改样式去除水印效果(可跳过,有弊端) 3.水印的使用 (1)单页面/全局使用 (2)全局使用个别页面去掉…

MySQL 常用优化方式

MySQL 常用优化方式 sql 书写顺序与执行顺序SQL设计优化使用索引避免索引失效分析慢查询合理使用子查询和临时表列相关使用 日常SQL优化场景limit语句隐式类型转换嵌套子查询混合排序查询重写 sql 书写顺序与执行顺序 (7) SELECT (8) DISTINCT <select_list> (1) FROM &…

18.题目:编号760 数的计算

题目&#xff1a; ###该题主要考察递推、递归 将该题看成若干个子问题 #include<bits/stdc.h> using namespace std; const int N20; int a[N];int dfs(int dep){int res1;for(int i1;i<a[dep-1]/2;i){a[dep]i;resdfs(dep1);}return res; }int main(){int n;cin>…

论文阅读_代码生成模型_CodeLlama

英文名称: Code Llama: Open Foundation Models for Code 中文名称: Code Llama&#xff1a;开放基础代码模型 链接: https://arxiv.org/abs/2308.12950 代码: https://github.com/facebookresearch/codellama 作者: Baptiste Rozire, Jonas Gehring, Fabian Gloeckle, Sten So…

React的fiber原理

在读完这篇文章之后&#xff0c;大家可以回到文章开头再捋一下以下几个关键词&#xff0c;将React的 Fiber架构原理彻底搞清楚。 关键词&#xff1a; requestIdleCallback、IdleDeadlineFiber&#xff1a;React的一个执行单元 在Fiber 出现之前&#xff0c;React存在什么问题…

bxCAN总线Loopback功能实现(STM32F4xx)

目录 概述 1 认识bxCAN Loopback 1.1 环回模式 1.2 环回模式特点 2 使用STM32CubeMX 生成工程 2.1 参数配置 2.2 生成工程代码 2.4 了解can.c 3 认识Hal库中的bxCAN 3.1 认识3个重要数据结构 3.2 函数组 3.2.1 初始化函数组 3.2.2 控制函数组 3.2.3 中断管理函数…

【风格迁移】pix2pixHD:高分辨率图像生成

pix2pixHD&#xff1a;高分辨率图像生成 提出背景问题1: 如何提高生成图像的照片级真实感和分辨率&#xff1f;问题2: 如何利用实例级别的对象语义信息进一步提高图像质量&#xff1f;问题3: 如何实现图像合成的多模态性&#xff0c;允许交互式对象编辑&#xff1f; pix2pixHD …

【STK】手把手教你利用STK进行仿真-STK软件基础01 STK的对象组织模式

STK系统采用面向对象和分级组织结构的管理模式对仿真对象进行管理&#xff0c;这种组织二行管理模式非常符合人类的认知习惯&#xff0c;易于理解。STK最基本的对象为场景&#xff08;Scenario&#xff09;&#xff0c;在场景中可以面向对象和分级组织模式对各场景中的仿真对象…

[c++] c++ 中的顺序(构造,析构,初始化列表,继承)

对象构造的时候&#xff0c;对象成员变量的初始化顺序是什么样的 &#xff1f; 派生类构造的时候&#xff0c;先构造基类还是先构造派生类 &#xff1f; 构造函数中的初始化列表&#xff0c;初始化的顺序是列表的顺序吗 &#xff1f; 析构的时候&#xff0c;析构的顺序是什么…

华为数通方向HCIP-DataCom H12-821题库(多选题:41-60)

第41题 BGP OPEN消息中携带如下哪些信息? A、路由属性 B、BGP Router ID C、Hold time D、本地自治系统(AS)号 【参考答案】BCD 【答案解析】 B. BGP Router ID:OPEN消息中包含发送方BGP路由器的Router ID,用于唯一标识BGP路由器。C.Hold time:OPEN消息中包含发送方BGP路由…