STM32单片机仿真开发实例 课件 第6篇 综合篇_第1页
STM32单片机仿真开发实例 课件 第6篇 综合篇_第2页
STM32单片机仿真开发实例 课件 第6篇 综合篇_第3页
STM32单片机仿真开发实例 课件 第6篇 综合篇_第4页
STM32单片机仿真开发实例 课件 第6篇 综合篇_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

6.1工业计数器的设计能力目标:

认知工业自动化产品中的工业计数器,在理解的基础上掌握其主要功能,并完成产品主要功能的设计。任务要求:绘制工业计数器的仿真电路,并完成STM32单片机程序的设计,要求实现如下功能:(1)采用5位计数,即计数范围为0~99999;(2)具备计数暂停/运行功能,通过按钮实现;(3)具备计数清零功能,通过按钮实现。6.1.1工业计数器简介

在工厂流水线上,经常需要对产品个数进行计数,这就需要用到计数装置,通常实现的方法有两种:

①利用PLC(ProgrammableLogicController,可编程逻辑控制器)进行计数;

②利用独立的计数模块进行计数。(✔)无论是采用PLC计数,还是采用独立的计数模块进行计数,都需要用到检测传感器。检测传感器种类很多,比如下图所示是一种工作电压为5V的三线式光电开关。

仿真的时候,可以用一个按钮或者开关来模拟光电开关。6.1.2仿真电路的绘制①6位共阳极数码管:★最高位用于显示计数器工作状态(暂停显示“P.”/计数无显示);★其余5位用于显示当前计数值。②左侧从上到下三个按钮:★第一个按钮用于模拟光电开关的输入;★第二个按钮用于切换工作状态;★第三个按钮用于清零计数值。6.1.3任务程序的编写(现场操作演示…)Tobecontinued...6.2时间继电器的设计能力目标:

认知工业自动化产品中的时间继电器,在理解的基础上掌握其主要功能,并完成产品主要功能的设计。任务要求:

绘制时间继电器的仿真电路,并完成STM32单片机程序的设计,要求实现如下功能:(1)通电延时型时间继电器,输入开关量闭合后开始自动计时,计时完成后输出常开触点闭合、常闭触点断开,输入开关量断开后模块恢复原状;(2)计时范围0.01秒~99小时59分;(3)计时设定值与当前值均能显示;(4)计时设定值通过按钮输入设定。6.2.1时间继电器简介时间继电器根据其工作原理,可以分为机械式和电子式两种:电子式时间继电器(如右图),四位数码管用于显示当前计时时间,五位编码开关用于设延时时长。编码开关的第三位(即中间位)用于设定前两位的延时单位,“H”表示小时,“M”表示分,“S”表示秒,其余四位则用于设定延时时长的数值,比如设定“12M34”,表示延时时长为12分34秒,比如设定“12S34”,表示延时时长为12.34秒,以此类推。6.2.2仿真电路的绘制

不妨在LCD1602第一行显示设定参数,第二行显示当前计时数据。仿真电路左侧从上往下共有1个开关和6个按钮,按钮功能见右图,开关同时连接到STM32单片机的PB0和PB1两个引脚,这么做的目的是为了能让PB0和PB1分别检测开关动作的下降沿和上升沿,下降沿表示线圈得电,上升沿表示线圈失电。PD2输出控制三极管Q1通断,从而控制继电器RL1工作。6.2.3任务程序的编写(现场操作演示…)Tobecontinued...6.3远程I/O模块的设计能力目标:

认知工业自动化产品中的远程I/O模块,在理解的基础上掌握其主要功能,并完成产品主要功能的设计。任务要求:

绘制远程I/O模块的仿真电路,并完成STM32单片机程序的设计,要求实现如下功能:(1)模块具备4个数字量输入和4个数字量输出;(2)能与组态软件(比如MCGS)、支持Modbus_RTU通信协议的PLC(比如三菱FX3U)配合实现远程I/O控制。6.3.1远程I/O模块简介远程I/O模块也叫分布式I/O模块,顾名思义是一种能够实现远距离I/O控制的自动化装置。如下图所示,PLC和远程I/O挂在同一个总线上。远程I/O模块无需编写程序,只需要设定好通信参数即可使用,可以看成是对PLC的I/O点的延伸或者扩充。

国外品牌的远程I/O模块,出于商业利益,只支持自家自动化产品,兼容型较差。

国产品牌的远程I/O模块,由于起步较晚,为了争夺市场份额,采用通用型通信协议,兼容型较好。6.3.2CRC校验

数据在传递过程中,由于环境干扰等因素收发数据的一致性往往得不到保证,因此常用的做法是对数据包进行校验,如果通不过校验,则将整个数据包丢弃。计算数据包校验值添加校验值到数据包末尾发送数据包接收数据包重新计算数据包校验值与原校验值比较继续解析数据包丢弃数据包相同不同数据发送端:数据接收端:CRC(CyclicRedundancyCheck,循环冗余校验)校验是一种主流的数据校验技术,常用的CRC校验有如下六种版本:●CRC-8●CRC-12●CRC-16(✔)●CRC-CCITT●CRC-32●CRC-32C

在接下来介绍的Modbus_RTU通信协议中,我们会用到CRC-16校验方式。

由于CRC校验算法原理十分复杂,因此本课程不做深入介绍,仅提供校验程序,读者直接调用校验码生成函数即可。

(演示CRC校验相关程序的使用方法)6.3.3Modbus_RTU概述Modbus协议是由美国modicon公司(现已被施耐德公司收购)于1979年提出的一种可用于工业现场的总线协议。Modbus协议仅定义了数据链路层协议,可用于RS-232、RS-422、RS-485等串行总线。Modbus协议分为Modbus_RTU(√本次任务选择)、Modbus_ASCII(×不讲)两种,本教材仅介绍Modbus_RTU协议。

Modbus协议采用如图所示一主多从式拓扑结构,主站对从站主动轮询,从站被动应答。Modbus通信数据包格式如图所示,其中ADU(ApplicationDataUnit,应用数据单元)即完整数据包,由1个字节的地址域、PDU(ProtocolDataUnit,协议数据单元)和2个字节的差错校验码构成。地址域即从站地址,差错校验码即CRC-16校验码。

Modbus协议的功能本质上就是主站对从站存储单元的读写,从站存储单元有两类:

◆线圈(Coil),即布尔变量(Bit)

◆寄存器(register),即十六位无符号数据(Word)

(P.S:实际上,布尔变量还分为离散输入(DiscretesInput,只读)和线圈(Coil,读写)两种,寄存器变量还分为输入寄存器(InputRegister,只读)和保持寄存器(HoldingRegister,读写)两种,这里仅介绍线圈和保持寄存器两种)功能码代表了主站对从站存储单元不同的读写行为,长度1个字节,如下表所示。“读(多个)线圈”指令,完整的指令格式如表所示。说明:◆地址域,由1个字节构成,即Modbus从站地址,范围0~247(248~255保留);

◆起始地址,由2个字节构成,即第一个线圈的地址,范围0000H~FFFFH;

◆线圈数量,由2个字节构成,即从第一个线圈开始连续若干个线圈,范围1~2000;

◆校验码,由两个字节构成,即CRC校验码;◆字节数,由1个字节构成,即后面记录线圈状态的字节的个数;◆线圈状态,由N个字节构成,每个字节记录了8个线圈状态,“0”代表“OFF”状态,“1”代表“ON”状态。

主站命令:地址域功能码0x01起始地址H起始地址L线圈数量H线圈数量L校验码H校验码L从站响应:地址域功能码0x01字节数线圈状态(N个字节)校验码H校验码L

下面是一个请求“读线圈”20-38(Hex:0013H~0025H)的实例:

其中:

将输出27~20的状态表示为十六进制字节值CDH,或二进制11001101B;

在最后的数据字节中,将输出状态38-36表示为十六进制字节值05H,或二进制00000101B。线圈地址2726252423222120线圈状态11001101线圈地址×××××383736线圈状态00000101注意,这里不是从0014H~0026H“写单个线圈”指令,完整的指令格式如表所示。说明:◆地址域,由1个字节构成,即Modbus从站地址,范围0~247(248~255保留);◆线圈地址,由2个字节构成,即地址范围为0x0000~0xFFFF;◆线圈状态,由2个字节构成,0x0000代表“OFF”状态,0xFF00代表“ON”状态;◆校验码,由2个字节构成,即CRC校验码。值得注意的是,“写单个线圈”指令的从站响应数据包格式与主站命令数据包格式完全相同。主站命令:地址域功能码0x05线圈地址H线圈地址L线圈状态H线圈状态L校验码H校验码L从站响应:地址域功能码0x05线圈地址H线圈地址L线圈状态H线圈状态L校验码H校验码L

下面是一个请求“写单个线圈”

173(Hex:00ACH)的实例:

注意,这里不是00ADH6.3.4仿真电路的绘制为了保护单片机,远程I/O模块的输入与输出接口与单片机的GPIO引脚需要进行隔离设计,下面两张图分别是1路输入隔离电路(左)和1路输出隔离电路(右)。

为了提高电路仿真执行效率,仿真时必须将隔离电路简化。如下图所示,仿真电路中,用按钮模拟数字量输入,用LED模拟数字量输出。6.3.5任务程序的编写

本次任务需要用到的新的API函数有:①HAL_UART_Transmit_IT

串口发送函数(带中断)例程://将数组dat中的第一个元素通过串口1发送并开中断if(HAL_UART_Transmit_IT(&huart1,dat,1)!=HAL_OK){Error_Handler();}

HAL_UART_TxCpltCallback

串口发送完毕回调函数例程://串口1发送完毕回调voidHAL_UART_TxCpltCallback(UART_HandleTypeDef*huart){ if(huart==&huart1){…}}

本次任务中,需要用到两个软件:组态软件“MCGS嵌入版”、“凌一”PLC模拟器

(1)MCGS嵌入版

MCGS嵌入版是用来组态“昆仑通态”触摸屏的软件,软件使用免费,软件自带模拟器,因此可以利用模拟器来模拟触摸屏的运行。没有学过的同学,可以直接调用笔者配置好的工程文件,值得注意的是,MCGS中Modbus线圈的地址不是从0开始,而是从0x0001开始,存在一个偏移量,如下图所示。

(2)“凌一”PLC模拟器“‘凌一’PLC模拟器”是浙江台州凌创科技有限公司推出的一款免费的三菱FX3UPLC的模拟器软件(若用于商业用途,需付费),公司官网链接:/Modbus初始化指令表程序如左图所示(软件自动生成),完整的梯形图参考程序如右图所示。(现场操作演示…)Tobecontinued...6.4数字式远程温度传感器的设计能力目标:

认知工业自动化产品中的数字式远程温度传感器,在理解的基础上掌握其主要功能,并完成产品主要功能的设计。任务要求:

绘制数字式远程温度传感器的仿真电路,并完成STM32单片机程序的设计,要求实现如下功能:(1)能检测0~40℃之间的温度变化,分辨率1℃;(2)具备串口通信功能,支持Modbus_RTU通信协议。6.4.1远程温度传感器简介顾名思义,远程温度传感器就是具备远程数据传送能力的温度传感器。

本次任务,我们将设计一款利用热敏电阻与ADC检测温度,并利用RS-485网络传送温度值的远程温度传感器。6.4.2热敏电阻

热敏电阻,顾名思义是一种对温度敏感的特殊电阻元件,分为如下两类:

PTC(PositiveTemperatureCoefficient,正温度系数)电阻②NTC(NegativeTemperatureCoefficient,负温度系数)电阻PTC特征曲线NTC特征曲线(

(✔)NTC电阻的温度和阻值之间的计算关系为:式中:

t——随机温度值(单位℃);

Rt——与温度t对应的阻值(单位Ω);

(t0,R0)——曲线上t0=25℃时的电阻阻值;

B——热敏指数。

温度转换算法:

可由以下三步进行推算:

(由D计算Ut)

(由Ut计算Rt)

(由Rt计算t)

实际上STM32的CPU没有这么强的计算能力,最后一步的对数运算必须借助于“泰勒级数”展开计算,运算效率太低,必须借助于“①查表法”+“②分段线性化”。

①查表法

由以下计算式,推算若干特征点数值②分段线性化

利用“分段线性化”来减轻CPU的计算负担,但误差不可避免。

t-Rt关系Rt

-D关系t-D关系6.4.3DMA与ADC

DMA(DirectMemoryAccess,直接存储器访问)技术的作用在于提供外设与存储器或者存储器之间的高速数据传递,这一过程不经过CPU干预。DMA支持的外设包括通用和高级定时器、ADC、SPI、I2C和USART,等等。

以ADC为例,比较阻塞方式、中断方式、DMA方式三者间的区别:

显然,DMA方式效率最高,ADC的转换和存储过程完全不需要CPU干预,程序对于ADC转换的结果随用随取。工作方式阻塞方式中断方式DMA方式CPU占用时间从开始转换,直到转换完毕,全程占用CPU转换过程不占用CPU,直到转换完毕才请求CPU处理转换结果转换过程不占用CPU,转换结果自动存入指定内存片段,全程不占用CPU6.4.4Modbus_RTU通信协议补充

本次任务将要用到的功能码是“读(多个)寄存器”。“读寄存器”指令,完整的指令格式如表所示。说明:◆地址域,由1个字节构成,即Modbus从站地址,范围0~247(248~255保留);◆起始地址,由2个字节构成,即第一个寄存器的地址,地址范围为0x0000~0xFFFF;

◆寄存器数量,由2个字节构成,即从第一个寄存器开始连续若干个寄存器,,范围1~2000;◆校验码,由2个字节构成,即CRC校验码;◆字节数,由1个字节构成,即寄存器数值占用的字节个数(N),注意寄存器长度是2个字节;

◆寄存器数值,由N个字节构成,是寄存器数量的2倍。主站命令:地址域功能码0x03起始地址H起始地址L寄存器数量H寄存器数量L校验码H校验码L从站响应:地址域功能码0x03字节数寄存器数值(N个字节)校验码H校验码L

下面是“读寄存器”108~110(Hex:006BH~006DH)的实例:

其中:

最后获取的寄存器108~110的值分别是:022BH、0、0064H。注意,这里不是从006CH~006EH6.4.5仿真电路的绘制6.4.6任务程序的编写首先确立ADC转换的数字量与温度值之间的关系,由仿真电路可知NTC电阻阻值Rt与ADC读取数字量D之间的关系:式中,Dmax为数字量最大值,当ADC设定为右对齐时,Dmax取0FFFH,当ADC设定为左对齐时,Dmax取FFF0H。电路元器件参数取值如右图所示。

借助于Excel建立t-Rt计算关系及Rt-D计算关系,最终得到t-D计算关系,如图。

计算得到

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论