增压供水流量配比柔性控制电气系统设计与开发(9)

来源:网络收集 时间:2025-09-19 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xuecool-com或QQ:370150219 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

本科毕业设计说明书(论文) 第 28 页 共 46 页

4.5 ADC部分

4.5.1 ADC初始化

在增压流量配比控制系统中,两路差压流量信号分别被送入ADC1的通道10

(PC0引脚)和通道11(PC1引脚)进行处理,那么在AD转换之前,我们需要对这两个通道进行初始化,初始化步骤如下:

(1)开启PC口时钟,设置PC0、PC1为模拟输入; (2)使能ADC1时钟,并设置分频因子; (3)设置ADC1的工作模式;

(4)设置ADC1规则序列的相关信息; (5)开启ADC并校准; (6)使能ADC中断;

初始化的程序如下:

void Adc_Init() {

//先初始化IO口

RCC->APB2ENR|=1<<4;//使能PORTC时钟

GPIOC->CRL&=0XFFFFFF00;//PC0、1设置为模拟输入 RCC->APB2ENR|=1<<9;//ADC1时钟使能 RCC->APB2RSTR&=~(1<<9);//ADC1复位 RCC->CFGR&=~(3<<14);//分频因子清零

//SYSCLK/DIV2=12M ADCCLK设置为12M,ADC最大时钟不要超过14M,否则会 //造成ADC准确度下降! RCC->CFGR|=2<<14;

ADC1->CR1&=0XF0FFFF;//工作模式清零,选择独立模式

ADC1->CR1|=0<<16;//独立工作模式 ADC1->CR1|=(1<<8);//工作于扫描方式 ADC1->CR1|=(1<<1);//连续转换模式 ADC1->CR2&=~(7<<17);

ADC1->CR2|=(7<<17);//软件控制转换

本科毕业设计说明书(论文) 第 29 页 共 46 页

ADC1->CR2|=1<<20;//使用外部触发(SWSTART)!!!必须使用一个事件来触发 ADC1->CR2&=~(1<<20);//右对齐 ADC1->SQR1&=~(0XF<<20);

ADC1->SQR1&=1<<20;//2个转换在规则序列中 ADC1->SQR2&=2<<25;

ADC1->SQR3&=1<<20;//确定2个规则转换的转换通道号 //设置通道10,11的采样时间

ADC1->SMPR1&=0XFFFFFF00;//通道10,11采样时间清空

ADC1->SMPR1|=7<<3;//通道11采样时间是239.5周期,提高采样时间可提

//高精度

ADC1->SMPR1|=7<<0;//通道10采样时间是239.5周期,提高采样时间可提

//高精度

ADC1->CR2|=1<<0;//开启ADC

ADC1->CR2|=1<<3;//使能复位校准 while(ADC1->CR2&1<<3);//等待校准结束

//该位由软件设置以进行校准,并在校准结束时由硬件清除 ADC1->CR1|=1<<5;//使能EOC中断

MY_NVIC_Init(2,5,ADC1_2_IRQChannel,2);//抢占2,子优先级5,组2 }

该函数是包含在ADC.c源文件中的,在主程序进行初始化时直接调用就可以了。

4.5.2 读取ADC结果

因为增压流量配比系统的ADC是采用中断形式的,所以我们在进行ADC初始

化之后,ADC开始自动连续转换,我们还要编写一个ADC的中断程序用于读取ADC结果。

void ADC1_2_IRQHandler(void) {

u16 Adcbuf[2]; u8 ch;

本科毕业设计说明书(论文) 第 30 页 共 46 页

Adcbuf[ch-10]=ADC1->DR; }

该函数也是包含在ADC.c源文件中的,在主程序进行ADC初始化之后ADC1

的通道10和通道11即开始不断进行转换,当转换结束时程序便自动转入中断处理,读取ADC结果并将结果存入缓存中,等待主程序来进行读取处理,这样就可以在不打扰主程序的前提下进行AD转换。

4.6 ModBus通讯

4.6.1 STM32通用串口初始化

RS485总线占用了主控制芯片的串口1,所以我们首先要对串口1进行初始

化,具体设定通讯参数为:波特率9600,8位数据,1位停止位,无校验位。串口1初始化函数如下(这一函数是包含在usart.c源文件中的): void uart_init(u32 pclk2,u32 bound) {

float temp; u16 mantissa; u16 fraction;

temp=(float)(pclk2*1000000)/(bound*16);//得到USARTDIV mantissa=temp;

//得到整数部分

fraction=(temp-mantissa)*16; //得到小数部分 mantissa<<=4;

mantissa+=fraction;

RCC->APB2ENR|=1<<2; //使能PORTA口时钟 RCC->APB2ENR|=1<<14; //使能串口时钟 GPIOA->CRH=0X44444BB4;//IO状态设置 RCC->APB2RSTR|=1<<14; //复位串口1 RCC->APB2RSTR&=~(1<<14);//停止复位 //波特率设置

USART1->BRR=mantissa; // 波特率设置

USART1->CR1|=0X200C; //1位停止,无校验位.

本科毕业设计说明书(论文) 第 31 页 共 46 页

#ifdef EN_USART1_RX

//使能接收中断

USART1->CR1|=1<<8; //PE中断使能

USART1->CR1|=1<<5; //接收缓冲区非空中断使能

MY_NVIC_Init(2,4,USART1_IRQChannel,2);//抢占2,子优先级4,组2

//如果使能了接收

#endif }

这样,在主程序对串口1进行初始化时,只需要调用这个函数

(uart_init(72,9600);)就可以了。当MCU接收到上位机发送的数据时,程序便从主程序自动跳转到串口中断程序进行数据的接收,并将接收到的有效数据(地址码与本机符合的数据)存入缓存中,等待主程序读取处理。 4.6.2 Modbus-RTU协议

Modbus进行通讯传送时每一个字节的传送格式是:1位起始位,8位数据位,

1位停止位,无奇偶校验位。

一个数据包的格式如表4.1所示:

表4.1 Modbus协议数据包格式

地址码 1字节 功能码 1字节 数据区 N字节 CRC校验码 16位(2字节) 地址码为通讯传送的第一个字节,取值范围是0-255。这个字节表明由用户设定地址码的从机将接收由主机发送来的信息。每个从机都有一个唯一的地址码,并且响应回送均以各自的地址码开始。主机发送的地址码表明将发送到的从机的号码,而从机发送的地址码表示回送的从机地址。

功能码:通讯传送的第二个字节。Modbus通讯规约定义功能号为1到127。本系统只是利用其中的很少一部分功能码。作为主机发送,通过功能码告诉从机执行什么动作;作为从机响应,从机发送的功能码与从主机发送来的功能码一样,并表明从机已经响应主机进行操作。如果从机发送的功能码的最高位为1(即功能码大于127),则表明从机没有响应操作或发送出错。增压流量配比控制系统用到的功能码如表4.2所示:

表4.2 Modbus协议功能码

本科毕业设计说明书(论文) 第 32 页 共 46 页

功能码 含义 03H 读数据 06H 写数据 数据区:这是增压流量配比控制系统与上位机PLC之间的共享数据。数据区可以是实际数值、设置点、主机发送给从机或从机发送给主机的地址。在增压流量配比控制系统中,数据区总共有六个字节,前两个字节表示管网水流量与水箱水流量之和,中间两个字节表示管网水流量与水箱水流量之比,后面两个字节表示电机速度。增压流量配比控制系统收到上位机发送过来的数据,执行相应动作,并将本机状态反馈给上位机。

CRC校验码:两字节的错误校验码。生成CRC16校验码的程序流程如下[15]: (1)预置一个16位寄存器为0XFFFF,称为CRC寄存器;

(2)把数据帧中的第一个8位字节与CRC寄存器的低字节进行异或运算,结 果存回CRC寄存器;

(3)把CRC寄存器向右移一位,最高位填以0,最低位移出并检测; (4)若移出的最低位为1,则将CRC寄存器与一个预设的固定值(0XA001)进 行异或运算;

(5)重复第3步和第4步,直至移出8位;

(6)重复第2步到第5步,处理下一个8位字节,直到所有的字节处理结束。 相关程序如下:

unsigned int CRC16_check(unsigned char *fp_CRC,unsigned char count) {

unsigned int CRC=0XFFFF; unsigned char CRC_count;

for(CRC_count=0;CRC_count

int i;

CRC=CRC^*(fp_CRC+CRC_count); for(i=0;i<8;i++) {

if(CRC&1)

百度搜索“70edu”或“70教育网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,70教育网,提供经典教育范文增压供水流量配比柔性控制电气系统设计与开发(9)在线全文阅读。

增压供水流量配比柔性控制电气系统设计与开发(9).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.70edu.com/fanwen/1026277.html(转载请注明文章来源)

相关推荐:

Copyright © 2020-2025 70教育网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:370150219 邮箱:370150219@qq.com
苏ICP备16052595号-17
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:7 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219