-> Hier kostenlos registrieren
Hallo Rabi,
Vielen Dank für deine Antwort.
Gleich mal eine Rückfrage in deinem Post #18 hast du geschrieben das mein Skript in die ValueSubscription gehört jetzt sagst du ins _Changed Event. Ich bin verwirrt.
Nun gut, hier mein aktueller Stand den ich habe.
An dieser Stelle hänge ich:

Die beiden in Pluszeichen eingerahmte VBA Zeilen möchte in C# um basteln.
Aber ich denke anscheinend zu kompliziert und brauche das vielleicht gar nicht.
Ich habe mir die AddInSampleLibrary genauer angeschaut und frage mich ob ich den logger (NLog) und den Error Handler unbedingt brauche.
Wenn es die RT nicht blockiert dann ist es mir egal aber wenn ich es weglassen kann dann umso besser.
Was ist eigentlich die variableChangeReceivedAction ???
Brauche ich noch die VariableSubscription am Anfang des Skriptes wenn ich jetzt das Change Event nutze ???
Vielen Dank nochmal für deine tolle Hilfe.
Mfg Tommylik
Vielen Dank für deine Antwort.
Gleich mal eine Rückfrage in deinem Post #18 hast du geschrieben das mein Skript in die ValueSubscription gehört jetzt sagst du ins _Changed Event. Ich bin verwirrt.
Nun gut, hier mein aktueller Stand den ich habe.
Code:
using Scada.AddIn.Contracts;
using Scada.AddIn.Contracts.Variable;
using System;
using System.IO;
using System.Collections.Generic;
namespace AddInOrdner_erstellen
{
/// <summary>
/// Description of Project Service Extension.
/// </summary>
[AddInExtension("Ordner_erstellen", "Einen Ordner mit Windows 10 erstellen")]
public class ProjectServiceExtension : IProjectServiceExtension
{
#region IProjectServiceExtension implementation
private readonly string _containerName;
private IOnlineVariableContainer _container;
private IProject _project;
public void Start(IProject context, IBehavior behavior)
{
// enter your code which should be executed when starting the SCADA Runtime Service
if (_project != null || _container != null)
{
throw new InvalidOperationException("Cannot start a new online container again.");
}
string VariableName1 = "PDE_PraegeCode"; //Stringvariable
string VariableName2 = "PDE_FolderName"; //Stringvariable
string VariableName3 = "PDE_CreateFolder"; //Boolvariable
string VariableName4 = "PDE_NoFolder"; //Boolvariable
string VariableName5 = "PDE_FileCopy"; //Boolvariable
string VariableName6 = "PDE_NoFile"; //Boolvariable
_project = context;
try
{
// Ensure that the container is deleted
context.OnlineVariableContainerCollection.Delete(_containerName);
// Create a new container
_container = context.OnlineVariableContainerCollection.Create(_containerName);
// Add variables
_container.AddVariable(VariableName1); //Stringvariable
_container.AddVariable(VariableName2); //Stringvariable
_container.AddVariable(VariableName3); //Boolvariable
_container.AddVariable(VariableName4); //Boolvariable
_container.AddVariable(VariableName5); //Boolvariable
_container.AddVariable(VariableName6); //Boolvariable
// register Event
_container.Changed += _container_Changed;
// Activate OnlineContainer
_container.Activate();
}
catch (Exception)
{
}
}
private void _container_Changed(object sender, ChangedEventArgs e)
{
string strNr;
string strText;
string strPfad;
string strOrdner;
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
strNr = thisProject.Variables.Item("PDE_FolderName").Value;
strText = Strings.Format((string)strNr, "000000000000"); // String 12 für den Ordnernamen
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Exportpfad
strPfad = @"D:\S7_Export\AppData"; // Pfad einstellen
strOrdner = strText;
try
{
if (Directory.Exists(strPfad))
{
// Try to create the directory.
Directory.CreateDirectory(strPfad + "\\" + strOrdner);
}
}
catch (Exception)
{
}
}
public void Stop()
{
// enter your code which should be executed when stopping the SCADA Runtime Service
if (_container == null)
{
throw new InvalidOperationException("Stop() cannot be called before Start()");
}
// All events are removed here - the container gets disabled and deleted.
_container.Changed -= _container_Changed;
_container.Deactivate();
try
{
_project.OnlineVariableContainerCollection.Delete(_containerName);
_container = null;
_project = null;
}
catch (Exception)
{
}
}
#endregion
}
}
An dieser Stelle hänge ich:

Die beiden in Pluszeichen eingerahmte VBA Zeilen möchte in C# um basteln.
Aber ich denke anscheinend zu kompliziert und brauche das vielleicht gar nicht.
Code:
// Add variables
_container.AddVariable(VariableName1); //Stringvariable
_container.AddVariable(VariableName2); //Stringvariable
Code:
// Exportpfad
strPfad = @"D:\S7_Export\AppData"; // Pfad einstellen
strOrdner = [COLOR=#ff0000][B]An dieser Stelle brauche ich die VariableName2 das ist der Stringwert von der SPS den ich als Ordnername nutze.[/B][/COLOR]
Ich habe mir die AddInSampleLibrary genauer angeschaut und frage mich ob ich den logger (NLog) und den Error Handler unbedingt brauche.
Wenn es die RT nicht blockiert dann ist es mir egal aber wenn ich es weglassen kann dann umso besser.
Was ist eigentlich die variableChangeReceivedAction ???
Brauche ich noch die VariableSubscription am Anfang des Skriptes wenn ich jetzt das Change Event nutze ???
Vielen Dank nochmal für deine tolle Hilfe.
Mfg Tommylik
Zuletzt bearbeitet: