用PLC实现流量累加算法讲解

"\u003Cdiv\u003E\u003Cp class=\"ql-align-justify\"\u003E在使用s7-1200PLC编写程序的时候,如果项目上需要用到流量累积功能,但是本款PLC并没有自带流量累积功能块。这时,就需要我们组态工程师自己编写一个具有流量累积功能程序,或者将该程序封装为FB块或者FC块。本文以封装FB块为例。\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E第一步:在程序块目录下单击添加新块,弹出添加新块对话框,选中FB函数块,在名称栏填上需要命名的名字,如:Totalizer,选择编程需要用的编程语言,本文以SCL语言讲解,FB块的编号可以通过手动或自动生成,然后单击确认,如下图所示\u003C\u002Fp\u003E\u003Cdiv class=\"pgc-img\"\u003E\u003Cimg src=\"http:\u002F\u002Fp9.pstatp.com\u002Flarge\u002Fpgc-image\u002F2aaa10af921f442393f7e2639e49e7ad\" img_width=\"640\" img_height=\"449\" alt=\"用PLC实现流量累加算法讲解\" inline=\"0\"\u003E\u003Cp class=\"pgc-img-caption\"\u003E\u003C\u002Fp\u003E\u003C\u002Fdiv\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E第二步:打开新建功能块,并建立临时变量,如下图所示\u003C\u002Fp\u003E\u003Cdiv class=\"pgc-img\"\u003E\u003Cimg src=\"http:\u002F\u002Fp1.pstatp.com\u002Flarge\u002Fpgc-image\u002F98f1db08da06465ab851e6835334b23e\" img_width=\"640\" img_height=\"228\" alt=\"用PLC实现流量累加算法讲解\" inline=\"0\"\u003E\u003Cp class=\"pgc-img-caption\"\u003E\u003C\u002Fp\u003E\u003C\u002Fdiv\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E第三步:程序编写,如下图所示:\u003C\u002Fp\u003E\u003Cdiv class=\"pgc-img\"\u003E\u003Cimg src=\"http:\u002F\u002Fp1.pstatp.com\u002Flarge\u002Fpgc-image\u002Fd44804752a2a4519ac5bb365b936dd01\" img_width=\"640\" img_height=\"400\" alt=\"用PLC实现流量累加算法讲解\" inline=\"0\"\u003E\u003Cp class=\"pgc-img-caption\"\u003E\u003C\u002Fp\u003E\u003C\u002Fdiv\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E程序编写完成后,进行编译,编译没有错误时,在FC(FC2,FLOWACCUM)中调用该FB块,最后在OB30中断块中调用该FB块。\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E第四步:在FC中调用名字为“Totalizer”的FB块,并对输入输出参数赋值,如下图所示\u003C\u002Fp\u003E\u003Cdiv class=\"pgc-img\"\u003E\u003Cimg src=\"http:\u002F\u002Fp3.pstatp.com\u002Flarge\u002Fpgc-image\u002F095a0258c1514677901c1431ed1c450b\" img_width=\"640\" img_height=\"483\" alt=\"用PLC实现流量累加算法讲解\" inline=\"0\"\u003E\u003Cp class=\"pgc-img-caption\"\u003E\u003C\u002Fp\u003E\u003C\u002Fdiv\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E再在OB30中调用功能块,OB30中断块是循环中断块,循环时间为100ms,如下图所示\u003C\u002Fp\u003E\u003Cdiv class=\"pgc-img\"\u003E\u003Cimg src=\"http:\u002F\u002Fp9.pstatp.com\u002Flarge\u002Fpgc-image\u002Ffe4f038bcea7426d9ca516e4f0ebf51d\" img_width=\"640\" img_height=\"367\" alt=\"用PLC实现流量累加算法讲解\" inline=\"0\"\u003E\u003Cp class=\"pgc-img-caption\"\u003E\u003C\u002Fp\u003E\u003C\u002Fdiv\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E双击循环中断OB30中断块,在中断块中调用FC2(FLOWACCUM)功能块,如下图所示\u003C\u002Fp\u003E\u003Cdiv class=\"pgc-img\"\u003E\u003Cimg src=\"http:\u002F\u002Fp1.pstatp.com\u002Flarge\u002Fpgc-image\u002F9a33f6322d0049b4815035571c469787\" img_width=\"640\" img_height=\"399\" alt=\"用PLC实现流量累加算法讲解\" inline=\"0\"\u003E\u003Cp class=\"pgc-img-caption\"\u003E\u003C\u002Fp\u003E\u003C\u002Fdiv\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cstrong\u003E程序解读:\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cstrong\u003E变量定义:\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E变量名:Reset,数据类型:Bool,作用:累积清零\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E变量名:Accum,数据类型:Real,作用:存储累积值\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E变量名:Total,数据类型:Real,作用:存放累计值\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E变量名:Intervall,数据类型:TIME,作用:流量单位中的时间,如m3\u002Fh,则:变量为1h=3600s,变量单位:秒\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E变量名:Intervall_DInt,数据类型:Dint,作用:存储Intervall转换为Dint数据类型后的值\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E变量名:Intervall_Real,数据类型:Real,作用:存储Intervall_DInt转换为Real数据类型后的值\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E变量名:Cycle,数据类型:TIME,作用:存储程序循环时间,单位:秒\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E变量名:Cycle_DInt,数据类型:Dint,作用:存储Cycle转换为Dint数据类型后的值\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E变量名:Cycle_Real,数据类型:Real,作用:存储Cycle_DInt转换为Real数据类型后的值\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E\u003Cstrong\u003E程序代码:\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003EIF #Reset = true THEN \u002F\u002F条件为真时\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E#Accum := 0.000000e000; \u002F\u002F累积清零\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E#Total := 0.000000e000; \u002F\u002F累积清零\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003EELSE\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E#Intervall_DInt := TIME_TO_DINT(#Intervall);\u002F\u002F将时间型变量Intervall转换为双整型数据,并存在变量中\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E#Intervall_Real := DINT_TO_REAL(#Intervall_DInt);\u002F\u002F将双整型数据转换为实型数据,并存在变量中\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E#Cycle_DInt := TIME_TO_DINT(#Cycle);\u002F\u002F将时间型变量Cycle转换为双整型数据,并存在变量中,本例为0.1s\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E#Cycle_Real := DINT_TO_REAL(#Cycle_DInt);\u002F\u002F将双整型数据转换为实型数据,并存在变量中\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E#Accum := ((#Value * #Cycle_Real) \u002F #Intervall_Real) + #Accum;\u002F\u002F累积计算\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003E#Total := #Accum; \u002F\u002FKopiere Ergebnis nach #Total \u002F Copy result to #Total.\u002F\u002F累计值传递\u003C\u002Fp\u003E\u003Cp class=\"ql-align-justify\"\u003EEND_IF;\u003C\u002Fp\u003E\u003Cp class=\"ql-align-center\"\u003E转发是最大的鼓励!谢谢您的支持!\u003C\u002Fp\u003E\u003C\u002Fdiv\u003E"
发表评论
留言与评论(共有 0 条评论)
   
验证码:

相关文章

推荐文章

'); })();