PLC signalen lezen met uController

Beste allemaal,

Alweer een hele tijd geleden dat ik hier op dit forum ben geweest.

Momenteel sta ik op mijn werk voor de uitdaging om data te verzamelen van diverse soorten machines van allerlei bouwjaren. Standaard oplossingen zijn als je het mij vraagt erg duur en geven niet de instelvrijheid en mogelijkheden die een zelf ontwikkeld project wel bieden.

Elke machine heeft intern wel digitale signalen die ik kan aftappen om de data te vergaren waar ik iets mee kan, vooralsnog zie ik twee manieren om dit voor elkaar te krijgen:

  1. Een voltage divider met 2 weerstandjes om de 24V signalen terug te brengen naar 3.3V, niet een optimale oplossing.
  2. Een optocoupler gebruiken om de 24V en 3.3V systemen te scheiden van elkaar, dit is volgens mij de beste oplossing.

Ik heb uiteraard de zoekfunctie in google en hier op het forum al gebruikt en toen kwam ik het volgende schema tegen:

Ik wil jullie advies graag over de te kiezen componenten en om te controleren of ik de werking goed begrijp.

R1 kan ik bepalen door de stroom die ik wil hebben lopen door de optocoupler en het ledje (optische controle van signalen), elke led calculator die met serie ledjes kan werken zou uitkomst moeten bieden volgens mij.
R2 is volgens mij bedoelt als pull down resistor en moet storingen voorkomen, correct? Moet ik hier dan een vrij hoge weerstand voor kiezen in de orde van mega ohms?
D1 is bedoelt om verkeerd aansluiten van de 24V niet schadelijk voor de optocoupler te laten zijn?
R3 is neem ik aan een pull down resistor, maar wat C1 voor functie heeft ontgaat mij, zal wel iets te maken hebben met storingen voorkomen?

Mijn vragen zijn in het kort, welke waardes moet ik kiezen voor R2, R3 en C1 en is dit de beste manier om van 24V digitale signalen naar 3.3V digitale signalen te gaan?

JB

Met R1 bepaal je inderdaad de stroom door de led. Welke stroom dat moet zijn haal je uit de de datasheet van de optocoupler.

D1 is een anti omkeer diode. R2 zorgt dat de led niet een klein beetje blijft nagloeien als de 24 volt laag is.

Grote vraag is hoeveel stroom jouw 24 volt af te luisteren draadje kan leveren zonder in te storten. Ik begrijp uit je verhaal dat dat is wat je doen wilt. En het kan niet altijd zomaar.

Lambiek

Special Member

Op 5 juli 2019 15:29:06 schreef sparkie:
[*]Een optocoupler gebruiken om de 24V en 3.3V systemen te scheiden van elkaar, dit is volgens mij de beste oplossing.
[/list]

Dat is de beste oplossing ja, je hebt op deze manier gelijk een galvanische scheiding. Schema is ook van mij uit een ander topic.
Komt hier vandaan.
https://www.circuitsonline.net/forum/view/145662

R1 kan ik bepalen door de stroom die ik wil hebben lopen door de optocoupler en het ledje (optische controle van signalen), elke led calculator die met serie ledjes kan werken zou uitkomst moeten bieden volgens mij.

Ja, daar bepaal je de stroom mee die door je interne led van je optocoupler gaat. De waarde van R1 ligt een beetje aan het type optocoupler en aan de stroom die geleverd gaat worden. Zelf gebruik ik daar de PC817 voor als optocoupler, maar er zijn ook genoeg andere types.

R2 is volgens mij bedoelt als pull down resistor en moet storingen voorkomen, correct?

Ja, samen met de condensator.

Moet ik hier dan een vrij hoge weerstand voor kiezen in de orde van mega ohms?

Kijk hier even voor de waardes.

DIGITALE INGANGEN VOOR PLC'S.pdf

D1 is bedoelt om verkeerd aansluiten van de 24V niet schadelijk voor de optocoupler te laten zijn?

Voor als het signaal een wisselspanning is.

R3 is neem ik aan een pull down resistor, maar wat C1 voor functie heeft ontgaat mij, zal wel iets te maken hebben met storingen voorkomen?

Is een extra filter tegen eventuele storing.

Mijn vragen zijn in het kort, welke waardes moet ik kiezen voor R2,...

Zie bijlage.

R3 en C1 en is dit de beste manier om van 24V digitale signalen naar 3.3V digitale signalen te gaan?

Over R3 en C1 staat alleen maar 3.3 of 5VDC, ligt aan je controller.
R3 kan +/- 10K zijn en C1 100nF.

Als je haar maar goed zit, GROETEN LAMBIEK.

Wat moet je met hobbyspul in de industrie ? Hier hangen al jaren de meest simpele machines soms met een Siemens logo aan het netwerk. OPC server en overal data uittrekken wat je nodig bent.

Wie beheert het als je er niet meer bent ?

High met Henk

Special Member

Elke zichzelf respecterende plc heeft wel een bus verbinding...

Gebruik gewoon een standaard ipv elk signaaltje apart in te lezen.

Meestal werkt modbus rtu of modbus tcp/ip hier bijv perfect voor. Kun je op hw adressen uitlezen, dus zelfde verhaal als je opto's

E = MC^2, dus de magnetische compatibiliteit doet kwadratisch mee???

Op 5 juli 2019 18:27:20 schreef Peter112:
Wat moet je met hobbyspul in de industrie ? Hier hangen al jaren de meest simpele machines soms met een Siemens logo aan het netwerk. OPC server en overal data uittrekken wat je nodig bent.

Wie beheert het als je er niet meer bent ?

Op 5 juli 2019 20:35:52 schreef High met Henk:
Elke zichzelf respecterende plc heeft wel een bus verbinding...

Gebruik gewoon een standaard ipv elk signaaltje apart in te lezen.

Meestal werkt modbus rtu of modbus tcp/ip hier bijv perfect voor. Kun je op hw adressen uitlezen, dus zelfde verhaal als je opto's

Beide berichten kloppen uiteraard helemaal wanneer alle machines hier daadwerkelijk uitgerust zijn met PLC's, wellicht dat mijn titel enigszins verwarrend is geweest. Er staan hier diverse cnc machines waarbij de PC al aan het netwerk hangt, de interne PLC niet en ik heb geen idee hoe gesloten de fabrikant het heeft opgezet, tevens staan hier diverse simpele machines die niet voorzien zijn van PLC's maar wel met 24V stuurspanningen en signalen werken.

Met name de laatste groep machines wil ik beter in kaart brengen. Er zijn ook vele manieren om dit voor elkaar te krijgen. Sommige meer "industrieel" dan andere, sommige makkelijker te beheren of uit te breiden. Dan komt voorlopig het belangrijkste punt nog: initiële kosten en de noodzaak van data in laten zien... Op dit moment werken we nog niet met een ERP, productie data verzamelen gebeurd met pen en papier en de noodzaak van het liefst zoveel mogelijk data verzamelen, zodat je achteraf kan gaan kijken waar je wel en niet iets mee kunt leeft nog niet zo. Door de recente groei van samengestelde producten begint het wel te leven.

Gezien mijn verzameling van elektronica ditjes en datjes ben ik reeds in het bezit van alle benodigde onderdelen (EL817 opto's, diverse arduino wifi boardjes enzv.) en nu dus ook met een concreet doel waarvoor een niet al te ingewikkeld printje ontworpen kan worden. Ik zie het dus deels als een hobby project en deels als een tool om mijn directie te overtuigen wat de meerwaarde voor ons kan zijn als we mee gaan met industrie 4.0.

@Lambiek, als ik naar jou bijlage kijk en dat vergelijk met de gegevens die ik in de datasheet van bijv een EL817 zie staan, dan kom ik helaas nog niet heel veel verder met de waardes voor R1 en R2. Volgens mij heeft het vooral te maken met de grenswaarde waarbij het signaal als HOOG of LAAG gezien dient te worden? Kan ik dan bijvoorbeeld gewoon 12V zelf als grens waarde pakken?

Jb

GJ_

Moderator

Op 8 juli 2019 08:58:37 schreef sparkie: Ik zie het dus deels als een hobby project en deels als een tool om mijn directie te overtuigen wat de meerwaarde voor ons kan zijn als we mee gaan met industrie 4.0

Dit project heeft m.i. alleen zin als leuk hobbyproject. Het heeft echter helemaal 0.0 te maken met industrie 4.0.

Lambiek

Special Member

Op 8 juli 2019 08:58:37 schreef sparkie:
@Lambiek, als ik naar jou bijlage kijk en dat vergelijk met de gegevens die ik in de datasheet van bijv een EL817 zie staan, dan kom ik helaas nog niet heel veel verder met de waardes voor R1 en R2. Volgens mij heeft het vooral te maken met de grenswaarde waarbij het signaal als HOOG of LAAG gezien dient te worden? Kan ik dan bijvoorbeeld gewoon 12V zelf als grens waarde pakken?

Je kunt iedere waarde als grenswaarde pakken, het is maar net wat je wil. Dus niet alleen 12V. Als je echt naar een bepaalde spanning wil kijken, zou je een zener in serie kunnen zetten met R1.

Als je haar maar goed zit, GROETEN LAMBIEK.

Op 8 juli 2019 09:16:40 schreef GJ_:
[...]Dit project heeft m.i. alleen zin als leuk hobbyproject. Het heeft echter helemaal 0.0 te maken met industrie 4.0.

Ik vind het jammer dat u zo reageert om eerlijk te zijn, draagt 0.0 bij aan mijn vraag. Kijkend naar de definitie (voorzover er één complete definitie is) van industrie 4.0,

"Smart Industry of Industry 4.0 maakt wat men noemt een "smart factory". Binnen deze slimme fabrieken, worden machines gekoppeld en uitgelezen, zodat er een goed inzicht kan worden verkregen in wat er werkelijk in de fabriek gebeurt en de processen sneller kunnen worden geoptimaliseerd."

heeft mijn project, al dan niet als hobby, toch echt wel wat met industrie 4.0 te maken...

@Lambiek, ik heb jou bijlage nog even wat beter bekeken en ben tot conclusie gekomen dat R1 en R2 eigenlijk gewoon een voltage divider vormen, als dat klopt dan is het toch een kwestie van de forward voltage (rond de gewenste stroom) van de optocoupler en het indicatie ledje optellen en uitrekenen hoe groot R1 en R2 dan moeten zijn? In de bijlage hebben ze het ledje aan de "Laag spanningszijde", is er nog een reden om dat te doen?

Als ik het ledje verplaats naar de uC kant en een EL817 als opto zou nemen (stroom bij 1.2V is ongeveer 10uA) dan kan ik 75K en 3.9K voor R1 en R2 nemen, D1 heb ik niks aan als er geen wisselspanning op komt, de extra condensator kan volgens de bijlage 2.2nF zijn en is onafhankelijk van R1 en R2.

De reverse voltage is 6V, dus D1 in serie zetten met de opto moet voldoende zijn als ompool beveiliging lijkt mij, moet ik alleen wel rekening houden met de spanningsval (bij 10uA is dat 0.6V voor een 1N4007, dus dan moet ik R2 veranderen naar 6.2K

Jb

GJ_

Moderator

Het uitlezen van enkele I/O punten is absoluut niet wat men met industrie 4.0 bedoeld. Dat het verder niet veel bijdraagt ben ik met je eens, maar als anderen dit topic lezen moeten ze niet meteen een fout idee krijgen van wat industrie 4.0 inhoud.

Op 8 juli 2019 14:44:51 schreef sparkie:
@Lambiek, ik heb jou bijlage nog even wat beter bekeken en ben tot conclusie gekomen dat R1 en R2 eigenlijk gewoon een voltage divider vormen,

Zo kun je het zien, maar het is niet de functie. De LED krijg je ook wel aan het branden zonder R2, dus met alleen een serieweerstand.
Ik denk, maar ik ben geen echte deskundige, dat R2 bedoeld is om het signaal naar 0V te trekken. Zelfde met dat andere RC netwerkje. Ik meen dat die er zitten als ingangsvertraging om te voorkomen dat jou microcontroller iedere keer als iemand het licht aandoet een keer schakelt.

Op 8 juli 2019 14:49:43 schreef GJ_:
Het uitlezen van enkele I/O punten is absoluut niet wat men met industrie 4.0 bedoeld. Dat het verder niet veel bijdraagt ben ik met je eens, maar als anderen dit topic lezen moeten ze niet meteen een fout idee krijgen van wat industrie 4.0 inhoud.

Een structurele vraag was geweest wat ik verder doe nadat ik de enkele IO signaaltjes kan meten, dat is de data via een van de vele aanwezige cloud platformen verzamelen zodat ik onze processen inzichtelijker kan maken en daardoor onze productie beter kan plannen en bottlenecks kan identificeren en op de langere termijn kan ik door het vergaren van data over meerdere runs ook toetsen hoe effectief nieuwe processen zijn. Industrie 4.0 begint bij het centraal verzamelen van data en mijn vraag gaat specifiek over het netjes meten van data (in de vorm van simpele afgetapte 24V signalen) met een uC.

Jb

Lambiek

Special Member

Op 8 juli 2019 14:44:51 schreef sparkie:
@Lambiek, ik heb jou bijlage nog even wat beter bekeken en ben tot conclusie gekomen dat R1 en R2 eigenlijk gewoon een voltage divider vormen,....

Zo doe je dat inderdaad, maar dat is hier niet de bedoeling. R2 is hier gewoon een pull-down weerstand om de interne led niet te laten zweven. De condensator die bij R2 staat is om eventuele pieken te dempen.

In de bijlage hebben ze het ledje aan de "Laag spanningszijde", is er nog een reden om dat te doen?

dat is gedaan om te zien of je signaal hebt op de ingang.

Als ik het ledje verplaats naar de uC kant en een EL817 als opto zou nemen (stroom bij 1.2V is ongeveer 10uA) dan kan ik 75K en 3.9K voor R1 en R2 nemen,....

En hoe wil je je interne led dan aan krijgen? Als je die combinatie gebruikt staat er 24 - 1.2 = 22.8 : 75000 = 0.3mA over je interne led bij 24VDC op de ingang.

De weerstand en condensator aan de controller kant hebben het zelfde doel als aan de 24VDC ingangskant van de optocoupler, ontstoring.

GJ haalde het ook al aan.

Maar ik had een PDF geplaatst met eventuele waardes voor de weerstanden, heb je daar al naar gekeken?

https://www.circuitsonline.net/forum/file/43931

EDIT:
Als je nu een combinatie maakt van bijv. R1 = 2K7 en voor R2 = 5K, dan heb je +/- 8.5mA over de interne led staan en dat in combinatie met bijv. 2.2nF voor de condensator. Wat je dan met die diode doet moet je zelf weten.

De schakeling met de 2.2nF is voor snelle metingen, maar dan heb je ook weer meer kans op storing. Dus als je niet hoeft te tellen zou ik dat niet gebruiken.

Hier heb je nog een voorbeeld met grotere nF waardes. De meting is gedaan op 6VDC in verband met de LA "logic analyzer".

Hier de vertraging met een 5nF condensator, vertraging +/- 10uS.

Hier de vertraging met een 10nF condensator, vertraging +/- 21uS.

Hier de vertraging met een 100nF condensator, vertraging +/- 0.13mS

De waardes van de twee condensatoren zijn hier gelijk, zowel bij de optocoupler als bij de ingang van de controller. De bovenste lijn is de ingang 24VDC en de onderste lijn is de ingang bij de controller. En als je wil dat de ingang bij bijv. 12VDC reageerd, dan zet je een zener van 12V in serie met R1, zoals ik al eerder zei.

Als je haar maar goed zit, GROETEN LAMBIEK.

Momenteel heb ik een test printje draaien in de productie hier.
R1 = 2.2K, R2 = 6.8K en C1 = 100nF, momenteel geen C2 geplaatst en ik gebruik de interne pull-down in de uC. Als ik wat meer tijd heb wil ik nog kijken of ik enige vorm van storing kan meten (goede reden om de oscilloscoop weer eens van zolder te trekken), maar vooralsnog heb ik geen valse hits gehad (machine teller en uC teller lopen gelijk).

Eigenlijk wil ik de 24V lijn van de machine gebruiken voor het voeden van de uC, maar heeft het nog wel echt zin om met opto's te werken als ik dan bijvoorbeeld een tsr1-2433 (heb ik liggen) DC-DC converter pak die niet galvanisch gescheiden is?

Jb

Lambiek

Special Member

Op 16 juli 2019 09:47:26 schreef sparkie:
Eigenlijk wil ik de 24V lijn van de machine gebruiken voor het voeden van de uC, maar heeft het nog wel echt zin om met opto's te werken....

Je bent dan wel je galvanische scheiding kwijt. Maar die optocouplers heb je sowieso nodig, of wil je die 24VDC zo op je controller zetten, gaat dat ding niet leuk vinden.

..als ik dan bijvoorbeeld een tsr1-2433 (heb ik liggen) DC-DC converter pak die niet galvanisch gescheiden is?

Dus waarom zou je dat willen. Lekker apart voeden, heb je ook geen kans op eventuele storing vanuit je machine.

Maar het kan wel, als jij dat wil. Maar niet zonder optocoupler.

Als je haar maar goed zit, GROETEN LAMBIEK.

Op 16 juli 2019 09:58:35 schreef Lambiek:
[...]
Je bent dan wel je galvanische scheiding kwijt. Maar die optocouplers heb je sowieso nodig, of wil je die 24VDC zo op je controller zetten, gaat dat ding niet leuk vinden.

[...]
Dus waarom zou je dat willen. Lekker apart voeden, heb je ook geen kans op eventuele storing vanuit je machine.

Maar het kan wel, als jij dat wil. Maar niet zonder optocoupler.

Ik zou uiteraard geen 24V direct op een uC zetten, maar via een voltage divider dit omlaag brengen naar 3.3V werkt ook, hoe "amateuristisch" dat ook is.

Apart voeden is ook zeker te doen en mooier, maar aangezien ik het test kastje nu aansluit met een standaard m12 4-pins actor/sensor kabel waar al 24V en twee IO kanalen inzitten was het wel een elegante oplossing geweest om daarmee direct de logger te voeden. Nadeel is wel als ik meerdere machines vanuit één logger te gaan volgen en toevallig net degene die voor de voeding zorgt uit staat dan ligt de logger eruit. apart voeden dus maar.

Lambiek

Special Member

Op 16 juli 2019 10:11:14 schreef sparkie:
Ik zou uiteraard geen 24V direct op een uC zetten, maar via een voltage divider dit omlaag brengen naar 3.3V werkt ook, hoe "amateuristisch" dat ook is.

Als je dat gaat doen, trek ik me sowieso terug. :)

Als je haar maar goed zit, GROETEN LAMBIEK.

Ik heb na een paar uur stoeien met eagle een schema opgesteld en een pcbtje ontworpen om 4 signalen te kunnen meten (elk potentieel met zijn eigen massa of via een jumper zijn er twee signaal paren van te maken voor in een standaard actor/sensor kabel).

Nu wel de pull-down weerstand en C2 opgenomen in het schema.

Heeft het nog zin om met ground planes te werken in beide lagen?

bprosman

Golden Member

Zelf ben ik meer een voorstander om ingangen van microcontrollers en microprocessors "Laag te trekken" ipv hoog. Dat is toch een stuk ongevoeliger voor storingen.
Dus pull-up op de ingang, emitter van de opto-coupler aan GND en collector aan de ingang.

De jongere generatie loopt veel te vaak zijn PIC achterna.
Lambiek

Special Member

Op 16 juli 2019 12:04:38 schreef bprosman:
Zelf ben ik meer een voorstander om ingangen van microcontrollers en microprocessors "Laag te trekken" ipv hoog.

Kan, maar hoeft niet perse.

Dat is toch een stuk ongevoeliger voor storingen.

Daar zorgt de schakeling al voor. Een plc ingang werkt het zelfde, die schakelt ook op een positief signaal.

Maar het kan beide. Net wat je wil. :)

Als je haar maar goed zit, GROETEN LAMBIEK.
Sine

Moderator

Waarom van die iele spoortjes?

De spoortjes die langs je antenne lopen kunnen prima onder het bordje door.

Zorg voor een manier van monteren, als je het ding in een DIN-rail doosje schuift prima, zorg anders voor een paar montage gaatjes.

[Bericht gewijzigd door Sine op dinsdag 16 juli 2019 12:18:44 (38%)

Lambiek

Special Member

Hou je sporen die van je optocoupler naar je controller lopen zo kort mogelijk.

En ik weet niet wat voor controller je gebruikt, maar ik zie daar helemaal geen ontkoppeling. Of is het een standaard bordje waar alles al op zit?

Als je haar maar goed zit, GROETEN LAMBIEK.

Op 16 juli 2019 12:04:38 schreef bprosman:
Zelf ben ik meer een voorstander om ingangen van microcontrollers en microprocessors "Laag te trekken" ipv hoog. Dat is toch een stuk ongevoeliger voor storingen.
Dus pull-up op de ingang, emitter van de opto-coupler aan GND en collector aan de ingang.

Ik ook. Omdat microcontrollers vaak een (weak) interne pullup hebben.

Verder dat ledje aan de pin van de microcontroller lijkt me een slecht plan (zoals het nu zit). Waarom zou je zeggen?

Nou: De pin van de microcontroller kan nu gaan zweven op een spanning die ongeveer gelijk is aan de "knik" spanning van de led. In het beste geval van een rode led zal dat ergens net boven de 1V denk ik liggen. Bij groene leds is het nog veel hoger.

Als je microcontroller nu op 3V3 gevoed wordt en een Vil max van bijvoorbeeld 30% x Vcc heeft kom je uit op 0.99V dan zit je met je ingang vreselijk op de rand of er gewoon vlot overheen.

De oplossing is een extra pulldown erbij zetten tussen de uC ingangspin en GND (dus parallel aan het C-tje).

1-st law of Henri: De wet van behoud van ellende. 2-nd law of Henri: Ellende komt nooit alleen.

Weer een hoop input,

Op 16 juli 2019 12:16:59 schreef Sine:
Waarom van die iele spoortjes?

De spoortjes die langs je antenne lopen kunnen prima onder het bordje door.

Zorg voor een manier van monteren, als je het ding in een DIN-rail doosje schuift prima, zorg anders voor een paar montage gaatjes.

Ik heb een eagle tutorial op youtube gevolgd en die had de sporen op 12mil ingesteld, geen idee wat nodig of beter is om eerlijk te zijn, suggestie?
Sporen kunnen inderdaad prima onder antenne door aangezien ik een externe antenne gebruik, auto-router legde ze zo toevallig.
Zal in een klein waterdicht doosje gemonteerd worden, maar bevestigingsgaten zijn inderdaad handig (weet de exacte spacing pas als ik ze binnen heb).

Op 16 juli 2019 12:47:49 schreef Lambiek:
Hou je sporen die van je optocoupler naar je controller lopen zo kort mogelijk.

En ik weet niet wat voor controller je gebruikt, maar ik zie daar helemaal geen ontkoppeling. Of is het een standaard bordje waar alles al op zit?

Ik kan nog andere pinnen kiezen waardoor de sporen veel korter gehouden kunnen worden, nog makkelijker wanneer ik de inputs laag zou trekken.
Het is een standaard boardje, een particle photon, hun web ide en beheer platform werkt zeer prettig (ota en verbinden met wifi werkt allemaal vlekkeloos).

Op 16 juli 2019 22:51:24 schreef henri62:
[...] Ik ook. Omdat microcontrollers vaak een (weak) interne pullup hebben.

Verder dat ledje aan de pin van de microcontroller lijkt me een slecht plan (zoals het nu zit). Waarom zou je zeggen?

Nou: De pin van de microcontroller kan nu gaan zweven op een spanning die ongeveer gelijk is aan de "knik" spanning van de led. In het beste geval van een rode led zal dat ergens net boven de 1V denk ik liggen. Bij groene leds is het nog veel hoger.

Als je microcontroller nu op 3V3 gevoed wordt en een Vil max van bijvoorbeeld 30% x Vcc heeft kom je uit op 0.99V dan zit je met je ingang vreselijk op de rand of er gewoon vlot overheen.

De oplossing is een extra pulldown erbij zetten tussen de uC ingangspin en GND (dus parallel aan het C-tje).

De input laag trekken is uiteraard ook mogelijk, ik weet alleen niet of alles dan gelijk kan blijven? Of moet het "ontstoor" deel dan anders zijn?

De meest rechtse variant gaat helemaal niet werken omdat het spul wat in de emitter tak zit, ook naar de "plus" kant moet verhuizen.

1-st law of Henri: De wet van behoud van ellende. 2-nd law of Henri: Ellende komt nooit alleen.
Shiptronic

Overleden

Sinken naar ground heeft bij de voor keur, poortjes kunnen dan vaak veel meer hebben.

Wie de vraag stelt, zal met het antwoord moeten leren leven.