ik ben nog steeds bezig met het kast alarm systeem (https://www.circuitsonline.net/forum/view/155568/2), maar loop tegen een probleem aan...
arrays willen bij mij nog niet zo heel erg (heb problemen met het begrip pointers in algemeen, ik weet het LASTIG)
ik heb deze tutorial gebruikt: https://www.xj3.nl/dokuwiki/doku.php?id=indirect_adressing
maar mijn tijd is tekort / verstand te beperkt (invullen naar eigen inzicht), dus inmiddels is mijn trail version expired. (ff op een VM opnieuw installeren)
ik ben ook niet zo handig met AWL, liever Ladder of FB (ST wordt niet ondersteund)
mijn CPU is een S7 314, voor wat er toe doet.
Hetgeen ik probeer te schrijven zit in de bijlage: ik krijg het gewoon niet voor elkaar om de indexen van het array op een normale manier te gebruiken in Step 7 V5.5....
Voor het programma te begrijpen:
ik tel elders hoeveel kasten er open zijn:
Dit is de variabele no of cabinets closed
Verder heb ik een variabele INT_TIME dit is de tijd van de dag in 1 integer in minuten.
ik heb 4 strings met maximaal 32 kasten.
ik houd bij hoeveel kasten er op een tijdstip dicht zijn.
Dit is dus vastgelegd in de variabele INT_CAB_TIME
Dit is een 2D array met in de eerste index het string nummer en in de 2e index zit het kast aantal: Het opgeslagen getal is de tijd dat die kasten dicht waren.
als het systeem unarmed is, zal ik die dingen nog wel moeten leeghalen, maar dat is voor nu even een detail.
Als het systeem armed is, tel ik hoeveel kasten er dicht mogen zijn.
Maximaal dus 32. Ik houd dus niet bij welke kast er dicht is, maar een AANTAL kasten. een kast moet 30 minuten dicht zijn om mede beveiligd te zijn. Dit beschermt tegen stuiterende contacten.
Als een kast 30 minuten dicht is, telt hij dus mee. Anders niet!
Ik begin bij 0 kasten en dat aantal loopt dus op tot ik binnen 30 minuten zit. De tijd loopt door, dus als een er 10 kasten dicht zitten en 5 minuten later gaat de volgende kast dicht, dan gaat telt hij pas 35 minuten later 11 kasten.
Dat aantal sla ik op in: BYTE_OPEN_CABS_ALLOWED
daarna komt de test dat ik ergens ingegeven heb hoeveel kasten er in die string horen te zitten. Dat test ik dus tegen de variabele
BYTE_MAX_CABS_IN_STRING welke dus ook weer een index heeft in de variabele STRING_NO
Als er meer kasten beveiligd zijn dan er in de string zitten, gaan er dingen niet goed en is er dus reden om alarm te slaan (er is met het systeem geklooit of een fout)
Tenslotte de laatste test:
ik test of BYTE_OPEN_CABS_ALLOWED niet kleiner is dan hetgeen ik nu open heb.
Zullen wel wat schoonheidsfoutjes in zitten, maar de structuur zal wel werken.
Vraag is echter: kan iemand een stukje aangeven hoe ik die arrays kan indexeren??
[Bericht gewijzigd door High met Henk op zondag 31 oktober 2021 20:41:38 (55%)