Siemens PLC i .NET?

Tags:    hardware

Jeg ville egentlig ikke spørge her hvis jeg kunne undgå det, men jeg sidder lidt på bar bund.

Jeg er blevet sat til at interface med en Siemens PLC, via et USB PPI kabel, fra .NET af.

Jeg ville bare gerne lige høre om der er nogle herinde, som har erfaring med dette?



Jeg fik også udleveret en demo source men når jeg forsøger at køre programmet giver det mig bare "COM Error". Jeg kører Windows 7 64bit og jeg tror det er den skyldige så jeg vil prøve at rode lidt rundt på en 32bit maskine også. Jeg opretter bare denne her tråd nu for at spørge om der er nogle der ved hvad retning jeg skal i?

Er der nogle ting jeg skal installere fra Siemens eller er der nogle specielle DLL filer som er påkrævet?


Jeg vil bare gerne have hjælp til at få forbindelsen, så snart jeg har den så regner jeg med at kunne tage det derfra.


Det er en Siemens s7-200 by the way ;) - Mange tak :)




8 svar postet i denne tråd vises herunder
4 indlæg har modtaget i alt 12 karma
Sorter efter stemmer Sorter efter dato
Du skal bruge en OPC-server fra Siemens, medmindre du vil at kode en driver selv. Ved dog ikke, om Siemens har udviklet en .NET-driver, så du har native understøttelse.

Uanset hvad, så koster disse penge. Siemens er meget dyrt at have med at gøre. Både med hardware og software. Kort sagt, de vil have penge for alle bytes og chips.

Du kan forsøge at skrive din egen driver, men kender jeg Siemens ret, så skal dette gøres på en speciel måde med låst kode.

Tag evt. et kig på Proficy iFix, som er et stykke SCADA-software med en indbygget OPC-klient, som du så tillige selv skal udvikle eller finde hos en tredjepart, hvis du går OPC+.Net vejen.



"Nøjs hvor jeg dog ville ønske alt bare var serielt eller i det mindste HID"

Ja, for pokker!

Problemet er bare, at moderne PLC'ere typisk er for teknikere/elektrikere, uden baggrund i tekstbaserede programmeringssprog. For 20-30 år siden var STL/AWL de dominerende sprog, men her var det typisk også kun ingeniører eller nørdede elektrikere(jeg er i den kategori), som kunne kode til PLC'ere. I dag skal alt foregå grafisk, og man programmerer typisk en PLC med noget, der minder om et EL-diagram(CFC, FBD og Ladder).

Jeg har dog kodet til Win32 langt før, jeg begyndte at programmere til PLC'ere og bruge SCADA-systemer. Gik også i laaaang tid og tænkte, "hold da kæft, det kunne man hurtigt bikse med noget PC-kode det her!"

Men det er alt i alt lavet så "bøvlet", fordi det er sådan elektrikere, automatikfagteknikere lærer at tænke, og det er lavet for at skulle være så åbent som overhovedet muligt, så andre "nemt" kan komme til, og jeg kan personligt selv i dag se det smarte i det, omvendt går der meget spildtid, fordi meget er "slavearbejde", hvor alt oprettes med venstre hånd, fremfor noget kode der lynhurtigt kan gøre det for en - men igen, det ved man kun, hvis man har prøvet rigtigt at kode.

BTW, så er det normalt, det ikke fungerer med 64-bit, da PLC'ere fungerer så low-level, og først lige er kommet med på 32-bit, at der ikke rigtigt er udviklet drivere til et 64-bit OS, som kan omfortolke. Det kan lade sig gøre med OPC(Da det er industristandarden, og enhver producent med respekt for sig selv har en OPC-server - ellers har KEPWare eller Matrikon), men det er igen et ekstra lag, og giver indirekte, langsommere, adgang.



Indlæg senest redigeret d. 26.07.2011 10:15 af Bruger #2199
For og snakke med OPC-serveren vil jeg mene der er to muligheder.

1. Der findes noget API/DLL til den opc du bruger.
2. Du benytter ODBC.

Den sidste er mest brugte til formålet.



Jeg har desværre ikke noget konkret og dele ud af.
Det er ene og alene udfra de erfaringer jeg har gjort mig. Arbejder med PLC<->HMI i det daglige, hvorfor jeg også har kendskabet til diverse SCADA platforme. (WinCC, InTouch, iFix, FactoryTalk(RSView)) som alle benytter sig af drivere skrevet til forskellige PLC systemer.

Overordnet gør det sig gældende, at har det miljø du arbejder med, ikke drivere til de enkelte PLC-hardware, er OPC<->ODBC vejen og gå.
Jeg er dog lidt i tvivl om fx KepWare har et direkte API til deres OPC...ellers er vejen frem som sagt ODBC




Du skal bruge en OPC-server fra Siemens, medmindre du vil at kode en driver selv. Ved dog ikke, om Siemens har udviklet en .NET-driver, så du har native understøttelse.

Uanset hvad, så koster disse penge. Siemens er meget dyrt at have med at gøre. Både med hardware og software. Kort sagt, de vil have penge for alle bytes og chips.

Du kan forsøge at skrive din egen driver, men kender jeg Siemens ret, så skal dette gøres på en speciel måde med låst kode.

Tag evt. et kig på Proficy iFix, som er et stykke SCADA-software med en indbygget OPC-klient, som du så tillige selv skal udvikle eller finde hos en tredjepart, hvis du går OPC+.Net vejen.


Well jeg udvikler for et større firma, så evt licensomkostninger må jo så og sige være deres afdeling.

Jeg har prøvet med PC-Access trailen i et 32bit VM og det ser ud til at virke. Så vil prøve den vej.



Nøjs hvor jeg dog ville ønske alt bare var serielt eller i det mindste HID :)



Jeg er faktisk nået til det stadie hvor jeg har en OPC server oppe og køre i en 32bit virtual maskine og jeg kan se at jeg har forbindelse.


Nu kommer det næste problem så. Hvordan pokker skal jeg interface den OPC server med .NET? Alt jeg har kunnet finde har været endten

a) Alt for dyre komponenter.
b) Ting der ikke virker.
c) Ting der virker uden at jeg ser ud til at have den adgang som jeg skal bruge.


Skal faktisk kun læse to adresser fra plc'en, og optimalt, skrive til en 3.



For og snakke med OPC-serveren vil jeg mene der er to muligheder.

1. Der findes noget API/DLL til den opc du bruger.
2. Du benytter ODBC.

Den sidste er mest brugte til formålet.


Nogle konkrete eksempler / links til dette?

Ville være meget interesseret.



Hmm... Jeg vil da forsøge mig frem ... ODBC er da en gammel kending hvad angår databaser så det bliver da bedre og bedre.

Jeg sætter virkelig stor pris på dit (og Andreas's) svar!



t