PIC baserat I/O-kort med MODBUS.

Berätta om dina pågående projekt.
H.O
Inlägg: 5913
Blev medlem: 19 mars 2007, 10:11:27
Ort: Ronneby

PIC baserat I/O-kort med MODBUS.

Inlägg av H.O »

Jag tänkte att det var dags att presentera den gångna vinterns elektronikprojekt.

Projektet består av två delar:
1) Designa ett "universellt" PIC baserat kort med relativt "ruggade" I/O.
2) Utveckla firmware för kommunikation över MODBUS.

Efter ett antal timmar av design och layout började arbetet ge resultat och i mitten på Februari gick ordern på prototypkort iväg till PCBWing:

Bild
3-D rendering av .brd fil från EAGLE framställd med Eagle3D och POV-Ray.

Efter ungefär 3 veckor anlände korten, 4st för $49 inklusive frakt - inte så tokigt ifall man orkar vänta.

Bild

Några timmars jobb med lödpennan resulterade i en första, och än så länge enda, prototyp:

Bild
  • Hjärtat/hjärnan består av en PIC18F25K22 och kommunikationen körs genom en MAX232 eller en ADM1485 beroende på om man kör RS232 eller RS485.
  • 16 digitala ingångar, i grupper om 4, med lysdiodsindikering. Ingångarna "triggar" på allt från 5V till 24V förutsatt att det som driver dom klarar att ge 2mA eller mer.
  • 16 digitala utgångar med lysdiodindikering. Open drain, max 50V / 150mA med inbyggd skyddsdiod för direkt drivning av t.ex reläer etc.
  • 4 analoga (0-5V) ingångar, 10bitars upplösning.
  • 3 digitala I/O (i princip direkt anslutna till CPU'n) vars funktion ännu inte fastslagits. PWM ut, snabbräknare, kvadratur ingång...(?)
  • Strömförjningen sköts av en MIC4680 switchregulator, inspänningsområdet är 8-28V.
  • Samtliga anslutningar sker genom 3.5mm jackningbara plintar.
Hårdvarumässigt har jag, lite förvånande, inte upptäckt något galet ännu. Jag har iofs RS485 delen kvar att testa så än finns det möjlighet.... En liten silkscreen f-up och det faktum att jag saknade 0805-motstånd i ett par värden är allt:

Bild

Beträffande firmware så har jag kodat en MODBUS RTU stack som för närvarande stödjer de "vanligaste" funktionerna (01,02,03,04,05,06,15,16,17 samt 11st 08-subfunktioner). För testning har jag använt Mach3 samt MODBUS Poll och jag har även testat att ansluta kortet till en Beijer E100 terminal vilket verkar fungera perfekt. Nästa steg blir att testa RS485 point-to-point och sedan sätta ihop en andra prototyp för att säkerställa funktionen med flera slavar i multidrop-konfiguration.

Till sist en bild från en session av firmware-utveckling/avlusning. LOGIC är väl inte den mest avancerade logik-analysatorn men helt underbar, och ovärderlig till den här typen av jobb.
Bild
hogge
Inlägg: 280
Blev medlem: 6 januari 2005, 17:43:03
Ort: Umeå
Kontakt:

Re: PIC baserat I/O-kort med MODBUS.

Inlägg av hogge »

Snyggt kort.

Lycka till !
Användarvisningsbild
FormerMazda
Inlägg: 6442
Blev medlem: 27 februari 2006, 14:59:36
Ort: Asby (Östergötland)

Re: PIC baserat I/O-kort med MODBUS.

Inlägg av FormerMazda »

Intressant projekt!

Som integratör i Citect SCADA så släpper jag några saker jag kom på. Om man nu skulle koppla upp detta till nåt överordnat system då alltså.
*Om kommunikationen ska ske seriellt så välj RS485 främst. Det är enklast att dra kabel för, två trådar räcker ju. Integrera ändmotstånd, gärna med en bygel ifall man inte vill ha det terminerat.
Kolla helst på ethernetinterface, förmodligen rätt mycket jobb, men ibland avgör det valet vid projektering. Man slipper ju en "burk".
*Ha programmerbart nod-id så flera kort kan jobba i en slinga.
*Använd helst bara funktion 00, 01, 03, 04

Men jag tycker fortfarande att det är intressant.
Vill du testa att koppla upp den till Citect så anmäler jag frivillig hjälp! :wink:
Användarvisningsbild
AndersG
EF Sponsor
Inlägg: 9082
Blev medlem: 25 februari 2008, 17:10:58
Ort: Mariehamn
Kontakt:

Re: PIC baserat I/O-kort med MODBUS.

Inlägg av AndersG »

Säljer du av korten?
H.O
Inlägg: 5913
Blev medlem: 19 mars 2007, 10:11:27
Ort: Ronneby

Re: PIC baserat I/O-kort med MODBUS.

Inlägg av H.O »

FormerMazda,
* Kortet fixar både RS232 och RS485, mikro-kontollerns UART är, via byglar, kopplad till MAX232 eller ADM1485 så vilket som (ska) funka. (Har inte testat RS485 ännu)
* Terminering, med bygel, finns redan på kortet.
* Ethernet hade varit underbart men jag har inte tillräcklig kunskap för att implementera det i nuläget.
* Programmerbart nod/slav-ID finns - naturligtvis - tillika valbar baudrate och paritet (dock bara EVEN eller NONE, inte ODD)
* Funktion 0 känner jag inte till över huvud taget (?), 1, 3 och 4 stödjs tillsammans med flera andra. Jag ser ingen nackdel att kortet/stacken stödjer FLER funktioner än ett eventuellt överordnat system till vilket det ansluts gör - tvärt om vore lite sämre.

Åtrkommer eventuellt angående erbjudande om testning när jag kommit lite längre.


Anders,
I nuläget har jag inget att sälja men om allt funkar som det ska så kanske jag beställer ett gäng, är du intresserad av enbart själva kortet eller ett monterar och klart, med eller utan firmware?
Användarvisningsbild
FormerMazda
Inlägg: 6442
Blev medlem: 27 februari 2006, 14:59:36
Ort: Asby (Östergötland)

Re: PIC baserat I/O-kort med MODBUS.

Inlägg av FormerMazda »

Allt låter ju toppen!
Ser att modbus inte har funktion 0, så det är väl en klassiker. Citect hittar på eget.
Detta kan man läsa i driverhjälpen i citect
Data Types
Address Format
CitectSCADA Data Type

DIGITAL



Output Coils
00001 to 09999
DIGITAL (Note: Leading zero is required.)

Input Status
10001 to 19999
DIGITAL (Read Only)

INTEGER



Input Registers
30001 to 39999
INT / LONG / STRING / REAL (Read Only)

Output Registers
40001 to 49999
INT / LONG / STRING / REAL
Så citects funktion 0 och 1 är modbus 01 och 02.
Adresserna i citect byggs med funktion och adress.

Men det rör ju inte dig eller dig ditt kort. Så all is well! :D

Och jag är nog också intresserad av ett köp om du ska sälja nån framigenom. Komplett och färdigt då.
Användarvisningsbild
AndersG
EF Sponsor
Inlägg: 9082
Blev medlem: 25 februari 2008, 17:10:58
Ort: Mariehamn
Kontakt:

Re: PIC baserat I/O-kort med MODBUS.

Inlägg av AndersG »

är du intresserad av enbart själva kortet eller ett monterar och klart, med eller utan firmware?
Antingen eller :) Dvs det beror på priset. Hur är det med mjukvaran? Är den öppen?
H.O
Inlägg: 5913
Blev medlem: 19 mars 2007, 10:11:27
Ort: Ronneby

Re: PIC baserat I/O-kort med MODBUS.

Inlägg av H.O »

Så citects funktion 0 och 1 är modbus 01 och 02.
Njae, det är rätt vanligt att de olika minnesareorna (coils, discrete inputs, inputregisters och holdingregisters) addreseras på det viset och att man genom den "offset" kan avgöra vilken typ av data det är man addresserar. Men eftersom det går att använda flera olika funktioner för att addressera samma data så valet av funktion beror också på VAD som skall göras. Om exempelvis addresering av område 00001-09999 direkt översätts till funktion 01 (read coils) så går det ju inte att sätta några utgångar (funktion 05 & 15).

Så läsning i området 00001-09999 = funktion 01, skrivning i samma område = funktion 05 eller 15
Läsning i området 10001-19999 = funtion 02, skrivning hit är ogiltigt
Läsning i området 30001-39999 = funktion 04, skrivning hit är ogilitigt
Läsning i området 40001-49999 = funktion 03, skrivning i samma område = funktion 06 eller 16 men även 22 och 23 kan användas.

Jag får se hur det utvecklar sig, visst har tanken funnits att producera och sälja färdiga kort men jag vet inte om marknaden finns för att göra det värt besväret... Jag kanske släpper det hela under någon Creative Commons licens eller liknande.
Användarvisningsbild
FormerMazda
Inlägg: 6442
Blev medlem: 27 februari 2006, 14:59:36
Ort: Asby (Östergötland)

Re: PIC baserat I/O-kort med MODBUS.

Inlägg av FormerMazda »

Allt hänger ju på vad du konkurrerar mot. Alltså vad ditt kort kan till vilket pris.
Crevis FnIO pratar modbus över ethernet, och ett komplett system med 4digitala in + 4 (eller var det 2?) ut kostar runt 2500kr + moms hos Beijer.
Analoga vet jag inte, men är dyrare såklart.

Så allt hänger på pris, som vanligt. Åtminstone för en privatperson.
Skriv svar