Pustaka protokol Mewtocol yang mudah digunakan untuk berinteraksi dengan PLC Panasonic melalui TCP/Serial.
️ Perpustakaan ini bukan produk resmi panasonic dan panasonic juga tidak memberikan dukungan finansial atau batasan dalam bentuk apa pun.
️ FP7 saat ini tidak didukung
Pustaka ini hanya diuji dengan beberapa PLC, tipe lain yang mendukung protokol Panasonic Mewtocol mungkin berfungsi. Gunakan dengan risiko Anda sendiri, orang lain mungkin akan mengikuti masukan dari komunitas
Pustaka ini ditulis dalam netstandard2.0 dan harus kompatibel dengan banyak lingkungan .NET.
Untuk daftar lengkap .NET clrs yang didukung, lihat halaman ini
Gunakan dotnet CLI dan jalankan
dotnet add package Mewtocol.NET
Panasonic telah menerbitkan definisi protokol di situs mereka. Lihat situs ini jika Anda ingin melihat fungsi umum atau menambahkan/melaporkan fitur yang hilang.
Perpustakaan ini pada saat itu belum memiliki fitur yang lengkap, namun semua fitur penting telah disediakan
Untuk melihat daftar lengkap contoh klik di sini.
Menghubungkan ke PLC semudah
using MewtocolNet ;
using ( var plc = Mewtocol . Ethernet ( "192.168.178.55" ) . Build ( ) ) {
await plc . ConnectAsync ( ) ;
if ( ! plc . IsConnected ) {
Console . WriteLine ( "Failed to connect to the plc..." ) ;
} else {
Console . WriteLine ( plc . PlcInfo ) ;
}
}
Instruksi terperinci
RegisterCollection
using MewtocolNet ;
using MewtocolNet . RegisterAttributes ;
public class TestRegisters : RegisterCollection {
//corresponds to a R100 boolean register in the PLC
[ Register ( "R100" ) ]
public bool TestBool1 { get ; private set ; }
//corresponds to a XD input of the PLC
[ Register ( "XD" ) ]
public bool TestBoolInputXD { get ; private set ; }
//corresponds to a DDT7012 - DDT7013 as a 32bit time value that gets parsed as a timespan (TIME)
//the smallest value to communicate to the PLC is 10ms
[ Register ( "DDT7012" ) ]
public TimeSpan TestTime { get ; private set ; }
//corresponds to a DT1101 - DT1104 string register in the PLC with (STRING[4])
[ Register ( "DT1101" , "STRING[4]" ) ]
public string TestString1 { get ; private set ; }
}
.WithPoller()
setelah lampiran register TestRegisters registers = null ;
//setting up a new PLC serial interface and tell it to use the register collection
var plc = Mewtocol . Serial ( "COM4" , BaudRate . _19200 )
. WithPoller ( )
. WithRegisterCollections ( c => {
registers = c . AddCollection < TestRegisters > ( ) ;
// or use
// c.AddCollection(new TestRegisters());
// if you want to pass data to a constructor
} )
. Build ( ) ;
//connect to it
await plc . ConnectAsync ( async ( ) => {
//restart the plc program during the connection process
await plc . RestartProgramAsync ( ) ;
} ) ;
//wait for the first data cycle of the poller module
//otherwise the property value might still be unset or null
await App . ViewModel . Plc . AwaitFirstDataCycleAsync ( ) ;
if ( App . ViewModel . Plc . IsConnected ) {
Console . WriteLine ( registers . TestBool1 ) ;
}
Catatan! ini bukan satu-satunya pilihan Anda untuk membaca register, lihat di sini
Selain pengikatan properti otomatis, Anda dapat menggunakan pola berikut:
await plc . Register . Struct < short > ( "DT100" ) . WriteAsync ( 100 ) ;
var value = await plc . Register . Struct < short > ( "DT100" ) . ReadAsync ( ) ;
IRegister < bool > outputContactReference ;
var plc = Mewtocol . Ethernet ( "127.0.0.1" )
. WithRegisters ( b => {
b . Bool ( "Y4" ) . Build ( out outputContactReference ) ;
} )
. Build ( ) ;
await plc . ConnectAsync ( ) ;
await outputContactReference . WriteAsync ( true ) ;