Kan man tidsmäta i PLC kod?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Kan man tidsmäta i PLC kod?

Inlägg av Al_Bundy »

Hej.

Jag har en sr04 distansmätare som är digital. Det första man gör är att ge den spänning och ström. Sedan finns det två pinnar.

In: Trig - den ska få en hög kort puls.
Ut: Echo - den ger en lång puls och längden puls ska föreställa avståndet mellan sensorn och objektet. Kort avstånd = kort puls. Långt avstånd = lång puls.

Då måste man mäta i koden när Echo blir hög tills den blir låg. Och här är snack om mikrosekunder och inte millisekunder. Kanske nanosekund förekommer också?

Då undrar jag hur man skulle göra det i PLC? Finns det tic och toc kommandon som räknar processorns tid?

Det kanske inte går i PLC?

Om ni undrar vad jag håller på med så är det learning by doing. Jag har igår byggt egen SPI algoritm som fungerar och nu tänker jag ge mig på något annat.
Användarvisningsbild
Klas-Kenny
Inlägg: 11840
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

Re: Kan man tidsmäta i PLC kod?

Inlägg av Klas-Kenny »

Det beror väl helt på PLC'n.
Jag vet i alla fall att de Siemens S7 jag använt har hårdvarutimrar som fungerar fint. Osäker på upplösningen där dock, kolla dokumentationen i ditt fall..
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Kan man tidsmäta i PLC kod?

Inlägg av sodjan »

Du kan använda timers för generella fall. Det finns modeller med
"external gate" som kan räkna snabbare än processorn själv.

Man kan använda programvara för att räkna.

Man kan använd externa räknare som man sedan läser av från processorn.

> Kanske nanosekund förekommer också?

Varför fråga? Databladet är ju kanske inte väldigt tydligt (dåligt översatt),
men uppgifterna finns ju där i alla fall.

Om jag ser och räknar rätt så har du 34 cm per 1 ms pulsbredd. Så du har
relativt gott om tid att räkna ut pulsbredden, om du inte har väldigt korta avstånd.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Kan man tidsmäta i PLC kod?

Inlägg av Al_Bundy »

sodjan skrev:Du kan använda timers för generella fall. Det finns modeller med
"external gate" som kan räkna snabbare än processorn själv.

Man kan använda programvara för att räkna.

Man kan använd externa räknare som man sedan läser av från processorn.

> Kanske nanosekund förekommer också?

Varför fråga? Databladet är ju kanske inte väldigt tydligt (dåligt översatt),
men uppgifterna finns ju där i alla fall.

Om jag ser och räknar rätt så har du 34 cm per 1 ms pulsbredd. Så du har
relativt gott om tid att räkna ut pulsbredden, om du inte har väldigt korta avstånd.
Vilka timers menar du då? Som jag vet så har bara structure text TON, TOM och TP.

Externa räknare som vadå? DS1307? Fast det är en RTC.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Kan man tidsmäta i PLC kod?

Inlägg av sodjan »

Sorry, jag läste "PIC", inte "PLC"... :-)
Och jo, jag såg Klas-Kenny's inlägg och undrade lite vad han yrande om... :D
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Kan man tidsmäta i PLC kod?

Inlägg av Al_Bundy »

Klas-Kenny skrev:Det beror väl helt på PLC'n.
Jag vet i alla fall att de Siemens S7 jag använt har hårdvarutimrar som fungerar fint. Osäker på upplösningen där dock, kolla dokumentationen i ditt fall..
Okej. Om det beror på PLCn så kanske man ska ha en extern räknare ?

Jag kör Codesys.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46963
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Kan man tidsmäta i PLC kod?

Inlägg av TomasL »

Codesys är ju ingen PLC utan programvara, en PLC är kombinationen av hårdvara och mjukvara.
Huruvida olika funktioner stöds beror på både hårdvaran och mjukvaran, så du får studera hur olika saker är implementerade in hårdvaru/mjukvaru kombination.
milsson
Inlägg: 138
Blev medlem: 15 juli 2013, 13:09:03
Ort: Umeå

Re: Kan man tidsmäta i PLC kod?

Inlägg av milsson »

Du borde säga att du kör codesys runtime för raspberry pi. Tänk på att det är en runtime som körs ovanpå linux och INTE är något RT-system.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Kan man tidsmäta i PLC kod?

Inlägg av sodjan »

Just det ja, då är det ju ingen PLC (så som de flesta känner till det) alls...
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Kan man tidsmäta i PLC kod?

Inlägg av Al_Bundy »

Så hur fungerar Codesys Runtime?
Användarvisningsbild
lillahuset
Gått bort
Inlägg: 13969
Blev medlem: 3 juli 2008, 08:13:14
Ort: Norrköping

Re: Kan man tidsmäta i PLC kod?

Inlägg av lillahuset »

Det borde väl du veta som kör Codesys.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46963
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Kan man tidsmäta i PLC kod?

Inlägg av TomasL »

Du skriver ditt program i codesys språk, det kompileras till byte-kod.
I din Raspi har du någon linuxversion installerad, Codesys runtime körs i dit Linux-system som vilket annat program som helst.
Dvs anropar Linux-kärnan för att till exempel komma åt hårdvara osv.

När du laddar in din Capplikation så läser codesys-runtime filen och tolkar bytekoden och kör din applikation, som om det vore ett helt normalt program.
Dock eftersom du kör i ett Linux-system så kan du inte få RT-egenskaper, då linuxkärnan inte är konstruerad för detta.
Linuxkärnan kör flera processer samtidigt, vilket inte är möjligt i ett RT system (i princip), eftersom RT per definition kräver hårdvaru åtkomst utan fördröjning.

Nu vet jag inte hur ofta linuxkärnan växlar men det är så pass långsamt så du kan förvänta dig en hel del fördröjningar.
H.O
Inlägg: 5917
Blev medlem: 19 mars 2007, 10:11:27
Ort: Ronneby

Re: Kan man tidsmäta i PLC kod?

Inlägg av H.O »

Jag har inte labbat med Raspberry över huvud taget men jag har sneglat på den ihop med Codesys. De anger 50-400us jitter men jag har inte hittat något om upplösning på timers eller vad cykeltiden är (om den är statisk) etc. Men jag har inte letat mer än ett par minuter just nu. 400us jitter på en 1ms mjukvarutimer känns ju inte så himla kul - och mindre än 1ms undrar jag om det finns utan specifikt hårdvarustöd (och det kansks finns i hallonpajjen, jag vet inte).

Det verkar finnas en del RT-kärnor till Raspberry, det kanske kan vara värt att kolla upp.
Användarvisningsbild
lillahuset
Gått bort
Inlägg: 13969
Blev medlem: 3 juli 2008, 08:13:14
Ort: Norrköping

Re: Kan man tidsmäta i PLC kod?

Inlägg av lillahuset »

För många år sedan gjorde jag något liknande som jag kopplade till en printerport på en PC. Ett par räknare och lite strölogik var allt som behövdes.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Kan man tidsmäta i PLC kod?

Inlägg av Al_Bundy »

TomasL skrev:Du skriver ditt program i codesys språk, det kompileras till byte-kod.
I din Raspi har du någon linuxversion installerad, Codesys runtime körs i dit Linux-system som vilket annat program som helst.
Dvs anropar Linux-kärnan för att till exempel komma åt hårdvara osv.

När du laddar in din Capplikation så läser codesys-runtime filen och tolkar bytekoden och kör din applikation, som om det vore ett helt normalt program.
Dock eftersom du kör i ett Linux-system så kan du inte få RT-egenskaper, då linuxkärnan inte är konstruerad för detta.
Linuxkärnan kör flera processer samtidigt, vilket inte är möjligt i ett RT system (i princip), eftersom RT per definition kräver hårdvaru åtkomst utan fördröjning.

Nu vet jag inte hur ofta linuxkärnan växlar men det är så pass långsamt så du kan förvänta dig en hel del fördröjningar.
Okej. Tackar. Då har jag verkligen fått en djup förklaring varför jag inte kan mäta tid i koden :)
Skriv svar