syneffort 3 years ago
parent 3fa0ff0ede
commit 97ac8a39a1
  1. 148
      ModbusStudy/CommClient/Client/OpcUaMaster.cs
  2. 7
      ModbusStudy/CommClient/MainForm.cs
  3. 41
      ModbusStudy/CommClient/MasterClient.csproj
  4. 13
      ModbusStudy/CommClient/packages.config

@ -0,0 +1,148 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Opc.Ua;
using Opc.Ua.Client;
namespace MasterClient.Client
{
class OpcUaMaster : ICommClient
{
private readonly string ENDPOINT_TMPL = "opc.tcp://{0}:{1}";
private Session session;
private string ip;
private int port;
public void Connect()
{
try
{
if (GetStatus())
Disconnect();
ConfiguredEndpoint endPoint = new ConfiguredEndpoint(null, new EndpointDescription(CreateEndpointURL()));
ApplicationConfiguration config = CreateOpcUaConfig();
session = Session.Create(config, endPoint, true, "MySession", 1000, null, null).Result;
}
catch (Exception ex)
{
throw ex;
}
}
public void Disconnect()
{
if (!GetStatus())
throw new Exception("Not connected");
try
{
session.Close();
}
catch (Exception ex)
{
throw ex;
}
}
public bool GetStatus()
{
return session != null && session.Connected;
}
public string ReadValue(string name)
{
if (!GetStatus())
throw new Exception("Not connected");
try
{
return session.ReadValue(name).Value.ToString();
}
catch (Exception ex)
{
throw ex;
}
}
public void SetServer(string ip, int port)
{
this.ip = ip;
this.port = port;
}
public void WriteValue(string name, string value)
{
if (!GetStatus())
throw new Exception("Not connected");
try
{
WriteValue nodeToWrite = new WriteValue()
{
NodeId = new NodeId(name),
AttributeId = Attributes.Value,
Value = new DataValue()
};
Variant writeValue = new Variant(value);
nodeToWrite.Value.WrappedValue = writeValue;
WriteValueCollection nodesToWrite = new WriteValueCollection();
nodesToWrite.Add(nodeToWrite);
StatusCodeCollection results = null;
DiagnosticInfoCollection diagnosticInfos = null;
ResponseHeader responseHeader = session.Write(
null,
nodesToWrite,
out results,
out diagnosticInfos);
ClientBase.ValidateResponse(results, nodesToWrite);
ClientBase.ValidateDiagnosticInfos(diagnosticInfos, nodesToWrite);
if (StatusCode.IsBad(results[0]))
throw ServiceResultException.Create(results[0], 0, diagnosticInfos, responseHeader.StringTable);
}
catch (Exception ex)
{
throw ex;
}
}
private ApplicationConfiguration CreateOpcUaConfig()
{
ApplicationConfiguration config = new ApplicationConfiguration()
{
ApplicationName = "OPC-UA-Client",
ApplicationType = ApplicationType.Client,
SecurityConfiguration = new SecurityConfiguration()
{
ApplicationCertificate = new CertificateIdentifier()
},
ClientConfiguration = new ClientConfiguration()
{
DefaultSessionTimeout = 30 * 1000
}
};
config.Validate(ApplicationType.Client);
return config;
}
private string CreateEndpointURL()
{
return string.Format(ENDPOINT_TMPL, ip, port);
}
}
}

@ -93,11 +93,16 @@ namespace MasterClient
}
else if (chkOPCUA.Checked)
{
client = new Client.OpcUaMaster();
nudPort.Value = 37800;
tbReadName.Text = "ns=12380;s=TAG1";
tbWriteName.Text = "ns=12380;s=TAG1";
Log("--- Run as OPCUA mode ---");
}
else if (chkSdk.Checked)
{
Log("--- Run as SDK mode ---");
Log("--- On Develop ---");
}
}

@ -36,11 +36,51 @@
<ApplicationIcon>Graphicloads-100-Flat-2-Arrow-next.ico</ApplicationIcon>
</PropertyGroup>
<ItemGroup>
<Reference Include="BouncyCastle.Crypto, Version=1.9.0.0, Culture=neutral, PublicKeyToken=0e99375e54769942, processorArchitecture=MSIL">
<HintPath>..\packages\Portable.BouncyCastle.1.9.0\lib\net40\BouncyCastle.Crypto.dll</HintPath>
</Reference>
<Reference Include="EasyModbus, Version=5.6.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\hima.lib.easymodbus.5.6.0\lib\EasyModbus.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Extensions.Logging.Abstractions, Version=3.1.27.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Extensions.Logging.Abstractions.3.1.27\lib\netstandard2.0\Microsoft.Extensions.Logging.Abstractions.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.13.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="Opc.Ua.Client, Version=1.4.370.0, Culture=neutral, PublicKeyToken=bfa7a73c5cf4b6e8, processorArchitecture=MSIL">
<HintPath>..\packages\OPCFoundation.NetStandard.Opc.Ua.Client.1.4.370.12\lib\net462\Opc.Ua.Client.dll</HintPath>
</Reference>
<Reference Include="Opc.Ua.Configuration, Version=1.4.370.0, Culture=neutral, PublicKeyToken=bfa7a73c5cf4b6e8, processorArchitecture=MSIL">
<HintPath>..\packages\OPCFoundation.NetStandard.Opc.Ua.Configuration.1.4.370.12\lib\net462\Opc.Ua.Configuration.dll</HintPath>
</Reference>
<Reference Include="Opc.Ua.Core, Version=1.4.370.0, Culture=neutral, PublicKeyToken=bfa7a73c5cf4b6e8, processorArchitecture=MSIL">
<HintPath>..\packages\OPCFoundation.NetStandard.Opc.Ua.Core.1.4.370.12\lib\net462\Opc.Ua.Core.dll</HintPath>
</Reference>
<Reference Include="Opc.Ua.Security.Certificates, Version=1.4.370.0, Culture=neutral, PublicKeyToken=bfa7a73c5cf4b6e8, processorArchitecture=MSIL">
<HintPath>..\packages\OPCFoundation.NetStandard.Opc.Ua.Security.Certificates.1.4.370.12\lib\net462\Opc.Ua.Security.Certificates.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
</Reference>
<Reference Include="System.Core" />
<Reference Include="System.Formats.Asn1, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Formats.Asn1.6.0.0\lib\net461\System.Formats.Asn1.dll</HintPath>
</Reference>
<Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
</Reference>
<Reference Include="System.Numerics" />
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
</Reference>
<Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.ValueTuple.4.5.0\lib\net47\System.ValueTuple.dll</HintPath>
</Reference>
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
@ -54,6 +94,7 @@
<ItemGroup>
<Compile Include="Client\ICommClient.cs" />
<Compile Include="Client\ModbusMaster.cs" />
<Compile Include="Client\OpcUaMaster.cs" />
<Compile Include="MainForm.cs">
<SubType>Form</SubType>
</Compile>

@ -1,4 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="hima.lib.easymodbus" version="5.6.0" targetFramework="net481" />
<package id="Microsoft.Extensions.Logging.Abstractions" version="3.1.27" targetFramework="net481" />
<package id="Newtonsoft.Json" version="13.0.1" targetFramework="net481" />
<package id="OPCFoundation.NetStandard.Opc.Ua.Client" version="1.4.370.12" targetFramework="net481" />
<package id="OPCFoundation.NetStandard.Opc.Ua.Configuration" version="1.4.370.12" targetFramework="net481" />
<package id="OPCFoundation.NetStandard.Opc.Ua.Core" version="1.4.370.12" targetFramework="net481" />
<package id="OPCFoundation.NetStandard.Opc.Ua.Security.Certificates" version="1.4.370.12" targetFramework="net481" />
<package id="Portable.BouncyCastle" version="1.9.0" targetFramework="net481" />
<package id="System.Buffers" version="4.5.1" targetFramework="net481" />
<package id="System.Formats.Asn1" version="6.0.0" targetFramework="net481" />
<package id="System.Memory" version="4.5.4" targetFramework="net481" />
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net481" />
<package id="System.Runtime.CompilerServices.Unsafe" version="4.5.3" targetFramework="net481" />
<package id="System.ValueTuple" version="4.5.0" targetFramework="net481" />
</packages>
Loading…
Cancel
Save