绘制中断处理程序通常涉及以下几个步骤:
配置中断
在PLC硬件配置中开启中断功能,例如配置一个循环中断,设置其周期和相位偏移。
在TIA Portal中设置中断程序,创建一个中断类型的OB(如OB40),并在主程序(如OB1)中使用ATTACH指令将中断事件与OB关联。
编写中断处理程序
在中断OB中编写处理程序。例如,在OB40中编写紧急停止所有电机、设置报警标志和记录中断发生时间的代码。
中断程序应简洁高效,避免复杂运算。
中断流程
中断过程包括中断源发出中断请求、判断当前处理机是否允许中断和该中断源是否被屏蔽、优先权排队等步骤。
中断服务程序的执行流程包括保护断点、寻找中断源、执行硬件中断服务子程序、清除中断请求标志位、转入相应的中断服务程序并返回。
中断向量表
设置中断向量表,存放中断服务程序的偏移地址和段地址。
中断服务程序结构
中断服务程序通常包含中断处理例程的地址、中断所属的模块名称、是否允许共享的标志位等信息。
示例代码
配置中断
在TIA Portal中,进入“程序块”,新建一个“中断”类型的OB(如OB40)。
在主程序(如OB1)中,使用ATTACH指令将中断事件与OB关联:
```pascal
ATTACH OB_NR := 40, EVENT := "EventHardwareInterrupt", HWINT := { INPUT := "I0.0", EVENT := 1 }
```
编写中断处理程序
在OB40中编写中断处理程序:
```pascal
ORGANIZATION_BLOCK "Cyclic_Interrupt_1"
VAR_TEMP temp_value : REAL;
BEGIN
// 获取传感器数据
temp_value := "Input_Sensor_Value";
// 判断是否需要紧急处理
IF temp_value > 80.0 THEN
// 执行紧急降温操作
"Cooling_System" := TRUE;
"Warning_Light" := TRUE;
END_IF;
END_VAR
```
总结
绘制中断处理程序需要明确中断的配置、编写简洁高效的中断处理代码,并理解中断的执行流程和结构。通过以上步骤和示例代码,可以有效地创建和调试PLC中的中断处理程序。