立体仓库是一种利用高层立体货架储存物资, 用自动控制堆垛机进行自动存取货物的仓库[1,2]。由于立体仓库具有节约用地、提高空间利用率、减轻劳动强度、提高仓储自动化水平及管理水平、提高物流效率等诸多优点, 而被诸多企业广泛采用。现在的立体仓库绝大多数采用WMS (仓库管理系统) 进行入库作业、出库作业、仓库调拨、库存调拨和虚仓管理等功能。由于PLC在执行逻辑运算、顺序控制、定时、计数与算术操作等方面的优势, 现场的执行机构如堆垛机、出入库输送机、有轨穿梭小车 (RGV) 等均由PLC进行控制[3]。立体仓库的货位多达几千个, 货位的指定一般由3个坐标组成。本文介绍西门子S7-300PLC的间接寻址类型和格式, 以及利用间接寻址快速准确的找到WMS给定的货位地址的方法。
寻址, 就是指定指令要进行操作的地址。给定指令操作的地址方法, 就是寻址方法。PLC的寻址分为直接寻址和间接寻址, 所谓直接寻址, 就是直接给出指令的确切操作数。间接寻址是在直接寻址的基础上面建立起来的, 也就是直接寻址得到的数据是一个地址, 通过这个地址找到最终的数据, 也就是两次寻址, 第一次得到的是地址, 第二次才是目标数据。相对于直接寻址而言的, 指令地址字段的形式地址D不是操作数的真正地址, 而是操作数地址的指示器, 或者说是D单元的内容才是操作数的有效地址。
间接寻址分为存储器间接寻址和寄存器间接寻址, 间接寻址的指针分为16位指针和32位指针, 而32位指针又分为内部区域寻址与交叉区域寻址。16位地址指针用于定时器、计数器、程序块 (DB、FC、FB) 的寻址, 16位指针被看作一个无符号整数 (0~65535) , 它表示定时器 (T) 、计数器 (C) 、数据块 (DB、DI) 或程序块 (FB、FC) 的号, 16位指针的格式如图1。
32位地址指针用于I、Q、M、L、数据块等存储器中位、字节、字及双字的寻址, 32位的地址指针可以使用一个双字表示, 第0位~第2位作为寻址操作的位地址, 第3位~第18位作为寻址操作的字节地址, 第19位~第31位没有定义, 32位指针的格式如图2。
本控制系统由多台套西门子S7-300PLC分别控制几台堆垛机系统和地面输送控制系统, PLC之间通过Profibus通讯传递命令和各自状态, 地面控制系统和堆垛机控制系统[4]通过德国劳易测无线激光调制解调器实现。
系统间接寻址用于立体仓库的列及层的距离转换, 本立体仓库的货架由多个78列和11层组成, 货位的列及层的定位由激光测距完成, 即每个货位在列和层的方向分别对应一定的距离。所有货位的列方向和层方向的距离采集后分别放到连续的数据区内。距离为双整数类型, 一个距离占内存区域的四个字节。上位计算机传递给堆垛机的命令里只包括列和层的序号, 为整数类型。以下是间接寻址的子程序:
说明:IN0为子程序的使能信号, IN1为层或列的序号, IN2为PLC数据区的DB号, IN3为数据区的偏移地址, OUT4为输出地址, IN5和IN6为限幅值, B1为报警信号。程序采用寄存器间接寻址方式, 非常灵活方便地将上位机命令中的序号转换为距离供PLC使用。
(1) 双字指针[5]由于有位格式存在, 所以对地址标识符没有限制。也正是由于双字指针是一个具有位的指针, 因此, 当对字节、字或者双字存储区地址进行寻址时, 必须确保双字指针的内容是8或者8的倍数。
(2) 建立指针的寄存器, 装入的是地址而不是数据本身。
(3) 用间接寻址[6]方式存取数据时分为建立指针、间接存取和修改指针。缺一不可。
通过间接寻址的方法取得数据, 程序非常简单, 而且更具柔性, 可以标准化。只需在调用时赋予形参不同的数值, 既可以在不同的堆垛机及不同列及层的立体仓库控制系统中使用。在其他应用中如对存储区域数据遍历[7]时, 使用间接寻址使指令的执行结果有动态的变化, 也同样能达到简化程序的目的。
标签:
上一篇: 仓库管理与物资管理会计协调方法解析
下一篇: 浅析高架仓库安全管理与对策