Eftersom ett Profibus-meddelande bara kan rymma 244 byte data och vår apparat kan generera många gånger fler variabler än som ryms i ett meddelande kommer vi att behöva multiplexa data. Jag har tittat en del i diverse Profibus-dokument men blir inte klok på hur man brukar (skall) göra. Med Modbus är det ju väldigt enkelt, där är det bara fråga/svara till 65536 olika 16 bits register.
Vi har kört "snillen spekulerar" ett tag nu så jag tänkte det är dags att fråga här på forumet. Det märkliga är att inte ens PLC-människorna kan ge ett riktigt svar.
Jag tror tyvärr att 244 bytes är max per nod. När man kör Profibus-DP som en centraliserat IO-system så kommer man normalt aldrig i närheten av den gränsen. I ett projekt jag gjorde för 15+ år sedan hade vi c:a 20 noder med 16+16 IO per nod.
Du kan ju alltid använda några lediga bits eller bytes åt varje håll för att bygga upp en egen muliplexning men det blir inte så snyggt. Inte blir det snabbt heller...
Edit: Stora datamängder via vanliga IO blir ju f.ö. inget kul alls i PLC:n. Där kan man nog snart gå i taket.
Det behöver inte alls gå särskilt snabbt, 10 sekunders cykel på uppdateringarna räcker mer än väl.
Jag har letat på nätet och hittat en del info som tyder på att en Profibus DP slav kan ha flera "slot" men inte sett något om hur man hanterar det i meddelandena. I ProfiDRIVE profilen har jag sett i en manual till en motordrivare att de har något de kallar för PNU (eller PMU) som var någon typ av adress för olika parametrar.
Vi hade helst sett att de inte krävde Profibus DP men det är ju det de kör hela fabriken på. Enligt uppgift.
"Slot" skulle jag säga är kortplats i en nod (rack eller liknande) med IO-moduler. Första platsen är slot 4, andra slot 5 etc. Varje plats upptar ett antal byte in och/eller ut. Du kan (teoretiskt) lägga alla 244 bytes på en "slot" eller sprida ut dem efter behag.
Edit: Det kan tydligen börja på slot 1 också i vissa fall.
Senast redigerad av Jan Almqvist 7 februari 2016, 15:58:17, redigerad totalt 1 gång.
Jag vet inte riktigt vad problemet är, MTU för "normalt" ethernet är 1500 bytes.
Industrial Ethernet 1460 bytes dvs open TCP/IP, modbus TCP/IP etc.
All data kan inte skickas på en gång, visst finns jumbogram med 4GB gräns på IPv6 men det antar jag inte är aktuellt i detta fall.
Det som är intressant är hur mycket data som kan processas med nuvarande hastighet på profibus och PLC cykeltid med 244 bytes åt gången.
Burken du länkade till är för Ethernet/IP, är det kommunikationsprotokoll mätutrustningen använder?
Du ska inte prata med gatewayen, utan med mätutrustningen direkt med TPDU eller motsvarande på 244bytes. Hur kommunikationen fysiskt sker är av underordnad betydelse.
Självklart är det inget problem med ethernetsidan. Problemet är att gatewayen i princip är ett dubbelportat minne som vi skriver till från Ethernet och som Profibus läser från. Max 244 byte åt gången. Och på samma sätt i andra riktningen.
Min slutsats är att vi alltså måste multiplexa våra data. Jag har svårt att tro att vi är först i världen, eller ens i Sverige, med det här problemet. Då inställer sig med automatik frågan: Hur brukar man göra i PLC/Profibus-världen? Vi kan naturligtvis skapa ett helt eget "hittepå" men då är risken stor att vi antingen blir betraktade som idioter eller att resultatet blir dåligt. Eller både och.
Min uppfattning är det brukar vara svårt att övertyga övriga inblandade om nödvändigheten av handskakning mellan olika system. Eller att t.ex. 2^5 inte är 25....
Hur mycket data rör det sig om?
Antingen får du skapa fler noder eller multiplexa. Om du gör en snurra i PLCn som frågar din nod om register1, när datan är inläst till ett datablock så skickar PLCn fråga på register 2, flyttar det till datablock osv. Finns standard funktioner i S7 för detta.
Potentiellt kan det handla om mer än 1Mbyte/s men det vill vi naturligtvis inte skicka. Gissningsvis handlar det om 400 mätvärden (400*16) var tionde sekund.
Som jag har fattat det så kan min gateway bara uppträda som en adress (eller nod?).
Så i princip stödjer S7 inläsning av ett antal register med uppräkning av "index" vid varje läsning? Kan S7 "sortera bort" duplicerade data baserat på en variabel som indikerar vilken "sida" meddelandet innehåller?
Du behöver använda fler gateways för att få
fler noder.
Ja du kan indexera inläsningen. Jag är inte riktigt med på vad du menar i andra frågan men S7 är ganska fritt programmerbart så det är mer upp till den som gör programmet.
Jag antar att eran kund har koll på tillgänglig kapcitet i PLCerna, men eftersom dom har krav på profibus för detta så blir jag fundersam. Men jag har ingen aning om applikationen så vi får anta att det är befogat.
Helst vill vi bara ha en gateway men om det blir för otympligt får det bli flera.
Fråga två handlar som jag tänker om det hela (korkat eller inte) att PLCn kan läsa ett "ord" (index) och utifrån det avgöra var den ska placera indata i "processbilden" eller vad man nu kallar det i PLC-världen.
Att överföra mer information mellan olika system än man har bitar är ganska vanligt i PLC-världen. Ponera att du har 16 databitar tillgängligt. Då kan man t.ex. använda 8 bitar för data, 7 bitar för adress och 1 bit för klocka och överföra 128 byte istället för 16.