- 1、本文档共118页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
9.S7-200系列可编程控制器基本功能指令及应用解读
3.中断指令及中断程序 中断允许指令: ENI 中断禁止指令: DISI 中断条件返回指令:CRETI 中断无条件返回指令RETI 中断标号 INT N 中断连接指令: ATCH INT,EVNT 中断分离指令: DTCH EVNT 中断程序编排的具体要求是: 1.视需要在主程序的全局或某些程序段设置中断允许及中断禁止指令。 2.为程序中所有可能出现的中断,编制中断子程序并分别编号,并依次在主程序结束指令后中断子程序区放置。对于每个中断子程序,标号指令是开始,中断无条件返回指令是结尾。 3.在主程序中设置中断连接指令,将各个中断事件与中断子程序联系起来。多个中断事件可建立同一个中断程序,但一个中断事件不可以同时建立多个中断程序。ATCH激活中断事件对应的中断子程序段。当需中止该中断执行时在主程序中安排中断分离指令(DTCH),截断中断事件和中断程序之间的联系,使中断回到不激活或无效状态。 4.在中断子程序中不能使用DISI、ENI、HDEF、FOR/NEXT和END等指令。 4.中断程序的执行及程序数据共享(定时中断及外端口中断) 由于中断是随机产生的,也即是说在主程序执行的过程中随时都可能产生中断,为了减少主程序中断的不良影响,要求被中断的时间越短越好。这就要求中断子程序尽可能简洁。在CPU接到中断申请且准备响应时,系统先将反映指令执行情况及累加器状态的逻辑堆栈、累加器、寄存器及特殊标志位保存,然后再去执行中断程序。对于通讯及外部中断,每一个中断申请一般只执行中断程序一次。对于时基或定时器中断,每隔一定的时间执行中断程序一次。当中断程序执行完毕时,恢复中断执行前保存的数据,程序返回主程序原断点执行。 主程序与一个或数个中断程序间可实现数据的共享。例如,主程序中的一部分可提供一些数据供中断程序使用,反之亦然。当编制这种共享数据的程序时,必须考虑到中断事件的“异步性质”,即中断事件可以在主程序执行的任何一点产生,共享数据的一致性可能因为主程序中指令执行时被中断事件中断而破坏。 编程时可采取二类措施:一是限制共享存储单元的访问方式,二是保证使用共享存储器单元的指令序列不会被中断。具体的编程技巧如下: 1.指令表程序中共享单个变量:如共享数据是单个的字节、字、双字变量,程序用STL编写,通过把共享数据操作得到的中间值只存储到非共享的存储器单元或累加器中,可保证正确的共享访问。 2.梯形图程序中共享单个变量:如共享数据是单个的字节、字、双字变量,程序用LAD编写,若只用MOVE指令访问共享存储器单元,可保证正确的共享访问。 3.指令表或梯形图程序中共享多个变量:用中断禁止指令(DISI)及中断允许指令(ENI)控制中断的执行。在用户程序开始访问共享数据存储器之前关中断,访问结束后再开中断,但这种方法将延迟响应中断。 5.中断指令应用举例 例一 MAIN INT_0 图9-19 下降沿中断程序梯形图 MAIN INT_0 图9-20 用定时中断读取模拟量数值梯形图 SBR0 例二 例三: 在I0.0的上升沿通过中断使Q0.0立即置位。在I0.1的下降沿通过中断使Q0.0立即复位。 MAIN INT_0 INT_1 例四:用定时中断来产生闪烁频率脉冲。当连接在I0.1的开关接通时,闪烁频率减半,当连在I0.0的开关接通时,又恢复成原有的频率。 当输入I0.1有上升沿时,定时中断的时间基准加倍。 当输入I0.0有上升沿时,恢复使用原频率。 INT_0 INT_1 第七节 其他功能指令 一、表指令 表指令是存储器指定区域中数据的管理指令。可以指定一个不大于100个字的数据区,可以依次向该数据区内填入数据,也可以依次取出数据,还可以在数据区内查找符合一定条件的数据,进而对表内的数据进行统计、排序、比较等处理。表指令在数据的记录、监控等方面具有明显的意义。 表指令含填表、查表、先进先出和后进后出及存储器填充指令,存储器填充指令的常用于程序初始化。 1.填表指令 填表指令举例 指令格式: ATT DATA TBL 1234 填表指令举例 VW100 0006 0002 5431 8942 xxxx xxxx xxxx xxxx VW200 VW202 VW204 VW206 VW208 VW210 VW212 VW214 执行ATT指令前 0006 0003 5431 8942 1234 xxxx xxxx xxxx VW200 VW202 VW204 VW206 VW208 VW210 VW212 VW214 执行ATT指令后 2.先进先出、后进先出指令 FIFO TBL,DATA LIFO TBL,D
文档评论(0)