Esta semana vamos a comenzar a tratar el tiempo en Step 7. Qué mejor que con el reloj del sistema. Además, vamos a ver un nuevo adelanto de siguientes capítulos viéndolo de forma práctica.
Además, en el foro han pendido ayuda, así que qué mejor que aprender nuevas funcionalidades realizando un ejemplo que tiene alguna aplicación práctica.
¿En qué consiste el ejemplo?
Bueno, la idea es en función de la hora del sistema, calculemos por un lado el día del año en el que estamos y los minutos transcurridos del día actual. Hay que tener en cuenta que el día del año puede variar en función del día del calendario y si es un año bisiesto.¿Cómo vamos a leer el reloj del sistema?
Bueno, lo primero que tienes que saber, si es que no lo sabes ya, es que hay dos SFC, el SFC0 y el SFC1 para leer y escribir la hora en el PLC. El SFC0, que es con el que vamos a trabajar hoy, lee la hora del PLC y nos lo devuelve así:| Byte | Contenido | Ejemplo |
| 0 | Año | B#16#04 |
| 1 | Mes | B#16#08 |
| 2 | Día | B#16#05 |
| 3 | Hora | B#16#08 |
| 4 | Minuto | B#16#05 |
| 5 | Segundo | B#16#05 |
| 6 | Los dos dígitos superiores de los milisegundos | B#16#25 |
| 7 (4 MSB) | Los dos dígitos inferiores de los milisegundos | B#16#0 |
| 7 (4 LSB) | Día de la semana: 1: Domingo, 2: Lunes, 3: Martes, 4: Miércoles, 5: Jueves, 6: Viernes, 7: Sábado | B#16#5 |
¿Cómo calcularemos el día del año?
Aquí vamos a introducir el nuevo concepto: el CASE en Step 7. Puedes leer más información sobre ello en este post anterior. La idea es que en función del mes, hagamos una precarga de días. Es decir, si estamos en febrero, nuestro día será = 31 de enero + los días de febrero.¿Y si estamos en marzo ... o en septiembre?
En principio podría parecer que es igual.. y lo es. Casi. ¿Qué es lo que falta? Pues saber si es bisiesto. Por tanto miraremos si es bisiesto y si el mes es superior a febrero. Si es así, sumaremos un día más del 29 de febrero. Si estamos en febrero, no haría falta ya que si es el día 29 estará en el valor del día, no del mes.¿Cómo calculamos si es un día bisiesto?
Lo primero es saber cuándo es un año bisiesto: tiene que ser divisible entre 4 ¿no? Sí, pero además no debe ser divisible entre 100, salvo que sea además de 100, por 400. La razón de esta norma es que la Tierra tarda 365 días y casi 6 horas. Para eliminar el error cometido, cada 100 años, no se hace bisiesto pero cada 400 sí. Podéis indagar más en la página de la wikipedia. En definitiva, la fórmula que vamos a usar es:Ver código · 5 líneas
If (Año Mod 4 = 0) And ((Año Mod 100 <> 0) Or (Año Mod 400 = 0)) Then'''
Año Bisiesto
else
Año No Bisiesto
end if




