Programmeeritavad kontrollerid
Euroopa struktuurfondide logo
Siemens LOGO! viide Automatiseerimise viide Mehhatroonikaseadmete viide Pneumoautomaatika viide

Näide: ModbusTCP server

Ülesande püstitus

Eesmärk on üles seada S7-1200 kontrolleri baasil ModbusTCP server, mis võimaldaks kõikide sisendite lugemist ja väljundite kirjutamist üle ethernet TCP/IP võrgu kasutades ModbusTCP protokolli. Eesmärk on serverina toimiv kontroller muuta nö kaug-IO mooduliks, millel endal igasugune "mõistus" puudub.

Teostus

Võrguseaded

ModbusTCP kasutab kontrolleri olemasolevat ProfiNet liidest ethernet võrguga suhtlemiseks. See tähendab, et enne võrku ühendamist tuleks kontrollerile anda võrgus unikaalne IP aadress ning määrata subnet mask vastavalt kasutusel olevale võrgule. Võõra võrgu kasutamisel tuleb kindlasti võrguadministraatori käest küsida staatilised IP aadressid, mida võib kasutada, et vältida aadressi konflikte.

Sama aadressi läheb vaja edaspidi kliendi programmis serveri poole pöördumiseks.

Joonis


Andmeplokk: MB_SERVER_DB [DB1]

See andmeplokk luuakse MB_SERVER instruktsiooni sisestamisel instruktsioonidenimekirjast automaatselt ning hoiab endas ModbusTCP serveri toimimiseks vajalikke muutujaid.
See asub jaotuses Projekt > PLC_Nimi > Program blocks > System blocks > Program Resources

Andmeplokk: MODBUS_DATA [DB2]

Nimi Andmetüüp Nihe Kommentaar
 ▼Static
■     40001 Word 0.0
■     40002 Word 2.0
■     40003 Word 4.0
■     40004 Word 6.0
■     40005 Word 8.0
■     40006 Word 10.0
■     40007 Word 12.0
■     40008 Word 14.0

Enne andmeploki muutujate sisestamist avada andmeploki Properties dialoog, sealt valida Attributes jaotus ning eemaldada linnuke Optimized block access eest.

See andmeplokk hoiab registreid, mida saab üle ModbusTCP lugeda ja kirjutada. Registreid võib olla vähem või rohkem ning andmetüübid võivad varieeruda, kuid arvestada tuleb sellega, et andmebavahetusel kantakse üle kogu andmeploki sisu andmesõna kaupa arvestamata siin määratud andmetüüpe. Seega mõistlik oleks enamasti kliendi ja serveri pool kasutada täpselt samasuguse ülesehitusega andmeplokke.


Programm: Main [OB1]

SCL
"MB_SERVER_DB"(CONNECT_ID:=1, IP_PORT:=502, MB_HOLD_REG:="MODBUS_DATA");
FBD
Network 1:
Tabeli joonis
  • MB_SERVER on ModbusTCP serveri funktsiooniplokk, mis andmesidega otseselt tegeleb. Selle saab juhtprogrammi lisada paremal asuvast Instructions menüüst: Instructions > Communication > Others > MODBUS_TCP > MB_SERVER
  • MB_SERVER_DB on Modbus serveri funktsiooniplokiga seotud andmeplokk. See tekitatakse automaatselt MB_SERVER instruktsiooni programmi lisamisel paremal asuvast instruktsiooninimekirjast.
  • CONNECT_ID on identifikaator, mis peab andmevahetuse toimimiseks kliendi ja serveri poolel sama olema.
  • IP_PORT on TCP port, milles server päringuid kuulama hakkab. Samasse porti peavad kliendid päringuid tegema hakkama.
  • MB_HOLD_REG on viide andmeplokile (DB), milles hoitakse Modbus-iga lugemiseks ja kirjutamiseks mõeldud registreid.

Märkus: Selline seadistus võimaldab Siemens S7-1200 ModbusTCP serveri iseärasuse tõttu korraga vaid ühe ühenduse pordi kohta luua. Kui on rohkem ühendusi vaja, siis peab iga ühenduse kohta olema loodud eraldi instants MB_SERVER plokist ning iga instants peab olema seadistatud erineva TCP pordi ja CONNECTION_ID-ga. Järgmise instantsi TCP port võiks olla näiteks 503 ja CONNECTION_ID 2 jne.

CONNECTION_ID ja IP_PORT peavad olema serveri ja kliendi pool ühtemoodi seadistatud.

Creative Commons Licence
"Programmeeritavad kontrollerid" is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License .