PDA

Ver la versión completa : Operaciones con valores de temporizadores ?



pedrito
24/07/2010, 09:37
Hola de nuevo.
Me surge esta duda:

Tengo un temporizador en DB1 con un valor S5t#5S

Quisiera poder multiplicarlo/sumarlo etc por un número decimal y cargarlo otra vez en otro temporizador en la DB1 con el formato S5T.

Ejemplo:

Tengo el valor del timer de 5 seg.
Con una Multiplicacion [MUL_I] hacer: 5 seg x 5 = 25 seg
Estos 25 seg pasarlos a otro timer en DB1 pero ya con su formato S5T.

David
25/07/2010, 20:27
Una opción, digo yo, puede ser utilizar una variable integer para hacer las operaciones y por ultimo convertir ese integer en time.

Con siemens no tengo ni idea pero en Codesys es INT_TO_TIME(VarInteger)

SIRC
26/07/2010, 00:50
Con los tipos S5Time no se puede operar directamente hay que convertirlo al formato Time. Yo me crearia una función en SCL por ejemplo esta:

FUNCTION FC1000 : S5TIME
VAR_INPUT
Val_S5T:S5TIME;
Fact_Multi:INT;
END_VAR
VAR_TEMP
V_S5T:S5TIME;
FactX:INT;
Result:S5TIME;
V_Time:TIME;
END_VAR
FactX:= Fact_Multi;
V_S5T:= Val_S5T;
V_Time:= FC33(IN := V_S5T); // S5TI_TIM
V_Time:= V_Time * FactX;
Result:= FC40(IN := V_Time); // TIM_S5TI
FC1000 := Result;
END_FUNCTION

Te adjunto un proyecto de ejemplo, tienes que desarchivarlo desde el administrador Simatic.

Salu2,

pedrito
26/07/2010, 16:30
OK. Entendido. y viendo el ejemplo y con unos cuantos "tortazos" ya está rulando.

Muchas Gracias.

David_cloud
30/07/2010, 17:02
Hola, has consigido multiplicarlo los tiempos ya, si lo consiges porfavor exponlo porque yo me estoi volviendo medio loco, jajaja, hasta ahora e consegido algo pero en awl, hay un manual que dice que se pueden cargar tiempos predefinidos:
l w#16#2005
donde ese 2 es la base de contaje que en este caso seria en segundos y los otros 3 digitos seria el tiempo en segundos, esto funciona, lo unico que pasa que es un dato en hexadecimal por lo cual cuando lo pultiplico por 5 en vez de darme 25 seg me da 19 que es 25 en hexadecimal, total pa volvernos locos.
un saludo

pedrito
01/08/2010, 19:40
Al final descubrí que hay dos FC creadas. La 33 y la 40.
Echad un vistazo y probad con ellas que sirven para convertir de T a S5T y viceversa.
Yo al final lo hice incluso más sencillo.

Coloco los valores directamente en marcas MW. Hago las operaciones con ellas y pongo el resultado en otra MW. Y a esta MW le aplico la FC40 y pongo el resultado en un DB de tipo S5T que luego será el que usa el timer.
Por lo menos a mí me ha funcionado y es bastante sencillo.