Мазмуну:
- 1 -кадам: Modbus TCP Slave Simulator жүктөп алып баштаңыз
- 2 -кадам: Компьютериңизди түзмөккө туташууга даярдаңыз
- 3 -кадам: Түзмөктү даярдоо жана ага туташуу
- 4 -кадам: Modbus Master китепканасын жүктөө
- 5 -кадам: Тармакка туташуу
- 6 -кадам: Modbus Slave менен байланышты баштоо
- 7 -кадам: Регистрлерди окуу жана жазуу
Video: ESP32 Modbus Master TCP: 7 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:41
Бул класста сиз ESP32 процессорун Modbus TCP Master деп программалайсыз.
Биз бул процессорду камтыган эки түзмөктү колдонобуз: Moduino ESP32 жана Pycom. Эки түзмөк тең MicroPytthon чөйрөсүндө иштеп жатат. Биздин Modbus Slave анын үстүндө иштеп жаткан Modbus симулятор программасы бар PC компьютери болот.
Сага керек болот:
- Moduino ESP32 же Moduino Pycom түзмөгү (Moduino ESP32 түзмөгү жөнүндө көбүрөөк билүү үчүн бул сайтты караңыз жана бул Pycom түзмөгүн текшерүү үчүн)
- Linux операциялык системасы бар компьютер
- Компьютериңиздеги RS-232/RS-485 порт же RS-232/RS-485 конвертери
1 -кадам: Modbus TCP Slave Simulator жүктөп алып баштаңыз
Http://www.modbusdriver.com/diagslave.html тартып Modbus Slave симуляторун жүктөп алыңыз. Андан кийин 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 орнотуу
Бул программа файлдарды түзмөккө жөнөтүүгө мүмкүндүк берет.
Сиз ошондой эле аны булактардан орното аласыз. Бул баракчага кайрылыңыз:
3 -кадам: Түзмөктү даярдоо жана ага туташуу
Moduino же Pycom түзмөгүн PCке туташтыруу үчүн сизге 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 менен шайкеш келбейт. Түзмөгүңүзгө туура келген нускамаларды текшериңиз.
Файлдарды жөнөтүүдөн мурун picocomду жабыңыз: Ctrl+A, андан кийин Ctrl+X баскычтарын басыңыз.
Moduino ESP32 үчүн uModBus китепканасы Moduino Pycom үчүн pycom-modbus китепканасына негизделген. Бул кадимки ESP32 түзмөгүндө иштөө үчүн өзгөртүлгөн. Ошондой эле туташтыргыч класстар үчүн кошумча жабуу () ыкмалары бар.
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 коюңуз
коюу functions.py коюу tcp.py коюу serial.py
Андан кийин чыгуу буйругу менен консолунан чыгып, Reset баскычы менен түзмөктү өчүрүп күйгүзүңүз.
МИСАЛ
5 -кадам: Тармакка туташуу
Байланыш түзүү буйруктары Moduino менен Pycomдун ортосунда айырмаланат.
Тийиштүү буйруктарды аткаруу үчүн picocom менен түзмөккө туташыңыз. Сиз Moduino түзмөгүн зым же зымсыз тармакка туташтыра аласыз. Төмөнкү мисалдар тармагыңызда DHCP сервери бар деп болжолдонот.
Башка учурда, түзмөк IP дарегин албайт. Wi -Fi колдоосу ар бир Moduinoдо жеткиликтүү. Ethernet порту - бул бардык түзмөктөрдө жок.
1) Moduino ESP32
WiFiга туташууда
Түзмөктө төмөнкү буйруктарды аткарыңыз:
netWiFi импортунан netWiFiwifi = netWiFi (netWiFi. WIFI_STA, 'ESSID', 'PASS') wifi.start ()
ESSIDди WiFi тармагыңыздын атына, ал эми 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'), timeout = 5000) wlan.isconnected эмес (): machine.idle () print ('WLAN байланышы ийгиликтүү!') тыныгуу
ESSIDди WiFi тармагыңыздын атына алмаштырыңыз, жана сырсөзүңүздү PASS.
6 -кадам: Modbus Slave менен байланышты баштоо
Modbus Master китепканалары эки түзмөк үчүн окшош
Алар баштоодо айырмаланат.
1) Moduino ESP32де uModBusту баштоо
Аткаруу:
uModBusTCPден uModBusTCPти TCP катары импорттоо
2) Pycomдо uModBusту баштоо
Аткаруу:
uModbus.tcpден TCP импорттоо
Ачык туташуу
Андан кийин туташууну ачыңыз:
modbus = TCP ('IP', PORT, 60)
кайда:
- IP - Modbus Slave симулятору менен компьютериңиздин IP дареги
- ПОРТ - Modbus Slave порту
- 60 - таймаут
Эгерде окуу/жазуу буйруктарын аткарууда төмөнкү ката кетсе: МИСАЛ
аткаруу:
Moduino ESP32 үчүн:
modbus.close ()
Moduino Pycom үчүн:
modbus._sock.close ()
анан кайра туташуу:
modbus = TCP ('IP', PORT, 60)
Бул байланышты кайра түзүүдөн мурун розетканы жабуу үчүн абдан маанилүү.
7 -кадам: Регистрлерди окуу жана жазуу
Modbus регистрлерди окуу жана жазуу үчүн бир нече функцияларды колдойт.
uModBus китепканасында ар бир функция үчүн метод бар:
- read_coils
- read_discrete_inputs
- read_holding_registers
- read_input_registers
- write_single_coil
- write_single_register
Биринчиден, кээ бир баалуулуктарды жазалы.
1) Катушкаларды жазыңыз (Func: 5)
Кул 1ден 200 регистрге 1 маанини жазыңыз:
modbus.write_single_coil (1, 200, 0xFF00)
Биринчи аргумент кул id үчүн, биздин учурда 1.
Экинчиси - регистрдик номер жана суусоо - бул баалуулук. 1 үчүн бул жерге 0xFF00 коюш керек. 0дон 201ге чейин каттоону 1 -кулдан жазыңыз:
modbus.write_single_coil (1, 201, 0)
Бул ыкма логикалык маанилерди жазууга мүмкүндүк берет: 0 же 1.
2) Жазуу реестрлери (func: 6)
Эми бир нече регистрлерге бүтүн сандарды жазыңыз.
Кол 1ден 100 каттоо үчүн кол коюлган 111 маанини жазыңыз:
modbus.write_single_register (1, 100, 111, True)
Биринчи аргумент - кул id, экинчи регистр номери, үчүнчүсү - жаңы маани. Акыркы аргумент маани кол коюлган номер катары коюлушу керектигин аныктайт. Ал үчүн демейки мааниси True. Аны орнотуунун кажети жок.
1 -кулдан 101 каттоого кол коюлган -457 маанисин жазыңыз:
modbus.write_single_register (1, 101, -457)
3 -кулдан 100 регистрге кол коюлган эмес 50 маанини жазыңыз:
modbus.write_single_register (3, 100, 50, False)
Бул ыкма бүтүндөй сандык баалуулуктарды бирдиктүү реестрге жазууга мүмкүндүк берет.
Бир регистр 16 биттик маанини камтышы мүмкүн.
Метод кайтарат True - бул кирүү мааниси жарактуу, эгер жок болсо - жалган. Мааниси жараксыз болсо да жазылат (каттоо үчүн өтө чоң)
3) Катушкаларды/дискреттик киргизүүлөрдү окуу
Эми жазылган логикалык баалуулуктарды окуп көрөлү. Окуу үчүн 1 функциясы бар регистрди окуу үчүн, аткарыңыз:
modbus.read_coils (slaveId, каттоо, эсептөө) [0: count]
2 функциясы бар регистрди окуу үчүн дискреттик киргизүүнү окуу үчүн, аткарыңыз:
modbus.read_discrete_inputs (slaveId, регистрация, саноо) [0: count]
кайда:
- slave -id - виртуалдык кулдун идентификатору (Кул симулятору бардык жарактуу идентификаторлорду кабыл алат)
- регистр - окуу үчүн каттоо номери
- эсептөө - окула турган реестрлердин саны (эки жерге каалаган сумманы коюңуз)
Бул ыкмалар массивди логикалык маанилер менен кайтарат. Ар бир маани ар бир реестрге туура келет.
Фрагмент: [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, катталуу, эсептөө, кол коюлган = Ырас)
4 функциясы бар регистрлерди окуу үчүн киргизүү регистрлерин окуу үчүн, аткарыңыз:
modbus.read_input_registers (slaveId, катталуу, эсептөө, кол коюлган = Ырас)
кайда:
- slave -id - виртуалдык кулдун идентификатору
- регистрация - окуу үчүн каттоо номери
- count - окула турган реестрлердин саны
- кол коюлган - окуу маанилерине кол коюлган сандар катары кароо керекпи же жокпу көрсөтөт. Демейки абал: Чын
Кайтаруу мааниси - бул регистрлердин каалаган суммасы бар кортеж.
Мурунку пунктта белгиленген реестрлерди окуу:
modbus.read_holding_registers (1, 100, 2, True) modbus.read_input_registers (1, 100, 2, True) modbus.read_holding_registers (3, 100, 1, False)
Жыйынтыктар бул скриншотто окшош болушу керек: 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 Blink Code: 3 кадам
ESP32 менен баштоо | Arduino IDEде ESP32 такталарын орнотуу | ESP32 Blink Code: Бул көрсөтмөлөрдө биз esp32 менен иштөөнү жана esp32 такталарын Arduino IDEге кантип орнотууну көрөбүз жана esp 32ди arduino ide аркылуу blink кодун иштетүү үчүн программалайбыз
GPRS аркылуу TCP/IP туташуусу: SIM900A модулу аркылуу серверге маалыматтарды кантип жөнөтүү керек: 4 кадам
GPRS аркылуу TCP/IP туташуусу: SIM900A модулун колдонуп серверге маалыматты кантип жөнөтүү керек: Бул окуу куралында мен sim900 модулун колдонуп TCP серверине маалыматтарды кантип жөнөтүү керектигин айтып берейин. Ошондой эле биз серверден кардарга маалыматтарды кантип аларыбызды көрөбүз (GSM модулу)
Метр PZEM-004 + ESP8266 & Платформа IoT Node-RED & Modbus TCP/IP: 7 кадам
Meter PZEM-004 + ESP8266 & Платформа IoT Node-RED & Modbus TCP/IP: Бул мүмкүнчүлүктө биз активдүү электр эсептегичибизди же электр керектөөнү, Pzem-004-Peacefairди мурунку сабактарда колдонулган IoT Node-RED интеграциялык платформасы менен бириктиребиз, биз кийинчерээк Modbus TCP / IP кулу катары конфигурацияланган ESP8266 модулун колдонобуз