Spesifikasi pertama untuk protokol Modbus diterbitkan pada tahun 1979. Protokol dirancang untuk melakukan polling perangkat slave berdasarkan permintaan-respons. Modbus RTU (Remote Terminal Unit) beroperasi melalui antarmuka data serial (RS-232, RS-485, RS-422). Hari ini kita akan fokus pada protokol yang sedikit dimodifikasi, Modbus TCP, yang beroperasi pada lapisan aplikasi tumpukan protokol TCP / IP.
Pertama, mari kita lihat bagaimana bagian server dikonfigurasi (diprogram, lebih tepatnya). Modbus TCP Server analog dengan Modbus RTU Slave, yaitu perangkat slave. Ini penting, jangan bingung. Server hanya menanggapi permintaan, tetapi tidak membuatnya.
Contoh ini menggunakan CPU S7-1516 dengan firmware versi 2.6. Seri S7-1200 diprogram dengan cara yang sama.
Pertama, mari tempatkan instance blok fungsi MB_SERVER di OB1 (Instruksi → Komunikasi → Lainnya → MODBUS TCP).
Selanjutnya, Anda perlu melakukan tiga hal. Pertama, taruh sesuatu di masukan MB_ HOLD_ REG. Pin input dari instans FB ini harus berisi area memori yang dialokasikan untuk menyimpan register.
. Modbus TCP 5.0 « » (Discrete inputs), .. , — BOOL' %I. Coils, «» — , , , %Q. Input Registers, « » — %I, %IW. , Modbus I Q. , . - , , , «» . , Modbus TCP , .
, IB QB. QB_Count, QB_Read_Count IB_Count , 65535, / / .
/ , , . , — , ( ) . , « », « » , , .
, 5.0 ( 2.5 S7-1500 4.2 S7-1200) , . — . , «Access to data areas in DBs instead of direct access to MODBUS addresses as of version V5.0» .
, «» .
Add new block
«Data block» ,
« », ,
. () . .
MB_HOLD_REG
-, TCON_IP_v4 TCON_Configured. . , , — Hardware, . , «» Modbus, (, , ).
TCON_IP_v4
InterfaceID , .
ID — . 1 4096. ( MBSERVER, ). . 1.
ConnectionType — . 11 (0B ): TCP. .
ActiveEstablished — false, , .
RemoteAddress — , . IP- , . .
RemotePort — ,
LocalPort — TCP , . - ( RFC) Modbus TCP 502 ( Doom — 666, ). 502 .
:
ID . , network (MOVE) Modbus. Step 7 , . Modbus X1. , .
, , System Constants . , , .
64 "ModbusData".CONNECT_Struct.InterfaceId
CONNECT :
, , , MB_SERVER_DB. , . , , , , «» «» «».
, Online:
7002 , , . STATUS, . , / Modbus-, (, — « » « »).
Modbus- . — . 5 , 10, Modbus , . — : little endian , big endian, , . 5 , , float, «» :
, (, %Q) — «» Modbus, , . . , :
. 64, (8 * 8 + 0 = 64). «» Modbus-:
«» ( 64). «» modbus:
, , Step 7, , ( ):
, . , , . «» ( , ):
( online, ) modbus «» «Illegal data address», . : Restriction of read access to process images as of version V5.0.
, . Step 7 :
. . «MBHOLDREG parameter» :
. , .
№1. — (, ). 8187 : The MBHOLD_REG parameter has an invalid pointer. Data area is too small.
№2. WORD, «» . , , .
Eksperimen # 3. Wilayah Merker. Ini berfungsi, nilai-nilai dimasukkan dari klien, tidak ada kesalahan.
Dari sudut pandang saya, dokumentasinya kurang jelas. Ini harus mengatakan "gunakan blok data akses standar atau memori bit (token)", bukan "akses yang dioptimalkan". Dalam kasus akses yang dioptimalkan, susunan kata tidak masalah. Dan dari sudut pandang saya, cara yang paling nyaman adalah yang dijelaskan dalam contoh aslinya. Percobaan 2, pada prinsipnya, juga bisa diterapkan (dan ada penjelasan untuk itu), tetapi dari sudut pandang saya itu tidak nyaman untuk bekerja.
Lain kali kita akan menangani klien Modbus TCP.