CL语言培训教程一、概述1.用文本编辑器(TextEditor)编辑CL源文件。2.带-UL选项编译CL源文件,形成目标代码,同时将程序名、信息、段名等存入HG/NIM库,以便LCN侧的设备使用。3.拷贝CL/MC,CL/PM,CL/APM,CL/HPM目标代码文件到系统缺省的HM卷/目录(&Ennnn—UCN号或DATAHIWAY号)中。4.将CL/MC、CL/PM、CL/APM、CL/HPM目标文件从HM系统缺省卷/目录下装(LOAD)到MC、PM、APM、HPM控制器中。5.若有需要,可将CL/MC、CL/PM、CL/APM、CL/HPM程序从MC、PM、APM、HPM控制器保存(SAVE)到HM卷/目录(或外部存贮器)中。二、CL语言相关文件类型CL源文件(.CL)用文本编辑器通过录入、编辑相应的CL语言(如:CL/AM,CL/HPM,CL/MC等)而生成。CL错误列表文件(.LE)在对CL源文件进行编译时,如果源文件有错误,编译器检测到错误后会生成错误列表文件(与源文件同名,扩展名为LE),以便查看CL源文件错在哪里。CL列表文件(.LS)在对CL源文件进行编译时,如果源文件没有错误,会生成列表文件(与554LCNUCN432221库库&Enn目录DATAHIWAYCGAMGUSHMHGNIMMCAMCHPMAPMPMCL源文件(*.cl)CL目标文件(*.no)图1CL语言编辑、保存、编译流程示意图源文件同名,扩展名为LS),若以前有错误列表文件,则在生成列表文件的同时会把源错误列表文件删除。备份文件(.BU)在对CL源文件进行编辑时,若此程序以前已经存贮过,内容改变后则会形成备份文件(与源文件同名,扩展名为BU),以便后悔时恢复。CL/MC目标文件(hhbbsiii.MO)在对CL/MC源文件进行编译时,如果源文件没有错误,编辑后会生成目标代码文件(扩展名为MO,形式为:hhbbsiii.MO其中,hh:Hiwaynumber;bb:Boxnumber;s:Sequenceslotnumber;iii:程序文件HG库索引号iii(HG库索引号)HGlibraryindexnumber64-127129-192128-191513-576192-255193-256CL/PM目标文件(uppssiii.PO)在对CL/PM源文件进行编译时,如果源文件没有错误,编辑后会生成目标代码文件(扩展名为PO,形式为:uppssiii.PO其中,u:UCNnumber;pp:PMnodenumber;ss:Sequenceslotnumber;iii:程序文件NIM库索引号CL/APM目标文件(uppssiii.NO)在对CL/APM源文件进行编译时,如果源文件没有错误,编辑后会生成目标代码文件(扩展名为NO,形式为:hhbbsiii.NO其中,hh:UCNnumber;bb:APMnodenumber;s:Sequenceslotnumber;iii:程序文件NIM库索引号CL/HPM目标文件(uppssiii.NO)在对CL/HPM源文件进行编译时,如果源文件没有错误,编辑后会生成目标代码文件(扩展名为NO,形式为:hhbbsiii.NO其中,hh:UCNnumber;bb:HPMnodenumber;s:Sequenceslotnumber;iii:程序文件NIM库索引号CL/AM目标文件(.AO)在对CL/HPM源文件进行编译时,如果源文件没有错误,编辑后会生成目标代码文件(与源文件同名,扩展名为AO)三、CL语言程序结构⑧⑩⑨⑦⑥⑤④②①SEQUENCE程序名(POINT过程模件点名)LOCAL变量名:变量类型AT内部变量名EXTERNAL相关点名(外部变量)PHASE段名(ALARMtime;异常处理类型异常处理名)STEP步名语句.....语句END程序名异常处理类型HANDLER异常处理名(WHEN条件)STEP步名语句...语句RESTARTSTEP步名语句.RESUMEPHASE段名..语句END异常处理名(abnormalhandlername)SUBROUTINE子程序名(变量:存取方式类型;变量:存取方式类型…)STEP步名语句...语句END子程序名(subroutinename)③图2CL/MC程序结构说明:①顺控程序头(Sequenceheader)②变量声明部分(Variabledeclarationpart)③主顺控程序执行部分(Normalsequenceexecutionpart)④主顺控程序结束(EndofNormalsequence)⑤异常处理程序头(Abnormalsequenceheader)⑥异常处理程序执行部分(Abnormalsequenceexecutionpart)⑦异常处理程序结束(EndofAbnormalsequence)⑧子程序头(Subroutineheader)⑨子程序执行部分(Subroutineexecutionpart)⑩子程序结束(endofSubroutine)⑧⑩⑨⑦⑥⑤④②①SEQUENCE程序名(APM;POINT过程模件点名)LOCAL变量名:变量类型AT内部变量名EXTERNAL相关点名(外部变量)PHASE段名(ALARMtime;异常处理类型异常处理名)STEP步名语句.....语句END程序名异常处理类型HANDLER异常处理名(WHEN条件)STEP步名语句...语句RESTARTSTEP步名语句.RESUMEPHASE段名..语句END异常处理名(abnormalhandlername)SUBROUTINE子程序名(变量:存取方式类型;变量:存取方式类型…)STEP步名语句...语句END子程序名(subroutinename)③图3CL/APM程序结构说明:①顺控程序头(Sequenceheader)②变量声明部分(Variabledeclarationpart)③主顺控程序执行部分(Normalsequenceexecutionpart)④主顺控程序结束(EndofNormalsequence)⑤异常处理程序头(Abnormalsequenceheader)⑥异常处理程序执行部分(Abnormalsequenceexecutionpart)⑦异常处理程序结束(EndofAbnormalsequence)⑧子程序头(Subroutineheader)⑨子程序执行部分(Subroutineexecutionpart)⑩子程序结束(endofSubroutine)⑧⑩⑨⑦⑥⑤④②①SEQUENCE程序名(HPM;POINT过程模件点名)LOCAL变量名:变量类型AT内部变量名EXTERNAL相关点名(外部变量)PHASE段名(ALARMtime;异常处理类型异常处理名)STEP步名语句.....语句END程序名异常处理类型HANDLER异常处理名(WHEN条件)STEP步名语句...语句RESTARTSTEP步名语句.RESUMEPHASE段名..语句END异常处理名(abnormalhandlername)SUBROUTINE子程序名(变量:存取方式类型;变量:存取方式类型…)STEP步名语句...语句END子程序名(subroutinename)③图3CL/HPM程序结构说明:①顺控程序头(Sequenceheader)②变量声明部分(Variabledeclarationpart)③主顺控程序执行部分(Normalsequenceexecutionpart)④主顺控程序结束(EndofNormalsequence)⑤异常处理程序头(Abnormalsequenceheader)⑥异常处理程序执行部分(Abnormalsequenceexecutionpart)⑦异常处理程序结束(EndofAbnormalsequence)⑧子程序头(Subroutineheader)⑨子程序执行部分(Subroutineexecutionpart)⑩子程序结束(endofSubroutine)说明:①CL/AM程序块头(Blockheader)②变量声明部分(Variabledeclarationpart)③主顺控程序执行部分(Normalsequenceexecutionpart)④CL/AM程序块结束(EndofBlocksequence)④①②BLOCK程序块名(POINT操作点名ATGENERAL(NN))LOCAL变量名:变量类型EXTERNAL相关点名(外部变量)语句.....语句END程序块名③图3CL/AM程序结构四、CL语言语法1.CL语句CL语句按功能可分为以下几类:赋值替换语句:对变量赋值或改变变量的值。SET:给变量赋值(例如:SETUV101.OP=CLOSE)READ….FROM….:从远程站(本站外)读取值到本站变量。WRITE…FROM…..:把本站值赋给远程站(本站外)中的变量。StageChange:改变数字量输出状态。(例如:CLOSEDFV1210)控制语句:控制程序流程。GOTO:程序的跳转IF/THEN/ELSE:条件分支语句。LOOP/REAPT:循环语句,用于重复执行。CALL:调子程序ENB:异常处理句柄使能。INITATE:初始化异常处理句柄。RESUME:从异常处理返回到指定的段。延时语句:暂停程序执行。PAUSE:在半自动方式(SEMI-AUTOMODE)下暂时中断程序执行。WAIT:使程序在此语句处等待指定的时间或等待条件成立后,再继续执行。通讯语句:给操作员或计算机模件发送信息。SEND:发出信息,提醒注意。执行结束语句:结束顺控程序的执行。FAIL:使程序进入FAIL状态。EXIT:在子程序中使用则结束子程序;在主程序中使用则结束主程序。ABORT:程序异常结束。END:程序正常结束。2.CL语言在每个设备中的容量限制:以下为CL/MC,CL/PM,CL/APM,CL/HPM容量限制。详细情况请参考书CL/MC,CL/PM,CL/APM,CL/HPM相关手册。每步中最大语句数量:CL/MC:254CL/APM:255CL/HPM:255每个程序中最大块数:CL/MC:512CL/APM:392CL/HPM:392块的大小(单位:WORD):CL/MC:16CL/APM:32CL/HPM:32每个控制器最在块的大小:CL/MC:1023(REL.30版或以后)CL/APM:12400CL/HPM:12400每个公式或条件可被写的最大项目数:CL/MC:100CL/APM:100CL/HPM:100每个程序中变量声明的最大数量(包括局部变量,局部常量及外部变量):CL/MC:270CL/APM:270CL/HPM:270每个程序中可被声明的常数最大数量:CL/MC:256CL/APM:256CL/HPM:2563.五、NIM库CL/PM程序:用到的程序名,段名,步名及LCN侧的信息必须在NIM库中注册。CL/APM和CL/HPM程序,只有程序名必须在NIM库中注册。如在编译CL/MC程序时使用–UL参数(UpdateLibrary)选项,会自动在HG库中注册。注册项目NIM库索引号(NIMLibraryindexnumber)程序名100-3000(只对CL/PM)段/步名信息自定义枚举状态异常处理名子程序名表3NIM库注册内容六、HG库用到的程序名,段名,步名及LCN侧的信息必须在HG库中注册。如在编译CL/MC程序时使用–UL参数(UpdateLibrary)选项,会自动在HG库中注册。注册项目HG库索引号(HGLibraryindexnumber)程序名129-256,513-576段名129-256,513-576步名257-512信息1-576表3HG库注册内容七、CL语言上机操作1.顺控程序的起动:1)程序正常起动见下面CL/HPM装载和运行部分2)异常中断时程序的起动(此方法用于当一个程序出现终止或故障时,如“