PLC程序家族的故事(1)

参考资料:

http://hi.baidu.com/%C5%C9%BF%CB%D6%B1%C1%F7%B5%F7%CB%D9%C6%F7/blog/item/1aa66a14a09e311f5baf53e5.html

PLC程序家族的故事(1)

PLC的控制程序一般由主程序、子程序和中断程序组成。西门子的S7-300/400将子程序分为功能(Function,或称为函数)和功能块(Function Block)。 在每一个扫描循环周期,CPU都要调用一次主程序,用户程序必须有一个并且只能有一个主程序。小型控制系统可以只有主程序。

中断程序用于快速响应中断事件。在中断事件发生时,CPU将停止执行当时正在处理的程序或任务,去执行用户编写的中断程序。执行完中断程序后,继续执行被暂停执行的程序或任务。

2.哪些情况需要使用子程序?

当系统规模很大、控制要求复杂时,如果将全部控制任务放在主程序中,主程序将会非常复杂,既难以调试,也难以阅读。使用子程序可以将程序分成容易管理的小块,使程序结构简单清晰,易于调试、查错和维护。

子程序也可以用于需要多次反复执行相同任务的地方,只需要编写一次子程序,别的程序在需要的时候多次调用它,而无需重写该程序。

3.怎样调用子程序?

主程序可以调用子程序,子程序也可以嵌套调用别的子程序。嵌套调用的层数是有限制的,例如S7-200的最大嵌套深度为8级。

执行完子程序后,返回调用它的程序中的调用指令的下一条指令。

4.每个扫描周期都会执行子程序吗?

子程序的调用可以是有条件的,在被调用期间,每个扫描周期都要执行一次被调用的子程序。调用条件不满足时不会执行子程序中的指令,因此使用子程序可以减少扫描循环时间。

5.停止调用子程序后,子程序中的线圈处于什么状态?

停止调用子程序后,不再执行子程序中的指令。子程序中线圈对应的编程元件如果没有受到别的程序的控制,将保持子程序最后一次执行后的状态不变。即使控制这些线圈的触点的状态变化,该线圈对应的元件的状态也不会变化,因为这时根本就没有执行子程序中的指令。

6.怎样实现子程序的无条件调用?

有的PLC的子程序调用指令不能直接接到左侧的垂直“电源”线上,需要通过触点电路来控制是否调用子程序,即子程序的调用是有条件的。可以用一直为ON的特殊位元件(例如S7-200的SM0.0或FX系列的M8000)的常开触点来实现子程序的无条件调用。

不同品牌的PLC的子程序大致可以分为两种,一种子程序没有输入、输出参数和局部变量,另一种则有。

1.什么是全局变量和局部变量?

以西门子的S7-200为例,输入I、输出Q、变量存储器V、内部存储器位M、定时器T、计数器C等属于全局变量,可以在符号表中为全局变量定义符号名。 程序组织单元(Program Organizational Unit)简称为POU,包括主程序、子程序和中断程序。每个POU均有自己的64字节局部变量,局部变量用L(Local)来表示,局部变量只能在它所在的POU中使用。与此相反,全局变量可以在各POU中使用。

2.局部变量有哪些类型?

子程序可以使用下列局部变量:

1) TEMP (临时变量)是暂时保存在局部数据区中的变量。只有在执行该POU时,定义的临时变量才被使用,POU执行完后,不再保存临时变量的数值。主程序和中断程序的局部变量表中只有TEMP变量。

2) IN(输入参数)由调用它的POU提供的传入子程序的输入参数。

3) OUT(输出参数)是子程序的执行结果,它被返回给调用它的POU。

4) IN_OUT(输入_输出参数)的初始值由调用它的POU传送给子程序,并用同一变量将子程序的执行结果返回给调用它的POU。

主程序和中断程序的局部变量表中只有临时变量TEMP。

3.子程序的输入、输出参数有什么作用?

具有输入、输出参数和局部变量的子程序易于实现结构化编程,对于长期生产同类设备或生产线的厂家尤为有用。编程人员为设备的各部件或工艺功能编写了大量的通用的子程序。即使不知道子程序的内部代码,只要知道子程序的功能和输入、输出参数的意义,就可以用它们快速“组装”出满足不同的用户要求的控制程序。就好像可以用数字集成电路芯片组成复杂的数字电路一样。

如果子程序没有输入、输出参数,这种子程序没有明确的软件接口,使用起来很不方便。

4.局部变量有什么优点?

1) 子程序如果没有局部变量,它和调用它的程序之间只能通过全局变量来交换数据,子程序内部也只能使用全局变量。将它移植到别的项目时,需要对各POU使用的全局变量作统一安排,以保证不会出现地址冲突。当程序很复杂,子程序很多时,这种地址分配是很花时间的。

如果子程序有局部变量,并且在子程序中只使用局部变量,不使用全局变量,因为与其他POU没有地址冲突,不作任何改动,就可以将子程序移植到别的项目中去。

为了减少移植子程序的工作量,在子程序中应尽量避免使用全局变量和全局符号。

2) 如果使用局部变量表中的临时变量(TEMP),同一片物理存储器可以在不同的程序中重复使用。 内容来自www.dqjsw.com.cn电气自动化技术网

下面以S7-200为例,介绍子程序的编程和调用的过程。

1.创建子程序

生成项目时,自动生成一个子程序。打开程序编辑器,执行“编辑”菜单中的命令

“插入”→“子程序”,将自动生成和打开新的子程序。

2.生成局部变量

名为“模拟量计算”的子程序如下图所示,在该子程序的局部变量表中,定义了3个输入(IN)参数,一个输出(OUT)参数,和名为“暂存1”的临时(TEMP)变量。局部变量表最左边的一列是自动分配的每个变量在局部存储器(L)中的地址。 内容来自

3.编写子程序的梯形图

局部变量表的下面是程序区(见上图),输入参数“转换值”是来自模拟量输入模块的与模拟量成正比的转换值,输出参数“模拟值”是计算出的对应的模拟量(例如压力、温度等)的工程值。子程序中变量名称前的“#”表示该变量是局部变量,它是编程软件自动添加的,输入局部变量时不用输入“#”号。特殊存储器位SM0.0的常开触点总是闭合。

4.子程序的调用

可以在主程序、其他子程序或中断程序中调用子程序,调用子程序时将执行子程序中的指令,直至子程序结束,然后返回调用它的程序中该子程序调用指令的下一条指令之处。

创建子程序后,在上图左边指令树最下面的“调用子程序”文件夹中自动生成刚创建的子程序“模拟量计算”对应的图标。

在梯形图程序中插入子程序调用指令时,首先打开主程序,显示出需要调用子程序的网络。打开指令树最下面的“调用子程序”文件夹,用鼠标左键按住需要调用的子程序图标,将它“拖”到程序编辑器中需要的位置。放开左键,子程序块便被放置在该位置。 内容来自

子程序方框中左边的“转换值”等是在子程序“模拟量计算”的变量声明表中定义的输入参数,右边的“模拟值”是输出参数。它们被称为子程序的形式参数,简称为形参,形参在子程序内部的程序中使用。调用子程序时,需要为每个形参指定实际的参数(简称为实参),例如为形参“转换值”指定的实参为模拟量输入字AIW2(见上图)。

子程序调用指令中的实参的有效操作数为存储器地址、常量、全局符号和调用指令所在的POU中的局部变量,不能指定被调用子程序中的局部变量。

CPU调用子程序时,输入参数被复制到子程序的局部存储器,子程序执行完后,从局部存储器复制输出参数到指定的输出参数地址。转载请注明出处:电气自动化技术网

参考资料:

http://hi.baidu.com/%C5%C9%BF%CB%D6%B1%C1%F7%B5%F7%CB%D9%C6%F7/blog/item/1aa66a14a09e311f5baf53e5.html

PLC程序家族的故事(1)

PLC的控制程序一般由主程序、子程序和中断程序组成。西门子的S7-300/400将子程序分为功能(Function,或称为函数)和功能块(Function Block)。 在每一个扫描循环周期,CPU都要调用一次主程序,用户程序必须有一个并且只能有一个主程序。小型控制系统可以只有主程序。

中断程序用于快速响应中断事件。在中断事件发生时,CPU将停止执行当时正在处理的程序或任务,去执行用户编写的中断程序。执行完中断程序后,继续执行被暂停执行的程序或任务。

2.哪些情况需要使用子程序?

当系统规模很大、控制要求复杂时,如果将全部控制任务放在主程序中,主程序将会非常复杂,既难以调试,也难以阅读。使用子程序可以将程序分成容易管理的小块,使程序结构简单清晰,易于调试、查错和维护。

子程序也可以用于需要多次反复执行相同任务的地方,只需要编写一次子程序,别的程序在需要的时候多次调用它,而无需重写该程序。

3.怎样调用子程序?

主程序可以调用子程序,子程序也可以嵌套调用别的子程序。嵌套调用的层数是有限制的,例如S7-200的最大嵌套深度为8级。

执行完子程序后,返回调用它的程序中的调用指令的下一条指令。

4.每个扫描周期都会执行子程序吗?

子程序的调用可以是有条件的,在被调用期间,每个扫描周期都要执行一次被调用的子程序。调用条件不满足时不会执行子程序中的指令,因此使用子程序可以减少扫描循环时间。

5.停止调用子程序后,子程序中的线圈处于什么状态?

停止调用子程序后,不再执行子程序中的指令。子程序中线圈对应的编程元件如果没有受到别的程序的控制,将保持子程序最后一次执行后的状态不变。即使控制这些线圈的触点的状态变化,该线圈对应的元件的状态也不会变化,因为这时根本就没有执行子程序中的指令。

6.怎样实现子程序的无条件调用?

有的PLC的子程序调用指令不能直接接到左侧的垂直“电源”线上,需要通过触点电路来控制是否调用子程序,即子程序的调用是有条件的。可以用一直为ON的特殊位元件(例如S7-200的SM0.0或FX系列的M8000)的常开触点来实现子程序的无条件调用。

不同品牌的PLC的子程序大致可以分为两种,一种子程序没有输入、输出参数和局部变量,另一种则有。

1.什么是全局变量和局部变量?

以西门子的S7-200为例,输入I、输出Q、变量存储器V、内部存储器位M、定时器T、计数器C等属于全局变量,可以在符号表中为全局变量定义符号名。 程序组织单元(Program Organizational Unit)简称为POU,包括主程序、子程序和中断程序。每个POU均有自己的64字节局部变量,局部变量用L(Local)来表示,局部变量只能在它所在的POU中使用。与此相反,全局变量可以在各POU中使用。

2.局部变量有哪些类型?

子程序可以使用下列局部变量:

1) TEMP (临时变量)是暂时保存在局部数据区中的变量。只有在执行该POU时,定义的临时变量才被使用,POU执行完后,不再保存临时变量的数值。主程序和中断程序的局部变量表中只有TEMP变量。

2) IN(输入参数)由调用它的POU提供的传入子程序的输入参数。

3) OUT(输出参数)是子程序的执行结果,它被返回给调用它的POU。

4) IN_OUT(输入_输出参数)的初始值由调用它的POU传送给子程序,并用同一变量将子程序的执行结果返回给调用它的POU。

主程序和中断程序的局部变量表中只有临时变量TEMP。

3.子程序的输入、输出参数有什么作用?

具有输入、输出参数和局部变量的子程序易于实现结构化编程,对于长期生产同类设备或生产线的厂家尤为有用。编程人员为设备的各部件或工艺功能编写了大量的通用的子程序。即使不知道子程序的内部代码,只要知道子程序的功能和输入、输出参数的意义,就可以用它们快速“组装”出满足不同的用户要求的控制程序。就好像可以用数字集成电路芯片组成复杂的数字电路一样。

如果子程序没有输入、输出参数,这种子程序没有明确的软件接口,使用起来很不方便。

4.局部变量有什么优点?

1) 子程序如果没有局部变量,它和调用它的程序之间只能通过全局变量来交换数据,子程序内部也只能使用全局变量。将它移植到别的项目时,需要对各POU使用的全局变量作统一安排,以保证不会出现地址冲突。当程序很复杂,子程序很多时,这种地址分配是很花时间的。

如果子程序有局部变量,并且在子程序中只使用局部变量,不使用全局变量,因为与其他POU没有地址冲突,不作任何改动,就可以将子程序移植到别的项目中去。

为了减少移植子程序的工作量,在子程序中应尽量避免使用全局变量和全局符号。

2) 如果使用局部变量表中的临时变量(TEMP),同一片物理存储器可以在不同的程序中重复使用。 内容来自www.dqjsw.com.cn电气自动化技术网

下面以S7-200为例,介绍子程序的编程和调用的过程。

1.创建子程序

生成项目时,自动生成一个子程序。打开程序编辑器,执行“编辑”菜单中的命令

“插入”→“子程序”,将自动生成和打开新的子程序。

2.生成局部变量

名为“模拟量计算”的子程序如下图所示,在该子程序的局部变量表中,定义了3个输入(IN)参数,一个输出(OUT)参数,和名为“暂存1”的临时(TEMP)变量。局部变量表最左边的一列是自动分配的每个变量在局部存储器(L)中的地址。 内容来自

3.编写子程序的梯形图

局部变量表的下面是程序区(见上图),输入参数“转换值”是来自模拟量输入模块的与模拟量成正比的转换值,输出参数“模拟值”是计算出的对应的模拟量(例如压力、温度等)的工程值。子程序中变量名称前的“#”表示该变量是局部变量,它是编程软件自动添加的,输入局部变量时不用输入“#”号。特殊存储器位SM0.0的常开触点总是闭合。

4.子程序的调用

可以在主程序、其他子程序或中断程序中调用子程序,调用子程序时将执行子程序中的指令,直至子程序结束,然后返回调用它的程序中该子程序调用指令的下一条指令之处。

创建子程序后,在上图左边指令树最下面的“调用子程序”文件夹中自动生成刚创建的子程序“模拟量计算”对应的图标。

在梯形图程序中插入子程序调用指令时,首先打开主程序,显示出需要调用子程序的网络。打开指令树最下面的“调用子程序”文件夹,用鼠标左键按住需要调用的子程序图标,将它“拖”到程序编辑器中需要的位置。放开左键,子程序块便被放置在该位置。 内容来自

子程序方框中左边的“转换值”等是在子程序“模拟量计算”的变量声明表中定义的输入参数,右边的“模拟值”是输出参数。它们被称为子程序的形式参数,简称为形参,形参在子程序内部的程序中使用。调用子程序时,需要为每个形参指定实际的参数(简称为实参),例如为形参“转换值”指定的实参为模拟量输入字AIW2(见上图)。

子程序调用指令中的实参的有效操作数为存储器地址、常量、全局符号和调用指令所在的POU中的局部变量,不能指定被调用子程序中的局部变量。

CPU调用子程序时,输入参数被复制到子程序的局部存储器,子程序执行完后,从局部存储器复制输出参数到指定的输出参数地址。转载请注明出处:电气自动化技术网


相关文章

  • 空气净化系统管理制度
  • PLC 编程简介 1.PLC 的基本概念 可编程控制器(Programmable Controller) 是计算机家族中的一员,是为工业控制应用而设计制造的.早期的可编程控制器称作可编程逻辑控制器(Programmable Lo gic C ...查看


  • 机电系统创新综合设计说明书最终版
  • 目录 摘要 .................................................................................................................. ...查看


  • 电气控制技术在工业上的应用
  • <电气控制技术>课程论文 题目:电气控制技术在工业生产中的应用 班级:10级工业工程二班 学号: 07号 姓名: 秦琪 目 录 摘要 .............................................. ...查看


  • PLC 在三相异步电机控制中的应用论文
  • 河北化工医药职业技术学院毕业论文 第1章 绪论 三相异步电动机的应用几乎涵盖了工农业生产和人类生活的各个领域,在这些应用领域中,三相异步电动机常常运行在恶劣的环境下,导致产生过流.短路.断相.绝缘老化等事故.对于应用于大型工业设备重要场合的 ...查看


  • 自动化系统集成与工程训练
  • 实训实习报告 实训课程名称 自动化系统集成与工程训练 专 业 班 级 小 组 组 长 姓 名 组 员 姓 名 设 计 地 点 指 导 教 师 工程基础实验与训练中心 设计起止时间:2012年12月24日至2012年1月18日 目录 1.设计 ...查看


  • 基于PLC的污水处理系统毕业论文
  • 毕业设计 设计(论文)题目:专 学 指业生导班姓教级:名:师: 摘要 随着现代生产工艺的飞速发展,我国城市化进程的推动,中小城市(镇)数量的不断增多,由其带来的水污染问题日趋严重.序批式活性污泥法(简称SBR)符合中小城镇污水处理的基本要求 ...查看


  • 如何画顺序控制的顺序功能图
  • 第7卷第6期 V01.7 No.6 读与写杂志 Readand 2010年6月June 2010 WritePeriodical 如何画顺序控制的顺序功能图 王艳美 (张家港市第三职业高级中学江苏 张家港215625) 摘要:为了满足生产的 ...查看


  • 自动门控制系统的设计
  • 附件2 西安工业大学继续教育学院 毕业设计(论文)考核评议书 西安机电信息技师学院 院(系.站) 机电一体化 专业 指导老师对学生 所完成的课题为 的毕业设计(论文)进行的情况.完成 的质量及评分的意见: 负责指导教师队 指导教师 年 月 ...查看


  • 自动化立体仓库毕业论文
  • 系别(分院.部) 控制技术学院 班级 生产过程自动化 姓名 学号 课题名称 双轴立体仓库PLC控制系统 成 毕业实践任务书 1 份 答辩表 份 毕业设计说明书(论文) 共页 外 文 翻 译份 共 另 附 图(表) 2 个 共 6 页 其 它 ...查看


热门内容