转给你身边的工程师!从零开始搭建一个完整AGV控制系统

导语

大家好,我是智能仓储物流技术研习社的社长,老K。在我们仓储物流自动化行业中,AGV被应用的越来越多,这个词被提及的场合也越来越多。一个完整的AGV究竟是怎么实现移动、导航、搬运的呢?今天分享一个从零开始的简易AGV控制系统的搭建和实现过程。

1.车载控制器


车载控制器的类型

  车载控制器是控制系统乃至整个 AGV 的核心,那么应该选择哪种控制器呢?根据笔者的经验,从硬件角度看,AGV采用的车载控制器基本分为以下三种:

  1. PLC:代表产品例如西门子公司的 S7-1200和1500系列,使用 AGV 厂家有佳顺、嘉腾。PLC 以稳定性好、可靠性高著称,但是它的长项是逻辑控制,一般只能做简单的运动控制。西门子 PLC 的价格大概在2000元~12000元左右。

  2. 工控机:代表产品例如倍福公司的 CX5130,使用厂家有昆船、罗伯特木牛流马。工控机其实就是一台电脑,只不过经过精心的设计使其具有很强的抗干扰能力,可以用于振动、电磁辐射等恶劣的工业环境。工控机结构紧凑、体积小巧,其可以运行通用的操作系统,比如 Windows、Linux。以倍福为例,安装它的 TwinCAT 控制软件后,会在 Windows 操作系统中插入实时内核,将电脑变成适合工业场合的实时控制系统。倍福工控机的售价大概在5000到30000元左右。

  3. 单片机:代表产品例如 STM32,使用厂家有海通、机科。相比前两者,单片机的价格低廉,加上外围器件成本最多也不过千元左右。使用单片机的一个缺点是,如果要做成成熟的产品,你需要花费很多精力设计外部电路以及各种底层算法。软件开发环境可能会差一些。

  上面的分类并不意味着三者是泾渭分明的,例如 PLC 的核心芯片可能就是一个单片机;而工控机的编程语言很可能就采用了 PLC 领域使用的梯形图、ST等语言;单片机上面也可以装载操作系统,从而形成一个完整的控制器。所以,虽然它们各有自己适用的领域,但是相互之间也会取长补短,演变成你中有我我中有你的局面。

  当然,现在市场上有专门的AGV控制器,例如美国NDC的CVC600,瑞士BlueBotics的ANT、浙江科聪智能的 MRC5000,上海仙知机器人的SRC。与通用的工业运动控制器或PLC相比,这类控制器集成了成熟的导航和运动控制算法,为用户省去很多工作,而且其稳定性和防护等级更高,但其价格也较高(2万~6万元)。

 

 西门子 S7-1200 PLC

  这里选择西门子的 S7-1215C 型 PLC 作为 AGV 的车载控制器(以后简称为S1200),如下图所示。由于西门子的产品型号非常丰富,各个型号在接口种类、性能等方面有细微的差别,在购买时为了准确描述具体是哪个型号,最好使用订货号。西门子每种产品都有一个唯一的订货号,在采购时只需要提供这个编号即可。在西门子的编程软件中也可根据订货号查找对应的型号。当然,使用西门子的产品也有一些缺点,比如它的PLC是通用产品,并不是针对车辆控制而专门设计的。淘宝上一个100元的ARM开发板都具有RS485、CAN、以太网接口,而西门子却要为此付出昂贵的代价,西门子的产品开放性非常差。所以,以后的AGV会逐步淘汰西门子的产品。

 

  

什么是上位机和下位机?

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

  想对PLC进行设置或编程,需要使用网线将 S1200 与上位机连接,只需要将上位机的 IP 地址设置为与 PLC 同一网段即可。S1200 一般出厂默认的 IP 地址是 192.168.0.1,所以可以将你的电脑的 IP 设置为 192.168.0.2。对于 AGV 这种移动设备,通常会采用无线通讯,例如接收调度系统的控制指令。无线通信方式有 WIFI、ZigBee等等。由于 WIFI 在实际中使用较多,我介绍一下它的配置方法。使用 WIFI 连接西门子 PLC 非常方便,只需要用网线将 PLC 的以太网口连接到无线路由器的 LAN 口,然后用笔记本搜索到对应的 WIFI 后连接即可访问 PLC。所用的无线路由器可以是任意品牌,甚至家用路由器都可以。笔者在淘宝买过一款国产以太网转 WIFI 转换器,但奇怪的是不支持博途软件(博图无法访问到PLC),所以你购买前最好跟商家确认是否能用于博途。如果你想追求更稳定可靠的通信,可以选择工业级通讯模块,例如摩莎(MOXA),它的供电电压兼容12V~48V。

  

2.驱动器


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

低压驱动器品牌

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

PLC与驱动器通信

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

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

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

3.移动机构


    AGV要想实现搬运、移载就要有移动机构,通常采用的移动机构有舵轮、差速轮和麦克纳姆轮。它们各自有什么特点呢?什么场合又该使用哪种轮子呢?

  麦克纳姆轮的优点是运动精度高,但是结构复杂,磨损严重,对地面挑剔,虽然麦克纳姆轮问世超过30年了,但是实际应用并不多,这也说明它不是一个实用的产品。下面我们主要讲解舵轮。

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

4.导航


磁条

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

4.2 磁导航

  磁导航传感器也叫磁循迹传感器,它用来帮助AGV巡线行走。磁导航传感器一般安装在AGV车体或者驱动轮组上,在AGV运动时始终保持在磁条上方一定高度内。磁导航传感器相对于车体的安装位置一般在对称中轴线上,通常对称安装,例如前后各一个或者左右各一个。磁导航传感器的原理很简单,传感器上有若干个探头,每个探头都能检测磁场,位于磁条上方(一定高度内)的探头有信号输出,超出磁条的探头则没有信号。探头通常俗称为“点”,点越多表示传感器的分辨率越高,当然价格也越贵。传感器通常的点数有:6点、8点、16点几种。磁导航传感器并不是什么神秘的东西,笔者曾经拆解过一款磁导航传感器,这里所说的探头无非有两种,一种是霍尔元件、还有一种是地磁传感器。霍尔元件的特点大家大学的时候应该都学过,它能感应磁场,价格低但是精度通常不高;地磁传感器基本都采用美国 PNI 公司的产品。

   它要搭配专用的驱动芯片 PNI-12927,这个芯片是3.3V供电,所以传感器内部要设计3.3V稳压电路,而且这个驱动芯片采用 SPI 总线,要对其信号进行处理和电压变换,这通常由单片机来完成。磁导航传感器的输出信号可以是数字量也可以是总线型数据,对于点数多的传感器来说一般用总线型,因为如果使用数字量需要很多根线。假设一个 AGV 使用4个传感器,每个传感器的分辨率是16点,那就要有4×16=64 4\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 型,它们的接法是一样的。

5.供电系统


电池

  AGV启动时需要的电流大,因此需要使用动力电池,使用最多的动力电池有铅酸电池和锂电池。铅酸电池寿命短、能量密度低,而锂电池密度高、但是成本也高。还有一种电池叫做超级电容,它的寿命很长,但是能量密度非常低,所以用的不多。

  知名的电池厂家有霍克(HAWKER)、荷贝克(HOPPECKE)等。下图是霍克 AGV 专用电池标签。铅酸电池的额定放电电流一般是0.5C,例如80Ah的电池,额定放电电流是0.5×80=40A 0.5\times80=40A0.5×80=40A。铅酸电池的最大放电电流一般是3C,即3×80=240A 3\times80=240A3×80=240A。电池的电压会随着电量消耗逐渐降低,开始降低得很慢,当电量很少时会急剧下降。根据这个关系,通过检测电压就能知道电池还剩余多少电,是否应该充电。

我们如何估计一个 AGV 该选用多大容量的电池呢?

  AGV 上最耗电的器件就是电机了。一般来说,电机的额定功率 P PP会写在电机铭牌上。根据初中物理知识,功率等于电压和电流的乘积,即

                                           P=UI P=UI

                                               P=UI

  驱动电机的额定电压一般容易得到,所以通过上式可以计算出电流。当然,实际工作的功率一般会比额定功率小,所以这里要乘以一个系数,具体要看 AGV 的负重、工作路面等。求出电流乘以工作时间就是电池的容量了。注意,电池的容量和能量是两个不同的概念,前者是电流乘以时间(单位是“安时”(Ah))、而后者是电流乘以电压乘以时间(单位是“千瓦时”(KWh))。

电压变换

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


6.开关


电源开关

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

急停开关

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

7.电气元件


  AGV上既有强电也有弱电,例如舵轮的驱动器需要的电流通常很大,而控制器和一些传感器只需要很小的电流。我们要合理设计电路,防止它们相互干扰,更主要的是包含弱电器件。根据国家标准GBT 30029-2013 《自动导引车(AGV)设计通则》中第6.7.7.4项的规定,控制器应该具有过压保护、欠压保护、过流保护功能。

  我们要在电路中加入以下器件:

  ■ \blacksquare■ 接触器:用小电流控制大电流。上面的电源开关只允许通过较小的电流,但有时设备里有些组件需要大电流才能启动,例如舵轮驱动器。我们不能用一个开关既控制小电流也控制大电流,这时就需要借助接触器。接触器内部有个电磁铁,我们用小电流控制电磁铁的吸合,电磁铁带动另一组开关闭合使大电流通过。在AGV上使用的是直流接触器,注意接触器的线圈会发出一定热量,安装应当注意散热和对附近器件的影响。

      断路器:起到过流、欠压保护的作用。断路器也相当于一个开关,在短路等电流过大时断开,保护设备;

      继电器:也相当于一个开关,它是用小电压控制触点开闭的,但是注意触点不能流过太大电流。

  AGV 采用电池作为能源,而电池的电压通常不是很稳定,在使用时电压会波动。虽然西门子的 PLC 对输入电压具有一定的适应能力,但是我们最好用一个24V到 24V 的稳压模块将电池的电压稳定后再供给 PLC。对于使用24V供电的其它器件,例如磁导航传感器,也是这样。

8.激光避障传感器


    AGV的安全防护方式有接触式和非接触式之分。触边属于接触式的,而激光传感器和超声波传感器属于非接触式。当然非接触式的传感器更加安全,因为不需要直接接触即可监测障碍物。

  常用的国外激光传感器品牌有SICK和HOKUYO。以SICK的Tim310为例,它的监测距离可达3米,可以设置不同的监测区域形状。Tim310的输出是I/O信号,用以判断是不是监测到了障碍物。 

9.触摸屏


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

  我选择昆仑通态的触摸屏,它采用24V直流供电,并配有网口,用普通网线将触摸屏和 S1200 连接,并将触摸屏的 IP 地址设置为与 PLC 所在同一网段(例如192.168.0.3)即可实现和 PLC 的互联。设置 IP 的方法是上电后在进入正式界面之前,在屏幕的任意位置点击一下即可进入设置界面。

  我们如何使用触摸屏呢?我们需要对触摸屏进行编程,或者说“组态”。编程需要使用昆仑通态自己的组态软件:MCGS,可以在它的官方网站免费下载。

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

10.PLC编程


编程工具 STEP 7

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

  实际上,STEP 7 是过时的名称,现在西门子想将它和另外几个自动化软件都统一成一个平台,适用于西门子旗下所有的设备,这个平台被称为:TIA Portal(博途),本文使用的就是 TIA V13。西门子公司为了保持延续性,软件的名称有时是 STEP 7,有时又用 TIA,本文我为了与历史统一还叫 STEP 7 好了。西门子的软件跟硬件一样种类繁多,光 STEP 7 就有几个版本,例如专业版(professional SP1,如下图左所示),而每个版本又有不同的更新包。注意 SP1 可能缺少某些功能(下面我会提到),因此我使用了更新包。具体来说,我使用的是 STEP 7 V13.0 SP1 Upd8,如下图右所示。

 

  在软件安装时我们注意到有这样的说明:STEP 7是用于编程的工程组态工具。要使用 PLC,编程只是一方面,还有一个重要的工作就是“组态”。“组态”说白了就是“配置”,配置 PLC 的输入输出接口、参数、功能等等。首先,在“设备组态”页面选择我们的 PLC 型号就可以了。

 西门子PLC的硬件资源

要想用好PLC,就要熟悉它的一些特点,下面我们就了解一下 S1215C 的特点。1215C的内存有多大呢?

  我们用电脑连接上PLC,然后在博途软件左侧栏双击“在线和诊断”,然后在打开窗口中点击“存储器”,如下图所示。

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

  1. 装载存储器: 4194304 41943044194304 Byte ÷1024÷1024=4 \div 1024 \div 1024= 4÷1024÷1024=4MB

  2. 工作存储器: 128000 128000128000 Byte ÷1024=125 \div 1024= 125÷1024=125KB 

  3. 保持存储器: 10240 1024010240 Byte ÷1024=10 \div 1024= 10÷1024=10KB

  这和系统手册中给出的数值是一样的,如下:

  你看完是不是都哭了,10年前的手机存储器都比这要大。这三个存储器各有什么作用呢?

  1. 装载存储器:用于存储用户项目文件(例如:用户程序、组态信息),相当于硬盘;

  2. 工作存储器:CPU在执行用户程序时会将一些项目内容从装载存储区复制到工作存储区,相当于电脑的内存;

  3. 保持存储器:掉电后数据仍然保持。如果你希望一些数据能在断电后一直保持就要使用这个存储器。但遗憾的是,小气的西门子公司只给了我们10KB。

  PLC 扫描一次程序需要多长时间呢?

  PLC会自动记录时间,在同一页面,打开“循环时间”,就能看到PLC完整执行一遍程序需要的时间,如下图所示。这个时间不是固定的,取决于你的程序长短,一般的执行时间在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 的其它功能介绍,例如周期定时器,如下图所示。

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

西门子PLC的编程方式

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

10.4.1 定义常量

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

10.4.2 定义函数

  西门子自带的函数只能完成简单的功能,为了实现更高级的控制我们还要自己写一些函数。笔者在开发机器人控制器的过程中发现,网上公开的PLC函数库很少,目前笔者只知道OSCAT库。大家都在讨论基本的逻辑控制,却鲜有人讨论更高级的数学计算,可能 PLC 并不适合高级运动控制算法的实现。

  下面我用一个很简单的进行角度弧度转换的函数为例来说明如何在 STEP 7 中自定义函数。

  (1) 首先,我们新建一个函数FC(这个函数比较简单,不需要背景数据,所以不用 FB),实现的语言选择 SCL 语言。函数名为“DegreeToRad”。

  (2) 然后,我们要明确这个函数的输入,在上面的变量定义栏中的 Input 项目中输入 angleInDegree,类型选择为 Real,如下图所示。在Return 项目中将 DegreeToRad 变量的类型改为 Real,这里注意不要修改 DegreeToRad 变量的名字。

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

10.4.3 定时器

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

10.4.4 磁循迹算法

  为了让 AGV 始终沿着磁条行走,我们要编写相应的控制程序,也就是循迹程序。

  循迹程序的逻辑可以非常简单,我们的输入是磁导航传感器的读数,输出则是舵轮转向的速度(或差速轮的转速差),磁条如果在 AGV 车体中心线的左侧,我们就往左偏转,反之在右侧就往右偏转,而如果恰好在中间则保持不动。下面的仿真动画展示了这种控制策略的效果,其中只使用了一个传感器和一个舵轮,但已经可以沿着曲线行走了。磁导航传感器有六个点,安装在前方,红色的方格表示感应到了磁条,白色表示没有感应到。

--------------------- 

作者:robinvista

来源:CSDN

     

智能仓储物流技术研习社

长按识别别关注

围绕厂内物流Intralogisitics,分享仓储物流自动化技术、设备、系统等知识,畅谈智能仓储物流的未来和去向。专栏包括智能仓储物流自动化规划设计,自动化立体库、智能机器人,自动化拣选系统,仓储管理软件WMS,AGV应用等等一系列热点内容。

  您也可以扫描如下与社长老King取得联系。

原创|长文|孙子兵法| 百万级订单如何“拆零拣选”?


不读后悔:风口上的仓储自动化


【原创】葵花宝典!自动化拣选的秘密(整箱拣选)- 偷摸收藏,练吧


继续收藏!轻载料箱类自动化立体库的前世今生


建议收藏!老K谈谈自动化立体库的前世今生!


King's King
关注 关注
  • 12
    点赞
  • 109
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
AGV车载控制系统搭建(初学者入门)
qq_14925953的博客
06-11 8273
本文转载自:  https://blog.csdn.net/robinvista/article/details/78349627目的   本文介绍自动导引车(AGV)简易车载控制系统的实现过程,分为硬件搭建和软件设计两部分,并在其中穿插 AGV 控制的基础知识讲解。要想搭建一个完整控制系统,你需要考虑更多东西的(可见这里)。 1. 车载控制器1.1 控制器的类型  车载控制器是控制系统乃至整个...
agv系统介绍_AGV 搬运机器人机械系统设计介绍
weixin_42551260的博客
01-06 1065
AGV是在没有人工指引或是驾驶的前提下,可以按照指定的路径行进,能够进行货物的装卸及搬运等一系列功能的自动化设备。AGV作为一种智能机器人,因其在货物搬运、目标牵引及生产线装配等领域的特殊用途,越发成为了各种工业生产中必不可少的重要工具。今天米克力美小编给大家分享AGV 搬运机器人机械系统设计。AGV 搬运机器人AGV小车的结构形式一般包括三个方面:轴数,驱动形式和转向形式。驱动形式分为:单驱动形...
AGV小车经典算法设计及应用
最新发布
木牛的博客
07-24 447
AGV小车运行在正确的运行轨道上时,两放大器反馈给PLC模拟量的值相同,当AGV小车偏离轨道时,两放大器反馈给PLC的值便有差别,PLC根据两模拟量的差值便能判断出AGV小车偏离运行轨道的程度及方向,并通过控制运动控制器使AGV小车往正确的轨道运行。在现代化工业的发展中,提倡高效,快速,可靠,提倡将人从简单的工作中解放出来。AGV小车系统除了上文提及的运行系统及导引系统外,还需要有中央控制系统,它能采集导引系统返回的位置信息,通过运算转换,反作用于运行系统,使AGV小车能做出需要的动作。
基于三菱PLCAGV控制系统设计(说明书+CAD图纸+程序)
zwlzyhzylzyl的博客
06-07 530
本文根据设计任务需求,查阅了大量的AGV小车的相关文献的基础上,开发了基于PLC和触摸屏为核心的AGV小车控制系统的解决方案,本控制系统的硬件结构是以三菱PLC为核心,使用了模块化设计思想。同时实现了工业自动化教学任务的需求。自动导引车(AGV小车)是典型的机电一体化产品,它是一种高速行驶、重复操作和精度较高的仿人操作自动化设备,其综合了精密机械设计与生产、微电子与计算机技术、自动控制与驱动技术、传感与信息处理技术、人工智能与仿生学等多种学科的多种研究成果,是跨学科的综合性技术,得到了广泛的运用。
AGV小车的制作
2301_81137304的博客
01-10 749
电源管理电路需要保证稳定的电源供应,电机驱动电路需要能够提供足够的电流以驱动电机,传感器接口电路需要能够正确地接收和处理传感器的信号,无线通信电路需要能够保证小车与控制中心之间的稳定通信。集成传感器需要考虑到传感器的精度、响应速度、稳定性等参数,以保证小车的准确感知和安全运行。AGV小车的电机驱动需要考虑到电机的种类、驱动电路的稳定性、控制算法的精度等部分。根据实际需求选择合适的电机种类和控制算法,设计出能够稳定控制电机的驱动电路,保证小车的运动性能和负载能力。AGV小车制作与代码。
agv系统介绍_AGV有什么用
weixin_42378094的博客
12-24 681
{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":10,"count":10}]},"card":[{"des":"充分利用智能调度算法、物联网技术和数字化控制技术,结合客户现场的实际需求,来实现对AGV物流运输的自动化智能调度控制,助力AGV行业快速发展。","link...
agv系统介绍_AGV智能小车控制系统介绍
weixin_30842027的博客
12-24 4993
康道智能资讯:AGV智能小车控制系统介绍,无人搬运车所以能够实现无人驾驶,导航和导引对其起到了至关重要的作用,随着技术的发展,目前能够用于AGV的导航/导引技术主要有以下几种直接坐标、电磁导引、磁带导引、光学导引、激光导航、惯性导航、视觉导航。AGV系统是一套复杂的控制系统,加之不同项目对系统的要求不同,更增加了系统的复杂性,因此,系统在软件配置上设计了一套支持AGV项目从路径规划、流程设计、系统...
agv系统介绍_带你了解AGV的发展与未来,AGV的前景分析
weixin_39956451的博客
12-25 754
  提起搬运设备,一般人首先想到的无非是叉车、搬运小车等传统的搬运设备。随着智能化与自动化的发展,制造业对自动化智能化的需求渐增,对提高制造系统的物流效率,进而提高整个生产系统的生产效率需求更为强烈,AGV自动搬运车应运而生。通过AGV进行物料运输能有效地提高物流自动化水平及运输效率,大大节省了时间及成本。AGV自动搬运车  虽然AGV在很多制造业都应用,但您是否真的了解AGV呢?知道AGV的发展...
5分钟搭建电气控制系统 WEB组态
BluePanther的专栏
03-24 899
互联网大行其道的今天,无需安装臃肿的客户端。打开网页5分钟就能搭建自己的控制系统,就这么简单。
智能仓储物流系统的魂---数字化信息管理系统WMS,WCS……
nickelwang的博客
10-20 8347
导语大家好,我是智能仓储物流技术研习社的社长,老K。之前给大家分享了在工厂或者物流中心内的各个关键业务环节的自动化技术和系统,比如收货,入库,出库,拣选,分拣,打包等。之前我们更多的是从...
长文!智能物流如何实现全面数字化
nickelwang的博客
12-02 677
导语大家好,我是智能仓储物流技术研习社的社长,你的老朋友,老K。知识星球*原创电子书*深海社区*微信群从事仓储物流自动化的朋友们可能会说,我们做的自动化仓库、AGV等等集成项...
AGV地图生成系统
04-08
能够根据客户需求自动生成AGV的地图,在VS2010下调试完毕,能够正常运行
AGV电气原理图
01-24
AGV电气原理图,很详细,共41页,可以作为AGV电气原理图的规范
自动引导小车agv系统
11-28
自动引导小车agv系统,一种用于超声波导引车的超声波导航系统。
台达AGV程序
04-30
工场自动化应用程序,可以自动识别转弯,设定站点。
AGV小车控制程序
09-17
自动AGV小车的运动控制,通过磁条使用AGV小车实现规定路径的运行,同事在设定位置停止等待
MATLAB算法实战应用案例精讲-【自动驾驶】自动驾驶中的自动泊车功能(补充篇)
qq_36130719的博客
06-22 1269
从最开始2005年的雪铁龙CityPark自动泊车系统的出现,当时只能实现侧方停车,正面停车,倒车停车等一些简单动作的时候,到前几日的百度2020科技大会发布的自主泊车功能,实现车主到达目的地后,汽车自动找寻车位,并完成泊车,同时实现召唤功能,也即远程召唤,定位车主位置,汽车自动前来寻找车主,该泊车系统相当于完全可以取代代客泊车人员的工作,并且显得更加智能化与黑科技感,这样的自动泊车系统可能才是真正意义上实用的泊车系统,机器替代了传统的泊车操作,解放了该项工作的人工劳动力,给人们的出行带来了新的驾驶体验。
智能制造名词收录
weixin_30526593的博客
03-27 5059
1.CIMS 计算机/现代集成制造系统 (Computer/contemporary Integrated Manufacturing ) CIMS 定义:CIMS是通过计算机硬软件,并综合运用现代管理技术、制造技术、信息技术、自动化技术、系统工程技术,将企业生产全部过程中有关的人、技术、经营管理三要素及其信息与物流有机集成并优化运行的复杂的大系统。作为制造自动化技术的最新发展、工业自动化的革...
移动机器人入门篇
weixin_30562507的博客
05-15 988
从零九年开始接触机器人研发,不得不说,有必要写一篇长文了。 我在接触机器人前,接触过单片机,那时候的单片机还是51、PIC16这种,当时就特别好奇:机器人一个关节需要几颗这样的芯片?这个问题我记得最清楚,因为做了机器人,发现根本不用芯片,整个机器人一个芯片就够了。不过随着认知的不断提升,这个问题很难回答。那我们就开始我们的机器人之旅。 机器人解释为机器获得了一些人的特点。电视里经常...
两轮差速agv pid控制代码
05-24
以下是一个基本的两轮差速AGV的PID控制代码示例: ```C++ #include <SoftwareSerial.h> SoftwareSerial mySerial(2, 3); // RX, TX int leftMotorSpeed = 0; int rightMotorSpeed = 0; float Kp = 1.0; // 比例系数 float Ki = 0.1; // 积分系数 float Kd = 0.1; // 微分系数 int setpoint = 100; // 目标速度 int error = 0; // 偏差 int last_error = 0; // 上一个偏差 int integral = 0; // 积分值 void setup() { mySerial.begin(9600); } void loop() { // 读取左右轮速度 int leftSpeed = readLeftSpeed(); int rightSpeed = readRightSpeed(); // 计算偏差 error = setpoint - (leftSpeed - rightSpeed); // 计算积分值 integral += error; // 计算微分值 int derivative = error - last_error; last_error = error; // 计算输出值 int output = Kp * error + Ki * integral + Kd * derivative; // 限制输出值在[-255, 255]之间 if (output > 255) { output = 255; } else if (output < -255) { output = -255; } // 根据输出值计算左右轮速度 leftMotorSpeed = setpoint + output / 2; rightMotorSpeed = setpoint - output / 2; // 限制左右轮速度在[-255, 255]之间 if (leftMotorSpeed > 255) { leftMotorSpeed = 255; } else if (leftMotorSpeed < -255) { leftMotorSpeed = -255; } if (rightMotorSpeed > 255) { rightMotorSpeed = 255; } else if (rightMotorSpeed < -255) { rightMotorSpeed = -255; } // 控制左右轮速度 controlLeftMotor(leftMotorSpeed); controlRightMotor(rightMotorSpeed); } int readLeftSpeed() { // 读取左轮速度的代码 } int readRightSpeed() { // 读取右轮速度的代码 } void controlLeftMotor(int speed) { // 控制左轮电机的代码 } void controlRightMotor(int speed) { // 控制右轮电机的代码 } ``` 需要注意的是,PID控制器的参数需要根据具体的AGV系统进行调整。
写文章

热门文章

  • 010机场等出租车排队时我该选择排哪队? 13898
  • 002仓储物流自动化系统常见哪些设备? 13102
  • 转给你身边的工程师!从零开始搭建一个完整AGV控制系统 10608
  • 干货|货架对地面载荷的计算方法 10218
  • 盘点!AGV的12种导引导航方式 8703

最新评论

  • 物流仿真在AGV调度方面应用案例

    Echo_littleshan: 请问用的是哪个软件?

  • WMS、WCS、PLC之间的交互方法

    江东子弟Pro: 加不了群。。。

  • 战火重燃!全球仓储机器人内卷大盘点~

    普通网友: 文章构思巧妙,结构紧凑,既有深度又有广度,读后让人受益匪浅,确实是一篇值得一读的佳作。【我也写了一些相关领域的文章,希望能够得到博主的指导,共同进步!】

  • WMS、WCS、PLC之间的交互方法

    心猿: 通讯协议用的是什么tp吗?

  • 争议性强:国内市场-立体库品牌TOP10

    普通网友: 文章内容通俗易懂,适合不同层次的读者。【我也写了一些相关领域的文章,希望能够得到博主的指导,共同进步!】

最新文章

  • 物流信息系统ppt
  • 2024年AGV厂商之间差距越拉越大,尾部企业已经要揭不开锅了
  • 亚马逊新仓库用10倍数量物流机器人:争取不抢人的工作和饭碗
2024
10月 18篇
09月 31篇
08月 46篇
07月 55篇
06月 52篇
05月 60篇
04月 53篇
03月 15篇
02月 17篇
01月 23篇
2023年181篇
2022年126篇
2021年194篇
2020年157篇
2018年31篇

目录

目录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家玻璃钢雕塑如何制作方法滕州气球商场美陈市政玻璃钢雕塑高性价比的选择沈阳惠州玻璃钢动物雕塑徐州玻璃钢广场雕塑厂家批发品牌玻璃钢雕塑推荐厂家绍兴户内玻璃钢雕塑优势户内玻璃钢雕塑电话玻璃钢饭店人物雕塑新品推荐昆明玻璃钢蘑菇雕塑商场美陈培训郑州玻璃钢雕塑艺术厂怎么分辨玻璃钢雕塑跟铜雕像玻璃钢古代人物雕塑定制幼儿园玻璃钢卡通雕塑商场美陈吊钩公司站姿玻璃钢雕塑多少钱武进玻璃钢卡通雕塑襄阳玻璃钢熊猫雕塑多少钱湖州玻璃钢雕塑收费标准眉山成都商场美陈排行玻璃钢鹿雕塑摆件北京优质玻璃钢雕塑怀集玻璃钢抽象雕塑公司汕头玻璃钢果蔬雕塑番禺动物雕塑玻璃钢图片辽宁玻璃钢艺术雕塑常州玻璃钢仿铜雕塑定制价格仿铜玻璃钢雕塑定做价格深圳欧式玻璃钢雕塑价位香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化