Adaptor RTU protokol Modbus - AWS IoT Greengrass

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Adaptor RTU protokol Modbus

Komponen adaptor RTU protokol Modbus (aws.greengrass.Modbus) polling informasi dari perangkat RTU Modbus lokal.

Untuk meminta informasi dari RTU perangkat Modbus lokal dengan komponen ini, publikasikan pesan ke topik tempat komponen ini berlangganan. Dalam pesan, tentukan RTU permintaan Modbus untuk dikirim ke perangkat. Kemudian, komponen ini menerbitkan respons yang berisi hasil permintaan ModbusRTU.

catatan

Komponen ini menyediakan fungsionalitas yang mirip dengan konektor adaptor RTU protokol Modbus di AWS IoT Greengrass V1. Untuk informasi selengkapnya, lihat Konektor adaptor RTU protokol Modbus di Panduan Pengembang AWS IoT Greengrass V1.

Versi

Komponen ini memiliki versi berikut:

  • 2.1.x

  • 2.0.x

Tipe

Komponen ini adalah komponen Lambda () aws.greengrass.lambda. Inti Greengrass menjalankan fungsi Lambda komponen ini menggunakan komponen peluncur Lambda.

Untuk informasi selengkapnya, lihat Jenis komponen.

Sistem operasi

Komponen ini hanya dapat diinstal pada perangkat inti Linux.

Persyaratan

Komponen ini memiliki persyaratan sebagai berikut:

  • Perangkat inti Anda harus memenuhi persyaratan untuk menjalankan fungsi Lambda. Jika Anda ingin perangkat inti untuk menjalankan fungsi Lambda kontainer, perangkat harus memenuhi persyaratan untuk melakukannya. Untuk informasi selengkapnya, lihat Persyaratan fungsi Lambda.

  • Python versi 3.7 diinstal pada perangkat inti dan ditambahkan ke variabel lingkungan. PATH

  • Koneksi fisik antara perangkat AWS IoT Greengrass inti dan perangkat Modbus. Perangkat inti harus terhubung secara fisik ke RTU jaringan Modbus melalui port serial, seperti USB port.

  • Untuk menerima data keluaran dari komponen ini, Anda harus menggabungkan pemutakhiran konfigurasi berikut untuk komponen router langganan lama (aws.greengrass.LegacySubscriptionRouter) saat menerapkan komponen ini. Konfigurasi ini menentukan topik di mana komponen ini menerbitkan tanggapan.

    Legacy subscription router v2.1.x
    { "subscriptions": { "aws-greengrass-modbus": { "id": "aws-greengrass-modbus", "source": "component:aws.greengrass.Modbus", "subject": "modbus/adapter/response", "target": "cloud" } } }
    Legacy subscription router v2.0.x
    { "subscriptions": { "aws-greengrass-modbus": { "id": "aws-greengrass-modbus", "source": "arn:aws:lambda:region:aws:function:aws-greengrass-modbus:version", "subject": "modbus/adapter/response", "target": "cloud" } } }
    • Ganti region dengan Wilayah AWS yang Anda gunakan.

    • Ganti version dengan versi fungsi Lambda yang dijalankan komponen ini. Untuk menemukan versi fungsi Lambda, Anda harus melihat resep untuk versi komponen ini yang ingin Anda deploy. Buka halaman detail komponen ini di konsol AWS IoT Greengrass tersebut, dan cari pasangan nilai kunci fungsi Lambda. Pasangan kunci-nilai ini berisi nama dan versi fungsi Lambda.

    penting

    Anda harus memperbarui versi fungsi Lambda pada router langganan warisan setiap kali Anda men-deploy komponen ini. Hal ini memastikan bahwa Anda menggunakan versi fungsi Lambda yang benar untuk versi komponen yang Anda deploy.

    Untuk informasi selengkapnya, lihat Buat deployment.

  • Adaptor RTU protokol Modbus- didukung untuk berjalan di file. VPC

Dependensi

Saat Anda menerapkan komponen, gunakan AWS IoT Greengrass juga versi dependensinya yang kompatibel. Ini berarti bahwa Anda harus memenuhi persyaratan untuk komponen dan semua dependensinya untuk berhasil men-deploy komponen. Bagian ini berisi daftar dependensi untuk versi yang dirilis dari komponen ini dan kendala versi semantik yang menentukan versi komponen untuk setiap dependensi. Anda juga dapat melihat dependensi untuk setiap versi komponen di konsol AWS IoT Greengrass tersebut. Pada halaman detail komponen, cari daftar Dependensi.

2.1.9

Tabel berikut mencantumkan dependensi untuk versi 2.1.9 dari komponen ini.

Dependensi Versi yang kompatibel Jenis dependensi
Inti Greengrass >=2.0.0 <2.14.0 Keras
Peluncur Lambda ^2.0.0 Keras
Runtime Lambda ^2.0.0 Lunak
Layanan pertukaran Token ^2.0.0 Keras
2.1.8

Tabel berikut mencantumkan dependensi untuk versi 2.1.8 komponen ini.

Dependensi Versi yang kompatibel Jenis dependensi
Inti Greengrass >=2.0.0 <2.13.0 Keras
Peluncur Lambda ^2.0.0 Keras
Runtime Lambda ^2.0.0 Lunak
Layanan pertukaran Token ^2.0.0 Keras
2.1.7

Tabel berikut mencantumkan dependensi untuk versi 2.1.7 dari komponen ini.

Dependensi Versi yang kompatibel Jenis dependensi
Inti Greengrass >=2.0.0 <2.12.0 Keras
Peluncur Lambda ^2.0.0 Keras
Runtime Lambda ^2.0.0 Lunak
Layanan pertukaran Token ^2.0.0 Keras
2.1.6

Tabel berikut mencantumkan dependensi untuk versi 2.1.6 komponen ini.

Dependensi Versi yang kompatibel Jenis dependensi
Inti Greengrass >=2.0.0 <2.11.0 Keras
Peluncur Lambda ^2.0.0 Keras
Runtime Lambda ^2.0.0 Lunak
Layanan pertukaran Token ^2.0.0 Keras
2.1.4 and 2.1.5

Tabel berikut mencantumkan dependensi untuk versi 2.1.4 dan 2.1.5 dari komponen ini.

Dependensi Versi yang kompatibel Jenis dependensi
Inti Greengrass >=2.0.0 <2.10.0 Keras
Peluncur Lambda ^2.0.0 Keras
Runtime Lambda ^2.0.0 Lunak
Layanan pertukaran Token ^2.0.0 Keras
2.1.3

Tabel berikut mencantumkan dependensi untuk versi 2.1.3 komponen ini.

Dependensi Versi yang kompatibel Jenis dependensi
Inti Greengrass >=2.0.0 <2.9.0 Keras
Peluncur Lambda ^2.0.0 Keras
Runtime Lambda ^2.0.0 Lunak
Layanan pertukaran Token ^2.0.0 Keras
2.1.2

Tabel berikut mencantumkan dependensi untuk versi 2.1.2 komponen ini.

Dependensi Versi yang kompatibel Jenis dependensi
Inti Greengrass >=2.0.0 <2.8.0 Keras
Peluncur Lambda ^2.0.0 Keras
Runtime Lambda ^2.0.0 Lunak
Layanan pertukaran Token ^2.0.0 Keras
2.1.1

Tabel berikut mencantumkan dependensi untuk versi 2.1.1 komponen ini.

Dependensi Versi yang kompatibel Jenis dependensi
Inti Greengrass >=2.0.0 <2.7.0 Keras
Peluncur Lambda ^2.0.0 Keras
Runtime Lambda ^2.0.0 Lunak
Layanan pertukaran Token ^2.0.0 Keras
2.0.8 and 2.1.0

Tabel berikut mencantumkan dependensi untuk versi 2.0.8 dan 2.1.0 dari komponen ini.

Dependensi Versi yang kompatibel Jenis dependensi
Inti Greengrass >=2.0.0 <2.6.0 Keras
Peluncur Lambda ^2.0.0 Keras
Runtime Lambda ^2.0.0 Lunak
Layanan pertukaran Token ^2.0.0 Keras
2.0.7

Tabel berikut mencantumkan dependensi untuk versi 2.0.7 komponen ini.

Dependensi Versi yang kompatibel Jenis dependensi
Inti Greengrass >=2.0.0 <2.5.0 Keras
Peluncur Lambda ^2.0.0 Keras
Runtime Lambda ^2.0.0 Lunak
Layanan pertukaran Token ^2.0.0 Keras
2.0.6

Tabel berikut mencantumkan dependensi untuk versi 2.0.6 komponen ini.

Dependensi Versi yang kompatibel Jenis dependensi
Inti Greengrass >=2.0.0 <2.4.0 Keras
Peluncur Lambda ^2.0.0 Keras
Runtime Lambda ^2.0.0 Lunak
Layanan pertukaran Token ^2.0.0 Keras
2.0.5

Tabel berikut mencantumkan dependensi untuk versi 2.0.5 komponen ini.

Dependensi Versi yang kompatibel Jenis dependensi
Inti Greengrass >=2.0.0 <2.3.0 Keras
Peluncur Lambda ^2.0.0 Keras
Runtime Lambda ^2.0.0 Lunak
Layanan pertukaran Token ^2.0.0 Keras
2.0.4

Tabel berikut mencantumkan dependensi untuk versi 2.0.4 komponen ini.

Dependensi Versi yang kompatibel Jenis dependensi
Inti Greengrass >=2.0.0 <2.2.0 Keras
Peluncur Lambda ^2.0.0 Keras
Runtime Lambda ^2.0.0 Lunak
Layanan pertukaran Token ^2.0.0 Keras
2.0.3

Tabel berikut mencantumkan dependensi untuk versi 2.0.3 komponen ini.

Dependensi Versi yang kompatibel Jenis dependensi
Inti Greengrass >=2.0.3 <2.1.0 Keras
Peluncur Lambda >=1.0.0 Keras
Runtime Lambda >=1.0.0 Lunak
Layanan pertukaran Token >=1.0.0 Keras

Untuk informasi selengkapnya tentang dependensi komponen, lihat referensi resep komponen.

Konfigurasi

Komponen ini menyediakan parameter konfigurasi berikut yang dapat Anda sesuaikan ketika Anda men-deploy komponen.

catatan

Konfigurasi default komponen ini meliputi parameter fungsi Lambda. Kami sarankan Anda mengedit hanya parameter berikut untuk mengonfigurasi komponen ini pada perangkat Anda.

v2.1.x
lambdaParams

Sebuah objek yang berisi parameter untuk fungsi Lambda komponen ini. Objek ini berisi informasi berikut:

EnvironmentVariables

Sebuah objek yang berisi parameter fungsi Lambda ini. Objek ini berisi informasi berikut:

ModbusLocalPort

Jalur absolut ke port serial Modbus fisik pada perangkat inti, seperti/dev/ttyS2.

Untuk menjalankan komponen ini dalam wadah, Anda harus mendefinisikan jalur ini sebagai perangkat sistem (incontainerParams.devices) yang dapat diakses komponen. Komponen berjalan dalam kontainer secara default.

catatan

Komponen ini harus memiliki akses baca/tulis ke perangkat.

ModbusBaudRate

(Opsional) Nilai string yang menentukan baud rate untuk komunikasi serial dengan perangkat TCP Modbus lokal.

Default: 9600

ModbusByteSize

(Opsional) Nilai string yang menentukan ukuran byte dalam komunikasi serial dengan perangkat Modbus TCP lokal. Pilih5,6,7, atau 8 bit.

Default: 8

ModbusParity

(Opsional) Mode paritas yang digunakan untuk memverifikasi integritas data dalam komunikasi serial dengan perangkat Modbus TCP lokal.

  • E— Verifikasi integritas data dengan paritas yang merata.

  • O— Verifikasi integritas data dengan paritas ganjil.

  • N— Jangan memverifikasi integritas data.

Default: N

ModbusStopBits

(Opsional) Nilai string yang menentukan jumlah bit yang menunjukkan akhir byte dalam komunikasi serial dengan perangkat Modbus TCP lokal.

Default: 1

containerMode

(Opsional) Mode kontainerisasi untuk komponen ini. Pilih dari salah satu pilihan berikut:

  • GreengrassContainer— Komponen berjalan di lingkungan runtime yang terisolasi di dalam AWS IoT Greengrass wadah.

    Jika Anda menentukan opsi ini, Anda harus menentukan perangkat sistem (incontainerParams.devices) untuk memberikan akses wadah ke perangkat Modbus.

  • NoContainer – Komponen tersebut tidak berjalan di lingkungan waktu aktif terisolasi.

Default: GreengrassContainer

containerParams

(Opsional) Sebuah objek yang berisi parameter kontainer untuk komponen ini. Komponen menggunakan parameter ini jika Anda menentukan GreengrassContainer untuk containerMode.

Objek ini berisi informasi berikut:

memorySize

(Opsional) Jumlah memori (dalam kilobyte) yang akan dialokasikan ke komponen.

Defaultnya 512 MB (525.312 KB).

devices

(Opsional) Sebuah objek yang menentukan perangkat sistem yang dapat diakses oleh komponen dalam kontainer.

penting

Untuk menjalankan komponen ini dalam sebuah kontainer, Anda harus menentukan perangkat sistem yang Anda konfigurasi di variabel lingkungan ModbusLocalPort.

Objek ini berisi informasi berikut:

0 - Ini adalah indeks himpunan sebagai string.

Objek yang berisi informasi berikut:

path

Jalur ke perangkat sistem pada perangkat inti. Ini harus memiliki nilai yang sama dengan nilai yang Anda konfigurasi untuk ModbusLocalPort.

permission

(Opsional) Izin untuk mengakses perangkat sistem dari kontainer. Nilai ini harus rw, yang menentukan bahwa komponen memiliki akses baca/tulis ke perangkat sistem.

Default: rw

addGroupOwner

(Opsional) Apakah akan menambahkan grup sistem atau tidak yang akan menjalankan komponen sebagai pemilik perangkat sistem.

Default: true

pubsubTopics

(Opsional) Sebuah objek yang berisi topik di mana komponen berlangganan untuk menerima pesan. Anda dapat menentukan setiap topik dan apakah komponen berlangganan MQTT topik dari AWS IoT Core atau topik penerbitan/langganan lokal.

Objek ini berisi informasi berikut:

0 - Ini adalah indeks himpunan sebagai string.

Objek yang berisi informasi berikut:

type

(Opsional) Jenis olahpesan publikasikan/berlangganan yang digunakan oleh komponen ini untuk berlangganan pesan. Pilih dari salah satu pilihan berikut:

  • PUB_SUB – Berlangganan ke pesan terbit/berlangganan lokal. Jika Anda memilih opsi ini, topik tidak dapat berisi MQTT wildcard. Untuk informasi lebih lanjut tentang cara mengirim pesan dari komponen kustom ketika Anda menentukan opsi ini, lihat Pesan lokal publikasi/berlangganan.

  • IOT_CORE— Berlangganan AWS IoT Core MQTT pesan. Jika Anda memilih opsi ini, topik dapat berisi MQTT wildcard. Untuk informasi lebih lanjut tentang cara mengirim pesan dari komponen kustom ketika Anda menentukan opsi ini, lihat Terbitkan/berlangganan pesan AWS IoT Core MQTT.

Default: PUB_SUB

topic

(Opsional) Topik yang menjadi langganan komponen untuk menerima pesan. Jika Anda menentukan IotCore untuktype, Anda dapat menggunakan MQTT wildcard (+dan#) dalam topik ini.

contoh Contoh: Pembaruan gabungan konfigurasi (mode kontainer)
{ "lambdaExecutionParameters": { "EnvironmentVariables": { "ModbusLocalPort": "/dev/ttyS2" } }, "containerMode": "GreengrassContainer", "containerParams": { "devices": { "0": { "path": "/dev/ttyS2", "permission": "rw", "addGroupOwner": true } } } }
contoh Contoh: Pembaruan gabungan konfigurasi (tidak ada mode kontainer)
{ "lambdaExecutionParameters": { "EnvironmentVariables": { "ModbusLocalPort": "/dev/ttyS2" } }, "containerMode": "NoContainer" }
v2.0.x
lambdaParams

Sebuah objek yang berisi parameter untuk fungsi Lambda komponen ini. Objek ini berisi informasi berikut:

EnvironmentVariables

Sebuah objek yang berisi parameter fungsi Lambda ini. Objek ini berisi informasi berikut:

ModbusLocalPort

Jalur absolut ke port serial Modbus fisik pada perangkat inti, seperti/dev/ttyS2.

Untuk menjalankan komponen ini dalam wadah, Anda harus mendefinisikan jalur ini sebagai perangkat sistem (incontainerParams.devices) yang dapat diakses komponen. Komponen berjalan dalam kontainer secara default.

catatan

Komponen ini harus memiliki akses baca/tulis ke perangkat.

containerMode

(Opsional) Mode kontainerisasi untuk komponen ini. Pilih dari salah satu pilihan berikut:

  • GreengrassContainer— Komponen berjalan di lingkungan runtime yang terisolasi di dalam AWS IoT Greengrass wadah.

    Jika Anda menentukan opsi ini, Anda harus menentukan perangkat sistem (incontainerParams.devices) untuk memberikan akses wadah ke perangkat Modbus.

  • NoContainer – Komponen tersebut tidak berjalan di lingkungan waktu aktif terisolasi.

Default: GreengrassContainer

containerParams

(Opsional) Sebuah objek yang berisi parameter kontainer untuk komponen ini. Komponen menggunakan parameter ini jika Anda menentukan GreengrassContainer untuk containerMode.

Objek ini berisi informasi berikut:

memorySize

(Opsional) Jumlah memori (dalam kilobyte) yang akan dialokasikan ke komponen.

Defaultnya 512 MB (525.312 KB).

devices

(Opsional) Sebuah objek yang menentukan perangkat sistem yang dapat diakses oleh komponen dalam kontainer.

penting

Untuk menjalankan komponen ini dalam sebuah kontainer, Anda harus menentukan perangkat sistem yang Anda konfigurasi di variabel lingkungan ModbusLocalPort.

Objek ini berisi informasi berikut:

0 - Ini adalah indeks himpunan sebagai string.

Objek yang berisi informasi berikut:

path

Jalur ke perangkat sistem pada perangkat inti. Ini harus memiliki nilai yang sama dengan nilai yang Anda konfigurasi untuk ModbusLocalPort.

permission

(Opsional) Izin untuk mengakses perangkat sistem dari kontainer. Nilai ini harus rw, yang menentukan bahwa komponen memiliki akses baca/tulis ke perangkat sistem.

Default: rw

addGroupOwner

(Opsional) Apakah akan menambahkan grup sistem atau tidak yang akan menjalankan komponen sebagai pemilik perangkat sistem.

Default: true

pubsubTopics

(Opsional) Sebuah objek yang berisi topik di mana komponen berlangganan untuk menerima pesan. Anda dapat menentukan setiap topik dan apakah komponen berlangganan MQTT topik dari AWS IoT Core atau topik penerbitan/langganan lokal.

Objek ini berisi informasi berikut:

0 - Ini adalah indeks himpunan sebagai string.

Objek yang berisi informasi berikut:

type

(Opsional) Jenis olahpesan publikasikan/berlangganan yang digunakan oleh komponen ini untuk berlangganan pesan. Pilih dari salah satu pilihan berikut:

  • PUB_SUB – Berlangganan ke pesan terbit/berlangganan lokal. Jika Anda memilih opsi ini, topik tidak dapat berisi MQTT wildcard. Untuk informasi lebih lanjut tentang cara mengirim pesan dari komponen kustom ketika Anda menentukan opsi ini, lihat Pesan lokal publikasi/berlangganan.

  • IOT_CORE— Berlangganan AWS IoT Core MQTT pesan. Jika Anda memilih opsi ini, topik dapat berisi MQTT wildcard. Untuk informasi lebih lanjut tentang cara mengirim pesan dari komponen kustom ketika Anda menentukan opsi ini, lihat Terbitkan/berlangganan pesan AWS IoT Core MQTT.

Default: PUB_SUB

topic

(Opsional) Topik yang menjadi langganan komponen untuk menerima pesan. Jika Anda menentukan IotCore untuktype, Anda dapat menggunakan MQTT wildcard (+dan#) dalam topik ini.

contoh Contoh: Pembaruan gabungan konfigurasi (mode kontainer)
{ "lambdaExecutionParameters": { "EnvironmentVariables": { "ModbusLocalPort": "/dev/ttyS2" } }, "containerMode": "GreengrassContainer", "containerParams": { "devices": { "0": { "path": "/dev/ttyS2", "permission": "rw", "addGroupOwner": true } } } }
contoh Contoh: Pembaruan gabungan konfigurasi (tidak ada mode kontainer)
{ "lambdaExecutionParameters": { "EnvironmentVariables": { "ModbusLocalPort": "/dev/ttyS2" } }, "containerMode": "NoContainer" }

Data input

Komponen ini menerima parameter RTU permintaan Modbus pada topik berikut dan mengirimkan RTU permintaan Modbus ke perangkat. Secara default, komponen ini berlangganan topik publikasi/berlangganan lokal. Untuk informasi lebih lanjut tentang cara mempublikasikan pesan ke komponen ini dari komponen kustom Anda, lihat Pesan lokal publikasi/berlangganan.

Topik default (publish/subscribe lokal): modbus/adapter/request

Pesan menerima properti berikut. Pesan input harus dalam JSON format.

request

Parameter untuk RTU permintaan Modbus untuk dikirim.

Bentuk pesan permintaan tergantung pada jenis RTU permintaan Modbus yang diwakilinya. Properti berikut diperlukan untuk semua permintaan.

Jenis: object yang berisi informasi berikut:

operation

Nama operasi yang akan dijalankan. Misalnya, tentukan ReadCoilsRequest untuk membaca kumparan pada perangkat ModbusRTU. Untuk informasi lebih lanjut tentang operasi tulis, lihat RTUPermintaan dan tanggapan Modbus.

Tipe: string

device

Perangkat target permintaan.

Nilai ini harus berupa bilangan bulat antara 0 dan 247.

Tipe: integer

Parameter lain yang akan tercakup dalam permintaan tergantung pada operasi. Komponen ini menangani pemeriksaan redundansi siklik (CRC) untuk memverifikasi permintaan data untuk Anda.

catatan

Jika permintaan Anda mencakup properti address, Anda harus menentukan nilainya sebagai bilangan bulat. Misalnya, "address": 1.

id

ID acak untuk permintaan. Gunakan properti ini untuk memetakan permintaan inpun untuk respons output. Ketika Anda menentukan properti ini, komponen menetapkan properti id di objek respons untuk nilai ini.

Tipe: string

contoh Contoh input: Baca permintaan kumparan
{ "request": { "operation": "ReadCoilsRequest", "device": 1, "address": 1, "count": 1 }, "id": "MyRequest" }

Data output

Komponen ini menerbitkan tanggapan sebagai data keluaran pada MQTT topik berikut secara default. Anda harus menentukan topik ini sebagai subject dalam konfigurasi untuk komponen router langganan warisan. Untuk informasi lebih lanjut tentang cara mempublikasikan pesan ke komponen ini dari komponen kustom Anda, lihat Terbitkan/berlangganan pesan AWS IoT Core MQTT.

Topik default (AWS IoT Core MQTT): modbus/adapter/response

Bentuk pesan respon tergantung pada operasi permintaan dan status respon. Sebagai contoh, lihat Contoh permintaan dan respons.

Setiap respons mencakup properti berikut:

response

Respons dari RTU perangkat Modbus.

Jenis: object yang berisi informasi berikut:

status

Status HTTP dari permintaan. Nilai bisa jadi salah satu dari yang berikut:

  • Success— Permintaan itu valid, komponen mengirim permintaan ke jaringan Modbus, dan RTU jaringan Modbus RTU mengembalikan respons.

  • Exception— Permintaan itu valid, komponen mengirim permintaan ke jaringan Modbus, dan RTU jaringan Modbus RTU mengembalikan pengecualian. Untuk informasi selengkapnya, lihat Status respons: Pengecualian.

  • No Response— Permintaan tidak valid, dan komponen menangkap kesalahan sebelum mengirim permintaan ke jaringan RTU Modbus. Untuk informasi selengkapnya, lihat Status respon: Tidak ada respon.

operation

Operasi yang diminta komponen.

device

Perangkat tempat komponen mengirim permintaan.

payload

Respons dari RTU perangkat Modbus. Jika status adalah No Response, objek ini hanya akan berisi properti error dengan deskripsi kesalahan (misalnya, [Input/Output] No Response received from the remote unit).

id

ID dari permintaan, yang dapat Anda gunakan untuk mengidentifikasi respons yang sesuai dengan yang diminta.

catatan

Sebuah respons untuk operasi write hanyalah pengulangan dari permintaan. Meskipun tanggapan write tidak mencakup informasi yang berarti, ia merupakan praktik yang baik untuk memeriksa status respons untuk melihat apakah permintaan berhasil atau gagal.

contoh Contoh output: Berhasil
{ "response" : { "status" : "success", "device": 1, "operation": "ReadCoilsRequest", "payload": { "function_code": 1, "bits": [1] } }, "id" : "MyRequest" }
contoh Contoh output: Gagal
{ "response" : { "status" : "fail", "error_message": "Internal Error", "error": "Exception", "device": 1, "operation": "ReadCoilsRequest", "payload": { "function_code": 129, "exception_code": 2 } }, "id" : "MyRequest" }

Untuk contoh lainnya, lihat Contoh permintaan dan respons.

RTUPermintaan dan tanggapan Modbus

Konektor ini menerima parameter RTU permintaan Modbus sebagai data input dan menerbitkan tanggapan sebagai data keluaran.

Operasi umum berikut ini didukung.

Nama operasi dalam permintaan Kode fungsi dalam respons
ReadCoilsRequest 01
ReadDiscreteInputsRequest 02
ReadHoldingRegistersRequest 03
ReadInputRegistersRequest 04
WriteSingleCoilRequest 05
WriteSingleRegisterRequest 06
WriteMultipleCoilsRequest 15
WriteMultipleRegistersRequest 16
MaskWriteRegisterRequest 22
ReadWriteMultipleRegistersRequest 23

Berikut ini adalah contoh permintaan dan tanggapan untuk operasi yang didukung.

Baca kumparan

Contoh permintaan:

{ "request": { "operation": "ReadCoilsRequest", "device": 1, "address": 1, "count": 1 }, "id": "TestRequest" }

Contoh respons:

{ "response": { "status": "success", "device": 1, "operation": "ReadCoilsRequest", "payload": { "function_code": 1, "bits": [1] } }, "id" : "TestRequest" }
Baca input diskrit

Contoh permintaan:

{ "request": { "operation": "ReadDiscreteInputsRequest", "device": 1, "address": 1, "count": 1 }, "id": "TestRequest" }

Contoh respons:

{ "response": { "status": "success", "device": 1, "operation": "ReadDiscreteInputsRequest", "payload": { "function_code": 2, "bits": [1] } }, "id" : "TestRequest" }
Baca register yang memiliki

Contoh permintaan:

{ "request": { "operation": "ReadHoldingRegistersRequest", "device": 1, "address": 1, "count": 1 }, "id": "TestRequest" }

Contoh respons:

{ "response": { "status": "success", "device": 1, "operation": "ReadHoldingRegistersRequest", "payload": { "function_code": 3, "registers": [20,30] } }, "id" : "TestRequest" }
Baca register input

Contoh permintaan:

{ "request": { "operation": "ReadInputRegistersRequest", "device": 1, "address": 1, "count": 1 }, "id": "TestRequest" }
Tulis kumparan tunggal

Contoh permintaan:

{ "request": { "operation": "WriteSingleCoilRequest", "device": 1, "address": 1, "value": 1 }, "id": "TestRequest" }

Contoh respons:

{ "response": { "status": "success", "device": 1, "operation": "WriteSingleCoilRequest", "payload": { "function_code": 5, "address": 1, "value": true } }, "id" : "TestRequest" }
Tulis register tunggal

Contoh permintaan:

{ "request": { "operation": "WriteSingleRegisterRequest", "device": 1, "address": 1, "value": 1 }, "id": "TestRequest" }
Tulis beberapa kumparan

Contoh permintaan:

{ "request": { "operation": "WriteMultipleCoilsRequest", "device": 1, "address": 1, "values": [1,0,0,1] }, "id": "TestRequest" }

Contoh respons:

{ "response": { "status": "success", "device": 1, "operation": "WriteMultipleCoilsRequest", "payload": { "function_code": 15, "address": 1, "count": 4 } }, "id" : "TestRequest" }
Tulis beberapa register

Contoh permintaan:

{ "request": { "operation": "WriteMultipleRegistersRequest", "device": 1, "address": 1, "values": [20,30,10] }, "id": "TestRequest" }

Contoh respons:

{ "response": { "status": "success", "device": 1, "operation": "WriteMultipleRegistersRequest", "payload": { "function_code": 23, "address": 1, "count": 3 } }, "id" : "TestRequest" }
Register mask write

Contoh permintaan:

{ "request": { "operation": "MaskWriteRegisterRequest", "device": 1, "address": 1, "and_mask": 175, "or_mask": 1 }, "id": "TestRequest" }

Contoh respons:

{ "response": { "status": "success", "device": 1, "operation": "MaskWriteRegisterRequest", "payload": { "function_code": 22, "and_mask": 0, "or_mask": 8 } }, "id" : "TestRequest" }
Baca tulis beberapa register

Contoh permintaan:

{ "request": { "operation": "ReadWriteMultipleRegistersRequest", "device": 1, "read_address": 1, "read_count": 2, "write_address": 3, "write_registers": [20,30,40] }, "id": "TestRequest" }

Contoh respons:

{ "response": { "status": "success", "device": 1, "operation": "ReadWriteMultipleRegistersRequest", "payload": { "function_code": 23, "registers": [10,20,10,20] } }, "id" : "TestRequest" }
catatan

Tanggapan meliputi register yang dibaca komponen.

Pengecualian dapat terjadi bila format permintaan valid, tetapi permintaan tersebut tidak berhasil diselesaikan. Dalam kasus ini, respons berisi informasi berikut:

  • status ditetapkan ke Exception.

  • function_code sama dengan kode fungsi permintaan + 128.

  • exception_code berisi kode pengecualian. Untuk informasi selengkapnya, lihat kode pengecualian Modbus.

Contoh:

{ "response": { "status": "fail", "error_message": "Internal Error", "error": "Exception", "device": 1, "operation": "ReadCoilsRequest", "payload": { "function_code": 129, "exception_code": 2 } }, "id": "TestRequest" }

Konektor ini melakukan pemeriksaan validasi pada permintaan Modbus. Sebagai contoh, ia memeriksa format yang tidak sah dan kolom yang hilang. Jika validasi gagal, konektor tidak akan mengirim permintaan. Sebaliknya, ia mengembalikan respon yang berisi informasi berikut:

  • status ditetapkan ke No Response.

  • error berisi alasan kesalahan.

  • error_message berisi pesan kesalahan.

Contoh:

{ "response": { "status": "fail", "error_message": "Invalid address field. Expected <type 'int'>, got <type 'str'>", "error": "No Response", "device": 1, "operation": "ReadCoilsRequest", "payload": { "error": "Invalid address field. Expected Expected <type 'int'>, got <type 'str'>" } }, "id": "TestRequest" }

Jika permintaan menargetkan perangkat yang tidak ada atau jika RTU jaringan Modbus tidak berfungsi, Anda mungkin mendapatkanModbusIOException, yang menggunakan format No Response.

{ "response": { "status": "fail", "error_message": "[Input/Output] No Response received from the remote unit", "error": "No Response", "device": 1, "operation": "ReadCoilsRequest", "payload": { "error": "[Input/Output] No Response received from the remote unit" } }, "id": "TestRequest" }

File log lokal

Komponen ini menggunakan file log berikut.

/greengrass/v2/logs/aws.greengrass.Modbus.log
Untuk melihat log komponen ini
  • Jalankan perintah berikut pada perangkat inti untuk melihat file log komponen ini secara real time. Ganti /greengrass/v2 dengan jalur ke folder AWS IoT Greengrass root.

    sudo tail -f /greengrass/v2/logs/aws.greengrass.Modbus.log

Lisensi

Komponen ini mencakup perangkat lunak/lisensi pihak ketiga berikut:

Komponen ini dirilis menurut Perjanjian Lisensi Perangkat Lunak Greengrass Core.

Changelog

Tabel berikut menjelaskan perubahan dalam setiap versi komponen.

Versi

Perubahan

2.1.9

Versi diperbarui untuk Greengrass nucleus versi 2.13.0 rilis.

2.1.8

Versi diperbarui untuk Greengrass nucleus versi 2.12.0 rilis.

2.1.7

Versi diperbarui untuk Greengrass nucleus versi 2.11.0 rilis.

2.1.6

Versi diperbarui untuk Greengrass nucleus versi 2.10.0 rilis.

2.1.5

Perbaikan bug dan peningkatan
  • Memperbaiki masalah dengan ReadDiscreteInput operasi.

2.1.4

Versi diperbarui untuk Greengrass nucleus versi 2.9.0 rilis.

2.1.3

Versi diperbarui untuk Greengrass nucleus versi 2.8.0 rilis.

2.1.2

Versi diperbarui untuk Greengrass nucleus versi 2.7.0 rilis.

2.1.1

Versi diperbarui untuk Greengrass nucleus versi 2.6.0 rilis.

2.1.0

Fitur baru
  • MenambahkanModbusBaudRate,, ModbusByteSizeModbusParity, dan ModbusStopBits opsi yang dapat Anda tentukan untuk mengonfigurasi komunikasi serial dengan RTU perangkat Modbus.

2.0.8

Versi diperbarui untuk Greengrass nucleus versi 2.5.0 rilis.

2.0.7

Versi diperbarui untuk Greengrass nucleus versi 2.4.0 rilis.

2.0.6

Versi yang diperbarui untuk rilis inti Greengrass versi 2.3.0.

2.0.5

Versi yang diperbarui untuk rilis inti Greengrass versi 2.2.0.

2.0.4

Versi yang diperbarui untuk rilis inti Greengrass versi 2.1.0.

2.0.3

Versi awal.