Kommunikation für Allen-Bradley Rockwell PLC in .NET Core
LibPLCTag-Bibliothek C++ API
Basierend auf libplctag-csharp
Nuget
Besonderer Dank für das Testen von Mavert
Besonderer Dank geht an Mario Averoldi für die technische Unterstützung [email protected].
Corsinvest Srl
______ _ __
/ ____/___ __________(_)___ _ _____ _____/ /_
/ / / __ / ___/ ___/ / __ | / / _ / ___/ __/
/ /___/ /_/ / / (__ ) / / / / |/ / __(__ ) /_
____/____/_/ /____/_/_/ /_/|___/___/____/__/
Client Api Allen-Bradley PLC (Made in Italy)
Hinweis: SPS steuern viele Arten von Geräten und es kann zu Sach-, Produktions- oder sogar Lebensverlusten kommen, wenn Fehler bei der Programmierung oder beim Zugriff gemacht werden. Beim Zugriff auf oder bei der Programmierung von SPS ist stets Vorsicht geboten!
Wir erheben keinerlei Ansprüche oder Gewährleistungen hinsichtlich der Eignung dieses Codes für irgendeinen Zweck.
Seien Sie vorsichtig!
Der Client ist Wrapper der LibPLCTag-Bibliothek.
[ Serializable ]
public class Test12
{
public int AA1 { get ; set ; }
public int AA2 { get ; set ; }
public int AA3 { get ; set ; }
public int AA4 { get ; set ; }
public int AA5 { get ; set ; }
public int AA6 { get ; set ; }
public int AA7 { get ; set ; }
public int AA8 { get ; set ; }
}
public static void Main ( string [ ] args )
{
//initialize controller
using ( var controller = new Controller ( "10.155.128.192" , "1, 0" , CPUType . LGX ) )
{
//ping controller
Console . Out . WriteLine ( "Ping " + controller . Ping ( true ) ) ;
//create group tag
var grp = controller . CreateGroup ( ) ;
//add tag
var tag = grp . CreateTagType < string [ ] > ( "Track" , TagSize . STRING , 300 ) ;
tag . Changed += TagChanged ;
var value = tag . Read ( ) ;
//add tag from Class
var tag1 = grp . CreateTagType < Test12 > ( "Test" ) ;
tag . Changed += TagChanged ;
var tag2 = grp . CreateTagFloat32 ( "Fl32" ) ;
grp . Changed += GroupChanged ;
grp . Read ( ) ;
}
}
private static void PrintChange ( string @event , ResultOperation result )
{
Console . Out . WriteLine ( $ " { @event } { result . Timestamp } Changed: { result . Tag . Name } " ) ;
}
static void TagChanged ( ResultOperation result )
{
PrintChange ( "TagChanged" , result ) ;
}
static void GroupChanged ( IEnumerable < ResultOperation > results )
{
foreach ( var result in results ) PrintChange ( "GroupTagChanged" , result ) ;
}
Es ist möglich, ein Tag beliebiger Art zu erstellen:
Größen werden in TagSize angegeben.
Geben Sie bei Arrays die Größe in der Definition an.
Beispiel:
public class TestArray
{
public int InTest { get ; set ; }
public int [ ] InTestArray { get ; set ; } = new int [ 5 ] ;
public string [ ] StringTestArray { get ; set ; } = new string [ 300 ] ;
}
Benutzerdefinierte Typen sind Klassen. Die Eigenschaften werden sequentiell gelesen.