مكتبة بروتوكول Mewtocol سهلة الاستخدام للتفاعل مع PLCs من باناسونيك عبر TCP/Serial.
️ هذه المكتبة ليست منتجًا رسميًا من باناسونيك ولا تقدم باناسونيك دعمًا ماليًا أو قيودًا بأي شكل من الأشكال.
️ FP7 غير مدعوم حاليًا
تم اختبار هذه المكتبة فقط مع عدد قليل من أجهزة PLC، وقد تعمل الأنواع الأخرى التي تدعم بروتوكول Panasonic Mewtocol. استخدمه على مسؤوليتك الخاصة، وقد يتابعه الآخرون بتعليقات المجتمع
تمت كتابة هذه المكتبة بلغة netstandard2.0 ويجب أن تكون متوافقة مع الكثير من بيئات .NET.
للحصول على قائمة كاملة بـ .NET clrs المدعومة، راجع هذه الصفحة
استخدم dotnet CLI وقم بالتشغيل
dotnet add package Mewtocol.NET
قامت باناسونيك بنشر تعريف البروتوكول على موقعها الإلكتروني. ارجع إلى هذا الموقع إذا كنت تريد رؤية الوظائف العامة أو إضافة / الإبلاغ عن الميزات المفقودة.
لم تكن هذه المكتبة مكتملة الميزات في ذلك الوقت، ولكن تم توفير جميع الميزات الأساسية
لرؤية القائمة الكاملة للأمثلة انقر هنا.
يعد الاتصال بـ PLC أمرًا بسيطًا مثل
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 ) ;
}
}
تعليمات مفصلة
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()
بعد مرفق السجل 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 ) ;
}
ملحوظة! هذا ليس خيارك الوحيد لقراءة السجلات، انظر هنا
بالإضافة إلى ربط الخاصية التلقائي، يمكنك استخدام هذه الأنماط:
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 ) ;