首页 理论教育 使用循环中断实现彩灯控制程序

使用循环中断实现彩灯控制程序

时间:2023-06-20 理论教育 版权反馈
【摘要】:本节的实训主要用于熟悉启动组织块与循环中断组织块的使用方法。在OB1中编写图4-27的程序,在I0.2的上升沿调用SFC“EN_IRT”激活OB35对应的循环中断,在I0.3的上升沿时调用SFC“DIS_IRT”禁止OB35对应的循环中断。单击两次I0.2对应的小方框,在I0.2的上升沿,循环中断被激活,QB0的值又开始循环移位。

使用循环中断实现彩灯控制程序

本节的实训主要用于熟悉启动组织块与循环中断组织块的使用方法。

1.CPU模块的启动方式与启动组织块

打开CPU模块的属性对话框的“启动”选项卡,S7-400可以选择暖启动、热启动和冷启动这3种启动方式中的一种,绝大多数S7-300 CPU只能暖启动。

OB100~OB102是启动组织块,用于系统初始化。CPU上电或运行模式由STOP切换到RUN时,CPU只是在第一个扫描循环周期执行一次启动组织块。

1)暖启动:过程映像数据以及非保持的存储器位、定时器和计数器被复位。具有保持功能的存储器位、定时器、计数器和所有的数据块将保留原数值。执行一次OB100后,循环执行OB1。

2)热启动:如果S7-400 CPU在RUN模式时电源突然丢失,然后又很快重新上电,将执行OB101,自动地完成热启动,从上次RUN模式结束时程序被中断之处继续执行,不对计数器等复位。

3)冷启动:上述的所有系统存储区均被清除,即被复位为零,包括有保持功能的存储区。用户程序从装载存储器载入工作存储器,调用OB102后,循环执行OB1。

用户可以通过在启动组织块OB100~OB102中编写程序,来设置CPU的初始化操作,例如设置开始运行时某些变量的初始值和输出模块的初始值等。

2.循环中断组织块

循环中断组织块用于按精确的时间间隔循环执行中断程序,例如周期性地执行闭环控制系统的PID控制程序,间隔时间从STOP切换到RUN模式时开始计算。

时间间隔不能小于5ms。如果时间间隔过短,还没有执行完循环中断程序又开始调用它,将会产生时间错误事件,调用OB80。如果没有创建和下载OB80,CPU将进入STOP模式。

大多数S7-300 CPU只能使用OB35,其余的CPU可以使用的循环中断OB的个数与CPU的型号有关。

3.硬件组态

用新建项目向导生成名为“OB35例程”的项目(见随书光盘中的同名例程),CPU为CPU 315-2DP。双击硬件组态工具HW Config中的CPU,打开CPU属性对话框(见图4-21),由“周期性中断”选项卡可知只能使用OB35,其循环周期的默认值为100ms,将它修改为1000ms,将组态数据下载到CPU后生效。如果没有下载,循环周期为默认值100ms。

978-7-111-31641-1-Chapter04-37.jpg

图4-21 组态循环中断

相位偏移量(默认值为0)用于错开S7-400不同时间间隔的几个循环中断OB,使它们不会被同时执行,以减少连续执行循环中断OB的时间。

单击工具栏上的按钮978-7-111-31641-1-Chapter04-38.jpg,编译并保存组态信息。

4.OB100的程序

用鼠标右键单击SIMATIC管理器左边窗口中的“块”,在弹出的菜单中执行“插入新对象”→“组织块”命令,在出现的“属性-组织块”对话框中(见图4-22),将组织块的名称改为OB100,设置创建语言为LAD(梯形图)。单击“确定”按钮后,在SIMATIC管理器右边窗口出现OB100。

双击打开OB100(见图4-23),用MOVE指令将MB0的初值置为7,即低3位置1,其余各位为0。此外用ADD_I指令将MW6加1,可以观察CPU执行OB100的次数。

978-7-111-31641-1-Chapter04-39.jpg

图4-22 OB100的属性对话框

978-7-111-31641-1-Chapter04-40.jpg

图4-23 OB100的程序

5.OB35的程序(www.xing528.com)

OB35中的程序用于控制8位彩灯循环移位,用I0.0控制移位的方向。I0.0为1状态时彩灯左移,为0状态时彩灯右移。

S7-300/400只有双字循环移位指令,MB0是双字MD0的最高字节(见图4-24)。在MD0每次循环左移1位之后,最高位M0.7的数据被移到MD0最低位的M3.0。为了实现MB0的循环移位,移位后如果M3.0为1状态,将MB0的最低位M0.0置位为1(见图4-26的程序段1),反之将M0.0复位为0,相当于MB0的最高位M0.7移到了MB0的最低位M0.0。

978-7-111-31641-1-Chapter04-41.jpg

图4-24 MB0循环左移

在MB0每次循环右移1位之后(见图4-25),MB0的最低位M0.0的数据被移到MB1最高位的M1.7。移位后根据M1.7的状态,将MB0的最高位M0.7置位或复位(见图4-26的程序段2),相当于MB0的最低位M0.0移到了MB0的最高位M0.7。

978-7-111-31641-1-Chapter04-42.jpg

图4-25 MB0循环右移

在程序段3,用MOVE指令将MB0的值传送到QB4,用QB4来控制8位彩灯。

978-7-111-31641-1-Chapter04-43.jpg

图4-26 OB35的程序

6.禁止和激活硬件中断

SFC40“EN_IRT”和SFC39“DIS_IRT”分别用于激活和禁止中断和异步错误的系统功能。它们的参数MODE为2时激活指定的OB编号对应的中断,MODE必须用十六进制数来设置。OB_NR是中断的编号。

在OB1中编写图4-27的程序,在I0.2的上升沿调用SFC“EN_IRT”激活OB35对应的循环中断,在I0.3的上升沿时调用SFC“DIS_IRT”禁止OB35对应的循环中断。

978-7-111-31641-1-Chapter04-44.jpg

图4-27 OB1激活和禁止循环中断的程序

7.仿真实验

打开仿真软件PLCSIM,下载系统数据和所有的块后,切换到RUN-P模式,CPU调用一次OB100,MW6被加1(见图4-28),说明只调用了一次OB35。MB0被设置为初始值7,其低3位为1。OB35被自动激活,CPU每1s调用一次OB35。因为I0.0的初始值为0,QB4的值每1s循环右移1位。

将I0.0置为1状态,QB4由循环右移变为循环左移。

单击两次I0.3对应的小方框,在I0.3的上升沿,循环中断被禁止,CPU不再调用OB35,QB0的值固定不变。单击两次I0.2对应的小方框,在I0.2的上升沿,循环中断被激活,QB0的值又开始循环移位。

改变OB100中MB0的初始值后,下载到仿真PLC,观察运行的效果。

8.仿真练习

要求每500ms调用一次OB35,每次调用时将MW30加1。编写程序后下载到仿真PLC,调试程序直到满足要求。

978-7-111-31641-1-Chapter04-45.jpg

图4-28 PLCSIM

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈