精华内容
下载资源
问答
  • 阿尔泰科技DAM3058R模拟信号采集器说明书pdf,标准MODBUS RTU协议,可与PLC、组态王、力控、易控、MCGS等组态软件,昆仑通态、威纶通等触摸屏连接。如需要帮助请联系我公司技术人员远程协助技术支持!请认准“阿尔泰...
  • 4-20mA两线制模拟信号采集调理 资料下载pdf,4-20mA两线制模拟信号采集调理 资料下载
  • 八路模拟信号隔离采集AD转换 说明书pdf,八路模拟信号隔离采集AD转换 说明书
  • 模拟信号adc,再数字滤波,再dac输出到示波观察
  • 本文主要介绍一种基于MPC5634的多路模拟信号采集方法,通过增强型直接内存访问(DMA)方式,自动在RAM和增强型队列式模数转换eQADC模块之间转移数据,能高效和准确地完成对模拟信号的采集。
  • 本设计是在虚拟仪器的标准化、系列化、模块化的硬件和软件平台上,利用数字信号处理技术、传感器技术、虚拟仪器技术等专业基础理论及专业基础知识,建立一个具有信号采集、信号处理与分析数据采集回放系统,...
  • 4-20mA转RS485,模拟量采集器技术说明zip,4-20mA/0-5V转RS485模拟信号采集器,隔离转换 RS-485/232输出,采用12位AD转换器,测量精度优于0.1%.信号输入 / 输出之间隔离耐压3000VDC
  • CDL3的模拟信号采集 当整车控制的AD少得可怜的时候(…),CDL3可以帮助进行部分信号的采集。CDL3有6个模拟信号输入【电压和电阻】,2个数字信号输入【高低电平】和3个方波信号输入【频率,周期,MT法测转速】。...

    CDL3的模拟信号采集

    当整车控制器的AD少得可怜的时候(…),CDL3可以帮助进行部分信号的采集。CDL3有6个模拟信号输入【电压和电阻】,2个数字信号输入【高低电平】和3个方波信号输入【频率,周期,MT法测转速】。配置方法很简单,就在Dash Manager的Connections->Devices中

    右键相应条目有添加通道【将某个输入量作为某个通道】,添加标定【将输入量对应为某个物理量如行程,时速。同时采集信号的类型也在这里】。配置好这两项即可。

    CDL3的CAN发送

    除了接收CAN,CDL3也能发送CAN,这才使得CDL3能够帮助VCU采集信号。CDL3的两路CAN,每个都可以单独发送或接收。

    在Connections->Communications中,对一路CAN建立两个Section

    一个负责收,一个负责发。编辑这两个Section,使其参数中的“设备”选项对应首发功能Receive Message或Transmitt Message。

     随后参数右边的选项卡就会发生相应变化,变为接收通道或发送通道。其配置方法与之前的文章一样

    https://blog.csdn.net/Dio980/article/details/79600515

    另外上面链接中的文章说Async. Device在默认模板下无法配置,这是不正确的。只要将参数里的设备选择为Async Expander就可以选择Async. Device了,即可以配合包括Motec的很多ECU和其他异步设备。

    展开全文
  • 在上一篇《如何组建LoRaWAN无线网络以传输温度数据》文章中已经介绍了RAK瑞科慧联公司RAK7422/RAK7432(4mA~20mA模拟信号到LoRa采集器)产品。 RAK瑞科慧联的RAK7422/RAK7432新产品,使用温度转换器,将热电阻电阻值...

    在上一篇《如何组建LoRaWAN无线网络以传输温度数据》文章中已经介绍了RAK瑞科慧联公司RAK7422/RAK7432(4mA~20mA模拟信号到LoRa采集器)产品。

    RAK瑞科慧联的RAK7422/RAK7432新产品,使用温度转换器,将热电阻电阻值转换为4-20mA信号,利用内部集成的高精度运算放大器采集4-20mA模拟信号,并将其转化为数字信号,封装成LoRaWAN数据包,通过LoRaWAN无线网络,将现场温度值发送到后台服务器,方便用户使用。

     

    今天我们通过实验过程记录结果,对比高精度水银温度计(误差为0.1度)和热电阻测量精度。

    将水银温度计和热电阻浸泡在水中,避免空气扰动对读数的影响。将热电阻与温度变送器相连,再连接到RAK瑞科慧联公司的RAK7422/RAK7432。如图一RAK7422/RAK7432(4mA~20mA模拟信号到LoRa数据采集器)所示。

    说明:热电阻的测温原理是基于导体或半导体的电阻值随温度变化而变化这一特性来测量温度及与温度有关的参数。通过变送器可以将电阻值转化为4mA~20mA的信号供仪表采集,读数。

    图一:RAK7422/RAK7432(4mA~20mA模拟信号到LoRa数据采集器)
    图一:RAK7422/RAK7432(4mA~20mA模拟信号到LoRa数据采集器)

     

    读取水银温度计为29.7摄氏度,如图二水银温度计所示。

    水银温度计
    图二:水银温度计

     

    将RAK瑞科慧联RAK7432(4mA~20mA模拟信号到LoRa数据采集器)连接USB串口,通过串口调试工具读出温度为29.73~29.79,如图三串口调试工具所示,与水银温度计测量温度29.7误差小于0.1摄氏度。

    串口调试工具
    图三:串口调试工具

     

    也可以将采集到的数据通过LoRa发送到RAK7249LoRa网关上,在后台读出上报的温度值,经换算温度也为29.7-29.8之间,误差小于0.1摄氏度。

    商业网关内置服务器
    图四:商业网关内置服务器

     

    说明:

    RAK7249LoRa网关是RAK瑞科慧联研发的智能网关,功耗低、寿命长,双向数据传输,为实时数据的准确采集提供了可靠保证。您可远程控制和管理LoRa网关,方便管理。更多详细介绍请参见RAK7249工业级别LPWAN网关。

     

     

    通过以上实验结果,使用RAK瑞科慧联RAK7422/RAK7432(4mA~20mA模拟信号到LoRa数据采集器)采集热电阻温度,可以实现0.1摄氏度的采集精度,实现工业现场传感器数据采集无线化,满足工业场景的应用。

    展开全文
  • STM32F103 利用 ADC1+DMA+TIM 实现四路模拟信号采集

    千次阅读 多人点赞 2019-08-04 19:37:23
    STM32 ADC1+DMA+TIM 实现四路模拟信号采集 STM32 ADC 12位ADC是一种逐次逼近型模拟数字转换。 stm32f103有三个ADC,每个ADC可以测量16个外部2个内部信号源 各通道的A/D转换可以单次、连续、扫描、间断模式...

    STM32 ADC1+DMA+TIM 实现四路模拟信号采集

    STM32 ADC

    1. 12位ADC是一种逐次逼近型模拟数字转换器。
    2. stm32f103有三个ADC,每个ADC可以测量16个外部2个内部信号源
    3. 各通道的A/D转换可以单次、连续、扫描、间断模式执行
    4. ADC的结果可以左对齐或者右对齐的方式储存在16位数据寄存器
     ~~附:刚接触ADC的时候我对它的那四种模式概念比较模糊,举个例子大家应该就会清楚~~ 
     举例   用ADC1 规则通道的顺序为CH0,CH1,CH2,CH3,
     不启动扫描模式:
      在单次转换模式下:
        启动ADC1,则
          1.开始转换CH0(ADC_SQR的第一通道)
          转换完成后停止,等待ADC的下一次启动,继续从第一步开始转换
      在连续转换模式下:
        启动ADC1,则
          1.开始转换CH0(ADC_SQR的第一通道)
          转换完成后回到第一步,继续转换
    启动扫描模式下
      在单次转换模式下:
        启动ADC1,则
          1.开始转换CH0、
          2.转换完成后自动开始转换CH1
          3.转换完成后自动开始转换CH2
          4.转换完成后自动开始转换CH3
          5.转换完成后停止,等待ADC的下一次启动下一次ADC启动后从第一步开始转换
      在连续转换模式下:
        启动ADC1,则
          1.开始转换CH0
          2.转换完成后自动开始转换CH1
          3.转换完成后自动开始转换CH2
          4.转换完成后自动开始转换CH3
          5.转换完成后返回第一步,继续转换
    

    总结:扫描模式决定通道个数连续模式决定检测次数

    介绍完ADC基本知识,下面我们介绍代码

    实现的功能:
    通过ADC1采集PA.0,PA.1,PA.2,PA.3口的电压,定时器tim3设定0.5s提取一次测量结果,通过串口打印出来
    为了方便起见,我把所有初始化代码放在了一个文件里面
    adc.h

    #ifndef  __ADC_H
    #define  __ADC_H
    #include "sys.h"
    
    void DMA_Config(DMA_Channel_TypeDef* DMA_Ch,u32 cpar,u32 cmar,u16 cndtr);//DMA初始化
    void DMA_Enable(DMA_Channel_TypeDef* DMA_Ch);                           //DMA使能
    void GPIOA_Init(void);                                                  //四个IO口初始化
    void ADC_Config(void);                                                 //ADC初始化
    void TIM_Config(u16 arr,u16 psc);                                     //TIM时钟的初始化
    
    #endif
    
    
    
    **adc.c**
    
    **首先配置io口
    
    void GPIOA_Init(void)
    {
     GPIO_InitTypeDef GPIO_InitStruct;
     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);     //打开io口时钟
     
     GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AIN;                //由参考手册,设置模式为模拟输入
     GPIO_InitStruct.GPIO_Pin=GPIO_Pin_0;                           
     GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
     GPIO_Init(GPIOA,&GPIO_InitStruct);                      //初始化PA.0口
     GPIO_InitStruct.GPIO_Pin=GPIO_Pin_1;
     GPIO_Init(GPIOA,&GPIO_InitStruct);                     //初始化PA.1口
     GPIO_InitStruct.GPIO_Pin=GPIO_Pin_2;
     GPIO_Init(GPIOA,&GPIO_InitStruct);                    //初始化PA.2口
     GPIO_InitStruct.GPIO_Pin=GPIO_Pin_3;
     GPIO_Init(GPIOA,&GPIO_InitStruct);                    //初始化PA.3口
    }
    

    配置DMA

    u16 Get_Number;                                  //预留cndtr (进行一组转化后cndtr会置零)
    void DMA_Config(DMA_Channel_TypeDef* DMA_Ch,u32 cpar,u32 cmar,u16 cndtr)
    {
     DMA_InitTypeDef DMA_InitStruct;                      //由参考手册,DMA1的通道1与ADC1相连
     RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1,ENABLE);      //使能DMA1时钟 
     
     Get_Number=cndtr;                             //预留cndtr (进行一组转化后cndtr会置零)
     DMA_InitStruct.DMA_BufferSize=cndtr;           //设置传输数据的个数
     DMA_InitStruct.DMA_DIR=DMA_DIR_PeripheralSRC;     //设置方向为外设-->存储器
     DMA_InitStruct.DMA_M2M=DMA_M2M_Disable;            //失能存储器之间的传输
     DMA_InitStruct.DMA_MemoryBaseAddr=cmar;              //存储器地址
     DMA_InitStruct.DMA_MemoryDataSize=DMA_MemoryDataSize_HalfWord;     //设置存储器为半字长
     DMA_InitStruct.DMA_MemoryInc=DMA_MemoryInc_Enable;                //使能存储器增量
     DMA_InitStruct.DMA_Mode=DMA_Mode_Circular;                       //循环传输 
     DMA_InitStruct.DMA_PeripheralBaseAddr=cpar;                     //外设存储寄存器地址
     DMA_InitStruct.DMA_PeripheralDataSize=DMA_PeripheralDataSize_HalfWord;//设置外设寄存器为半字长
     DMA_InitStruct.DMA_PeripheralInc=DMA_PeripheralInc_Disable;       //失能外寄存储器增量
     DMA_InitStruct.DMA_Priority=DMA_Priority_High;                    //设置极性为高
     DMA_Init(DMA_Ch,&DMA_InitStruct);
    }
    
    

    DMA使能函数

    void DMA_Enable(DMA_Channel_TypeDef* DMA_Ch)
    {
     DMA_Cmd(DMA_Ch,DISABLE);
     DMA_SetCurrDataCounter(DMA_Ch,Get_Number);
     DMA_Cmd(DMA_Ch,ENABLE);
    }
    

    ADC1的配置

     ADC_InitTypeDef ADC_InitStruct;
     RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);      //打开ADC1的时钟
     
     RCC_ADCCLKConfig(RCC_PCLK2_Div6);                        //分频,最高72
     
     ADC_DeInit(ADC1);
     ADC_InitStruct.ADC_ContinuousConvMode=ENABLE;            //连续模式
     ADC_InitStruct.ADC_DataAlign=ADC_DataAlign_Right;          //右对齐
     ADC_InitStruct.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;  //无外部触发
     ADC_InitStruct.ADC_Mode=ADC_Mode_Independent;                   //独立模式
     ADC_InitStruct.ADC_NbrOfChannel=4;                             //4个通道
     ADC_InitStruct.ADC_ScanConvMode=ENABLE;                        //扫描模式
    ADC_Init(ADC1,&ADC_InitStruct); 
     
     ADC_Cmd(ADC1,ENABLE);                                            //ADC使能
     ADC_DMACmd(ADC1,ENABLE);                                   //ADC的DMA使能
     
     ADC_RegularChannelConfig(ADC1,ADC_Channel_0,1,ADC_SampleTime_1Cycles5);
     ADC_RegularChannelConfig(ADC1,ADC_Channel_1,2,ADC_SampleTime_1Cycles5);
     ADC_RegularChannelConfig(ADC1,ADC_Channel_2,3,ADC_SampleTime_1Cycles5);
     ADC_RegularChannelConfig(ADC1,ADC_Channel_3,4,ADC_SampleTime_1Cycles5);
                                                             //设置4个规则组的扫描顺序
     ADC_ResetCalibration(ADC1);
     while(ADC_GetResetCalibrationStatus(ADC1))
     ADC_StartCalibration(ADC1);
     while(ADC_GetCalibrationStatus(ADC1));
                                                         //校准
     ADC_SoftwareStartConvCmd(ADC1,ENABLE);   //软件触发
     
    

    TIM3的配置

    void TIM_Config(u16 arr,u16 psc)
    {
     TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
     NVIC_InitTypeDef NVIC_InitStruct;
     RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);           //开启时钟
      
     TIM_TimeBaseInitStruct.TIM_ClockDivision=0;
     TIM_TimeBaseInitStruct.TIM_Period=arr;
     TIM_TimeBaseInitStruct.TIM_CounterMode=TIM_CounterMode_Up;
     TIM_TimeBaseInitStruct.TIM_Prescaler=psc;
     TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStruct);              //TIM3的配置
     
     NVIC_InitStruct.NVIC_IRQChannel=TIM3_IRQn;
     NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;
     NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=2;
     NVIC_InitStruct.NVIC_IRQChannelSubPriority=2;                //中断优先级
     NVIC_Init(&NVIC_InitStruct);                  
     TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);                    //更新中断配置
     TIM_Cmd(TIM3,ENABLE);
     
    

    以上就是初始化的配置,大家只需要正确调用,TIM3的更新中断中就可以读取数据啦

    main.c

    #include "sys.h"
    #include "adc.h"
    #include "delay.h"
    #include "usart.h"
    u16 Get_Value[4];
    float v0,v1,v2,v3
    int main()
    { 
     delay_init();
     uart_init(9600);
     GPIOA_Init();
     DMA_Config(DMA1_Channel1,(u32)& ADC1->DR,(u32)Get_Value,4);
     DMA_Enable(DMA1_Channel1);
     ADC_Config();
      TIM_Config(4999,7199);
      while(1)
    {}
    }
    
    
    void TIM3_IRQHandler()    //更显中断,需要把取到的ADC的值转化为电压值哦
    {
      v0=(float)Get_Value[0]*3.3/4095;
      v1=(float)Get_Value[1]*3.3/4095;
      v2=(float)Get_Value[2]*3.3/4095;
      v3=(float)Get_Value[3]*3.3/4095;
      printf("\r\n%.3f %.3f %.3f %.3f\r\n",v0,v1,v2,v3);
      TIM_ClearFlag(TIM3,TIM_FLAG_Update)
     }
    

    运行的效果放一张图哈啊哈哈哈哈哈哈哈
    在这里插入图片描述

    第一次写博文,如果有什么不对的,希望大家斧正呀;

    展开全文
  • 本文详细介绍多路信号采集系统的实现方案、组成结构及其特性。整个采集系统完成对13路模数混合信号的采样,采样精度为12位,每路信号采样频率不低于12.5kHZ。系统包括模拟开关、测量放大、AD转换、CPLD中心逻辑...
  • 目前,在PCM/FM遥测体系中模拟信号采集普遍采用8位量化,全部模拟信号均归一化到O~5V范围内,随着需要采集的模拟信号的类型多样化,势必增加信号调理电路的多样性,不利于系统的简化和模块化。在量化位数一定的系统中,...
  • 本文提供的方式有效地解决了这个问题,既简化了前端信号调理电路的复杂度,又充分利用了A/D转换的输入电压动态范围和量化位数优势,实现了对多路模拟信号的自适应采集,对其他信号采集系统也具有一定的借鉴意义。
  • 模拟信号采集,隔离转换 RS-485输出 ● 采用12位AD转换,测量精度优于0.1% ● 通过RS-485接口可以程控校准模块精度 ● 信号输入 / 输出之间隔离耐压1000VDC ● 宽电源供电范围:8 ~ 32

    4-20MA转RS485/0-5V转RS485/0-10V转RS485模拟量信号隔离采集模块,小体积模拟信号4-20MA/0-5V电流电压MODBUS数据采集器、Modbus RTU采集模块

    4-20mARS-485Modbus数据采集模块 IBF121

    产品特点

    ● 模拟信号采集,隔离转换 RS-485输出

    ● 采用12位AD转换器,测量精度优于0.1%

    ● 通过RS-485接口可以程控校准模块精度

    ● 信号输入 / 输出之间隔离耐压1000VDC

    ● 宽电源供电范围:8 ~ 32VDC

    ● 可靠性高,编程方便,易于应用

    ● 标准DIN35导轨安装,方便集中布线

    ● 用户可编程设置模块地址、波特率等                                                       

    ● 支持Modbus RTU 通讯协议,自动识别协议

    ● 工业阻燃外壳,RS485端口浪涌防护

    ●  AD转换速率可以编程设定

    典型应用:

    ● 信号测量、监测和控制

    ●  RS-485远程I/O,数据采集

    ● 智能楼宇控制、安防工程等应用系统

    ●  RS-485总线工业自动化控制系统                       

    ● 工业现场信号隔离及长线传输

    ● 设备运行监测

    ● 传感器信号的测量 

    ● 工业现场数据的获取与记录

    ● 医疗、工控产品开发

    ●  4-20mA或0-5V信号采集

     

    产品概述:

    IBF121产品实现传感器和主机之间的信号采集,用来检测模拟信号。IBF121系列产品可应用在 RS-485总线工业自动化控制系统,4-20mA / 0-5V信号测量、监测以及工业现场信号隔离及长线传输等等。

    产品包括电源隔离,信号隔离、线性化,A/D转换和RS-485串行通信。每个串口最多可接255只 IBF121系列模块,通讯方式采用ASCII码通讯协议或MODBUS RTU通讯协议,波特率可由代码设置,能与其他厂家的控制模块挂在同一RS-485总线上,便于计算机编程。

    IBF121通用参数:

    (typical @ +25℃,Vs为24VDC)

    输入类型:  电流输入 / 电压输入

    精    度:  0.1%

    温度漂移:  ±50 ppm/℃ (±100 ppm/℃, 最大)

    输入电阻:  150Ω (4-20mA/0-20mA/0-±20mA电流输入) 

                300Ω (0-10mA/0-±10mA电流输入)

                1.5KΩ (0-1mA/0-±1mA电流输入)

                大于200K(5V/10V电压输入)

                大于1MΩ(2.5V以下电压输入)

    带    宽:  -3 dB 10 Hz

    转换速率:  10 Sps(出厂默认值,用户可发命令修改转换速率。)

                   可以通过发送命令设置AD转换速率为2.5 SPS,5 SPS,10 SPS,20 SPS。(通道转换速率=AD转换速率/开启的通道数量)

                  注:修改转换速率后请重新校准模块,否则测量的数据会有偏差。也可以在订货的时候注明转换速率,我们在产品出厂时按您要求的转换速率重新校准。

    共模抑制(CMR): 120 dB(1kΩ Source Imbalance @ 50/60 Hz)

    常模抑制(NMR): 60 dB (1kΩ Source Imbalance @ 50/60 Hz)

    输入端保护: 过压保护,过流保护

    通    讯:   协议  RS-485 标准字符协议 和 MODBUS RTU通讯协议

                 波特率(2400、4800、9600、19200、38400、57600 、115200bps)可软件选择

    地址(0~255)可软件选择

    通讯响应时间:100 ms 最大

    工作电源:    +8 ~ 32VDC宽供电范围,内部有防反接和过压保护电路              

    功率消耗:    小于1W

    工作温度:    - 45 ~ +80℃         

    工作湿度:   10 ~ 90% (无凝露)

    存储温度:   - 45 ~ +80℃              

    存储湿度:   10 ~ 95% (无凝露)                                    

    隔离耐压:   输入 / 输出  之间:  1KVDC,1分钟,漏电流 1mA

                 其中RS-485输出和电源共地。

    耐冲击电压: 1KVAC, 1.2/50us(峰值)

    外形尺寸:   79 mm  x  69.5mm  x  25mm

    IBF121字符协议命令集:

    模块的出厂初始设置,如下所示:

    地址代码为01

    波特率9600 bps

    禁止校验和

    如果使用 RS-485网络,必须分配一个独一无二的地址代码,地址代码取值为16进制数在00和FF之间,由于新模块的地址代码都是一样的,他们的地址将会和其他模块矛盾,所以当你组建系统时,你必须重新配置每一个IBF121模块地址。可以在接好IBF121模块电源线和RS485通讯线后,通过配置命令来修改IBF121模块的地址。波特率,校验和状态也需要根据用户的要求而调整。而在修改波特率,校验和状态之前,必须让模块先进入缺省状态,否则无法修改。

    让模块进入缺省状态的方法:

    IBF121模块都有一个特殊的标为INIT的管脚。将INIT管脚短路接到GND1管脚后,再接通电源,此时模块进入缺省状态。在这个状态时,模块的配置如下:

    地址代码为00

    波特率9600 bps

    禁止校验和

    这时,可以通过配置命令来修改IBF121模块的波特率,校验和状态等参数。在不确定某个模块的具体配置时,也可以将INIT管脚短路接到GND1管脚,再接通电源,使模块进入缺省状态,再对模块进行重新配置。

     

        字符协议命令由一系列字符组成,如首码、地址ID,变量、可选校验和字节。

    命令格式:(Leading Code)(Addr)(Command)[data][checksum]

    (Leading code) 首码是命令中的第一个字母。所有命令都需要一个命令首码,如%,$,#,@,...等。        1- 字符

    (Addr)      模块的地址代码, 如果下面没有指定,取值范围从 00FF (十六进制)                2- 字符

    (Command) 显示的是命令代码或变量值。                                                    变量长度

    [data]      一些输出命令需要的数据。                                                      变量长度

    [checksum] 括号中的Checksum(校验和)显示的是可选参数,只有在启用校验和时,才需要此选项。 2- 字符

    当启用校验和(checksum)时,就需要[Checksum]。它占2-字符。命令和应答都必须附加校验和特性。校验和用来检查所有输入命令,来帮助你发现主机到模块命令错误和模块到主机响应的错误。校验和字符放置在命令或响应字符之后,回车符之前。

    计算方法:两个字符,十六进制数,为之前所发所有字符的ASCII码数值之和,然后与十六进制数0xFF相与所得。

    应用举例:禁止校验和(checksum)

           用户命令    $002

           模块应答    !00020600 (cr)

     启用校验和(checksum)

    用户命令    $002B6

           模块应答    !00020600 A9 (cr)

           ‘$’ = 0x24   ‘0’ = 0x30   ‘2’ = 0x32

      B6=(0x24+0x30+0x30+0x32) AND 0xFF

           ‘!’ = 0x21   ‘0’ = 0x30   ‘2’ = 0x32   ‘6’ = 0x36

      A9=(0x21+0x30+0x30+0x30+0x32+0x30+0x36+0x30+0x30) AND 0xFF

    命令的应答

    应答信息取决于各种各样的命令。应答也由几个字符组成,包括首代码,变量和结束标识符。应答信号的首代码有两种,!>表示有效的命令而?则代表无效。通过检查应答信息,可以监测命令是否有效

    注意:1、在一些情况下,许多命令用相同的命令格式。要确保你用的地址在一个命令中是正确的,假如你用错误的地址,而这个地址代表着另一个模块,那么命令会在另一个模块生效,因此产生错误。

    2、必须用大写字母输入命令。

    1、读模拟输入模块数据命令

    说    明:从模块中读回模拟输入数据。

    命令格式:#01

    参数说明:#     分界符。

              01   模块地址,取值范围 00FF(十六进制)。出厂地址为01,转换成十六进制为每个字符的ASCII码。如地址01换成十六进制为30H31H        

    应答格式:>(data)(cr)     命令有效。

              ?AA(cr)       命令无效或非法操作或通道被关闭。

    参数说明:>     分界符。

              (data) 代表读回的通道N的数据。数据格式可以是工程单位,FSR的百分比,16进制补码,或者ohms。详细说明见命令集第3条。

              (cr)   结束符,上位机回车键(0DH)。

    其他说明:假如语法错误或通讯错误或地址不存在,模块不响应。         

    应用举例:  用户命令(字符格式)      #01

                        十六进制格式)  23303130

                模块应答(字符格式)      >+18.000 (cr)

    十六进制格式):3E2B31382E3030300D

    说    明:在地址01H模块上通道0的输入是(数据格式是工程单位):+18.000mA

     

    2、配置IBF121模块命令

    说    明:对一个IBF121模块设置地址,输入范围,波特率,校验和状态。配置信息储存在非易失性存储器EEPROM里。

    命令格式:%AANNTTCCFF

    参数说明:%    分界符。

    AA   模块地址,取值范围 00FF(十六进制)。出厂地址为01,转换成十六进制为每个字符的ASCII码。如地址01换成十六进制为30H31H

              NN   代表新的模块16进制地址,数值NN的范围从00到FF。转换成十六进制为每个字符的ASCII码。如地址18换成十六进制为31H38H

              TT   用16进制代表类型编码。 IBF121产品必须设置为00。

    CC   用16进制代表波特率编码。 

    波特率代码

    波特率

    04

    2400 baud

    05

    4800 baud

    06

    9600 baud

    07

    19200 baud

    08

    38400 baud

    09

    57600 baud

    0A

    115200 baud

     

     

     

     

     

     

                                         

                

    表2  波特率代码

               FF    用16进制的8位代表校验和。注意从bits0 到bits5不用必须设置为零。

    Bit7

    Bit 6

    Bit 5

    Bit 4

    Bit 3

    Bit2

    Bit 1

    Bit 0

     

             

              表3   校验和代码

                      Bit7保留位,必须设置为零                                  

                      Bit6校验和状态,为0:禁止; 为1:允许

                      Bit5-bit0不用,必须设置为零。           

    应答格式:!AA(cr)  命令有效。

              ?AA(cr)  命令无效或非法操作,或在改变波特率或校验和前,没有将INIT开关拨到INIT位置。

    参数说明:!     分界符,表示命令有效。

              ?     分界符,表示命令无效。

              AA   代表输入模块地址

              (cr)   结束符,上位机回车键,十六进制为0DH。

    其他说明:假如你第一次配置模块,AA=01H,NN等于新的地址。假如重新配置模块改变地址、输入范围。AA等于当前已配置的地址,NN等于当前的或新的地址。假如要重新配置模块改变波特率或校验和状态,则必须将INIT开关拨到INIT位置,使模块进入缺省状态,此时模块地址为00H,即 AA=00H,NN等于当前的或新的地址。

    假如格式错误或通讯错误或地址不存在,模块不响应。                             

    应用举例:  用户命令    %0111000600

                模块应答    !11(cr)

    说    明:%    分界符。

              01    表示你想配置的IBF121模块原始地址为01H。

              11    表示新的模块16进制地址为11H。

              00    类型代码,IBF121产品必须设置为00。

              06    表示波特率9600 baud。

    00    表示禁止校验和。

     

    3、读配置状态命令

    说    明: 对指定一个IBF121模块读配置。

    命令格式:$012          

    参数说明:$     分界符。  

              01   模块地址,取值范围 00FF(十六进制)

              2     表示读配置状态命令  

              (cr)   结束符,上位机回车键,十六进制为0DH。

    应答格式:!AATTCCFF(cr)    命令有效。

              ?AA(cr)            命令无效或非法操作。

    参数说明:!     分界符。

              AA   代表输入模块地址。

              TT   代表类型编码。

              CC   代表波特率编码。见表2

              FF    见表3

              (cr)   结束符,上位机回车键,十六进制为0DH。

    其他说明:假如格式错误或通讯错误或地址不存在,模块不响应。

    应用举例:  用户命令    $012

                模块应答    !300F0600(cr)

    说    明:!     分界符。

              301    表示IBF121模块地址为01H 。       

              00    表示输入类型代码。

              06    表示波特率9600 baud。

    00    表示禁止校验和。

     

     

    4、修改模块量程命令

    说    明: 修改模块显示的量程和数据格式。

    命令格式:$AA0D (span)

    参数说明:$   分界符。

    AA   模块地址,取值范围 00FF(十六进制)。出厂地址为01,转换成十六进制为每个字符的ASCII码。如地址01换成十六进制为30H31H

    0    设置量程命令

    D    设置数据格式,数据有几个小数,取值范围04。例如3表示00.000,有3个小数。     

    (span)   表示通道的满度,一个符号加5个数,没有小数点。比如100可以设置为+00100

    应答格式:!AA(cr)  命令有效。

              ?AA(cr)  命令无效或非法操作。                           

    应用举例1:  设置模块按实际的0-5000.0显示输出

    用户命令    $0101+05000

                模块应答    !01(cr)

    说    明:$    分界符。

              01   模块地址

    0    设置量程命令 

    1    表示有1个小数。

              +05000   表示量程为5000

             设置完成后数据显示的格式:+1234.5

    5、读模块量程命令

    说    明:读模块的量程。

    命令格式:$AA1        

    应答格式:! AA1D (span) (cr)    命令有效。参数说明参考上一条命令

              ?AA(cr)            命令无效或非法操作。

    应用举例:  用户命令    $011

                模块应答    !0113+00100 (cr)

    说    明:!    分界符。

              01   模块地址

    1    读取量程命令

    3    表示有3个小数。

              +00100    表示满度为100。  

     

    6、设置模块AD转换速率

    说明:设置模块的AD转换速率。其中,通道转换速率=AD转换速率/开启的通道数量。采样速率越慢,采集的数据就越准确。用户可根据需要自行调节。出厂默认的转换速率是10SPS。

          注:修改转换速率后请重新校准模块,否则测量的数据会有偏差。也可以在订货的时候注明转换速率,我们在产品出厂时按您要求的转换速率重新校准。

    命令格式:$AA3R

    参数说明:$     分界符。

              AA   模块地址,取值范围 00FF(十六进制)

              3    表示设置转换速率命令   

              R    转换速率代号,可为0~3

    代号R

    0

    1

    2

    3

     

     

     

     

     

     

    转换速率

    2.5 SPS

    5 SPS

    10 SPS

    20 SPS

     

     

     

     

     

     

       

    应答格式:!AA(cr)   命令有效。

    ?AA(cr)   命令无效或非法操作

    参数说明:!     分界符,表示命令有效。

              ?     分界符,表示命令无效。

              AA   代表输入模块地址。                

              (cr)   结束符,上位机回车键,十六进制为0DH。

    其他说明:假如格式错误或通讯错误或地址不存在,模块不响应。        

    应用举例1: 用户命令    $0032

                模块应答    !00 (cr)

    说    明: 设置AD转换速率为10SPS。

    应用举例2: 用户命令    $0033

                模块应答    !00 (cr)

    说    明:设置AD转换速率为20SPS。

    7、读模块AD转换速率

    说明:读模块的AD转换速率。其中,通道转换速率=AD转换速率/开启的通道数量。采样速率越慢,采集的数据就越准确。

    命令格式:$AA4

    参数说明:$     分界符。

              AA   模块地址,取值范围 00FF(十六进制)

              4    表示读转换速率命令        

    响应语法:!AAR(cr)   命令有效。

    ?AA(cr)   命令无效或非法操作

    参数说明:!     分界符,表示命令有效。

              ?     分界符,表示命令无效。

              AA   代表输入模块地址。

    R    转换速率代号,可为0~3

    代号R

    0

    1

    2

    3

     

     

     

     

     

     

    转换速率

    2.5 SPS

    5 SPS

    10 SPS

    20 SPS

     

     

     

     

     

     

              (cr)   结束符,上位机回车键(0DH)。

    其他说明:假如语法错误或通讯错误或地址不存在,模块不响应。        

    应用举例1: 用户命令    $004

                模块应答    !002 (cr)

    说    明:当前AD转换速率为10SPS。

    应用举例2: 用户命令    $004

                模块应答    !003 (cr)

    说    明:当前AD转换速率为20SPS。

     

    8、设置以上字符命令设置的所有参数恢复出厂设置。

    说    明:设置模块用以上字符命令设置的参数恢复为出厂设置。

    命令格式:$AA900   设置参数恢复出厂设置。

    参数说明:AA   模块地址,取值范围 00FF(十六进制)。出厂地址为01,转换成十六进制为每个字符的ASCII码。如地址01换成十六进制为30H31H

    应答格式:! AA(cr)     表示设置成功,模块会自动重启。

    应用举例:  用户命令(字符格式)      $01900  

                模块应答(字符格式)      ! 01(cr)

    说    明:参数恢复出厂设置。

    Modbus RTU 通讯协议:

    模块的出厂初始设置,如下所示:

    Modbus地址为01

    波特率9600 bps

     

     

     

    让模块进入缺省状态的方法:

    IBF121模块都有一个特殊的标为INIT的管脚。将INIT管脚短路接到GND1管脚后,再接通电源,此时模块进入缺省状态。在这个状态时,模块暂时恢复为默认的状态:地址为01,波特率为9600。在不确定某个模块的具体配置时,用户可以查询地址和波特率的寄存器40201-40202,得到模块的实际地址和波特率,也可以跟据需要修改地址和波特率。

     

     

     

    支持Modbus RTU通讯协议功能码03(读保持寄存器)和功能码06(写单个寄存器),命令格式按照标准Modbus RTU通讯协议。

     

    展开全文
  • 0 引言目前,在PCM/FM遥测体系中模拟信号采集普遍采用8位量化,全部模拟信号均归一化到O~5 V范围内,随着需要采集的模拟信号的类型多样化,势必增加信号调理电路的多样性,不利于系统的简化和模块化。在量化位数...
  • 本文提供的方式充分利用了A/D转换的输入电压动态范围和量化位数优势,实现了对多路模拟信号的自适应采集,对其他信号采集系统也具有一定的借鉴意义。  l 系统设计  该系统主要由信号调理电路、采集电路和时序
  • 摘要:本文介绍了一种利用PC机设备来设计模拟信号发生的方案。该方案通过利用PC机内的充分资源来产生各种所需波形,然后通过USB2.0接口输出。在PC机外采用DAC8580对数字信号进行DA转换,并用CPLD对整个电路进行...
  • 模拟量信号隔离模块、模拟量信号隔离主要用于对各类4~20mA信号采集设备或控制设备进行隔离保护。唐山平升模拟量信号隔离模块实现了电源、输入信号、输出信号的全面隔离,可有效消除串流、电磁、谐波等干扰信号、...
  • 一种模拟信号隔离的研究与设计,张天海,,模拟信号隔离在计算机监控、信号采集领域中具有广泛的用途。论文从工程实际应用出发,采用模块化组合的设计思想,利用线性光耦
  • 16路信号采集转换器器pdf,ISOAD 16功能简介:ISOAD 16 信号隔离采集模块,可以用来测量16路隔离/非隔离电流或电压信号。1、 模拟信号输入24位采集精度,产品出厂前所有信号输入范围已全部校准。在使用时,用户也可以...
  • 模拟信号高速数据采集回放设备

    千次阅读 2019-07-08 10:28:43
    设计方案 概述 数据采集记录集成了高速模数转换,高速数模转换...录取:实现对1路模拟信号进行采集存储,最高采样率可达到1GSPS,支持内/外采样时钟输入。 回放(选配):将本地存储数字波形通过DAC芯片转换成...
  • 这两款新产品完美集成了出色的DC精度、卓越的AC性能以及低成本集成等优异特性,为电源测量、除颤、ECG监视以及压力传感器、科里奥列流量计以及震荡/模式分析等要求严格的信号采集应用提供了同时采样测量系统。...
  • 采用多级放大技术设计了用于模拟与光子计数融合方法的双通道前置放大,并与通用数据采集卡和光子计数卡组成信号采集系统。利用激光雷达信号模拟源搭建了测试系统;通过测量坪特性和脉冲高度分布确定光电倍增管(PMT...
  • 本文介绍了如何利用RS232寄存器I/O操作,实现RS232口的直接数字量输入及简便的模拟量输入方法。用这种方法实现的A/D转换及I/O扩展,直接利用RS232口进行供电,无需外接其它电源。在软件编程方面,无需对串口进行...
  • 摘要:介绍了一种串行16位A/D转换ADS7813的主要特性、使用方法,以及它与单片机组成的多路模拟信号采集系统,最后提出了ADS7813应用中应注意的问题。  1.引言  在水下载体运行过程中,需要及时地对其一些信号...
  • ● 八路模拟信号采集,隔离转换 RS-485/232输出 ● 采用12位AD转换,测量精度优于0.1% ● 通过RS-485/232接口可以程控校准模块精度 ● 信号输入 / 输出之间隔离耐压1000VDC ● 宽电源供电范围:8 ~ 32VDC ● ...
  • 了解采集模拟信号的基础知识,包含带宽、幅值误差、上升时间、采样率、奈奎斯特定理、混叠与分辨率等。 本教程是仪器基础教程系列的一部分。
  • 了解采集模拟信号的基础知识,包含带宽、幅值误差、上升时间、采样率、奈奎斯特定理、混叠与分辨率等。 本教程是仪器基础教程系列的一部分。 1. 什么是数字化仪?  科学家和工程师常用数字化仪采集真实世界中的...
  • AD_TLC549采集模拟信号

    2016-05-06 19:22:00
    AD_TLC549采集模拟信号 实验原理 芯片介绍 TLC549是 TI公司生产的一种低价位、高性能的8位A/D转换,它以8位开关电容逐次逼近的方法实现 A/D转换,其转换速度小于 17us,最大转换速率为 40000HZ,4MHZ典型内部...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,504
精华内容 601
关键字:

模拟信号采集器