电机选型问题
电机选型问题?伺服电机的选型要知道的28个问题! 摸索清楚下面的问题,自然对于电机的选型也就不会有太大的问题了。电机选型计算公式: 功率的基本公式是: P=FV(F为力:牛顿,V:速度,m/S) 如果把它换算到电机则有: P=F*(2πN/60)*R (N:电机速度(单位:RPM=转/分钟), R:旋转半径) =F*R*(2πN/60) 因为T=FR 所以P=T*N/(60/2π)=TN/9.55(P:单位为瓦) 用千瓦表示则有:P=TN/9.55*1000=TN/9550(单位:千瓦) 1、如何正确选择伺服电机和步进电机? 主要视具体应用情况而定,简单地说要确定:负载的性质(如水平还是垂直负载等),转矩、惯量、转速、精度、加减速等要求,上位控制要求(如对端口界面和通讯方面的要求),主要控制方式是位置、转矩还是速度方式。供电电源是直流还是交流电源,或电池供电,电压范围。据此以确定电机和配用驱动器或控制器的型号。 2、选择步进电机还是伺服电机系统? 各有其特点,根据具体应用情况而定。 3、如何配用步进电机驱动器? 根据电机的电流,配用大于或等于此电流的驱动器。如果需要低振动或高精度时,可配用细分型驱动器。对于大转矩电机,尽可能用高电压型驱动器,以获得良好的高速性能。 4、2相和5相步进电机有何区别如何选择? 2相电机成本低,但在低速时的震动较大,高速时的力矩下降快。5相电机则振动较小,高速性能好,比2相电机的速度高30~50%,可在部分场合取代伺服电机。 5、何时选用直流伺服系统,它和交流伺服有何区别? 直流伺服电机分为有刷和无刷电机。有刷电机成本低,结构简单,启动转矩大,调速范围宽,控制容易,需要维护,但维护方便(换碳刷),产生电磁干扰,对环境有要求。因此它可以用于对成本敏感的普通工业和民用场合。 无刷电机体积小,重量轻,出力大,响应快,速度高,惯量小,转动平滑,力矩稳定。控制复杂,容易实现智能化,其电子换相方式灵活,可以方波换相或正弦波换相。电机免维护,效率很高,运行温度低,电磁辐射很小,长寿命,可用于各种环境。 交流伺服电机也是无刷电机,分为同步和异步电机,目前运动控制中一般都用同步电机,它的功率范围大,可以做到很大的功率。大惯量,最高转动速度低,且随着功率增大而快速降低。因而适合做低速平稳运行的应用。 6、使用电机时要注意的问题? 上电运行前要作如下检查: 1) 电源电压是否合适(过压很可能造成驱动模块的损坏);对于直流输入的 +/-极性一定不能接错,驱动控制器上的电机型号或电流设定值是否合适(开始时不要太大); 2) 控制信号线接牢靠,工业现场最好要考虑屏蔽问题(如采用双绞线); 3) 不要开始时就把需要接的线全接上,只连成最基本的系统,运行良好后,再逐步连接。 4) 一定要搞清楚接地方法,还是采用浮空不接。 5) 开始运行的半小时内要密切观察电机的状态,如运动是否正常,声音和温升情况,发现问题立即停机调整。 7、步进电机启动运行时,有时动一下就不动了或原地来回动,运行时有时还会失步,是什么问题? 一般要考虑以下方面作检查: 1) 电机力矩是否足够大,能否带动负载,因此我们一般推荐用户选型时要选用力矩比实际需要大50%~100%的电机,因为步进电机不能过负载运行,哪怕是瞬间,都会造成失步,严重时停转或不规则原地反复动。 2) 上位控制器来的输入走步脉冲的电流是否够大(一般要 >10mA),以使光耦稳定导通,输入的频率是否过高,导致接收不到,如果上位控制器的输出电路是CMOS电路,则也要选用CMOS输入型的驱动器。 3) 启动频率是否太高,在启动程序上是否设置了加速过程,最好从电机规定的启动频率内开始加速到设定频率,哪怕加速时间很短,否则可能就不稳定,甚至处于惰态。 4) 电机未固定好时,有时会出现此状况,则属于正常。因为,实际上此时造成了电机的强烈共振而导致进入失步状态。电机必须固定好。 5) 对于5相电机来说,相位接错,电机也不能工作。 8、想通过通讯方式直接控制伺服电机,可以吗? 可以,也比较方便,只是速度问题,用于对响应速度要求不太高的应用。如果要求快速的响应控制参数,最好用伺服运动控制卡,一般它上面有DSP和高速度的逻辑处理电路,以实现高速高精度的运动控制。如S加速、多轴插补等。 9、用开关电源给步进和直流电机系统供电好不好? 一般最好不要,特别是大力矩电机,除非选用比需要的功率大一倍以上的开关电源。因为,电机工作时是大电感型负载,会对电源端形成瞬间的高压。而开关电源的过载性能不好,会保护关断,且其精密的稳压性能又不需要,有时可能造成开关电源和驱动器的损坏。可以用常规的环形或R 型变压器变压的直流电源。 10、想用±10V或4~20mA的直流电压来控制步进电机,可以吗? 可以,但需要另外的转换模块。 11、有一个的伺服电机带编码器反馈,可否用只带测速机口的伺服驱动器控制? 可以,需要配一个编码器转测速机信号模块。 12、伺服电机的码盘部分可以拆开吗? 禁止拆开,因为码盘内的石英片很容易破裂,且进入灰尘后,寿命和精度都将无法保证,需要专业人员检修。 13、步进和伺服电机可以拆开检修或改装吗? 不要,最好让厂家去做,拆开后没有专业设备很难安装回原样,电机的转定子间的间隙无法保证。磁钢材料的性能被破坏,甚至造成失磁,电机力矩大大下降。 14、伺服控制器能够感知外部负载的变化吗? 如遇到设定阻力时停止、返回或保持一定的推力跟进。 15、可以将国产的驱动器或电机和国外优质的电机或驱动器配用吗? 原则上是可以的,但要弄清楚电机的技术参数后才能配用,否则会大大降低应有的效果,甚至影响长期运行和寿命。最好向供应商咨询后再决定。 16、使用大于额定电压值的直流电源电压驱动电机安全吗? 正常来说这不是问题,只要电机在所设定的速度和电流极限值内运行。因为电机速度与电机线电压成正比,因此选择某种电源电压不会引起过速,但可能发生驱动器等故障。 此外,必须保证电机符合驱动器的最小电感系数要求,而且还要确保所设定的电流极限值小于或等于电机的额定电流。 事实上,如果你能在你设计的装置中让电机跑地比较慢的话 ( 低于额定电压 ) ,这是很好的。 以较低的电压 ( 因此比较低的速度 ) 运行会使得电刷运转反弹较少,而且电刷 / 换向器磨损较小,比较低的电流消耗和比较长的电机寿命。 另一方面,如果电机大小和性能的要求需要额外的转矩及速度,过度驱动电机也是可以的,但会牺牲产品的使用寿命。 17、如何为应用选择适当的供电电源? 推荐选择电源电压值比最大所需的电压高10%-50% 。此百分比因Kt,Ke,以及系统内的电压降而不同。驱动器的电流值应该足够传送应用所需的能量。记住驱动器的输出电压值与供电电压不同,因此驱动器输出电流也与输入电流不相同。为确定合适的供电电流,需要计算此应用所有的功率需求,再增加5% 。按 I=P/V公式计算即可得到所需电流值。 18、对于伺服驱动器可以选择哪种工作方式? 不同的模式并不全部存在于所有型号的驱动器中。 19、驱动器和系统如何接地? a.如果在交流电源和驱动器直流总线(如变压器)之间没有隔离的话,不要将直流总线的非隔离端口或非隔离信号的地接大地,这可能会导致设备损坏和人员伤害。因为交流的公共电压并不是对大地的,在直流总线地和大地之间可能会有很高的电压。 b.在多数伺服系统中,所有的公共地和大地在信号端是接在一起的。多种连接大地方式产生的地回路很容易受噪音影响而在不同的参考点上产生流。 c.为了保持命令参考电压的恒定,要将驱动器的信号地接到控制器的信号地。它也会接到外部电源的地,这将影响到控制器和驱动器的工作(如:编码器的5V电源)。 d.屏蔽层接地是比较困难的,有几种方法。正确的屏蔽接地处是在其电路内部的参考电位点上。这个点取决于噪声源和接收是否同时接地,或者浮空。要确保屏蔽层在同一个点接地使得地电流不会流过屏蔽层。 20、减速器为什么不能和电机正好相配在标准转矩点? 如果考虑到电机产生的经过减速器的最大连续转矩,许多减速比会远远超过减速器的转矩等级。 如果我们要设计每个减速器来匹配满转矩,减速器的内部齿轮会有太多组合 ( 体积较大、材料多 ) 。这样会使得产品价格高,且违反了产品的“高性能、小体积”原则。 21、如何选择使用行星减速器还是正齿轮减速器? 行星减速器一般用于在有限的空间里需要较高的转矩时,即小体积大转矩,而且它的可靠性和寿命都比正齿轮减速器要好。正齿轮减速器则用于较低的电流消耗,低噪音和高效率低成本应用。 22、何为负载率 (duty cycle)? 负载率 (duty cycle) 是指电机在每个工作周期内的工作时间 / (工作时间 + 非工作时间)的比率。如果负载率低,就允许电机以3倍连续电流短时间运行,从而比额定连续运行时产生更大的力量。 23、标准旋转电机的驱动电路可以用于直线电机吗? 一般都是可以的。你可以把直线电机就当作旋转电机,如直线步进电机、有刷、无刷和交流直线电机。具体请向供应商咨询。 24、直线电机是否可以垂直安装,做上下运动? 可以。根据用户的要求,垂直安装时我们可以加装动子滑块平衡装置或加装导轨抱闸刹车。 25、在同一个平台上可以安装多个动子吗? 可以。只要几个动子之间不互相妨碍即可。 26、是否可以将多个无刷电机的动子线圈安装于同一个磁轨道上? 可以。只要几个动子之间不互相妨碍即可。 27、使用直线电机比滚珠丝杆的线性电机有何优点? 由于定子和动子之间没有机械连接,所以消除了背隙、磨损、卡死问题,运动更加平滑。突出了更高精度、高速度、高加速度、响应快、运动平滑、控制精度高、可靠性好体积紧凑、外形高度低、长寿命、免维护等特点。 28、如何选用电动缸、滑台、精密平台类产品?其成本是如何计算的? 选择致动执行器类产品关键要看您对运动参数有什么样的要求,可以根据您需要的应用来确定具体运动参数等技术条件,这些参数要符合您的实际需要,既要满足应用要求并留有余地,也不要提得太高,否则其成本可能会数倍于标准型产品。举例来说,如果0.1mm精度够用的话,就不要选0.01mm的参数。其它如负载能力、速度等也是如此。 另外一个给用户的选型建议是,如果不是必须,推拉力或负重、速度、定位精度这三个主要参数不要同时要求很高,因为致动执行器是一个高精度高技术的机电一体化产品,我们在设计制造时需要从机械结构、电气性能、材料特性、材质和处理方法等多方面考虑并选择相应的组成电机、驱动控制器和反馈装置,以及不同精度等级的导轨、丝杆、支撑座和其它机械系统,使之达到需要的整体运动参数,可谓牵一发动全身的产品。当然,您有高要求的产品需要,我们还是可以满足,只是成本会相应的提高。
随着时间和业务的发展,数据库中的数据量增长是不可控的,库和表中的数据会越来越大,随之带来的是更高的 磁盘 、 IO 、 系统开销 ,甚至 性能 上的瓶颈,而单台服务器的 资源终究是有限 的。
因此在面对业务扩张过程中,应用程序对数据库系统的 健壮性 , 安全性 , 扩展性 提出了更高的要求。
以下,我从数据库架构、选型与落地来让大家入门。
数据库会面临什么样的挑战呢?
业务刚开始我们只用单机数据库就够了,但随着业务增长,数据规模和用户规模上升,这个时候数据库会面临IO瓶颈、存储瓶颈、可用性、安全性问题。
为了解决上述的各种问题,数据库衍生了出不同的架构来解决不同的场景需求。
将数据库的写操作和读操作分离,主库接收写请求,使用多个从库副本负责读请求,从库和主库同步更新数据保持数据一致性,从库可以水平扩展,用于面对读请求的增加。
这个模式也就是常说的读写分离,针对的是小规模数据,而且存在大量读操作的场景。
因为主从的数据是相同的,一旦主库宕机的时候,从库可以 切换为主库提供写入 ,所以这个架构也可以提高数据库系统的 安全性 和 可用性 ;
优点:
缺点:
在数据库遇到 IO瓶颈 过程中,如果IO集中在某一块的业务中,这个时候可以考虑的就是垂直分库,将热点业务拆分出去,避免由 热点业务 的 密集IO请求 影响了其他正常业务,所以垂直分库也叫 业务分库 。
优点:
缺点:
在数据库遇到存储瓶颈的时候,由于数据量过大造成索引性能下降。
这个时候可以考虑将数据做水平拆分,针对数据量巨大的单张表,按照某种规则,切分到多张表里面去。
但是这些表还是在同一个库中,所以库级别的数据库操作还是有IO瓶颈(单个服务器的IO有上限)。
所以水平分表主要还是针对 数据量较大 ,整体业务 请求量较低 的场景。
优点:
缺点:
四、分库分表
在数据库遇到存储瓶颈和IO瓶颈的时候,数据量过大造成索引性能下降,加上同一时间需要处理大规模的业务请求,这个时候单库的IO上限会限制处理效率。
所以需要将单张表的数据切分到多个服务器上去,每个服务器具有相应的库与表,只是表中数据集合不同。
分库分表能够有效地缓解单机和单库的 性能瓶颈和压力 ,突破IO、连接数、硬件资源等的瓶颈。
优点:
缺点:
注:分库还是分表核心关键是有没有IO瓶颈 。
分片方式都有什么呢?
RANGE(范围分片)
将业务表中的某个 关键字段排序 后,按照顺序从0到10000一个表,10001到20000一个表。最常见的就是 按照时间切分 (月表、年表)。
比如将6个月前,甚至一年前的数据切出去放到另外的一张表,因为随着时间流逝,这些表的数据被查询的概率变小,银行的交易记录多数是采用这种方式。
优点:
缺点:
HASH(哈希分片)
将订单作为主表,然后将其相关的业务表作为附表,取用户id然后 hash取模 ,分配到不同的数据表或者数据库上。
优点:
缺点:
讲到这里,我们已经知道数据库有哪些架构,解决的是哪些问题,因此, 我们在日常设计中需要根据数据的特点,数据的倾向性,数据的安全性等来选择不同的架构 。
那么,我们应该如何选择数据库架构呢?
虽然把上面的架构全部组合在一起可以形成一个强大的高可用,高负载的数据库系统,但是架构选择合适才是最重要的。
混合架构虽然能够解决所有的场景的问题,但是也会面临更多的挑战,你以为的完美架构,背后其实有着更多的坑。
1、对事务支持
分库分表后(无论是垂直还是水平拆分),就成了分布式事务了,如果依赖数据库本身的分布式事务管理功能去执行事务,将付出高昂的性能代价(XA事务);如果由应用程序去协助控制,形成程序逻辑上的事务,又会造成编程方面的负担(TCC、SAGA)。
2、多库结果集合并 (group by,order by)
由于数据分布于不同的数据库中,无法直接对其做分页、分组、排序等操作,一般应对这种多库结果集合并的查询业务都需要采用数据清洗、同步等其他手段处理(TIDB、KUDU等)。
3、数据延迟
主从架构下的多副本机制和水平分库后的聚合库都会存在主数据和副本数据之间的延迟问题。
4、跨库join
分库分表后表之间的关联操作将受到限制,我们无法join位于不同分库的表(垂直),也无法join分表粒度不同的表(水平), 结果原本一次查询就能够完成的业务,可能需要多次查询才能完成。
5、分片扩容
水平分片之后,一旦需要做扩容时。需要将对应的数据做一次迁移,成本代价都极高的。
6、ID生成
分库分表后由于数据库独立,原有的基于数据库自增ID将无法再使用,这个时候需要采用其他外部的ID生成方案。
一、应用层依赖类(JDBC)
这类分库分表中间件的特点就是和应用强耦合,需要应用显示依赖相应的jar包(以Java为例),比如知名的TDDL、当当开源的 sharding-jdbc 、蘑菇街的TSharding等。
此类中间件的基本思路就是重新实现JDBC的API,通过重新实现 DataSource 、 PrepareStatement 等操作数据库的接口,让应用层在 基本 不改变业务代码的情况下透明地实现分库分表的能力。
中间件给上层应用提供熟悉的JDBC API,内部通过 sql解析 、 sql重写 、 sql路由 等一系列的准备工作获取真正可执行的sql,然后底层再按照传统的方法(比如数据库连接池)获取物理连接来执行sql,最后把数据 结果合并 处理成ResultSet返回给应用层。
优点
缺点
二、中间层代理类(Proxy)
这类分库分表中间件的核心原理是在应用和数据库的连接之间搭起一个 代理层 ,上层应用以 标准的MySQL协议 来连接代理层,然后代理层负责 转发请求 到底层的MySQL物理实例,这种方式对应用只有一个要求,就是只要用MySQL协议来通信即可。
所以用MySQL Navicat这种纯的客户端都可以直接连接你的分布式数据库,自然也天然 支持所有的编程语言 。
在技术实现上除了和应用层依赖类中间件基本相似外,代理类的分库分表产品必须实现标准的MySQL协议,某种意义上讲数据库代理层转发的就是MySQL协议请求,就像Nginx转发的是Http协议请求。
比较有代表性的产品有开创性质的Amoeba、阿里开源的Cobar、社区发展比较好的 Mycat (基于Cobar开发)等。
优点
缺点
JDBC方案 :无中心化架构,兼容市面上大多数关系型数据库,适用于开发高性能的轻量级 OLTP 应用(面向前台)。
Proxy方案 :提供静态入口以及异构语言的支持,适用于 OLAP 应用(面向后台)以及对分片数据库进行管理和运维的场景。
混合方案 :在大型复杂系统中存在面向C端用户的前台应用,也有面向企业分析的后台应用,这个时候就可以采用混合模式。
JDBC 采用无中心化架构,适用于 Java 开发的高性能的轻量级 OLTP 应用;Proxy 提供静态入口以及异构语言的支持,适用于 OLAP 应用以及对分片数据库进行管理和运维的场景。
ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由 Sharding-JDBC 、 Sharding-Proxy 和 Sharding-Sidecar (计划中)这3款相互独立的产品组成,他们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如Java同构、异构语言、容器、云原生等各种多样化的应用场景。
ShardingSphere提供的核心功能:
Sharding-Proxy
定位为透明化的 数据库代理端 ,提供封装了 数据库二进制协议的服务端版本 ,用于完成对 异构语言的支持 。
目前已提供MySQL版本,它可以使用 任何兼容MySQL协议的访问客户端 (如:MySQL Command Client, MySQL Workbench, Navicat等)操作数据,对DBA更加友好。
向 应用程序完全透明 ,可直接当做MySQL使用。
适用于任何兼容MySQL协议的客户端。
Sharding-JDBC
定位为 轻量级Java框架 ,在Java的JDBC层提供的额外服务。 它使用客户端直连数据库,以jar包形式提供服务,无需额外部署和依赖,可理解为 增强版的JDBC驱动,完全兼容JDBC和各种ORM框架 。
以电商SaaS系统为例,前台应用采用Sharding-JDBC,根据业务场景的差异主要分为三种方案。
分库(用户)
问题解析:头部企业日活高并发高,单独分库避免干扰其他企业用户,用户数据的增长缓慢可以不分表。
拆分维度:企业ID分库
拆分策略:头部企业单独库、非头部企业一个库
分库分表(订单)
问题解析:订单数据增长速度较快,在分库之余需要分表。
拆分维度:企业ID分库、用户ID分表
拆分策略:头部企业单独库、非头部企业一个库,分库之后用户ID取模拆分表
单库分表(附件)
问题解析:附件数据特点是并发量不大,只需要解决数据增长问题,所以单库IO足以支撑的情况下分表即可。
拆分维度:用户ID分表
拆分策略:用户ID取模分表
问题一:分布式事务
分布式事务过于复杂也是分布式系统最难处理的问题,由于篇幅有限,后续会开篇专讲这一块内容。
问题二:分布式ID
问题三:跨片查询
举个例子,以用户id分片之后,需要根据企业id查询企业所有用户信息。
sharding针对跨片查询也是能够支持的,本质上sharding的跨片查询是采用同时查询多个分片的数据,然后聚合结果返回,这个方式对资源耗费比较大,特别是对数据库连接资源的消耗。
假设分4个数据库,8个表,则sharding会同时发出32个SQL去查询。一下子消耗掉了32个连接;
特别是针对单库分表的情况要注意,假设单库分64个表,则要消耗64个连接。如果我们部署了2个节点,这个时候两个节点同时查询的话,就会遇到数据库连接数上限问题(mysql默认100连接数)
问题四:分片扩容
随着数据增长,每个片区的数据也会达到瓶颈,这个时候需要将原有的分片数量进行增加。由于增加了片区,原先的hash规则也跟着变化,造成了需要将旧数据做迁移。
假设原先1个亿的数据,hash分64个表,现在增长到50亿的数据,需要扩容到128个表,一旦扩容就需要将这50亿的数据做一次迁移,迁移成本是无法想象的。
问题五:一致性哈希
首先,求出每个 服务器的hash值 ,将其配置到一个 0~2^n 的圆环上 (n通常取32)
其次,用同样的方法求出待 存储对象的主键 hash值 ,也将其配置到这个圆环上。
然后,从数据映射到的位置开始顺时针查找,将数据分布到找到的第一个服务器节点上。
一致性hash的优点在于加入和删除节点时只会影响到在哈希环中相邻的节点,而对其他节点没有影响。
所以使用一致性哈希在集群扩容过程中可以减少数据的迁移。
好了,这次分享到这里,我们日常的实践可能只会用到其中一种方案,但它不是数据库架构的全貌,打开技术视野,才能更好地把存储工具利用起来。
老规矩,一键三连,日入两千,点赞在看,年薪百万!
本文作者:Jensen
7年Java老兵,小米主题设计师,手机输入法设计师,ProcessOn特邀讲师。
曾涉猎航空、电信、IoT、垂直电商产品研发,现就职于某知名电商企业。
技术公众号 架构师修行录 号主,专注于分享日常架构、技术、职场干货,Java Goals:架构师。
交个朋友,一起成长!
鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com
图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!