public async Task Execute(IPlcConnection connection) { await _fn.Invoke(connection); IsCompleted = true; _continuation?.Invoke(); }
/// <summary> /// A example program of PLC4x in .NET! /// </summary> /// <param name="args"></param> static void Main(string[] args) { using (IPlcConnection PlcConnection = (new PlcDriverManager()).GetConnection("s7://192.168.167.210/1/1")) { PlcConnection.ReadRequestBuilder.AddItem("001", "%MX1.0:BOOL"); PlcConnection.ReadRequestBuilder.AddItem("002", "%MB208:CHAR"); PlcConnection.ReadRequestBuilder.Build().ExecuteAsync(); Log.Info("Request has been sent"); PlcConnection.CloseAsync(); } using (IPlcConnection PlcConnection = (new PlcDriverManager()).GetConnection("s7://192.168.167.210/1/1")) { PlcConnection.WriteRequestBuilder.AddItem("001", "%MX1.0:BOOL", true); PlcConnection.WriteRequestBuilder.AddItem("002", "%MB3:BYTE", (byte)0x12); char?[] characterArray = new char?[] { 'A', 'B', 'C', 'D' }; PlcConnection.WriteRequestBuilder.AddItem("045", "%DB109.DBB0:CHAR[7]", characterArray); PlcConnection.WriteRequestBuilder.Build().ExecuteAsync(); Log.Info("Writing data"); PlcConnection.CloseAsync(); } }
/// <summary> /// Connects to a PLC using the given plc connection string. /// </summary> /// <param name="url"> plc connection string. </param> /// <returns> PlcConnection object. </returns> public virtual IPlcConnection GetConnection(string url) { IPlcDriver driver = GetDriver(url); IPlcConnection connection = (IPlcConnection)driver.ConnectAsync(url); connection.ConnectAsync(); return(connection); }
public Connection(IPlcConnection plcConnection) { PlcConnection = plcConnection; }