Disassemblering av program till PLC
Re: Disassemblering av program till PLC
Det jag skrev handlar mest om att följa filformatet.
https://www.eetools.com/downloads/about ... x-file.pdf
Varje rad borde börja :20 eftersom att varje rad/"record" numera är 2x16 bytes, d.vs 0x20 bytes.
https://www.eetools.com/downloads/about ... x-file.pdf
Varje rad borde börja :20 eftersom att varje rad/"record" numera är 2x16 bytes, d.vs 0x20 bytes.
Re: Disassemblering av program till PLC
Så borde det väl bli?bearing skrev:Jag tror att adressen ska öka genom hela filen, d.v.s inte börja på noll mellan olika eeprom
Jag har ingen erfarenhet av sådant här, men jag tycker att Holgers "naiva lista" var det mest begripliga.bearing skrev:Sen borde väl varje rad numera ha storleken 20? och adressen öka med 20 för varje rad?
Alltså en rad per adress.
Re: Disassemblering av program till PLC
Man tycker ju att, om Holger skulle ha fel, så borde det av slumpen bli JMP någon gång.sodjan skrev:Kanske... Eller så är kodningen inte som Holger antog.
D.v.s att det är fel 4 bitar som är avkodade som instruktioner.
Det ju är en hel del instruktioner.
Re: Disassemblering av program till PLC
Skriv ner några giltiga kombinationer av adresser, opkod och signaler från lysdioderna och jämför med de disassemblerade värdena? Det finns ingen mer utförlig dokumentation av "PLC-delen" i manualen t.ex. en lista över de olika sekvenserna den kan köra som för IO-kortet?
Re: Disassemblering av program till PLC
Det finns en del.Det finns ingen mer utförlig dokumentation av "PLC-delen" i manualen t.ex. en lista över de olika sekvenserna den kan köra som för IO-kortet?
Vad syftar du på för lista gällande IO-kortet?
Re: Disassemblering av program till PLC
Följande instruktioner saknas i Holgers lista:bearing skrev:Intressant. Då kanske koden inte är så svår att tyda senare. Programmet kanske bara är en lång lista av "if <denna ingång är satt>, then <sätt denna utgång>". Och att programmet sedan börjar om när programräknaren slår runt.säter skrev:Enligt Holgers "naiva lista", så finns det inga JMP med.
Innebär det att man inte använder sig av hopp i koden?
NOPO, STOC, JMP, RTN, samt SKZ.
Finns det någon rimlig förklaring till att man skulle klara sig utan dessa?
- Jan Almqvist
- Inlägg: 1598
- Blev medlem: 1 oktober 2013, 20:48:26
- Ort: Orust
Re: Disassemblering av program till PLC
Absolut. I en del äldre PLC:er, t.ex. Satt Elektronlund (?), fanns det inte några hoppinstruktioner. Alla rader i PLC-programmet fram tills END-instruktionen exekverades.
Re: Disassemblering av program till PLC
Så här?bearing skrev:Jag tror att adressen ska öka genom hela filen, d.v.s inte börja på noll mellan olika eeprom. Sen borde väl varje rad numera ha storleken 20? och adressen öka med 20 för varje rad?
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Re: Disassemblering av program till PLC
Tror att det där är precis vad säter söker. Bra jobbat!
Re: Disassemblering av program till PLC
STOC är store complement, kan jag förstå inte används i varje program.
NOPO kan jag förstå inte används, eftersom NOPF används.
Jag blir förvånad att SKZ saknas, d.v.s skip if RR = 0
Utan JMP,RTN och SKZ, går det inte att ha några "if-satser" / villkor, samt inte några subrutiner, i programmet. Det betyder att processorn/programmet bara skapar en sekvens kommandon till yttre logik. Då måste i så fall all villkorlig logik sitta utanför processorn. Eller så saknas villkor. Själva MC14500 borde vara enkel att ersätta i så fall, vilket betyder att för att förstå kretskortet handlar det enbart om hur resten av hårdvaran ser ut, och vad som ligger i övriga minnesbitar.
Någon typ av villkor tycker i alla fall jag borde finnas, men det är bara en känsla. Kan vara att villkor och programhopp sköts på något annat sätt än via processorn, d.v.s ändrar programräknaren direkt. Då blir det mer komplicerat att följa programflödet.
Någon annan kanske har bättre teorier.
NOPO kan jag förstå inte används, eftersom NOPF används.
Jag blir förvånad att SKZ saknas, d.v.s skip if RR = 0
Utan JMP,RTN och SKZ, går det inte att ha några "if-satser" / villkor, samt inte några subrutiner, i programmet. Det betyder att processorn/programmet bara skapar en sekvens kommandon till yttre logik. Då måste i så fall all villkorlig logik sitta utanför processorn. Eller så saknas villkor. Själva MC14500 borde vara enkel att ersätta i så fall, vilket betyder att för att förstå kretskortet handlar det enbart om hur resten av hårdvaran ser ut, och vad som ligger i övriga minnesbitar.
Någon typ av villkor tycker i alla fall jag borde finnas, men det är bara en känsla. Kan vara att villkor och programhopp sköts på något annat sätt än via processorn, d.v.s ändrar programräknaren direkt. Då blir det mer komplicerat att följa programflödet.
Någon annan kanske har bättre teorier.
Re: Disassemblering av program till PLC
Jag tror inte på någon av dessa gissningar.Det betyder att processorn/programmet bara skapar en sekvens kommandon till yttre logik. Då måste i så fall all villkorlig logik sitta utanför processorn. Eller så saknas villkor.
Skulle all villkorlig logik sitta utanför processorn, då hade man lika gärna kunnat bygga ren grindlogik.
AND, ANDC, OR, ORC, och XNOR, borde man inte kunna skapa villkoren med dessa?
En annan sak jag funderat över är timers.
Kan dessa vara adresserbara hårdvarutimers utanför processorkortet?
- Jan Almqvist
- Inlägg: 1598
- Blev medlem: 1 oktober 2013, 20:48:26
- Ort: Orust
Re: Disassemblering av program till PLC
Man kommer långt med "AND, ANDC, OR, ORC" samt load och store. Äldre PLC:er har få instruktioner. Motsvarighet till "if <condition> then <statement>" saknas ofta.
Re: Disassemblering av program till PLC
> d.v.s ändrar programräknaren direkt.
De externa räknarkretsarna borde ha något kopplat till "set" (eller
vad ingången kan kallas). Alltså kretsarna som driver A0-A9 på
prommarna. D.v.s för att ändra räknaren on-the-fly. Om den
signalen kommer från JMP pinnen på processorn så bör det
vara via JMP instruktioner i koden...
De externa räknarkretsarna borde ha något kopplat till "set" (eller
vad ingången kan kallas). Alltså kretsarna som driver A0-A9 på
prommarna. D.v.s för att ändra räknaren on-the-fly. Om den
signalen kommer från JMP pinnen på processorn så bör det
vara via JMP instruktioner i koden...
Re: Disassemblering av program till PLC
SET, det borde vara den som heter LOAD?sodjan skrev:> LOAD ?
Laddar data på A-D till räknaren (och alltså till Qa - Qd).
Jag ska kolla dessa LOAD-ledningar.
Re: Disassemblering av program till PLC
Är dom programmerade direkt i assembler eller i något högnivåspråk, typ ladder?Jan Almqvist skrev:Man kommer långt med "AND, ANDC, OR, ORC" samt load och store. Äldre PLC:er har få instruktioner. Motsvarighet till "if <condition> then <statement>" saknas ofta.