Disassemblering av program till PLC
- Jan Almqvist
- Inlägg: 1651
- Blev medlem: 1 oktober 2013, 20:48:26
- Ort: Orust
Re: Disassemblering av program till PLC
Det är inte ovanligt. Ingångarna är read only, utgångar är write only. Minne är read/write.
Re: Disassemblering av program till PLC
Jag har titta lite mer på koden och det verkar som den gör en "debounce" på alla ingångar oavsett ingången används eller inte.
Samma kod verkar användas 128gånger om med olika adresser:
så de använder istort sätt hela första romet + liten del av det andra romet för "debounce", delvis 1280rader, det åtgår även en hel del ram närmare 256bitar eller ca 1/4del av ramet.
Jag har gjort en "ny" fil där jag tror att I/O är satta, dock finns det några frågetecken. bland annat ingångarna på N4 9-16 verkar läsas in på slutet samt utan att "debounce" plus några andra frågetecken.
Jag tycker adresserna stämmer hyfsat bra om man jämför vilka som används i ramet.
Samma kod verkar användas 128gånger om med olika adresser:
Kod: Markera allt
3 LD 256
4 STO 1 temp = IO_256R
5 XNOR 1152 if temp == R_1152
6 OEN 0
7 LD 1
8 STO 1024 R_1024 = temp
9 XNOR 0 end
10 OEN 0
11 LD 1
12 STO 1152 R_1152 = temp
Jag har gjort en "ny" fil där jag tror att I/O är satta, dock finns det några frågetecken. bland annat ingångarna på N4 9-16 verkar läsas in på slutet samt utan att "debounce" plus några andra frågetecken.
Jag tycker adresserna stämmer hyfsat bra om man jämför vilka som används i ramet.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Re: Disassemblering av program till PLC
Som har sagts ovan så är ingångarna read-only och utgångarna writen-only, vilket gör att man kan ha samma adresser. (och det kan spara logic kretsar oxå)säter skrev:Är de här adresserna uttryckta i decimalform?exile skrev:Om jag antar att jag har gissat rätt I/O så bör det bli följande.
N1 har 256-287
N2 har 288-319
N3 har 320-351
N4 har 352-383
T1 har 256-287
T2 har 288-319
T3 har 320-351
Hur kan in- och utgångar ha samma adresser?
I det hör fallet har jag valt att ange adresserna i dec-form, givet vis kunde jag ha angett dem i hex-form men jag tror inte att get något mer?
Edit:
Ja just det det skulle vara intressant att veta vad adresserna 3-7 är för något? kan det vara kopplade till räknare? fler temp register?
Senast redigerad av exile 30 november 2015, 14:55:56, redigerad totalt 1 gång.
Re: Disassemblering av program till PLC
Hm, ja det verkar ju rimligt faktiskt, att det är debounce. Och att resten av programmet är själva delayen i debounce-rutinen.
Blev fel fil bifogad ovan?
Blev fel fil bifogad ovan?
Re: Disassemblering av program till PLC
Ursäkta, men jag kan ingen digitalteknik, så ni får ha tålamod med lite korkade frågor.exile skrev:Jag har titta lite mer på koden och det verkar som den gör en "debounce" på alla ingångar oavsett ingången används eller inte.
Vad innebär "debounce"?
Eller finns det något Svenskt ord?
Re: Disassemblering av program till PLC
Om du med räknare menar någon form "timer", så borde det väl finnas några sådana?exile skrev:Ja just det det skulle vara intressant att veta vad adresserna 3-7 är för något? kan det vara kopplade till räknare? fler temp register?
Eller tror ni att alla fördröjningar är mjukvarulösningar, programmerade i koden?
Re: Disassemblering av program till PLC
Debounce är avstudsning på svenska.
Enkel avstudsning läser en ingång från t.ex. en mikrobrytare två gånger, med en fördröjning på kanske 20ms. Endast om värdet är samma båda gångerna, anser programmet att brytaren har ändrat läge. Ifall värdena är olika "studsar" brytaren fortfarande.
Enkel avstudsning läser en ingång från t.ex. en mikrobrytare två gånger, med en fördröjning på kanske 20ms. Endast om värdet är samma båda gångerna, anser programmet att brytaren har ändrat läge. Ifall värdena är olika "studsar" brytaren fortfarande.
Re: Disassemblering av program till PLC
Hmm hur menar du? (är tabarna fel? det kan bero på att de är editerad i Programmer's Notepad)bearing skrev:Blev fel fil bifogad ovan?
Det är ett sätt att få bort störningar eller kontaktstuds,säter skrev:Vad innebär "debounce"?
I ditt fall så måste programmet ha snurrat runt minst två gånger och samma värde på ingången innan man spara ändringen av signalen i ramet, på så sätt kan en liten "glitch" undvikas.
Jag skulle tro att det finns en hårdvara räknare men inte säker på det, givet skulle det kunna lösas med mjukvara.säter skrev:Om du med räknare menar någon form "timer", så borde det väl finnas några sådana?
Eller tror ni att alla fördröjningar är mjukvarulösningar, programmerade i koden?
Anledningen till funderar är vad 4020 chipen används till, samt det skulle under lätta veta vad adr 3-7 är när man disassemblerar.
Edit: för långsam igen

- Jan Almqvist
- Inlägg: 1651
- Blev medlem: 1 oktober 2013, 20:48:26
- Ort: Orust
Re: Disassemblering av program till PLC
I en mer traditionell PLC behövs väl normalt inte någon "debounce" på grund av ett RC-filter på själva ingången eller?
Re: Disassemblering av program till PLC
Skulle dessa kunna agera timer?exile skrev:Anledningen till funderar är vad 4020 chipen används till
Kod: Markera allt
A8 TC4020BP 14-stage Ripple-Carry Binary Counter (sockelmonterad 4020)
Re: Disassemblering av program till PLC
Ursäkta, jag såg inte att du lagt in RAM-adresserna för ingångarna i filen, utan trodde att du bara råkat inkludera säters gamla fil. Jag väntade mig först att den bifogade filen skulle vara en disassemblering med kommentarer likt ditt citat.exile skrev:Hmm hur menar du? (är tabarna fel? det kan bero på att de är editerad i Programmer's Notepad)bearing skrev:Blev fel fil bifogad ovan?
Men ja, tabbarna blev fel. Vilken tabbstorlek använder du?
Re: Disassemblering av program till PLC
Det är väl upp till tillverkaren hur denne vill lösa det, Jag kan tänka att det finns enhel del som löser det med mjukvara samt vissa uC har det inbyggt och då är det i princip gratis.
Nu har jag dock dålig kontroll vad för hårdvara olik plc kör med så det är en liten gissning
.
Edit:
Tab storleken 4, vad är standard?
Nu har jag dock dålig kontroll vad för hårdvara olik plc kör med så det är en liten gissning

Edit:
Tab storleken 4, vad är standard?
Re: Disassemblering av program till PLC
De ingångarna är ju oanvända, så det borde väl inte vara så konstigt?exile skrev:dock finns det några frågetecken.
bland annat ingångarna på N4 9-16 verkar läsas in på slutet samt utan att "debounce"
Re: Disassemblering av program till PLC
Mycket väl men det är bara spekulation från min sida.säter skrev:Skulle dessa kunna agera timer?exile skrev:Anledningen till funderar är vad 4020 chipen används till
Kod: Markera allt
A8 TC4020BP 14-stage Ripple-Carry Binary Counter (sockelmonterad 4020)
Fast de används i programmet längre ner, det är de som är märkligt samt att de inte är "debounce".säter skrev:De ingångarna är ju oanvända, så det borde väl inte vara så konstigt?
Nu har jag dock inte analysera programmet så noga utan bara på ytan för att få en "bild" över programet.
Re: Disassemblering av program till PLC
Tabbstorlek 4 är väl ganska vanlig. Dock använder jag själv 2 (i notepad++), och vanliga notepad har 8. Men jag ställde in 4 nu för att kunna läsa filen.
Säter, har du sett att exile lagt några frågetecken kring ingången TL40 (4N, 27) Vad är TL40?
Angående ingångarna 4N 9-16, skulle de kunna vara någon sorts debug-hjälpmedel, eller temporär grej som programmeraren glömt bort att ta bort. Bara en gissning. Håller med om att det ser konstigt ut, eftersom att de ska vara oanslutna.
Säter, har du sett att exile lagt några frågetecken kring ingången TL40 (4N, 27) Vad är TL40?
Angående ingångarna 4N 9-16, skulle de kunna vara någon sorts debug-hjälpmedel, eller temporär grej som programmeraren glömt bort att ta bort. Bara en gissning. Håller med om att det ser konstigt ut, eftersom att de ska vara oanslutna.