工艺部要我实现在PLC内执行一个计算公式,并把数值在WINCC画面上显示。
技术要求:
我看了一下直接回复请他们申请外部供应商来做,这个公式用LAD很难实现,要用SCL来编我不会做这么复杂的。
没办法他们只能请外部服务了。
事情过后,我开始用SCL编程来测试,结果完全可以实现的,我只能闷在心里不说,但我要发到贴子上分享。
FUNCTION FC28 : VOID
VAR_TEMP
x2_tan:REAL;
x2_cos:REAL;
y2_tan:REAL;
y2_cos:REAL;
AA:REAL;
BB:REAL;
CC:REAL;
sin_a:REAL;
cos_a:REAL;
a_into:REAL;
kk1:REAL;
kk2:REAL;
kk3:REAL;
mm1:REAL;
mm2:REAL;
mm3:REAL;
END_VAR
// Statement Section
// Block Parameters
VAR_INPUT
Mandrel_R:REAL;
Mandrel_Z0:REAL;
Mandrel_Z1:REAL;
Mandrel_a:REAL;// Input Parameters
END_VAR
VAR_OUTPUT
Mandrel_E:REAL; // Output Parameters
Mandrel_x2:REAL;
Mandrel_y2:REAL;
END_VAR
BEGIN
a_into:=Mandrel_a*3.1415926/180;
sin_a:=SIN(a_into);
cos_a:=COS(a_into);
mm1:=(Mandrel_R+Mandrel_Z1)*cos_a-(Mandrel_R+Mandrel_Z0);
mm2:=(Mandrel_R+Mandrel_Z1)*sin_a;
mm3:=mm1/mm2;
x2_tan:=ATAN(mm3);
kk1:=(Mandrel_R+Mandrel_Z0)*(Mandrel_R+Mandrel_Z0);
kk2:=(Mandrel_R+Mandrel_Z1)*(Mandrel_R+Mandrel_Z1);
kk3:=2*(Mandrel_R+Mandrel_Z0)*(Mandrel_R+Mandrel_Z1)*cos_a;
AA:=kk1+kk2-kk3;
BB:=SQRT(AA);
CC:=BB/(2*Mandrel_R);
x2_cos:=ACOS(CC);
Mandrel_x2:=Mandrel_R*COS(x2_tan-x2_cos);
Mandrel_y2:=Mandrel_R+Mandrel_Z0+Mandrel_R*SIN(x2_tan-x2_cos);
Mandrel_E:=SQRT(Mandrel_x2*Mandrel_x2+Mandrel_y2*Mandrel_y2);
END_FUNCTION