精华内容
下载资源
问答
  • 增量式编码器工作原理以及使用
    千次阅读
    2020-05-02 13:06:25

    工作原理:增量式旋转编码器通过内部两个光敏接受管转化其角度码盘的时序和相位关系,得到其角度码盘角度位移量增加(正方向)或减少(负方向)。

    内部工作原理(判断正转还是反转):

    AB 相编码器内部有两对光电耦合器,输出相位差为 90°的两组脉冲序列。正转和反转时两路脉冲的超前、滞后关系刚好相反。
    在 B 相脉冲的上升沿,正转和反转时 A相脉冲的电平高低刚好相反,因此使用 AB 相编码器, PLC 可以很容易地识别出转轴旋转的方向。看图:

                                                                                                                                      

    编码器AB相
                     顺时针AB                       逆时针AB
                          11                             11
                          01                             10
                          00                             00
                          10                             01

      从上表的AB相可以得出:

    AB相正转和反转的编码是不一样的,只要知道AB相现在的编码和下一个编码,就可以判断编码器是正转还是反转。

    计算距离:

    购买的编码器会有一些参数:编码器分辨率(转一圈需要的脉冲)、周长(一圈的周长)

    一个脉冲对应的距离 = 编码器分辨率 / 周长; 

    则转动距离 = 脉冲数 * 编码器分辨率 / 周长; 

    未来计算准确,减少误差,我们可以转动固定长度所需要的脉冲:

    固定长度所需要的脉冲 = 固定长度 * 周长 / 编码器分辨率 ;

    实现:

    这里简单说一下实现的思路(针对STM32的程序设计):

    需要到STM32的知识  外部中断(上升沿或下降沿中断)

    1、外部中断捕获A相或者B相的上升沿(或者下降沿),产生中断进入中断服务程序;

    2、中断服务程序代码实现:判断B相的电平或者A相的电平(这里是为了判断编码器是正转还是反转)。

    例子(简单举个栗子):

    中断是捕获编码器A相的上升沿

    捕获到A相的上升沿时,判断B相是高电平还是低电平(看下面的图)

    如果B相是低电平则说明编码器是正转(顺时针);如果B相是高电平说明编码器反转(逆时针)

    判断是正转还是反转之后,相应的脉冲式进行加1,再通过简单的换算,就可以计算出距离

    若想计算速度,加个定时器。

                                                        

     

     

     

     

    更多相关内容
  • 本文主要讲了电动机软启动器工作原理,一起来学习一下
  • 通过对矿用防爆磁力启动器工作原理、内部电路、维修技巧及故障处理流程图的论述,总结了该启动器常见故障检测和维修的方法,并给出了"只有一个接触器吸合"的故障处理流程图,以方便现场工作人员的理解和操作。
  • 启动器工作原理..归纳.pdf
  • 启动器工作原理及应用详解.doc
  • 本文主要讲了一下关于电机软启动器工作原理,一起来学习一下
  • 启动器工作原理与选用doc,软启动器工作原理与选用:软启动器自动用旁路接触器取代已完成任务的晶闸管,为电动机正常运转提供额定电压,以降低晶闸管的热损耗,延长软启动器的使用寿命。
  • 启动器(软起动器)一种集电机软起...使用软启动器启动电动机时,晶闸管的输出电压逐渐增加,电动机逐渐加速,直到晶闸管全导通,电动机工作在额定电压的机械特性上,实现平滑启动,降低启动电流,避免启动过流跳闸。
  • 本文主要讲了时间继电星三角降压启动电路图及工作原理,下面一起来学习一下
  • 启动器原理、电机软起动器工作原理.doc
  • 启动器原理电机软起动器工作原理1.doc
  • 启动器原理、电机软起动器工作原理#.doc
  • SpringBoot自动装配原理分析和实现自定义启动器

    千次阅读 多人点赞 2021-02-25 13:18:10
    文章目录1.概述2....从注解的作用到源码分析,再到自定义SpringBoot启动器。 2.自动装配原理分析 自动装配的实现和这个注解有密切的关联。该注解是个复合注解,里面包含了三个关键的注解 @SpringBoo

    1.概述

    SpringBoot的自动装配,减少了原先需要编写xml配置文件或java配置类。本文将分析SpringBoot自动装配的原理(版本是2.3.5)。从注解的作用到源码分析,再到自定义SpringBoot启动器。

    2.自动装配原理分析

    自动装配的实现和这个注解有密切的关联。该注解是个复合注解,里面包含了三个关键的注解

    • @SpringBootConfiguration
    • @EnableAutoConfiguration
    • @ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
      @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
      在这里插入图片描述

    本文先介绍@SpringBootConfiguration和@EnableAutoConfiguration两个注解,@ComponentScan注解放到下一篇博客。

    重点分析@EnableAutoConfiguration注解的作用和实现原理。

    2.1@SpringBootConfiguration

    看到@Configuration注解表明该类是Spring的一个配置类

    proxyBeanMethods = true 保证每个@Bean方法被调用多少次返回的组件都是单实例的

    proxyBeanMethods = false 每个@Bean方法被调用多少次返回的组件都是新创建的
    在这里插入图片描述
    测试代码

    • proxyBeanMethods = true 默认就是true在这里插入图片描述
      控制台输出的结果如下:在这里插入图片描述
      获取两次对象都是同一个。

    • proxyBeanMethods = false在这里插入图片描述
      控制台输出的结果如下:在这里插入图片描述
      此时两个对象是不同的。

    2.2@EnableAutoConfiguration

    开启自动装配功能的注解
    在这里插入图片描述
    exclude和excludeName 指定自动装配的类,不进行自动装配。

    例如下面的测试代码:

    @SpringBootApplication()
    public class Boot02Application {
        public static void main(String[] args) {
            ConfigurableApplicationContext run = SpringApplication.run(Boot02Application.class, args);
            MybatisAutoConfiguration bean = run.getBean(MybatisAutoConfiguration.class);
            System.out.println(bean);
        }
    }
    

    没有设置exclude或者excludeName的时候,Spring容器当中存在MybatisAutoConfiguration对象。
    在这里插入图片描述
    将测试代码改成如下:

    @SpringBootApplication(exclude = MybatisAutoConfiguration.class)
    public class Boot02Application {
        public static void main(String[] args) {
            ConfigurableApplicationContext run = SpringApplication.run(Boot02Application.class, args);
            MybatisAutoConfiguration bean = run.getBean(MybatisAutoConfiguration.class);
            System.out.println(bean);
        }
    }
    // 或者 注意这里要写全限定类名
    @SpringBootApplication(excludeName= "org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration")
    public class Boot02Application {
        public static void main(String[] args) {
            ConfigurableApplicationContext run = SpringApplication.run(Boot02Application.class, args);
            MybatisAutoConfiguration bean = run.getBean(MybatisAutoConfiguration.class);
            System.out.println(bean);
        }
    }
    

    此时出现异常,MybatisAutoConfiguration不存在Spring容器当中
    在这里插入图片描述
    除此之外该注解其中最主要的两个注解是

    @AutoConfigurationPackage 、@Import(AutoConfigurationImportSelector.class)

    • @AutoConfigurationPackage

      添加该注解的类所在的package 作为自动配置package 进行管理。

      所以SpringBoot启动类所在的package作为自动配置的package。

      配合@Import(AutoConfigurationPackages.Registrar.class)注解,将Registrar注入。Registrar实现了ImportBeanDefinitionRegistrar接口,该接口中的方法registerBeanDefinitions,用于Bean定义的注入,也就是这里将自动配置的package交给Spring管理。
      在这里插入图片描述

    • @Import(AutoConfigurationImportSelector.class)

      该注解在《Spring中@Import注解的使用和实现原理》博客中已经详细介绍过了,用于Bean的注入。在这里插入图片描述
      AutoConfigurationImportSelector实现了DeferredImportSelector接口,该接口继承自ImportSelector接口。我想当然的以为会执行selectImports方法,但是根据debug断点调试,并没有执行该方法。在这里插入图片描述
      这是为什么呢?

      在ConfigurationClassParser的processImports方法中有这样一段代码,如下:在这里插入图片描述
      当实现类,实现的接口是DeferredImportSelector的时候,执行if的逻辑。如果它只是实现了父接口ImportSelector,才会执行selectImports方法。

      handle方法如下:在这里插入图片描述
      此时deferredImportSelectors不为null,DeferredImportSelector的实现类被封装成DeferredImportSelectorHolder,添加到deferredImportSelectors当中。在这里插入图片描述
      看着集合的名字就有延迟注入的意思,在ConfigurationClassParser的parse方法中遍历完了所有的候选集,则会调用this.deferredImportSelectorHandler.process()。在这里插入图片描述
      process方法如下:在这里插入图片描述
      遍历deferredImportSelectors集合,每个都调用register方法。这里将AutoConfigurationImportSelector的内部类AutoConfigurationGroup添加到groupings集合当中,并将对应的配置类添加到configurationClasses当中。在这里插入图片描述
      两个Map的结果如下:在这里插入图片描述
      遍历完deferredImportSelectors之后,调用handler.processGroupImports()在这里插入图片描述
      遍历之前放在groupings中的DeferredImportSelectorGrouping对象,调用getImports方法,该方法返回的是延迟注入的类名封装成的Entry结点的迭代器对象。在这里插入图片描述
      遍历延迟注入类,调用process方法处理,该方法得到自动配置结点,将其添加到autoConfigurationEntries集合当中。再遍历自动配置结点的所有配置类的类名,添加到entries集合当中。在这里插入图片描述
      getAutoConfigurationEntry方法用于得到autoConfigurationEntry,该对象管理了自动配置的类名。getAutoConfigurationEntry方法代码如下:在这里插入图片描述
      这里的attributes是根据注解的元数据得到的两个属性exclude和excludeName,前面介绍过了,就是用来移除掉指定自动配置类的自动装配。

      调用getCandidateConfigurations方法得到候选自动配置类的类名。

      之后就是根据attributes来过滤得到的configurations。

      接着调用fireAutoConfigurationImportEvents,自动加载类路径下Jar包中META-INF/spring.factories文件中 AutoConfigurationImportListener的实现类,并触发该接口的onAutoConfigurationImportEvent方法。

      getCandidateConfigurations方法如下:在这里插入图片描述
      这里有个空判断言,意思是在META-INF/spring.factories下没有找到自动配置类,如果你使用了自定义的包,确保文件是正确的。

      说明要导入的自动配置类,都记录在了META-INF/spring.factories当中。随便打开一个该文件,就可以看到要自动装配的配置类。在这里插入图片描述
      loadFactoryNames方法如下:在这里插入图片描述
      此时缓存里竟然已经有了需要的东西,重新打断点,再一次调试发现。在Spring容器启动的时候,构造方法里面就已经会获取SpringFactoriesInstances,加载META-INF/spring.factories目录下的自动配置类。在这里插入图片描述
      loadSpringFactories方法如下:在这里插入图片描述
      FACTORIES_RESOURCE_LOCATION是一个常量,等于"META-INF/spring.factories",遍历目录下的该文件夹,例如下图是属于/Users/gongsenlin/MavenRespository/org/springframework/boot/spring-boot/2.3.5.RELEASE/spring-boot-2.3.5.RELEASE.jar!/META-INF/spring.factories文件的属性结果。在这里插入图片描述
      都添加到cache缓存当中。在这里插入图片描述

      继续回到getImports方法,上面分析完了process方法,接下来就是调用group的selectImports方法,返回那些应该被注入的类。在这里插入图片描述
      利用之前已经保存在autoConfigurationEntries和entries集合当中数据,筛选出要注入的类。在这里插入图片描述
      结果如下:在这里插入图片描述
      getImports()方法结束,回到了processGroupImports()在这里插入图片描述
      遍历上面的31个要注入的类,调用processImports方法。该方法在之前的博客《Spring中@Import注解的使用和实现原理》中分析过了,这里不再赘述,至此就完成了自动装配。

    3.自定义启动器

    根据上面的的分析,可以想到要实现自动装配,需要编写一个spring.factories文件,放在META-INF目录下。就可以将某个类,交给Spring来管理。

    再配合上@Configuration注解、@Bean注解、@Import注解等,就可以实现简单的自动装配。

    starter模块:只需要将其他自动配置模块,或依赖的模块添加到pom文件中。

    如下:在这里插入图片描述
    autoconfigure模块目录结构如下:
    在这里插入图片描述
    其中配置类是MyAutoConfigure,代码如下:在这里插入图片描述
    使用@Configuration注解表明这是一个配置类,配合@Import注解和@Bean注解将A类和B类注入Spring容器当中。

    META-INF/spring.factories文件不能少,内容如下:在这里插入图片描述
    这样就完成了一个简单的自定义启动器。

    将这个starter启动器的依赖,添加到需要的项目pom文件当中,就可以实现自动装配了。在这里插入图片描述
    启动boot-02项目,A类和B类实现了自动装配。
    在这里插入图片描述

    展开全文
  • Android默认启动器原理

    千次阅读 2019-03-26 00:14:55
    Android默认启动器原理 一. 描述: 在Android中默认启动器,即能列出设备上的其他应用。点选任意列表项会启动相应应用。 可启动应用就是指点击主屏幕或启动器界面上的图标就能打开的应用。 大致思路:使用...

    Android默认启动器原理

    一. 描述:

    在Android中默认启动器,即能列出设备上的其他应用。点选任意列表项会启动相应应用。
    可启动应用就是指点击主屏幕或启动器界面上的图标就能打开的应用。
    大致思路:使用PackageManager获取所有可启动主Activity。可启动主activity都带有包含MAIN操作和LAUNCHER类别的intent过滤器。
    其所需的知识点:intent、intent过滤器、以及Android应用间是如何交互的。


    二. 实现过程:

    1. 创建一个隐式intent并从PackageManager那里获取匹配他的所有activity,然后向PackageManager查询activity总数:
    Intent startupIntent=new Intent(Intent.ACTION_MAIN);
    startupIntent.addCategory(Intent.CATEGORY_LAUNCHER);
    
    PackageManager pm=getActivity().getPackageManager();
    List<ResolveInfo> activities=pm.queryIntentActivities(startupIntent,0);
    
    Log.i(TAG,“手机上一共有 ”+activities.size()+"个应用");
    

      定义了MAIN/LAUNCHER intent过滤器的activity是应用的主要入口点。 它只负责做好作为应用主要入口点要处理的工作,通常不关心自己是否为默认的主要入口点,所以可以不包含CATEGORY_DEFAULT类别。
      因为MAIN/LAUNCHER intent过滤器并不一定包含CATEGORY_DEAFULT类别,因此不能保证可以与startActivity()方法发送的隐式intent匹配。转而使用intent直接向PackageManager查询带有MAIN/LAUNCHER intent过滤器的activity。

      对比使用隐式intent发送文字等,先创建隐士intent,再将其封装在选择器intent中,最后调用startActivity(intent)方法发送给操作系统:

    Intent i =new Intent(Intent.ACTION_SEND);
    //。。附加extras
    i=Intent.createChooser(i,“xxxx”);
    startActivity(i);

      这里没有用上述代码,原因很简单:MAIN/LAUNCHER intent过滤器可能无法与通过startActivity()方法发送的MAIN/LAUNCHER隐式intent相匹配。startActivity(Intent)意味着“启动匹配隐式intent的默认activity”,而不是想当然的”启动匹配隐士intent的activity“。
    调用startActivity(Intent)/startActivityForResult()方法发送隐式intent时,操作系统会默认为目标intent添加Intent,CATEGORY_DEFAULT类别。所以,如果希望Intent过滤器匹配startActivity()方法发送的隐式intent,就必须在对应的intent过滤器中包含DEFAULT类别。

    1. 在视图中展示查询到的activity标签:
      activity标签是用户可以识别的展示名称。查询到的acitivity都是启动acitivity,那么标签名通常也就是应用名。在PackageManager返回的ResolveInfo对象中,可以获取activity标签和其他的一些元数据。
    2. 对activity标签排序:
      使用ResolveInfo,loadLabel(PackageManager)方法,对ResolveInfo对象中的activity标签按首字母排序。
    Collections.sort(activities,new Comparator<ResolveInfo>(){
    	public int compare(ResolveInfo a,ResolveInfo b){
    		return String.CASE_INSENSITIVE_ORDER.compare(
    				a.loadLabel(pm).toString(),
    				b.loadLabel(pm).toString());
    	}
    });
    
    1. 启动目标Activity:
        在运行时创建显式Intent,点击任一应用label,启动对应的activity要创建启动acitivty的显式intent,需要从ResolveInfo对象中获取activity的包名和类名。这些信息从ResolveInfo对象的ActivityInfo中获取。
      (注:了解ResolveInfo类,去 developer.android.com 官网去查阅)
      可以注册列表监听器,并使用ActivityInfo对象中的数据信息,创建一个显式intent并启动目标Activity:
    ActivityInfo activityInfo=mResolveInfo.activityInfo;
    Intent i=new Intent(Intent.ACTION_MAIN)
    			.setClassName(activityInfo.applicationInfo.packageName,activityInfo.name);
    startActivity(i);
    

    上述代码中,发送了ACTION_MAIN操作,发送的intent是否包含操作,对于大多数应用来说没什么差别。不过有些应用的启动行为可能会有所不同。取决于不同的启动要求,同样的activity可能会显示不同的用户界面。我们应该最好能明确启动意图,以便让activity完成它该完成的任务。
      上面的代码中还使用了这个方法:

    public Intent setClassName(String packageName,String className)

    这是使用包名和类名创建显式intent时采用的Intent方法。这个平常创建显式intent的方式有点不同。通常,我们使用的是接受Context和Class对象的Intent构造方法:

    public Intent(Context packageContext,Class<?>cls)

    该构造方法使用传入的参数来获取Intent需要的ComponentName。ComponentName由包名和类名共同组成。传入Activity和Class创建Intent时,构造方法会通过Activity类自行确定全路径包名。也可自己通过包名和类名创建ComponentName,然后使用下面的 Intent方法创建显式Intent:

    public Intent setComponent(ComponentName component)
    

    但是,setClassName()能够自动创建组件名。用它可以简化代码。

    经过这几个步骤,就可以使用自定义的APP来启动你本机上的一些应用了。

    最终结果:

    在这里插入图片描述


    三. 分离任务:

    在app运行时,android使用任务来跟踪用户的状态。通过android默认启动应用打开的应用都有自己的任务。然而,这不适用于上面代码中创建的APP。即上述代码中创建的APP打开手机上的应用,然后按任务列表按钮,会发现只有android默认启动应用app的任务图标,而没有目标app的任务,而目标任务的视图却在android默认启动应用app的任务视图中。要想让目标app独立出自己的任务,需要明白:任务和回退栈

    • 任务和回退栈:
      任务是一个acitivty栈。栈底部的activity通常称为基activity。栈顶的activitiy是用户能够看到的。如果按后退键,栈顶的activiity会弹出栈外。如果用户看到的是基activity,按后退键,系统就会回到主屏幕。
      默认情况下,新的activity都是在当前任务中启动的。在android默认启动应用app中,无论何时启动新activity,它都会被添加到当前任务中。即使要启动的activity不属于本应用(在本app中打开第三方app),它也同样在当前任务中启动。
      在当前任务中启动activity的好处是:用户可以在任务内而不是在应用层级间导航返回。

    • 在任务间切换:
      在不影响各个任务状态的情况下,最近任务列表按钮(home键旁边的那个建)可以让我们在任务间切换。例如在加入联系人信息,然后转到抖音去看视频,这时就启动了2个任务。如果再回到联系人应用,我们在2个任务中所处的操作状态都会被保存下来。

    • 启动新任务:
      有时需要在当前任务中启动activity,有时又需要在新任务中启动activity。
      当前,android默认启动应用app启动的任何activity都会被添加到本应用的任务中。即打开最近任务列表按钮可以看到目标actiivty视图显示在本应用的视图中。
      现在, 我们需要在新任务中启动activity,如下图效果:
      在这里插入图片描述

    这样点击启动器中的应用就可以让应用拥有自己的任务,用户可以在运行的应用间自由切换了。
    为了在启动新activity时启动新任务,需要为intent添加一个标志:

    Intent i=new Intent(xxx)
    			.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    

    然后运行程序,就能看见如上面效果图的显示效果了。目标应用处于了一个单独的任务中,如果从启动器应用中再次启动目标应用,也不会创建第二个相同的目标任务。FLAG_ACTIVITY_NEW_TASK标志控制每个activity仅仅创建一个任务。


    四. 使用自定义的APP应用作为设备主屏幕:

    试想你是用户,你会愿意专门下载一个APP来每次启动你手机上的应用吗?肯定不会啊,浪费内存。

    因此,以替换Android主界面的方式使用我们自定义的APP应用会更加合适一些。
    实现操作只需要修改清单文件,但是不同机型的限制,此方法不一定能成功,和真机设备有关。

    • 步骤:
      打开项目的AndroidManifest,xml,向Intent主过滤器中添加节点定义:
      注:一个intent-filter中只允许存在一个action,但允许存在多个category.
    <intent-filter>
    	<action android:name="android.intent.action.MAIN"/>
    	<category android:name="android.intent.category.LAUNCHER"/>
    	<category android:name="android.intent.category.HOME"/>
    	<category android.name="android.intent.category.DEFAULT"/>
    </intent-filter>
    

    添加完HOME和DEAFULT类别定义后,应用的activity会成为可选的主界面。按主屏幕键会弹出对话框,本应用成了主界面的可选项。

      清除该设置,可以在手机上的”设置-》应用-》本应用名-》清除默认按钮“。


    补充:

    光有每个应用activity的名字还不够,我们还可以使用ResolveInfo.loadIcon() 来为每个应用加载显示图标


    扩展:关于WPS软件中的并发打开(多开效果)

    • 效果图:
      在这里插入图片描述
    • 原理:并发文档。
      所打开的多个wps中的pdf文档,这些文档不会被添加到WPS应用任务中,而是添加到它自己的独立任务中。对于以android.intent.action.SEND或者action.intent.action.SEND_MULTIPLE启动的actiivty,隐式intent选择器会创建独立的新任务。
      这种现象就是并发文档(concurrent document)。有了并发文档就可以 为运行的应用动态创建任意数目的任务。
      比如WPS可以同时打开并编辑多份文档,这些文档编辑activity都处在独立的任务中。

    要i想应用启动多个任务,可采用如下2种方式:

    1. 给Intent加上Intent.FLAG_ACTIVITY_NEW_DOCUMENT标签,再调用startActivity()方法。
    2. 在清单文件中,为activity设置如下documentLaunchMode:
    <activity
    	android:name="xxxx"
    	android:documentLaunchMode="intoExisting"/>
    

    使用上述的方法后,一份文档只对应一个任务。如果发送带有和已存在任务相同数据的intent,系统就不会再创建新任务。如果无论如何都i想创建新任务,就给intent同时加上Intent.FLAG_ACTIVITY_NEW_DOCUMENT、Intent,FLAG_ACITVITY_MULTIPLE_TASK标签,或者在清单文件中的documentLaunchMode的属性值改为always.

    展开全文
  • 气动阀门定位器工作原理

    千次阅读 2020-08-01 11:23:05
    气动阀门定位介绍 气动阀门是利用压缩空气进入气动执行...气动阀门定位器工作原理 气动阀门定位是一种将电气信号转换成压力信号的转换装置,以压缩空气或氮气为工作气源来控制工业炉调节阀的开度大小。普遍用于工

    气动阀门定位器介绍

    气动阀门是利用压缩空气进入气动执行器带动活塞运动,旋转或升降扭轴带动阀杆驱动的一种气动控制阀门。气动阀门分为单作用、双作用、智能调节型三种,单作用气动执行器内有弹簧推动活塞结构,有两种原理敞开和常闭式,既为气开或气关,无气体进入时由弹簧推动活塞关闭阀门,此原理为常闭式。当气体进入气缸时阀门关闭,断气时由弹簧带活塞阀门打开,吃结构为敞开式。

    气动阀门定位器工作原理
    气动阀门定位器是一种将电气信号转换成压力信号的转换装置,以压缩空气或氮气为工作气源来控制工业炉调节阀的开度大小。普遍用于工业炉温度自动控制系统中对气动阀门执行机构的连续控制。气动阀门定位器是按力平衡原理工作的,实现由输入的4~20mA电流信号控制气动阀门由0~100%的开启度。其工作原理如下图。


    当需要增加阀门开启度,计算机控制系统的输出电流信号就会上升,力矩马达①产生电磁场,挡板②受电磁场力远离喷嘴③。喷嘴③和挡板②间距变大,排出放大器④内部的线轴⑤上方气压。受其影响线轴⑤向右边移动,推动挡住底座⑦ 的阀芯⑨ ,气压通过底座⑦输入到执行机构⑩ 。随着执行机构气室⑩ 内部压力增加,执行机构推杆⑥下降,通过反馈杆⑩把执行机构推杆@的位移变化传达到滑板⑩。这个位移变化又传达到量程④反馈杆,拉动量程弹簧16。当量程弹簧16和力矩马达① 的力保持平衡时,挡板② 回到原位,减小与喷嘴③ 间距。随着通过喷嘴③排出空气量的减小,线轴⑤上方气压增加。线轴⑤回到原位,阀芯⑧重新堵住底座⑦ ,停止气压输入到执行机构⑩。当执行机构⑩的运动停止时,定位器保持稳定状态。

    气动阀门定位器的作用
    (1) 消除执行器薄膜和弹簧的不稳定性及各可动部分的干摩 擦影响,提高调节阀的精确度和可靠性,实现准确定位。
    (2) 增大执行器的输出功率,减小调节信号的传递滞后,加 快阀杆移动速度。
    (3) 改变调节阀的流量特性。

    气动阀门定位器应用

    (1)组成分程控制系统,实现多个阀门的并联使用。阀门定位器不是任何情况下都能采用的。阀门定位器在传统热系统、一些大容积的气体压力和液位等慢过程能改善控制质量;而在液体流量和压力这种快速控制过程中阀门定位器会对控制质量产生副作用。(2)能够提高系统控制精度,如高压或高、低温调节阀。举例来说,在液位、温度和成份等参数的缓慢控制过程中,需要提高调节阀的响应速度,如阀前压力P1&gt;10MPa,前后压降△p&gt;1 MPa或者D&gt;100 mm双座阀,D&gt;25 mm单座阀等,这些都需要需要增加执行机构输出力和切断力。除此外,阀门定位器可以克服服阀杆摩擦力,能控制固结的工艺流体或者易于在阀门零件挂胶的调节阀。

     

    展开全文
  • springboot启动原理分析

    千次阅读 2020-10-16 10:29:22
    文章目录一、 前言二、 @SpringBootApplication原理解析1. @SpringBootApplication组合注解剖析2. @SpringBootConfiguration3. @ComponentScan4. @EnableAutoConfiguration 一、 前言 我们启动一个springboot项目,...
  • 天然气泄漏报警器工作原理是什么

    千次阅读 2021-03-15 15:11:20
    天然气就是可燃气体,常见的燃气包括液化石油气、 人工煤气、天然气。随着燃气的广泛应用,由于...天然气泄漏报警器工作原理: 天然燃气泄漏报警的主要核心部件主要是传感器,燃气传感器一般运用催化燃烧式原理
  • windows系统的启动工作原理

    千次阅读 2018-06-07 14:24:05
    下面就是windows系统的工作原理 一、Windows系统的启动过程 预了解Windows系统的工作原理,我们先从Windows的启动过程来讲解。同样,我们还是以windows XP为例。首先,从我们按下计算机电源开关,到正式登入到桌面...
  • 逆变工作原理

    千次阅读 2019-05-03 15:20:53
    对Inverter的工作原理进行简要介绍:  Inverter是一种直流到交流(DC to AC)的变压器,顾名思义是逆向变压,它其实与电源适配器Adapter相比是一种电压逆变的过程。电源适配器是将市电电网的220V交流电压转变为...
  • 变频(Inverter,原意为逆变)是应用变频技术与微电子技术,通过改变电机工作电源频率方式(变频)来控制交流电动机的电力控制设备。一般逆变是把直流电源逆变为一定的固定频率和一定电压的逆变电源;对于逆变...
  • SpringBoot工作原理

    千次阅读 2019-11-25 10:39:31
    1.首先我们要从我们的启动类开始,我们发现启动类里有两个需要注意的地方 2.了解@SpringBootApplication 这里重点的注解有三个: @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan 3.@...
  • Springboot启动配置原理

    万次阅读 2019-08-26 17:52:35
    一、启动原理 1.main方法是入口,传入主配置类和args 2.进入springbootApplicati的run方法:先创建SpringAppcition对象,再执行run方法 3.如何创建对象 3.1 先把主对象保存 3.2 再判断是不是web应用 ...
  • 3分钟了解伺服驱动工作原理

    万次阅读 多人点赞 2018-07-04 17:58:20
    伺服驱动简单地说:是用来控制伺服电机的一种控制...下面本文就为大家介绍一下伺服驱动工作原理。 伺服驱动均采用数字信号处理器(DSP)作为控制核心,可以实现比较复杂的控制算法,实现数字化、网络化和智...
  • 线程池工作原理

    千次阅读 2021-03-25 18:07:11
    Java线程池的工作原理为:JVM先根据用户给定的参数创建一定数量的可运行的线程任务,并将其放入队列中,在线程创建后启动这些任务,如果正在运行的线程数量超过了最大线程数量(用户设置的线程池大小),则超出数量的...
  • python解释工作原理

    万次阅读 多人点赞 2018-08-09 11:59:31
    python解释工作原理 我们编写代码时会得到一个.py结尾的文件,要想运行执行此文件就需要python解释。 python解释的构成及其各部分功能 解释由一个编译器和一个虚拟机构成,编译器负责将源代码转换成字节...
  • 安全认证框架Shiro (二)- shiro过滤器工作原理

    万次阅读 多人点赞 2017-11-15 17:27:48
    安全认证框架Shiro (二)- shiro过滤器工作原理 安全认证框架Shiro 二- shiro过滤器工作原理 第一前言 第二ShiroFilterFactoryBean入口 第三请求到来解析过程 第四过滤执行原理 第五总结第一:前言由于工作原因,...
  • Spring Security 工作原理概览

    万次阅读 多人点赞 2019-04-27 08:02:58
    上面代码展示如何在过滤链中插入自己的过滤,addFilterBefore 加在对应的过滤之前,addFilterAfter 加在对应的过滤之后,addFilterAt 加在过滤同一位置,事实上框架原有的 Filter 在启动 HttpSecurity ...
  • 电动车结构及其工作原理

    万次阅读 多人点赞 2018-12-06 18:03:10
    电动车结构及其工作原理电动车定义电动车结构电源系统电力驱动系统整车控制辅助系统 转自:汽车维修技术网 电动车定义 纯电动汽车是完全由可充电电池(如铅酸电池、镍镉电池、镍氢电池或锂电子电池)提供动力源...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 425,232
精华内容 170,092
关键字:

启动器工作原理