第一篇:控制器市场分析
控制器市场分析
控制器作为电动车的主要的关键零部件,他们之间是完全互补品的关系,电动车控制器的需求不仅仅来自于新增产能的零配件市场,同时也有来自与维修市场,根据惯例,电动车控制器在维修市场的需求大概为存量的5%-10%。因此总的市场需求量考虑到电动车的使用寿命,进入维修市场的电动车的存量应该为前五年市场销量之和5%-10%。基于以下几点我国的自动控制器的装配自行车年均增长10%。
1、根据我国2010年的产业政策规划,本年度将出台相关的行业政策和行业标准,政策逐步明朗。
2、我国在2010年将电动自行车列为了家电乡下的补贴电器之一。因此此举将大幅促进我国电动自行车在农村市场的消费。
3、国内电动车控制器呈两极分化发展趋势,以高标科技为首的品牌化发展之路,面向中高端市场,推出高质量、高科技、高水准的产品,在市场经济中性价比极高;以一些杂牌为主,价格低廉,产品质量没有固定标准,生产成本极低,以低价格的优势在市场上占据一定份额。
3、我国2010年上半年的数据显示我国在上半年电动自行车产量同比增长
8.9%。
4、今后三年内电动车由于产品升级也逐步进入更新换代期,同时产业升级主要关键部件的升级如控制器、动力电源、电机的升级,解决产业困局,控制器等关键技术的升级至关重要。
第二篇:电动车控制器设计方案
电动自行车控制器设计
电动自行车控制器方案
2012/11/5
电动自行车控制器设计
目录
第一章 概述-------------3
第二章 系统需求分析-------4
第三章 控制器分析---------6
一、电动车控制器框图------6
二、控制器关键功能分析-----7
第四章 控制器设计----------9
一、硬件设计---------9
二、软件设计----------12
电动自行车控制器设计
第一章 概述
近年来,随着改革开放和经济发展日益深刻,人民生活水平日渐提高,出行交通工具也发生前所未有的变化。老百姓出行不仅考虑快捷、方便,还追求时尚环保,因此近年来电动自动自行车日益受老百姓喜爱。作为电动自行车,其核心控制器则是电动自行车的关键,控制的好坏决定车子的平稳、安全、舒适,因此一个功能全面、可靠性强、符合要求的控制器决定了电动自行车的质量。为了使得电动自行车有良好的体验和可靠的质量保证,因此本文介绍一种控制器的设计方案。
电动自行车控制器设计
第二章 系统需求分析
1、具有安全检测功能,检测电池电压,电流
需要检测电池中电流,电池电流不能过大,防止损伤电池;
需要检查电机中的电流,并且识别是否是电机堵转还是车子上坡或者负载过大,并且限制电机电流17A以下,在15~17A间切换,防止大电流长时间烧坏电机;
检测电池电压,电池电压大于电机额定电压120%时,发出报警铃声,提醒电压过大,不能驱动电机;
2、显示速度和里程数
利用三位数码管显示里程数,范围0~999Km,保证每分钟更新一次;
用5个发光二极管显示速度,表示5个档位,每个档位间隔速度为10Km/h,即表示的速度为10Km/h、20Km/h、30Km/h、40Km/h、50Km/h,速度在哪个档位,对应发光二极管闪亮。
3、具有转向灯控制电路
当打开转向灯开关时,对应的转向灯每隔0.5秒闪一次,每次持续0.5秒
电动自行车控制器设计
4、照明灯控制电路
当打开照明灯时,在仪表盘上显示照明打开,用一个发光二极管。
5、具有报警功能
当钥匙开关不再车上时,若轮子速度有变化,即发出报警声音。
电动自行车控制器设计
第三章 系统分析
一、电动车控制器框图
上图是整车的控制系统框图,主要有电源、电机、控制器等,其中控制器位于核心地位,是整个控制系统的关键,也是负责组织各个部分协调工作的中心。其具体的控制框图如下图所示:
电动自行车控制器设计
电源降压模块灯管驱动电路照控速盘电压信号刹车信号信号转换电路WM灯P向、转明灯转向灯、照明灯信号信号转换电路PIC芯片信号转换电路MOS驱动电路电机电源输出电路电机电路电流、电机电压蜂鸣器P信号转换电路WM三极管驱动电路电机霍尔信号电压、里程显示输出数码管显示电路电源
从图中可以看出,控制器由单片机及其外围电路构成,包括输入信号处理电路、输出信号处理电路、电源电路等。
二、控制器关键功能分析 控制器功能:
1、改变电机速度
即调速功能,检测车把电压,根据车把设定速度来进行速度设定。同时检测霍尔传感器计数值,作为当前速度,通过PID调节来计算应该输出的PWM波。
2、刹车功能
检测刹车信号,当刹车有效时,将速度设定值强制变为零,输出PWM也变为零。
电动自行车控制器设计
3、有防过压、过流检测电路
检测电源电压,低压报警,防止损伤电池; 检测电源电流,当电流过大时适当降速,限制电流在合理区间,防止烧坏电机、电源。
4、显示电池电压、车速、里程数
将车子的速度用数码管显示在仪表盘上,将电池电压通过发光二极管显示在仪表盘上。
5、防盗
当车子锁上时,车轮子有转动则报警。
6、照明灯控制开关、转向灯控制开关
可以采用双刀双掷开关,一个可控制强电信号,另一个给单片机进行检测。
电动自行车控制器设计
第四章 控制器设计
控制器是电动自行车的核心,要实现的功能有:
1、可以改变电机速度
2、可以刹车
3、有防过压、过流检测电路
4、显示电池电压、车速、里程数
5、防盗
控制器不仅要具有所有功能并且引出相关信号线,而且要有合适的外观尺寸,并且可以对内部电路进行保护。
一、硬件设计
1、电机驱动电路设计
由V1~V6六只功率管构成的驱动全桥可以控制绕组的通电状态。按照功率管的通电方式,可以分为两两导通和三三导通两种控制方式。由于两两导通方式提 供了更大的电磁转矩而被广泛采用。在两两导通方式下,每一瞬间有两个功率管导通,每隔1/6周期即60°电角度换相一次,每只功率管持续导通 120°电角度,对应每相绕组持续导通120°,在此期间相电流方向保持不变。
电动自行车控制器设计
为保证产生最大的电磁转矩,通常需要使绕组合成磁场与转子 磁场保持垂直。由于采用换相控制方式,其定子绕组产生的是跳变的磁场,使得该磁场与转子磁场的位置保持在60°~120°相对垂直的范围 区间。
2、照明灯、转向灯、速度显示仪表
单片机检测到照明灯亮暗,转向灯亮暗及方向,将其显示在仪表盘上,灯的亮暗是通过三个发光二极管来显示的。由于一般的发光二极管20mA的电流就可以驱动,因此可以用单片机I/O引脚直接驱动。
至于速度显示,可以通过数码管显示,数码管可以用三个,显示范围是0.0 ~99.9KM/h,可以用三极管控制选择端,每次选择一个数码管,进行给值,单片机输出的是四位信号,可以显示0~9的BCD码,通过数码管显示驱动芯片转换为数码管的7段码,则选中的数码管显示对应的数字,通过不断给数码管写值则可以达到看起来连续的效果。
电动自行车控制器设计
或者要节省成本,其实速度显示可以仅显示档位,比如0~5km/h、5~10km/h、10~15km/h、15~20km/h、20~25km/h 分为5档,每档对应一个发光二极管,当速度在对应的档位时,对应的发光二极管亮,其他的不亮。
3、电池电压检测电路
检测电池电压需要对电池电压进行采样,采样电路的作用是强弱分离,对单片机引脚进行保护,同时对电池电压进行变换,变到适合单片机A/D引脚采样的范围。
采样电路可以先用电容进行滤波,然后接上一个输入电阻很大的变换电路,可以通过741等放大器实现,然后对比较后的电压进行电阻分压转换,转换到0~3.3V,适合单片机采样。
4、电机电流检测、电池电流检测、漏电检测
在待检测的电路中串入阻值很小的电阻(注意大电流电路中电阻必须要有较大的功率),然后对电阻两侧的电压取样,经过后级差值比较电路得出压差。差值转换可以采用741,然后在进行放大缩小变化,转换成0~3.3V的范围,可以接入单片机A/D引脚进行电压检测,然后除以电阻及变比等即可得到对应线路的电流。通过和每个线路设定电流阈值及车状态检测,即可得到是否过流、是否漏电等信息。
电动自行车控制器设计
5、报警电路
单片机通过I/O引脚输出报警信号开关,然后通过三极管驱动蜂鸣喇叭来提示是否有紧急情况。通过不同频率的信号分辨不同的报警信息。
6、防盗电路
防盗检测其实是检测轮子是否转动来实现的,即利用霍尔器件检测速度,若速度大于某个去掉干扰后的阈值就认为有被盗的可能,就驱动蜂鸣喇叭报警。
二、软件设计
1、软件流程图设计
电动自行车控制器设计
上电检查进入主循环检测速度输入,设定速度输入,刹车信号输入,电源电压检测输入速度PID计算,将PWM控制信号输出仪表盘显示速度
程序流程图 1,主要流程图,包括初始化、主循环。
电动自行车控制器设计
检测速度设定值,用单片机A/D转换功能将模拟电压转换为数字信号,低通滤波读出单片机光码盘计数器值,低通滤波增量式PID计算输出值,并且进行限速处理PWM输出设定
程序流程图 2,速度调整程序流程图
电动自行车控制器设计
已经检测到实际速度值,并且进行低通滤波处理将速度信号分成三位,分别是十位,个位,小数位计算三位数字转换成数码管设定值,并且进行输出时序设置调用显示子函数
程序流程图 3,显示子函数程序流程图
电动自行车控制器设计
速度PID计算刹车信号是否有效否进行增量式PID计算,设定是将设定速度设为零,进行PID计算,输出PWM设定子函数
程序流程图 4,速度调控流程图
电动自行车控制器设计
安全检测子函数电源电流是否过大是否否进行正常处理,显示电压是电流过大,进行漏电判断或者速度限制下一程序
程序流程图 5,安全检测程序流程图
2、软件功能设计
速度PID设计:
1)可以采用增量式PID,在不同电压、不同速度下比例积分微分系数有所不同;
2)带刹车检测,刹车时将设定速度设为0,电机PWM输出为零;
3)超速限制,当速度超过20Km/h时,进行适当减速,限制在20Km/h以下;
电动自行车控制器设计
4)起步限速,开始时速度慢慢上升,防止突然启动。
安全检测设计:
1)检测电压电流,当电压较低时报警,以免损坏电池; 2)电流检测,防止超过限制电流烧坏电机、电源或者电线,当电流大于最大电流时,减速是电流在最大电流值以下附近一个区间内波动;
3)上电检测,当电机未开动时,若有较大电流则可能漏电进行报警;
4)当车钥匙拔出来,并且开启报警功能后,若车轮子光码盘有读数说明车子可能被盗,要进行报警。
显示设计:
1)速度显示设计,用三段数码管显示速度的十位、个位和小数位,采用共阴极数码管,LM373锁存数字,三个IO口选通数码管,一次显示一位,每个循环周期控制一次; 2)照明灯显示,主控电路用开关实现,单片机仅检测开关是否开启,并用一个IO口来控制三极管电路驱动发光二极管来显示是否开启照明灯,左右的转向灯采用相同的设计; 3)电源电压显示,将检测到的电压用多个发光二极管显示,亮的越多电压越高,当电压低于报警电压时,所有二极管熄灭,驱动电路采用三极管驱动,每个循环周期进行一次显示。
第三篇:KDS控制器报告
申请报告
设备动力部:
本部一台全自动地面清洗机瑞捷X8型在正常清洗地面时,突然发生不能运行,经厂家专业维修人员检查后,确认为此机的控制器已坏。型号为KDS控制器,需请贵部帮助解决!
生产技术部 2014-4-16
第四篇:struts2_控制器介绍
struts2 控制器介绍
核心控制器FilterDispatcher
核心控制器FilterDispatcher是Struts 2框架的基础,包含了框架内部的控制流程和处理机制。业务控制器Action和业务逻辑组件是需要用户来自己实现的。用户在开发Action和业务逻辑组件的同时,还需要编写相关的配置文件,供核心控制器FilterDispatcher来使用。
Struts 2的工作流程相对于Struts 1要简单,与WebWork框架基本相同,所以说Struts 2是WebWork的升级版本。Struts 2框架按照模块来划分,可以分为Servlet Filters、Struts核心模块、拦截器和用户实现部分。Struts 2框架结构图如图3.1所示。
图3.1 Struts 2框架结构图
一个请求在Struts 2框架中的处理大概分为以下几个步骤。
客户端提交一个(HttpServletRequest)请求,如上文在浏览器中输入
http://localhost: 8080/bookcode/ch2/Reg.action就是提交一个(HttpServletRequest)请求。
请求被提交到一系列(主要是3层)的过滤器(Filter),如(ActionContextCleanUp、其他过滤器(SiteMesh等)、FilterDispatcher)。注意:这里是有顺序的,先ActionContext CleanUp,再其他过滤器(Othter Filters、SiteMesh等),最后到FilterDispatcher。
FilterDispatcher是控制器的核心,就是MVC的Struts 2实现中控制层(Controller)的核心。
FilterDispatcher询问ActionMapper是否需要调用某个Action来处理这个(HttpServlet Request)请求,如果ActionMapper决定需要调用某个Action,FilterDispatcher则把请求的处理交给ActionProxy。
ActionProxy通过Configuration Manager(struts.xml)询问框架的配置文件,找到需要调用的Action类。例如,用户注册示例将找到UserReg类。
ActionProxy创建一个ActionInvocation实例,同时ActionInvocation通过代理模式调用Action。但在调用之前,ActionInvocation会根据配置加载Action相关的所有Interceptor(拦截器)。
一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果result。Struts 2的核心控制器是FilterDispatcher,有3个重要的方法:destroy()、doFilter()和Init(),可以在Struts 2的下载文件夹中找到源代码,如代码3.1所示。
代码3.1 核心控制器FilterDispatcher
public class FilterDispatcher implements StrutsStatics, Filter {
/**
* 定义一个Log实例
*/
private static final Log LOG = LogFactory.getLog(FilterDispatcher.class);
/**
* 存放属性文件中的.STRUTS_I18N_ENCODING值
*/
private static String encoding;
/**
* 定义ActionMapper实例
*/
private static ActionMapper actionMapper;
/**
* 定义FilterConfig实例
*/
private FilterConfig filterConfig;
protected Dispatcher dispatcher;
/**
* 创建一个默认的dispatcher,初始化filter
* 设置默认的packages
*
*/
public void init(FilterConfig filterConfig)throws ServletException {
this.filterConfig = filterConfig;
dispatcher = createDispatcher(filterConfig);
dispatcher.init();
String param = filterConfig.getInitParameter(“packages”);
String packages = “org.apache.struts2.static template org.apache.struts2.interceptor.debugging”;
if(param!= null){
packages = param + “ ” + packages;
}
this.pathPrefixes = parse(packages);
}
//销毁filter方法
public void destroy(){
if(dispatcher == null){
LOG.warn(“something is seriously wrong, Dispatcher is not initialized(null)”);
} else {
dispatcher.cleanup();
}
}
/**
* 处理一个Action或者资源请求
*
* filter尝试将请求同action mapping相匹配
* 如果找到,将执行dispatcher的serviceAction方法
* 如果Action处理失败, doFilter将建立一个异常
*
* 如果请求静态资源
* 资源将被直接复制给 response
*
* 如果找不到匹配Action 或者静态资源,则直接跳出
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)throws IOException, ServletException {
HttpServletRequest request =(HttpServletRequest)req;
HttpServletResponse response =(HttpServletResponse)res;
ServletContext servletContext = getServletContext();
String timerKey = “FilterDispatcher_doFilter: ”;
try {
UtilTimerStack.push(timerKey);
request = prepareDispatcherAndWrapRequest(request, response);
ActionMapping mapping;
try {
mapping=actionMapper.getMapping(request, dispatcher.getConfigurationManager());
} catch(Exception ex){
LOG.error(“error getting ActionMapping”, ex);
dispatcher.sendError(request, response, servletContext, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, ex);
return;
}
if(mapping == null){
String resourcePath = RequestUtils.getServletPath(request);
if(“".equals(resourcePath)&& null!= request.getPathInfo()){
resourcePath = request.getPathInfo();
}
if(serveStatic && resourcePath.startsWith(”/struts“)){
String name = resourcePath.substring(”/struts“.length());
findStaticResource(name, request, response);
} else {
//为一个普通的request, 则通过
chain.doFilter(request, response);
}
return;
} /**
*这个方法询问ActionMapper是否需要调用某个Action来处理这个(request)请求,*如果ActionMapper决定需要调用某个Action,*FilterDispatcher则把请求的处理交给ActionProxy
dispatcher.serviceAction(request, response, servletContext, mapping);
} finally {
try {
ActionContextCleanUp.cleanUp(req);
} finally {
UtilTimerStack.pop(timerKey);
}
} }
… …
}
在doFilter()方法中,将调用dispatcher.serviceAction,该方法如果找到相应的Action,将把用户请求交给ActionProxy。serviceAction()代码在Dispatcher.java中,如代码3.2所示。
代码3.2 Dispatcher类
public class Dispatcher {.../**
* 为mapping加载类,并调用相应的方法或者直接返回result
*
* 根据用户请求的参数,建立Action上下文
* 根据指定的Action’名称和包空间名称,加载一个Action代理 ActionProxy
* 然后Action的相应方法将被执行,*/
public void serviceAction(HttpServletRequest request, HttpServletResponse response, ServletContext context, ActionMapping mapping)throws ServletException {
Map
//如果存在一个值栈,则建立一个新的并复制以备Action使用
ValueStack stack =(ValueStack)request.getAttribute(ServletActionContext.STRUTS_VALUESTACK_KEY);
if(stack!= null){
extraContext.put(ActionContext.VALUE_STACK, ValueStackFactory.getFactory().createValueStack(stack));
}
String timerKey = ”Handling request from Dispatcher“;
try {
UtilTimerStack.push(timerKey);
String namespace = mapping.getNamespace();
String name = mapping.getName();
String method = mapping.getMethod();
Configuration config = configurationManager.getConfiguration();
//FilterDispatcher把请求的处理交给ActionProxy
ActionProxy proxy = config.getContainer().getInstance(ActionProxyFactory.class).createActionProxy(namespace, name, extraContext, true, false);
proxy.setMethod(method);
request.setAttribute(ServletActionContext.STRUTS_VALUESTACK_KEY, proxy.getInvocation().getStack());
//ActionMapping 直接返回一个result
if(mapping.getResult()!= null){
Result result = mapping.getResult();
result.execute(proxy.getInvocation());
} else {
proxy.execute();
}
if(stack!= null){
request.setAttribute(ServletActionContext.STRUTS_VALUESTACK_KEY, stack);
}
} catch(ConfigurationException e){
LOG.error(”Could not find action or result", e);
sendError(request, response, context, HttpServletResponse.SC_NOT_FOUND, e);
} catch(Exception e){
throw new ServletException(e);
} finally {
UtilTimerStack.pop(timerKey);
}
} …
}
从上面代码中可以看出来,Struts 2用于处理用户请求的Action实例,并不是用户实现的业务控制器,而是Action代理。关于Action代理相关内容,读者可以参考拦截器章节的介绍。
★ 提示 ★
前面一直在说Action可以是一个普通的Java类,与Servlet API完全分离,但是为了实现业务逻辑,Action需要使用HttpServletRequest内容。
Struts 2设计的精巧之处就是使用了Action代理,Action代理可以根据系统的配置,加载一系列的拦截器,由拦截器将HttpServletRequest参数解析出来,传入Action。同样,Action处理的结果也是通过拦截器传入HttpServletResponse,然后由HttpServletRequest传给用户。
其实,该处理过程是典型的AOP(面向切面编程)的方式,读者可以在后面详细了解到。Struts 2处理过程模型如图3.2所示。
图3.2 Struts 2处理过程模型
★ 说明 ★
拦截器是Struts 2框架的核心,通过拦截器,实现了AOP(面向切面编程)。使用拦截器,可以简化Web开发中的某些应用,例如,权限拦截器可以简化Web应用中的权限检查。
3.1.2
业务控制器Action
业务控制器Action是由开发者自己编写实现的,Action类可以是一个简单的Java类,与Servlet API完全分离。Action一般都有一个execute()方法,也可以定义其他业务控制方法,详细内容将在后面介绍。
Action的execute()返回一个String类型值,这与Struts 1返回的ActionForward相比,简单易懂。Struts 2提供了一个ActionSupport工具类,该类实现了Action接口和validate()方法,一般开发者编写Action可以直接继承ActionSupport类。编写Action类后,开发者还必须在配置文件中配置Action。一个Action的配置应该包含下面几个元素:
1、该Action的name,即用户请求所指向的URL。
2、Action所对应的class元素,对应Action类的位置。
3、指定result逻辑名称和实际资源的定位。
Action是业务控制器,笔者建议在编写Action的时候,尽量避免将业务逻辑放到其中,尽量减少Action与业务逻辑模块或者组件的耦合程度。
3.1.3
业务模型组件
业务模型组件可以是实现业务逻辑的模块,可以是EJB、POJO或者JavaBean,在实际开发中,对业务模型组件的区分和定义也是比较模糊的,实际上也超出了Struts 2框架的范围。不同的开发者或者团队,都有自己的方式来实现业务逻辑模块,Struts 2框架的目的就是使用Action来调用业务逻辑模块。例如一个银行存款的业务逻辑模块,如代码3.3所示。
代码3.3 模拟一个银行业务的实现模块
package ch3;
public class Bank {
//定义银行账户
private String accounts;
//定义操作金额
private double money;
//属性的getter和setter方法
public String getAccounts(){
return accounts;
}
public void setAccounts(String accounts){
this.accounts = accounts;
}
public double getMoney(){
return money;
}
public void setMoney(double money){
this.money = money;
}
//模拟银行存款方法
public boolean saving(String accounts, double money){
//调用DAO等模块读写数据库
return dosomeing();
}
}
上面实例在实际开发中没有任何意义,这里只是作为业务逻辑模块来说明,在执行saving(String accounts,double money)方法时,可以调用相应的数据库访问其他组件,来实现存款操作。使用Action调用该业务逻辑组件可以在execute()方法中实现,如代码3.4所示。
代码3.4 业务控制器Bank_Saving_Action
package ch3;
import java.util.Map;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class Bank_Saving_Action extends ActionSupport {
//定义银行账户
private String accounts;
//定义操作金额
private double money;
public String execute()throws Exception {
//创建Bank实例
Bank bk=new Bank();
//调用存款方法
if(bk.saving(accounts, money)){
return SUCCESS;
}else{
return ERROR;
} }
//属性的getter和setter方法
public String getAccounts(){
return accounts;
}
public void setAccounts(String accounts){
this.accounts = accounts;
}
public double getMoney(){
return money;
}
public void setMoney(double money){
this.money = money;
}
Bank_Saving_Action演示了对银行存款业务逻辑组件的调用,这里是通过在Action中创建业务逻辑组件实例的方式实现的。在实际开发中,可以使用静态工厂获得业务逻辑组件的实例或者使用IoC容器来管理。Action中不实现任何业务逻辑,只是负责组织调度业务逻辑组件。调用关系如图3.3所示。
图3.3 调用业务逻辑组件
★ 说明 ★
业务控制器Action一般情况下不是直接创建业务逻辑组件实例,而是使用工厂模式或者是从Spring容器中获得业务逻辑组件实例,这样可以提高系统的性能。
3.1.4
视图组件
Struts 1只能支持JSP作为视图资源,而Struts 2的进步之处就是可以使用其他视图技术,如FreeMarker、Velocity等。通过前面的学习和示例,读者会知道Action的返回结果只是一个简单的字符串,也就是一个逻辑上的视图名称,要与实际视图资源对应,必须通过配置文件来实现。
在struts.xml配置文件中,每一个Aciton定义都有name和class属性,同时还要指定result元素。result元素指定了逻辑视图名称和实际视图的对应关系。每个result都有一个type属性,前面介绍的struts.xml中并没有显式指定type值,即使用了默认的type类型:dispatcher,该结果类型支持JSP所谓视图资源。
对于Struts 2的视图技术和result返回类型,后面将详细介绍。
第五篇:控制器产品检验标准
1.0
目的为使本公司生产的控制器及驱动器产品之半成品制作、成品入库、出货检验作业有所依据,特定此检验规范。
2.0
适用范围
本规范适用于控制器及驱动器产品生产的制程中检验、QA成品抽检、出货检验过程。
3.0
抽样计划(针对抽检工序):
依《数字抽样计划使用规范》
3.1
抽样水准
参考标准MIL-STD-105E
单次正常检查水准Ⅱ级
3.2
允许水准(AQL):2/1000
3.3
到45CM
3.4
目视角度:与被测物成30度到45度角范围
4.0
外观表面分级标准:
4.1
一级表面:在使用过程中能被用户首先看到的部份,即产品正面;
4.2
二级表面:用户偶尔才看到的表面,此处的瑕疵不会对品质造成危害,即产品侧面以及背面;
5.0
检验标准及方法:
检验项目
标准
检验方式
AQL
CR
MAJ
MIN
半成品检验(未装外壳)
元器件
PCB板上元器件无破损、断引脚、浮高、错件、少件、二极管无插反;散热片锁紧并与三管极良好接触
目视,核对标准样品或派工单
√
焊点
焊点饱满,无漏焊、虚焊、连锡、少焊、多锡等不良,PCB板插件面无多余锡珠,PCB背面加锡位置锡厚1.5-3.0mm
目视
√
导线
有连接信号线的控制器,各颜色导线插接位置应正确,无交叉、漏插现象
目视
√
功能测试
各功能按键应能有效工作,按键顺畅
根据控制器使用说明连接好电源及测试模组
√
正常工作时LED闪烁正常,无顺序错乱及不亮
√
调节各功能按键时液晶显示屏亮度不变,无闪屏
√
负载指示灯与负载要求同步
√
信号输出有效,调节各按键时,液晶显示屏上对应值会做相应变化,各模式对应效果要求一致,模式变化参考使用说明书
√
成品检验
表面外观
一级表面及可正视A面(正面):表面完整平滑,无刮伤、油污、脏污、喷涂均匀无色差,无刮手批锋。
二级表面及可正视B面(侧面):表面裂缝可接受大小为≤0.3MM,表面有感刮伤≤0.1MM(深度),长度为≤2MM。无感刮伤≤0.1MM(深度),长度≤2MM。表面有感杂物可接受面积≤0.1MM,无感杂物可接受面积≤0.2MM。
目视
√
丝印
丝印清晰完整各按键上面需要标注名字,内容正确,每路信号输出品丝印清晰正确,无正负极标反现象
目视
√
装配
外壳螺丝钉完整且外壳无松动和衔接不吻合现象,间隙可接受范围0.3MM
目视
√
外壳上装有防水圈,防水圈应接直绷紧,PG7防水接头与外壳要求拧紧,防水帽与RVV线螺丝锁紧,RVV线在壳体内应伸出1-2cm(KC1P500GV1产品检验适用)
目视
√
功能测试
各功能按键应能有效工作,按键顺畅
根据控制器使用说明连接好电源及测试模组
√
正常工作时LED闪烁正常,无顺序错乱及不亮
√
调节各功能按键时液晶显示屏亮不变,显示屏也不抖动
√
负载批示灯与负载要求同步
√
信号输出有效,调节各按键时,液晶显示屏上对应值会做相应变化,各模式对应效果要求一致,模式变化参考使用说明书
√
读卡SD应能正常读卡(针对点控控制器,KC1P500G)
√
包装
包装应符合派工单或客户特殊要求配相应说明书、合格证,包装标识正确、包装无破损
目视
√
5.1
遥控器尺寸和模式
亮度加
亮度减
关闭
打开
静态红色
静态绿色
静态蓝色
静态白色
静态
玫瑰红色
静态
草绿色
静态
宝石蓝色
七色跳变
静态橙色
静态
靑蓝色
静态
紫灰色
七色渐明渐暗
静态鹅黄色
静态
天空蓝
静态
酱紫色
三色渐明渐暗
静态
黄色
静态
青色
静态
紫色
三色跳变
5.2控制器尺寸.