ik heb nu dit, en werkt vrij aardig:
Code: Selecteer alles
(* moeilijk verhaaltje om een random getal te genereren *)
(* Dit getal word zichtbaar gemaakt op het scherm als het PASSWORD ID *)
(* genereerd een random getal tussen de 0 en 99999999 *)
random (a := 1909, b := 221571, N := 99999999,random := udintTmpRandom);
(* %sw18 is een continue teller in de PLC, deze begint te tellen zodra de PLC aan is *)
(* %sw50 zijn de seconde uit de klok ss00 *)
(* %sw51 uren/minuten uit de klok uumm *)
udintTmpRandom:=(udintTmpRandom * int_to_udint(%sw18)/int_To_Udint(%sw50))*int_to_Udint(%sw51);
dintTmpRandom:=udint_to_dint(udintTmpRandom);
(*getal omzetten naar een string *)
strRandtmp := DINT_TO_STRING (IN := dintTmpRandom);
(* het goede stuk uit de string knippen*)
lengte:=len_int(strRandtmp);
aantalKarakters:=6;
VanafKarakter:=lengte-3;
strActRandom := MID_INT (IN := strRandtmp,N := aantalKarakters,P := (lengte+1)-VanafKarakter);
dintActRandom:=String_To_Dint(strActRandom);
en in die Functie zit:
dus dit is een vrij random getal..... en ook omdat de klok er in zit krijg ik niet steeds als ik de plc opnieuw in run zet de zelfde getallen (dat had ik eerst)
dus ik maak genereer een vrij groot random getal, en dan maak ik er een string van, en dan knip ik 6 karakters uit die string....
maar ik geloof wel dat dit volstaat....
Ik maak nu ook contineu die random 6 karakters lang variabele, en pak hem alleen op een bepaald moment.... dus ja ik geloof niet dat je nu van te voren weet wat het getal word....
ik ga het gebruiken om een soort van ehhh hoe zeg je dat....
Ik schrijf dus PLC software... met vrij veel settings erin... (tijdjes, drukken enz enz) nu hebben we een aantal settings , die zijn alleen voor ons... die zitten wel achter een password...
maar het gebeurt regelmatig , dat we toch willen dat een klant, (in bangladesh of China of of of ) zo'n setting veranderd... en ja om er dan naar toe te gaan, en ja dan geef je dus het password, maar dan weten ze gelijk het password voor altijd.... en dat willen we eigenlijk niet....
Dus ik ben nu een verhaaltje aan het verzinnen.... de PLC genereerd een random getal, dat staat ergens in het HMI scherm, als PassWordIDnumber....
op dit getal laat ik ook weer een rekensommetje los.... in me test had ik * 2019 en dan knip ik er ook weer 6 karakters uit vanaf plek 3 ....
dat rekensommetje weten alleen wij, en de PLC....
dus een klant belt.... we vragen het PassWordIDnumber.... doen het rekensommetje, en weten het password op dat moment.... ze kunnen een setting wijzigen.... na het wijzigen, wordt er gelijk weer een nieuw random getal gekozen..... ik denk dat dit aardig waterdicht is?