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.
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: | |
- 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.