C/Visual C - Duda codigo C en Wincc5.1

 
Vista:

Duda codigo C en Wincc5.1

Publicado por guillermo (3 intervenciones) el 20/08/2007 13:57:07
Hola compañeros
Soy un novato en esto de la programacion pero necesito hacer una parte de codigo C.

Lo que necesito es mover un objeto en el Wincc de Siemens que siga el valor de una variable analogica. Mi intencion es simular el funcionamiento de un ascesor, o cinta transportadora y debe cumplir que al principio vaya despacio, la velocidad se vaya incrementando hasta alcanzar un valor estacionarioy para finalizar desacelera hasta pararse.

Yo consigo mover el objeto pero luego vuelve a la posicion inicial yno se por que.
Utilizo if y comparo el valor de la variable que es la que me da la velocidad del motor.

Estoy perdido y al borde de la desesperacion.

un saludo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Duda codigo C en Wincc5.1

Publicado por Nelek (816 intervenciones) el 21/08/2007 07:01:00
Si nos pones lo que has estado intentando hasta el momento, podremos ayudarte mejor.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Duda codigo C en Wincc5.1

Publicado por guillermo (3 intervenciones) el 23/08/2007 10:44:57
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;
}
//---------------------------------------------------------------------------------------
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar