Мазмұны:

ESP32 Modbus Master TCP: 7 қадам
ESP32 Modbus Master TCP: 7 қадам

Бейне: ESP32 Modbus Master TCP: 7 қадам

Бейне: ESP32 Modbus Master TCP: 7 қадам
Бейне: Работа с Modbus RTU/TCP. Примеры проектов. 2024, Қараша
Anonim
ESP32 Modbus Master TCP
ESP32 Modbus Master TCP

Бұл сыныпта сіз 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 TCP Slave Simulator бағдарламасын жүктеңіз және іске қосыңыз
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 порты немесе түрлендіргіш қажет. Құрылғының нұсқасын тексеріңіз (ол қандай порт түрін қолданады) және сәйкес портты немесе түрлендіргішті табыңыз.

  1. Құрылғыны компьютерге қосыңыз
  2. Содан кейін оған қуат көзін қосыңыз

Құрылғыны компьютерге қосыңыз, содан кейін оған қуат көзін қосыңыз. Ethernet кабелін Moduino ESP32 -ге де қосуға болады (егер оның порты болса).

Қосылу жоғарыдағы суреттердегідей болуы керек

Құрылғыға қосылу үшін пайдаланылатын порттың жолын табыңыз, мысалы: /dev /ttyS1, /dev /ttyUSB0.

USB түрлендіргіштері үшін жолда USB сөзі болады.

Пикоком бағдарламасы бар құрылғыға қосыла аласыз:

picocom /dev /ttyUSB0 -b 115200

Құрылғының пәрмен жолы төмендегі суреттердің біріне ұқсайды.

Moduino ESP32: мына жерден қараңыз

Moduino Pycom: Мұнда қараңыз

4 -қадам: Modbus Master кітапханасын жүктеңіз

Modbus Master кітапханасын жүктеңіз
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 Slave көмегімен байланыс орнатыңыз
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 кітапханасында әр функция үшін әдіс бар:

  1. оқу_бұрыштары
  2. оқудың_бөлшектері
  3. read_holding_registers
  4. read_input_registers
  5. write_single_coil
  6. 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 құруды үйренесіз.

Ұсынылған: