RE:Duda codigo C en Wincc5.1
Es cierto, lo siento esto es lo que yo he estado haciendo. Seguramente sea muy rudimentario, y pueda hacerse bastante mas facilmente, mas sencillo y mejor estructurado pero no me da para mas. Yo he intentado hacerlo con do while pero hace cosas raras, cuando hace algo
Haber si me podeis echar una mano.
Un saludo.
#include "apdefap.h"
long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
// WINCC:TAGNAME_SECTION_START
// syntax: #define TagNameInAction "DMTagName"
// next TagID : 1
// WINCC:TAGNAME_SECTION_END
// WINCC:PICNAME_SECTION_START
// syntax: #define PicNameInAction "PictureName"
// next PicID : 1
// WINCC:PICNAME_SECTION_END
int subir;
int bajar;
int frec;
int posy;
//---------------------------------------------------------------------------------------
frec=GetTagWord("EW130"); //Tipo de retorno :WORD
subir=GetTagBit("BIT4"); //Tipo de retorno :BOOL
bajar=GetTagBit("BIT5");
//---------------------------------------------------------------------------------------
posy=GetTagWord("Y_Position");
//posy=593;
//---------------------------------------------------------------------------------------
if (subir==1){
if (frec<0){
posy=593;
return posy;
}
if ((frec>=1) && (frec<=5)){
posy=573;
return posy;
}
if ((frec>5) && (frec<=10)){
posy=563;
return posy;
}
if ((frec>10) && (frec<=15)){
posy=553;
return posy;
}
if ((frec>15) && (frec<=20)){
posy=543;
return posy;
}
if ((frec>20) && (frec<=25)){
posy=533;
return posy;
}
if ((frec>25) && (frec<=30)){
posy=523;
return posy;
}
if ((frec>30) && (frec<=35)){
posy=513;
return posy;
}
if ((frec>35) && (frec<=40)){
posy=503;
return posy;
}
if ((frec>40) && (frec<=45)){
posy=493;
return posy;
}
if ((frec>45) && (frec<=50)){
posy=483;
return posy;
}
if ((frec>50) && (frec<=55)){
posy=473;
return posy;
}
if ((frec>55) && (frec<=60)){
posy=463;
return posy;
}
if ((frec>60) && (frec<=65)){
posy=453;
return posy;
}
if ((frec>65) && (frec<=70)){
posy=443;
return posy;
}
if ((frec>70) && (frec<=75)){
posy=433;
return posy;
}
if ((frec>75) && (frec<=80)){
posy=433;
return posy;
}
}
//---------------------------------------------------------------------------------------
posy=GetTagWord("Y_Position");
//posy=433;
//---------------------------------------------------------------------------------------
if (subir==0){
//---------------------------------------------------------------------------------------
if ((frec<80) && (frec>=75)){
posy=433;
return posy;
}
if ((frec<75) && (frec>=70)){
posy=423;
return posy;
}
if ((frec<70) && (frec>=65)){
posy=413;
return posy;
}
if ((frec<65) && (frec>=60)){
posy=403;
return posy;
}
if ((frec<60) && (frec>=55)){
posy=393;
return posy;
}
if ((frec<55) && (frec>=50)){
posy=383;
return posy;
}
if ((frec<50) && (frec>=45)){
posy=373;
return posy;
}
if ((frec<45) && (frec>=40)){
posy=363;
return posy;
}
if ((frec<40) && (frec>=35)){
posy=353;
return posy;
}
if ((frec<35) && (frec>=30)){
posy=343;
return posy;
}
if ((frec<30) && (frec>=25)){
posy=333;
return posy;
}
if ((frec<25) && (frec>=20)){
posy=323;
return posy;
}
if ((frec<20) && (frec>=15)){
posy=313;
return posy;
}
if ((frec<15) && (frec>=10)){
posy=303;
return posy;
}
if ((frec<10) && (frec>=5)){
posy=293;
return posy;
}
if ((frec<5) && (frec>=1)){
posy=273;
return posy;
}
if (frec<0){
posy=243;
return posy;
}
//---------------------------------------------------------------------------------------
}
//---------------------------------------------------------------------------------------
if (bajar==1){
posy=593;
return posy;
}
//---------------------------------------------------------------------------------------
}