S7-1500 und Arduino Modbus Verbindung (Arduino Server)
Mit den Mikroprozessorlösungen von Arduino eröffnet sich eine neue Welt für Simatic-Anwendungen. Die Vielseitigkeit von Arduino-Sensoren kann durch ihren äußerst günstigen Preis ergänzt werden. Obwohl sich Simatic mit der IOT2040-Serie auch dieser Welt öffnet, ist es ein Schritt einfacher, Simatic direkt mit Arduino zu verbinden. Hierfür gibt es verschiedene Lösungen. Die Modbus-Verbindung wird in diesem Kapitel vorgestellt. Im folgenden Beispiel speichert Arduino die gesammelten Messdaten als Server. Die Daten werden Simatic als Client abgefragt. Arduino fasst in diesem Fall nur wenige Daten zusammen, der Schwerpunkt liegt auf der Modbus-Verbindung.
With Arduino's microprocessor solutions, a new world opens up for Simatic applications. The versatility of Arduino sensors can be complemented by their extremely affordable price. Although Simatic also opens up to this world with the IOT2040 series, it is a degree easier to connect Simatic directly to Arduino. There are several solutions to this, the Modbus connection is presented in this chapter. In the example below, Arduino stores the collected measurement data as a server. The Simatic is queried data as a client. Arduino summarizes only a few data in this case, the focus is on the Modbus connection.
Az Arduino mikroprocesszoros megoldásaival egy új világ nyílik a Simatic alkalmazásai előtt. Az Arduino szenzorok sokoldalúságát azok rendkívül kedvező árával lehet kiegészíteni. Habár a Simatic is nyit erre a világra az IOT2040-es sorozattal, egy fokkal egyszerűbb közvetlenül összekötni az Arduinoval a Simatic-ot. Erre több megoldás is adódik, ebben a fejezetben a Modbus kapcsolat kerül bemutatásra. A lenti példában az Arduino a begyüjtött mérésadatokat szerverként tárolja. Az adatokat a Simatic kliensként kérdezi le. Az Arduino ezesetben csak néhány adatot összegez, a hangsúly a Modbus kapcsolaton van.
Simatic S7-1500, als Client (master)
Von der S7-Seite aus kann auf die Register des Arduino zugegriffen werden, indem die Standardfunktion „modbusClient” aufgerufen wird. Die erforderlichen Einstellungen finden Sie im mitgelieferten (herunterladbaren) Programm.
From the S7 the registers of the Arduino can be accessed by calling the standard „modbusClient” function. The required settings can be found in the supplied (downloadable) program.
Az S7 oldalról a standard „modbusClient” funkció hívásával lehet az Arduino regisztereit elérni. A mellékelt (letölthető) programban megtalálhatók a szükséges beállítások.
SCL-Programm download : callArduinoModbus.scl
Der Quellcode enthält eine Beschreibung eines scl-Codes (siehe Quellcode unten). Der Code kann im TIA-Portal geöffnet und übersetzt werden.
From file (from 2020.10.30) downloads.
Arduino Mega, als Server (slave)
Für die Modbus Server-Funktion verwendet Arduino die Standard-Modbus-Bibliothek. Die Verwendung der Bibliothek ist speicherintensiv, daher reicht Uno für die Funktion nicht aus. Es muss die Mega-Karte verwendet werden (Ein Vergleich von Uno und Mega finden Sie hier). Die Verbindung funktioniert über Ethernet (Modbus TCP), daher sollten Sie die Ethernet-schild verwenden. Die folgenden Bibliotheken sind für die Modbus-Verbindung erforderlich:
For the Modbus Server function, Arduino uses the standard Modbus library. Using the library is memory intensive, so Uno is not enough for the function, the Mega card must be used (a comparison of Uno and Mega can be found here). The connection works over Ethernet (Modbus TCP), so you should use the Ethernet shield. The following directories are required for the Modbus connection:
A Modbus Server funkcióhoz az Arduino a standard Modbus könyvtárat használja. A könyvtár alkalmazása memóriaigényes, így az Uno nem elégséges a funkcióhoz, a Mega kártyát kell alkalmazni (az Uno és a Mega összehasonlítása itt található). A kapcsolat Etherneten működik (Modbus TCP), ezért az Ethernet shield-et érdemes használni. Az alábbi könyvtárak szükségesek a Modbus kapcsolathoz:
- https://github.com/arduino-libraries/ArduinoModbus
- https://github.com/arduino-libraries/ArduinoRS485
Arduino-Messungen
Arduino stellt Simatic im obigen Beispiel einige Messungen zur Verfügung:
- Temperatur: DHT22-Sensormessung (-40..80 ° C, 0,5% Genauigkeit, teilbar durch 100)
- Luftfeuchtigkeit (0..100%, 2..5% Genauigkeit, teilbar durch 100)
- Wärmeempfindungsindex (abgeleitet von Temperatur und Luftfeuchtigkeit, teilbar durch 100)
- Lichtintensität (0..1024, Fotosensor GL5506)
- Anwesenheitssignal (heart-beat, sein Wert ändert sich alle 2 Sekunden)
Anschlussbelegung der Messungen: DHT22: Pin 9, Photosensor: A5.
Arduino makes some measurements available to Simatic in the example above:
- temperature: DHT22 sensor measurement (-40..80 ° C, 0.5% accuracy, divisible by 100)
- humidity (0..100%, 2..5% accuracy, divisible by 100)
- heat sensation index (derived from temperature and humidity, divided by 100)
- light intensity (0..1024, GL5506 photo sensor)
- presence signal (heart-beat, its value changes every 2 seconds)
Port assignment of measurements: DHT22: pin 9, photosensor: A5.
Az Arduino a fenti példában néhány mérést tesz elérhetővé a Simatic számára:
- hőmérséklet: A DHT22 szenzor mérése ( -40..80 °C, 0,5% pontosság, 100-zal osztandó)
- páratartalom (0..100%, 2..5% pontosság, 100-zal osztandó)
- hőérzet index (a hőmérsékletből és páratartalomból származik, 100-zal osztandó)
- világítás-intenzitás (0..1024, GL5506 fotoszenzor)
- jelenlét-jel (heart-beat, 2 másodpercenként változik az értéke)
Mérések port-kiosztása: DHT22: pin 9, fotoszenzor: A5.
Arduino Software
Libraries:
- https://github.com/arduino-libraries/ArduinoModbus
- https://github.com/arduino-libraries/ArduinoRS485
- https://github.com/adafruit/DHT-sensor-library
- https://github.com/adafruit/Adafruit_Sensor
Arduino-Programm download : modbus_server_mega.ino
Der Quellcode enthält eine Beschreibung eines Arduino-Codefile (siehe Quellcode unten). Der Code kann im Arduino geöffnet und übersetzt werden.
Donate
P.S.
If you have any further questions or have any issues that you can't handle, please contact me! » Impressum
~~socialite~~
Other codes
Themen:
- Simatic S7 SCL reference
- Simatic datatypes
- S7 error- and statuscodes
- TIA Portal know-how
Communication:
- S7-1500 - IntesisBox Modbus
- S7-1500 - Arduino Modbus
Diagnose:
- Scalance Modul diagnose
Partial solutions:
- INIT only one times w. delay
- DT to words and bytes
Conversions:
- Data types
- 16 BOOL → WORD/BYTE
- WORD → 16 BOOL
- BYTE → 8 BOOL
- STRING → DB REGS
- DB REGS → STRING
- REAL → WORD
- WORD → REAL
- DT → WORD/BYTE
- DT → STRING
- STRING → REAL/LINT