Sida 12 av 13

Re: Disassemblering av program till PLC

Postat: 30 november 2015, 14:20:39
av Jan Almqvist
Det är inte ovanligt. Ingångarna är read only, utgångar är write only. Minne är read/write.

Re: Disassemblering av program till PLC

Postat: 30 november 2015, 14:43:15
av exile
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:

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
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.
IO.txt
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.

Re: Disassemblering av program till PLC

Postat: 30 november 2015, 14:52:11
av exile
säter skrev:
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
Är de här adresserna uttryckta i decimalform?
Hur kan in- och utgångar ha samma adresser?
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å)
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?

Re: Disassemblering av program till PLC

Postat: 30 november 2015, 14:53:50
av bearing
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?

Re: Disassemblering av program till PLC

Postat: 30 november 2015, 14:58:15
av säter
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.
Ursäkta, men jag kan ingen digitalteknik, så ni får ha tålamod med lite korkade frågor.

Vad innebär "debounce"?
Eller finns det något Svenskt ord?

Re: Disassemblering av program till PLC

Postat: 30 november 2015, 15:03:48
av säter
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?
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?

Re: Disassemblering av program till PLC

Postat: 30 november 2015, 15:06:50
av bearing
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.

Re: Disassemblering av program till PLC

Postat: 30 november 2015, 15:13:44
av exile
bearing skrev:Blev fel fil bifogad ovan?
Hmm hur menar du? (är tabarna fel? det kan bero på att de är editerad i Programmer's Notepad)
säter skrev:Vad innebär "debounce"?
Det är ett sätt att få bort störningar eller kontaktstuds,
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.
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?
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.
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 :D

Re: Disassemblering av program till PLC

Postat: 30 november 2015, 15:15:00
av Jan Almqvist
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

Postat: 30 november 2015, 15:20:46
av säter
exile skrev:Anledningen till funderar är vad 4020 chipen används till
Skulle dessa kunna agera timer?

Kod: Markera allt

A8  TC4020BP    14-stage Ripple-Carry Binary Counter (sockelmonterad 4020)

Re: Disassemblering av program till PLC

Postat: 30 november 2015, 15:23:24
av bearing
exile skrev:
bearing skrev:Blev fel fil bifogad ovan?
Hmm hur menar du? (är tabarna fel? det kan bero på att de är editerad i Programmer's Notepad)
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.

Men ja, tabbarna blev fel. Vilken tabbstorlek använder du?

Re: Disassemblering av program till PLC

Postat: 30 november 2015, 15:25:38
av exile
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?

Re: Disassemblering av program till PLC

Postat: 30 november 2015, 15:28:57
av säter
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"
De ingångarna är ju oanvända, så det borde väl inte vara så konstigt?

Re: Disassemblering av program till PLC

Postat: 30 november 2015, 15:33:06
av exile
säter skrev:
exile skrev:Anledningen till funderar är vad 4020 chipen används till
Skulle dessa kunna agera timer?

Kod: Markera allt

A8  TC4020BP    14-stage Ripple-Carry Binary Counter (sockelmonterad 4020)
Mycket väl men det är bara spekulation från min sida.
säter skrev:De ingångarna är ju oanvända, så det borde väl inte vara så konstigt?
Fast de används i programmet längre ner, det är de som är märkligt samt att de inte är "debounce".
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

Postat: 30 november 2015, 15:37:06
av bearing
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.