文档库 最新最全的文档下载
当前位置:文档库 › STM32自定义USB设备开发详细流程讲解及全套资料源码下载

STM32自定义USB设备开发详细流程讲解及全套资料源码下载

STM32自定义USB设备开发详细流程讲解及全套资料源码下载
STM32自定义USB设备开发详细流程讲解及全套资料源码下载

基于智能数控系统的工业APP平台测试床介绍

工业互联网案例 基于智能数控系统的工业 APP 平台测试床介绍

引言/导读 沈机(上海)智能系统研发设计有限公司(以下称“沈机智能”),由沈阳机床集团于2015 年投资创建,致力于面向机床行业的运动控制技术及云制造技术的产品研发和技术储备。沈机智能前身为沈阳机床(集团)设计研究院有限公司上海分公司(以下称“沈阳机床上海研究院”),历时7 年完成了i5 数控系统的技术研发及产业化,并推出自主品牌伺服驱动器(HSHA 系列产品)和智能工厂管理软件(WIS 系统软件)。 沈机智能在完成i5 运动控制核心技术的研发与i5 数控系统的产业化之后,进一步提出社会化的开发思路,将i5 运动控制核心技术进行模块化封装,以平台形式向数控行业产业链上下游的参与方(包括大中小型制造企业、装备供应商、个体开发者、创客等)开放,为数控技术在各个垂直领域的应用与推广打造通用的工业APP 开发、应用与分享的平台。该平台于2017 年11 月向全世界发布,即被业界所熟知i5OS 工业操作系统(简称为 “i5OS”)。 一、关键词 i5OS、运动控制、工业APP 平台、安全 二、发起公司和主要联系人联系方式 沈机(上海)智能系统研发设计有限公司 — 2 —

三、合作公司 智能云科信息科技有限公司 四、测试床项目目标和概述 基于i5 智能数控系统的工业APP 平台测试床项目是围绕数控行业各个垂直领域对于智能化数控技术的需求而提出的云端协同解决方案。沈机智能基于自主知识产权的i5 智能数控系统,向数控行业的装备制造商、大中小型制造企业、个体开发者、创客等提供运动控制底层技术支撑,以开放的接口和APP 开发平台,为其提供工业APP 的开发、测试及应用环境,使其能够基于i5 运动控制核心技术,快速开发各自领域内的工业APP;同时,测试床项目为成熟的工业APP 提供软件托管服务和交易商城,通过工业互联网平台为工业 APP 的交易、授权、应用与产权保护提供保障服务,促进工业APP 在行业内分享与复用。本测试床项目的目标是以i5 运动控制技术为基础,打造数控行业各个垂直领域通用 的工业APP 开发与应用平台,帮助行业知识与诀窍以工业APP 的形式沉淀,形成各个细分行业(如激光雕刻、激光打标、锂电池加工、机械手控制等等,见图1:i5OS 相关行业)丰富的工业APP 库,并提供可靠的工业APP 交易服务,使行业知识和诀窍可在其相关的行业领域得到快速复用。 图 1 i5OS 相关行业 — 3 —

超级XY曲线控件例程说明文档

超级XY曲线控件 例程说明文档 北京亚控科技发展有限公司 2009年6月

目录 1. 功能概述 (1) 2. 工程实例 (1) 3. 操作步骤 (1) 3.1 定义设备 (1) 3.2 定义变量 (1) 3.3 制作画面 (2) 3.4 功能实现说明 (10) 3.5 进入运行系统 (12) 4. 注意事项 (14)

1. 功能概述 常规需求:很多工业现场会用到XY曲线,也就是X轴非时间轴的情况。 组态王中的实现方法: 1)利用组态王内置控件中的X-Y轴曲线,通过调用此控件的函数来实现。 2)利用组态王通用控件中的超级XY曲线,通过调用此控件的属性、方法来实现。 超级XY曲线相对于X-Y轴曲线功能更加强大,使用更方便。其主要优势在于提供了更加灵活方便的控件方法来实现更多的功能,Y轴支持多个坐标,最多可以支持16条曲线,曲线可以保存、调用等,所有的功能都提供了相应的控件方法,可以根据需要灵活的在各种命令语言脚本程序中进行调用。 2. 工程实例 我们举一个例子来说明超级XY曲线控件的使用。在此例程中我们定义三个变量,分别为“压力”、“温度”、“密度”,通过XY曲线来观察压力、温度对于密度的影响。下面就以此为例来演示完成这一要求的具体步骤。 3. 操作步骤 3.1定义设备 新建一个工程,根据工程中实际使用的设备进行定义,本例程使用亚控的仿真PLC 设备,使用“PLC-亚控-仿真PLC-串口”驱动,定义设备名称为“PLC”。 3.2定义变量 在组态王中定义三个变量:压力(IO实数类型)、温度(IO实数类型)、密度(IO 实数类型)。压力变量:最小值0,最大值100,最小原始值0,最大原始值100,连接设备PLC,寄存器INCREA100,数据类型short,读写属性为只读,采集频率1000。 温度变量:最小值0,最大值50,最小原始值0,最大原始值100,连接设备PLC,寄存器DECREA100,数据类型short,读写属性为只读,采集频率1000。 密度变量:最小值0,最大值1,最小原始值0,最大原始值100,连接设备PLC,寄存器INCREA100,数据类型short,读写属性为只读,采集频率1000。

Linux内核崩溃原因分析及错误跟踪技术

Linux内核崩溃原因分析及错误跟踪技术 随着嵌入式Linux系统的广泛应用,对系统的可靠性提出了更高的要求,尤其是涉及到生命财产等重要领域,要求系统达到安全完整性等级3级以上[1],故障率(每小时出现危险故障的可能性)为10-7以下,相当于系统的平均故障间隔时间(MTBF)至少要达到1141年以上,因此提高系统可靠性已成为一项艰巨的任务。对某公司在工业领域14 878个控制器系统的应用调查表明,从2004年初到2007年9月底,随着硬软件的不断改进,根据错误报告统计的故障率已降低到2004年的五分之一以下,但查找错误的时间却增加到原来的3倍以上。 这种解决问题所需时间呈上升的趋势固然有软件问题,但缺乏必要的手段以辅助解决问题才是主要的原因。通过对故障的统计跟踪发现,难以解决的软件错误和从发现到解决耗时较长的软件错误都集中在操作系统的核心部分,这其中又有很大比例集中在驱动程序部分[2]。因此,错误跟踪技术被看成是提高系统安全完整性等级的一个重要措施[1],大多数现代操作系统均为发展提供了操作系统内核“崩溃转储”机制,即在软件系统宕机时,将内存内容保存到磁盘[3],或者通过网络发送到故障服务器[3],或者直接启动内核调试器[4]等,以供事后分析改进。 基于Linux操作系统内核的崩溃转储机制近年来有以下几种: (1) LKCD(Linux Kernel Crash Dump)机制[3]; (2) KDUMP(Linux Kernel Dump)机制[4]; (3) KDB机制[5]; (4) KGDB机制[6]。 综合上述几种机制可以发现,这四种机制之间有以下三个共同点: (1) 适用于为运算资源丰富、存储空间充足的应用场合; (2) 发生系统崩溃后恢复时间无严格要求; (3) 主要针对较通用的硬件平台,如X86平台。 在嵌入式应用场合想要直接使用上列机制中的某一种,却遇到以下三个难点无法解决: (1) 存储空间不足 嵌入式系统一般采用Flash作为存储器,而Flash容量有限,且可能远远小于嵌入式系统中的内存容量。因此将全部内存内容保存到Flash不可行。

SSB变桨系统试验常见故障

1.SSB变桨系统地面出厂试验时,在调整95°限位开关及挡块位置时操作人员不慎将60947-5-1#95°限位开关直动头冲断。 2.G8-064315变桨控制柜,实验时变桨速度过快,执行速度远大于设定速度。初步判 断电机驱动器损坏,造成无法正常使用。 3. 473399-60#旋编编码器做变桨功能试验时,编码器存在角度无变化故障 4、466631-04#旋编编码器做变桨功能试验时,编码器存在角度跳变故障 5. 叶轮功能试验时,由于操作人不慎误将G8-070588变桨控制柜内的1F1防雷模块的火线与零线接反,导致1F1防雷模块烧坏。 6.变桨控制柜实验时系统报电机过温PTC故障,经更换柜内9A1模块后此故障消除。 7、变桨控制柜实验时系统报电机过温PTC故障,经更换柜内9A1模块后此故障消除。 8、G8-070093#变桨控制柜实验时柜内12A1模块指示灯不亮,经更换此故障消除。 9. 旋编编码器做变桨功能试验时,编码器角度始终保持在0°无变化,无法正常使用。 10、旋编编码器旋转时有卡阻现象,并且内部有异响。无法正常使用 11. 95°限位开关压下直动头不能正常复位,造成该95°限位开关无法正常使用。 12. 变桨系统中有2个限位开关触头有卡阻现象,活动不自如,无法正常使用。 13. 叶轮组在调试时发现,闭合电容开关时,9U1不动作,面板上显示9U1故障,无法正常使用 14. LED显示H.N,面板显示:变流器故障,散热片温度故障,无法正常使用。 15. 变桨柜G8-065677打开电容开关后面板显示电容电压9U1为故障状态,9U1不动作,无法正常使用。 16. SSB控制柜配套带来的旋转编码器形状不同, 一套三个旋编信号线接头位置不同,装后性能不受影响。

智能检测系统

1.智能检测装置:主要形式:智能传感器、智能仪器、虚拟仪器和智能检测系统; 2.非电量检测:温度检测(热电式传感器,光纤温度传感器,红外测温仪,微波测温仪)压力检测(应变式压力计,压电式压力计,电容式压力计,霍尔式压力计)流量检测(电磁流量计,超声波流量传感器,光纤漩涡流量传感器)物位检测(电容式液位传感器,超声波物位传感器,微波界位计)成分检测(红外线气体分析仪,半导体式气敏传感器) 3.流量检测:流量的定义为单位时间内流过管道某一截面的体积或质量,因此,流量分为体积流量和质量流量;分为:电磁流量计,超声波流量传感器,光纤漩涡流量传感器;流量检测包括:○1.电磁流量计:电磁流量计是以电磁感应原理为基础的。它能检测具有一定电导率的酸碱盐溶液,腐蚀性液体以及含有固体颗粒(泥浆,矿浆)的液体流量。○2.超声波流量传感器:超声波流量传感器是利用超声波在流体中传输时,在静止流体和流动流体中的传播速度不同的特点,从而求得流体的流速和流量。○3.光纤漩涡流量传感器:光纤漩涡流量传感器是将一根多模光纤垂直的装入管道,当液体或气体流与其垂直的光纤时,光纤受到流体涡流的作用而振动,振动的频率域流速有关,测出该频率就可确定液体的流速。 4.智能仪器:就是一种以微处理器为核心单元,兼有检测、判断和信息处理功能的智能化测量仪器;按实现方式划分,智能仪器有非集成智能仪器和集成智能仪器两种形式;构成:(1).硬件:传感器、主机电路、模拟量输入/输出通道、人机接口电路、标准通信接口;(2).软件:监控程序、接口管理程序、数据处理程序;功能:具有逻辑判断、决策和统计处理功能;具有自诊断、自校正功能;具有自适应、自调整功能;具有组态功能;具有记忆、存储功能;具有数据通信功能;特点:高精度、多功能、高可靠性和高稳定性、高分辨率、高信噪比、友好的人机对话能力、良好的网络通信能力、自适应性强、高性价比;发展趋势:多功能化、智能化、微型化、网络化; 5. 非集成智能仪器:也称为微机嵌入式智能仪器,即将传统的传感器、单片机或微型计算机、模拟量输入输出通道、标准数据通信接口、人机界面和外设接口等分离部件封装在一起,组合为一个整体而构成;特点:一般为专用或多功能产品,具有小型化、便携式、低功耗、易于密封、适应恶劣环境、低成本; 6.虚拟仪器:以通用的计算机硬件和操作系统为依托,增加必要的硬件设备,通过计算机软件使其具备各种仪器的功能;由信号采集与控制单元、数据分析与处理单元、数据表达与输出单元等三大部分组成。特点:增强了传统仪器的功能、软件就是仪器、自由定义仪器,仪器开放灵活、开发费用更低,技术更新更快; 7.虚拟仪器总线:VXI总线将传统的消息基仪器和寄存器基仪器统一在同一环境下,不仅为各个仪器模块提供了定时和同步的能力,而且还提供了开放的,标准化的高速处理器总线。使用户开发虚拟仪器更为灵活,效率更高,保证了系统的稳定性和高性能。 8.现场总线:一种安装在制造和过程区域的现场设备/仪器与控制室内的自动控制装置/系统之间的一种串行、数字式、双向传输和多种分支结构的通信网络;是计算机技术、通信技术和控制技术的综合与集成。含义表现在六个方面:(1)现场通信网络与信息传输的数字化(2)现场设备的智能化与互连(3)互操作性(4)分散功能块(5)通信线供电(6)开放式互连环境;现场控制总线的特点和优势:特点:(1)1对N结构减少传输电缆、节约硬件设备(2)可靠性高(3)可控性好(4)互换性好(5)互操作性好(6)分散控制(7)统一组态;优势:(1)增强了现场级信息集成能力(2)开放式、互操作性、互换性、可集成性(3)系统可靠性高、可维护性好(4)降低了系统及工程成本;现场总线通信协议一般由底层到上层可分为现场设备层、过程监控层和企业管理层三个层次。现场总线的网络拓扑结构主要有三种:(1)星状结构(2)树状结构(3)环状结构;现场总线的数据通信模式有三种:对等式、主从式、客户/服务器式。典型的现场总线:(1)CAN(控制局域网)(2)Lon Works(局域操作网)(3)Profibus(过程现场总线)(4)HART(5)FF(6)Ethernet(工业以太网)

打地鼠程序说明文档

打地鼠程序说明文档 项目是一款打地鼠的游戏,程序用到了延时函数、LED、电阻屏、按键灯功能,这些功能的初始化例程里面都有,我们可以直接调用来完成初始化。 完成了初始化就开始程序的主干了,既然我们用到了电阻屏,肯定就需要对它进行校准,校准函数在触摸屏例程也有,我们可以通过KEY0按键直接调用校准函数,用来防止触摸屏不准。 然后我们先进行的是界面显示,先通过图片取模软件取出一个背景图,注意取模的时候由于例程显示那里标注了,在液晶上画图(仅支持:从左到右,从上到下 or 从上到下,从左到右的扫描方式!),图片数据(必须包含图片信息头, 4096色/16位真彩色/18位真彩色/24位真彩色/32位真彩色的图像数据头),针对STM32,不能选择image2lcd的"高位在前(MSB First)"选项,否则imginfo的数据将不正确!我们按照标注选择了16位真彩色的取模方式,通过PS将图片改为屏幕合适尺寸,就可以在屏幕上显示出背景了。将前20行用来显示分数,等级,生命属性,他们通过字符串和数字变量的显示函数来实现,后面300行做成3*3的地鼠洞,地鼠洞通过例程里面的画实心圆来表示,用一个for来遍历每个圆心坐标,让代码简介,在用个随机数函数产生0-8的数字来代表老鼠出现的位置,然后通过同样的方法取出老鼠的图片,根据洞圆心的坐标,找到老鼠显示的坐标显示出老鼠,这里背景是指显示一次的,老鼠变换一次刷新一次屏幕,

刷新就只用刷新你目前的状态,洞的显示和老鼠的位置,让洞把老鼠覆盖就可以不用刷新背景了。再游戏结束之后再重新刷新背景显示游戏结束和继续就好了。 显示完成了接下来就是触摸,由于它的例程里面自带触摸函数,可以直接调用来返回当前的x,y坐标,这样触摸就很容易了key_9=(tp_dev.x[0]+1)/80+3*(tp_dev.y[0]+1-20)/100; 用以上这段代码就可以识别出触摸的是之前分的3*3的那个位置,返回的1-9,然后再和老鼠对应的坐标进行判断就可以知道打对与否,对就加分,分到就升级,升级了就提高地鼠刷新次数,错就减分,减生命,分为0时就不减了,生命为0就游戏结束。还有不管对错,只要点击了屏幕地鼠的持续时间就会减短,马上刷新下一只地鼠。就不用多余的等待。

Lust变桨系统调试相关事项说明_更新

Lust变桨系统调试说明 1、操作说明: 为确保系统调试安全,必须预先进行以下措施: ①现场调试人员必须佩戴好安全帽; ②400V电源的三相线、零线和地线必须可靠连接,避免缺相或漏接; ③上电前确认主控箱和轴控箱的开关处于断开状态; ④所有连接电缆连接正确(电机后面的编码器电缆号是S1、S2和S3;冗 余编码器的电缆号是T1、T2和T3,若反接,会出现飞车故障); ⑤上电前将电机的轴键拆除或利用扎带将其捆扎牢固; ⑥上电前确认电机与底座是否可靠固定; ⑦电池箱箱盖闭合(完成检查); 2、系统紧急顺桨: ①Profibus通信故障(或者不正常); ②Pitch Master故障; ③电机侧编码器故障; ④安全链信号输入无+24V(硬输入点); ⑤未提供+24COM(硬输入点); ⑥Emergency mode位为1; 3、手动模式 手动模式用于机械调零和现场安装调整用,转动速度为2.5度/秒。 手动模式前提条件: ①手动模式信号为1(硬输入点),并观察主控箱的9A1的第8通道的灯是 否点亮; ②Profibus通信正常,或者短接17K7的13、14引脚; ③Normal Operation Mode设置为0; ④Emergency Mode位为0; ⑤转动任一个桨叶时,另外两个桨叶为91度位置(或者通过关闭轴箱的电 源模拟); ⑥轴箱电池开关处于断开状态; ⑦手动旋钮的通道选择的0、1、2和3分别对应空档、轴控箱1、轴控箱2 和轴控箱3;转动方向旋钮控制的是电机的正传和反转; 4、自动模式

自动模式必须满足以下条件: ①先闭合主控箱的400V电源; ②Profibus通信正常; ③将Fault Reset置位1,然后置0; ④闭合轴箱的电池开关和电源开关前确保通信的Emerge Mode(读)为0 和Normal Operation Mode(写)为0;硬接点的Safety Signal(为高电平)、+24V和0V有正常连接,Manual Operation为0。否则会出现飞车现象; ⑤轴控箱上电顺序:先闭合电池开关(5Q1),然后闭合电源开关(6S1)。 正常状态下电机会由于内部的电路的控制不会出现转动; ⑥自动控制是通过通信软件控制,先设置好控制桨叶的目标角度、转速(建 议为3度/秒以下)和加速度(建议0.5~2度/秒2),然后将Normal Operation Mode置1,启动自动模式;若要中途停止,只能通过以下任一方式:将Normal Operation Mode置0、将对应的91度限位开关触发和关闭轴控箱电源(6S1); 5、限位开关 91度限位开关用于控制Pitch Master(主控变频器)的输出控制,当触发了该限位开关后,7K6复位,然后电机会停止,相对而言动作比较缓慢; 96度限位开关用于控制电机和Ptich Master的ENPO信号,当触发了该限位开关后,6K2和6K3复位,然后电机立即停止,相对而言动作比较迅速。 6、Bypass Bypass信号是用于旁通2个限位开关触发了以后继续启动电机转动,有硬信号和软信号之分。 Bypass软信号是对应91度限位开关。当91度触发了以后,利用通信将对应桨叶的Bypass信号置1,然后电机才可以往96度方向转动;而需要往0度方向转动不需要将对应桨叶的Bypass信号置1(实际上该Bypass信号用途不大); Bypass硬信号是对应96度限位开关,当96度触发了以后,利用硬结点的Bypass信号置1,然后电机只可以往0度方向转动; 7、温度预处理说明 根据通信中的所有温度值,需要在控制当中进行预处理,其温度的预处理值建议如下(根据Lust技术人员的建议): ①Pitch Master停机温度值为80度;

STM32固件库的学习(重要,要常看)

1. stm32的编程中,在stdperiph_drive中添加的misc.c文件是干什么用的啊? 因为STM32 V3.5版本的库函数中没有原来版本中单独对于NVIC(中断向量嵌套)的外设驱动,把NVIC的外设驱动放在了misc.c中,实际上是代替原来的stm32f10x_nvic.c。 2. STM32F10XXX V 3.5标准外设库文件夹描述 标准外设库的第一部分是CMSIS 和STM32F10x_StdPeriph_Driver,CMSIS 是独立于供应商的Cortex-M处理器系列硬件抽象层,为芯片厂商和中间件供应商提供了简单的处理器软件接口,简化了软件复用工作,降低了Cortex-M上操作系统的移植难度,并减少了新入门的微控制器开发者的学习曲线和新产品的上市时间。 STM32F10x_StdPeriph_Driver则包括了分别对应包括了所有外设对应驱动函数,这些驱动函数均使用C语言编写,并提供了统一的易于调用的函数接口,供开发者使用。Project 文件夹中则包括了ST官方的所有例程和基于不同编译器的项目模板,这些例程是学习和使用STM32的重要参考。Utilities包含了相关评估板的示例程序和驱动函数,供使用官方评估板的开发者使用,很多驱动函数同样可以作为学习的重要参考。 3.文件功能说明

4.CMSIS文件夹结构

在实际开发过程中,根据应用程序的需要,可以采取2种方法使用标准外设库

(StdPeriph_Lib): (1)使用外设驱动:这时应用程序开发基于外设驱动的API(应用编程接口)。用户只需要配置文件”stm32f10x_conf.h”,并使用相应的文件”stm32f10x_ppp.h/.c”即可。 (2) 不使用外设驱动:这时应用程序开发基于外设的寄存器结构和位定义文件。 5. STM32F10XXX标准外设库的使用 标准外设库中包含了众多的变量定义和功能函数,如果不能了解他们的命名规范和使用规律将会给编程带来很大的麻烦,本节将主要叙述标准外设库中的相关规范,通过这些规范的学习可以更加灵活的使用固件库,同时也将极大增强程序的规范性和易读性,同时标准外设库中的这种规范也值得我们在进行其他相关的开发时使用和借鉴。 a.缩写定义 标准外设库中的主要外设均采用了缩写的形式,通过这些缩写可以很容易的辨认对应的外设。

自动化测试平台解决方案V0

Smart Robot自动化测试解决方案

目录

1.面临的问题 1.1.智能移动设备的软件系统和硬件方案的复杂组合,导致APP 实现多机型兼容难度大,投入大。 1.2.敏捷开发、迭代开发,产品追求快速上线,导致回归测 试、可靠性测试等任务重,无法有效应对测试工作量波 峰。 1.3.A PP开发框架多、开发人员能力不足导致安全漏洞突出 1.4.软件硬件设计交叉影响,性能优化难度加大。 2.自动化测试平台整体解决方案 为解决移动应用开发商面临的以问题,结局方案设计如下。可全面解决移动应用开发面临的兼容性问题、安全性问题、测试工作量波峰、用户体验问题,并全程为移动应用的开发保驾护航。 整体解决方案 兼容性测试系统:智能源码扫描,即通过解析APK文件,将源码与问题特征库自动比对,查找兼容性问题,并自动生成测试报告。 SMART平台,实现被测设备管理+测试用例制作、管理、自动化执行、并生成测试报告。可实现APP的定制用例的多机自动化运行、适配性测试、功能及UI测试; 安全监控系统:监测系统文件变化、监测数据流量、耗电情况、监控非法用户行为等。

性能测试系统:通过专业的自动化测试设备(硬件工具),测量流畅度卡顿数据、量化响应时间指标,为研发人员提供毫秒级数据,助力改善用户体验。 3.解决方案的实现 3.1.兼容性测试系统 3.1.1.SMART 平台 SMART兼容性测试平台,提供自动化测试的解决方案,提供用例制作、管理、自动化运行、测试结果自动校验。无需人员干预即可实现各类APP自动化用例的运行,并自动生成测试报告。 3.1.1.1.测试步骤 测试步骤 a)自动化测试脚本开发 b)真机运行脚本 c)输出测试报告 3.1.1.2.测试框架 测试框架 通过手机usb接口实现对手机的控制,完成测试工具及app的下发,运行及测试结果的拉取和展示。测试工具采用lua脚本编写测试case,通过进程注入技术获取屏幕显示信息,结合Touch事件模拟,可以实现基于控件级别的复杂测试case,测试结果以Log、屏幕截图等形式输出。 3.1.1.3.SMART平台可实现的功能

变桨系统带载测试平台要求

变桨系统带载测试平台试验大纲 1 前言 本部分规定了各种型号的电动变桨驱动系统工作性能的测试要求和测试方法。适用于各种电动 变桨驱动系统出厂性能验收和新产品性能测试。 2 测试内容 电机负载测试内容主要分成三个部分: 1)变桨系统带载功能性测试 2)变桨系统带载故障模拟测试 3)变桨系统带载连续运行测试 测试的主要部件为:变桨电机、刹车系统、伺服驱动器、蓄电池、编码器。 3 测试依据 2MW 风机根据《变桨驱动系统采购规范》SB-030.02.05-A 3.6MW 风机根据《变桨驱动系统采购规范》V-69.2-BV.MR.00.00-A-D GB/T 1311-2008《直流电机试验方法》 GB/T 1029-2005《三相同步电机试验方法》 4 变桨系统带载功能测试 4.1 变桨电机额定负载测试 需测试电机在额定负载下的变桨位置、电机转速、转矩响应特性。位置给定范围为(0°~30°), 测试变桨速度为2°/S。 测试需要得到如下响应曲线图:电机运动位置给定曲线、电机位置响应曲线、电机速度响应曲 线、电机转矩响应曲线、电机电流变化曲线、电机温升曲线。 Y520000064-2 变桨系统带载测试平台试验大纲共3 页第 2 页 FDJL-JS-027 4.2 变桨电机变化负载测试 需测试电机在变化负载下的变桨位置、电机转速、转矩响应特性。位置给定范围为(0°~30°), 变化负载范围为额定负载的±50%,测试变桨速度为2°/S。 测试需要得到如下响应曲线图:电机运动位置给定曲线、电机位置响应曲线、电机速度响应曲 线、电机转矩响应曲线、电机电流变化曲线、电机温升曲线。 4.3 变桨电机最大负载测试 需测试电机在最大负载下(3s 内)的变桨位置、电机转速、转矩响应特性。位置给定范围为(0°~ 30°),测试变桨速度为2°/S。 测试需要得到如下响应曲线图:电机运动位置给定曲线、电机位置响应曲线、电机速度响应曲

stm32入门C语言详解

阅读flash:芯片内部存储器flash操作函数我的理解——对芯片内部flash进行操作的函数,包括读取,状态,擦除,写入等等,可以允许程序去操作flash上的数据。 基础应用1,FLASH时序延迟几个周期,等待总线同步操作。推荐按照单片机系统运行频率,0—24MHz时,取Latency=0;24—48MHz时,取Latency=1;48~72MHz时,取Latency=2。所有程序中必须的 用法:FLASH_SetLatency(FLASH_Latency_2); 位置:RCC初始化子函数里面,时钟起振之后。 基础应用2,开启FLASH预读缓冲功能,加速FLASH的读取。所有程序中必须的 用法:FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); 位置:RCC初始化子函数里面,时钟起振之后。 3、阅读lib:调试所有外设初始化的函数。 我的理解——不理解,也不需要理解。只要知道所有外设在调试的时候,EWRAM需要从这个函数里面获得调试所需信息的地址或者指针之类的信息。 基础应用1,只有一个函数debug。所有程序中必须的。 用法:#ifdef DEBUG debug(); #endif 位置:main函数开头,声明变量之后。 4、阅读nvic:系统中断管理。 我的理解——管理系统内部的中断,负责打开和关闭中断。 基础应用1,中断的初始化函数,包括设置中断向量表位置,和开启所需的中断两部分。所有程序中必须的。 用法:void NVIC_Configuration(void) { NVIC_InitTypeDef NVIC_InitStructure; //中断管理恢复默认参数 #ifdef VECT_TAB_RAM //如果C/C++ Compiler\Preprocessor\Defined symbols中的定义了 VECT_TAB_RAM(见程序库更改内容的表格) NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0); //则在RAM调试 #else //如果没有定义VECT_TAB_RAM NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);//则在Flash里调试 #endif //结束判断语句 //以下为中断的开启过程,不是所有程序必须的。 //NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC优先级分组,方式。 //注:一共16个优先级,分为抢占式和响应式。两种优先级所占的数量由此代码确定, NVIC_PriorityGroup_x可以是0、1、2、3、4,分别代表抢占优先级有1、2、4、8、16个和响应优先级有16、8、4、2、1个。规定两种优先级的数量后,所有的中断级别必须在其中选择,抢占级别高的会打断其他中断优先执行,而响应级别高的会在其他中断执行完优先执行。 //NVIC_InitStructure.NVIC_IRQChannel = 中断通道名; //开中断,中断名称见函数库 //NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //抢占优先级 //NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //响应优先级 //NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //启动此通道的中断 //NVIC_Init(&NVIC_InitStructure); 中断初始化

Linux内核移植开发手册

江苏中科龙梦科技有限公司 Linux内核移植开发手册 修 订 记 录 项 次 修订日期 版 本修订內容修订者审 核 1 2009‐02‐04 0.1 初版发行陶宏亮, 胡洪兵 2 2009‐11‐20 0.2 删除一些 多余文字 陶宏亮, 胡洪兵

DISCLAIMER THIS DOCUMENTATION IS PROVIDED FOR USE WITH LEMOTE PRODUCTS. NO LICENSE TO LEMOTE PROPERTY RIGHTS IS GRANTED. LEMOTE ASSUMES NO LIABILITY, PROVIDES NO WARRANTY EITHER EXPRESSED OR IMPLIED RELATING TO THE USAGE, OR INTELLECTUAL PROPERTY RIGHT INFRINGEMENT EXCEPT AS PROVIDED FOR BY LEMOTE TERMS AND CONDITIONS OF SALE. LEMOTE PRODUCTS ARE NOT DESIGNED FOR AND SHOULD NOT BE USED IN ANY MEDICAL OR LIFE SUSTAINING OR SUPPORTING EQUIPMENT. ALL INFORMATION IN THIS DOCUMENT SHOULD BE TREATED AS PRELIMINARY. LEMOTE MAY MAKE CHANGES TO THIS DOCUMENT WITHOUT NOTICE. ANYONE RELYING ON THIS DOCUMENTATION SHOULD CONTACT LEMOTE FOR THE CURRENT DOCUMENTATION AND ERRATA. JIANGSU LEMOTE TECHNOLOGY CORPORATION LIMITED MENGLAN INDUSTRIAL PARK,YUSHAN,CHANGSHU CITY,JIANGSU PROVINCE,CHINA Tel: 0512‐52308661 Fax: 0512‐52308688 Http: //https://www.wendangku.net/doc/284869049.html,

stm32库函数解释

部分库函数简介 一、通用输入/输出(GPIO)--------------------------------------------------------------------------------------------3 二、外部中断/事件控制器(EXTI)-----------------------------------------------------------------------------------7 三、通用定时器(TIM)-------------------------------------------------------------------------------------------------9四:ADC寄存器------------------------------------------------------------------------25 五:备份寄存器(BKP)-------------------------------------------------------------------------------------------------33 六、DMA控制器(DMA)---------------------------------------------------------------37 七、复位和时钟设置(RCC)------------------------------------------------------------------------------------------41 八、嵌套向量中断控制器(NVIC)-----------------------------------------------------------------------------------49

组态王 历史数据查询例程说明文档

例程说明文档

目录 1. 功能概述 (1) 2. 工程实例 (1) 3. 操作步骤 (1) 3.1 定义设备 (1) 3.2 定义变量 (1) 3.3 制作画面 (2) 3.4 进入运行系统 (10) 4. 注意事项 (14)

1. 功能概述 常规需求:很多工业现场会存储数据并对存储的历史数据进行查询、打印输出。 历史数据查询一般为起始时间、结束时间、间隔时间都不固定,最终用户根据实际需要进行查询。 组态王中的实现方法: 利用组态王内置报表以及报表的函数来实现对历史数据的查询。 组态王内置报表的操作类似excel,操作简单、方便,并且组态王提供了大量的报表函数来实现各种复杂功能。 2. 工程实例 我们举一个例子来说明实现方法。在此例程中我们定义五个变量,分别为“压力”、“温度”、“密度”、“电流”、“电压”,运行系统运行后记录历史数据,下面就以此为例来演示完成这一要求的具体步骤。 3. 操作步骤 3.1定义设备 根据工程中实际使用得设备进行定义,本例程使用亚控的仿真PLC设备,使用“PLC -亚控-仿真PLC-串口”驱动,定义设备名称为“PLC”。 3.2定义变量 在组态王中定义五个变量:压力(IO实数类型)、温度(IO实数类型)、密度(IO 实数类型)、电压(IO实数类型)、电流(IO实数类型)。 压力变量:最小值0,最大值100,最小原始值0,最大原始值100,连接设备PLC,寄存器INCREA100,数据类型short,读写属性为只读,采集频率1000。记录和安全区选择“数据变化记录”,变化灵敏度选择“0”。 温度变量:最小值0,最大值50,最小原始值0,最大原始值100,连接设备PLC,

嵌入式Linux之Kernel(裁减移植)启动调试、打印技术 printascii(补充)、内核调试

嵌入式系统搭建过程中,对于系统平台搭建工程师在完成Bootloader 的调试之后就进入Kernel 裁减移植的阶段,其中最重要的一步是Kernel 启动的调试,在调试Kernel 过程中通常遇到最常见的问题是启动异常: Uncompressing Linux............................................................ ........................... done, booting the kernel.( 挂死在此处) 注意:这里是arch/arm/boot/compressed/head.S的解压过程,调用了decompress_kernel()(同目录下的misc.c)->include/asm-arm/arch-xxx/uncompress.h的putc()实现。这是在uboot中初始化的,用的是物理地址,因为此时内核还没有起来。 而printascii则是调用了汇编。printascii()位于arch/arm/kernel/debug.S,他需要调用虚拟地址,此虚拟地址通过machine_start提供,而相关的宏在include/asm/arch-xxx/debug-macro.S实现,这下明白了。 10-05-14添加:debug.s里面需要判断一下当前是否打开了mmu,然后指定uart的基址。在解压阶段的head.s,mmu是1:1映射,目的是加快速度。到了内核的head.s,就是真正的mmu了,此时就是虚拟地址了。 导致驱动异常(启动挂死)的原因有很多,如基于EVM 板的硬件做了修改(如更改了FLASH 空间大小、地址和型号,更改了SDRAM 、DDR SDRAM 空间大小、地址和型号,更改了晶振频率等),板卡ID号不支持等。那么如何进行调试那,其实有两种调试技术比较有效。 Kernel 启动调试技术- 使用printascii() 函数跟踪start_kernel() 有没运行,在booting the kernel 之后Kernel 最先执行的是start_kernel() 函数,确认start_kernel() 有否执行就是在其开始代码段添加printascii("start_kernel …") ,如果串口没有打印出start_kernel …,说明start_kernel() 没有运行,那么可能的原因有Bootloader 配置的启动参数错误、 Kernel 加载到(DDR) SDRAM 的地址不正确, Kernel 编译时指定的(DDR) SDRAM 运行地址不正确等。这样就需要一项一项排查错误,当错误被排查完毕,通常打印出start_kernel …是种必然,如果打印出这仪信息说明 Kernel已进入到start_kernel() 执行,如果此时有串口启动打印就比较成功了,如果仍然没有打印启动信息,就需要另外一种调试技术。 附代码修改:init/main.c <<- … extern void printascii(const char*); // Modify asmlinkage void __init start_kernel(void)

STM32固件库详解42324

STM32固件库详解 最近考试较多,教材编写暂停了一下,之前写了很多,只是每一章都感觉不是特别完整,最近把其中的部分内容贴出来一下,欢迎指正。本文内容基于我对固件库的理解,按照便于理解的顺序进行整理介绍,部分参考了固件库的说明,但是也基本上重新表述并按照我理解的顺序进行重新编写。我的目的很简单,很多人写教程只是告诉你怎么做,不会告诉你为什么这么做,我就尽量吧前因后果都说清楚,这是我的出发点,水平所限,难免有很大的局限性,具体不足欢迎指正。基于标准外设库的软件开发 STM32标准外设库概述 STM32标准外设库之前的版本也称固件函数库或简称固件库,是一个固件函数包,它由程序、数据结构和宏组成,包括了微控制器所有外设的性能特征。该函数库还包括每一个外设的驱动描述和应用实例,为开发者访问底层硬件提供了一个中间API,通过使用固件函数库,无需深入掌握底层硬件细节,开发者就可以轻松应用每一个外设。因此,使用固态函数库可以大大减少用户的程序编写时间,进而降低开发成本。每个外设驱动都由一组函数组成,这组函数覆盖了该外设所有功能。每个器件的开发都由一个通用API (application programming interface 应用编程界面)驱动,API对该驱动程序的结构,函数和参数名称都进行了标准化。

ST公司2007年10月发布了版本的固件库,MDK 之前的版本均支持该库。2008年6月发布了版的固件库,从2008年9月推出的MDK 版本至今均使用版本的固件库。以后的版本相对之前的版本改动较大,本书使用目前较新的版本。 使用标准外设库开发的优势 简单的说,使用标准外设库进行开发最大的优势就在于可以使开发者不用深入了解底层硬件细节就可以灵活规范的使用每一个外设。标准外设库覆盖了从GPIO到定时器,再到CAN、I2C、SPI、UART和ADC 等等的所有标准外设。对应的C源代码只是用了最基本的C编程的知识,所有代码经过严格测试,易于理解和使用,并且配有完整的文档,非常方便进行二次开发和应用。 STM32F10XXX标准外设库结构与文件描述 1. 标准外设库的文件结构 在上一小节中已经介绍了使用标准外设库的开发的优势,因此对标准外设库的熟悉程度直接影响到程序的编写,下面让我们来认识一下STM32F10XXX的标准外设库。STM32F10XXX的标准外设库经历众多的更新目前已经更新到最新的版本,开发环境中自带的标准外设库为版本,本书中以比较稳定而且较新的版本为基础介绍标准外设库的结构。

使用QEMU+GDB调试Linux内核

使用QEMU调试Linux内核 一.使用QEMU安装Ubuntu10.04 1.安装qemu ubuntu下使用sudo apt-get install 安装的qemu版本是0.12.3,该版本中存在bug,使得无法在断点处停下;因此需要在qemu官方网站https://www.wendangku.net/doc/284869049.html,/Download上下载最新的版本qemu-0.12.5.tar.gz的源代码包自己进行编译安装: ●Sudo apt-get install zlib1g-dev libsdl-dev ●解压源代码后,进入源代码所在目录执行./confingure ●执行make ●执行sudo make install 2.创建QEMU格式的硬盘 qemu-img create –f qcow2name.img size 例如:qemu-img create –f qcow2 ubuntu10.04.img 4GB 3.在创建的硬盘上安装操作系统 qemu–hdaname.img–cdrom ~/Download/ubuntu10.04.iso –boot d 说明:使用hda指定硬盘镜像,使用CDROM选定光驱。-boot d 指从cdrom启动,-boot a是软盘,-boot c 是硬盘;使用qemu或qemu-system-x86_64(64为机子),有时安装系统会很慢,这是可以考虑使用kvm来代替。 例如:kvm–hda ubuntu10.04.img –cdrom ./ubuntu-10.04.iso -boot

d 4.从已经装好操作系统的硬盘启动 qemu–hda ubuntu10.04.img 5.在64位的主机上要使用qemu-system-x86_64命令来代替qemu 二.自己编译内核 现将Linux的编译调节过程简述为: 1. 下载自己要调试的Linux内核的源代码,这个可以从Linux内 核的官方网站上得到:https://www.wendangku.net/doc/284869049.html, 2. 编译内核最主要的便是配置文件.config,为了能够准确的得到 结果(第一次不要求编译时间),将本机的config文件直接拷 贝到解压后的源代码中。 3.然后进行make操作,结束后将产生的bzImage文件拷到boot 目录下,重启,选择自己编译的内核,这样一般不会出问题,但时间较慢,大约编译一次需要40分钟。 3.1以前编译内核是为调试内核服务的,现在做华为的项目, 发现需要在实际的机器上运行自己编译的内核,参考网站: https://www.wendangku.net/doc/284869049.html,/tips/compiling-linux-kernel-26.html 4.为了降低编译时间,就需要对配置文件进行裁剪,在配置文件 中有好多是本机不需要的模块,参考: https://www.wendangku.net/doc/284869049.html,/Linux/kernel_options.html。另外调试内 核与模块无关,所以辨识为M的直接可以不选。 5.剪裁的时候采用“逐步瘦身”法,先剪裁掉某个或某几个模块, 然后在进行编译,若没错,在进行模块裁剪,这样可以最大程

相关文档
相关文档 最新文档