主程序,也称主函数,在许多命令式程序设计语言里,主函数(main function)是程序开始运行的地方,通常来说一个PLC系统只有一个主程序。
Main主程序是整个设备的系统程序,是设备控制的入口,在Portal中,可以建立多个OB主程序,PLC运行的时候,将按照这些主程序的编号由小到大依次执行。
1.1. 主程序(OB1)说明图1‑1: PLC控制程序组成示意图
整个标准框架如上图所示,作为设备程序的主入口OB1主要包括3个部分:系统信息处理、Event处理程序、设备系统控制程序。
l 系统信息处理程序IDB_SystemInfo
系统信息处理程序IDB_SystemInfo是功能块FB_SyetemInfo的实例化背景数据块。该功能块主要用于收集CPU的时钟信息,包括CPU的时钟脉冲、CPU的时间信息以及OB1的当前循环时间等。
该程序的信息是整个PLC运行的常用数据,用于其他程序和算法的逻辑处理。
该内容即
西门子PLC系统功能程序说明的内容,在标准架构中的程序块名字为FB_SystemInfo,实例化数据块的名字为IDB_SystemInfo。
lEvent处理程序FC_Event
设备过程信息分为警告(Warning)和报警(Alarm),将设备的状态(Status)信息和过程信息统称为事件(Event)。FC_Event主要功能就是对所有设备的事件(Event)进行集中管理和输出,该函数没有数据接口,其详细内容后面Event管理篇章中会详细介绍。
l设备系统控制程序IDB_System
设备系统控制程序IDB_System是功能块FB_Syetem的实例化背景数据块,是所有设备控制程序的入口,该功能块中的内容包括以下几个部分:
Ø FC_Electrical
电气设计程序FC_Electrical,用于监视所有电气设备的程序。
Ø FB_UNXXMain
实际设备程序FB_UNXXMain,实例化数据块为IDB_UNXXMain。基于工艺需求,此处有至少一个UN的程序。FB_UNXXMain下一级的程序就都是EM层级的设备程序的调用,每一台设备对应一种类型的FB块,其对应的实例化数据块的名称为IDB_UNXX_EMXX,其中EMXX中的XX就是EM的编号。
Ø FC_Command
控制指令程序FC_Command,是将所有按钮的信号和HMI的信号集中处理然后输出到需要的数据块中。
模式状态机的标准架构中的输出数据块为LPMLV30_GlobalData中的Control的变量中。
图1‑2: 模式状态机的控制指令输出示意图
模式控制机的标准架构中的输出数据块为Command中的变量。
图1‑3 : 模式控制机的控制指令输出示意图
这些不同就是由于模式状态和模式控制的两种不同方式,这也是标准架构程序中唯一不同的地方,除此之外,两种标准架构的程序都是一样的,详细细节描述后续的Operation的部分会详细描述。
Ø 控制管理程序
模式状态机机的标准架构中的控制程序为FB_ModeStateManager,实例化数据块为IDB_ModeStateManager。
FB_ModeStateManager即程序块LPMLV30_UnitModeStateManager,是PackML中的模式状态管理程序,在标准架构中将名字更改为FB_ModeStateManager,目的是使所有FB块的名字的规则是一致的。
模式控制机的标准架构中的控制程序为FB_ModeControlManager,实例化数据块为IDB_ModeControlManager。
1.2. 程序归类图1‑4 :程序文件夹示意图
程序按照不同类别,分别放在5个文件夹中:Equipment、Function、FunctionBlock、GlobalDataBlock、SystemInfo。
1.2.1. Equipment文件夹图1‑5: Equipment文件夹示意图
放置在该文件夹中的程序都是和设备相关的实例化数据块(背景数据块),文件夹中包括4个子文件夹,分别为Cabinet(控制柜)、Control(控制)、System(系统)、UNXX(UNXX的设备程序)。
Ø Cabinet子文件夹
该文件夹中的程序是电气控制柜的程序(FB_CabinetXXX)的实例化数据块(IDB_CabinetXXX)。
所有UN05中的EM设备程序的实例化背景数据块也都被归类在该子文件夹。
Ø Control子文件夹
该文件夹中的程序为模式和控制管理程序的实例化数据块。
模式状态机的标准架构中的程序为模式状态管理程序(FB_ModeStateManager)的实例化数据块(IDB_ModeStateManager)。
模式控制机的标准架构中的程序为模式控制管理程序(FB_ModeControlManager)的实例化数据块(IDB_ModeControlManager)。
图1‑6: 模式控制机实例化数据块示意图
Ø System子文件夹
该文件夹中的程序为系统控制程序(FB_System)的实例化数据块(IDB_System)。
Ø UNXX子文件夹
该文件夹中的程序有UN01设备主程序(FB_UN01Main)的实例化数据块(IDB_ UN01Main)。
所有UNXX中的EM设备程序的实例化背景数据块也都被归类在该子文件夹,既然UNXX就意味着可以有多个UN,这主要基于工艺以及设备分层后的UN的数量。
1.2.2. Function文件夹图1‑7: Function文件夹示意图
放置在该文件夹中的程序都是一些算法函数,主要是频率输出算法(FC_Frequency)、控制指令程序(FC_Command)。文件夹中包括2个子文件夹Electrical和Event。
Ø Electrical
该文件夹中的程序为电气设备程序,后续电气设计程序章节会说明,主要用于检查设备是否准备好,是设备运行的前提条件。
Ø Event子文件夹
该文件夹中的程序为Event处理程序的算法,后续Event章节会说明,和设备程序无关,也可以理解为只需要明白Event的算法过程而不需要细看每一个函数程序。
1.2.3. FunctionBlock文件夹图1‑8: FunctionBlock文件夹示意图
所有设备类的程序都归类在该文件夹,由于子文件夹都只有一个FB块,所以下面依次描述。
Cabinet子文件夹中归类的程序FB_CabinetXXX是电气控制柜的程序,其中XXX是电气控制柜的编码,后续电气设计程序章节会说明,主要用于检查设备是否准备好,是设备运行的前提条件。
CM子文件夹中归类的程序都是CM类设备程序,图中的FB_CM_DigitalSensor是一个CM级别的程序案例,是指数字量传感器的程序。
EM子文件夹中归类的程序都是EM类设备程序,FB_EM_Mode是面向对象的模型程序,该FB块的程序除了工艺的程序外,其他部分(如下图中的部分)的程序都已经是测试成熟的,UN/EM层级的程序块,都是基于该程序块再加上相关工艺而来。
图1‑9: 设备程序模型示意图
CM和EM是设备的分层,每一个设备或者一个行业中,CM和EM都可以按照原则分门别类,然后用FB_CM_XXX和FB_EM_XXX在PLC中表达出来。
EM程序中可以调用CM程序,这是基于二者的层级关系决定的,所以必然存在CM是不可能调用EM程序,这也是二者层级关系决定的。
这样EM和CM的程序形成后,每一台设备就可以对应一个EM程序的类型,程序中对应设备的程序就是该FB块的实例化过程而已。
下图即使某个样机中的CM和EM的程序示例,后续关于EM程序模型的内容(包括CM)会详细说明。
图1‑10: EM/CM实际案例应用示意图
1.2.4. GlobalDataBlock文件夹图1‑11: GlobalDataBlock文件夹(模式状态标准架构)示意图
放置在该文件夹中的程序都是全局数据块,文件夹中包括2个子文件夹,分别为Configuration、Index。
GlobalDataBlock文件夹中所有的数据块包括图1‑9设备程序模型中的各个部分,LPMLV30_GlobalData是模式状态机标准架构中的Operation,而模式控制机标准架构中的Operation是Command(如下图)。
图1‑12: GlobalDataBlock文件夹(模式控制标准架构)示意图
其他部分在两种标准架构中的内容都是一样的,具体的程序说明见后续对应的章节。
1.2.5. SystemInfo文件夹图1‑13: SystemInfo文件夹示意图
放置在该文件夹中是系统信息处理程序,详细说明如公众号发布的文章
西门子PLC系统功能程序说明,在标准架构中的程序块名字为FB_SystemInfo,实例化数据块的名字为IDB_SystemInfo。
看到这,读者是不是会产生一个疑问,一个设备或项目编程,若要按照该架构实施,应该怎么做呢?
这也是本系列说明想要表达清晰的内容,请各位阅读者若有心学习,则请耐心跟随本系列文章好好阅读参考,内容会有点多,是因为一个合格的标准化架构,它思考的内容肯定必须齐全但又要做的低代码。
所谓低代码,不是说程序的总的容量小,若这样的化不需要按照面向对象编程,直接按照过程实现即可。低代码是指,基于该标准化架构,后续的编程工作可以做的不需要编程,或者编程量非常少,但又能做出符合工艺及控制需求的标准化程序。