Sida 1 av 13
Disassemblering av program till PLC
Postat: 21 november 2015, 00:08:19
av säter
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.
NIIGATA.rar
NIGATA.zip
Fråga gärna efter mer information så kompletterar jag detta inlägg.
272.JPG
Re: Disassemblering av program till PLC
Postat: 21 november 2015, 02:15:11
av bearing
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?
Re: Disassemblering av program till PLC
Postat: 21 november 2015, 03:03:30
av säter
Det är en processor.
16 instruktioner.
Re: Disassemblering av program till PLC
Postat: 21 november 2015, 09:19:59
av Jan Almqvist
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.
Re: Disassemblering av program till PLC
Postat: 21 november 2015, 09:42:43
av kodar-holger
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.
Re: Disassemblering av program till PLC
Postat: 21 november 2015, 11:30:35
av H.O
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.
Re: Disassemblering av program till PLC
Postat: 21 november 2015, 16:20:57
av säter
kodar-holger skrev:naturligtvis själva rom-dumparna men dom kanske inte är problemfritt att ladda upp här...
Jag har nu bifogat Hex-filerna i första inlägget.
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.
Något riktigt schema har jag inte gjort. Enbart ledningsdragning.
Där är ungefär 50% av jobbet gjort.
Re: Disassemblering av program till PLC
Postat: 21 november 2015, 17:13:06
av säter
Jan Almqvist skrev:Gissar på 12 bitars address
Adress verkar vara 11 bitar + 1 bit paritet.
Jan Almqvist skrev:4 bitar instruktion och att instruktionen ligger på de låga bitarna i "de låga" prommen.
Jag har fått det till att de 4 instruktionsbitarna ligger på de höga bitarna(5U-8U) i "de höga"(U) Epromen.
Till höger på ritningen har jag gjort en liten tabell.
Data-Lysdiod.PDF
Re: Disassemblering av program till PLC
Postat: 21 november 2015, 17:26:36
av säter
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 jag inte räknat med heller.
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?
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.
Det är inte aktuellt i nuläget att byta PLC.
Jag är mest intresserad om man kan förstå något av programmet.
Re: Disassemblering av program till PLC
Postat: 21 november 2015, 17:34:06
av lillahuset
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
Postat: 21 november 2015, 17:56:02
av bearing
säter skrev:Det är en processor.
16 instruktioner.
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.
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
Postat: 21 november 2015, 22:40:24
av bearing
Kanske går att bygga upp hela systemet i VHDL/Verilog/liknande. Och sedan simulera/emulera.
Re: Disassemblering av program till PLC
Postat: 21 november 2015, 23:01:30
av säter
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.
Re: Disassemblering av program till PLC
Postat: 21 november 2015, 23:13:51
av bearing
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.
Re: Disassemblering av program till PLC
Postat: 21 november 2015, 23:23:48
av säter
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.