Laden...
T
thetrock myCSharp.de - Member
Entwicklung Franken Dabei seit 05.09.2019 15 Beiträge
Benutzerbeschreibung

Forenbeiträge von thetrock Ingesamt 15 Beiträge

19.09.2019 - 08:20 Uhr

Items anlegen hat funktioniert.

Leider kann ich nur den Inhalt der Variable auslesen, wie kann ich auf weiter Eigentschaften zugreifen?

Wie schaut der Vorgang aus, wenn ich den Wert verändern will.

Sollte das mit dem auslesen begrenzt sein, kann jemand eine ander LIB empfehlen.

thetrock

18.09.2019 - 07:14 Uhr

Hab leider zu der Lib keine Dokumentation gefunden.

Wenn es so leicht wäre, würde ich hier nicht fragen.

Vielleicht kann trotzdem jemand mir noch weiterhelfen

Jetzt stellt sich mir die Frage, wo ich mehrer Imtes anlegen kann fürs auslesen?

Gruß thetrock

12.09.2019 - 15:08 Uhr

Kann hier noch jemand weiterhelfen ´mit der LIB

bzw. kennt jemand einen guten opensource LIB mit Beschreibung?

11.09.2019 - 09:52 Uhr

@MartinH vielen Dank.

Console.WriteLine("Step 6 - Add items to the subscription.");
                    var itemsToCreate = new MonitoredItemCreateRequest[]
                      {
                                      new MonitoredItemCreateRequest { ItemToMonitor = new ReadValueId { NodeId = NodeId.Parse("ns=3;s=\"DbMachineConfiguration\".\"Parameter\".\"Lasertime\"")  , AttributeId = AttributeIds.Value }, MonitoringMode = MonitoringMode.Reporting, RequestedParameters = new MonitoringParameters { ClientHandle = 12345, SamplingInterval = -1, QueueSize = 0, DiscardOldest = true } }
                                           


                     };
                    var itemsRequest = new CreateMonitoredItemsRequest
                    {
                        SubscriptionId =  id,
                        ItemsToCreate = itemsToCreate,
                    };
                    var itemsResponse = await channel.CreateMonitoredItemsAsync(itemsRequest);

                Console.WriteLine("Step 7 - Subscribe to PublishResponse stream.");
                        var token = channel.Where(pr => pr.SubscriptionId == id).Subscribe(pr =>
                             {
                                    // loop thru all the data change notifications 
                    var dcns = pr.NotificationMessage.NotificationData.OfType<DataChangeNotification>();
                                     foreach (var dcn in dcns)
                                            {
                                                foreach (var min in dcn.MonitoredItems)
                                                  {
                                                       
                                                      Console.WriteLine($" value: {min.Value}");
                                                   }
                                            }
                                  });

Jetzt stellt sich mir die Frage, wo ich mehrer Imtes anlegen kann fürs auslesen?

11.09.2019 - 09:36 Uhr

Siehe Bild

11.09.2019 - 09:26 Uhr

Folgender Code geht

NodeId.Parse("ns=3;s=DeviceManual")

Folgender Code geht nicht

NodeId.Parse("ns=3;s="DbMachineConfiguration"."Parameter"."Laser"")

--> aber die NodeID wird mir so angezeigt

11.09.2019 - 09:08 Uhr

Das ansprechen via NodeId funktioniert für ns=3;s=DeviceManual

aber wenn ich andere Daten auslesen will, ist hat die NodeId wiefolgt

ns=3;s="DbMachineConfiguration"."Parameter"."Bedienung"

aber das geht ja nicht, da es mehrer Strings sind.

Wie kann ich das lösen?

Kann es sein, das bei dem Sample ich nicht so viele Attribute auslesen kann?

11.09.2019 - 08:37 Uhr
Console.WriteLine("Step 7 - Subscribe to PublishResponse stream."); 
122                 var token = channel.Where(pr => pr.SubscriptionId == id).Subscribe(pr => 
123                 { 
124                     // loop thru all the data change notifications 
125                     var dcns = pr.NotificationMessage.NotificationData.OfType<DataChangeNotification>(); 
126                     foreach (var dcn in dcns) 
127                     { 
128                         foreach (var min in dcn.MonitoredItems) 
129                         { 
130                             Console.WriteLine($"sub: {pr.SubscriptionId}; handle: {min.ClientHandle}; value: {min.Value}"); 
131                         } 
132                     } 
133                 }); 

So, jetzt bekomme ich schon ein Value zurück.

aber wenn meine node ID wiefolgt aussieht

ns=3;s="DbMachineConfiguration"."Parameter"."Bedienung"

bringt er mir ein Fehler, da ja mehrere Strings sind.

Daher meine Frage wie kann ich das lösen und wie kann ich mehrere Items anlegen um das Value und Name auszulesen zu können.

10.09.2019 - 09:32 Uhr

Hier wird das Abo erstellt

Console.WriteLine("Step 5 - Create a subscription.");
                    var subscriptionRequest = new CreateSubscriptionRequest
                    {
                        RequestedPublishingInterval = 1000,
                        RequestedMaxKeepAliveCount = 10,
                        RequestedLifetimeCount = 30,
                        PublishingEnabled = true
                    };
                    var subscriptionResponse = await channel.CreateSubscriptionAsync(subscriptionRequest);
                    var id = subscriptionResponse.SubscriptionId;

JEtzt muss ich nur noch die Variablen/Items dem Abo hinzufügen.

Console.WriteLine("Step 6 - Add items to the subscription.");
                    var itemsToCreate = new MonitoredItemCreateRequest[]
   {
                                      new MonitoredItemCreateRequest { ItemToMonitor = new ReadValueId { NodeId = NodeId.Parse("ns=3;s=SerialNumber"), AttributeId = AttributeIds.Value }, MonitoringMode = MonitoringMode.Reporting, RequestedParameters = new MonitoringParameters { ClientHandle = 12345, SamplingInterval = -1, QueueSize = 0, DiscardOldest = true } }
                                    

                };
                    var itemsRequest = new CreateMonitoredItemsRequest
                    {
                        SubscriptionId =  id,
                        ItemsToCreate = itemsToCreate,
                    };
                    var itemsResponse = await channel.CreateMonitoredItemsAsync(itemsRequest);

Den Part verstehe ich nur noch nicht.

Wenn ich die NodeID hier eingebe bekomme ich keine Output raus

10.09.2019 - 08:37 Uhr

Danke für die schnelle Antwort.

Kann es sein, dass ich gar nicht Browsen muss???

Der Browse Requeste, lässt alle daten darstellen.
soweit verstanden.

Wie kann ich jetzt genau eine spezielles Objet darstellen

ID

ns=3;s="DbTest"."Test".Data1

bzw. muss ich ein Objetk anlegen mit der ID und kann dann auf die einzelenen Attribute zugrefein (NodeClass, BrowseName,Value, ...)

wie kann ich rd2.NodeId ersetzten?

konnte jetzt ersetz werden

NodeId.Parse("ns=3;s=PLC")
10.09.2019 - 07:59 Uhr

Ich hab rd2.NodeID ausgelesen und hier steht

ns=3;s=PLC

wenn ich das dort als string eingebe übersetzt er es nicht.

Wie kann ich jetzt das rd2.NodeID richtig ersetzten???

Als nächstes, wollte ich eine spezielle Variable auslesen. ID ist bekannt.
wie lautet dan dazu der Befehlt.

Gibt es hierfür auch eine Literatur oder ähnliches?

Danke Gruß thetrock

09.09.2019 - 14:38 Uhr

Hallo zusammen,

Hier die Anfrage an den Server


                        browseRequest = new BrowseRequest
                        { 
                            NodesToBrowse = new BrowseDescription[] { new BrowseDescription { NodeId = ExpandedNodeId.ToNodeId(rd2.NodeId, channel.NamespaceUris), BrowseDirection = BrowseDirection.Forward, ReferenceTypeId = NodeId.Parse(ReferenceTypeIds.HierarchicalReferences), NodeClassMask = (uint)NodeClass.Variable | (uint)NodeClass.Object | (uint)NodeClass.Method, IncludeSubtypes = true, ResultMask = (uint)BrowseResultMask.All } },
                        };
                       
                        browseResponse = await channel.BrowseAsync(browseRequest);
                        foreach (var rd3 in browseResponse.Results[0].References ?? new ReferenceDescription[0])

wie kann ich rd2.NodeId ersetzten?

Was bewirkt die Zeilte (sieh unten) genau?



                        browseResponse = await channel.BrowseAsync(browseRequest);
                        foreach (var rd3 in browseResponse.Results[0].References ?? new ReferenceDescription[0])
06.09.2019 - 11:29 Uhr

Hi hab jetzt von

https://github.com/convertersystems/...App/Program.cs

den Code benutzt.

wie kann ich jetzt auf Variablen genau zugreifen?

Hab folgende nodeid ns=3;s="DbInfo"."Parameter"."Station1"

05.09.2019 - 14:06 Uhr

Hi vbprogger,

danke für die schnelle Antwort.

Ich komm mit dem Samples/Lib nicht so gut zurecht,

weiß nicht was genau ich da einnbinden muss oder auch nicht.

Bräuchte am besten Info, welche Lib/Sample wie eingesetz wird und dann wie die Befehle implementiert werden müssen.

05.09.2019 - 13:39 Uhr

Hallo Zusammen,

ich muss einen OPC UA Client in C# programmieren.

Leider komm ich mit den Samples nicht so gut klar.

Kann hier jemand mich unterstützen bzw. eine detailierte Anleitung nennen?

Mti einem fertigen "Client" komme ich schon auf den SErver drauf.

Aber wie ich jetzt starten soll bei der programmierung habe ich keinen Plan, bei dem Thema OPC.

Vorallem in Bezug welche spezielle DLL muss eingebunden werden.

Was benötige ich genau für Aufbau der Verbindung. usw.

Hab bis jetzt nur "kleine" Änderungen oder ganz einfache Programme in C# gelöst. Komme aus der SPS Programmierung.

Danke

thetrock