上海地友自动化设备有限公司
S7-200CN , S7-200 , Smart200
西门子低压3RH21221FB40

西门子低压3RH21221FB40西门子低压3RH21221FB40  

STEP7-Micro/Win在程序编辑器窗口里为每个POU提供一个独立的页。主程序总是第1页,后面是子程序或中断程序。因为各个程序在编辑器窗口里被分开,编译时在程序结束的地方自动加入无条件结束指令或无条件返回指令,用户程序只能使用条件结束和条件返回指令。

    通常将具有特定功能且多次使用的程序段作为子程序。子程序可以多次被调用,也可以嵌套(*多8层),还可以递归调用(自己调用自己)。子程序有子程序调用和子程序返回两大类指令,子程序返回又分条件返回和无条件返回。子程序调用指令用在主程序或其他调用子程序的程序中,子程序的无条件返回指令在子程序的*后网络段。梯形图指令系统能够自动生成子程序的无条件返回指令,用户无需输入。

    子程序的调用是有条件的,未调用它时不会执行子程序中的指令,因此使用子程序可以减少扫描时间,同时可使整个程序功能清晰,易于查错和维护,还能减少存储空间。为了移植子程序,应避免使用全局符号和变量,例如V存储区中的**地址。

     在编程软件的程序数据窗口的下方有主程序(OBI)、子程序(SUB0)、中断服务程序(INT0) 的标签,点击子程序标签即可进入SUB0子程序显示区。也可以通过指令树的项目进入子程序SUB0显示区。添加一个子程序时,可以用编辑菜单的插入项增加一个子程序,子程序编号n从0开始自动向上生成。用鼠标右键点击指令树中的子程序或中断程序的图标,在弹出的菜单中选择“重新命名”,可以修改它们的名称。

     子程序可能有要传递的参数(变量和数据),这时可以在子程序调用指令中包含相应参数,它可以在子程序与调用程序之间传送。参数(变量和数据)必须有符号名(*多8个字符)、变量和数据类型等内容。子程序*多可传递16个参数。传递的参数在子程序局部变量表中定义。局部变量表中的变量有IN、OUT、IN/OUT和TEMP等四种类型。

    ●IN类型:将指定位置的参数传入子程序。参数的寻址方式可以是直接寻址(如VB10)、间接寻址(如*ACl)或立即数(如1234)。也可以将数据的地址值传入子程序(&VB100)。

    ●OUT类型:是子程序的结果值(数据),它被返回给调用它的POU。常数和地址值不允许作为输出参数。

    ●IN/OUT类型:将指定位置的参数传到子程序,从子程序来的结果值被返回到同样的地址。常数和地址值不允许作为输出参数。

    ●TEMP类型:局部存储器只能用作子程序内部的暂时存储器,不能用来传递参数。

    局部变量表的数据类型可以是能流、布尔(位)、字节、字、双字、整数、双整数和实数型。能流是指仅允许对位输入操作的布尔能流(布尔型),梯形图表达形式为用触点(位输入)将电源母线和指令盒连接起来。

    在局部变量表输入变量名称、变量类型、数据类型等参数以后,双击指令树中的子程序(或选择点击方框快捷按钮,在弹出的菜单中选择子程序项),在梯形图显示区显示出带参数的子程序调用指令盒。

    局部变量表变量类型的修改方法是,用光标选中变量类型区,点击鼠标右键得到一个下拉菜单,选择插入项,弹出一个下拉子菜单,点击选中的类型,在变量类型区光标所在处即可得到选中的类型。

    给予程序传递参数时,它们放在子程序的局部存储器(L)中,局部变量表*左列是每个被传递参数的局部存储器地址。


电机可正反转控制,且按下启动按键后,电机延时十秒钟启动(正反转均延时十秒),延时功能用一个定时器实现?
一、电气连接
如图1所示为电机控制回路,由于图较大,缩放后可能看不是太清楚。图2给出了控制回路的详细电气连接。图3位与电机控制相关的PLC I/O点电气连接。


图1 主回路、控制回路


图2 控制回路


图3 PLC I/O点
电路说明:
1、 电机有遥控/就地两种控制方式,由转换开关-S00进行转换;
2、 就地控制即现场机旁按钮启动控制,一般用于测试电机的功能、状态,所以一般选择可自复位的按钮,即按下按钮,电机启动;松开按钮,电机停止;
3、 遥控即由PLC进行电机的启停控制。PLC的输出点(Q1.0、Q1.1)控制中间继电器的线圈,从而控制接触器-K01、-K02的吸合,达到控制电机启停的目的。
4、 电机启停的使能有很多种方法,为方便讨论,这里选用两个自复位按钮(-S11、
-S12)作为启动使能,-S13用作电机停止信号。
由于电气控制回路较为简单,这里就不做详细介绍了。表1为电路中的相关器件及功能说明。


表1 器件及功能说明
二、电气连接
由于控制逻辑比较简单,这里就不画控制流程图了,具体控制程序如图4、图5所示。


图4 扫描输入信号状态


图5 正、反转延时启动控制
以正转控制为例,其控制过程如下:
1、 按一下下-S11按钮,PLC的I0.2输入一个脉冲信号,经过"SR"触发器(复位优先),"#fwd"为1,且"或"运算后的"#order"为1;
2、 "#order"的高电平启动延时定时器T10,延时10s后,"#run_order"为1;
3、 由于"#run_order"和"#fwd"同时为1,则"与"运算后的Q1.0也为1,正转命令发出,电机正转运行;
4、 在上述过程中的任何时候,停止按钮-S13按下,I0.4输入的脉冲信号会使"#fwd"变为0,此时,若电机正转,则电机停止运行;若仍处于计时状态,则计时器停止计时,直到下次有启动信号时,在重新计时。
================
需要注意的问题:
1、 由于在电气控制回路中已经对正、反转进行了互锁,所以在编程时不需要对正、反转按钮输入命令做额外的互锁处理;
2、 I0.0、I0.1分别为电机正、反转的状态反馈信号,当正转命令Q1.0=1时,若一定时间后I0.0仍不变为1,则说明正转启动失败,此时要强制令Q1.0=0,且向系统报错。由于驼子太懒了,这部分功能就不做了,留到WinCC部分再一并加以讨论。
三、测试

    子程序调用时,输入参数被拷贝到局部存储器。子程序完成时,从局部存储器拷贝输出参数到指定的输出参数地址。 


展开全文