基于PLC的立体仓库堆垛机控制系统设计 下载本文

电气工程系毕业论文(设计说明书)

第二节 控制系统软件设计及其程序说明

定位自控系统PLC程序说明 程序运行步骤如下。 (1)初始化

在程序的第一个扫描周期(SM0.1=1)设置重要的参数。 (2)运行

按下设备的“启运”(START)按钮开始运行,首先调用子程序检测位置信号,取得当前位置记数,然后将位置计数存入在变量VD100(行记数)、VD120(列记数)中,以便程序判断是否已经到达指定的位置。

1、程序初始化

程序初始化由网络1和网络2完成。(网络是PLC梯形图的一个基本单位,通常可以理解为一个程序行。)这是一段简单的初始化过程程序,S7-200只读特殊内存SM0.1,只有在首次扫描循环时打开,所以这段初始化程序只在程序开始运行的时候执行一次。这里执行的两条指令对变更VW102以及VW132进行初始化,这两个变量分别为小车运行中所经过的行计数以及列计数。

由于要涉及到小车完成任务的过程以及完成任务以后返回的过程,所以程序在执行的过程中必须要明确其运动方式和目的,是前进或后退运动、升降运动或者是机械手臂的伸缩运动等。因此,在以下的程序中,每一个运动过程都必须加上很明确的标志和条件限制来确定其运动的方式和运动的目的,这样才不至于因为目的不明确而造成错误的判断以及错误的动作,造成存取货物的失败。 网络1的梯形图如图所示。

4

电气工程系毕业论文(设计说明书)

网络1的实现代码如下: LD SM0.1 //仅在首次扫描时SM0.1才为1 MOVW +0,VW102 //清除行位置记录变量VW102 MOVW +0,VW132 //清除列位置记录变量VW132 网络2的梯形图如图所示。 网络2的实现代码如下: LD SM0.0 //CALL singal 2、列向自动运行 面是一段小车沿列向自动运行的程序,由网络3和网络4完成。在这段程序中,首先要考虑的问题就是:小车处于前进或者是存入货物的过程,还是完成了预定任务返回的过程。但是由于PLC程序的执行特点是逐行扫描,所以仅仅判断小车是处于前进过程还是返回过程是不够的,因为在返回过程中,还有机械手臂从货架上缩回、机械手臂下降到初始位置等几个过程,所以说,必须要在程序中能够将这3种完全不同的运动区分开来。根据这种要求,在编写程序的时候加入了3个不同的BOOL类型的变量M20.1、M20.3、M20.5,分别作为小车沿列向运行到位标志、机械手沿行向运行到位标志、机械手货架到位标志。当变量为ON时,表示已经完成了该项动作,为OFF时表明小车还没有完成对应的运动。

Q0.0是开关量输出,表示启动小车前进,小车开始向前运动。在这里,笔者认为自动控制不需要控制小车的向后运动。

当小车还处于取放货的动作未完成的阶段时,需要判断的是小车是否已经完成了列的定位,如果未完成列的定位(M20.1为OFF),那么启动小车前进的电机,使小车向前运动。如果小车处于完成了取入货的动作时,那么判断小车是否已经完成了由货架上返回(伸缩机械手的运动)、是否已经完成了由指定行数退回初始行位置的运动(如果完成,小车应该是第一行以下的位置)。如果小车这两个过程都已经完成,那么将开始进行后退运动,Q0.2表示启动小车后退电机,使小车向后运行并返回初始位置。 网络3的梯形图如图所示。

网络3的实现代码如下: LD SM0.0 //SM0.0上电以后自动置为ON LPS AN M20.7 //如果M20.7值为OFF,那么认为是处于执行动作的过程中 AN M20.1 //如果M20.1值为OFF,那么认为小车第一种运动-前后列向运动还没有完成 5

电气工程系毕业论文(设计说明书) A M0.0 //如果M0.0值为ON-START RUN状态 A M10.0 //如果M10.0值为ON-自动运行状态 S Q0.0,0 //那么将置Q0.0为ON,Q0.0为小车前向运行输出 LPP A M20.7 //如果M20.7值为ON,那么认为小车处于执行动作完毕,返回途中 AN M20.5 //如果M20.5为ON-机械手已经由货架上返回 AN M20.3 //如果M20.3为ON-机械手已经下降到初始位置 A M0.0 //如果M0.0值为ON-START RUN状态 A M10.0 //如果M10.0值为ON-自动运行状态 S Q0.2, 0 //那么将置Q0.2为ON,Q0.2为小车后向运行输出

网络4的梯形图如图所示。

网络4的实现代码如下: LD SM0.0 //SM0.0上电以后自动置为ON LPS AN M20.7 //如果M20.7值为OFF,那么认为是处于执行动作的过程中 AN M20.1 //如果M20.1值为OFF,那么认为小车第一种运动-前后列向运动还没有完成 A M0.0 //如果M0.0值为ON-START RUN状态 A M10.0 //如果M10.0值为ON-自动运行状态 AD= VD102,VD120 //如果当前行进的行数等于设定的行数,说明已经到达指定 =Q0.1 //的位置输出停止运行信号 S M20.1,0 //设置达到标记 LPP A M20.7 //如果M20.7值为ON,那么认为小车处于执行动作完毕,返回途中 AN M20.5 //如果M20.5为ON-机械手已经由货架上返回 AN M20.3 //如果M20.3为ON-机械手已经下降到初始位置 A M0.0 //如果M0.0值为ON-START RUN状态 A M10.0 //如果M10.0值为ON-自动运行状态 6

电气工程系毕业论文(设计说明书) AD= VD102,VD120 //如果当前行进的行数等于设定的行数,说明已经到达指定 =Q0.3 //的位置输出停止运行信号 R M20.1,0 //清除达到标记 R M20.7,0 //清除达到标记 3、手动控制 下面一段程序是手动情况下对小车进行控制的程序代码,由网络5完成。在开始按钮已经按下的情况下(START按钮的状态由变量M0.0来对应,)M0.0为ON时表示已经开始运行,反之则为停滞状态。网络5的梯形图如图所示。

网络5的代码如下: LD SM0.0 //SM0.0上电以后自动置为ON LPS AN M20.7 //如果M20.7值为OFF,那么认为是处于执行动作的过程中 AN M20.1 //如果M20.1值为OFF,那么认为小车第一种运动-前后列向运动还没有完成 A M0.0 //如果M0.0值为ON-START RUN状态 A M10.0 //如果M10.0值为ON-自动运动状态 S Q0.0,0 //那么将置Q0.0为ON,Q0.0为小车前向运行输出 LPP A M20.7 //如果M20.7值为ON,那么认为小车处于执行动作完毕,返回途中 AN M20.5 //如果M20.5为ON-机械手已经由货架上返回 AN M20.3 //如果M20.3为ON-机械手已经下降到初始位置 A M0.0 //如果M0.0值为ON-START RUN状态 A M10.0 //如果M10.0值为ON-自动运动状态 S Q0.2,0 //那么将置Q0.2为ON,Q0.2为小车后向运行输出 4、自动控制 下面是自动控制部分,由网络6、7实现。

7