Acties:
  • 0 Henk 'm!

Anoniem: 689386

Topicstarter
Beste Leden,

Sinds kort ben ik bezig met het programmeren van een PLC in C# om de gegevens op de vragen uit een:
Deditec Compacte USB-module ( https://www.conrad.nl/nl/...gangen-8-opto-196704.html )

Maar nu loop ik tegen een probleem aan dat het lijkt dat ik niet alles binnen krijg wat op de module staat.
Hieronder zal ik het verder uitleggen in de hoop dat jullie me hiermee verder kunnen helpen..

Situatie:
Op de Deditec Compacte USB-module zitten 6 telramen aangesloten (https://www.sick.com/at/e...g/flg4-20018021/p/p306651) deze geven een signaal door zodra er iets doorheen gaat aan de USB Module
Vervolgens vraag ik met behulp van de mee geleverde driver de data op vanaf de module.

Probleem:
Zodra er wat door de telramen heen valt zien we ook het ledje op de module gaan branden en weer uit gaan.
Dit elke keer zodra er wat doorheen gaat.
Alleen bij het opvragen van de data krijg ik een ander aantal terug dan dat er daadwerkelijk doorheen is gegaan. Het lijkt zich vooral voor te doen bij kleine objecten die erdoor gaan. (maar niet uitsluitend)
Stel: we gooien 10 grote dingen erdoor dan krijg ik er 8 of 9 of 10 binnen, als ik er 10 kleine dingen doorheen dan krijg ik er 4 of 5 binnen.

Geprobeerd:
Heb geprobeerd om elke X milliseconde de status van de betreffende poort uit te lezen. (open/dicht)
Geprobeerd om het aantal van de poort uit te lezen (de hoeveelheid items dat door de poort heen is gegaan tot dat moment) en hem dan direct te legen.
(legen gebeurd in beide gevallen per poort, direct na het uitlezen van de betreffende poort)


In de hoop dat jullie er een mogelijke oplossing voor weten.
Mocht je meer informatie nodig hebben of willen vraag het gerust.

Greets,
Marco.

Acties:
  • 0 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 22-06 11:36
Waar zit je telfunctie? Doet dat de software op basis van pollen van de ingangsstatus van de USB module? In dat geval is de kans erg klein dat je een robuust resultaat gaat krijgen, aangezien het wel of niet vangen van een hoog status van de ingang geheel en al afhankelijk is van de timing aan de USB client kant, die per definitie te slecht is daarvoor.

Als de USB module wel het tellen doet (volgens de docs heeft 'ie een telfunctie) kan het zijn dat de ingangen niet snel genoeg zijn om de puls te vangen : dit kan bijvoorbeeld komen doordat de optocouplers niet snel genoeg zijn.

Ik raad je aan om een functiegenerator op de telingang te zetten en daarmee te testen tot welke pulsbreedte/duty cycle het wel goed werkt.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Acties:
  • 0 Henk 'm!

Anoniem: 689386

Topicstarter
Bedankt voor je reactie.

Maar de telfunctie zit aan beide kanten hij zit inderdaad in de USB module voor het geval we het aantal opvragen van een bepaalde poort dan krijgen we een X aantal terug (die ook niet altijd klopt)

Als ik er bijvoorbeeld 10 items doorheen gooi en vraag daarna van de telfunctie op de USB module het aantal op dan staan er ook tuusen de 5 en 10 getelde items.

Maar in het geval van het opvragen van de status van de poort ( 1/0 ) zit de hoofd teller in de software op de computer die de weg geschreven data vanuit de database zijn optellingen doet.

Na elke opvraag word de status/aantal van de poort geleegd en word de waarde hiervan weg geschreven in een database.

Heb je een specifieke functiegenerator die goed is daarvoor is zijn de meesten hiervoor te gebruiken ?

Acties:
  • 0 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 22-06 11:36
Een basis apparaat is voldoende : het hoeft alleen een blokgolf met instelbare frequentie en duty cycle te kunnen genereren. Je zou ook de fabrikant kunnen vragen wat de minimale pulsbreedte is die de module kan detecteren.

Zelf tellen in de client software op de PC door de pin te pollen is een dead end : dat ga je sowieso nooit goed krijgen.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Acties:
  • 0 Henk 'm!

Anoniem: 689386

Topicstarter
Okay ik ga daar eens naar kijken .

Maar zou je misschien kunnen uitleggen waarom het zo is dat het tellen via software op de computer sowieso een dead end is ?

Acties:
  • 0 Henk 'm!

  • Sircuri
  • Registratie: Oktober 2001
  • Niet online

Sircuri

Volledig Appelig

Omdat je computer software waarschijnlijk nooit dezelfde frequentie bereikt voor het uitlezen van de poorten op de USB module. Het is dan heel goed mogelijk dat je software tussen het lezen door een aantal pulses mist en dus niet kan tellen. De USB module zou dus veel nauwkeuriger moeten werken.

Signature van nature


Acties:
  • 0 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 22-06 11:36
Anoniem: 689386 schreef op maandag 17 augustus 2015 @ 08:54:
Okay ik ga daar eens naar kijken .

Maar zou je misschien kunnen uitleggen waarom het zo is dat het tellen via software op de computer sowieso een dead end is ?
Ga maar na : Stel je object is 0.1 m lang (vrij groot al dus) en valt met een snelheid van 1 m/s door je detectie, je hebt dan dus 10ms de tijd om het een hoge ingang te zien. Is je polltijd langer dan dit, en die kans is vrij groot, dan loop je het risico dat je de ingang niet hoog ziet worden. Met kleinere objecten wordt die kans nog groter.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.

Pagina: 1