精华内容
下载资源
问答
  • AGV控制系统搭建

    万次阅读 多人点赞 2019-06-25 15:32:33
     本文介绍自动导引车(AGV)车载控制系统的实现过程,分为硬件搭建和软件设计两部分,并在其中穿插 AGV 控制的基础知识讲解。 1. 车载控制器 1.1 控制器的类型  车载控制器是控制系统乃至整个 AGV 的...

    目的
      本文介绍自动导引车(AGV)控制系统的实现过程,分为硬件搭建和软件设计两部分。

    20190223060542297.jpg

    1. 车载控制器

    1.1 车载控制器的类型

      车载控制器是电气控制系统乃至整个 AGV 的核心,那么车载控制器是什么呢?国家标准GBT 30030-2013《 自动导引车(AGV)术语》中定义AGV为“由计算机控制的运输工具”,所以车载控制器本质上就是一个计算机。然而计算机也可细分为好多种。根据笔者的经验,从硬件角度划分,AGV目前采用的车载控制器基本分为以下三种:

    20171107193821875
      1. PLC:代表产品如西门子公司的 S7-1200和1500系列,使用的 AGV 厂家有佳顺、嘉腾。PLC 以稳定性好、可靠性高著称,但是它的强项是逻辑控制,一般只能做简单的运动控制和数值计算,开发难度不大,但是PLC开放性差(不容易扩展自己的软件功能和硬件模块)。西门子 PLC 的价格大概在2000~14000元左右。

      2. 工控机:代表产品如倍福公司的 CX5130、CX5020,使用的厂家有昆船、新松、艾吉威、罗伯特木牛流马、成都航发。工控机本质上就是一台个人电脑,只不过经过特殊的设计使其具有很强的抗干扰能力,可以用于振动、电磁辐射等恶劣的工业环境。工控机结构紧凑、体积小巧,其可以运行通用的操作系统,比如 Windows、Linux。以倍福为例,安装它的 TwinCAT 控制软件后,会在 Windows 操作系统中插入实时内核,将电脑变成适合工业控制的实时控制系统。由于采用了通用的硬件和操作系统,工控机的灵活性好(例如新松就购买了倍福的软PLC核,硬件则使用了研华的工控机),开发难度较小。倍福工控机的价格昂贵,一般在5000~30000元左右,而且收费项目繁多,例如你用一个小的软件功能(例如TCP/IP通信)都要额外付费。
      3. 单片机:一般是基于ARM、X86等芯片或者核心板自己开发外围电路而成,这样做的厂家有海通、艾吉威、机科。PLC和工控机的价格昂贵,仅仅一个CAN总线通讯模块可能就要数千元。相比而言,单片机就低廉得多,采用最好的芯片,加上外围器件硬件成本最多也不过数百元左右。但是单片机嵌入式开发对人员的要求较高,需要一定的时间资金投入。PLC编程一般采用梯形图,而工控机可以安装软PLC采用梯形图开发也可以采用C++等高级语言开发,单片机当然也可以安装软PLC系统或者直接用C语言开发。而且你还要花费很多精力设计调试各种底层通讯程序,开发难度最大。
      上面的分类并不意味着三者是泾渭分明的,例如 PLC 的内部电路就是一个单片机;而工控机的编程语言很可能就采用了 PLC 常用的梯形图、ST等语言;单片机上面也可以装载嵌入式实时操作系统,从而形成一个强大的多任务计算机。所以,虽然它们各有自己适用的领域,但是相互之间也会取长补短,演变成你中有我我中有你的局面。
      当然,现在市场上有专门的AGV控制器,例如瑞典NDC的CVC600,瑞士BlueBotics的ANT、浙江科聪智能的 MRC5000,上海仙知机器人的SRC。与通用的工业运动控制器或PLC相比,这类控制器集成了成熟的导航和运动控制算法(例如激光定位算法、麦克纳姆轮控制算法),为用户省去很多工作,而且它们的稳定性和防护等级更高,但其价格也较高(1万~6万元)。
      有实力的AGV厂家可以自己从头研发AGV控制器,根据笔者的经验,目前AGV厂家对于简单应用会选择自己开发低端控制器,这只需要在嵌入式开发板上编编程即可。但是这样的控制器只能用于简单项目,如果用于功能多的复杂项目开发成本会很高,因为有经验的嵌入式软件和硬件工程师的工资可不低,而且AGV是个定制性比较强的行业,如果针对不同的项目每次都修改C语言代码,改造维护的成本非常高。反观PLC编程则形象易懂,PLC厂家已经完成了大部分底层程序的开发,用户只需要调用即可、不需要记忆大量的指令,熟能生巧,聪明点的高中生大专生即可掌握,养活他们的成本相对较低,因此很多厂家会选择成熟的PLC作为控制器。如果仅具备这样的开发能力,仍然满足不了高端客户的需求。因为对于复杂的项目,可能会涉及一些算法,例如激光定位、运动学、路径规划等机器人算法,这对于编程人员的要求非常高,硕士生想完全掌握都比较吃力。这些复杂的算法依靠简单拖拽梯形图是难以实现的,必须熟悉算法的每个细节才可以,对控制器的算力和灵活性自然也有较高的要求,普通的PLC(不管欧美系还是日系)开放性非常差很难实现,厂家是不可能把底层开放给你的。假设你要研发一款先进的机器人控制器,首先面对的难点是核心算法的设计,移动机器人的理论已经比较成熟,但是工程实现仍然面临不少问题。由于没有成熟方案借鉴,这需要长时间的试错;其次要实现上层软PLC的功能,因为你不能指望现场工程师都有C语言编程能力,也不能让研发人员每次陪客户修改程序,要完成PLC语言解释器设计、编程GUI的开发、处理多进程调度等更底层的技术问题,还要自己编写底层的总线通讯库函数,设计驱动程序。国产AGV厂家的研发实力较弱,很难自己独立研发这样的高端控制器,因此会选择购买国外的产品,即便是新松昆船这样有实力的厂家也是如此。在这样的背景下,国内有一些创业公司开始涉足该领域,他们一般选择在ROS这样的开源平台上搭建控制系统,为了节省成本尽量选择开源的库。也有一些厂家另辟蹊径,既然开发软件的难度很大,他们直接选择成熟的开放式软PLC,然后在它的基础上二次开发形成集成自己独有算法的“控制器”产品。

    2018091521034735 2018091521175380520181227190634235.jpg20190211174316657.jpg

    1.2 西门子 S7-1200 PLC

      笔者选择西门子的 S7-1215C 型 PLC 作为 AGV 的车载控制器(以后简称为S1200),如下图所示。由于西门子的产品型号非常丰富,各个型号在接口种类、性能等方面有细微的差别,在购买时为了准确描述具体是哪个型号,最好使用订货号。西门子每种产品都有一个唯一的订货号,在采购时只需要提供这个编号即可。在西门子的编程软件中也可根据订货号查找对应的型号。当然,使用西门子的产品也有一些缺点,比如它的PLC是通用产品,并不是针对车辆控制而专门设计的。低端开发板都具有的RS485、CAN、以太网等通讯接口,西门子PLC却要付出昂贵的代价。而且西门子的产品开放性非常差,想实现函数复用和调用第三方库、可视界面定制设计基本没门。所以,西门子PLC并不适合作为车载控制器,也可以说西门子PLC并不是为机器人控制而生的,以后的AGV也会逐步淘汰西门子PLC,本文仅利用其稳定可靠的性能的较低的价格作为功能验证。在实际的工程项目中,笔者会选择Codesys的PLC或者自己从底层开发,这样可以实现自己想要的诸多功能。Codesys的缺点是学习资料和例子程序很少,入门可能比较难。

    名称 订货号 价格
    西门子1200 CPU 6ES7215-1AG40-0XB0 3400元
    20171108204925349   20180331092656155

      想了解 S1200 的功能特性和参数设置可以阅读书籍《S7-1200 PLC 编程及应用》或者官方文档《S7-1200可编程控制器系统手册》。让笔者感到奇怪的是,网上竟然找不到这个手册的完整版本(全长1862页),所以我把它上传了供大家免费下载,点击这里下载。
      想对PLC进行设置或编程,需要使用网线将 S1200 与上位机连接,只需要将上位机的 IP 地址设置为与 PLC 同一网段即可。S1200 一般出厂默认的 IP 地址是 192.168.0.1,所以可以将你的电脑的 IP 设置为 192.168.0.2。

    什么是上位机和下位机?
      有些设备能够访问其它的设备,比如读取内存中的数据、向内存写数据,这样的设备具有较高的权限和地位,因此被称为上位机。有些设备只能被其它设备访问,而没有访问其它设备的权力,这样的设备就称为下位机。在本文中,PLC就是下位机,而编程计算机(例如你的笔记本电脑)就是它的上位机。

      对于 AGV 这种移动设备,通常会采用无线通讯接收调度系统等控制中心的指令。常用的无线通信方式有 WIFI、ZigBee等等。由于 WIFI 在实际中使用较多,我介绍一下它的配置方法。使用 WIFI 连接西门子 PLC 非常方便,只需要用网线将 PLC 的以太网口连接到无线路由器的 LAN 口,然后用笔记本搜索到对应的 WIFI 后连接即可访问 PLC。所用的无线路由器可以是任意品牌,甚至家用路由器都可以。笔者在淘宝买过一款国产以太网转 WIFI 转换器,但奇怪的是不支持博途软件(博途的IDE无法访问到PLC设备),所以你购买前最好跟商家确认是否能用于博途。如果你想追求更稳定可靠的通信,可以选择工业级通讯模块,例如摩莎(MOXA),它的供电电压兼容12V~48V。摩莎是高端品牌,其价格比PLC本身还要高。但是注意,目前的无线技术仅能实现非实时通信,不可作为实时通信手段(例如后面提到的与驱动器的通信)。使用无线通信要注意距离,AGV大范围运动时需要考虑在多个WIFI模块之间漫游切换,在这方面菲尼克斯的WiFi比MOXA要好,延迟更低。

    名称 型号 价格
    MOXA 无线通讯模块 AWK-3131A-US 5200元
    20181215152648509.jpg
    20190223041820181.jpg  20190223042015803.jpg

    2. 驱动器

      如果说车载控制器是 AGV 的大脑,那么 AGV 还要有心脏和肌肉才能运动起来,驱动器给车轮的电机提供电流,相当于心脏。

    2.1 低压驱动器品牌

      由于 AGV 普遍采用蓄电池供电,其电压一般在 12V~72V 左右。因此 AGV 使用的驱动器属于低压直流型伺服驱动器。国外的低压驱动器品牌有:AMCRoboteQ、ZAPI(萨牌)、Curtis(柯蒂斯)、Elmo(埃莫)等,中国国内的低压驱动器品牌有:步科、森创、英博尔、凯利。

    2.2 PLC与驱动器通信

      PLC 要想控制驱动器就要向它发送指令数据。低端驱动器可以用模拟量或者脉冲信号传递数据,高端驱动器则采用规范的通信协议传递数据,这样的通信可以借助 RS232、RS485、CAN、以太网等现场总线或者工业网络实现。因为 S1200 的 CPU 模块没有这些通讯接口,所以要想连接驱动器,需要购买额外的通信模块(CM:Communication Module)。上面提到的几种协议西门子都有对应的通信模块支持,比如西门子的 232 、485 和 CANopen 通信模块如下图所示(这三种模块外形完全一样),注意 232 和 CANopen 模块的插头是公头,而485的则是母头。

    201711171042475132017111709563811020171222184206483
    232通信模块          485通信模块         CANopen通信模块
      对于移动设备来说,CAN总线是最常用的通讯方式,像汽车、挖掘机、AGV一般都采用CAN总线通讯。CAN 总线的速度快(最高可达1Mb/s)、稳定性高(采用差分信号,抗干扰),更“智能”(有优先级和仲裁机制),因此应该优先选择 CAN 总线。但是考虑到西门子本身没有 CAN通信模块(如果想使用CAN,要购买第三方公司HMS提供的CANopen模块),本文使用的驱动器采用 485 协议,所以我们选择485模块。随之而来的一个问题是:S1200能外扩几个通信模块?答案是:3个。不管是哪种通信模块,数量最多只能是3个,种类不限可以混用。如果你的驱动器是总线型(485和CAN都属于总线型)的,那么只要一个485模块或者 CANopen 模块就行了。注意232不是总线型的,所以用两个驱动器就要添加两个通信模块。如果你的 AGV 还有其它走通信协议的传感器(例如磁导航传感器、RFID传感器),那么3个通信模块很有可能就显得捉襟见肘。
    名称 订货号 价格
    西门子485通信模块 6ES7 241-1CH30-0XB0 500元
    西门子232通信模块 6ES7 241-1AH32-0XB0 500元
    CANOpen通信模块 021620-B 3100元

      西门子485模块的接头采用了标准9 针D型插孔式连接器。为了将驱动器和PLC连接起来,我们要购买DB9接头,并用信号线将两个头连接起来。这里我们只利用两个信号线即可。值得注意的是,西门子的485接口定义和常规的485不一样,常规485的信号收发是1、2头,而西门子的485则是3、8头(参考手册的第1769页)。所以在连线时,要按照 3-2、8-1的对应顺序焊接,如下图所示。

    2017111917434559920171119180944578

    3. 移动机构

      AGV要想实现搬运、移载就要有移动机构,通常采用的移动机构有舵轮、差速轮和麦克纳姆轮。它们各自有什么特点呢?什么场合又该使用哪种轮子呢?
      麦克纳姆轮的优点是运动精度高,但是结构复杂,磨损严重,对地面挑剔,虽然麦克纳姆轮问世超过30年了,但是实际应用并不多,这也说明它不是一个实用的产品。下面我们主要讲解舵轮。
      舵轮是个高度集成的移动机构,由车轮、回转支撑、齿轮箱、驱动电机、转向电机、编码器、限位开关、制动器等部件组成,它既能提供牵引力,也可以主动转向,因此一个舵轮有两个自由度。AGV 使用一个或以上的舵轮就可以实现全向移动:原地旋转、斜行、横移等等。舵轮一般用于室内环境,所以轮面的材料多为聚氨酯。根据电机的安装位置可以将舵轮分为两种:卧式和立式,分别如下两图所示。卧式舵轮的驱动电机横向安装,因此整体高度很低,有些AGV对高度有要求(例如潜入式的AGV要很矮才能钻到货物底下),这时就适合使用卧式舵轮;立式舵轮的驱动电机竖着安装,其整体高度偏高,它的优点是方便将电机隔离起来,在有些场合(例如危险品工厂),要求舵轮电机与外部环境隔离,这时就适合使用立式舵轮。国外主要的舵轮生产厂家有:意大利的 CFR 和德国的 schabmuller(夏伯穆勒),后来从CFR中又独立出来了一个厂家——马路达。这些舵轮生产厂家一般只卖舵轮,不提供驱动器,驱动器则由代理商提供。一台AGV上最贵的部件就是舵轮,以一台成本10万元左右的AGV为例,如果配备两个舵轮,就需要4~5万元,占整车成本将近一半。不过好消息是,国内的舵轮厂家开始参与竞争,这将降低AGV的成本。

    2017111918543246320171119185339317

    4. 磁导航

    4.1 磁条

      AGV被称为自动导引车,因此自动沿导引路径运动是其最基本的功能。目前,磁条导航是 AGV 使用最多的导引方式之一,其采用磁条作为导引路径。只需要预先在地面铺设好磁条,AGV 就会沿着磁条形成的路径运动。磁条一般宽3~5cm,它像胶带一样,一面光滑、一面带有粘性,将粘性的一面粘贴在地面即可完成铺设。磁条具有极性,在购买时注意是N极还是S极,磁条的极性对应磁导航传感器的极性,但有些传感器两种都兼容。磁条质地较软、不抗压,所以如果被轮子反复碾压可能会压扁或挤脱落。多数 AGV 为了避免压坏磁条会将驱动轮布置在车体的两侧(差速形式)或者斜对称的位置上。

    名称 型号 价格
    磁条 任意 3~5元/米
    20180915205019912

    4.2 磁导航传感器

      磁导航传感器也叫磁循迹传感器,它用来帮助AGV巡线行走。磁导航传感器一般安装在AGV车体或者驱动轮组上,在AGV运动时始终保持在磁条上方一定高度内。磁导航传感器相对于车体的安装位置一般在对称中轴线上,通常对称安装,例如前后各一个或者左右各一个。磁导航传感器的原理很简单,传感器上有若干个探头,每个探头都能检测磁场,位于磁条上方(一定高度内)的探头有信号输出,超出磁条的探头则没有信号。探头通常俗称为“点”,点越多表示传感器的分辨率越高,当然价格也越贵。传感器通常的点数有:6点、8点、16点几种。磁导航传感器并不是什么神秘的东西,笔者曾经拆解过一款磁导航传感器,这里所说的探头无非有两种,一种是霍尔元件、还有一种是地磁传感器。霍尔元件的特点大家大学的时候应该都学过,它能感应磁场,价格低但是精度通常不高;地磁传感器基本都采用美国 PNI 公司的产品,例如 SEN-XY[1]^{[1]}[1],它要搭配专用的驱动芯片 PNI-12927,这个芯片是3.3V供电,所以传感器内部要设计3.3V稳压电路,而且这个驱动芯片采用 SPI 总线,要对其信号进行处理和电压变换,这通常由单片机来完成。磁导航传感器的输出方式有DI纯数字量输出的,也有总线型数据帧输出的。对于点数多的传感器来说一般用总线型,因为如果使用数字量需要很多根信号线。假设一个 AGV 使用4个传感器,每个传感器的分辨率是16点,那就要有4×16=644\times16=644×16=64个输出,相应的 PLC 应该有 64 个数字量输入口,其接线将非常繁琐,也容易出故障(例如某根线连接不牢固)。
      磁导航方式实现简单,价格便宜,但是缺点也不少,其中一个严重的问题是干扰。笔者在调试 AGV时发现,即使传感器并不在磁条上方(有时甚至周围根本没有磁条),传感器依然有输出。经过一番思考,笔者发现了问题所在。AGV 前方有一条铁轨,而铁是容易被磁化的。不仅是铁制品,通电的导线也可能会使传感器误报。所以,使用磁条导航要排除这些干扰。
      磁导航传感器的输出可以是IO,也可以是数值(代表传感器偏离磁条中心的距离值)。
      磁导航传感器如何与 PLC 连接?如上所述,如果传感器采用总线(例如485)传递数据,直接将总线连接到相应的(485)通信模块即可。如果传感器采用数字量接口,那么就要连接到 PLC 的数字量输入口。这里有个很重要的问题:你要清楚传感器输出的信号是 PNP 型还是 NPN 型,它对应了三极管的类型,它们的区别在于有信号时 PNP 输出高电平(例如24V),而 NPN 输出低电平(例如0V)。在 S1200 上每组输入输出口旁边都有一个 COM 口,它的作用就是选择输入是 PNP 型还是 NPN 型。如果是 PNP 型,COM 口就要接 24V ,如果是 NPN 型就要接 0V。你可以找个磁条用万用表测试一下,如果放到磁条上输出显示是24V那说明是 PNP 型。以后你会知道,很多传感器都分 PNP 型和 NPN 型,它们的接法是一样的。

    2018030803091440320180308184958832
    名称 型号 价格
    曼普拉斯磁导航传感器 MPMGS200-F01 2000元
    沈阳军航磁导航传感器 JH-16 2000元

    5. 供电系统

    5.1 电池

      AGV启动时需要的电流大,因此需要使用动力电池,使用最多的动力电池有铅酸电池和锂电池。铅酸电池寿命短、能量密度低,而锂电池密度高、但是成本也高。还有一种电池叫做超级电容,它的寿命很长,但是能量密度非常低,所以用的不多。
      知名的电池厂家有霍克(HAWKER)荷贝克(HOPPECKE)等。下图是霍克 AGV 专用电池标签。铅酸电池的额定放电电流一般是0.5C,例如80Ah的电池,额定放电电流是0.5×80=40A0.5\times80=40A0.5×80=40A。铅酸电池的最大放电电流一般是3C,即3×80=240A3\times80=240A3×80=240A。电池的电压会随着电量消耗逐渐降低,开始降低得很慢,当电量很少时会急剧下降。根据这个关系,通过检测电压就能知道电池还剩余多少电,是否应该充电。

    名称 型号 价格
    霍克电池 EV24-100 12800元
    20180106113354059

      我们如何估计一个 AGV 该选用多大容量的电池呢?
      AGV 上最耗电的器件就是电机了。一般来说,电机的额定功率 PPP会写在电机铭牌上。根据初中物理知识,功率等于电压和电流的乘积,即
    P=UI P=UI P=UI  驱动电机的额定电压一般容易得到,所以通过上式可以计算出电流。当然,实际工作的功率一般会比额定功率小,所以这里要乘以一个系数,具体要看 AGV 的负重、工作路面等。求出电流乘以工作时间就是电池的容量了。注意,电池的容量和能量是两个不同的概念,前者是电流乘以时间(单位是“安时”(Ah))、而后者是电流乘以电压乘以时间(单位是“千瓦时”(KWh))。

    5.2 电压变换

      如果传感器、控制器等器件和电池的输出电压不同,就需要使用电压变换模块,它还可以起到稳压的作用。一般传感器常用的电压是12V、控制器常用的电压是24V,因此需要有相应的模块。可以选择广州金升阳的电压变换模块,可选配散热片和导轨,便于散热和固定,如下图所示的48V转24V的模块。选择模块时主要关心的是功率,即它能提供的最大电流。

    201810132346071282018101323470332720181013234743610

    6. 开关

    6.1 电源开关

      选择电源总开关时要注意它是“自锁的”还是“自动复位的”。自锁的意思就是按下后即使手指松开,开关依然保持闭合使供电畅通;而自动复位的开关按下按钮后如果松开手指,电路就会被切断,如下图所示。一般机箱上的电源总开关应该选择自锁型的,否则你要一直按着按钮才能使电路畅通,因此不要购买下图右所示的自复位型开关(代号:XB2-BA31C,价格在22元左右)。假如你买错了也不要紧,你可以再买一个自锁模块ZB2-BZ21 C,将这个模块添加到XB2-BA31C开关上就能将它变成一个自锁开关。

    20171114192129107 20171114192849213

    6.2 急停开关

      在所有AGV 车体上都能找到的一个东西就是急停开关。根据国家标准GBT 20721-2006 《自动导引车 通用技术条件》中第4.2.6项的规定:“AGV 应配备紧急停车按钮,该按钮的安装位置在紧急情况下应便于操作。应采用红色按钮,急停按钮按下应关闭 AGV 驱动电源”。在AGV失去控制的情况下,按下急停开关能让它立即停止运动,从而防止伤害到人。因此急停开关构成了最后的安全屏障。为了保证使用可靠,可以购买施耐德的XB2-BS542C。急停开关的按钮一般设计得很大,方便按下,因此又被俗称为蘑菇头,它一般都是自锁的,按下后需要旋转才能松开。购买时唯一要注意的是它的安装直径,一般选择 22mm 即可。

    20171120214622238

    7. 电气元件

      AGV上既有强电也有弱电,例如舵轮的驱动器需要的电流通常很大,而控制器和一些传感器只需要很小的电流。我们要合理设计电路,防止它们相互干扰,更主要的是包含弱电器件。根据国家标准GBT 30029-2013 《自动导引车(AGV)设计通则》中第6.7.7.4项的规定,控制器应该具有过压保护、欠压保护、过流保护功能。
      我们要在电路中加入以下器件:
      ■\blacksquare 接触器:用小电流控制大电流。上面的电源开关只允许通过较小的电流,但有时设备里有些组件需要大电流才能启动,例如舵轮驱动器。我们不能用一个开关既控制小电流也控制大电流,这时就需要借助接触器。接触器内部有个电磁铁,我们用小电流控制电磁铁的吸合,电磁铁带动另一组开关闭合使大电流通过。在AGV上使用的是直流接触器,注意接触器的线圈会发出一定热量,安装应当注意散热和对附近器件的影响。

    20180916144122580 20180916144155596
    名称 型号 价格
    Albright直流接触器 SW180B-108 200元

      ■\blacksquare 断路器:起到过流、欠压保护的作用。断路器也相当于一个开关,在短路等电流过大时断开,保护设备;
      ■\blacksquare 继电器:也相当于一个开关,它是用小电压控制触点开闭的,但是注意触点不能流过太大电流。
      AGV 采用电池作为能源,而电池的电压通常不是很稳定,在使用时电压会波动。虽然西门子的 PLC 对输入电压具有一定的适应能力,但是我们最好用一个24V到 24V 的稳压模块将电池的电压稳定后再供给 PLC。对于使用24V供电的其它器件,例如磁导航传感器,也是这样。

    8. 激光避障传感器

      AGV的安全防护方式有接触式和非接触式之分。触边属于接触式的,而激光传感器和超声波传感器属于非接触式。当然非接触式的传感器更加安全,因为不需要直接接触即可监测障碍物。
      常用的国外激光传感器品牌有SICK和HOKUYO。以SICK的Tim310为例,它的监测距离可达3米,可以设置不同的监测区域形状。Tim310的输出是I/O信号,用以判断是不是监测到了障碍物。

    名称 型号 订货号 价格
    SICK激光传感器 Tim310-0130000S02 1069932 6800元
    20181118230850270.jpg  20190223045105119.jpg

    9. 触摸屏

      现在的 AGV 越来越多地开始配备触摸屏了。使用触摸屏可以方便地设置AGV的参数,例如运动速度、充电电压等等,而不需要每次都将程序下载到 PLC。既然我们选择了西门子的PLC,当然触摸屏选择西门子是最配对的,但是考虑到西门子的触摸屏有点贵,我们选择国产的品牌。国产触摸屏的质量也很可靠,而且价格合理,代表厂家有:威纶通、昆仑通态。由于西门子的知名度,大多数触摸屏都会支持。但是如果你用其它品牌的PLC,那最好向触摸屏厂家询问是否支持你的PLC,否则是无法通讯的。

    名称 型号 价格
    昆仑通态 触摸屏 TPC1561Hi 3500元

      我选择昆仑通态的触摸屏,它采用24V直流供电,并配有网口,用普通网线将触摸屏和 S1200 连接,并将触摸屏的 IP 地址设置为与 PLC 所在同一网段(例如192.168.0.3)即可实现和 PLC 的互联。设置 IP 的方法是上电后在进入正式界面之前,在屏幕的任意位置点击一下即可进入设置界面。
      我们如何使用触摸屏呢?我们需要对触摸屏进行编程,或者说“组态”。编程需要使用昆仑通态自己的组态软件:MCGS,可以在它的官方网站免费下载。

    20171126041049160
      在你的电脑上安装该软件,注意在软件中需要输入 PLC 的地址才能读写数据。触摸屏上只有一个网口,所以你可以用网线将触摸屏连接到你的电脑。我们注意到 S1200 有两个网口,所以一种更方便的连接方式是,将触摸屏连接到 S1200 上,然后将 S1200 连接到你的电脑,这样同样能对触摸屏进行编程。   触摸屏最基本的功能就是读写 PLC 的内存(因此它也是PLC的上位机)。要实现这个功能非常简单,只需要在 MCGS 中对 PLC 的变量进行关联即可。
    20171126040420303

    10. 程序设计

    10.1 编程工具

      购买了S1200 并不意味着你能免费使用它的开发软件。但是没关系,网上有很多破解软件。有意思的是,其中有些资源就是西门子公司的人故意释放出来的,他们可能想占有更多的市场。要对西门子的 PLC 编程必须使用专用的软件:STEP 7 ,下图是 STEP 7 的安装过程。

    20180312190727601
      实际上,STEP 7 是过时的名称,现在西门子想将它和另外几个自动化软件都统一成一个平台,适用于西门子旗下所有的设备,这个平台被称为:TIA Portal(博途),本文使用的就是 TIA V13。西门子公司为了保持延续性,软件的名称有时是 STEP 7,有时又用 TIA,本文我为了与历史统一还叫 STEP 7 好了。西门子的软件跟硬件一样种类繁多,光 STEP 7 就有几个版本,例如专业版(professional SP1,如下图左所示),而每个版本又有不同的更新包。注意 SP1 可能缺少某些功能(下面我会提到),因此我使用了更新包。具体来说,我使用的是 STEP 7 V13.0 SP1 Upd8,如下图右所示。
    2018031219204050720180312192115195
      在软件安装时我们注意到有这样的说明:STEP 7是用于编程的工程组态工具。要使用 PLC,编程只是一方面,还有一个重要的工作就是“组态”。“组态”说白了就是“配置”,配置 PLC 的输入输出接口、参数、功能等等。首先,在“设备组态”页面选择我们的 PLC 型号就可以了。

    10.2 PLC的硬件资源

      要想用好PLC,就要熟悉它的一些特点,下面我们就了解一下 S1215C 的特点。
      1215C的内存有多大呢?
      我们用电脑连接上PLC,然后在STEP 7软件左侧栏双击“在线和诊断”,然后在打开窗口中点击“存储器”,如下图所示。

    20180124180836407
      可以看到这里有三个存储器,分别是:装载存储器、工作存储器和保持存储器。并且可以看到三个存储器的大小,分别是:

      1. 装载存储器: 419430441943044194304 Byte ÷1024÷1024=4\div 1024 \div 1024= 4÷1024÷1024=4MB
      2. 工作存储器: 128000128000128000 Byte ÷1024=125\div 1024= 125÷1024=125KB 
      3. 保持存储器: 102401024010240 Byte ÷1024=10\div 1024= 10÷1024=10KB
      这和系统手册中给出的数值是一样的,如下:

    20180124191209640

      你看完是不是都哭了,10年前的手机存储器都比这要大。这三个存储器各有什么作用呢?
      1. 装载存储器:用于存储用户项目文件(例如:用户程序、组态信息),相当于硬盘;
      2. 工作存储器:CPU在执行用户程序时会将一些项目内容从装载存储区复制到工作存储区,相当于电脑的内存;
      3. 保持存储器:掉电后数据仍然保持。如果你希望一些数据能在断电后一直保持就要使用这个存储器。但遗憾的是,小气的西门子公司只给了我们10KB。
      PLC 扫描一次程序需要多长时间呢?
      PLC会自动记录时间,在同一页面,打开“循环时间”,就能看到PLC完整执行一遍程序需要的时间,如下图所示。这个时间不是固定的,取决于你的程序长短,一般的执行时间在3毫秒以内。

    20180124185825187
     

    10.3 PLC的软件资源

      西门子提供哪些函数功能呢?工业控制编程语言唯一的国际标准——IEC61131-3 规定了46个基本函数,西门子都支持。除此以外,我们常用的还有定时器计数器等功能。AGV 属于移动机器人,而机器人的控制本质是数学计算,所以我重点说说其中的数学函数,共有18个:
      数字运算: ABS、SQRT、LOG、LN、EXP、SIN、COS、TAN、ASIN、ACOS、ATAN;
      算术运算:ADD、SUB、MUL、DIV、MOD、EXPT、MOVE;
      当然还有:>、< 比较运算符。
      翻开另一款控制器品牌——倍福的手册,你会发现它同样支持这几个初级函数。
      在组态界面,双击 CPU 模块能看到这款 PLC 的其它功能介绍,例如周期定时器,如下图所示。

    20180312195031803
      如果你使用了触摸屏,有一点值得注意:在“保护”页面中有一个选项需要勾选:“允许从远程伙伴使用PUT/GET通信访问”,如下图所示。如果不勾选这个选项,你看你无法用触摸屏读写 PLC 内存中的数据。让笔者奇怪的是,像这样的细节几乎在所有的手册、教程中都找不到,但却又很重要。
    20180312195348695

    10.4 西门子PLC的编程方式

      西门子PLC 的编程符合国际工业编程语言标准 IEC-611313,因此跟倍福等厂家的差不多。
      
    10.4.1 定义常量

      有些量我们要经常使用(例如圆周率 π\piπ),如果每次都用数值来做运算一方面输入很容易出错,另一方面如果想对其进行更改那要改很多处,非常繁琐。一个方便的做法是将其定义为一个全局的“常数”。使用 PLC 和 C 语言等高级语言相同的一点是,你需要为变量分配内存地址。分配好地址后如何对其赋值呢?因为常量只需要赋一次值即可,所以我们选择在 Startup 块中对其赋值。Startup 块在每次 PLC 上电后只执行一次。西门子中有些块的序号是系统预留的,比如 Startup 就是 OB100。我们注意到,在博图软件中,全局变量用双引号表示(例如"PI"),而局部变量前面带个井号(下面会碰到)。

    20180312195645430
    20180312195619094

    10.4.2 定义函数

      西门子自带的函数只能完成简单的功能,为了实现更高级的控制我们还要自己写一些函数。笔者在开发机器人控制器的过程中发现,网上公开的PLC函数库很少,目前笔者只知道OSCAT库。大家都在讨论基本的逻辑控制,却鲜有人讨论更高级的数学计算,可能 PLC 并不适合高级运动控制算法的实现。
      下面我用一个很简单的进行角度弧度转换的函数为例来说明如何在 STEP 7 中自定义函数。
      (1) 首先,我们新建一个函数FC(这个函数比较简单,不需要背景数据,所以不用 FB),实现的语言选择 SCL 语言。函数名为“DegreeToRad”。
      (2) 然后,我们要明确这个函数的输入,在上面的变量定义栏中的 Input 项目中输入 angleInDegree,类型选择为 Real,如下图所示。在Return 项目中将 DegreeToRad 变量的类型改为 Real,这里注意不要修改 DegreeToRad 变量的名字。

    20180312195732109

      (3) 在下面的输入框输入变换公式。

      这里要用 := 对变量进行赋值。你会注意到,变量 PI 是用双引号括起来的,而其它的变量(例如 angleInDegree)前面则带一个井号。这是用来区分局部变量和全局变量的,局部变量用#开头表示,而全局变量用引号表示。

    10.4.3 定时器

      定时器是我们会经常使用的一个功能,想输出随时间变化的量、想延时触发、想输出周期信号都要借助定时器。西门子的每个定时器都对应一个背景数据块。笔者早期经常犯的一个错误是,为了节省时间直接复制粘贴定时器块。其错误是不管你复制多少次,其实最终还是同一个定时器,而且后面的会覆盖前面的值。这个错误导致很多匪夷所思的错误,让笔者头疼了相当长的时间。各位一定要注意,每使用一个定时器都要重新拖进来新建。

    10.4.4 循迹算法

      为了让 AGV 始终沿着磁条行走,我们需要编程实现循迹功能(也可以叫路径跟踪或者巡线纠偏)。通过专利检索可以发现,AGV循迹算法也是各大企业的核心技术。

    20200915195728303.jpg

      循迹程序的逻辑可以非常简单,我们的输入是磁导航传感器的读数,输出则是舵轮转向的速度(或差速轮的转速差)。采用简单的PI(比例-积分)控制策略,磁条如果在传感器零位的左侧,我们就往左偏转,反之在右侧就往右偏转,偏离距离越大那么舵轮转的角度越大。当AGV从直线进入圆弧曲线时,由于积分项的存在,即使传感器读数为零,舵轮也不会回到零位。下面的仿真动画展示了这种控制策略的效果,每个舵轮上都固定了一个传感器跟随舵轮一起偏转,该方法也在实际运行中得到了验证。差速轮的控制则略微复杂,需要根据旋转中心(红色点)计算每个轮子的速度。

    20200915185754564.gif20200915185754231.gif

    引用文献

    [1] 一种AGV用磁导航传感器,专利号:CN201710010589.

    展开全文
  • 自动控制系统的基本性能指标

    万次阅读 2016-08-15 23:46:10
    本文简要小结了一下分析设计自动控制系统时,需要了解的自动控制系统性能指标的基本概念。包括系统数学模型、动态过程及动态性能指标、稳态过程及稳态性能指标。

    在调试三轴跟踪云台时遇到了PID控制问题。研究过程中不可避免用到自动控制系统的性能指标,学习总结了一下经典教材中的相关内容。本文包括如下内容:

    • 控制系统的数学模型
      • 时域模型
      • 复域模型
    • 控制系统的性能指标
      • 典型输入信号
      • 动态过程与动态性能指标
      • 稳态过程与稳态性能指标


    控制系统的数学模型

    在控制系统的分析设计中,首先要建立控制系统的数学模型,数学模型是描述系统内部物理量(或变量)之间的关系的数学表达式。建立控制系统数学模型的方法通常有分析法和实验法两种。

    分析法

    需要已知系统各部分依据的物理规律或化学规律列出相应方程。

    实验法

    实验法人为地给系统施加某种测试信号,记录其输出响应,并用适当的数学模型去逼近,这种方式又称为系统辨识。

    在使用分析法进行系统建模时,常见的模型有时域模型、复域模型。


    时域模型

    使用微分方程描述的系统模型称为时域模型。在给定外作用及初始条件下,求解微分方程可以获得系统的输出响应。这种方法比较直观,有助于借助计算机迅速求得结果。但如果系统结构改变或某几个参数改变时,就要重新列方程求解,不便于系统分析和设计。(具体微分方程略)


    复域模型

    使用拉氏变换法求解线性系统的微分方程时,可以得到控制系统在复数域的数学模型:传递函数。传递函数不仅可以表征系统的动态性能,而且可以用来研究系统结构或参数变化对系统性能的影响。

    传递函数定义

    线性定常系统的传递函数G(s),定义为零初始条件下,系统输出量的拉氏变换C(s),与输入量的拉氏变换R(s)之比。


    传递函数的性质

    • 传递函数是复变量s的有理真分式函数,具有复变函数的所有性质。
    • 传递函数是一种用系统参数表示输入量与输出量之间关系的表达式,只取决于系统或元件的结构和参数,而与输入量的形式无关。
    • 传递函数与微分方程有相通性,两者(两个类型的系统模型)可以用d/dt与s互相置换的方式变换。
    • G(s)的拉氏反变换是脉冲响应g(t),即脉冲函数δ(t)输入时的输出响应。

    控制系统的性能指标

    控制系统性能评价分为动态性能指标和稳态性能指标两类。为了求解系统的时间响应(我们关注的性质)。必须了解输入信号(即外作用)的解析表达式。然而在一般情况下,外加输入有随机性无法预知。


    典型输入信号

    研究分析系统的性能指标时,通常选择若干典型输入信号作为动态性能指标和稳态性能测试之用,典型输入信号包括:
    • 单位阶跃函数
    • 单位斜坡函数
    • 单位加速度函数
    • 单位脉冲函数
    • 正弦函数

    实际中采用上述哪种典型输入信号取决于系统常见的工作状态。同时,在所有可能的输入信号中,选择最不利的信号作为典型输入信号测试系统指标。在典型输入信号作用下,任何控制系统的时间响应都有动态过程和稳态过程两部分组成。因此,系统的时间响应、动态、稳态过程与动态、稳态性能指标以及典型输入信号的关系如下图所示。



    动态过程与动态性能指标

    动态过程

    动态过程又称过渡过程瞬态过程,指系统在典型输入信号作用下,系统输出量从初始状态到最终状态的响应过程。由于实际控制系统具有惯性、摩擦及其他原因,系统输出量不可能完全复现输入量的变化。根据系统结构和参数的选择,动态过程表现为衰减、发散、等幅振荡等形式。

    动态性能

    系统的动态过程提供系统稳定性、响应速度及阻尼情况,由动态性能指标描述。通常在阶跃函数作用下,测定或计算系统的动态性能。描述稳定的系统在单位阶跃函数的作用下,动态过程随时间t的变化状况的指标,称为动态性能指标。系统的单位阶跃响应如下图所示。


    上升时间(rise time)tr

    指响应从终值10%上升到终值90%所需的时间;对于有振荡的系统,也可定义为响应从零第一次上升到终值所需的时间。上升时间tr是系统响应速度的一种度量。上升时间越短,响应速度越快。

    峰值时间 tp

    指响应超过其终值达到第一个峰值所需的时间。上升时间tp是系统响应速度的一种度量。

    调节时间(settingtime)ts

    指响应到达并保持在终值±5%(或±2%)内所需的最短时间。调节时间ts是评价系统响应速度和阻尼程度的综合指标。

    超调量(overshoot):σ %

    指响应的最大偏离量c(tp)与终值c(∞)之比的百分数,即


    若c(tp)<c(∞),则响应无超调。σ%评价系统的阻尼程度


    稳态过程与稳态性能指标


    稳态过程

    稳态过程指系统在典型输入信号作用下,当时间t趋于无穷时,系统输出量的表现方式。稳态过程又称为稳态响应,表征系统输出量最终复现输入量的程度,提供系统有关稳态误差的信息,用稳态性能描述。

    稳态性能——稳态误差(steady-state error)

    稳态误差是描述系统稳态性能的一种性能指标,通常在阶跃函数、斜坡函数或加速度函数作用下进行测定或计算。若时间区域无穷时,系统的输出量不等于输入量或者输入量的确定函数,则系统存在稳态误差。稳态误差是系统控制精度或抗扰动能力的一种度量

    参考文献:

    《自动控制原理》第六版

    转载请注明出处(本文更新链接):http://blog.csdn.net/iracer/article/details/52215497

    展开全文
  • 开环控制系统与闭环控制系统

    千次阅读 2018-12-21 14:44:14
    开环控制系统是指无被控量反馈的控制系统,即需要控制的是被控对象的某一量(被控量),而测量的只是给定信号,被控量对于控制作用没有任何影响的系统。结构如图所示。 闭环控制的定义是有被控制量反馈的控制,其原理框如...

    开环控制系统是指无被控量反馈的控制系统,即需要控制的是被控对象的某一量(被控量),而测量的只是给定信号,被控量对于控制作用没有任何影响的系统。结构如图所示。
    在这里插入图片描述

    闭环控制的定义是有被控制量反馈的控制,其原理框如图所示。从系统中信号流向看,**系统的输出信号沿反馈通道又回到系统的输入端,**构成闭合通道,故称闭环控制系统,或反馈控制系统。
    在这里插入图片描述

    典型闭环(反馈)控制系统的原理如图所示
    在这里插入图片描述

    (1)被控对象:它是控制系统所控制和操纵的对象,它接受控制量并输出被控制量。
    (2)控制器:接收变换和放大后的偏差信号,转换为对被控对象进行操作的控制信号。
    (3)放大变换环节:将偏差信号变换为适合控制器执行的信号。它根据控制的形式、幅值及功率来放大变换。
    (4)校正装置:为改善系统动态和静态特性而附加的装置。如果校正装置串联在系统的前向通道中,称为串联校正装置;如果校正装置接成反馈形式,称为并联校正装置,又称局部反馈校正。
    (5)反馈环节:它用来测量被控量的实际值,并经过信号处理,转换为与被控制量有一定函数关系,且与输入信号同一物理量的信号。反馈环节一般也称为测量变送环节。
    (6)给定环节:产生输入控制信号的装置。

    展开全文
  • 基于51单片机的洗衣机控制系统

    万次阅读 多人点赞 2020-11-16 09:46:23
    摘要: 根据洗衣机的控制要求,从功能要求、硬件设计、软件设计三个方面描述了一个以AT89C51单片机为控制核心的洗衣机控制系统。给出了硬件线路框图和相关的控制程序流程图。 关键词: AT89C51单片机;洗衣机控制系统;...

    设计要求:
    (1)设计一个电子定时器,控制洗衣机作如下运转:定时启动→正转20s→暂停10s→反转20s→暂停10s→定时未到回到"正转20s-→暂停10s→反转20s→暂…“定时到则停止转动;
    (2)若定时到,则停机发出音响信号;
    (3)用两个数码管显示洗涤的预置时间(分钟数),按倒计时方式对洗涤过程作计时显示,直到时间到停机;洗涤过程由“开始”信号开始;
    (4)用三只LED灯表示"正转”、“反转”、“暂停"三个状态。


    摘要

    摘要: 根据洗衣机的控制要求,从功能要求、硬件设计、软件设计三个方面描述了一个以AT89C51单片机为控制核心的洗衣机控制系统。给出了硬件线路框图和相关的控制程序流程图。
    关键词: AT89C51单片机;洗衣机控制系统;硬件;控制程序
    Abstract: According to the washing machine control requirements, a control system with the AT89C51 SCMC as the core about washing machines were described in the following three aspects of functional requirements, hardware design, software design. The hardware circuit diagram and related control flow chart of the program were given.
    Key words : AT89C51SCMC ; Washing machine control system ; Hardware ; Control program

    引言

    随着单片机技术日新月异的发展,单片机以其集成度高、运算速度快、体积小、运行可靠、价格低廉等特点在过程控制、机电一体化、智能化仪表、家用电器等方面得到了广泛应用。本文采用MCS-51单片机作为洗衣机控制系统的核心,硬件线路及控制程序的设计是该系统的重要组成部分。硬件线路设计主要包括电源、功能及控制系统、洗衣机状态显示、输出控制电路的设计。控制程序设计主要包括主程序、内部定时中断服务程序、外部中断服务程序的设计。

    1、设计方案的选择

    洗衣机控制电路是用来控制洗衣机电机的正转反转暂停三个状态的。该电路可以控制洗衣机的定时启动,洗衣机的工作状态,而且当达到定时终点时会停止洗衣机工作同时发出报警信号。时间的显示采用两位数码管(一分钟为单位),按倒计时方式工作,直到达到定时终点而停机。
    第一部分方案:本电路的计数系统因为要求实现倒计时,所以可以用双向计数器74LS192或程序定时计数。根据自身情况,为减少制作成本和产品性价比,本设计采用程序定时计数的方法。
    第二部分方案:显示单元采用数码管显示或者LCD显示,因设计要求采用两位数码管显示,还有考虑到成本问题,本设计采用两位数码管作为显示单元。
    第三部分方案:主控制单元,采用STC89C52芯片或者AT89C51芯片作为硬件核心,STC89C52是一种带4K字节闪烁可编程可擦除只读存储器,采用Flash ROM,内部具有4KB ROM 存储空间,能于3V的超低压工作,而且与MCS-51系列单片机完全兼容,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,STC89C52是一种高效微控制器,51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案但是运用于电路设计中时由于不具备在线编程(ISP)技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,对芯片的多次拔插可能对芯片造成一定的损坏。AT89C51跟STC89C52功能基本相同,但目前STC89C52型号芯片已经停产,所以此设计采用AT89C51作为主控芯片。
    第四部分方案:报警的警铃在工作时间结束后就会响起,但是根据实际情况不能一直的响下去,应此利用一个单稳电路,当暂稳态结束后就可以回到稳态,警铃就不再响了。
    综上比较,本设计采用各分电路的最优化方案。

    2、硬件设计

    2.1 各单元模块电路

    定时显示单元
    在这里插入图片描述

    此模块选用两个一位7段数码管作为显示,跟单片机的P0,P2相连接。

    定时时长控制单元
    在这里插入图片描述

    此模块作为洗衣机定时时间加、减,以及启动洗衣机工作开关。用三个微动开关来控制。

    单片机最小系统单元
    在这里插入图片描述

    此电路是单片机的最小系统,用来作为主控芯片。

    电机状态显示单元
    在这里插入图片描述

    此模块是电机运转显示正反转以及停止状态。

    洗衣机运作单元
    在这里插入图片描述

    报警单元
    在这里插入图片描述

    此单元模块用作定时结束洗衣机停止工作,发出报警信号。

    2.2 仿真结果及分析

    proteus仿真软件采用直观的图形界面创建电路:在计算机屏幕上模仿真实实验室的工作台,绘制电路图需要的元器件、电路仿真需要的测试仪器均可直接从屏幕上选取;软件仪器的控制面板外形和操作方式都与实物相似,可以实时显示测量结果。proteus软件带有丰富的电路元件库,提供多种电路分析方法。作为设计工具,它可以同其它流行的电路分析、设计和制板软件交换数据。EWB还是一个优秀的电子技术训练工具,利用它提供的虚拟仪器可以用比实验室中更灵活的方式进行电路实验,仿真电路的实际运行情况,熟悉常用电子仪器测量方法。可用proteus仿真软件对各单元电路和整体电路进行元器件仿真和运行仿真,便于对设计方案的理解和分析。
    用proteus仿真的总图如图 2.2所示
    在这里插入图片描述

    3、软件设计

    3.1 系统流程图

    在这里插入图片描述

    3.2 源程序

     /*********************************************************************************
     *********************************************************************************/
     //------------------------------------------------------------------------------//
     //							      		                                         //
     //标题:基于单片机的洗衣机控制系统
     //							      		                                         //				
     //创建人:朽木自雕i		 1547013894@qq.com								
     //日期:2019/11/14					修改日期:2020/11/15						
     //描述:																										 									 	      
     //     本设计要做一个简易洗衣机控制系统,用AT89C51作为主控芯片来控制步进电机,控制洗
     //  衣机作如下运转:定时启动→正转20s→暂停10s→反转20s→暂停10s→定时未到回到"正转20s-→
     //  暂停10s→反转20s→暂…“定时到则停止转动,若定时到,则停机发出音响信号,用两个数码管
     //  显示洗涤的预置时间(分钟数),按倒计时方式对洗涤过程作计时显示,直到时间到停机;洗涤
     //  过程由“开始”信号开始,用三只LED灯表示"正转”、“反转”、“暂停"三个状态。经仿真运行测
     //  试后,所有功能均正常运行。			                                         //
     //声明:									 									 									 									  //
     //      以下代码仅免费提供给学习用途,但引用或修改后必须在文件中声明出处,		     //
     //      如有商业用途请与作者联系。															
     //																													  							 	   //
     //------------------------------------------------------------------------------//
     /*********************************************************************************
     *********************************************************************************/
    #include"reg51.h"//此文件中定义了单片机的一些特殊功能寄存器
    
    void DelayMs(unsigned int x);//延时函数声明
    unsigned char code Ledcode[16]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90};//定义字符型数组
    unsigned int i,j,disp;//定义两个无符号整型变量i 和 disp
    
    sbit K1=P3^5;
    sbit K2=P3^6;
    sbit K3=P3^7;
    
    sbit MA   = P1^3;
    sbit MB   = P1^4;
    sbit LED1 = P1^5;
    sbit LED2 = P1^6;
    sbit LED3 = P1^7;
    
    sbit BEEP=P2^7;
    
    void DelayMs(unsigned int x)//定义延时函数
    {
    	unsigned char i;
    	while(x--)
    	{
    		for(i=0;i<120;i++);//大约1ms
    	}
    }
    void Beep()
    {
    	BEEP=~BEEP;
    	DelayMs(3000);
    	BEEP=1;
    }
    void zheng()          //模拟电机正反向转动大概20S钟
    {
    	for(i=0;i<20;i++)
    	{
    		DelayMs(800);//延时1s
    		LED1 = 0;
    		LED2 = 1;
    		LED3 = 1;
    		MA   = 0;
    		MB   = 1;
    	}
    }
    void fan()            //模拟电机反反向转动大概20S钟
    {	
    	for(i=0;i<20;i++)
    	{
    		DelayMs(800);//延时1s
    		LED1 = 1;
    		LED2 = 0;
    		LED3 = 1;
    		MA   = 1;
    		MB   = 0;
    	}
    }
    void ting()           //模拟电机停止转动大概10S钟
    {
    	for(i=0;i<10;i++)
    	{
    		DelayMs(800);//延时1s
    		LED1 = 1;
    		LED2 = 1;
    		LED3 = 0;
    		MA   = 0;
    		MB   = 0;
    	}
    }
    void keyscan()
    {
    	if(K1==0)
    	{
    		DelayMs(5);
    		if(K1==0)
    		{
    			for(j=disp;j>0;j--)
    			{
    				zheng();
    				ting();
    				fan();
    				ting();
    				disp--;
    				P0=Ledcode[disp/10%10];//把十位数的值赋给P2口,即第一位数码管
    				P2=Ledcode[disp%10];	//把个位数的值赋给P3口,即第二位数码管	
    				if(disp==0)
    				{
    					Beep();
    				}
    			}
    		}
    	}
    	else if(K2==0)
    	{
    		DelayMs(5);
    		if(K2==0)
    		{
    			disp++;
    			P0=Ledcode[disp/10%10];//把十位数的值赋给P2口,即第一位数码管
    			P2=Ledcode[disp%10];	//把个位数的值赋给P3口,即第二位数码管
    			if(disp==90)     //最多定时90分钟,即1.5小时
    			{
    				disp=0;
    			}
    		}
    		while(!K2);
    	}
    	else if(K3==0)
    	{
    		DelayMs(5);
    		if(K3==0)
    		{
    			disp--;
    			P0=Ledcode[disp/10%10];//把十位数的值赋给P2口,即第一位数码管
    			P2=Ledcode[disp%10];	//把个位数的值赋给P3口,即第二位数码管
    			if(disp==0)
    			{
    				disp=91;     //最多定时90分钟,即1.5小时
    			}
    		}
    		while(!K3);
    	}
    }
    
    void main()
    {
    	disp=5;
    	P0=Ledcode[disp/10%10];//把十位数的值赋给P2口,即第一位数码管
    	P2=Ledcode[disp%10];	//把个位数的值赋给P3口,即第二位数码管
    	while(1)
    	{	
    		keyscan();
    	}
    }				
    

    4、收获和总结

    课程设计是一个探索与实践的过程。虽然我们没有用实际电路来连接调试,但是由于现在的软件功能强大,用软件来仿真也是很好的方法。
    虽然在设计的过程中遇到了这样或那样的困难,但是通过示波器的波形分析,电路的不断改进,困难都一一的克服了。我认为我们在设计的过程中不仅是熟悉了软件的用法,更重要的是学会了设计的方法以及设计的精神。当然说设计的精神似乎有点不恰当,但我认为设计就是一种精神意志的磨练。我曾多次想放弃,想直接去抄袭别人的,但是始终有一股精神支撑着我——课程设计是锻炼的机会,是对将来工作的一种积累,糊弄只会是害了自己。于是我硬着头皮把电路拆了又接接了又拆,虽然很麻烦,也很头疼(到处是线,看的眼睛都花了),不过也是有乐趣在其中的。每当解决一个问题,或者一部分电路实现了其工作都感觉到很高兴,这些细小的成功带给我完成整个设计的力量。于是通过不断的调试,不断的改进终于是把电路弄出来了。虽然我设计出的这个电路能够工作,不过在有些地方还是不够很好的。但是我还是坚持自己原创。比方说,彩灯显示循环控制部分,如果用一个译码器的话很简单的就实现了,不过我还是采用了门电路来搭建。一来是我自己设计的,而来也是复习一下组合逻辑电路的设计。还有BO的置数问题,我几乎是头疼了很长时间,后来大家一起讨论,用示波器观察波形,才知道了原因,然后加以改进。这里我体会到了团结协作的力量。我们将来出去工作也是一个个的团队,自己是团队中的一员,既要独立思考努力为团队作出贡献也要从团队中吸收经验。
    总而言之,受益匪浅。在知识水品上学到了数字电路的知识,体会到了数字电路的巧妙;但更重要的是学会了方法,学会了坚韧,相信只要具备正确的设计方法和坚忍不拔的拼搏意志无论多么复杂多么庞大的电路都会设计的出来!

    5、元器件清单

    在这里插入图片描述

    6、主要参考文献资料

    [1] 李朝青.单片机原理及接口技术(简明修订版)[M].北京:北京航空航天大学出版社,1998.
    [2] 李全利.单片机原理及接口技术[M].高等教育出版社,2003.
    [3] 杨将新,李华军,刘到骏等.单片机程序设计及应用(从基础到实践)[J].电子工业出版社,2006.
    [4] 黄智伟.全国大学生电子设计竞赛训练教程[M].北京:电子工业出版社, 2005.
    [5] 陈有卿.集成电路妙用巧用300例.北京:人民邮电出版社,1999.
    [6] 陈安凯.最新集成电路数据手册.北京:人民邮电出版社,1996.
    [7]瞿安连.应用电子技术.北京:科学出版社,2003.

    创作不易,分享更需勇气! 喜欢的可以给点个 关注❤ 给个 赞❤欢迎评论区留言交流~

    展开全文
  • 网络控制系统分析与设计时延问题的网络控制系统建模功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居...
  • 伺服控制系统

    千次阅读 2018-05-23 13:55:35
    1.定义 伺服来自英文单词... 伺服系统是使物体的位置、方位、状态等输出被控量能够跟随输入目标值(或给定值)的任意变化而变化的自动控制系统。伺服的主要任务是按控制命令的要求,对功率进行放大、变换与调...
  • 注: 1:此为永磁同步控制系列文章之一,应大家的要求,关于...1 什么是三闭环控制系统? 在双闭环(速度环和电流环)控制的基础上,在转速外环外再加一个位置外环,这个位置外环的主要作用是使得电机准确的跟随位...
  • 滚球控制系统

    千次阅读 2019-06-07 18:21:41
    滚球控制系统一、选材主控部分摄像头电机球平板机械结构算法部分 一、选材 主控部分 我们组选用的是xx做主控,战舰板做比较吃力,mini板做图像处理就更难受了。 摄像头 我们在尝试的过程中,使用了三款摄像头,ov...
  • 什么是集中式版本控制系统与分布式版本控制系统? 集中式版本控制系统:版本库是集中放在中央服务器的,当我们实际工作的时候,用的都是自己的电脑,所以首先要连接中央服务器,从那里得到最新的版本,然后编写或者...
  • STM32嵌入式实现智能家居控制系统

    万次阅读 多人点赞 2020-06-08 21:48:28
    本文将讲述如何用STM32嵌入式实现智能家居控制系统,所谓智能就是实时监测自主控制一些因素,如,温度、湿度、光照强度等,当室内光线较暗时自动打开灯,根据光线亮度的不同开灯数量也不同,当室内温度过高时红灯...
  • hslogic_磁吸控制系统

    千次阅读 2020-09-21 00:30:24
    磁吸控制系统是学习和研究控制理论的重要平台之一。对磁吸系统的研究可以归结为对非线性系统和不稳定系统的研究,这类复杂控制对象难以用数学公式进行精确描述,采用经典控制方法也难取得好的控制效果。 本文在...
  • 直流电机控制系统

    千次阅读 2017-11-15 22:39:47
    在这里,和大家分享一下我用单片机做的一个直流电机控制系统。这是我在计算机学院的一个实训中做出来的,当时我是机械学院的,对嵌入式很感兴趣,就跨专业选了这个实训(教务网允许)。初衷嘛,我是想实现一个四旋翼...
  • PID调节是连续控制系统中技术最成熟、应用最广泛的调节方式。PID调节实质是根据输入的偏差值,按照比例、积分、微分的函数关系进行运算,运算结果用以控制输出。 之前在项目中也用到过不少PID的算法,但大多属于...
  • 战术导弹制导控制系统设计

    千次阅读 2020-10-28 19:15:47
    本书是对战术导弹制导与控制最新设计方法的现代综合研究。 Design of Guidance and Control Systems ...分析了自动驾驶仪设计、导引头系统设计、制导律和理论,以及影响导弹制导控制系统性能的内外部干扰因素。 ...
  • 现代控制工程笔记(一)控制系统的状态空间描述

    万次阅读 多人点赞 2018-10-14 11:56:28
    在对控制系统进行动态分析和研究时,首先需要建立系统的数学描述,即数学模型。本文讲述现代控制理论中描述系统的数学模型。
  • 自动控制系统的分类

    千次阅读 2018-07-19 09:39:08
    按给定信号的形式不同,可将系统划分为恒指控制系统、随动控制系统和程序控制系统。 1.恒值控制系统  恒值控制系统(也成为定制系统、或调节系统)的控制输入是恒定值,要求被控量(液面水位、下罐压力)保持给定...
  • 树莓派打造智能语音控制系统

    万次阅读 多人点赞 2019-08-17 21:36:58
    树莓派的智能语音控制系统,该系统使用麦克风对语音进行采集,通过调用语音识别云服务对语音进行识别以及合成,再将识别的语音转化为机器识别的指令,从而实现机器人对话和控制机器人执行相应操作的效果。...
  • 基于STM32的温度控制系统仿真

    万次阅读 多人点赞 2020-04-29 22:16:17
    本文介绍如何用STM32来实现温度控制系统仿真,如果看完你还不会各种测试,那你真的没救了 准备 仿真软件:Proteus 8.9 链接: https://pan.baidu.com/s/1HSJi6dcCcZsSL_gd2p6VoQ 提取码: 9tev 下载,并安装,汉化,...
  • 智能农业控制系统

    千次阅读 2016-08-20 15:18:51
    智能农业控制系统能根据实时的农田环境数据、农作物生长情况,借助于数据挖掘技术、图像处理技术,结合专家决策库给出决策规则,自动控制农田设备,调节农田环境参数,控制农作物生长情况。智能农业控制系统如图所示...
  • STM32风扇控制系统

    千次阅读 2020-07-24 14:52:18
    基于STM32F103C8T6制作的风扇控制系统,系统总体功能包括:实时时钟,手动/自动模式切换,三档可调,风扇定时,温度显示。 上电初始化默认为时间显示界面,启动后进入风扇控制界面 模式切换功能:按下模式...
  • 伺服系统(自动控制系统

    万次阅读 2015-01-03 15:03:21
    伺服系统(自动控制系统) 伺服系统(servomechanism)又称随动系统,是用来精确地跟随或复现某个过程的反馈控制系统。伺服系统使物体的位置、方位、状态等输出被控量能够跟随输入目标(或给定值)的任意变化的自动...
  • 自动控制系统的典型环节

    千次阅读 2019-04-26 15:45:43
    自动控制系统是由不同功能的元件构成的。从物理结构上看,控制系统的类型很多,相互之间差别很大,似乎没有共同之处。在对控制系统进行分析研究时,我们更强调系统的动态特性。具有相同动态特性或者说具有相同传递...
  • 文章目录单回路控制系统整定参数整定要求常用整定方法理论计算方法理论计算整定法工程整定方法经验法(试凑法)临界比例带法(边界稳定法)衰减曲线法响应曲线法(动态特性参数法) 单回路控制系统整定 参数整定要求 通过...
  • 控制系统的振荡

    千次阅读 2017-02-28 21:48:19
    今天调试某个三闭环控制系统,从内到外依次是电流闭环、流速闭环、压力闭环,当调试好电流闭环、流速闭环,经过阶跃测试和正弦测试都OK,稳定性也OK。但是,当加上压力外环,系统开始变得不稳定,开始振荡了。有三种...
  • MATLAB控制系统校正工具sisotool的使用

    万次阅读 多人点赞 2017-11-12 11:27:17
    前言对于单输入单输出的控制系统矫正,性能指标的分析,使用MATLAB自带的sisotool GUI工具非常方便,他的主要功能如下: -时域、频域性能指标可视化 -绘制根轨迹,零极点配置 -PID的自动矫正等最大的方便的地方是...
  • MATLAB离散控制系统

    万次阅读 2017-12-08 14:11:42
    MATLAB离散控制系统仿真常用操作 1.离散传递函数构建 通过离散化连续时间传递函数得到 连续时间传递函数s函数用tf构建: Gc=tf([1],[1 1 0]);%参数为分子分母降幂排列S的系数 对其离散化:通常在对象前面...
  • 今年电赛我们队伍选择的是B题,滚球控制系统。最后我们得到了省特和国一,也算是了结了我大一时的心愿吧。下面对这次比赛进行一下总结,以后回忆起来的时候也有个念想。滚球控制系统是一个多变量、非线性控制对象,...
  • 控制系统的数学模型

    千次阅读 2016-11-18 22:09:09
    控制系统的数学模型
  • 基于matlab的控制系统与仿真-3

    千次阅读 多人点赞 2020-10-27 20:18:33
    基于matlab的控制系统仿真及应用(第二版),张聚,习题3。
  • 如何搭建一个机器人控制系统

    千次阅读 多人点赞 2019-06-14 10:37:43
    前言 这里着重从科研的角度来讲一下机器人系统该如何搭建,适合机器人专业、机器人爱好者参考。 机器人种类繁多,这里的机器人...机器人控制系统更新迭代较快,这里给出2019年世界主流控制系统设计理念,具体参考...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 371,567
精华内容 148,626
关键字:

控制系统