Disassemblering av program till PLC
Disassemblering av program till PLC
Jag har nu fått mina Eprom utlästa till PLC'n på min Niigata fräsmaskin.
Det skulle vara intressant om det gick att tyda detta program, och upprätta någon form flödesschema.
Jag startar denna nya tråd istället för att fortsätta i den befintliga.
Jag hoppas att det blir lite mindre rörigt på så sätt.
Diskussionerna om detta börjar här i den gamla tråden.
http://elektronikforumet.com/forum/view ... 19#p814519
Processorn är en Motorola MC14500B.
Manual finns här:
https://www.brouhaha.com/~eric/retrocom ... 0brev3.pdf
Epromen är 8st Fuitsu MB-8518, dessa är kompatibla med Intel 2708.
8st filer är utlästa i formatet IntelHex.
Här är de utlästa Hex-filerna.
De är namngivna i enlighet med det som står skrivet på Epromen. Fråga gärna efter mer information så kompletterar jag detta inlägg.
Det skulle vara intressant om det gick att tyda detta program, och upprätta någon form flödesschema.
Jag startar denna nya tråd istället för att fortsätta i den befintliga.
Jag hoppas att det blir lite mindre rörigt på så sätt.
Diskussionerna om detta börjar här i den gamla tråden.
http://elektronikforumet.com/forum/view ... 19#p814519
Processorn är en Motorola MC14500B.
Manual finns här:
https://www.brouhaha.com/~eric/retrocom ... 0brev3.pdf
Epromen är 8st Fuitsu MB-8518, dessa är kompatibla med Intel 2708.
8st filer är utlästa i formatet IntelHex.
Här är de utlästa Hex-filerna.
De är namngivna i enlighet med det som står skrivet på Epromen. Fråga gärna efter mer information så kompletterar jag detta inlägg.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Senast redigerad av säter 22 november 2015, 19:52:39, redigerad totalt 2 gånger.
Re: Disassemblering av program till PLC
En 1-bit mikroprocessor?

Känns spontant inte som att det kommer handla om traditionell assembler. Men det här är första gången jag sett detta.
Är det en processor, eller är det en processor per eeprom, som körs synkront, och skapar någon sorts databuss tillsammans?

Känns spontant inte som att det kommer handla om traditionell assembler. Men det här är första gången jag sett detta.
Är det en processor, eller är det en processor per eeprom, som körs synkront, och skapar någon sorts databuss tillsammans?
- Jan Almqvist
- Inlägg: 1651
- Blev medlem: 1 oktober 2013, 20:48:26
- Ort: Orust
Re: Disassemblering av program till PLC
14500 är inte som en "vanlig" mikroprocessor så det är lite mer pyssel än vanligt att disassemblera.
De 4 bitar som går från något eller några av promen till pinne 4,5,6,7 på 14500 är själva instruktionen.
Det bör finnas finns en extern programräknare och lite logik för hopp mm.
Gissar på 12 bitars address + 4 bitar instruktion och att instruktionen ligger på de låga bitarna i "de låga" prommen.
8 bitar i de "höga" prommen + 4 bitar i de "låga" utgör isf. hoppadress.
Edit: Vid logiska operationer används adressen för att läsa och skriva variabler.
De 4 bitar som går från något eller några av promen till pinne 4,5,6,7 på 14500 är själva instruktionen.
Det bör finnas finns en extern programräknare och lite logik för hopp mm.
Gissar på 12 bitars address + 4 bitar instruktion och att instruktionen ligger på de låga bitarna i "de låga" prommen.
8 bitar i de "höga" prommen + 4 bitar i de "låga" utgör isf. hoppadress.
Edit: Vid logiska operationer används adressen för att läsa och skriva variabler.
Senast redigerad av Jan Almqvist 21 november 2015, 11:05:16, redigerad totalt 1 gång.
-
- EF Sponsor
- Inlägg: 963
- Blev medlem: 26 maj 2014, 12:54:35
- Ort: Karlskoga
Re: Disassemblering av program till PLC
Intressant projekt. Bläddrade igenom den andra tråden. Har du eller någon annan ritat ett "riktigt" schema på det du kommit fram till så här långt? Du har ju utrett en hel del om hur adressräknar och paritetsgenerator är kopplade men jag hittade mest ledningsdragning.
En förteckning över vilka externa anslutningar som finns till kortet vore nog bra också. Och naturligtvis själva rom-dumparna men dom kanske inte är problemfritt att ladda upp här...
Med ett någorlunda schema borde man snart kunna komma fram till det som Jan Almqvist skrev, exakt hur varje bit från romarna används. Lite nyckeln för att kunna göra en disassemblering.
En förteckning över vilka externa anslutningar som finns till kortet vore nog bra också. Och naturligtvis själva rom-dumparna men dom kanske inte är problemfritt att ladda upp här...
Med ett någorlunda schema borde man snart kunna komma fram till det som Jan Almqvist skrev, exakt hur varje bit från romarna används. Lite nyckeln för att kunna göra en disassemblering.
Re: Disassemblering av program till PLC
Disassemblera programmet är ju en sak, att sedan få ut nått vettigt ur listningen är ju en annan. Jag har ingen aning om hur komplicerat just det här systemet är det kanske är görbart utan allt för stor tidsåtgång. Men det är knappast så att du laddar EPROM-dumparna i IDA Pro eller MC14500B disassembler och ut kommer ett färdigt ladder-diagram över koden.
Undrar om tiden är bättre spenderad genom att helt enkelt sätta sig in hur hela maskinen fungerar och sedan göra ett nytt program, från scratch, för en modern PLC. Jag är helt på det klara att DET vore lättare om man visste exakt hur det gamla programmet fungerade men ändå....
Sen kan det ju såklart vara en lärorik övning och ett kul(?) tidsfördriv att verkligen gräva ner sig i det gamla.
Undrar om tiden är bättre spenderad genom att helt enkelt sätta sig in hur hela maskinen fungerar och sedan göra ett nytt program, från scratch, för en modern PLC. Jag är helt på det klara att DET vore lättare om man visste exakt hur det gamla programmet fungerade men ändå....
Sen kan det ju såklart vara en lärorik övning och ett kul(?) tidsfördriv att verkligen gräva ner sig i det gamla.
Re: Disassemblering av program till PLC
Jag har nu bifogat Hex-filerna i första inlägget.kodar-holger skrev:naturligtvis själva rom-dumparna men dom kanske inte är problemfritt att ladda upp här...
Något riktigt schema har jag inte gjort. Enbart ledningsdragning.Bläddrade igenom den andra tråden. Har du eller någon annan ritat ett "riktigt" schema på det du kommit fram till så här långt? Du har ju utrett en hel del om hur adressräknar och paritetsgenerator är kopplade men jag hittade mest ledningsdragning.
Där är ungefär 50% av jobbet gjort.
Re: Disassemblering av program till PLC
Adress verkar vara 11 bitar + 1 bit paritet.Jan Almqvist skrev:Gissar på 12 bitars address
Jag har fått det till att de 4 instruktionsbitarna ligger på de höga bitarna(5U-8U) i "de höga"(U) Epromen.Jan Almqvist skrev:4 bitar instruktion och att instruktionen ligger på de låga bitarna i "de låga" prommen.
Till höger på ritningen har jag gjort en liten tabell.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Re: Disassemblering av program till PLC
Det hade jag inte räknat med heller.H.O skrev:Men det är knappast så att du laddar EPROM-dumparna i IDA Pro eller MC14500B disassembler och ut kommer ett färdigt ladder-diagram över koden.
Det hade varit kul om det gick att nysta lite i koden, för att se vad som måste kompletteras på elritningen.
Med lite tur kanske man inte behöver kartlägga all hårdvara?
Det är inte aktuellt i nuläget att byta PLC.H.O skrev:Undrar om tiden är bättre spenderad genom att helt enkelt sätta sig in hur hela maskinen fungerar och sedan göra ett nytt program, från scratch, för en modern PLC.
Jag är mest intresserad om man kan förstå något av programmet.
- lillahuset
- Gått bort
- Inlägg: 13969
- Blev medlem: 3 juli 2008, 08:13:14
- Ort: Norrköping
Re: Disassemblering av program till PLC
Oftast är det ganska enkelt att förstå hårdvaran till skillnad från att förstå mjukvaran. Mjukvaran blir ännu svårare att förstå om man inte vet hur hårdvaran ser ut. Din bild på hårdvaran fick åtminstone mig att känna att den var "trivial".
Re: Disassemblering av program till PLC
Borde inte vara så svårt att avkoda själva instruktionerna i så fall. Skulle nog kunna gå med ett excel-ark till och med, även om ett C-/python-/liknande-program nog är att föredra. Men mycket av programmet ligger väl i vad som är stoppat i resten av minnesbitarna, som inte går via processorn, om jag förstått rätt.säter skrev:Det är en processor.
16 instruktioner.
Skulle behöva skrivas en emulator/simulator för att få bättre möjlighet att förstå hur programmet med minnen fungerar.
Re: Disassemblering av program till PLC
Kanske går att bygga upp hela systemet i VHDL/Verilog/liknande. Och sedan simulera/emulera.
Re: Disassemblering av program till PLC
Instruktionerna borde inte vara något stort problem.
Det borde man kunna bena ut för hand i värsta fall.
Python-program? Det var något liknande som H.O länkade till?
Själv vet jag inte hur Python fungerar.
Borde inte alla minnesbitarna gå genom processorn?
Eller har jag fattat helt fel?
En simulator hade ju varit fint.
Vad VHDL/Verilog är för något, det vet jag inte.
Jag funderar, Epromen är ju kopplade 1+1 så att det uppträder som ett 16 bitars.
Det innebär att man måste även slå ihop filerna 1+1? Eller?
För det finns ju intruktionsbitar endast i de övre Epromen.
Det borde man kunna bena ut för hand i värsta fall.
Python-program? Det var något liknande som H.O länkade till?
Själv vet jag inte hur Python fungerar.
Borde inte alla minnesbitarna gå genom processorn?
Eller har jag fattat helt fel?
En simulator hade ju varit fint.
Vad VHDL/Verilog är för något, det vet jag inte.
Jag funderar, Epromen är ju kopplade 1+1 så att det uppträder som ett 16 bitars.
Det innebär att man måste även slå ihop filerna 1+1? Eller?
För det finns ju intruktionsbitar endast i de övre Epromen.
Re: Disassemblering av program till PLC
Jag hade inte klickat på någon av länkarna i tråden. Ser nu att vid H-O's länkar finns färdig disassembler, och VHDL-kod (eller liknande) (för FPGA) att utgå ifrån.
Så mina idéer kan du glömma=)
Har bara testat Quartus en gång, så vet inte vad som går att göra där. Men det kanske går att ordna så att individuella ROM kan laddas med varsin intel HEX.
Annars ser jag det som ett relativt litet problem att "slå ihop" filer. Kanske t.om. finns färdiga hex-editorer, eller liknande, som klarar sådant.
Så mina idéer kan du glömma=)
Har bara testat Quartus en gång, så vet inte vad som går att göra där. Men det kanske går att ordna så att individuella ROM kan laddas med varsin intel HEX.
Annars ser jag det som ett relativt litet problem att "slå ihop" filer. Kanske t.om. finns färdiga hex-editorer, eller liknande, som klarar sådant.
Re: Disassemblering av program till PLC
Den där disassemblern som H.O länkade, den verkar vilja ha formatet Motorola S Record.
Det borde vill finnas någon konverter mellan Intel Hex och Motorola S Record?
De här hexformaten, är det något som enbart är till för göra det hela mera lättläst?
Det man bränner till Epromen måste ju rimligtvis vara "ren" binärkod?
Utan adresser och liknande.
Det borde vill finnas någon konverter mellan Intel Hex och Motorola S Record?
De här hexformaten, är det något som enbart är till för göra det hela mera lättläst?
Det man bränner till Epromen måste ju rimligtvis vara "ren" binärkod?
Utan adresser och liknande.