第5章 S7系列程序结构与程序设计 5.1 编程方式与程序块 5.2 数据块与数据结构 5.3 S7系列PLC程序设计 思考与练习题.

Slides:



Advertisements
Similar presentations
经贸英语助学二学历 —— 就业利器 & 成功阶梯. 培养计划 2 经贸英语二学历 1 报名方式 3.
Advertisements

办公室保健指南. 减少辐射篇 ❤显示器散发出的辐射多数不是来自它的正面,而是侧面和后面。因此,不要 把自己显示器的后面对着同事的后脑或者身体的侧面。 ❤常喝绿茶。茶叶中含有的茶多酚等活性物质,有助吸收放射性物质。 ❤尽量使用液晶显示器。
【自我認知】 資料蒐集能力不佳 【產業 / 工作認知】 對自己的興趣與專長不了解 工作技能工作內容工作時間工作地點條件限制薪資福利.
第九章 信用交易與資券相抵當沖 9.1 融資融券交易相關法令 9.2 融資融券交易實務 9.3 信用交易管制指施 9.4 資券相抵當沖 證券市場 ─ 理論與實務 2009/06 第九章 信用交易與資券相抵當沖.
魏 饴. 处级干部培训班讲座 一、卓越干部的德行素质  常修为政之德、常思贪欲之害、常怀律己之心!  孔老夫子有个观点 “ 为政以德,譬如北辰居其所而众星拱之。 ”  司马光《资治通鉴》 “ 才者,德之资也;德者,才之帅也。 ” “ 德 ” 胜 “ 才 ” 谓之 “ 君子 ” , “ 才 ”
C A D C D.
成 功 季羡林 广东顺德龙江中学 田乃林. 季羡林 (1911-) 语言学教育家和梵文学者。山东 清平 ( 今临清 ) 人。 1934 年毕业于清华大学西洋文学 系。 1941 年获德国格廷根大学哲学博士学位。 1946 年回国。后任北京大学教授、东方语言文学系主任、 副校长、校务委员会副主任、南亚东南业研究所所.
104-2 社團聯席會議 人社二館第五講堂 第 1 次社團聯席會 會議議程 一、邱學務長致詞 : 二、王麗倩組長致詞 : 三、課外組報告: 課外活動經費核銷事項 --- 松漢 社課鐘點費核銷事項 --- 松漢 3. 三社聯合成發之講堂租借規定說明.
一、真愛密碼 二、尋求真愛 三、有自尊的愛. 。如果雙方對愛情產生 質疑、困惑時,則表示 彼此之間的愛情關係仍 有 待加強或釐清,千萬別 急著為自己的人生大事 下決定。 我是一個 16 歲的未婚媽媽,發現自 己懷孕時,已經五個月大了,我知 道自己沒能力照顧孩子,在驚訝之 於,大人們只好坦然接受,幫我找.
大地遊戲王 課程實錄.
------课题(一) :PLC控制系统设计
天水圍的體育設施.
《设备电气控制与维修》 电气教研室 房金菁.
会计报表网上申报操作指南 (以小企业会计准则为例) 松江区税务局 2014年7月.
高等数学绪论 一、《高等数学》学什么? 二、《高等数学》培养学生那些能力? 三、如何考硕士研究生? 四、全国大学生数学建模竞赛是怎么回事?
加強水銀體溫計稽查管制及回收 回收作業須知及緊急應變措施
融资融券业务管理办法、交易所细则等法规 修订内容解读 ★融资融券业务投资者教育活动材料★ 光大证券·信用业务管理总部 2015年12月.
第4章 分錄及日記簿 4-1 借貸法則 4-2 日記簿的格式及記錄方法 4-3 分錄的意義及記錄方法 4-4 常見分錄題型分析
An Introduction to Database Systems
女老闆的震撼教育 故事文案/黃祖強 視覺設計/高淑貞 版權所有,請保持著作完整性,歡迎自由分享。.
齐鲁证券 高端客户融资融券交流 二〇一二年.
第十三屆 Step.1 我們的目標 Step.2 我們的角色 Step.4 權利與義務 義務 權利 年繳會費五百元整
个 股 期 权 个股期权策略推广月 备兑开仓策略(二) -如何调整备兑开仓 上海证券交易所 2014年4月.
融 资 融 券.
英语专业 (商务方向)简介.
财务管理.
TIA 博途V12 STEP 7 V12 (LAD, FBD, STL)编程.
植物保护 课程整体设计 汇报 申报省级精品资源共享课建设 植物保护课程组.
第十九课 南吕•一枝花 不 伏 老 关汉卿.
政府扶持资金通览 技术改造篇.
(接触网)精品课程 建设方案 课程负责人:赵斌 新疆铁路中等职业学校.
翰林自然 六年級上學期 第二單元 聲音與樂器.
《机械制造与自动化》(专升本) 《机电设备与管理》(专升本)专业介绍
逆转地理课堂 提高复习效率 鲁迅中学 耿夫相.
ETF指数化投资介绍.
FC OB1 FB SFC 操作系统 SFB OBs 结构化编程 其它
9、SIMATIC S7-300 PLC及指令系统 9.1 系统组成 9.2 系统配置 9.3 指令系统简介 9.4 程序结构
本科生医保资料的提交.
结构化编程 FC OB1 FB SFC 操作系统 SFB OBs 其它
电气控制及PLC技术 电气工程学院 自动化系 杨霞 2018年1月.
软件调试 目录 页 软件调试的检查表 下装用户程序到 CPU 排除停机错误 系统功能测试的步骤 记录程序的修改 项目文件的归档
组织块 操作系统 OB1 FC FB FB FC SFC SFB OBs 其它 目录 页码
ET200S应用问题 1、ET200S程序无法下载解决方案 2、ET200S单独使用时输入输出模块无法监控.
統計圖表的製作.
崔坚 西门子自动化与驱动集团 客户支持部CS2 热线电话:
S7-300/400PLC的编程技术 河北机电自动化教研室.
电气控制及PLC技术 电气工程学院 自动化系 杨霞 2018年1月.
自動化課程 劉聖元.
黃光室使用教學講義 編輯者:林政邦.
商泓企業有限公司 阮文慶先生 電話: 發電機室/空調主機室噪音處理 突波保護裝置 防震浮動地版
星展社企計劃( ) 計劃書 「虎」中作樂.
第六章 安全衛生工作守則 6-1 前 言  6-2 訂定依據相關法令規定  6-3 工作守則製作程序及製作前應注意事項  6-4 如何訂定適合需要之安全衛生工作守則  6-5 結 論.
《结构力学认知实验》(授课形式)的上课时间改为: 5月5日(周二)晚上18:00~19:30和19:30~21:00,
《结构力学认知实验》(授课形式)的上课时间改为: 5月7日(周四)晚上18:30~20:00和20:00~21:30,
领导艺术与方法 适合对象:课长级以上人员 人力资源部 李晓红 2006/6/12
数据块中的数据存储 目录 页 目标 …… 数据存储区 … ……… 数据块 (DB) … STEP 7数据类型概述 STEP 7基本数据类型
畢業資格審查系統 操作步驟說明.
位指令 I0.0 I0.1 Q 8.0 Q 8.1 I 1.0 ( MCR< ) (MCRA) Q 8.0 I 0.0 I 1.1
新制退休實務計算說明- 現職人員退休範例說明
106年社團評鑑簡報 國立高雄第一科技大學 營建工程系系學會 21屆 會 長:蘇峻賢 指導老師:曾國鴻 教授.
可编程序控制器(PLC)应用技术 第 5 部分 PLC程序的设计.
台東縣筆硯公文製作流程 筆硯版本為 製.
符号 目录 页 绝对寻址和符号寻址… 符号寻址- 概述… 打开符号表 编辑:查找和替换…… 查看:过滤器 … 查看:排序…… 符号表:导出
第七章 编程实例 例1、设计一个报警器,要求当条件X1=ON满足时蜂鸣器鸣叫,同时报警灯连续闪烁16次,每次亮2s,熄灭3s,然后,停止声光报警。 分析:输入信号占用一个输入点,蜂鸣器和报警灯各占用一个输出点,报警灯亮、暗闪烁,可以采用两个定时器分别控制,而闪烁次数由计数器控制。 I/O分配如下:
創造不一樣的人生 -如何與身心障礙者接觸 新竹教育大學 薛明里.
数据块中的数据存储 目录 页 数据存储区 … ……… 数据块 (DB) … STEP 7数据类型概述 STEP 7基本数据类型
第二节 声音的特性 人们有规律的、好听悦耳、使人愉快的声音叫做乐音,无规律的、难听刺耳、让人心烦的声音叫做噪声。
機電科簡介 科主任 郭紀翔.
這七個故事很簡短,但她們說的都是一個主題——愛情!真心希望你們每個故事都看一下,不會用很長時間,但保證你能感到那種被震撼的感覺!
测试功能 目录 页 程序的状态监视功能 ……………... 2 程序状态监视的模式 …………………………. 3
Presentation transcript:

第5章 S7系列程序结构与程序设计 5.1 编程方式与程序块 5.2 数据块与数据结构 5.3 S7系列PLC程序设计 思考与练习题

5.1 编程方式与程序块 5.1.1 S7-300编程方式简介 S7-300系列PLC的编程语言是STEP 7。用文件块的形式管理用户编写的程序及程序运行所需的数据,组成结构化的用户程序。这样,PLC的程序组织明确,结构清晰,易于修改。 为支持结构化程序设计,STEP 7用户程序通常由组织块(OB)、功能块(FB)或功能块(FC)等三种类型的逻辑块和数据块(DB)组成。 OB1是主程序循环块,在任何情况下,它都是需要的。

图5.1 STEP 7调用过程示意图

功能块(FB、FC)实际上是用户子程序,分为带“记忆”的功能块FB和不带“记忆”的功能块FC。FB带有背景数据块(Instance Data Block),在FB块结束时继续保持,即被“记忆”。功能块FC没有背景数据块。 数据块(DB)是用户定义的用于存取数据的存储区,可以被打开或关闭。DB可以是属于某个FB的情景数据块,也可以是通用的全局数据块,用于FB或FC。 S7 CPU还提供标准系统功能块(SFB、SFC),集成在S7 CPU中的功能程序库。用户可以直接调用它们,由于它们是操作系统的一部分,因此不需将其作为用户程序下载到PLC。

5.1.2 功能块编程及调用 功能块由两个主要部分组成: 5.1.2 功能块编程及调用 功能块由两个主要部分组成: 当调用功能块时,需要参数传递。参数传递的方式使得功能块具有通用性,它可被其它的块调用,以完成多个类似的控制任务。 变量声明表:声明此块的局部数据 程序:要用到变量声明表中的局部数据

1. 变量声明表(局部数据) 每个逻辑块前部都有一个变量声明表,在变量声明表中定义逻辑块用到的局部数据。表5.1给出了局部数据声明类型。 表5.1 局部数据类型

1) 形参 为保证功能块对同一类设备控制的通用性,应使用这类设备的抽象地址参数,这些抽象参数称为形式参数,简称形参。功能块在运行时将该设备的相应实际存储区地址参数(简称实参)替代形参,从而实现功能块的通用性。 形参需在功能块的变量声明表中定义,实参在调用功能块时给出。在功能块的不同调用处,可为形参提供不同的实参,但实参的数据类型必须与形参一致。

2) 静态变量 静态变量在PLC运行期间始终被存储。S7将静态变量定义在背景数据块中,因此只能为FB定义静态变量。功能块FC不能有静态变量。 3) 临时变量 临时变量仅在逻辑块运行时有效,逻辑块结束时存储临时变量的内存被操作系统另行分配。S7将临时变量定义在L堆栈中。

2. 逻辑块局部数据的数据类型 在变量声明表中,要明确局部数据的数据类型,这样操作系统才能给变量分配确定的存储空间。局部数据可以是基本数据类型或复式数据类型,也可以是专门用于参数传递 的所谓的“参数类型”。参数类型包括定时器、计数器、块的地址或指针等,见表5.2。

表5.2 参数类型变量

3. 块调用过程及内存分配 CPU提供块堆栈(B堆栈)来存储与处理被中断块的有关信息。当发生块调用或有来自更高优先级的中断时,就有相关的块信息存储在B堆栈里,并影响部分内存和寄存器。图5.2显示了调用块时B堆栈与L堆栈的变化。图5.3提供了关于STEP 7的块调用情况。

图5.2 堆栈与L堆栈

图5.3 调用指令对CPU内存的影响

1) B堆栈与L堆栈 B堆栈存储以下被中断块的数据: (1) 块号、块类型、优先级、被中断块的返回地址; (2) 块寄存器DB、DI被中断前的内容; (3) 临时变量的指针(被中断块的L堆栈地址)。 L堆栈在块调用时被重新分配。L堆栈用来存储逻辑块中定义的临时变量,也分配给临时本地数据使用。梯形图的方块指令与标准功能块也可能使用L堆栈存储运算的中间结果。

2) 调用功能块FB 当调用功能块FB时,会有以下事件发生: (1) 调用块的地址和返回位置存储在块堆栈中,调用块的临时变量压入L堆栈; (2) 数据块DB寄存器内容与DI寄存器内容交换; (3) 新的数据块地址装入DI寄存器; (4) 被调用块的实参装入DB和L堆栈上部; (5) 当功能块FB结束时,先前块的现场信息从块堆栈中弹出,临时变量弹出L堆栈; (6) DB和DI寄存器内容交换。

3) 调用功能块FC 当调用功能块FC时会有以下事件发生: (1) 功能块FC实参的指针存到调用块的L堆栈; (2) 调用块的地址和返回位置存储在块堆栈,调用块的局部数据压入L堆栈; (3) 功能块存储临时变量的L堆栈区被推入L堆栈上部; (4) 当被调用功能块FC结束时,先前块的信息存储在块堆栈中,临时变量弹出L堆栈。 因为功能块FC不用背景数据块,不能分配初始数值给功能块FC的局部数据,所以必须给功能块FC提供实参。

5.1.3 功能块编程与调用举例 对功能块编程分两步进行: 第一步是定义局部变量(填写局部变量表); 第二步是编写要执行的程序,并在编程过程中使用定义了的局部变量(数据)。

定义局部变量的工作内容包括: 分别定义形参、静态变量和临时变量(FC块中不包括静态变量); (2) 确定各变量的声明类型(Decl.)、变量名(Name)和数据类型(Data Type),还要为变量设置初始值(Initial Value)(尽管对有些变量初始值不一定有意义)。如果需要还可为变量注释(Comment)。在增量编程模式下,STEP 7将自动产生局部变量地址(Address)。

写功能块程序时,可以用以下两种方式使用局部变量: 使用变量名,此时变量名前加前缀“#”,以区别于在符号表中定义的符号地址。增量方式下,前缀会自动产生。 直接使用局部变量的地址,这种方式只对背景数据块和L堆栈有效。 在调用FB块时,要说明其背景数据块。背景数据块应在调用前生成,其顺序格式与变量声明表必须保持一致。在增量方式下,调用FB块时,STEP 7会自动提醒并生成背景数据块。

1.二分频器 假设功能块FC10是二分频器产生程序,功能是对不同的输入位进行二分频处理。以下给出了FC10的变量声明表和语句表程序。在程序中使用了跳变沿检测指令。 1) FC10的变量声明表(见表5.3) 表5.3 FC10的变量声明表

2) 语句表程序 Network 1 A #INP // 对脉冲输入信号产生RLO FP #ETF // 对前面的RLO进行跳变沿检测 NOT // 取反RLO BEC // 若RLO=1(没有正跳沿),结束块; // 若RLO=0(有正跳沿),继续执行下一条指令 AN #OUTP = #OUTP //输出信号反转 BEU //无条件结束块

在功能块FCl0中定义了三个形参,调用时为形参分别赋予实参I0. 0、Q4. 0和M10. 0,以对输入位I0 在功能块FCl0中定义了三个形参,调用时为形参分别赋予实参I0.0、Q4.0和M10.0,以对输入位I0.0进行二分频以产生输出脉冲Q4.0。 调用方式: CALL FC10 INP: = I0.0 OUTP: = Q4.0 ETF: = M10.0

2.读模拟输入量程序 一些S7-300的应用系统中,使用8通道模拟量模块采集信号,当模块数量较多时,读模拟输入量就很繁琐。下面给出一个通用程序FC100,利用它可以方便地把模拟量读回并顺序存入数据块,因为模入模块的起始地址、通道数、存储数据块号及数据在数据块中的存储起始位置均是可变的,所以可在调用FC100时灵活确定。

1) FC100的变量声明表(见表5.4) 表5.4 FC100的变量声明表

2) 语句表程序 Network 1 L #DB_No T LW0 OPN DB[LW 0] //打开存储数据块 L #PIW_Addr 2) 语句表程序 Network 1 L #DB_No T LW0 OPN DB[LW 0] //打开存储数据块 L #PIW_Addr SLD 3 //形成模入模块地址指针 T LD4 //在临时本地数据双字LD 4中存储模入模块地址指针 L #DBW_Addr SLD 3 //形成数据块存储地址指针 T LD8 //在临时本地数据双字LD 8中存入数据块存储地址指针 L #CH_LEN //以要读入的通道数为循环次数,装入累加器1

L LD4 LARl //将模入模块地址指针装入地址寄存器1 L PIW[ARl,P#0.0] //读模入模块装入累加器1 T LW2 //将累加器1的内容暂存入缓冲器LW2 L LD8 LARl //将数据块存储地址指针装入地址寄存器1 L LW2 //将数据缓冲器中的内容装入累加器1 T DBW[ARl,P#0.0] //将累加器的内容存入数据块中 L LD4 //AR1+P#2.0→AR1 + L#16 //ACC1+(.._0001_0 000) T LD4 //调整模入模块地址指针,指向下一通道Acc1+(bb bbbb bxxx) + L#16 T LD8 //调整数据块存储地址指针,指向下一存储地址 L LW0 //将循环次数计数器LW0的值装入累加器1 LOOP NEXT //若累加器1的值不为0,将累加器减1继续循环;若累加 //器为0,则结束 NEXT:T LW 0

举例说明如何使用FC100。在某应用中,机架0的4号槽位安装了一个8模入模块(地址256开始),若要将前6个模入模块信号读回,存入DB50 举例说明如何使用FC100。在某应用中,机架0的4号槽位安装了一个8模入模块(地址256开始),若要将前6个模入模块信号读回,存入DB50.DBW10开始的6个字单元中,可按下列形式调用FC100: CALL FC100 PIW_Add:= 256 CH_LEN: = 6 DB_No: = 50 DBW_Addr:= 10

5.2 数据块与数据结构 5.2.1 数据块 数据块定义在S7 CPU存储器中,用户可在存储器中建立一个或多个数据块。每个数据块可大可小,但CPU对数据块数量及数据总量有限制,如对于CPU314,用作数据块的存储器最多为8 KB(8192 B),用户定义的数据总量不能超出这个限制。对数据块必须遵循先定义后使用的原则,否则,将造成系统错误。

1. 定义数据块 在编程阶段和运行程序中都能定义数据块。大多数数据块是在编程阶段用STEP 7开发软件包定义的。 定义内容包括数据块号及块中的变量(包括变量符号名、数据类型以及初始值等),定义完成后,数据块中变量的顺序及类型决定了数据块的数据结构,变量的数量决定了数据块的大小。 数据块在使用前,必须作为用户程序的一部分下载到CPU中。

2.访问数据块 访问时需要明确数据块号和数据块中的数据类型与位置。根据明确数据块号的不同方法,可以用多种方法访问数据块中的数据。 直接在访问指令中写明数据块号,如: L DB5.DBW10 T DB10.DBW20 L Motor_1.Speed //符号地址

另一种方法是“先打开后访问”。在访问某数据块中的数据前,先“打开”这个数据块,这样,存放在数据块中的数据就可利用数据块起始地址加偏移量的方法来访问。如: OPN DB5 L DBW10 OPN DB10 T DBW20

3. 背景数据块和共享数据块 背景数据块和共享数据块有不同的用途。任何FB、FC或OB均可读写存放在共享数据块中的数据。背景数据块是FB运行时的工作存储区,它存放FB的部分运行变量。调用FB时,必须指定一个相关的背景数据块。作为规则,只有FB块才能访问存放在背景数据块中的数据。

5.2.2 数据结构 STEP 7数据块中的数据既可以是基本数据类型,又可以是复式数据类型。STEP 7允许4种复式数据类型,如表5.5所示。 表5.5 复式数据类型

5.3 S7系列PLC程序设计 5.3.1 程序结构设计 STEP 7不仅从不同层次充分支持合理的程序结构设计,而 且也简化了结构设计的复杂程度。 一个复杂的自动化过程可以被分解并定义为一个或多个项 目(PROJECT) ,图5.4显示了一个样本过程,它分成4个不同的 项目。项目间或项目中的各CPU程序之间,能以某种方式联网, 实现信息共享。如在S7协议支持下,用MPI网以全局数据通信的 方式可方便地建立起联系,实现一个项目中各CPU共享信息。

图5.4 样本过程的项目划分

典型的情况是一个过程控制任务只有一个项目,该项目下也仅有一个CPU程序,每一个CPU程序又可依据时间特性或事件触发特性的差异分类编入不同的组织块(OB)中。例如,对程序执行中产生的同步错误的响应处理程序编入组织块OB121或OB122中。 组织块OB1(主程序循环)中的程序是应用程序中主要的也是最复杂的部分,可以根据其复杂程度分别选用线性、分部或结构化等三种形式中的一种程序结构。

1. 线性程序结构 用“线性”结构设计的程序连续放置在一个块内(通常为OB1),块中的程序按顺序执行。这一结构是最初的PLC模拟的继电器梯形逻辑的模型。线性程序具有简单、直接的特点。编程时,不必考虑功能块如何编程及如何调用,也不必考虑如何定义局部变量及如何使用背景数据块。由于所有的指令在一个块内,因此它适用于只需一个人编写的、相对简单的控制程序。

2. 分部程序结构 这是一种部分模块化的程序结构,也称为部分结构化。程序被分成各部分放在若干功能块中,每个功能块含有用于一种设备的一系列控制逻辑。放置在组织块OB1中的指令决定控制程序的各功能块的执行。 在分部程序中,既无数据交换也没有重复利用的程序代码。功能块不传递也不接收参数,分部程序结构的编程效率比线性程序有所提高,程序测试也较方便,对程序员的要求也不太高。对不太复杂的控制程序可考虑采用这种程序结构。

3. 结构化程序结构 完全结构化(模块化)的程序结构是PLC程序设计和编程最有效的结构形式,它可用于复杂程度高、程序规模大的控制应用程序设计。结构化程序可以重复使用某些功能块,只需要在使用功能块时为其提供不同的环境变量(实参),就能完成对不同设备的控制。 结构化程序有最高的编程和程序调试效率,应用程序代码量也最小。结构化程序也支持多个程序员协同编程。

5.3.2 程序设计实例 图5.5 工业搅拌过程示意图

1. 将过程分割为任务和区域 一个自动化过程包括许多单个的任务,将这个工业搅拌过程构造为四个功能区域:配料A区域、配料B区域、混合罐区域和排料区域。 2. 说明各个功能区域 1) 配料A和配料B区域 (1) 每种配料的管道都配备有一个入口和一个进料阀以及进料泵。 (2) 进料管还有流量传感器。 (3) 当罐的液面传感器指示罐满时,进料泵的接通必须被锁定。

(4) 当排料阀打开时,进料泵的启动必须被锁定。 (5) 在启动进料泵后1 s内必须打开入口阀和进料阀。 (6) 在进料泵停止后(来自流量传感器的信号)阀门必须立即被关闭以防止配料从泵中泄露。 (7) 进料泵的启动与一个时间监控功能相结合,换句话说,在泵启动后的7 s之内,流量传感器会报告溢出。 (8) 当进料泵运行时,如果流量传感器没有流量信号,进料泵必须尽可能快地断开。 (9) 必须对进料泵启动的次数进行计数(维护间隔)。

2) 混合罐区域 (1) 当罐的液面传感器指示“液面低于最低限”或排料阀打开时,搅拌电机的启动必须被锁定。 (2) 搅拌电机在达到额定速度时要发出一个响应信号。如果在电机启动后10 s内还未接收到该信号,则电机必须被断开。 (3) 必须对搅拌电机的启动次数进行计数(维护间隔)。 (4) 在混合罐中必须安装三个传感器。① 罐装满:一个常闭触点。② 罐中液面高于最低限:一个常开触点。③ 罐非空:一个常开触点。

3) 排料区域 (1) 罐内产品的排出由一个螺线管阀门控制。 (2) 这个螺线管阀门由操作员控制,但是最迟在“罐空”信号产生时,该阀必须被关闭。 (3) 当搅拌电机在工作或罐空时打开排料阀必须被锁定。

3. 定义逻辑块 通过程序块可以将用户程序分布到不同的块中并建立块调用的分层结构来组织程序。本例中用户程序主要由组织块OB1、功能块FB1、功能FC1及三个数据块DB1~DB3组成。图5.6所示为结构化编程的块的分层调用结构。

图5.6 工业搅拌过程的分层调用结构图

4. 指定符号名 如果在用户程序中使用了符号,则必须用STEP 7在符号表中对这些符号进行定义。表5.6所示为所用的程序组件的符号名及绝对地址。 表5.6 程序组件的符号名及绝对地址

续表

5. 生成电机的FB 电机的FB包括以下逻辑功能: (1) 启动和停止输入。 (2) 允许设备操作的一系列互锁(泵和搅拌电机)。 (3) 来自设备的反馈必须在一个特定的时间内出现。 (4) 时间点和响应时间等时间都必须被指定。 (5) 如果按下启动,设备自动运行直至按下停机按钮。 (6) 当设备接通时,一个定时器启动运行,如果在定时器的时间到达之前未接到来自设备的响应信号,则停机。

Start Fault Stop Start_Dsp Response Stop_Dsp Reset_Maint Maint Motor Timer_No Response_Time Motor 图5.7 电机通用FB的输入和输出示意图

在STEP 7中,每一个被不同的块调用的块一定要在调用它的块之前生成,因此在样板程序中必须在OBl之前先生成电机的FB。STL编程语言的FBl程序部分如下: Network l 启动/停止和锁存 A( O #Start O #Motor ) AN #Stop = #Motor

Network 2 启动监控 A #Motor L #Response_Time SD #Timer No AN #Motor R #Timer No L #Timer No T #Timer bin LC #Timer No T #Timer BCD A #Timer No AN #Response S #Fault R #Motor

Network 3 启动指示灯和故障复位 A #Response = #Start_Dsp R #Fault Network 4 断开指示灯 AN #Response = #Stop_Dsp

Network 5 启动计数 A #Motor FP #Start_Edge JCN lab1 L #Starts + 1 T #Starts lab1:NOP 0 Network 6 维护指示灯 L #Starts L 50 >=I = #Maint

Network 7 复位累计启动次数的计数器 A #Reset_Maint A #Maint JCN END L 0 T #Starts END:NOP 0

6. 生成阀门FC 入口和进料阀以及排料阀的功能包含以下逻辑功能: (1) 一个用于打开阀门的输入,一个用于关闭阀门的输入。 (2) 互锁允许阀门被打开。互锁状态存储在OB1的临时局域数据(L堆栈)中(“Valve_enable”),并且在阀门的FC被处理时与打开和关闭的输入进行逻辑组合。

Open Close Valve Dsp_Open Dsp_Closed 图5.8 阀门的通用FC的输入和输出示意图

由于被调用的块必须在调用块之前生成,因此阀门的FCl功能必须在OB1之前生成。STL编程语言的FCl程序部分如下: Network l 打开/关闭和锁存 A( O #Open O #Valve ) AN #Close = #Valve Network 2 显示“阀门打开” A #Valve = #Dsp_Open Network 3 显示“阀门关闭” AN #Valve = #DSp_Closed

7. 生成OB1 OB1决定用户程序的结构,也包含要传送给各个功能的参数。(程序略)例如: (1) 为进料泵和搅拌电机FB提供输入参数。PLC的每一个循环周期都会处理这个电机的FB。 (2) 如果电机的FB被处理,则输入Timer_No和Response_Time所需要的时间。 (3) 程序为处理进料泵和搅拌电机的控制任务,使用电机的FB时分别配备了不同的背景DB。

思考与练习题 1.用I0.0控制接在Q4.0~Q4.7上的8个彩灯循环移位,用T37定时,每0.5 s移1位,首次扫描时给Q4.0~Q4.7置初值,用I0.1控制彩灯移位的方向,试设计语句表程序。 2.在按钮I4.0按下后Q4.0变为1状态并自保持,I0.1输入3个脉冲后(用C1计数)T37开始定时,5 s后Q4.0变为0状态,同时C1被复位,在可编程序控制器刚开始执行用户程序时,C1也被复位,试设计梯形图。

3. 多个传送带启动和停止示意图如下图所示。按下启动按钮后,电动机M1通电运行,行程开关SQl有效后,电动机M2通电运行,行程开关SQ2有效后,M1断电停止,其他传动带动作类推。整个系统循环工作。按下停止按钮后,系统把目前的工作进行完后停止在初始状态。