Мазмұны:
- 1 -қадам: Modbus TCP Slave Simulator бағдарламасын жүктеңіз және іске қосыңыз
- 2 -қадам: компьютерді құрылғыға қосылуға дайындаңыз
- 3 -қадам: құрылғыны дайындаңыз және оған қосылыңыз
- 4 -қадам: Modbus Master кітапханасын жүктеңіз
- 5 -қадам: желіге қосылыңыз
- 6 -қадам: Modbus Slave көмегімен байланыс орнатыңыз
- 7 -қадам: Регистрлерді оқу және жазу
Бейне: ESP32 Modbus Master TCP: 7 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:25
Бұл сыныпта сіз ESP32 процессорын Modbus TCP Master бағдарламасына енгізесіз.
Біз осы процессорды қамтитын екі құрылғыны қолданамыз: Moduino ESP32 және Pycom. Екі құрылғы да MicroPytthon ортасында жұмыс істейді. Біздің Modbus Slave - бұл компьютерде Modbus симуляторы бар бағдарламалық жасақтамасы бар компьютер.
Саған қажет болады:
- Moduino ESP32 немесе Moduino Pycom құрылғысы (Moduino ESP32 құрылғысы туралы көбірек білу үшін осы веб -сайтты, ал Pycom құрылғысын тексеру үшін)
- Linux операциялық жүйесі бар компьютер
- Компьютердегі RS-232/RS-485 порты немесе USB-RS-232/RS-485 түрлендіргіші
1 -қадам: Modbus TCP Slave Simulator бағдарламасын жүктеңіз және іске қосыңыз
Modbus Slave тренажерін https://www.modbusdriver.com/diagslave.html сайтынан жүктеп алыңыз. Содан кейін Linux операциялық жүйесінің жүктелген мұрағатын ашып, шығарыңыз.
Бағдарламаны -p аргументі бар консольден іске қосыңыз:
./diagslave -p
бұл Modbus Slave сервері жұмыс істейтін порт. Modbus протоколы үшін бұл әдепкі бойынша 502, бірақ сіз басқасын қолдана аласыз.
Linux порттарында 1024 -тен төмен порттарды қарапайым пайдаланушылардан жұмыс істейтін бағдарламалар пайдалана алмайды (түбірлік артықшылықтар емес).
Қандай портты қолданғаныңызды есте сақтаңыз. Бұл мән кейінірек қажет болады.
2 -қадам: компьютерді құрылғыға қосылуға дайындаңыз
Құрылғыға қосылу және оған файлдарды жіберу үшін сізге кейбір бағдарламалар қажет болады.
Python ортасы мен пипті орнатыңыз (егер ол жоқ болса):
apt-get install python3
apt-get install python3-dev curl «https://bootstrap.pypa.io/get-pip.py» -o «get-pip.py» python3 get-pip.py
Пикокомды орнату:
apt-get picocom орнатыңыз
Бұл бағдарлама құрылғыға қосылу және ондағы командаларды орындау үшін қажет. Mpfshell орнатыңыз:
pip mpfshell орнатыңыз
Бұл бағдарлама құрылғыға файлдарды жіберуге мүмкіндік береді.
Сіз оны дереккөздерден де орната аласыз. Бұл бетті қараңыз:
3 -қадам: құрылғыны дайындаңыз және оған қосылыңыз
Moduino немесе Pycom құрылғысын компьютерге қосу үшін сізге RS-232/RS-485 порты немесе түрлендіргіш қажет. Құрылғының нұсқасын тексеріңіз (ол қандай порт түрін қолданады) және сәйкес портты немесе түрлендіргішті табыңыз.
- Құрылғыны компьютерге қосыңыз
- Содан кейін оған қуат көзін қосыңыз
Құрылғыны компьютерге қосыңыз, содан кейін оған қуат көзін қосыңыз. Ethernet кабелін Moduino ESP32 -ге де қосуға болады (егер оның порты болса).
Қосылу жоғарыдағы суреттердегідей болуы керек
Құрылғыға қосылу үшін пайдаланылатын порттың жолын табыңыз, мысалы: /dev /ttyS1, /dev /ttyUSB0.
USB түрлендіргіштері үшін жолда USB сөзі болады.
Пикоком бағдарламасы бар құрылғыға қосыла аласыз:
picocom /dev /ttyUSB0 -b 115200
Құрылғының пәрмен жолы төмендегі суреттердің біріне ұқсайды.
Moduino ESP32: мына жерден қараңыз
Moduino Pycom: Мұнда қараңыз
4 -қадам: Modbus Master кітапханасын жүктеңіз
github.com/pycom/pycom-modbus/ Modbus Slave-мен байланысу үшін сізге сәйкес кітапхана қажет. Pycom кітапханалары Moduino -мен үйлесімді емес. Құрылғыңызға сәйкес келетін нұсқауларды тексеріңіз.
Файлдарды жібермес бұрын пикокомды жабыңыз: Ctrl+A, содан кейін Ctrl+X пернелерін басыңыз.
Moduino ESP32 үшін uModBus кітапханасы Moduino Pycom үшін pycom-modbus кітапханасына негізделген. Ол қарапайым ESP32 құрылғысында жұмыс істеу үшін өзгертілген. Сонымен қатар, қосқыш сыныптары үшін қосымша close () әдістері бар.
1) Moduino ESP32
Кітапхананы https://github.com/techbase123/micropython-modbus сайтынан жүктеп алыңыз. Мұрағатты ашыңыз және барлық 4 файлды Moduino құрылғысына жіберіңіз.
Оларды жүктеу үшін mpfshell пайдаланыңыз. Бұл бағдарламаны сол файлдар каталогында іске қосыңыз.
Келесі әрекеттерді орындау арқылы құрылғыға қосылыңыз: БҰЛ
ttyUSB0 - құрылғы қосылған сериялық порттың атауы.
Каталогты /flash /lib пәрменімен өзгертіңіз:
cd /flash /lib
Барлық файлдарды пәрмендермен орналастырыңыз:
uModBusConst.py қойыңыз
uModBusFunctions.py қойыңыз uModBusTCP.py қойыңыз uModBusSerial.py қойыңыз
МЫСАЛ
Содан кейін шығу командасымен консольден шығыңыз және Reset батырмасымен құрылғыны қайта іске қосыңыз.
2) Moduino Pycom
Кітапхананы https://github.com/pycom/pycom-modbus/ сайтынан жүктеп алыңыз. UModbus каталогының мазмұнын мұрағаттан шығарып, құрылғыға жіберіңіз. Жүктеу үшін mpfshell пайдаланыңыз. Бұл бағдарламаны сол файлдар каталогында іске қосыңыз.
Келесі әрекеттерді орындау арқылы құрылғыға қосылыңыз:
ttyUSB0 ашыңыз
ttyUSB0 - құрылғы қосылған сериялық порттың атауы.
Каталогты /flash /lib етіп өзгертіңіз, uModbus каталогын жасаңыз және оны пәрмендермен енгізіңіз:
cd /flash /libmd uModbus cd uModbus
Барлық файлдарды пәрмендермен орналастырыңыз:
const.py қойыңыз
put functions.py қойыңыз tcp.py қойыңыз serial.py
Содан кейін шығу командасымен консольден шығыңыз және Reset батырмасымен құрылғыны қайта іске қосыңыз.
МЫСАЛ
5 -қадам: желіге қосылыңыз
Байланыс орнату пәрмендері Moduino мен Pycom арасында ерекшеленеді.
Тиісті пәрмендерді орындау үшін пикокомы бар құрылғыға қосылыңыз. Moduino құрылғысын желіге сым немесе сымсыз қосуға болады. Келесі мысалдар сіздің желіңізде DHCP сервері жұмыс істейді деп болжайды.
Басқа жағдайда, құрылғы IP мекенжайын алмайды. Wi -Fi қолдауы әр Moduino -да бар. Ethernet порты опция болып табылады және барлық құрылғыларда жоқ.
1) Moduino ESP32
WiFi желісіне қосылу
Құрылғыда келесі пәрмендерді орындаңыз:
netWiFi импортынан netWiFiwifi = netWiFi (netWiFi. WIFI_STA, 'ESSID', 'PASS') wifi.start ()
ESSID -ді Wi -Fi желісінің атауына, ал PASS -ке парольге ауыстырыңыз.
Start () орындалғаннан кейін біраз уақыттан кейін сіз құрылғыға тағайындалған IP мекенжайын алуыңыз керек.
Ethernet желісіне қосылу
Ethernet кабелі арқылы құрылғыны сымды желіге қосыңыз.
Содан кейін келесі пәрмендерді орындаңыз:
netETH импортынан netETHeth = netETH () eth.start ()
Start () орындалғаннан кейін біраз уақыттан кейін сіз құрылғыға тағайындалған IP мекенжайын алуыңыз керек.
2) Moduino Pycom
WiFi желісіне қосылыңыз
Құрылғыда келесі пәрмендерді орындаңыз:
желі импортынан WLANwlan = WLAN (режим = WLAN. STA) торлар = wlan.scan () тордағы торға: егер net.ssid == 'ESSID': басып шығару ('Желі табылды!') wlan.connect (net.ssid), auth = (net.sec, 'PASS'), күту уақыты = 5000) wlan.isconnected () емес кезде: machine.idle () басып шығару ('WLAN қосылымы сәтті!') үзілісі
ESSID -ді Wi -Fi желісінің атауымен, ал парольді парольмен ауыстырыңыз.
6 -қадам: Modbus Slave көмегімен байланыс орнатыңыз
Modbus Master кітапханалары екі құрылғы үшін де ұқсас
Олар инициализацияда әр түрлі болады.
1) Moduino ESP32 жүйесінде uModBus бағдарламасын іске қосыңыз
Орындау:
uModBusTCP -тен uModBusTCP -ны TCP ретінде импорттаңыз
2) uModBus -ты Pycom -да баптаңыз
Орындау:
uModbus.tcp -ден TCP импорттау
Ашық байланыс
Содан кейін қосылуды ашыңыз:
modbus = TCP ('IP', PORT, 60)
мұнда:
- Modbus Slave тренажеры бар компьютердің IP - IP мекенжайы
- ПОРТ - Modbus Slave порты
- 60 - күту уақыты
Егер оқу/жазу пәрмендерін орындау кезінде келесі қате орын алса: МЫСАЛ
орындау:
Moduino ESP32 үшін:
modbus.close ()
Moduino Pycom үшін:
modbus._sock.close ()
содан кейін байланысты қалпына келтіріңіз:
modbus = TCP ('IP', PORT, 60)
Бұл қосылымды қайта жасамас бұрын розетканы жабу үшін маңызды. Құрылғыда розетка байланысының шектеулі саны бар.
7 -қадам: Регистрлерді оқу және жазу
Modbus регистрлерді оқу мен жазудың бірнеше функцияларын қолдайды.
uModBus кітапханасында әр функция үшін әдіс бар:
- оқу_бұрыштары
- оқудың_бөлшектері
- read_holding_registers
- read_input_registers
- write_single_coil
- write_single_register
Біріншіден, кейбір мәндерді жазуға рұқсат етіңіз.
1) катушкалар жазу (функция: 5)
1 регламенттен 200 регистрге 1 мән жазыңыз:
modbus.write_single_coil (1, 200, 0xFF00)
Бірінші дәлел құл идентификаторы үшін, біздің жағдайда 1.
Екінші - регистр нөмірі, ал шөлдеу - бұл мән. 1 үшін мұнда 0xFF00 қою керек. 1 -құлдан 0 -ден 201 -ге дейінгі тіркеуді жазыңыз:
modbus.write_single_coil (1, 201, 0)
Бұл әдіс тек логикалық мәндерді жазуға мүмкіндік береді: 0 немесе 1.
2) регистрлерді жазу (функция: 6)
Енді бірнеше регистрге бірнеше бүтін мәндерді жазыңыз.
1 -құлдан 100 тіркеу үшін қол қойылған 111 мәнін жазыңыз:
modbus.write_single_register (1, 100, 111, True)
Бірінші аргумент - идентификатор, екінші регистр нөмірі, үшіншісі - жаңа мән. Соңғы аргумент мәнді қол қойылған нөмір ретінде орнату керектігін анықтайды. Ол үшін әдепкі мән True болып табылады. Сізге оны орнатудың қажеті жоқ.
1 -құлдан 101 тіркеуге қол қойылған -457 мәнін жазыңыз:
modbus.write_single_register (1, 101, -457)
Қол қойылмаған 50 мәнді 100 тіркелімге 3 -ші құлынан жазыңыз:
modbus.write_single_register (3, 100, 50, жалған)
Бұл әдіс бүтін мәндерді бір регистрге жазуға мүмкіндік береді.
Бір регистр 16 биттік мәнді қамтуы мүмкін.
Әдіс True мәнін қайтарады - кіріс мәні жарамды, егер жоқ болса - жалған. Мән жарамсыз болса да жазылады (тіркеу үшін тым үлкен)
3) Катушкалар/дискретті кірістерді оқу
Енді жазбаша логикалық мәндерді оқуға рұқсат етіңіз. Оқу катушкасының 1 функциясы бар регистрді оқу үшін мына әрекетті орындаңыз:
modbus.read_coils (slaveId, тіркеу, санау) [0: count]
2 функциясы бар оқу регистрін оқу үшін дискретті кірісті орындаңыз:
modbus.read_discrete_inputs (slaveId, тіркеу, санау) [0: count]
мұнда:
- slave -id - виртуалды құлдың идентификаторы (Slave тренажері барлық жарамды идентификаторларды қабылдайды)
- регистр - оқу үшін тіркеу нөмірі
- санау - оқылатын регистрлер саны (қалаған соманы екі жерге қойыңыз)
Бұл әдістер логикалық мәндері бар жиымды қайтарады. Әрбір мән әрбір регистрге сәйкес келеді.
Фрагмент: [0: count] қажет, себебі бұл әдіс санаудан гөрі көп мәнді қайтарады. Ол әрқашан 8 -ге бөлінетін мәндердің сомасын қайтарады. Қосымша мәндер False болып табылады және ешқандай регистрге сәйкес келмейді.
Біздің логикалық мәндерді екі әдіспен оқыңыз:
modbus.read_coils (1, 200, 2) [0: 2] modbus.read_discrete_inputs (1, 200, 2) [0: 2]
Нәтиже келесідей болады: МЫСАЛ
True 1 мәнге, False 0 мәніне қатысты.
4) регистрлерді оқу
Енді 6 функциямен жазылған регистрлерден мәндерді оқыңыз.
3 функциясы бар регистрлерді оқу үшін оқу регистрлерін оқу үшін мына әрекеттерді орындаңыз:
modbus.read_holding_registers (slaveId, тіркелу, санау, қол қойылған = True)
4 функциясы бар регистрлерді оқу үшін енгізу регистрлерін оқу үшін мына әрекеттерді орындаңыз:
modbus.read_input_registers (slaveId, тіркеу, санау, қол қойылған = True)
мұнда:
- slave -id - виртуалды құлдың идентификаторы
- регистр - оқу үшін тіркеу нөмірі
- санау - оқылатын регистрлер саны
- қол қойылған - оқу мәндерін қол қойылған сандар ретінде қарастыру керек пе, жоқ па екенін көрсетеді. Әдепкі күй: рас
Қайтарылатын мән - бұл регистрлердің қажетті саны бар жинақ.
Алдыңғы тармақта орнатылған регистрлерді оқу:
modbus.read_holding_registers (1, 100, 2, True) modbus.read_input_registers (1, 100, 2, True)
Нәтижелер мына скриншоттағыдай болуы керек: EXAMPLE
Келесі сабақта сіз ESP32 қосылған құрылғыда Modbus RTU Master құруды үйренесіз.
Ұсынылған:
MODBUS RTU -дағы өнеркәсіптік HMI және Arduinos: 4 қадам
MODBUS RTU -дағы өнеркәсіптік HMI және Arduinos: Бұл нұсқаулықта мен өнеркәсіптік HMI (COOLMAY MT6070H, 150EUROS), Arduino CLONE DIY (10EUROS) және Arduino UNO (10EUROS) арасындағы байланыс мысалын сипаттаймын. Желі арнайы және берік және өнеркәсіптік протоколмен жұмыс істейді
Arduino мен өнеркәсіптік құрылғылар арасындағы Modbus TCP байланысы: 3 қадам
Arduino мен өндірістік құрылғылар арасындағы Modbus TCP байланысы: өнеркәсіптік HMI бар Arduino тақтасын басқарудың және оны Modbus TCP байланысымен өнеркәсіптік желіге қосудың индустриялық әдісі
ESP32 -ті бастау - Arduino IDE -де ESP32 тақталарын орнату - ESP32 жыпылықтау коды: 3 қадам
ESP32 -ті бастау | Arduino IDE -де ESP32 тақталарын орнату | ESP32 Blink Code: Бұл нұсқаулықта біз esp32 -мен қалай жұмыс істеуді және esp32 тақталарын Arduino IDE -ге қалай орнату керектігін көреміз, және біз esp 32 -ге arduino ide көмегімен жыпылықтау кодын іске қосуды бағдарламалаймыз
GPRS арқылы TCP/IP қосылымы: SIM900A модулін пайдаланып серверге деректерді жіберу әдісі: 4 қадам
GPRS арқылы TCP/IP қосылымы: SIM900A модулін пайдаланып деректерді серверге қалай жіберуге болады: Бұл оқулықта мен сізге sim900 модулін пайдаланып TCP серверіне деректерді қалай жіберу керектігін айтамын. Сонымен қатар біз серверден клиентке деректерді қалай алуға болатынын көреміз (GSM модулі)
PZEM-004 + ESP8266 есептегіші және платформа IoT түйіні-қызыл және Modbus TCP/IP: 7 қадам
Есептегіш PZEM-004 + ESP8266 және платформа IoT Node-RED & Modbus TCP/IP: Бұл мүмкіндікте біз Pzem-004-Peacefair белсенді қуат есептегішін немесе алдыңғы оқулықтарда пайдаланылған IoT Node-RED интеграциялық платформасын біріктіреміз. біз Modbus TCP / IP құл ретінде конфигурацияланған ESP8266 модулін қолданамыз, кейінірек