Anda di halaman 1dari 20
& Advancing Plasma-Based Technologies A /Avant-Garde des Technologies Plasmas Panduan Pengguna Library Modbus Master Rev. 1.3 Daftar Isi 1 Pendahuluan... 2 Kebutuhan System.... 3 Installasi... 4 Contoh-contoh, 5 Dukungan... 6 — Modbus Comm Tester... 7 Modbus Palette 8 — Sesi Modbus... 9 Transaction Functions ..... 10 MB VISALocks. 11 ErrorCodes.... 12References.... Plasmionique Inc. | Modbus Master Library | Introduction 1 Pendahuluan Library Modbus Master Plasmionique adalah sebuah paket add-on open source untuk LABVIEW. Dia ‘mengimplementasikan protocol aplikasi Modbus spesifikasi V1.1b3 untuk komunikasi dengan perangkat Modbus (slave) mlalui jaringan Serial Asinkronous atau TCP/IP. Dia telah dikembangkan untuk menggantikan Modbus NI's V12.1 dan untuk menyediakan sebuah alternative open source untuk Modbus API yang dikeluarkan oleh Labs NI Dokumen ini menjelaskan kebutuhan sistem, procedure installasi dan penggunaan dari API. 2 Kebutuhan System Software: National Instruments LabVIEW 2012 (atau terbaru) National Instruments VISA 5.4 (atau terbaru), © JKIVI Package Manager 2019 3 Installasi Download versi terbaru Librari dari: https://avag.org/files/file/286-plasmionique-modbus-master/ Install File ~ vip” menggunattan VI Package Manager 4 Contoh-contoh Contoh-contoh disertakan dalam "\examples\Plasmionique\MB Master\" ‘+ MB_Master Comm Tester.vi: Mendemontrasikan penggunaan dari API untuk membuka/ menutup koneksi dan komunikasi dengan sebuah Perangkat Modbus slave. ‘+ MB_Master Multiple Sessions. bersamaan. Mendemontrasikan penggunaan API untuk membuka sesi Modbus ‘+ MB_Master Simple Serial.vi: Mendemonstrasikan polling register input tunggal melalui jalur serial. Contoh-contoh ini juga dapat ditemukan melalui Example Finder di dalam LabVIEW. 5 Dukungan Jika pengguna mempunyai beberapa permasalahan dengan library ini atau menginginkan untuk menyarankan perubahan hubungi porter melalui PM pada lavag.org atau memposting komentar pada forum dukungan: https:slavag.org/topic/ asmionique-modbus-master/ ‘Source code pengembangan tersedia pada Github: https:/ithub.com/rfporter/Modbus-Master Plasmionique Ine. | Modbus Master Library | Modbus Gomm Tester Ea 6 Modbus Comm Tester Disertakan dengan library ini sebuah tool untuk menguji komunikasi Modbus dengan perangkat pengguna, memperbolehkan pengguna untuk menentukan parameter komunikasi dan alamat data yang benar sebelum menuiliskan beberapa kode. Modbus Comm Tester dapat dijalankan dari menu “Tools > Plasmionique” pada lingkungan pengembangan LabVIEW. 6.1 Penggunaan Jalankan VI Masuk ke Connection Type (Serial atau TCP) kemudian isi connection parameters. Untuk Mulai Sesi Modbus, Klik tombol Open Port. Untuk menutup Sesi Modbus, Klik Tombol Close Port. Indikator LED Hijau akan menyala ketika Sesi terbuka. Data starting addresses adalah masukan dalam notasi hexadecimal. Jika notasi decimal yang disukai, ik radix selector (x) dan rubah ke d untuk notasi desimal Perhatikan bahwa input registers, discrete inputs, holding registers, dan coils dapat dipolling pada periode polling yang ditentukan dengan mencek kotak “Poll” mereka. Plasmionique Inc. | Modbus Master Library | Modbus Comm Tester 6.2 Status Communication - Last TX: Modbus message terakhir, dalam notasi hexadecimal, dikirim dari master. ae frm @ ~ Last RX: Modbus message terakhir, dalam format a hexadecimal, diterima oleh master. aa = Last RX Time: Waktu yang Message terakhir Ea — diterima oleh master ‘aoatee [ew] oan ~ dt: Durasi, dalam milliseconds, dari Modbusaction atau gga wa transaksi terakhir. in Frome fetes - Last Error Time: Waktu yang terjadi error terakhir, - Last Error Status: Menampilkan kode error dan sumber dari error terakhir. Klik kanan dan pilih explain error untuk memperoleh informasi mengenai error. 7 Modbus Palette ‘Modbus Master API ditempatkan dalam fungsi pallete LABVIEW dibawah “Data Communication > Modbus Master” Fe oF ‘Open Serials... Open TOP Se. = to! ae Read Cols Read Discet... Fs Write Single Coil Ba ‘Write Mutiple... rite Multple... Read‘iriteH.,.. Reed Device .. Baris atas terdiri dari fungsi-fungsi untuk mengatur sesi Modbus. Property node dapat digunakan untuk mengakses data sesi Fungsi-fungsi Modbus transaction terdaftar pada baris selanjutnya. Masing-masing mengimplementasikan sebuah function code tertent dari Modbus Application Protocol Spesification. Lihat: ( MODBUS Application Protocol Spesification V1.1b3). mereka encapsulasi pengiriman permintaan ke slave, menunggu untuk sebuah response, dan memvalidasi dan menginterpretasi response. Exception codes dan timeouts ditempatkan diterminal keluaran errornya, Function codes yang didukung saat ini adalah ‘+ 0x01 - Read Coils ‘+ 0x02 - Read Discrete Inputs 0x03 - Read Holding Registers Plasmionique ine. | Modbus Master Library | Transaction Functions © 0x04 - Read Input Registers © 0x05 - Write Single Coil * 0x06 - Write Single Register © 0x07 - Read Exception Status © OxOF - Write Multiple Coils * 0x10 - Write Multiple Registers © 0x16 - Mask Write Register * 0x17 - Read/Write Multiple Registers 0x2B/0x0E - Read Device Identification 8 ‘ses Modbus Sesi Modbus melacak jenis koneksi, ID Slave dan mengatur bus komunikasi. Sebuah sesi Modbus harus dibuka agar terbentuk koneksi dengan perangkat slave. Dia harusnya ditutup ketika dia tidak lagi diperlukan untuk melepaskan sumber daya sistem. ‘Dua jenis sesi Modbus yang diimplementasikan: ‘* Asynchronous Serial: Modbus melalui jalur serial RS-232, RS-422 atau RS-485. Dapat dikonfigurasi untuk mode ASCII atau RTU. lihat: (MODBUS over Serial Line Specification & Implementation Guide v1.02) * TCP/IP: Modbus melalui jaringan TCP/IP. Lihat: (MODBUS Messaging on TCP/IP Implementation Guide V1.0b) 8.1 Properti Sesi ‘menempatkan property node pada sebuah sesi Modbus wire akan memperlihatkan properties berikut ADU (Read Only): Application Data Unit (mengirim dan menerima) untuk Modbus [= ¥8_Master_§] “200 transaction terakhir. Menggunakan sebuah property node tambahan pada ADU wire _ untuk mengakses data RX/TX dan timestamps ane D ‘+ Session Valid (Read Only): indikasi jika sesi Modbus terbuka dan diinisialisasi dengan baik ‘+ Slave ID (Read/Write): Alamat dati perangkat Slave (1 sampai 247). Sebuah ID Slave Nol ‘menyatakan mode broadcast untuk mengirimkan perintah ke semua slaves pada bus komunikasi. 8.2 Membuka Sesi Modbus Serial ‘Untuk membuka sebuah sesi Modbus Asynchronous Serial, gunakan “Open Serial Session vi" dari functions palette. Plasmionique ine. | Modbus Master Library | Transaction Functions Ha Node (RTU) VISA Resource NB Serial session ser fr acon Erorout Error in (no eror). Inputs: ‘© Mode: pilih salah satu mode ASCII atau RTU. RTU adalah default, ‘+ VISA Resource: Menspesifikasikan port COM yang slave terkoneksinya. ‘© Serial Config: Cluster dari configuration parameters port serial © Baud rate: Baud rate dalam bps. Umumnya nilai-nilai yang disertakan menggunakan 9600, 19200, 38400, 57600 dan 115200 bps. © Stop bits: Jumlah dari stop bits. ‘Jumiah dari Stop Bits | Value 1.0 10 15 15 2.0 20 © Parity: Tipe parity bit (None, Odd, Even, Mark, Space). © Flow control: Type dari flow —control_(None, XON/XOFF, _RTS/CTS, XON/XOFF&RTS/CTS, DTR/DSR, XON/XOFF&DTR/DSR }. © Timeout: Communication timeout dalam ms. Jika perangkat Slave tidak merespons tethadap permintaan dalam periode ini, sebuah error timeout akan dihasilkan. co Retries: Jumlah berapa kali untuk mencoba kembali sebuah Modbus transaction sebelum ‘membatalkan dan melaporkan kesalahan, Slave ID: Alamat dari perangkat slave (1 sampai 247). Sebuah ID Slave Nol menyatakan mode broadcast ‘untuk mengitimkan perintah ke semua slave pada bus komunikasi, Sebagai catatan bahwa ID Slave dapat dirubah selanjutnya menggunakan property node. Outputs: ‘+ MB Serial Session: Asynchronous Serial Modbus Session object. Gunakan Wire ini untuk ‘menjalankan Modbus transactions. 8.2.1 Properties Sesi Serial Menempatkan property node pada Asynchronous Serial Modbus Session wire =eN6_Naster_Seral § ‘memperlihatkan parameters tambahan: Node Rees ‘+ Mode (Read Only): Menyatakan Mode ASCII atau RTU. eral Config VISA Resource © Retries (Read/Write): Jumlah berapa kali untuk mencoba kembali sebuah ‘Modbus transaction sebelum membatalkan dan melaporkan error. Plasmionique Ine. | Modbus Master Library | Transaction Functions Em © Se 1 Config (Read Only): Cluster dati configuration parameters port serial * VISA Resource (Read/Write): Sesi VISA dipesan oleh Sesi Modbus. Ini disediakan jika beberapa konfigurasi tambahan dari port serial dibutubkan setelah sesi dibuka, 8.3 Membuka Sesi Modbus TCP/IP ‘Untuk membuka Sesi Modbus TCPAP, pergunakan “Open TCP Session vi" dari functions palette. MB Master.vlib:-MB. Master_TCPivclass:Open TCP Session.vi Slave ID (255) IP Address MBLICP cession Port (502) erorout Timeout (10000) ferorin (no error) Inputs: © IP Address: IP address atau hostname dari perangkat slave (Modbus server). © Port: Port yang mana perangkat slave dengarkan, Default port adalah 502. ‘+ Timeout: Communication timeout dalam ms untuk digunakan pada TCP read/write functions. ‘© Slave ID: Sama dengan ID Slave Serial. Pengaturan ini bisa jadi dibutuhkan ketika komunikasi dengan slave serial melalui sebuah gateway Modbus. Dengan ID Slave default adalah diatur ke 255. Catatan bahwa ID Slave dapat dirubah kemudian menggunakan property node. Outputs: + MB_TCP Session: TCP/IP Modbus Session object. Gunakan Wire ini untuk menunjukan Modbus transactions. 8.4 Menutup Sesi Modbus ‘Untuk menutup beberapa sesi Modbus, gunakan “Close Session vi" dari functions palette. MB Master.\lib;MB_Hastervclass:Close Session.vi NB session in ntoen Bmw 8.5 Sesi Modbus Bersamaan Sejumlah Sesi Modbus Master independent dapat dibuka dan transactions dapat berjalan bersamaan tanpa kontflik. Sesi tidak idenpendent jika: 4. Multiple sessions berkomunikasi dengan perangkat slave sama. Pada Sesi TCP/IP ini bukan masalah Tiap sesi diberikan sebuah nomor port local unik. Untuk sesi serial, transaction dipaksa untuk berjalan berurutan disebabkan sebuah kunci eksklusif VISA pada port comm (dengan batas waktu 10 detik), Artinya, jika sebuah sesi transaction mengunci port comm selama lebih dari 10 detik transaction yang tertunda dari sesi lainya akan habis waktunya. Plasmionique ine. | Modbus Master Library | Transaction Functions Ea b. Multiple sessions terhubung ke bus komunikasi yang sama. Pada Sesi TCP/IP ini bukan masalah, Tiap sesi diberikan sebuah nomor port local unik. Untuk sesi serial, transaction dipaksa untuk berjalan berurutan disebabkan sebuah kunci eksklusif VISA pada port comm (dengan batas waktu 10 detik). Artinya, jika sebuah sesi transaction mengunci port comm selama lebih dari 10 detik transaction yang tertunda dari sesi lainya akan habis waktunya. c. Session wire bercabang, memungkinkan banyak copies dari sesi untuk berjalan bersamaan. Dalam situasi ini, transaction dari semua copies dipaksa berjalan bersamaan karena sesi khusus kunci mutex. Artinya, jika salah satu sesi menjalankan sebuah transaction, transaction yang tertunda dari sesi lain dipaksa untuk menunggu (tanpa batas) sampai transaction lengkap. Catatan bahwa memanggil “ Sesi Tertutup” pada salah satu copies akan menutup semua copies dari sesi, Permintaan selanjutnya pada sesi wire ini akan memberikan error 403483 “session invalid” Meskipun sesi Modbus saling tergantung membutuhkan beberapa pertimbangan khusus, terdapat situasi dimana ‘mereka sangat berguna, Sebagai contoh, jika kita membutuhkan untuk komunikasi dengan banyak slave terhubung ke bus RS-485 tunggal, kita dapat: a. Membuka sebuah sesi tunggal dan menggunakan property node untuk merubah ID Slave untuk tiap transaction, Ini menghindari sesi yang saling tergantung tetapi tidak menskalakan dengan baik. Komunikasi dengan semua perangkat slave harus diimplementasikan dalam loop akuisisi data yang sama. Ini lebih sulit untuk mengimplementasikan kecepatan polling data berbeda untuk tiap slave. Ini juga ‘menjadi sangat berantakan untuk menangani perangkat dengan tipe data Khusus atau kasus error. a 7 ee rae pr = oO EH) oa al b. Membuka banyak sesi, masing-masing menggunakan “Mode” sama, “Serial Config” dan“ VISA Resource” tetapi ID Slave unik ( ini adalah sebuah contoh dari kasus B diatas). Tiap sesi dapat berjalan dalam loop akuisisi data unik di dalam dirinya sendiri selama waktu transaction 10 detik terpenuhi. Ini adalah solusi yang disukai namun harus hati-hati untuk memastikan bahwa semua sesi dikonfigurasi Plasmionique ine. | Modbus Master Library | Transaction Functions Ew ork —_ one slave 1D ELT peae er og SSE EE sy Paro ae a Hi c. Membuka sebuah sesi tunggal kemudian bercabang sesi wire dan menggunakan property node untuk ‘mengatur ID Slave dari tiap cabang( ini adalah contoh dari kasus C diatas). Tiap sesi cabang dapat ‘menjalankan loop akuisisi data sendiri yang unik. Metode ini menjamin bahwa semua sesi mempunyai konfigurasi sama namun, jika satu sesi tertutup, sesi lainya akan tertutup dengan benar. Tine a Ener Save D [I] NB Master Serial §| seep E}——} Sieve 9 Fungsi -fungsi Transaction Modbus Master API mempunyai satu VI untuk tiap function code dari spesifik: 9.1 Read Coils (MB Master vlib:Read Coils.vi MB session in MB session out starting address Cois ‘quantity error out erorin (no error) Function Code 1: Membaca sejumlah quantity dari coil yang dimulai dari starting address. Plasmionique ine. | Modbus Master Library | Transaction Functions Hw Inputs: ‘© MB Session in: Sesi Modbus dimana untuk menjalankan transaction. ‘Starting address (U16): Alamat dati coil pertama untuk dibaca © Quantity (U16): jumlah coil untuk dibaca. Outputs: ‘+ MB Session out: Sesi Modbus diupdate dengan data transactions ADU. © Coils: Array dari nilai coil (Boolean), Nilai dari coil pertama adalah pada index nol. 9.2 Read Discrete Inputs MB Masterlvlib:Read Discrete Inputs.vi ti sessonin ve sssonoit storngoatss “Pas tc ontty cae erorin no errr) Function Code 2: Membaca sejumlah quantity dari masukan-masukan diskrit dimulai dari starting address. Inputs: ‘© MB Session in: Sesi Modbus dimana untuk menjalankan transaction. ‘© Starting address (U16): Alamat dari input diskrit pertama untuk dibaca, © Quantity (U16): Jumlah dari input diskrit untuk dibaca Outputs: ‘+ MB Session out: Sesi Modbus diupdate dengan data transaction ADU. © Inputs: Array dari nilai-nilai input diskrit (Boolean). Nilai dari input pertama adalah pada index nol 9.3 Read Holding Registers MB Master Ivib:Read Holding Registers.vi MB session in M6 sesgon out starting address, Regstes ‘quantity error out erorin ro errr) Function Code 3: Membaca sejumlah quantity dari holding registers dimulai dari starting address. Inputs: ‘+ MB Session in: Sesi Modbus yang mana untuk menjalankan transaction. ‘Starting address (U16): Alamat dati holding register pertama untuk dibaca, Plasmionique ine. | Modbus Master Library | Transaction Functions Ea © Quantity (U16): Jumlah dari holding registers untuk dibaca. Outputs: ‘+ MB Session out: Sesi Modbus diupdate dengan data transaction’s ADU. ‘+ Registers: Array nilai dari holding register (U16). Nilai dari holding register pertama adalah pada index nol. 9.4 Read Input Registers MB Masterlvlib:Read Input Registers.vi MB session in MB sesson out starting address. Registers quantity ror out erorin {no errr) Function Code 4: Membaca sejumlah quantity dari input registers memulai dari starting address. Inputs: ‘© MB Session in: Sesi Modbus dimana untuk menjalankan transaction. ‘© Starting address (U16): Alamat dari input register pertama untuk dibaca. © Quantity (U16): Jumlah dari input register untuk dibaca. Outputs: ‘+ MB Session out: Sesi Modbus diupdate dengan data transaction’s ADU. ‘© Registers: Array nilai dari input register (U16). Nilai dari input register pertama adalah pada index nol. 9.5 Write Single Coil (MB Master Iviib:Write Single CoiLvi MB session MB sesson out address value error out errorin ro ero) Function Code 5: Menuliskan value ke coil pada address. Inputs: ‘© MB Session in: Sesi Modbus dimana untuk menjalankan transaction. Address (U16): Alamat dari coil. * Value (Boolean): Nilai yang dituliskan ke coil, Outputs: ‘+ MB Session out: Sesi Modbus diupdate dengan data transaction’s ADU Plasmionique Inc. | Modbus Master Library | Transaction Functions Ea MB Master-Ivib\Write Single Register.vi MB session in WB sesson out address error aut errorin Fo ero) Function Code 6: Menuliskan value ke holding register pada address. Inputs: ‘© MB Session in: Sesi Modbus dimana untuk menjalankan transaction. © Address (U16): Alamat dari register. © Value (U16): Nilai untuk dituliskan ke register. Outputs: ‘+ MB Session out: Sesi Modbus diupdate dengan data transaction’s ADU 9.7 Read Exception Status MB Master.ivli:Read Exception Status.vi 118 sessionin 1 ccton out Fea Sous error in (no error) Pal cnet Function Code 7: Membaca status slave exception. Inputs: ‘© MB Session in: Sesi Modbus dimana untuk menjalankan transaction. Outputs: ‘+ MB Session out: Sesi Modbus diupdate dengan data transaction’s ADU ‘+ Exception Status (U8): Nilai dari slave's exception status register. 9.8 Write Multiple Coils MB Masterivib:Write Multiple Cols. vi MB sessionin 6 sesson out starting address == aves AS cerrorin no error) error out Function Code 15: Menulis values coil dimulai pada starting address. Inputs: ‘© MB Session in: Sesi Modbus dimana untuk menjalankan transaction. Plasmionique Inc. | Modbus Master Library | Transaction Functions © Address (U16): Alamat dari coil pertama untuk ditulisi. Values: Array nilai (Boolean) untuk ditulis. Nilai untuk coil pertama adalah pada index nol. Jumlah dari coil-coil untuk ditulisi dinyatakan oleh ukuran dari array. Outputs: ‘+ MB Session out: Sesi Modbus diupdate dengan data transaction’s ADU Plasmionique ine. | Modbus Master Library | Transaction Functions Ea 9.9 Write Multiple Registers (MB Master.ilit:Write Multiple Registers.vi 11 session mn we session out starting address TUF uence out erorin (no erro) Function Code 16: Menuliskan nilai-nilai holding register dimulai pada starting address, Inputs: ‘© MB Session in: Sesi Modbus dimana untuk menjalankan transaction. © Address (U16): Alamat dari register pertama untuk ditulisi © Values: Array nilai-nilai (U16) untuk ditulisi. Nilai untuk register pertama adalah pada index nol. Jumlah dari register untuk ditulisi dinyatakan oleh ukuran dari array. Outputs: ‘+ MB Session out: Sesi Modbus diupdate dengan data transaction’s ADU. 9.10 Mask Write Holding Registers MB Mastervib:Mask Write Holding Register.vi OR mask AND mask MB cession in address error in (ro error) error out Function Code 22: Memodifikasi nilai dari holding register pada address didasarkan pada AND mask dan OR mask, Perangkat slave mengimplementasikan persamaan berikut untuk memodifikasi nila register: Result = (Current Value & And_Mask) | (Or_Mask & !And_Mask) Atur bits ke 0 dalam AND mask untuk menentukan bit yang mana untuk di modifikasi. Gunakan OR mask untuk menspesifikasikan nilai dari bit. Contoh: Register Value: 1100 0001 AND Mask: 1111 1100 OR Mask: 0000 0010 Result 1100 0010 Inputs: ‘+ MB Session in: Sesi Modbus yang mana untuk menjalankan transaction. © Address (U16): Alamat dari register untuk dimodifikasi © AND mask (U16): atur bit-bit dari AND mask ke nol untuk menentukan yang mana bit-bit dari register untuk dimoditfikasi Plasmionique Inc. | Modbus Master Library | Transaction Functions 16 © OR mask (U16): atur bit-bit dari OR mask untuk menentukan nilai dari bit-bit yang dimodifikasi pada register. Outputs: ‘+ MB Session out: Sesi Modbus diupdate dengan data transaction’s ADU 9.11 Read-Write Holding Registers MB Mastervlib:Read-Write Holding Registers.vi write values write starting address MB session in MB session out read starting address read registers read quantity error out error in (na error) Function Code 23: Menuliskan write values ke holding registers dimulai pada write starting address kemudian membaca jumlah read quantity dari holding registers dimulai pada read starting address. Inputs: © MB Session in: Modbus session on which to perform the transaction. ‘+ Read starting address (U16): Address of the first register to read. ‘+ Read quantity (U16): Number of registers to read. + Write starting address (U16): Address of the first register to write ‘+ Values: Array of values (U16) to write, Value for the first register is at index zero. The numberof register to write to is specified by the size of the array. Outputs: ‘+ MB Session out: Modbus session updated with transaction’s ADU data, © Read registers: Array of register values (U16). The value of the first register is at index zero, Plasmionique Inc. | Modbus Master Library | Transaction Functions 9.12 Read Device Identification NB Master Ivib:Read Device Identification.vi MB sessionin read device ID code object 1D erorin no error) MB session out DeviD Objects Cenfermity Level error out Function Code 43 / 14: Read device ID objects. Specify the type of access using the read device ID code and the id of the starting object using object ID. Inputs: + MBSessi Modbus session on which to perform the transaction, © Object ID (U8): ID number of first device ID object to read. + Read device ID code (U8): Specifies type of read operation, © OxOL - Basic: Request the basic stream of devID objects (0x00 to 0x02) starting from the specified object ID. © x02 - Regular: Requests the regular stream of devID objects (0x00 to Ox7F) starting from the specified object ID. © 0x03 - Extended: Requests the extended stream of devID objects (0x00 to OxFF) starting from the specified object ID. © Ox04 - Single: Requests a single devID object specified by object ID. Outputs: ‘+ MB Session out: Modbus session updated with transaction’s ADU data, + DevID Objects: sray of DevID objects. Each element contains the object ID number and string value, * Conformity Level (U8): Indicates the type of access supported by the device. © 0x01 - Basic (stream only) © Ox02 - Regular (stream only) © 0x03 - Extended (stream only) © Ox81 - Basic (stream and single) © Ox82.- Regular (stream and single) © 0x83 - Extended (stream and single) Plasmionique ine. | Modbus Master Library | Transaction Functions 10 MB VISALocks ‘The MB VISA Lock library was developed after a flaw was discovered in the behavior of the LabVIEW's VISA lock primitive. This flaw was causing the Modbus Master to behave erratically when communicating with multiple slaves over a shared serial port. The MB VISA Lock library wraps the VISA Lock primitive and forces it to behave as originally expected The discussion about the flaw and fix can be found here: https://lavag.org/topie/19871 -visa-lock-behavior/ fo t & Obtain VISA... Acqure VISA... Release VISA... Dispose VISA. ‘The Modbus Master library calls the MB VISA Lock library internally. For advanced users, the library has been included in the Modbus Palette. 10.1 Obtain VISA Lock Ref MB VISA Lock.ivlib:Obtain VISA Lock Ref.vi VISA session in ~~ fis ~~ VISA session out Le i error (no erro‘) error out Obtain the reference for the VISA resource lock. This reference is stored in the UserData property of the output VISA session. This VI should be called just after the VISA session is opened. 10.2 Acquire VISA Lock MB_VISA Lock vlib:Acquire VISA Lockvi VISA resource name ~~~ VISA resource name out count) eal roe ‘erorin (no err) Attempt to acquire an exclusive lock on the VISA resource. If the lock cannot be obtained before the specified timeout, error -1073807345 will be returned. Plasmionique Inc. | Modbus Master Library | MB VISA Locks 19 10.3 Release VISA Lock MB_VISA_Lockiivib:Release VISA Lockvi VISA resource name fi VISA resource name out J ‘errorin (no error): eor out Release the session's exclusive lock on the VISA resource. Input errors do not affect the behavior of this VI 10.4 Dispose VISA Lock Ref MB_VISA Lock IvlisDispose VISA Lock Ref.vi VISA session in = VISA session out <6 error in (no erro‘) ‘error out Dispose of the VISA resource lock reference. The output VISA session will have an invalid reference stored in the User Data property. This VI should be called just before closing the VISA session Input errors do not affect the behavior of this VI Plasmionique Ine. | Modbus Master Library | MB VISA Locks Ea 11 ErrorCodes ‘The following custom error codes have been defined, They are included in custom error codes file “Plasmionique-MB Master-errors tit” located in the “\project\errors” directory. Error Code | Description 403461 Modbus Exception Code 1: liegal function 403462 Modbus Exception Code 2: Illegal data address 403463 Modbus Exception Code 3: liegal data value 403464 Modbus Exception Code 4: Slave device fallure 408465 Modbus Exception Code 5: Slave acknowledge 403466 Modbus Exception Code 6: Slave device busy 403467 Modbus Exception Code 7: Slave NACK 403468 Modbus Exception Code &: Memory parity error 403470 Modbus Exception Code 10: Gateway path unavailable 403471 Modbus Exception Code 11: Gateway target device falled to respond 403481 Modbus slave 1D mismatch 403482 Modbus GROILRG error 403483 Invalid Modbus session 403484 Modbus TGP invalid protocol ID 403485 Modbus TGP transaction ID mismatch 12References Modbus Organization. (2006). MODBUS over Serial Line Specification & Implementation Guide v1.02. Retrieved from Modbus.org: http://www.modbus.orgidocs/Modbus_over_serial_line_V1_02.pdf Modbus Organization, (2012). MODBUS Application Protocol Specification V1.1b3. Retrieved from ‘Modbus.org: http://www.modbus.org/docs/Modbus_Application_Protocol_V1_1b3.pdf Modbus-IDA. (2006). MODBUS Messaging on TCP/P Implementation Guide V1.0b. Retrieved from “Modbus.org: http://www.modbus.org/docs/Modbus_Messaging_Implementation_Guide_V1_0b.pdf Plasmionique Inc. | Modbus Master Library | Error Codes

Anda mungkin juga menyukai