首页 理论教育 程序结构规划:优化指南

程序结构规划:优化指南

时间:2023-06-23 理论教育 版权反馈
【摘要】:适当的程序结构能减少程序的扫描时间,提高程序的可读性,程序结构的规划遵循以下几点:建立专门的子例程对不同的I/O点进行统一规划、分类由于站场内设备的I/O点数量较多,且不同站场的设备、工艺上存在着一定的差异,导致现场传到PLC中的I/O信号点不仅数量庞大,而且种类不同。图4-59 变量的规划4)Input_AO 将所有经过PLC运算后,需要发出的模拟量输出点,规划到一起。如图4-62、4-63所示为修改前后的程序对比。

程序结构规划:优化指南

适当的程序结构能减少程序的扫描时间,提高程序的可读性,程序结构的规划遵循以下几点:

(1)建立专门的子例程对不同的I/O点进行统一规划、分类

由于站场内设备的I/O点数量较多,且不同站场的设备、工艺上存在着一定的差异,导致现场传到PLC中的I/O信号点不仅数量庞大,而且种类不同。如果不加以规范管理会给不同站场相互阅读程序带来了一定的困难,故建立专门的子例程对不同的I/O点进行统一的规划、分类。

根据传输点的数据类型不同,可以将其分成数字量、模拟量两大类。

根据传输点的数据用途不同,可以将其分成I/O输入点、I/O输出点、上位机映射点和第三方通信点。

综合上述情况,可建立6个子例程,对其进行规划,如图4-59所示。

1)Input_DI 将所有从现场传到PLC中的数字量输入点,规划到一起。

2)Input_AI 将所有从现场传到PLC中的模拟量输入点,规划到一起。

3)Input_DO 将所有经过PLC运算后,需要发出的数字量输出点,规划到一起。

图4-59 变量的规划

4)Input_AO 将所有经过PLC运算后,需要发出的模拟量输出点,规划到一起。

5)MAPPING 将所有需要在上位机上显示的N7,F8映射点,规划到一起。

6)MESSAGE(ESD_TO_PLC,PLC_TO_ESD)将所有第三方通信的传输点,包括PLC与ESD的通信点,规划到一起。

(2)尽可能将多个小的Program合成一个大的Program

实际上,只建立一个Task和一个Program,并将所有子例程都放到这个Program中,最后在主例程中用JSR指令调用其他子例程是用户最好的选择,如图4-60所示。因为对于冗余系统来说,其数据更新发生在每个Program执行之后,所以越少的Program,意味着冗余系统刷新备份信息的时间越少。

图4-59 变量的规划

4)Input_AO 将所有经过PLC运算后,需要发出的模拟量输出点,规划到一起。(www.xing528.com)

5)MAPPING 将所有需要在上位机上显示的N7,F8映射点,规划到一起。

6)MESSAGE(ESD_TO_PLC,PLC_TO_ESD)将所有第三方通信的传输点,包括PLC与ESD的通信点,规划到一起。

(2)尽可能将多个小的Program合成一个大的Program

实际上,只建立一个Task和一个Program,并将所有子例程都放到这个Program中,最后在主例程中用JSR指令调用其他子例程是用户最好的选择,如图4-60所示。因为对于冗余系统来说,其数据更新发生在每个Program执行之后,所以越少的Program,意味着冗余系统刷新备份信息的时间越少。

图4-60 程序创建实例

(3)在使用JSR命令时,尽量使用有条件跳转 为了减少CPU的扫描时间,应该根据运行条件的不同,有选择地进行子例程的跳转,这样可以减少扫描时间,如图4-61所示。

(4)尽可能地整合逻辑代码 分析程序的逻辑控制,将一些逻辑控制进行整合,减少功能块的数量,从而减少程序的执行过程,进而减少程序的执行时间。如图4-62、4-63所示为修改前后的程序对比。

(5)使用周期型任务代替连续型任务 冗余系统的备份、更新时间包含在非预定型通信时间中。如果使用连续任务,那么System Overhead Time Slice设定值将决定非预定型通信时间,一旦超时,备份更新过程有可能被中断,所以溢出时间片值要足够大,这样就会增加扫描时间。但是,如果使用周期型任务,那么冗余系统的备份更新可在所有周期型任务完成后的时间内进行更新备份,从而节省扫描时间。

图4-60 程序创建实例

(3)在使用JSR命令时,尽量使用有条件跳转 为了减少CPU的扫描时间,应该根据运行条件的不同,有选择地进行子例程的跳转,这样可以减少扫描时间,如图4-61所示。

(4)尽可能地整合逻辑代码 分析程序的逻辑控制,将一些逻辑控制进行整合,减少功能块的数量,从而减少程序的执行过程,进而减少程序的执行时间。如图4-62、4-63所示为修改前后的程序对比。

(5)使用周期型任务代替连续型任务 冗余系统的备份、更新时间包含在非预定型通信时间中。如果使用连续任务,那么System Overhead Time Slice设定值将决定非预定型通信时间,一旦超时,备份更新过程有可能被中断,所以溢出时间片值要足够大,这样就会增加扫描时间。但是,如果使用周期型任务,那么冗余系统的备份更新可在所有周期型任务完成后的时间内进行更新备份,从而节省扫描时间。

图4-61 条件跳转实例

图4-61 条件跳转实例

图4-63 修改后程序

图4-63 修改后程序

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

我要反馈