সুচিপত্র:

ESP32 Modbus Master TCP: 7 ধাপ
ESP32 Modbus Master TCP: 7 ধাপ

ভিডিও: ESP32 Modbus Master TCP: 7 ধাপ

ভিডিও: ESP32 Modbus Master TCP: 7 ধাপ
ভিডিও: How to Make PLC LCD HMI || FLProg 2024, জুন
Anonim
ইএসপি 32 মোডবাস মাস্টার টিসিপি
ইএসপি 32 মোডবাস মাস্টার টিসিপি

এই ক্লাসে, আপনি ESP32 প্রসেসরকে Modbus TCP Master হিসেবে প্রোগ্রাম করবেন।

আমরা দুটি ডিভাইস ব্যবহার করব, যার মধ্যে এই প্রসেসর রয়েছে: Moduino ESP32 এবং Pycom। উভয় ডিভাইস মাইক্রোপাইটথন পরিবেশে চলছে। আমাদের মোডবাস স্লেভ হবে পিসি কম্পিউটার যার উপর চলবে মোডবাস সিমুলেটর সফটওয়্যার।

আপনার প্রয়োজন হবে:

  • Moduino ESP32 বা Moduino Pycom ডিভাইস (Moduino ESP32 ডিভাইস সম্পর্কে আরও জানতে এই ওয়েবসাইটটি দেখুন এবং এটি Pycom ডিভাইস চেক করতে)
  • লিনাক্স অপারেটিং সিস্টেম সহ পিসি
  • আপনার কম্পিউটারে RS-232/RS-485 পোর্ট অথবা USB থেকে RS-232/RS-485 রূপান্তরকারী

ধাপ 1: মোডবাস টিসিপি স্লেভ সিমুলেটর ডাউনলোড করুন এবং শুরু করুন

মোডবাস টিসিপি স্লেভ সিমুলেটর ডাউনলোড করুন এবং শুরু করুন
মোডবাস টিসিপি স্লেভ সিমুলেটর ডাউনলোড করুন এবং শুরু করুন

Http://www.modbusdriver.com/diagslave.html থেকে মোডবাস স্লেভ সিমুলেটর ডাউনলোড করুন তারপর লিনাক্স অপারেটিং সিস্টেমের জন্য ডাউনলোড করা আর্কাইভ ও আনপ্যাক ভার্সন খুলুন।

-P যুক্তি দিয়ে কনসোল থেকে প্রোগ্রামটি চালান:

./diagslave -p

একটি পোর্ট যেখানে Modbus Slave সার্ভার কাজ করবে। মোডবাস প্রোটোকলের জন্য এটি ডিফল্টভাবে 502, কিন্তু আপনি অন্য একটি ব্যবহার করতে পারেন।

1024 এর নীচে লিনাক্স পোর্টে নিয়মিত ব্যবহারকারীর দ্বারা পরিচালিত প্রোগ্রামগুলি ব্যবহার করা যাবে না (রুট সুবিধা নয়)।

আপনি কোন পোর্টটি ব্যবহার করছেন তা মনে রাখবেন। এই মানটি পরে প্রয়োজন হবে।

ধাপ 2: ডিভাইসের সাথে সংযোগ স্থাপনের জন্য আপনার কম্পিউটার প্রস্তুত করুন

ডিভাইসের সাথে সংযোগ স্থাপনের জন্য আপনার কম্পিউটার প্রস্তুত করুন
ডিভাইসের সাথে সংযোগ স্থাপনের জন্য আপনার কম্পিউটার প্রস্তুত করুন

ডিভাইসের সাথে সংযোগ স্থাপন করতে এবং এতে ফাইল পাঠানোর জন্য আপনার কিছু প্রোগ্রামের প্রয়োজন হবে।

পাইথন পরিবেশ এবং পাইপ ইনস্টল করুন (যদি আপনার এটি না থাকে):

apt-get python3 ইনস্টল করুন

apt-get python3-dev curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py" python3 get-pip.py

পিকোকম ইনস্টল করুন:

apt-get picocom ইনস্টল করুন

এই প্রোগ্রামটি ডিভাইসের সাথে সংযোগ স্থাপন এবং তার উপর কমান্ড চালানোর জন্য প্রয়োজন। mpfshell ইনস্টল করুন:

pip install mpfshell

এই প্রোগ্রামটি আপনাকে ডিভাইসে ফাইল পাঠাতে দেয়।

আপনি এটি উৎস ফর্ম ইনস্টল করতে পারেন। এই পৃষ্ঠাটি পড়ুন:

ধাপ 3: ডিভাইস প্রস্তুত করুন এবং এর সাথে সংযুক্ত করুন

ডিভাইস প্রস্তুত করুন এবং এর সাথে সংযুক্ত করুন
ডিভাইস প্রস্তুত করুন এবং এর সাথে সংযুক্ত করুন
ডিভাইস প্রস্তুত করুন এবং এর সাথে সংযুক্ত করুন
ডিভাইস প্রস্তুত করুন এবং এর সাথে সংযুক্ত করুন
ডিভাইস প্রস্তুত করুন এবং এর সাথে সংযুক্ত করুন
ডিভাইস প্রস্তুত করুন এবং এর সাথে সংযুক্ত করুন

মোডুইনো বা পাইকম ডিভাইসটিকে পিসিতে সংযুক্ত করতে আপনার প্রয়োজন RS-232/RS-485 পোর্ট বা কনভার্টার। আপনার ডিভাইসের সংস্করণ পরীক্ষা করুন (এটি কোন পোর্ট টাইপ ব্যবহার করে) এবং উপযুক্ত পোর্ট বা কনভার্টার খুঁজুন।

  1. পিসিতে ডিভাইস সংযুক্ত করুন
  2. তারপরে এটিতে বিদ্যুৎ সরবরাহ সংযুক্ত করুন

ডিভাইসটিকে পিসিতে সংযুক্ত করুন এবং তারপরে এটিতে বিদ্যুৎ সরবরাহ সংযুক্ত করুন। আপনি ইথারনেট ক্যাবলটি মডুইনো ইএসপি 32 এর সাথেও সংযুক্ত করতে পারেন (যদি এটিতে পোর্ট থাকে)।

সংযোগ উপরের ছবির মতো হওয়া উচিত।

পোর্টের জন্য পথ খুঁজুন, যা ডিভাইস সংযোগের জন্য ব্যবহৃত হয় এটি উদাহরণস্বরূপ হতে পারে: /dev /ttyS1, /dev /ttyUSB0।

ইউএসবি রূপান্তরকারীদের জন্য, পাথটিতে ইউএসবি শব্দ থাকবে।

আপনি পিককম প্রোগ্রামের সাথে ডিভাইসে সংযোগ করতে পারেন:

picocom /dev /ttyUSB0 -b 115200

ডিভাইসের কমান্ড প্রম্পট নীচের এই চিত্রগুলির একটির মতো দেখতে।

Moduino ESP32: এখানে দেখুন

Moduino Pycom: এখানে দেখুন

ধাপ 4: Modbus মাস্টার লাইব্রেরি আপলোড করুন

মোডবাস মাস্টার লাইব্রেরি আপলোড করুন
মোডবাস মাস্টার লাইব্রেরি আপলোড করুন

github.com/pycom/pycom-modbus/ মডবাস স্লেভের সাথে যোগাযোগ করার জন্য আপনার উপযুক্ত লাইব্রেরি প্রয়োজন। পাইকমের লাইব্রেরিগুলি মোডুইনোর সাথে সামঞ্জস্যপূর্ণ নয়। আপনার ডিভাইসের সাথে সঙ্গতিপূর্ণ নির্দেশাবলী পরীক্ষা করুন।

ফাইল পাঠানোর আগে পিকোকম বন্ধ করুন: Ctrl+A এবং তারপর Ctrl+X কী টিপুন।

Moduino ESP32 বেসের জন্য uModBus লাইব্রেরি। এটি নিয়মিত ESP32 ডিভাইসে কাজ করার জন্য সংশোধন করা হয়েছে। এটিতে সংযোগকারী ক্লাসগুলির জন্য অতিরিক্ত বন্ধ () পদ্ধতি রয়েছে।

1) মডুইনো ইএসপি 32

Https://github.com/techbase123/micropython-modbus থেকে লাইব্রেরি ডাউনলোড করুন। আর্কাইভ আনপ্যাক করুন এবং 4 টি ফাইল মোডুইনো ডিভাইসে পাঠান।

তাদের আপলোড করতে mpfshell ব্যবহার করুন। এই ফাইলগুলি দিয়ে ডিরেক্টরিতে এই প্রোগ্রামটি চালান।

সম্পাদন করে ডিভাইসের সাথে সংযুক্ত করুন: এটি

ttyUSB0 সিরিয়াল পোর্টের একটি নাম যেখানে ডিভাইস সংযুক্ত থাকে।

কমান্ড সহ ডিরেক্টরি /ফ্ল্যাশ /লিব পরিবর্তন করুন:

cd /flash /lib

কমান্ড সহ সমস্ত ফাইল রাখুন:

uModBusConst.py রাখুন

uModBusFunctions.py put uModBusTCP.py put uModBusSerial.py

উদাহরণ

তারপর প্রস্থান কমান্ড দিয়ে কনসোল থেকে বেরিয়ে আসুন এবং রিসেট বোতাম দিয়ে ডিভাইসটি পুনরায় চালু করুন।

2) মডুইনো পাইকম

Https://github.com/pycom/pycom-modbus/ থেকে লাইব্রেরি ডাউনলোড করুন। সংরক্ষণাগারটি আনপ্যাক করুন এবং ডিভাইসে uModbus ডিরেক্টরিটির সামগ্রী পাঠান। সেগুলি আপলোড করতে mpfshell ব্যবহার করুন। এই ফাইলগুলি দিয়ে ডিরেক্টরিতে এই প্রোগ্রামটি চালান।

সম্পাদন করে ডিভাইসের সাথে সংযুক্ত করুন:

ttyUSB0 খুলুন

ttyUSB0 সিরিয়াল পোর্টের একটি নাম যেখানে ডিভাইস সংযুক্ত থাকে।

ডিরেক্টরিটি /ফ্ল্যাশ /লিবে পরিবর্তন করুন, uModbus ডিরেক্টরি তৈরি করুন এবং কমান্ড দিয়ে প্রবেশ করুন:

cd /flash /libmd uModbus cd uModbus

কমান্ড সহ সমস্ত ফাইল রাখুন:

const.py রাখুন

puts.py put tcp.py put serial.py

তারপর প্রস্থান কমান্ড দিয়ে কনসোল থেকে বেরিয়ে আসুন এবং রিসেট বোতাম দিয়ে ডিভাইসটি পুনরায় চালু করুন।

উদাহরণ

ধাপ 5: নেটওয়ার্কের সাথে সংযোগ করুন

নেটওয়ার্কের সাথে সংযোগ করুন
নেটওয়ার্কের সাথে সংযোগ করুন

মোডুইনো এবং পাইকমের মধ্যে সংযোগ স্থাপনের কমান্ড আলাদা।

যথাযথ কমান্ডগুলি চালানোর জন্য পিককমের সাথে ডিভাইসের সাথে সংযোগ করুন। আপনি তারের বা ওয়্যারলেসের মাধ্যমে মডুইনো ডিভাইসটিকে নেটওয়ার্কের সাথে সংযুক্ত করতে পারেন। নিম্নলিখিত উদাহরণগুলি অনুমান করে যে আপনার নেটওয়ার্কে DHCP সার্ভার কাজ করছে।

অন্য ক্ষেত্রে, ডিভাইস আইপি ঠিকানা পাবে না। প্রতিটি মডুইনোতে ওয়াইফাই সাপোর্ট পাওয়া যায়। ইথারনেট পোর্ট একটি বিকল্প এবং সব ডিভাইসে এটি নেই।

1) মডুইনো ইএসপি 32

ওয়াইফাই সংযোগ করা হচ্ছে

ডিভাইসে নিম্নলিখিত কমান্ডগুলি চালান:

netWiFi আমদানি থেকে netWiFiwifi = netWiFi (netWiFi. WIFI_STA, 'ESSID', 'PASS') wifi.start ()

আপনার ওয়াইফাই নেটওয়ার্কের নাম দিয়ে ESSID প্রতিস্থাপন করুন এবং পাসওয়ার্ড দিয়ে পাস করুন।

স্টার্ট () চালানোর কিছু সময় পরে আপনার একটি আইপি ঠিকানা পাওয়া উচিত যা আপনার ডিভাইসে বরাদ্দ করা হয়েছিল।

ইথারনেট নেটওয়ার্কে সংযুক্ত হচ্ছে

ইথারনেট কেবল দিয়ে তারযুক্ত নেটওয়ার্কের সাথে ডিভাইস সংযুক্ত করুন।

তারপর নিম্নলিখিত কমান্ডগুলি চালান:

netETH আমদানি থেকে netETHeth = netETH () eth.start ()

স্টার্ট () চালানোর কিছু সময় পরে আপনার আইপি ঠিকানা পাওয়া উচিত যা আপনার ডিভাইসে বরাদ্দ করা হয়েছিল।

2) মডুইনো পাইকম

ওয়াইফাই সংযোগ করুন

ডিভাইসে নিম্নলিখিত কমান্ডগুলি চালান:

নেটওয়ার্কে আমদানি থেকে, auth = (net.sec, 'PASS'), সময়সীমা = 5000) যখন wlan.isconnected (): machine.idle () মুদ্রণ ('WLAN সংযোগ সফল!') বিরতি

আপনার ওয়াইফাই নেটওয়ার্কের নাম দিয়ে ESSID এবং এর পাসওয়ার্ড দিয়ে পাস প্রতিস্থাপন করুন।

ধাপ 6: মডবাস স্লেভের সাথে যোগাযোগ শুরু করুন

মোডবাস স্লেভের সাথে যোগাযোগ শুরু করুন
মোডবাস স্লেভের সাথে যোগাযোগ শুরু করুন

মোডবাস মাস্টার লাইব্রেরি উভয় ডিভাইসের জন্য একই রকম

এগুলি শুরুতে পরিবর্তিত হয়।

1) Moduino ESP32 এ uModBus আরম্ভ করুন

এক্সিকিউট:

uModBusTCP থেকে tCP হিসাবে uModBusTCP আমদানি করুন

2) Pycom- এ uModBus আরম্ভ করুন

এক্সিকিউট:

uModbus.tcp থেকে TCP আমদানি করুন

সংযোগ খুলুন

তারপর এর সাথে সংযোগ খুলুন:

modbus = TCP ('IP', PORT, 60)

কোথায়:

  • আইপি - মোডবাস স্লেভ সিমুলেটর দিয়ে আপনার পিসির আইপি ঠিকানা
  • পোর্ট - মোডবাস স্লেভের বন্দর
  • 60 একটি সময়সীমা

রিডিং/রাইটিং কমান্ড চালানোর সময় যদি নিম্নলিখিত ত্রুটি ঘটে থাকে: উদাহরণ

এক্সিকিউট:

Moduino ESP32 এর জন্য:

modbus.close ()

Moduino Pycom এর জন্য:

modbus._sock.close ()

এবং তারপর সংযোগ পুনরায় তৈরি করুন:

modbus = TCP ('IP', PORT, 60)

সংযোগ পুনরায় তৈরি করার আগে সকেট বন্ধ করা গুরুত্বপূর্ণ। ডিভাইসে উপলব্ধ সকেট সংযোগের পরিমাণ সীমিত।

ধাপ 7: নিবন্ধন পড়ুন এবং লিখুন

রেজিস্টার পড়ুন এবং লিখুন
রেজিস্টার পড়ুন এবং লিখুন

রেজিস্টার পড়তে এবং লিখতে মোডবাস বেশ কয়েকটি ফাংশন সমর্থন করে।

uModBus লাইব্রেরির প্রতিটি ফাংশনের জন্য পদ্ধতি রয়েছে:

  1. read_coils
  2. read_discrete_inputs
  3. পড়ুন_হোল্ডিং_রেজিষ্টার
  4. read_input_registers
  5. write_single_coil
  6. write_single_register

প্রথমত, কিছু মান লিখতে দিন।

1) কয়েল লিখুন (func: 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) রেজিস্টার লিখুন (func: 6)

এখন কয়েকটি রেজিস্টারে কিছু পূর্ণসংখ্যা মান লিখুন।

স্লেভ 1 থেকে 100 নিবন্ধন করার জন্য স্বাক্ষরিত 111 মান লিখুন:

modbus.write_single_register (1, 100, 111, সত্য)

প্রথম যুক্তি হল স্লেভ আইডি, দ্বিতীয় রেজিস্টার নম্বর এবং তৃতীয়টি নতুন মান। এর জন্য ডিফল্ট মান সত্য। আপনার এটি সেট করার দরকার নেই।

স্লেভ 1 থেকে 101 রেজিস্টারে স্বাক্ষরিত -457 মান লিখুন:

modbus.write_single_register (1, 101, -457)

স্লেভ 3 থেকে 50 রেজিস্টারে 50 টি স্বাক্ষরিত লিখুন না:

modbus.write_single_register (3, 100, 50, মিথ্যা)

এই পদ্ধতিটি একক নিবন্ধনে পূর্ণসংখ্যা মান লেখার অনুমতি দেয়।

একক রেজিস্টারে 16 বিট মান থাকতে পারে।

মেথড রিটার্নস ট্রু হল ইনপুট মান বৈধ এবং না হলে মিথ্যা। মান অবৈধ হলেও লেখা হয় (নিবন্ধনের জন্য খুব বড়)

3) কয়েল/বিচ্ছিন্ন ইনপুট পড়ুন

এখন লিখিত বুলিয়ান মান পড়ুন। ফাংশন 1 রিড কয়েলের সাথে রেজিস্টার পড়তে, এক্সিকিউট করুন:

modbus.read_coils (স্লেভআইডি, রেজিস্টার, কাউন্ট) [0: count]

ফাংশন 2 এর সাথে নিবন্ধন পড়তে আলাদা ইনপুট পড়ুন, চালান:

modbus.read_discrete_inputs (স্লেভআইডি, রেজিস্টার, কাউন্ট) [0: count]

কোথায়:

  • স্লেভ -আইডি - ভার্চুয়াল স্লেভের আইডি (স্লেভ সিমুলেটর সব বৈধ আইডি গ্রহণ করে)
  • নিবন্ধন - পড়ার জন্য নিবন্ধন নম্বর
  • গণনা - যে পরিমাণ রেজিস্টার পড়তে হবে (উভয় স্থানে কাঙ্ক্ষিত পরিমাণ রাখুন)

এই পদ্ধতিগুলি বুলিয়ান মান সহ অ্যারে ফেরত দেয়। প্রতিটি মান প্রতিটি রেজিস্টারের সাথে মিলে যায়।

টুকরা: [0: গণনা] প্রয়োজন, কারণ এই পদ্ধতিটি গণনার চেয়ে বেশি মান প্রদান করে। এটি সর্বদা মানগুলির পরিমাণ প্রদান করে যা 8 দ্বারা বিভাজ্য।

উভয় পদ্ধতির সাথে আমাদের বুলিয়ান মান পড়ুন:

modbus.read_coils (1, 200, 2) [0: 2] modbus.read_discrete_inputs (1, 200, 2) [0: 2]

ফলাফল এইরকম হবে: উদাহরণ

সত্য মানে 1 মান, মিথ্যা 0।

4) রেজিস্টার পড়ুন

এখন 6 ফাংশন সহ লিখিত রেজিস্টার থেকে মান পড়ুন।

ফাংশন 3 রিডিং হোল্ডিং রেজিস্টার সহ রেজিস্টারগুলি পড়তে, চালান:

modbus.read_holding_registers (স্লেভআইডি, নিবন্ধন, গণনা, স্বাক্ষরিত = সত্য)

ফাংশন 4 এর সাথে রেজিস্টার পড়তে ইনপুট রেজিস্টারগুলি চালান:

modbus.read_input_registers (স্লেভআইডি, নিবন্ধন, গণনা, স্বাক্ষরিত = সত্য)

কোথায়:

  • স্লেভ -আইডি - ভার্চুয়াল স্লেভের আইডি
  • নিবন্ধন - পড়ার জন্য নিবন্ধন নম্বর
  • গণনা - পড়া নিবন্ধন পরিমাণ
  • স্বাক্ষরিত - নির্দেশ করে যে পঠিত মানগুলি স্বাক্ষরিত সংখ্যা হিসাবে গণ্য করা উচিত বা না। ডিফল্ট অবস্থা: সত্য

প্রত্যাবর্তন মান হল রেজিস্টারের কাঙ্ক্ষিত পরিমাণ সহ একটি টুপল।

পূর্ববর্তী বিন্দুতে সেট করা নিবন্ধগুলি পড়ুন:

modbus.read_holding_registers (1, 100, 2, True) modbus.read_input_registers (1, 100, 2, True) modbus.read_holding_registers (3, 100, 1, মিথ্যা) modbus.read_input_registers (3, 100, 1, মিথ্যা)

ফলাফল এই স্ক্রিনশটের মত হওয়া উচিত: উদাহরণ

পরবর্তী পাঠে আপনি শিখবেন কিভাবে ESP32- সক্ষম ডিভাইসে Modbus RTU Master তৈরি করতে হয়।

প্রস্তাবিত: