李小海
佛山伊之密精密橡胶机械有限公司
摘要:在现代机械设备制造过程中,为达到机器的自动化控制,通常都会使用工业控制系统对机器的动作进行自动化控制。工业控制系统的品牌很多,如:西门子,欧姆龙,三菱,美国AB等,国内也有不少企业生产研发这些工业控制系统。这些系统随着控制要求的提高,除了采用传统的PLC语言,如:梯形图语言(LD)、指令表语言(IL)、功能模块图语言(FBD)、顺序功能流程图语言(SFC)及结构化文本语言(ST)。高级的语言采用了Basic,C语言,甚至其它高级编程语言。不管语言怎么高级,在做机械自动设备过程中,始终要面对怎样才能把各个机器的动作和一些特殊功能的程序进行分类,并且在程序执行过程中区分主程序,子程序,中断程序,功能块等,这就需要对系统程序进行合理的布局。合理的布局和识别会增强程序的维护性和程序的执行性。
关键词:自动化;工业控制系统;语言;程序;布局
引言:为使自动化设备在实际的使用过程中,程序能很有效的进行控制。本文针对程序编写过程中需注意的事项和要领进行了具体的分析和研究。
1、机械设备的控制系统组成
机器的控制一般会存在如下硬件:
1.1、数字量的输入输出设备
这些是设备可以为高低电压的输入设备,如,行程开关或者按钮;输出设备可以为继电器或者晶体管。输入设备是显示机器的状态;输出设备是针对机器进行控制。通常针对输入设备需要配置工业控制系统的DI(Digital Input)和DO(Digital Output)模块,这些模块把外设的传感器及电气设备的电信号转变为计算机识别的位信号。如:输入模块获取高电压输入信号时,控制系统硬件对应的程序位为1,否则为0;当对输出设备单元进行控制时,系统针对硬件对应的程序位给出输出信号时,对应的位为1,否则为0时没有输出信号。
1.2、模拟量输入输出设备
模拟量输入设备可以把如传感器等外设电气设备通过模拟电路转换为控制系统的数字值,通过程序计算动态显示出来。模拟量输出设备主要是给到控制电气设备进行过程控制,如:控制变频器,以便能实现速度可以从小到大或者从大到校通常针对模拟量输入输出设备配置工业控制系统的AI(Analog Input),AO(Analog Output)模块,这些模块把输入信号变成数字值,定义大小如:-32767 ~ 32767 ;输出模拟量同样是需要把这些数字值,变成模拟量输出信号。工业使用过程中,电信号可以为DC -10V~10V;DC -5V~5V;DC 0~20mA等,这些电信号都是国际通用标准。
2、控制系统的程序布局
针对控制系统的程序需要进行如下布局:
2.1、数字输入输出设备的程序处理
可以把输入信号,建立一个输入子程序,如Input命名子程序。在这个子程序中,对输入信号进行标定,把这些输入信号进行转化为程序内部变量。
针对输出信号,建立一个输出子程序,如Output命名子程序。在这个子程序里面把其它子程序获得的内部输出变量,标定到控制系统物理输出地址变量上。
2.2、模拟量输入输出设备
可以把输入信号,建立一个输入子程序,如InAD命名子程序。在这个子程序中,对输入信号进行标定,把这些输入信号进行转化为程序内部的数字变量。
针对输出信号,建立一个输出子程序,如OutDA命名子程序。在这个子程序里面把其它子程序获得的内部输出变量数字,标定到控制系统物理输出地址变量数字上。
2.3、机器本身的控制
可以建立一个或多个子程序,如Control1,Control2,Control3命名子程序,在这些子程序里面,把输入的信号通过逻辑程序,把要实现的目的,通过转化后,变成输出中间变量,把这些变量赋值到输出模块或者通过显示终端显示出来。
2.4、功能块的使用
除了分解各个任务为子程序外,还可以通过功能块或者调用函数方式,把能打包的程序进行编写,如:一个计算公式,可以写成块,通过给它一个输入值,直接计算出答案。然后这些功能块可以被其它地方重复调用。通过这些方法减少不必要的程序量,并增强可读性。在进行程序内部运算时,要掌握好运算的精度。如果需要控制的精度是0.1,则整个计算过程需要按照0.01进行,效果不好的情况下需要做到0.001。这样计算的结果才能达到0.1的效果,这也是基本常识。但往往对于经验不够的工程师很容易出现错误,而达不到预想的控制效果。
2.5、程序调用顺序
程序的逻辑是至上而下。根据这个程序识别顺序,可以把InPut和InAD放到程序的前部,以便在进行逻辑控制时,采集到最新的信号。把Output和OutDA放到程序的后部,以便逻辑控制结果可以马上在当前这个扫描周期进行输出。这样加大了程序的运行效率。
期刊文章分类查询,尽在期刊图书馆
因此常规PLC(Programmable Logic Controller)可以采用下面的布局:
主程序:
Input (子程序)
InAD (子程序)
。
。
。
Control1 (子程序)
Control2 (子程序)
Control3 (子程序)
。
。
。
Output (子程序)
OutDA (子程序)
因为传统PLC的一个程序周期扫描时间,是从上而下的各程序执行的总时间之和。在输入输出不能避免需要每个周期调用外,针对Control1, Control2,Control3等控制或者逻辑程序,最大程度的通过判断进行调用。这样可以缩短每个程序扫描周期的时间,从而可以让机械设备的执行效率提高,动作反应判断加快,减少运行过程中的误差。
对于分时处理的系统可以可以把
Input (子程序)
InAD (子程序)
检测类的程序放入到1ms或者5ms以内的任务中
Control1 (子程序)
Control2 (子程序)
Control3 (子程序)
控制类的程序放入到5ms或者10ms的任务中
Output (子程序)
OutDA (子程序)
输出类的程序根据需要放入10ms的任务中,如需要高速输出的可放入1ms或者5ms以内的任务中。
因为分时处理的系统在扫描程序时候是有执行时间区间的,因此要注意在高速任务过程中出现大循环执行的程序,否则会造成系统不能正常进行准确分时处理程序任务,从而造成系统控制出现执行效率低,反应到机器运行就很不稳定的状况。
子程序中如存在逻辑是一步一步的执行的情况,可以采用程序步赋值的形式,如:
//判断条件 结果 step = 10;
switch(step)
{
case 0:
//这里赋初值;
break;
case 10:
//后面是执行程序
//判断条件 结果 step = 20;
break;
case 20:
//后面是执行程序
//判断条件 结果 step = 30;
break;
。
。
。
}
这种简单运用对程序的执行效率和CPU的资源消耗会很校
传统的PLC可以通过
//判断条件
结果 MOV 10,step
//判断条件
结果 MOV 20,step
//判断条件
结果 MOV 30,step
。
。
。
//判断条件step = 10 结果 //后面是执行程序
//判断条件step = 20 结果 //后面是执行程序
。
。
。
通过上面的这种方法可以很简单让程序工艺的执行顺序一步一步的进行下去,且便于识别,很方便的实现了程序的维护和执行。
功能块可以在任何子程序中调用,在使用过程中要注意功能块的编写要适合任何任务周期过程,同时不要出现循环执行的语句在其中。避免在子程序调用过程中容易出现执行异常,而很难查找问题。
结束语:
通过以上方式的程序布局和编写要求,可以实现把一个复杂的机器运行程序,变成若干个小的子程序,并且在调试设备时可以针对有问题的部分进行修改,而不是在整个程序中寻找,提高了编写的效率。同时在其他人员维护时也变得容易理解。总之在控制程序达到机器控制需要的情况下,能做到可维护性,可执行性。
参考文献:
[1] 竺志超,陈元斌,韩豫编著.非标自动化设备设计与实践 毕业设计、课程设计训练:国防工业出版社,2015.12
[2] 杨晓辉,刘丽红,许晶主编;孙延娟,唐晖副主编.机电专业英语:北京理工大学出版社,2013.02
[3] 崔金玉,唐红霞,郝利丽著.电路中的理论计算及应用设计:黑龙江大学出版社,2014.06
[4] 陈建明,王亭岭,孙标.电气控制与PLC应用.北京:电子工业出版社,2010:83-84
[5] 潘新民,王燕芳编著.微型计算机控制技术:电子工业出版社,2011.01
论文作者:李小海
论文发表刊物:《中国西部科技》2019年第22期
论文发表时间:2019/11/26
标签:子程序论文; 程序论文; 控制系统论文; 信号论文; 过程中论文; 变量论文; 机器论文; 《中国西部科技》2019年第22期论文;