第一篇: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返回类型,后面将详细介绍。
第二篇:电动车控制器介绍
电动车控制器介绍
电动车控制器是用来控制电动车电机的启动、运行、进退、速度、停止以及电动车的其它电子器件的核心控制器件,它就象是电动车的大脑,是电动车上重要的部件。
我们开发的智能型无刷电动车控制器采用了美国cypress公司的方案,采用性能非常优异单片机作为主控芯片,来实现控制和保护电动车的电机、电池,使电动车驱动系统工作在最佳状态,从而提高产品的可靠性和使用寿命;采用霍尔电子无级调速系统,具有欠压保护、过流保护、堵转保护等保护功能,可靠的对电动车电机和电池进行保护,确保电动车使用及安全;加入了全新的无刷电机控制器理论,具有反充电/EABS刹车功能,用户在关掉电源的情况下可把电机锁死,使车子很难推行,另外还加入1+1助力系统,具有巡航功能,模式切换功能,实现了真正的智能型控制。
一、控制器功能:
1、工作电压: DC 48V;
2、功率: 350W 450W 500W;
3、欠压保护: DC 41.5V ±1V(也可根据用户要求设定);
4、电动模式:霍尔电子无级调速系统,调速范围 0~100%,1.1~4.2V;
5、限流电流:≤17A(平均值),最大脉冲电流35A(根据用户要求设定);
6、限速功能:最高车速可达35km/h~45km/h(根据电机而定),限速行驶速度控制在20km/h以内;
7、启动方式:手柄控制启动快慢,控制灵活;
8、刹车:EABS+机械刹,高/低电平;
9、巡航模式:具有自动巡航和手动巡航两种功能可选,8秒进入巡航,稳定行驶速度,无须手柄控制;
10、1+1助力功能:控制器根据骑车者脚踏力的大小(速度快慢),给出相应比例的电机动力,实现了在骑行中辅以动力,让骑行者感觉更轻松,中轴转速智能型;
11、堵转保护功能:自动判断电机在过流时是处于完全堵转状态还是在运行状态
或电机短路状态,如过流时是处于运行状态,控制器将限流值设定在固定值,以保持整车的驱动能力;如电机处于纯堵转状态,则控制器2秒后将限流值控制在10A以下,起到保护电机和电池,节省电能;如电机处于短路状态,控制器则使输出电流控制在2A以下,以确保控制器及电池的安全。
12、防飞车功能:解决了无刷控制器由于转把或线路故障引起的飞车现象,同时
具有启动防飞车功能,提高了系统的安全性。
13、电机锁功能:在关闭电门锁的情况下,控制器能自动将电机锁死,实现了部
件级的防盗功能,解决了防盗型控制器在警戒状态下控制器还必须工作,工作电流大的不利因素。
14、遥控功能:在关闭电门锁的情况下,控制器通过遥控报警器自动在将电机锁
死的同时具有报警功能,实现了遥控与部件级的双重防盗功能,解决了防盗型控制器在警戒状态下控制器还必须工作,工作电流大的不利因素。并可在车场中通过遥控器寻车。
15、反充电功能:滑行时可对电池进行反充电,在延长了电池的行驶时间的同时
增加了电池的使用寿命,解决了电池在行驶时的行驶时间短和使用寿命不长的问题。
16、电机选择:解决了正、反相绕阻电机之间不兼容的现象,方便了用户的使用。17、120º/60º选择:120º与60º电机可相互切换。
18、指示灯显示代码:
1、指示灯常灭:控制器进入运行状态;
2、指示灯亮0.5灭0.5秒闪烁一次,灭1秒:控制器进入待机状态;
3、指示灯亮0.5灭0.5秒闪烁二次,灭1秒:刹车信号;
4、指示灯亮0.5灭0.5秒闪烁三次,灭1秒:MOS损坏;
5、指示灯亮0.5灭0.5秒闪烁四次,灭1秒:飞车保护;
6、指示灯亮0.5灭0.5秒闪烁五次,灭1秒:电流故障;
7、指示灯亮0.5灭0.5秒闪烁六次,灭1秒:电源电压低保护;
8、指示灯亮0.5灭0.5秒闪烁七次,灭1秒:霍尔信号故障;
9、指示灯亮0.5灭0.5秒闪烁八次,灭1秒:手柄信号未接。
二、使用方法:
1、在接线前先切断电源,按接线图所示连接各根导线;
2、该控制器应安装在通风、防水、防震部位;
3、控制器限速控制插头应放置容易操作的地方;
4、控制器接插件应接插到位,禁止将控制器电源正负极反接;
5、测试后装进铝壳之前,建议放电。
第三篇:机房空调控制器系统介绍
上海中光信息工程有限公司
机房空调控制器介绍
通信运营商在基站建设中绝大部分基站采用民用舒适性空调,由于舒适空调设计目的是为了在有人空间内,将温度调整到人体比较舒适的温度,其设计温度为设定温度正负1度左右。而基站内的空调主要服务于设备,设备的温度范围根据规范要求有10度左右的温宽。这就为通过节能型智能空调控制器对舒适性空调的温度范围进行智能化控制,实现在基站这样特定应用场景中通过宽温控制手段,从而避免空调压缩机相对频繁启动所造成的不必要的能源浪费,以实现节能的目的。
博德尔节能型空调智能节电器技术特点:
1.全智能自动控制:采用单片机进行编程,所有设置功能全自动执行;
面板直观显示:控制器面板可直观显示设定的开关机温度,及机房温度,方便本地查询;
2.设置功能:可设置空调开关机的温度,适应不同应用场景的需求。
3.空调控制方式:具有空调电源、面板、红外控制等至少2种以上的控制方式,适不同类
型空调。
4.监控功能:设备配有RS485通信接口,提供开放的通信协议(接口通信协议满足
YD/T1363.3-2005中B.13要求)。方便客户纳入监控系统,可直接接入监控采集器或其他智能采集设备。
5.电源安全性:多重防雷设计,包括输入电源、接口、器件均根据基站防雷相关标准设计了防雷保护措施。宽电压设计工作稳定。从而达到运营商级的产品。绝非民用级产品。
6.权限设置:系统设置了使用权限设定,避免了误操作及越权操作。
7.消防安全:全金属外壳,所以线缆均采用阻燃电缆及辅材。并设有消防联动接口,避免在火灾情况下启动空调。接入后火灾状态下立即关闭空调。
8.程序自保护设计:程序中对于空调设定温度范围设计有一点区间,任何误设定或违反节能逻辑目的的设定均为无效设定。
9.低功耗:设备本身设计功耗极低,为毫安级功耗。
10.空调工作状态反馈:具有空调工作状态反馈设计,确保空调的开关可靠。
11.接口冗余设计:可根据用户需求预留增值功能接口,如空调过滤网堵塞状态告警,方便维护人员的运维工作。
12.免维护:设备安装后无需维护,设备内置自检程序,如发现自身器件发生故障将自动切出,恢复空调自运行模式。
第四篇:洗衣机节水控制器管理系统介绍及解决方案
洗衣机节水控制器管理系统介绍及解决方案
一、洗衣机节水控制器管理系统概述:
随着水资源的日益短缺,节水已成为各个用水单位、整个国家以及世界各国的重要课题。在我国,用水存在着巨大的浪费,这既有政策方面的问题也有技术层面的原因。要实现用水的现代化管理,北京泰德汇智研制和改造的洗衣机节水控制器管理系统有效的减轻了这一现象。
洗衣机节水控制器管理系统有联网和脱机两种方式。脱机时可用采集卡进行数据采集;联网时可以与电脑通过网络连接后用软件进行设备参数设置、消费数据采集及查询、统计、报表、结算等处理。从而达到节水节电,科学收费,高效管理的目的。广泛应用于学校、企业、政府、工厂澡堂、浴室、开水房、饮水机等
北京泰德汇智科技有限公司是国内最大洗衣机节水控制器管理系统生产企业之一, 15年 洗衣机节水控制器管理系统生产经验,高品质量洗衣机节水控制器管理系统售后服务,数百家企业、上千台节水控制器设备使用中。
二、洗衣机节水控制器管理系统产品特点:
1.乳白色外观,造型简洁、美观大方;
2.外壳喷漆容易清洗;
3.人性放卡槽设计(解决浴室无处放卡问题); 4.防水防潮(尤其浴室潮气严重)专用模具; 5.红外开关(无寿命限制、开关暂停水流非常方便); 6 .稳定、维修率极低。
三、洗衣机节水控制器管理系统技术参数:
技术指标及技术参数: 电源: 12V 存储容量: ≥30000条 功耗: ≤2W 适用卡类: Mifare® One 读写速度: ≤0.1秒/次 工作温度: 0℃—70℃ 工作湿度: 10%—90%RH 感应距离: ≤10mm 通讯速率: 9600bps-38400bps 黑名单数量:65530个
支持控制阀类型:电磁阀、电机阀 计费精度: 1秒
外形尺寸: 145×102×45 mm 重量: 400g
四、洗衣机节水控制器管理系统功能特点:
1.全新防水设计,上下壳接缝装有硅胶密封件防水。
2.节水设计,采用读卡和红外感应双重方式控水,通过节水器上红外感应自由控制水的通断。
3.剩余金额不足洗浴 分钟时自动提醒,让浴客体会到人性化的设计。4.软件功能齐全,数据安全可靠。完善的黑名单管理机制。
5.可选择计量(水流量)方式扣费,配合流量表,计费更加科学、公平、合理。
6.脱机型采用电子钱包方式,设备仅记录消费总额,免去帐目核对的烦恼;采用采集卡即可提取消费累计数据,无须复杂联网,减少施工量。7.软件可强制水控器开阀或者关阀,便于远程灵活控制。8.无人值守的自助使用方式全天候运行,节省人力物力资源。
9.不同人员类别可设置不同费率,(在学校,老师一个价,学生一个价;在单位:经理一个价,员工一个价)使管理者对帐户的控制有足够的灵活性。
10.洗浴时实时显示卡中余额,让浴客更了解自己的消费情况,有利于提高节水意识。11.系统软件自动把消费明细转换成Excel格式,并一键打印输出各类统计报表。管理员如需打印消费明细单,直接打印即可,无需在用办公软件进行编辑。
12.强大的帐户管理功能(挂失、补办新卡、个人补助、集体补助、退款等等)。13.若浴客未通过红外感应开关关闭节水控制器,而强行将卡拿开,节水器将自动关闭阀门,并蜂鸣提示浴客将卡放回以便将余额回写,避免浴客洗后不关水,有效的控制了用水环节。
14.开放卡未使用的扇区空间,有利于扩展其他一卡通功能。15.超强大的帐户容量(10万人)。
16.精确的计算精度(消费计算精度:0.01 元)
17.功耗为6W,电压12V,节约用电的同时也百分百的防止了洗浴人员触电的危险。18.终端按区域管理,让管理者得心应手.19.可脱机也可联网。
五、洗衣机节水控制器管理系统组成:
洗衣机节水控制器管理系统由控制器、电磁阀(电动阀)、读卡器、通讯器、IC卡、软件组成。
六、洗衣机节水控制器管理系统原理:
通过服务器将现金货币转化为电子货币,存储于IC卡电子钱包内,当消费者需要消费时,只需将IC卡放在水控机即可消费,从卡中扣除消费金额。在交易过程没有现金参与其中,真正实现智能消费。
七、典型用户:
1、校园类:
安徽医科大学,天津大学,上海师范学院,杭州师范学院,中华女子学院,沈阳药科大学,徐州建筑职业技术学院,徐州师范大学,哈尔滨工业大学威海分校,内蒙古职业技术学院,青岛大学,西安外事学院,西安航空旅游职业学院,山西大学,天津理工大学,和河北工业大学,秦皇岛卫校,北京交通职业运输学院,北戴河海事学校,湖南交通职业学院36路,贵阳亚太学院,吉林农业科技学院, 姜堰三水学校, 淮北师范学校,河源中学,安徽医科大学,延安大学创新学院,西安思源学院,陕西航空旅游学院,长春师范大学,北京十四中,扬州仪征师范,江苏仪征职业技术学院,南京审计学院,江苏射阳中学,内蒙古锡盟6中,甘肃平凉一中。
2、企业类:
辽宁油田,大唐热电,张家口卷烟厂,石家庄市政府,塘沽口岸,北京市朝阳区劳动局,包头少年宫,北京市国土资源局,北京剑江制衣,河北昌黎宏信钢厂,河北唐山联通总部,张家港科技园。
3、地铁类:
北京地铁9号线, 北京地铁10号线, 北京地铁4号线,北京地铁5号线。
大连地铁, 沈阳地铁,郑州地铁。东莞地铁,青岛地铁。
第五篇:控制器市场分析
控制器市场分析
控制器作为电动车的主要的关键零部件,他们之间是完全互补品的关系,电动车控制器的需求不仅仅来自于新增产能的零配件市场,同时也有来自与维修市场,根据惯例,电动车控制器在维修市场的需求大概为存量的5%-10%。因此总的市场需求量考虑到电动车的使用寿命,进入维修市场的电动车的存量应该为前五年市场销量之和5%-10%。基于以下几点我国的自动控制器的装配自行车年均增长10%。
1、根据我国2010年的产业政策规划,本将出台相关的行业政策和行业标准,政策逐步明朗。
2、我国在2010年将电动自行车列为了家电乡下的补贴电器之一。因此此举将大幅促进我国电动自行车在农村市场的消费。
3、国内电动车控制器呈两极分化发展趋势,以高标科技为首的品牌化发展之路,面向中高端市场,推出高质量、高科技、高水准的产品,在市场经济中性价比极高;以一些杂牌为主,价格低廉,产品质量没有固定标准,生产成本极低,以低价格的优势在市场上占据一定份额。
3、我国2010年上半年的数据显示我国在上半年电动自行车产量同比增长
8.9%。
4、今后三年内电动车由于产品升级也逐步进入更新换代期,同时产业升级主要关键部件的升级如控制器、动力电源、电机的升级,解决产业困局,控制器等关键技术的升级至关重要。