分享好友 天南地北首页 网站导航

8码推杆的技术标准是什么

网友发布 2023-07-30 14:57 · 头闻号仪器机械

电动推杆技术要求电动推杆应符合规定的技术标准要求,并按规定程序批准的图样及技术文件制造。1、工作条件:1。1 环境温度范围:-15℃~50℃。1。2 环境相对湿度不大于90%。2、基本技术参数 :2。1 推杆额定功率应不大于100W。2.2 推杆额定电流应不大于10A。2.3 控制器输入电压为AC220V±10%,频率为50Hz或AC110V±10%,频率为60Hz.3、形状与尺寸:3.1 外观结构尺寸应符合图纸要求。3.2 推杆安装距误差小于±2mm.3.3 推杆的行程误差小于±2mm.4、外观及装配要求:4。1 推杆及控制器表面清洁,无锈蚀、无脱落、无碰伤。4.2 推杆、控制器及零部件装配连接牢固、可靠.4.3 推杆运行平稳、无阻尼,无杂音现象.4。4 零件表面镀(涂)层光滑,色泽均匀,不应有脱落、划伤及氧化等缺陷.4。5 塑料件表面平整,色泽一致,不应有裂痕、气泡和明显熔接痕、缩孔等缺陷.5、性能要求:5。1 机械性能:5.1.1 推杆静态阻尼(自锁力)应符合规定。5.1。2 额定电压下,推杆负载应符合推拉力的规定。5。1。3 推杆承受1.5倍负载最大拉力试验,壳体不应有破裂现象。5.2 空载电流:在额定电压下,推杆运行空载电流应小于0.5A。5.3 噪声:推杆在空载运行时噪声应不大于50dB(A).5。4 绝缘电阻:控制系统输入端与机壳间的绝缘电阻,在热态时不低于5MΩ,常态时不低于100MΩ.5.5 电介强度:电介强度应符合GB 9706。1中20.3的规定。5.6 非正常工作:推杆在运行过程中,当负载大于规定推拉力时,控制系统自动停止运行。5.7 控制器要求:5。7。1 控制器所用的电源变压器应符合GB 9706.1中57.9的规定。5.7.2 推杆及控制器的元器件爬电距离和电气间隙应符合GB 9706.1中57。10的规定。

5.7。3 操作器控制各推杆,应运行正常,无失灵现象.5。7。4 控制盒蓄电池充电后,待机30天,仍能正常工作;当蓄电池电压过低时,应能自动报警。5。7。5 具有记忆功能的控制系统,当设定行程参数后,控制系统应能正常运行。5。8 温升:在最高环境温度下,推杆、控制器按短时工作制负载运行,直至热平衡,其温升应不大于80℃。5.9 电源软电线:电源软电线应符合GB 9706。1中57。3的规定。5。10引线强度:引线强度应符合GB 9706。1中57.4 a)的规定。5。11 耐振动:产品经振动试验后,应能正常工作,无松动现象,其电介强度满足GB 9706.1中20.3的规定要求。5.12 耐高温:产品经耐高温试验后,应能正常工作,其电介强度满GB 9706.1中20.3的规定要求.5。13 耐低温:产品经耐低温试验后,应能正常工作,其电介强度满足GB 9706.1中20.3的规定要求。5.14 耐湿热:控制系统经48h湿热试验,其电介强度满足GB 9706。1中20.3的规定要求.5.15 电机堵转:电机堵转应符合GB 9706.1中52.5。6的规定。5.16 电磁兼容性:产品电磁兼容性应符合GB 4343。1中的规定。5。17 寿命:推杆按最大负载,在正常运行20000次后,产品噪声不大于规定值的1.2倍,行程精度误差±3mm,推拉力符合规定要求。5。18 多联动精度要求:多台推杆同步运行至设定位置时,推杆间行程误差不大于2mm。规范性引用文件:上列文件中的条款通过引用的标准。GB 191 包装储运图示标志GB/T 2423.3 电工电子产品基本环境试验规程 试验Ca:恒定湿热试验方法GB 4343。1 电磁兼容 家用电器、电动工具和类似器具的要求 第一部分:发射GB 4798.1 电工电子产品应用环境条件贮存GB 4798.2 电工电子产品应用环境条件运输

GB 9706。1 医用电气设备第一部分:安全通用要求GB 10069 旋转电机噪声测定方法及限值GB 12665 电机在一般环境条件下使用的湿热试验要求

5

百度文库VIP限时优惠现在开通,立享6亿+VIP内容

立即获取

(完整版)电动推杆技术要求

MTXX2课堂

电动推杆技术要求

电动推杆应符合规定的技术标准要求,并按规定程序批准的图样及技术文件制造。

1、工作条件:

1。1 环境温度范围:-15℃~50℃。

1。2 环境相对湿度不大于90%。

2、基本技术参数 :

2。1 推杆额定功率应不大于100W。

2.2 推杆额定电流应不大于10A。

2.3 控制器输入电压为AC220V±10%,频率为50Hz或AC110V±10%,频率为60Hz

android系统摁下电源键后会让系统进入休眠以达到节电的目的。内核驱动中和休眠相关的就是suspend和resume函数。

suspend函数用于休眠,resume函数用于唤醒。下面分析驱动中的这两个函数是如何被调用到的。

驱动部分:

首先需要分析驱动的注册过程,较新的内核都是采用DTS方式来取代在内核中直接定义platform_device数据结构的注册方式,本文是基于DTS机制的内核来分析。

product对应的dts文件在编译时被编译为dtb文件,uboot在启动时候会将其地址传给内核,内核在启动过程中会去解析,具体解析是在start_kernel()->setup_arch() --> unflatten_device_tree()中具体分析可以参考网上,解析的最终结果会存放在allnodes地址处,这个allnodes随后在machine的init函数

中被使用,init函数中会根据allnodes中的节点数据组合成platform_device数据结构,然后将其注册到platform总线上,下面简要分析一下并重点关注这些初始化过程中和

pm相关的初始化。

我参与的项目中machine的init函数就是via_init_machine函数,在这个函数中就是调用了of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL)这个函数来解析allnodes的。of_platform_populate是系统提供的接口。下面分析这个接口的实现:

[html] view plain copy

int of_platform_populate(struct device_node *root,

const struct of_device_id *matches,

const struct of_dev_auxdata *lookup,

struct device *parent)

{

struct device_node *child;

int rc = 0;

root = root ? of_node_get(root) : of_find_node_by_path("/");

if (!root)

return -EINVAL;

for_each_child_of_node(root, child) {

rc = of_platform_bus_create(child, matches, lookup, parent, true);

if (rc)

break;

}

of_node_put(root);

return rc;

}

root最后就是取到的根节点,然后其作为参数传递给of_platform_bus_create,of_platform_device_create_pdata的实现如下:

[html] view plain copy

static int of_platform_bus_create(struct device_node *bus,

const struct of_device_id *matches,

const struct of_dev_auxdata *lookup,

struct device *parent, bool strict)

{

const struct of_dev_auxdata *auxdata;

struct device_node *child;

struct platform_device *dev;

const char *bus_id = NULL;

void *platform_data = NULL;

int rc = 0;

if (strict && (!of_get_property(bus, "compatible", NULL))) {

pr_debug("%s() - skipping %s, no compatible propn",

__func__, bus->full_name);

return 0;

}

auxdata = of_dev_lookup(lookup, bus);

if (auxdata) {

bus_id = auxdata->name;

platform_data = auxdata->platform_data;

}

if (of_device_is_compatible(bus, "arm,primecell")) {

of_amba_device_create(bus, bus_id, platform_data, parent);

return 0;

}

dev = of_platform_device_create_pdata(bus, bus_id, platform_data, parent);

if (!dev || !of_match_node(matches, bus))

return 0;

for_each_child_of_node(bus, child) {

pr_debug(" create child: %sn", child->full_name);

rc = of_platform_bus_create(child, matches, lookup, &dev->dev, strict);

if (rc) {

of_node_put(child);

break;

}

}

return rc;

}

根据传入参数,我们这里直接分析of_platform_device_create_padate函数,如下:

[html] view plain copy

struct platform_device *of_platform_device_create_pdata(

struct device_node *np,

const char *bus_id,

void *platform_data,

struct device *parent)

{

struct platform_device *dev;

if (!of_device_is_available(np))

return NULL;

dev = of_device_alloc(np, bus_id, parent);

if (!dev)

return NULL;

#if defined(CONFIG_MICROBLAZE)

dev->archdata.dma_mask = 0xffffffffUL;

#endif

dev->dev.coherent_dma_mask = DMA_BIT_MASK(32);

dev->dev.bus = &platform_bus_type;

dev->dev.platform_data = platform_data;

if (of_device_add(dev) != 0) {

platform_device_put(dev);

return NULL;

}

return dev;

}

of_platform_device_create_padate->of_device_alloc->platform_device_alloc

便在platform_device_alloc函数中进行进行alloc和初始化了,实现如下:

[html] view plain copy

struct platform_device *platform_device_alloc(const char *name, int id)

{

struct platform_object *pa;

pa = kzalloc(sizeof(struct platform_object) + strlen(name), GFP_KERNEL);

if (pa) {

strcpy(pa->name, name);

pa->pdev.name = pa->name;

pa->pdev.id = id;

device_initialize(&pa->pdev.dev);

pa->pdev.dev.release = platform_device_release;

arch_setup_pdev_archdata(&pa->pdev);

}

return pa ? &pa->pdev : NULL;

}

可以看到有个device_initialize,这里面对pdev.dev做一些列的初始化,其中有一个函数就是device_pm_init,这个函数就是我们一直关心的device相关的pm函数,具体实现如下:

[html] view plain copy

void device_pm_init(struct device *dev)

{

dev->power.is_prepared = false;

dev->power.is_suspended = false;

init_completion(&dev->power.completion);

complete_all(&dev->power.completion);

dev->power.wakeup = NULL;

spin_lock_init(&dev->power.lock);

pm_runtime_init(dev);

INIT_LIST_HEAD(&dev->power.entry);

dev->power.power_state = PMSG_INVALID;

}

可以看见它对device和功耗相关的数据做了一些初始化,我们这里先重点关注下dev->power.entry,初始化一个链表头,所以他/它很有可能会在后面加到某个链表里面去,而那个链表应该是用来保存所有的device用的。系统中所有的platform_device都是通过这种方式注册到系统中的,那么应该所有的platform_device都会初始化一个dev->power.entry,如果到时候把所有的dev->power.entry都添加到某个链表上去,那么系统到时候查询的时候只要找到这个list head就可以找到所有的platform_device了。嗯,不过这是我们的猜测。我们接下去分析来验证下。

platform_device通过alloc之后已经初始化好了,那么接下去就可以添加到系统中了,所以我们再回头看of_platform_device_create_pdata的实现。

函数在of_device_alloc之后把dev->dev.bus赋值给了platform_bus_type,接着就调用了of_device_add函数,在of_device_add函数中最后通过device_add添加到了bus上,但是device_add中有个函数需要我们关系,就是device_pm_add(dev),实现如下:

[html] view plain copy

void device_pm_add(struct device *dev)

{

pr_debug("PM: Adding info for %s:%sn",

dev->bus ? dev->bus->name : "No Bus", dev_name(dev));

mutex_lock(&dpm_list_mtx);

if (dev->parent && dev->parent->power.is_prepared)

dev_warn(dev, "parent %s should not be sleepingn",

dev_name(dev->parent));

list_add_tail(&dev->power.entry, &dpm_list);

dev_pm_qos_constraints_init(dev);

mutex_unlock(&dpm_list_mtx);

}

可以看到这里list_add_tail(&dev->power.entry, &dpm_list);这就验证了我们之前的猜测。所有注册到系统中的设备,最终都是会添加到dpm_list这条链表上。

那么系统在休眠的时候是如何通过dmp_list这表链表来suspend设备的呢?接下去就是我们要分析的电源管理部分内容。

系统电源部分:

电源管理相关文件在kernel/power目录下,前面已经分析到。系统中注册的设备都是会添加到dmp_list这条链表上的。那么睡眠的时候系统应该是会查找dmp_list这条链表,

然后通过这条链表依次去查到对应的driver,然后调用driver中的suspend方法。下面我们来验证。

2.在suspend会轮询bus下的driver,然后一次调用到driver->pm->suspend方法,然后进入休眠。

3.state_store->pm_suspend->enter_state->suspend_devices_and_enter->dpm_suspend_start->dpm_suspend->device_suspend->__device_suspend->pm_op->(ops->suspend)

免责声明:本平台仅供信息发布交流之途,请谨慎判断信息真伪。如遇虚假诈骗信息,请立即举报

举报
反对 0
打赏 0
更多相关文章

收藏

点赞