MOXA Nport - Tampilan Dalam

Server pengumpulan data port serial MOXA Nport dan sejenisnya saat ini merupakan standar de facto di bidang sistem bangunan yang mentransmisikan atau menerima data melalui antarmuka RS-232, RS-485 dan RS-422.

Meteran listrik, katup yang dikendalikan dan katup gerbang, meter aliran, sensor getaran, perangkat telemekanik.

Segala sesuatu yang dapat menghasilkan data atau dikendalikan dari jarak jauh dan memiliki antarmuka RS-232, RS-485 dan RS-422 - bekerja melalui konverter ini.

Tujuan umum penggunaannya biasanya sebagai berikut: meneruskan antarmuka RS-232, RS-485 dan RS-422 melalui jaringan lokal yang ada, menghubungkan perangkat atau perangkat yang memiliki salah satu antarmuka serial ke PC (server, SCADA) melalui Ethernet, sambungkan ke perangkat memiliki antarmuka serial melalui Internet untuk kendali jarak jauh, dll.

Harga untuk konverter ini tidak terlalu tinggi, model yang lebih muda dapat dipinjam seharga $ 100-200. Tetapi mengingat bahwa dalam produksi otomatis perangkat semacam itu, ratusan atau bahkan ribuan dapat diinstal - sebuah berita gembira yang cukup muncul untuk "pengganti impor" domestik.

Saya akan mencoba membantu mereka hari ini.

Apa yang akan kita lakukan

Pertama, kita akan memahami teori bagaimana itu diatur di dalam.

Kedua, kami mengisolasi fungsionalitas minimum untuk mulai bekerja dalam Real Com Mode (yaitu, pada kenyataannya, untuk meneruskan port COM virtual ke perangkat melalui Ethernet).

Ketiga, demi kepentingan, kami akan menganalisis protokol untuk mencari dan mengkonfigurasi perangkat melalui utilitas NPort Administration Suite. Kami akan mendapatkan pemahaman lengkap tentang cara membuat analog pin-to-pin dari sepotong besi yang dapat macet di tempat MOXA Nport yang ada, sambil menerima dukungan penuh dari perangkat lunak dan driver asli.

Dan akhirnya, mari kita coba menghitung berapa banyak orang India yang menulis kode firmware MOXA.

Bagian 1. Pendahuluan


Jadi, kami memiliki subjek uji di meja kami (sebenarnya ada beberapa dari mereka, jadi jangan heran jika Anda melihat pengidentifikasi model dan alamat MAC yang berbeda dalam artikel)



Ini memiliki port Ethernet dan dua port RS-422 / RS-485 - ini secara fisik.
Dan dalam rencana program - pada perangkat terbuka:
Port UDP 4800 - bertanggung jawab untuk menangkap paket pencarian perangkat dan mengirimkan data tentang perangkat itu sendiri ke utilitas konfigurasi.

TCP port 4900 - menerima perintah konfigurasi perangkat. Waktu, nama, alamat IP, mode operasi, pengaturan port dan kecepatan perangkat, dan parameter dasar lainnya dapat dikonfigurasi melalui port ini, yang dapat dikonfigurasi melalui antarmuka utama utilitas NPort Administration Suite:



TCP port 80 - bertanggung jawab atas pengoperasian antarmuka WEB
Port TCP 966, 967, (dan 968, 969 untuk 4 perangkat port) adalah port kontrol transmisi. Mereka menjalankan perintah untuk membuka / menutup port COM yang sesuai, mengatur kecepatan port, mendorong data, memantau pemenuhan buffer pengiriman / penerimaan, dll. Port 966 masing-masing bertanggung jawab untuk pengoperasian port pertama.

Port TCP (default) 950, 951, (dan 952, 953 untuk 4 perangkat port) adalah port untuk transfer data langsung. Artinya, apa yang seharusnya langsung muncul pada port RS-232/485/422 perangkat ditransmisikan ke port data. Hanya kontrol aliran data di port ini yang masing-masing menuju 966, 967, 968, 969.

Saya harap gambaran umum tentang memahami operasi perangkat di kepala saya telah berkembang. Mari kita beralih ke bagian selanjutnya:

Bagian 2. Emulasi MOXA


Tentunya sudah menjadi jelas bagi banyak orang bahwa untuk berpura-pura menjadi MOXA Nport dalam konfigurasi minimum, perlu untuk meningkatkan server TCP pada perangkat kerasnya sendiri pada 2 port: 966 untuk kontrol transmisi dan 950 untuk transmisi data langsung. Secara alami, Anda harus menjawab dan memproses permintaan driver dengan benar di port 966, tetapi seperti yang ditunjukkan oleh analisis wireshark, tidak ada begitu banyak permintaan dan itu adalah yang paling sederhana.

Agar tidak membebani teks artikel dengan perhitungan yang menggambarkan permintaan dan jawaban, saya menyiapkan dan memposting secara terpisah dalam bentuk file pdf, deskripsi semua permintaan yang diuraikan, jawaban, dan parameter yang dikirimkan.

Unduh: Deskripsi protokol parsing MOXA.pdf
Yaitu, kumpulan pengetahuan ini memungkinkan Anda untuk mengimplementasikan perangkat yang dapat dipasangkan dengan driver asli dan mengirimkan data sebagai MOXA. Setengah dari pekerjaan sudah selesai, tetapi ada satu titik - bagaimana mengubah konfigurasi? Akan lebih bagus untuk menggunakan utilitas NPort Administration Suite asli untuk tujuan ini.

Bagian 3. Cari dan temukan


Dua bagian pertama menggambarkan apa yang perlu dilakukan, tetapi tidak ada kata tentang bagaimana mendapatkan data untuk implementasi protokol.

Pada bagian ini, kami menggali sedikit lebih dalam dan melihat bagaimana analisis pertukaran itu sendiri dilakukan.
Kita tahu bahwa port UDP 4800 terbuka pada perangkat, mari kita hubungkan perangkat, jalankan NPort Administration Suite, Wireshark dan lihat apa yang terjadi ketika mencari perangkat dengan utilitas asli.



Kami melihat paket yang dikirim:



Kami melihat bahwa NPort Administration Suite mengirim Siaran ke alamat 255.255.255.255, yaitu, ia berharap bahwa paket tersebut akan terbang melintasi jaringan.

Paket payload berisi data:

01 00 00 08 00 00 00 00, : 01 00 –   00 08 –       Big Endian. 00 00 00 00 –   

Permintaan ini dikirim beberapa kali, tampaknya dengan harapan bahwa setidaknya satu dari mereka akan mencapai tujuan.

Semua MOX menanggapi permintaan ini.



Secara khusus, kami menjawab:

  81 00 00 18 00 00 00 00 12 03 00 80 32 03 00 90 e8 26 4a ab c0 a8 7f fe 81 00 –   00 18 –     (24) 00 00 00 00 –   12 03 00 80 32 03 –  MOXA Nport device,    NPort 5232.        MOXA Nport device.          NPort Administrator. 00 90 e8 26 4a ab – MAC  MOXA Nport device c0 a8 7f fe – IP  MOXA Nport device ( 192.168.127.254 ) 

Tampaknya semuanya sederhana, hanya membingungkan nilai 12 03 00 80 32 03, yang bertanggung jawab untuk interpretasi model perangkat tertentu.

Tetapi, karena nilai ini diperiksa terhadap beberapa referensi referensi, itu berarti harus disimpan di suatu tempat.

Setelah mempelajari direktori perangkat lunak sedikit, kami menemukan bahwa dalam NPort Administrator Suite v1.22 nilai-nilai ini disimpan dalam file C: \ Program Files \ NPortAdminSuite \ bin \ dsci.dll



Setelah duduk dengan Wireshark dan perangkat selama beberapa hari, kami mendapatkan log pertukaran yang lengkap dan pemahaman tentang kode fungsi apa yang mendapat respons. Untuk kenyamanan, semua yang ditemukan dijelaskan dalam file pdf yang sama, tautan yang ditunjukkan dalam artikel sebelumnya.

Untuk pemahaman yang lebih baik tentang gambar - Saya hanya akan mengingatkan Anda bahwa UDP 4800 menerima informasi utama tentang perangkat, semua parameter yang memerlukan konfigurasi dan pemasangan dikonfigurasikan melalui permintaan untuk port TCP 4900.

Setelah memproses dengan benar semua permintaan yang masuk untuk port 4800 dan 4900, kita dapat sepenuhnya berpura-pura menjadi sebuah perangkat, sehingga bahkan perangkat lunak asli tidak akan melihat adanya masalah.

Bagian 4. Menghitung Orang India *


Dalam menganalisis protokol, saya merasa bahwa berbagai bagian protokol pertukaran ditulis oleh orang yang berbeda, makna fungsi dan interpretasinya terlalu berbeda.

Jadi misalnya:

Port UDP 4800 kode fungsi dimulai dengan:

  01 00 .. ..  81 00 .. ..  10 00 .. ..  90 00 .. ..  16 00 .. ..  96 00 .. ..  29 00 .. ..  a9 00 .. .. 

Kode fungsi port TCP 4900 dimulai dengan:

  00 01 .. ..  00 01 .. ..  02 01 .. ..  02 01 .. .. 

dan sebagainya

Port TCP 966, 967, 968, 969 kode fungsi dimulai dengan:

  10 .. ..  10 4f 4b  11 .. ..  11 4f 4b 

dan sebagainya

Yaitu, pengidentifikasi byte tunggal dari fungsi yang digunakan, dan bukan byte ganda seperti sebelumnya.
Kemudian, omong-omong, momen lucu keluar. Pada port 966, 967, 968, 969, respons terhadap pengaturan parameter selalu terdiri dari 3 byte.

Yang pertama adalah nomor fungsi, dan sisanya 2 adalah 4f 4b atau apakah ada tampilan dalam tabel ASCII - "O" "K"

Baiklah OK dengan dia, silakan.

Fitur kedua yang terlihat adalah hash Big dan Little Endian dalam respons yang sama.

Contoh jawaban:

 9a 00 00 24 00 00 00 00 01 52 00 80 9a 52 00 90 e8 3b 89 9c 75 00 04 00 01 00 0f 00 09 00 17 00 36 00 00 00 9a 00 –   00 24 –     (36) 00 00 00 00 –   01 52 00 80 9a 52 –  MOXA Nport device 00 90 e8 3b 89 9c - MAC  MOXA Nport device 75 00 - : 1900 +   (1900 + 117 = 2017) 04 00 - :     1 -     01 00 –   0f 00 –  (15) 09 00 –  (9) 17 00 –  (23) 36 00 –  (36) 00 00 –   

Ukuran paket dikodekan dalam satu cara, dan semua nilai numerik (tahun, bulan, hari ...) di jalan lain. Dari sini kita dapat menyimpulkan bahwa pemrosesan bagian pengguna mulai dari 75 00 04 00 ....... ditulis oleh programmer lain.

Untuk meringkas: Setidaknya 3 orang berbeda menulis protokol pertukaran, 1 menulis pemrosesan bagian pengguna data, dan setidaknya 1 menulis antarmuka penangan WEB. Menurut perhitungan saya, sekitar 5 programmer mengerjakan proyek.
Berapa yang Anda hitung?

* Dalam hal ini, istilah "Hindu" berarti seorang karyawan yang memenuhi tugasnya untuk makanan dan hipotek, yang mampu membuat kode dari sini dan sebelum makan siang tanpa benar-benar mempelajari rencana global perusahaan pemberi kerja.

PS Artikel ini ditulis di atas bahan-bahan yang sedang dikembangkan pada tahun 2017, sehingga banyak data yang mengandung penanggalan tepat tahun ini. Protokol diperiksa dalam kerangka kerja draft, tetapi karena pikiran menang atas pemasaran dan masalah tersebut tidak melampaui tahap prototipe kerja tunggal. Saya menerbitkan semua perkembangan pada proyek ini dalam domain publik, karena saya percaya bahwa informasi ini akan bermanfaat bagi komunitas pengembang.

Artikel asli PPS seperti biasa di blog pribadi saya

Source: https://habr.com/ru/post/id478642/


All Articles