-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #8 from NecatiMeral/feature/broetje-ventilation-sy…
…stem Feature/broetje ventilation system
Showing
27 changed files
with
2,321 additions
and
21 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
namespace Necati_Meral_Yahoo_De.Logic.Ads; | ||
internal class AdsConsts | ||
{ | ||
public const int ReadWriteLength = 84; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,93 @@ | ||
using System.Text; | ||
using LogicModule.ObjectModel.TypeSystem; | ||
using Necati_Meral_Yahoo_De.LogicNodes; | ||
|
||
namespace Necati_Meral_Yahoo_De.Logic.Ads; | ||
public abstract class AdsDataNode : LocalizableNode | ||
{ | ||
[Input(DisplayOrder = 2, IsDefaultShown = true, IsInput = false)] | ||
public StringValueObject RemoteAddress { get; } | ||
|
||
[Input(DisplayOrder = 3, IsDefaultShown = true, IsInput = false)] | ||
public StringValueObject NetId { get; } | ||
|
||
[Input(DisplayOrder = 4, IsDefaultShown = true, IsInput = false)] | ||
public IntValueObject Port { get; } | ||
|
||
[Input(DisplayOrder = 5, IsDefaultShown = true, IsInput = false)] | ||
public UIntValueObject IndexGroup { get; } | ||
|
||
[Input(DisplayOrder = 6, IsDefaultShown = true, IsInput = false)] | ||
public UIntValueObject IndexOffset { get; } | ||
|
||
[Input(DisplayOrder = 7, IsDefaultShown = true, IsInput = false)] | ||
public EnumValueObject DataType { get; } | ||
|
||
[Output(DisplayOrder = 99, IsDefaultShown = false)] | ||
public StringValueObject Diagnostics { get; } | ||
|
||
protected Encoding Encoding { get; } | ||
|
||
public AdsDataNode(INodeContext context, string nodeTypeName) | ||
: base(context, nodeTypeName) | ||
{ | ||
context.ThrowIfNull("context"); | ||
|
||
RemoteAddress = TypeService.CreateString(PortTypes.String, "RemoteAddress", string.Empty); | ||
NetId = TypeService.CreateString(PortTypes.String, "NetId", string.Empty); | ||
Port = TypeService.CreateInt(PortTypes.Integer, "Port", 800); | ||
IndexGroup = TypeService.CreateUInt(PortTypes.DWord, "IndexGroup", 16416); | ||
IndexOffset = TypeService.CreateUInt(PortTypes.DWord, "IndexOffset", 0); | ||
DataType = TypeService.CreateEnum(nameof(AdsType), "DataType", AdsType.Values, AdsType.String); | ||
|
||
Diagnostics = TypeService.CreateString(PortTypes.String, "Diagnostics", string.Empty); | ||
|
||
Encoding = Encoding.ASCII; | ||
} | ||
|
||
protected virtual object ConvertValue(byte[] data) | ||
{ | ||
return DataType.Value switch | ||
{ | ||
AdsType.Boolean => BitConverter.ToBoolean(data, 0), | ||
AdsType.Int16 => BitConverter.ToInt16(data, 1), | ||
_ => Encoding.GetString(data, 3, 81) | ||
}; | ||
} | ||
|
||
protected virtual byte[] GetBytes(object data) | ||
{ | ||
return DataType.Value switch | ||
{ | ||
AdsType.Boolean => BitConverter.GetBytes(AsBoolean(data)), | ||
AdsType.Int16 => BitConverter.GetBytes(AsShort(data)), | ||
_ => Encoding.GetBytes(data?.ToString()) | ||
}; | ||
} | ||
|
||
protected virtual bool AsBoolean(object data) | ||
{ | ||
if (data is bool booleanValue) | ||
{ | ||
return booleanValue; | ||
} | ||
|
||
var dataAsString = data?.ToString(); | ||
|
||
return dataAsString == "1" || dataAsString.Equals("TRUE", StringComparison.OrdinalIgnoreCase); | ||
} | ||
|
||
protected virtual short AsShort(object data) | ||
{ | ||
if (short.TryParse(data?.ToString(), out var shortValue)) | ||
{ | ||
return shortValue; | ||
} | ||
return 0; | ||
} | ||
|
||
protected string GetExceptionDebugMessage(Exception exception) | ||
{ | ||
return $"[{exception.GetType()}] {exception.Message}"; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
namespace Necati_Meral_Yahoo_De.Logic.Ads; | ||
public static class AdsType | ||
{ | ||
public const string Int16 = "16 bit integer"; | ||
|
||
public const string String = "String"; | ||
|
||
public const string Boolean = "Boolean"; | ||
|
||
public static string[] Values { get; } = new[] { Int16, String, Boolean }; | ||
} |
17 changes: 17 additions & 0 deletions
17
dotnet/src/NecatiMeral.Logic.Ads/Connected Services/TcAdsWebService/ConnectedService.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
{ | ||
"ExtendedData": { | ||
"inputs": [ | ||
"TcAdsWebService.wsdl" | ||
], | ||
"collectionTypes": [ | ||
"System.Array", | ||
"System.Collections.Generic.Dictionary`2" | ||
], | ||
"internalTypeAccess": true, | ||
"namespaceMappings": [ | ||
"*, TcAdsWebService" | ||
], | ||
"targetFramework": "net45", | ||
"typeReuseMode": "None" | ||
} | ||
} |
477 changes: 477 additions & 0 deletions
477
dotnet/src/NecatiMeral.Logic.Ads/Connected Services/TcAdsWebService/Reference.cs
Large diffs are not rendered by default.
Oops, something went wrong.
127 changes: 127 additions & 0 deletions
127
dotnet/src/NecatiMeral.Logic.Ads/Connected Services/TcAdsWebService/TcAdsWebService.wsdl
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,127 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:typens="http://beckhoff.org/type" xmlns:stk="http://schemas.microsoft.com/soap-toolkit/wsdl-extension" xmlns:wsdlns="http://beckhoff.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="TcAdsWebService" targetNamespace="http://beckhoff.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/"> | ||
<types> | ||
<xsd:schema xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" elementFormDefault="qualified" targetNamespace="http://beckhoff.org/type" /> | ||
</types> | ||
<message name="TcAdsSync.Write"> | ||
<part name="netId" type="xsd:string" /> | ||
<part name="nPort" type="xsd:int" /> | ||
<part name="indexGroup" type="xsd:unsignedInt" /> | ||
<part name="indexOffset" type="xsd:unsignedInt" /> | ||
<part name="pData" type="xsd:base64Binary" /> | ||
</message> | ||
<message name="TcAdsSync.WriteResponse" /> | ||
<message name="TcAdsSync.Read"> | ||
<part name="netId" type="xsd:string" /> | ||
<part name="nPort" type="xsd:int" /> | ||
<part name="indexGroup" type="xsd:unsignedInt" /> | ||
<part name="indexOffset" type="xsd:unsignedInt" /> | ||
<part name="cbLen" type="xsd:int" /> | ||
</message> | ||
<message name="TcAdsSync.ReadResponse"> | ||
<part name="ppData" type="xsd:base64Binary" /> | ||
</message> | ||
<message name="TcAdsSync.ReadWrite"> | ||
<part name="netId" type="xsd:string" /> | ||
<part name="nPort" type="xsd:int" /> | ||
<part name="indexGroup" type="xsd:unsignedInt" /> | ||
<part name="indexOffset" type="xsd:unsignedInt" /> | ||
<part name="cbRdLen" type="xsd:int" /> | ||
<part name="pwrData" type="xsd:base64Binary" /> | ||
</message> | ||
<message name="TcAdsSync.ReadWriteResponse"> | ||
<part name="ppRdData" type="xsd:base64Binary" /> | ||
</message> | ||
<message name="TcAdsSync.ReadState"> | ||
<part name="netId" type="xsd:string" /> | ||
<part name="nPort" type="xsd:int" /> | ||
</message> | ||
<message name="TcAdsSync.ReadStateResponse"> | ||
<part name="pAdsState" type="xsd:int" /> | ||
<part name="pDeviceState" type="xsd:int" /> | ||
</message> | ||
<message name="TcAdsSync.WriteControl"> | ||
<part name="netId" type="xsd:string" /> | ||
<part name="nPort" type="xsd:int" /> | ||
<part name="adsState" type="xsd:int" /> | ||
<part name="deviceState" type="xsd:int" /> | ||
<part name="pData" type="xsd:base64Binary" /> | ||
</message> | ||
<message name="TcAdsSync.WriteControlResponse" /> | ||
<portType name="TcAdsSyncSoapPort"> | ||
<operation name="Write" parameterOrder="netId nPort indexGroup indexOffset pData"> | ||
<input message="wsdlns:TcAdsSync.Write" /> | ||
<output message="wsdlns:TcAdsSync.WriteResponse" /> | ||
</operation> | ||
<operation name="Read" parameterOrder="netId nPort indexGroup indexOffset cbLen ppData"> | ||
<input message="wsdlns:TcAdsSync.Read" /> | ||
<output message="wsdlns:TcAdsSync.ReadResponse" /> | ||
</operation> | ||
<operation name="ReadWrite" parameterOrder="netId nPort indexGroup indexOffset cbRdLen ppRdData pwrData"> | ||
<input message="wsdlns:TcAdsSync.ReadWrite" /> | ||
<output message="wsdlns:TcAdsSync.ReadWriteResponse" /> | ||
</operation> | ||
<operation name="ReadState" parameterOrder="netId nPort pAdsState pDeviceState"> | ||
<input message="wsdlns:TcAdsSync.ReadState" /> | ||
<output message="wsdlns:TcAdsSync.ReadStateResponse" /> | ||
</operation> | ||
<operation name="WriteControl" parameterOrder="netId nPort adsState deviceState pData"> | ||
<input message="wsdlns:TcAdsSync.WriteControl" /> | ||
<output message="wsdlns:TcAdsSync.WriteControlResponse" /> | ||
</operation> | ||
</portType> | ||
<binding name="TcAdsSyncSoapBinding" type="wsdlns:TcAdsSyncSoapPort"> | ||
<stk:binding preferredEncoding="UTF-8" /> | ||
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc" /> | ||
<operation name="Write"> | ||
<soap:operation soapAction="http://beckhoff.org/action/TcAdsSync.Write" /> | ||
<input> | ||
<soap:body use="encoded" namespace="http://beckhoff.org/message/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> | ||
</input> | ||
<output> | ||
<soap:body use="encoded" namespace="http://beckhoff.org/message/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> | ||
</output> | ||
</operation> | ||
<operation name="Read"> | ||
<soap:operation soapAction="http://beckhoff.org/action/TcAdsSync.Read" /> | ||
<input> | ||
<soap:body use="encoded" namespace="http://beckhoff.org/message/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> | ||
</input> | ||
<output> | ||
<soap:body use="encoded" namespace="http://beckhoff.org/message/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> | ||
</output> | ||
</operation> | ||
<operation name="ReadWrite"> | ||
<soap:operation soapAction="http://beckhoff.org/action/TcAdsSync.ReadWrite" /> | ||
<input> | ||
<soap:body use="encoded" namespace="http://beckhoff.org/message/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> | ||
</input> | ||
<output> | ||
<soap:body use="encoded" namespace="http://beckhoff.org/message/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> | ||
</output> | ||
</operation> | ||
<operation name="ReadState"> | ||
<soap:operation soapAction="http://beckhoff.org/action/TcAdsSync.ReadState" /> | ||
<input> | ||
<soap:body use="encoded" namespace="http://beckhoff.org/message/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> | ||
</input> | ||
<output> | ||
<soap:body use="encoded" namespace="http://beckhoff.org/message/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> | ||
</output> | ||
</operation> | ||
<operation name="WriteControl"> | ||
<soap:operation soapAction="http://beckhoff.org/action/TcAdsSync.WriteControl" /> | ||
<input> | ||
<soap:body use="encoded" namespace="http://beckhoff.org/message/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> | ||
</input> | ||
<output> | ||
<soap:body use="encoded" namespace="http://beckhoff.org/message/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> | ||
</output> | ||
</operation> | ||
</binding> | ||
<service name="TcAdsWebService"> | ||
<port name="TcAdsSyncSoapPort" binding="wsdlns:TcAdsSyncSoapBinding"> | ||
<soap:address location="http://localhost/TcAdsWebService/TcAdsWebService.dll" /> | ||
</port> | ||
</service> | ||
</definitions> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
{ | ||
"PackageFormatVersion": "1.0", | ||
"Assembly": "Necati_Meral_Yahoo_De.Logic.Ads.dll", | ||
"PackageName": { | ||
"en": "ADS client nodes", | ||
"de": "ADS client Logikbausteine" | ||
}, | ||
"DependentFiles": [ | ||
"NecatiMeral.LogicNodes.dll", | ||
"LogicModule.Nodes.Helpers.dll", | ||
"LogicModule.ObjectModel.dll" | ||
], | ||
"Version": "0.1.0", | ||
"Author": "Necati Meral", | ||
"Copyright": "2023 Necati Meral", | ||
"DeveloperId": "necati_meral_yahoo_de", | ||
"License": "Free", | ||
"PackageId": "3F1FF768-FD27-46B2-961C-B6EFDF9CB3A4", | ||
"Nodes": [ | ||
{ | ||
"Type": "Necati_Meral_Yahoo_De.Logic.Ads.ReadAdsDataNode", | ||
"Name": { | ||
"en": "ADS: Read value", | ||
"de": "ADS: Wert lesen" | ||
}, | ||
"IsConverter": false, | ||
"Category": "Node", | ||
"DefaultIcon": "icons/noun-ventilation-3506887-44x44.png", | ||
"HelpTooltip": { | ||
"en": "Reads a value by using the ADS protocol.", | ||
"de": "Ließt einen Wert mit Hilfe des ADS-Protokolls." | ||
}, | ||
"HelpFileReference": "$help/ReadAdsDataNode.html" | ||
}, | ||
{ | ||
"Type": "Necati_Meral_Yahoo_De.Logic.Ads.WriteAdsDataNode", | ||
"Name": { | ||
"en": "ADS: Write value", | ||
"de": "ADS: Wert schreiben" | ||
}, | ||
"IsConverter": false, | ||
"Category": "Node", | ||
"DefaultIcon": "icons/noun-ventilation-3506887-44x44.png", | ||
"HelpTooltip": { | ||
"en": "Writes a value by using the ADS protocol.", | ||
"de": "Schreibt einen Wert mit Hilfe des ADS-Protokolls." | ||
}, | ||
"HelpFileReference": "$help/WriteAdsDataNode.html" | ||
} | ||
] | ||
} |
48 changes: 48 additions & 0 deletions
48
dotnet/src/NecatiMeral.Logic.Ads/NecatiMeral.Logic.Ads.csproj
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
<Project Sdk="Microsoft.NET.Sdk"> | ||
|
||
<PropertyGroup> | ||
<TargetFramework>net45</TargetFramework> | ||
<ImplicitUsings>enable</ImplicitUsings> | ||
<ProjectGuid>{3F1FF768-FD27-46B2-961C-B6EFDF9CB3A4}</ProjectGuid> | ||
<AssemblyName>Necati_Meral_Yahoo_De.Logic.Ads</AssemblyName> | ||
<RootNamespace>Necati_Meral_Yahoo_De.Logic.Ads</RootNamespace> | ||
</PropertyGroup> | ||
|
||
<ItemGroup> | ||
<ProjectReference Include="..\NecatiMeral.LogicNodes\NecatiMeral.LogicNodes.csproj" /> | ||
</ItemGroup> | ||
|
||
<ItemGroup> | ||
<Reference Include="System.ServiceModel" /> | ||
</ItemGroup> | ||
|
||
<ItemGroup> | ||
<Compile Update="Properties\Resources.Designer.cs"> | ||
<DesignTime>True</DesignTime> | ||
<AutoGen>True</AutoGen> | ||
<DependentUpon>Resources.resx</DependentUpon> | ||
</Compile> | ||
<EmbeddedResource Update="Properties\Resources.resx"> | ||
<Generator>ResXFileCodeGenerator</Generator> | ||
<LastGenOutput>Resources.Designer.cs</LastGenOutput> | ||
</EmbeddedResource> | ||
</ItemGroup> | ||
|
||
<ItemGroup> | ||
<None Update="Manifest.json"> | ||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> | ||
</None> | ||
<None Update="icons\*.png"> | ||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> | ||
</None> | ||
<None Update="help\*"> | ||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> | ||
</None> | ||
|
||
<Reference Update="System.IO.Compression.FileSystem"> | ||
<IncludeAssets>all</IncludeAssets> | ||
<Private>True</Private> | ||
</Reference> | ||
</ItemGroup> | ||
|
||
</Project> |
216 changes: 216 additions & 0 deletions
216
dotnet/src/NecatiMeral.Logic.Ads/Properties/Resources.Designer.cs
Oops, something went wrong.
171 changes: 171 additions & 0 deletions
171
dotnet/src/NecatiMeral.Logic.Ads/Properties/Resources.de.resx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,171 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<root> | ||
<!-- | ||
Microsoft ResX Schema | ||
Version 2.0 | ||
The primary goals of this format is to allow a simple XML format | ||
that is mostly human readable. The generation and parsing of the | ||
various data types are done through the TypeConverter classes | ||
associated with the data types. | ||
Example: | ||
... ado.net/XML headers & schema ... | ||
<resheader name="resmimetype">text/microsoft-resx</resheader> | ||
<resheader name="version">2.0</resheader> | ||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> | ||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> | ||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> | ||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> | ||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> | ||
<value>[base64 mime encoded serialized .NET Framework object]</value> | ||
</data> | ||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> | ||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> | ||
<comment>This is a comment</comment> | ||
</data> | ||
There are any number of "resheader" rows that contain simple | ||
name/value pairs. | ||
Each data row contains a name, and value. The row also contains a | ||
type or mimetype. Type corresponds to a .NET class that support | ||
text/value conversion through the TypeConverter architecture. | ||
Classes that don't support this are serialized and stored with the | ||
mimetype set. | ||
The mimetype is used for serialized objects, and tells the | ||
ResXResourceReader how to depersist the object. This is currently not | ||
extensible. For a given mimetype the value must be set accordingly: | ||
Note - application/x-microsoft.net.object.binary.base64 is the format | ||
that the ResXResourceWriter will generate, however the reader can | ||
read any of the formats listed below. | ||
mimetype: application/x-microsoft.net.object.binary.base64 | ||
value : The object must be serialized with | ||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter | ||
: and then encoded with base64 encoding. | ||
mimetype: application/x-microsoft.net.object.soap.base64 | ||
value : The object must be serialized with | ||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter | ||
: and then encoded with base64 encoding. | ||
mimetype: application/x-microsoft.net.object.bytearray.base64 | ||
value : The object must be serialized into a byte array | ||
: using a System.ComponentModel.TypeConverter | ||
: and then encoded with base64 encoding. | ||
--> | ||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> | ||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> | ||
<xsd:element name="root" msdata:IsDataSet="true"> | ||
<xsd:complexType> | ||
<xsd:choice maxOccurs="unbounded"> | ||
<xsd:element name="metadata"> | ||
<xsd:complexType> | ||
<xsd:sequence> | ||
<xsd:element name="value" type="xsd:string" minOccurs="0" /> | ||
</xsd:sequence> | ||
<xsd:attribute name="name" use="required" type="xsd:string" /> | ||
<xsd:attribute name="type" type="xsd:string" /> | ||
<xsd:attribute name="mimetype" type="xsd:string" /> | ||
<xsd:attribute ref="xml:space" /> | ||
</xsd:complexType> | ||
</xsd:element> | ||
<xsd:element name="assembly"> | ||
<xsd:complexType> | ||
<xsd:attribute name="alias" type="xsd:string" /> | ||
<xsd:attribute name="name" type="xsd:string" /> | ||
</xsd:complexType> | ||
</xsd:element> | ||
<xsd:element name="data"> | ||
<xsd:complexType> | ||
<xsd:sequence> | ||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | ||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> | ||
</xsd:sequence> | ||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> | ||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> | ||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> | ||
<xsd:attribute ref="xml:space" /> | ||
</xsd:complexType> | ||
</xsd:element> | ||
<xsd:element name="resheader"> | ||
<xsd:complexType> | ||
<xsd:sequence> | ||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | ||
</xsd:sequence> | ||
<xsd:attribute name="name" type="xsd:string" use="required" /> | ||
</xsd:complexType> | ||
</xsd:element> | ||
</xsd:choice> | ||
</xsd:complexType> | ||
</xsd:element> | ||
</xsd:schema> | ||
<resheader name="resmimetype"> | ||
<value>text/microsoft-resx</value> | ||
</resheader> | ||
<resheader name="version"> | ||
<value>2.0</value> | ||
</resheader> | ||
<resheader name="reader"> | ||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | ||
</resheader> | ||
<resheader name="writer"> | ||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | ||
</resheader> | ||
<data name="ReadAdsDataNodeData" xml:space="preserve"> | ||
<value>Ausgang</value> | ||
</data> | ||
<data name="ReadAdsDataNodeDataType" xml:space="preserve"> | ||
<value>Datentyp</value> | ||
</data> | ||
<data name="ReadAdsDataNodeIndexGroup" xml:space="preserve"> | ||
<value>Index-Group</value> | ||
</data> | ||
<data name="ReadAdsDataNodeIndexOffset" xml:space="preserve"> | ||
<value>Index-Offset</value> | ||
</data> | ||
<data name="ReadAdsDataNodeNetId" xml:space="preserve"> | ||
<value>NET ID</value> | ||
</data> | ||
<data name="ReadAdsDataNodePort" xml:space="preserve"> | ||
<value>Port</value> | ||
</data> | ||
<data name="ReadAdsDataNodeRemoteAddress" xml:space="preserve"> | ||
<value>Remote-Adresse</value> | ||
</data> | ||
<data name="ReadAdsDataNodeTrgger" xml:space="preserve"> | ||
<value>Trigger</value> | ||
</data> | ||
<data name="WriteAdsDataNodeData" xml:space="preserve"> | ||
<value>Eingang</value> | ||
</data> | ||
<data name="WriteAdsDataNodeDataType" xml:space="preserve"> | ||
<value>Datentyp</value> | ||
</data> | ||
<data name="WriteAdsDataNodeDiagnostics" xml:space="preserve"> | ||
<value>Diagnosemeldung</value> | ||
</data> | ||
<data name="WriteAdsDataNodeIndexGroup" xml:space="preserve"> | ||
<value>Index-Group</value> | ||
</data> | ||
<data name="WriteAdsDataNodeIndexOffset" xml:space="preserve"> | ||
<value>Index-Offset</value> | ||
</data> | ||
<data name="WriteAdsDataNodeNetId" xml:space="preserve"> | ||
<value>NET ID</value> | ||
</data> | ||
<data name="WriteAdsDataNodePort" xml:space="preserve"> | ||
<value>Port</value> | ||
</data> | ||
<data name="WriteAdsDataNodeRemoteAddress" xml:space="preserve"> | ||
<value>Remote-Adresse</value> | ||
</data> | ||
<data name="ReadAdsDataNodeDiagnostics" xml:space="preserve"> | ||
<value>Diagnosemeldung</value> | ||
</data> | ||
</root> |
171 changes: 171 additions & 0 deletions
171
dotnet/src/NecatiMeral.Logic.Ads/Properties/Resources.resx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,171 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<root> | ||
<!-- | ||
Microsoft ResX Schema | ||
Version 2.0 | ||
The primary goals of this format is to allow a simple XML format | ||
that is mostly human readable. The generation and parsing of the | ||
various data types are done through the TypeConverter classes | ||
associated with the data types. | ||
Example: | ||
... ado.net/XML headers & schema ... | ||
<resheader name="resmimetype">text/microsoft-resx</resheader> | ||
<resheader name="version">2.0</resheader> | ||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> | ||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> | ||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> | ||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> | ||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> | ||
<value>[base64 mime encoded serialized .NET Framework object]</value> | ||
</data> | ||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> | ||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> | ||
<comment>This is a comment</comment> | ||
</data> | ||
There are any number of "resheader" rows that contain simple | ||
name/value pairs. | ||
Each data row contains a name, and value. The row also contains a | ||
type or mimetype. Type corresponds to a .NET class that support | ||
text/value conversion through the TypeConverter architecture. | ||
Classes that don't support this are serialized and stored with the | ||
mimetype set. | ||
The mimetype is used for serialized objects, and tells the | ||
ResXResourceReader how to depersist the object. This is currently not | ||
extensible. For a given mimetype the value must be set accordingly: | ||
Note - application/x-microsoft.net.object.binary.base64 is the format | ||
that the ResXResourceWriter will generate, however the reader can | ||
read any of the formats listed below. | ||
mimetype: application/x-microsoft.net.object.binary.base64 | ||
value : The object must be serialized with | ||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter | ||
: and then encoded with base64 encoding. | ||
mimetype: application/x-microsoft.net.object.soap.base64 | ||
value : The object must be serialized with | ||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter | ||
: and then encoded with base64 encoding. | ||
mimetype: application/x-microsoft.net.object.bytearray.base64 | ||
value : The object must be serialized into a byte array | ||
: using a System.ComponentModel.TypeConverter | ||
: and then encoded with base64 encoding. | ||
--> | ||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> | ||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> | ||
<xsd:element name="root" msdata:IsDataSet="true"> | ||
<xsd:complexType> | ||
<xsd:choice maxOccurs="unbounded"> | ||
<xsd:element name="metadata"> | ||
<xsd:complexType> | ||
<xsd:sequence> | ||
<xsd:element name="value" type="xsd:string" minOccurs="0" /> | ||
</xsd:sequence> | ||
<xsd:attribute name="name" use="required" type="xsd:string" /> | ||
<xsd:attribute name="type" type="xsd:string" /> | ||
<xsd:attribute name="mimetype" type="xsd:string" /> | ||
<xsd:attribute ref="xml:space" /> | ||
</xsd:complexType> | ||
</xsd:element> | ||
<xsd:element name="assembly"> | ||
<xsd:complexType> | ||
<xsd:attribute name="alias" type="xsd:string" /> | ||
<xsd:attribute name="name" type="xsd:string" /> | ||
</xsd:complexType> | ||
</xsd:element> | ||
<xsd:element name="data"> | ||
<xsd:complexType> | ||
<xsd:sequence> | ||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | ||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> | ||
</xsd:sequence> | ||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> | ||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> | ||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> | ||
<xsd:attribute ref="xml:space" /> | ||
</xsd:complexType> | ||
</xsd:element> | ||
<xsd:element name="resheader"> | ||
<xsd:complexType> | ||
<xsd:sequence> | ||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | ||
</xsd:sequence> | ||
<xsd:attribute name="name" type="xsd:string" use="required" /> | ||
</xsd:complexType> | ||
</xsd:element> | ||
</xsd:choice> | ||
</xsd:complexType> | ||
</xsd:element> | ||
</xsd:schema> | ||
<resheader name="resmimetype"> | ||
<value>text/microsoft-resx</value> | ||
</resheader> | ||
<resheader name="version"> | ||
<value>2.0</value> | ||
</resheader> | ||
<resheader name="reader"> | ||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | ||
</resheader> | ||
<resheader name="writer"> | ||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | ||
</resheader> | ||
<data name="ReadAdsDataNodeData" xml:space="preserve"> | ||
<value>Output</value> | ||
</data> | ||
<data name="ReadAdsDataNodeDataType" xml:space="preserve"> | ||
<value>Data type</value> | ||
</data> | ||
<data name="ReadAdsDataNodeDiagnostics" xml:space="preserve"> | ||
<value>Diagnostic message</value> | ||
</data> | ||
<data name="ReadAdsDataNodeIndexGroup" xml:space="preserve"> | ||
<value>Index-Group</value> | ||
</data> | ||
<data name="ReadAdsDataNodeIndexOffset" xml:space="preserve"> | ||
<value>Index-Offset</value> | ||
</data> | ||
<data name="ReadAdsDataNodeNetId" xml:space="preserve"> | ||
<value>NET ID</value> | ||
</data> | ||
<data name="ReadAdsDataNodePort" xml:space="preserve"> | ||
<value>Port</value> | ||
</data> | ||
<data name="ReadAdsDataNodeRemoteAddress" xml:space="preserve"> | ||
<value>Remote-Address</value> | ||
</data> | ||
<data name="ReadAdsDataNodeTrgger" xml:space="preserve"> | ||
<value>Trigger</value> | ||
</data> | ||
<data name="WriteAdsDataNodeData" xml:space="preserve"> | ||
<value>Input</value> | ||
</data> | ||
<data name="WriteAdsDataNodeDataType" xml:space="preserve"> | ||
<value>Data type</value> | ||
</data> | ||
<data name="WriteAdsDataNodeDiagnostics" xml:space="preserve"> | ||
<value>Diagnostic message</value> | ||
</data> | ||
<data name="WriteAdsDataNodeIndexGroup" xml:space="preserve"> | ||
<value>Index-Group</value> | ||
</data> | ||
<data name="WriteAdsDataNodeIndexOffset" xml:space="preserve"> | ||
<value>Index-Offset</value> | ||
</data> | ||
<data name="WriteAdsDataNodeNetId" xml:space="preserve"> | ||
<value>NET ID</value> | ||
</data> | ||
<data name="WriteAdsDataNodePort" xml:space="preserve"> | ||
<value>Port</value> | ||
</data> | ||
<data name="WriteAdsDataNodeRemoteAddress" xml:space="preserve"> | ||
<value>Remote-Address</value> | ||
</data> | ||
</root> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
using LogicModule.ObjectModel.TypeSystem; | ||
using Necati_Meral_Yahoo_De.Helpers; | ||
using TcAdsWebService; | ||
|
||
namespace Necati_Meral_Yahoo_De.Logic.Ads; | ||
public class ReadAdsDataNode : AdsDataNode | ||
{ | ||
[Input(DisplayOrder = 1, IsRequired = true)] | ||
public BoolValueObject Trigger { get; } | ||
|
||
[Output(DisplayOrder = 8, IsDefaultShown = true)] | ||
public AnyValueObject Data { get; } | ||
|
||
public ReadAdsDataNode(INodeContext context) | ||
: base(context, nameof(ReadAdsDataNode)) | ||
{ | ||
context.ThrowIfNull("context"); | ||
|
||
Trigger = TypeService.CreateBool(PortTypes.Binary, "Trigger", false); | ||
Data = TypeService.CreateAny(PortTypes.Any, "Data"); | ||
} | ||
|
||
public override void Execute() | ||
{ | ||
if (Data.HasValue && Data.WasSet) | ||
{ | ||
try | ||
{ | ||
var data = AsyncHelper.RunSync(ExecuteAsync); | ||
Data.Value = data; | ||
Diagnostics.Value = string.Empty; | ||
} | ||
catch (Exception ex) | ||
{ | ||
Diagnostics.Value = GetExceptionDebugMessage(ex); | ||
} | ||
} | ||
} | ||
|
||
protected async Task<object> ExecuteAsync() | ||
{ | ||
var service = new TcAdsSyncSoapPortClient(TcAdsSyncSoapPortClient.EndpointConfiguration.TcAdsSyncSoapPort, RemoteAddress); | ||
var value = await service | ||
.ReadAsync(NetId.Value, Port.Value, IndexGroup.Value, IndexOffset.Value, AdsConsts.ReadWriteLength) | ||
.ConfigureAwait(false); | ||
|
||
return ConvertValue(value.ppData); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
using LogicModule.ObjectModel.TypeSystem; | ||
using Necati_Meral_Yahoo_De.Helpers; | ||
using TcAdsWebService; | ||
|
||
namespace Necati_Meral_Yahoo_De.Logic.Ads; | ||
public class WriteAdsDataNode : AdsDataNode | ||
{ | ||
[Input(DisplayOrder = 8, IsDefaultShown = true, IsInput = true)] | ||
public AnyValueObject Data { get; } | ||
|
||
public WriteAdsDataNode(INodeContext context) | ||
: base(context, nameof(WriteAdsDataNode)) | ||
{ | ||
context.ThrowIfNull("context"); | ||
|
||
Data = TypeService.CreateAny(PortTypes.Any, "Data"); | ||
} | ||
|
||
public override void Execute() | ||
{ | ||
if (Data.HasValue && Data.WasSet) | ||
{ | ||
try | ||
{ | ||
AsyncHelper.RunSync(ExecuteAsync); | ||
Diagnostics.Value = string.Empty; | ||
} | ||
catch (Exception ex) | ||
{ | ||
Diagnostics.Value = GetExceptionDebugMessage(ex); | ||
} | ||
} | ||
} | ||
|
||
protected async Task ExecuteAsync() | ||
{ | ||
var service = new TcAdsSyncSoapPortClient(TcAdsSyncSoapPortClient.EndpointConfiguration.TcAdsSyncSoapPort, RemoteAddress); | ||
var data = GetBytes(Data.Value); | ||
_ = await service | ||
.WriteAsync(NetId.Value, Port.Value, IndexGroup.Value, IndexOffset.Value, data) | ||
.ConfigureAwait(false); | ||
} | ||
} |
219 changes: 219 additions & 0 deletions
219
dotnet/src/NecatiMeral.Logic.Ads/help/ReadAdsDataNode.html
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,219 @@ | ||
<!DOCTYPE html> | ||
<html lang="de"> | ||
<head> | ||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | ||
<title>NecatiMeral - Hilfe - ComfortOnline Eingang</title> | ||
<link rel="StyleSheet" href="default.css" type="text/css" /> | ||
</head> | ||
|
||
<body> | ||
<header> | ||
<span id="headBlack">NecatiMeral Logikbausteine</span> | ||
<span id="headGray">Hilfe</span> | ||
</header> | ||
<section> | ||
<div class="contentholder"> | ||
<div class="navlinks-top"></div> | ||
<h1> | ||
<img src="../icons/noun-ventilation-3506887-44x44.png" alt="" /> | ||
ADS: Wert lesen | ||
</h1> | ||
<h2>Inhaltsverzeichnis</h2> | ||
<img | ||
src="ReadAdsDataNode.png" | ||
alt="" | ||
class="description" | ||
/> | ||
<ul> | ||
<li><a href="#description">Beschreibung</a></li> | ||
<li><a href="#inputs">Eingänge</a></li> | ||
<li><a href="#outputs">Ausgänge</a></li> | ||
<li><a href="#related-links">Weiterführende Links</a></li> | ||
</ul> | ||
<h2 id="description">Beschreibung</h2> | ||
<p> | ||
Mit diesem Baustein kann man mithilfe des ADS-Protokolls (Automation Device Specification) | ||
der Firma Beckhoff Daten aus einem TwinCAT system daten lesen. | ||
|
||
Dieses System wird unter anderem in Wohnraumlüftungen der Firma Brötje verwendet. | ||
</p> | ||
<h2 id="inputs">Eingänge</h2> | ||
<p> | ||
Um Daten abzurufen, muss der <c>Trigger</c>-Eingang | ||
geschaltet werden. Weitere Eingänge sind: | ||
</p> | ||
<table class="Tabelle_Logicnode"> | ||
<colgroup> | ||
<col style="width: 115px" /> | ||
<col style="width: 180px" /> | ||
<col /> | ||
</colgroup> | ||
<tr> | ||
<th>Bezeichnung</th> | ||
<th>Porttyp</th> | ||
<th>Beschreibung</th> | ||
</tr> | ||
<tr> | ||
<td> | ||
<p><i>Trigger</i></p> | ||
</td> | ||
<td> | ||
<p>Bool</p> | ||
</td> | ||
<td> | ||
<p>Triggert das abrufen der Daten</p> | ||
</td> | ||
</tr> | ||
<tr> | ||
<td> | ||
<p><i>Remote-Adresse</i></p> | ||
</td> | ||
<td> | ||
<p>Text</p> | ||
</td> | ||
<td> | ||
<p> | ||
Die Adresse des SOAP-API-Hosts. | ||
</p> | ||
</td> | ||
</tr> | ||
<tr> | ||
<td> | ||
<p><i>NET ID</i></p> | ||
</td> | ||
<td> | ||
<p>Text</p> | ||
</td> | ||
<td> | ||
<p> | ||
Hiermit ist die AMS NET ID, oder auch die TwinCAT system ID gemeint. | ||
</p> | ||
<p> | ||
Dies kann zum Beispiel wie folgt aufgebaut sein: `192.168.178.24.1.1` | ||
</p> | ||
</td> | ||
</tr> | ||
<tr> | ||
<td> | ||
<p><i>Port</i></p> | ||
</td> | ||
<td> | ||
<p>Integer</p> | ||
</td> | ||
<td> | ||
<p> | ||
Portnummer. Die TwinCAT Geräte-ID. | ||
</p> | ||
</td> | ||
</tr> | ||
<tr> | ||
<td> | ||
<p><i>Index-Gruppe</i></p> | ||
</td> | ||
<td> | ||
<p>16-Bit Integer</p> | ||
</td> | ||
<td> | ||
<p> | ||
Index Group der Daten, die gelesen werden sollen. | ||
</p> | ||
</td> | ||
</tr> | ||
<tr> | ||
<td> | ||
<p><i>Index-Offset</i></p> | ||
</td> | ||
<td> | ||
<p>16-Bit Integer</p> | ||
</td> | ||
<td> | ||
<p> | ||
Index Offset der Daten, die gelesen werden sollen. | ||
</p> | ||
</td> | ||
</tr> | ||
<tr> | ||
<td> | ||
<p><i>Datentyp</i></p> | ||
</td> | ||
<td> | ||
<p>Auswahl</p> | ||
</td> | ||
<td> | ||
<p> | ||
Der erwartete Datentyp. | ||
</p> | ||
</td> | ||
</tr> | ||
</table> | ||
<h2 id="outputs">Ausgänge</h2> | ||
<table class="Tabelle_Logicnode"> | ||
<colgroup> | ||
<col style="width: 115px" /> | ||
<col style="width: 180px" /> | ||
<col /> | ||
</colgroup> | ||
<tr> | ||
<th>Bezeichnung</th> | ||
<th>Porttyp</th> | ||
<th>Beschreibung</th> | ||
</tr> | ||
<tr> | ||
<td> | ||
<p><i>Data</i></p> | ||
</td> | ||
<td> | ||
<p>Any</p> | ||
</td> | ||
<td> | ||
<p> | ||
Gibt bei Erfolg den ausgelesenen Wert aus. | ||
</p> | ||
</td> | ||
</tr> | ||
<tr> | ||
<td> | ||
<p><i>Diagnostics</i></p> | ||
</td> | ||
<td> | ||
<p>Text</p> | ||
</td> | ||
<td> | ||
<p>Im Fehlerfall: Detailinformationen zur Diagnose.</p> | ||
</td> | ||
</tr> | ||
</table> | ||
<h2 id="related-links">Weiterführende Links</h2> | ||
<div class="row"> | ||
<ul> | ||
<li> | ||
<a href="https://www.plccoder.com/communicating-between-beckhoff-controllers-part-2-ads/"> | ||
PLCCoder.com: Communicating between Beckhoff controllers part 2: ADS | ||
</a> | ||
</li> | ||
<li> | ||
<a href="https://infosys.beckhoff.com/index.php?content=../content/1031/tcba/12269581963.html&id=8978321744740978019"> | ||
Beckhoff Information System: TS8040 | TwinCAT 2 Building Automation > Lüftungsanlagen | ||
</a> | ||
</li> | ||
</ul> | ||
</div> | ||
</div> | ||
</section> | ||
<footer> | ||
<div id="footerHead"> | ||
NecatiMeral Logikbausteine | ||
<span style="color: #a0a0a0">Hilfe</span> | ||
</div> | ||
<div id="footerNav"> | ||
<span style="float: right" | ||
><a | ||
href="https://github.com/NecatiMeral/gira-x1-logic-nodes" | ||
target="_blank" | ||
>NecatiMeral / gira-x1-logic-nodes auf GitHub</a | ||
></span | ||
> | ||
</div> | ||
</footer> | ||
</body> | ||
</html> |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
210 changes: 210 additions & 0 deletions
210
dotnet/src/NecatiMeral.Logic.Ads/help/WriteAdsDataNode.html
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,210 @@ | ||
<!DOCTYPE html> | ||
<html lang="de"> | ||
<head> | ||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | ||
<title>NecatiMeral - Hilfe - ComfortOnline Eingang</title> | ||
<link rel="StyleSheet" href="default.css" type="text/css" /> | ||
</head> | ||
|
||
<body> | ||
<header> | ||
<span id="headBlack">NecatiMeral Logikbausteine</span> | ||
<span id="headGray">Hilfe</span> | ||
</header> | ||
<section> | ||
<div class="contentholder"> | ||
<div class="navlinks-top"></div> | ||
<h1> | ||
<img src="../icons/noun-ventilation-3506887-44x44.png" alt="" /> | ||
ADS: Wert schreiben | ||
</h1> | ||
<h2>Inhaltsverzeichnis</h2> | ||
<img | ||
src="WriteAdsDataNode.png" | ||
alt="" | ||
class="description" | ||
/> | ||
<ul> | ||
<li><a href="#description">Beschreibung</a></li> | ||
<li><a href="#inputs">Eingänge</a></li> | ||
<li><a href="#outputs">Ausgänge</a></li> | ||
<li><a href="#related-links">Weiterführende Links</a></li> | ||
</ul> | ||
<h2 id="description">Beschreibung</h2> | ||
<p> | ||
Mit diesem Baustein kann man mithilfe des ADS-Protokolls (Automation Device Specification) | ||
der Firma Beckhoff Daten in ein TwinCAT system schreiben. | ||
|
||
Dieses System wird unter anderem in Wohnraumlüftungen der Firma Brötje verwendet. | ||
</p> | ||
<h2 id="inputs">Eingänge</h2> | ||
<p> | ||
Um Daten zu schreiben, muss der <c>Eingang</c>-Eingang | ||
geschaltet werden. Weitere Eingänge sind: | ||
</p> | ||
<table class="Tabelle_Logicnode"> | ||
<colgroup> | ||
<col style="width: 115px" /> | ||
<col style="width: 180px" /> | ||
<col /> | ||
</colgroup> | ||
<tr> | ||
<th>Bezeichnung</th> | ||
<th>Porttyp</th> | ||
<th>Beschreibung</th> | ||
</tr> | ||
<tr> | ||
<td> | ||
<p><i>Eingang</i></p> | ||
</td> | ||
<td> | ||
<p>Any</p> | ||
</td> | ||
<td> | ||
<p> | ||
Schreibt die angegebenen Daten entsprechend der Konfiguration | ||
in das TwinCAT system. Der Typ des hier bereitgestellten Werts | ||
muss mit dem <c>Datentyp</c>-Eingang übereinstimmen. | ||
</p> | ||
</td> | ||
</tr> | ||
<tr> | ||
<td> | ||
<p><i>Remote-Adresse</i></p> | ||
</td> | ||
<td> | ||
<p>Text</p> | ||
</td> | ||
<td> | ||
<p> | ||
Die Adresse des SOAP-API-Hosts. | ||
</p> | ||
</td> | ||
</tr> | ||
<tr> | ||
<td> | ||
<p><i>NET ID</i></p> | ||
</td> | ||
<td> | ||
<p>Text</p> | ||
</td> | ||
<td> | ||
<p> | ||
Hiermit ist die AMS NET ID, oder auch die TwinCAT system ID gemeint. | ||
</p> | ||
<p> | ||
Dies kann zum Beispiel wie folgt aufgebaut sein: `192.168.178.24.1.1` | ||
</p> | ||
</td> | ||
</tr> | ||
<tr> | ||
<td> | ||
<p><i>Port</i></p> | ||
</td> | ||
<td> | ||
<p>Integer</p> | ||
</td> | ||
<td> | ||
<p> | ||
Portnummer. Die TwinCAT Geräte-ID. | ||
</p> | ||
</td> | ||
</tr> | ||
<tr> | ||
<td> | ||
<p><i>Index-Gruppe</i></p> | ||
</td> | ||
<td> | ||
<p>16-Bit Integer</p> | ||
</td> | ||
<td> | ||
<p> | ||
Index Group der Daten, die geschrieben werden sollen. | ||
</p> | ||
</td> | ||
</tr> | ||
<tr> | ||
<td> | ||
<p><i>Index-Offset</i></p> | ||
</td> | ||
<td> | ||
<p>16-Bit Integer</p> | ||
</td> | ||
<td> | ||
<p> | ||
Index Offset der Daten, die geschrieben werden sollen. | ||
</p> | ||
</td> | ||
</tr> | ||
<tr> | ||
<td> | ||
<p><i>Datentyp</i></p> | ||
</td> | ||
<td> | ||
<p>Auswahl</p> | ||
</td> | ||
<td> | ||
<p> | ||
Der zu sendende Datentyp. | ||
</p> | ||
</td> | ||
</tr> | ||
</table> | ||
<h2 id="outputs">Ausgänge</h2> | ||
<table class="Tabelle_Logicnode"> | ||
<colgroup> | ||
<col style="width: 115px" /> | ||
<col style="width: 180px" /> | ||
<col /> | ||
</colgroup> | ||
<tr> | ||
<th>Bezeichnung</th> | ||
<th>Porttyp</th> | ||
<th>Beschreibung</th> | ||
</tr> | ||
<tr> | ||
<td> | ||
<p><i>Diagnostics</i></p> | ||
</td> | ||
<td> | ||
<p>Text</p> | ||
</td> | ||
<td> | ||
<p>Im Fehlerfall: Detailinformationen zur Diagnose.</p> | ||
</td> | ||
</tr> | ||
</table> | ||
<h2 id="related-links">Weiterführende Links</h2> | ||
<div class="row"> | ||
<ul> | ||
<li> | ||
<a href="https://www.plccoder.com/communicating-between-beckhoff-controllers-part-2-ads/"> | ||
PLCCoder.com: Communicating between Beckhoff controllers part 2: ADS | ||
</a> | ||
</li> | ||
<li> | ||
<a href="https://infosys.beckhoff.com/index.php?content=../content/1031/tcba/12269581963.html&id=8978321744740978019"> | ||
Beckhoff Information System: TS8040 | TwinCAT 2 Building Automation > Lüftungsanlagen | ||
</a> | ||
</li> | ||
</ul> | ||
</div> | ||
</div> | ||
</section> | ||
<footer> | ||
<div id="footerHead"> | ||
NecatiMeral Logikbausteine | ||
<span style="color: #a0a0a0">Hilfe</span> | ||
</div> | ||
<div id="footerNav"> | ||
<span style="float: right" | ||
><a | ||
href="https://github.com/NecatiMeral/gira-x1-logic-nodes" | ||
target="_blank" | ||
>NecatiMeral / gira-x1-logic-nodes auf GitHub</a | ||
></span | ||
> | ||
</div> | ||
</footer> | ||
</body> | ||
</html> |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,263 @@ | ||
/* Simple Grid: https://simplegrid.io/ */ | ||
.container{margin-left:auto;margin-right:auto}.font-light{font-weight:300}.font-regular{font-weight:400}.font-heavy{font-weight:700}.left{text-align:left}.right{text-align:right}.center{text-align:center}.justify{text-align:justify}.container{width:90%}.row{position:relative;width:100%}.row [class^=col]{float:left;margin:.5rem 2%;min-height:.125rem}.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9{width:96%}.col-1-sm{width:4.33%}.col-2-sm{width:12.66%}.col-3-sm{width:21%}.col-4-sm{width:29.33%}.col-5-sm{width:37.66%}.col-6-sm{width:46%}.col-7-sm{width:54.33%}.col-8-sm{width:62.66%}.col-9-sm{width:71%}.col-10-sm{width:79.33%}.col-11-sm{width:87.66%}.col-12-sm{width:96%}.row::after{content:"";display:table;clear:both}.hidden-sm{display:none}@media only screen and (min-width:33.75em){.container{width:80%}}@media only screen and (min-width:45em){.col-1{width:4.33%}.col-2{width:12.66%}.col-3{width:21%}.col-4{width:29.33%}.col-5{width:37.66%}.col-6{width:46%}.col-7{width:54.33%}.col-8{width:62.66%}.col-9{width:71%}.col-10{width:79.33%}.col-11{width:87.66%}.col-12{width:96%}.hidden-sm{display:block}}@media only screen and (min-width:60em){.container{width:75%;max-width:60rem}} | ||
|
||
/* General styling of html main parts*/ | ||
html { | ||
color: #3C3C3C; | ||
background-color: #e6e6e6; | ||
font-family: Verdana; | ||
font-size: 12px; | ||
display: block; | ||
line-height: 18px; | ||
overflow-y: scroll; | ||
-moz-hyphens: auto; | ||
-epub-hyphens: auto; | ||
-o-hyphens: auto; | ||
-webkit-hyphens: auto; | ||
-ms-hyphens: auto; | ||
hyphens: auto; | ||
} | ||
|
||
.manhyphens { | ||
-moz-hyphens: manual; | ||
-epub-hyphens: manual; | ||
-o-hyphens: manual; | ||
-webkit-hyphens: manual; | ||
-ms-hyphens: manual; | ||
hyphens: manual; | ||
} | ||
|
||
body { | ||
background-color: #ffffff; | ||
width: 970px; | ||
border: 0; | ||
left: auto; | ||
margin: 40px auto 40px auto; | ||
} | ||
|
||
header { | ||
padding: 30px 35px 0 35px; | ||
} | ||
|
||
#headBlack { | ||
font-family: Arial; | ||
font-size: 36px; | ||
font-weight: normal; | ||
margin-bottom: 0; | ||
padding: 0 36px 0 0; | ||
} | ||
|
||
#headGray { | ||
font-family: Arial; | ||
color: #a0a0a0; | ||
font-size: 36px; | ||
font-weight: normal; | ||
margin-bottom: 0; | ||
} | ||
|
||
section { | ||
padding: 10px 35px 30px 35px; | ||
} | ||
|
||
.contentholder { | ||
width: 900px; | ||
} | ||
|
||
footer { | ||
background-color: #f4f4f4; | ||
padding: 30px 35px 30px 35px; | ||
font-family: Arial; | ||
} | ||
|
||
#footerHead { | ||
font-size: 18px; | ||
} | ||
|
||
#footerNav { | ||
border-top: 1px solid #cccccc; | ||
margin-top: 10px; | ||
padding-top: 10px; | ||
} | ||
|
||
#footerNav img { | ||
border: none; | ||
vertical-align: middle; | ||
width: 33px; | ||
} | ||
|
||
.navlinks-top { | ||
float: right; | ||
line-height: 42px; | ||
font-weight: normal; | ||
padding-right: 33px; | ||
} | ||
|
||
h1 { | ||
font-family: Arial; | ||
font-size: 36px; | ||
line-height: 42px; | ||
font-weight: normal; | ||
color: #323232; | ||
} | ||
|
||
h2 { | ||
font-family: Arial; | ||
font-size: 18px; | ||
line-height: 24px; | ||
font-weight: normal; | ||
color: #323232; | ||
margin: 20px 0 5px 0; | ||
padding: 8px 0 0 0; | ||
} | ||
|
||
h3 { | ||
font-family: Arial; | ||
font-size: 15px; | ||
line-height: 20px; | ||
margin: 6px 0 4px 0; | ||
padding: 6px 0 0 0; | ||
} | ||
|
||
h4 { | ||
font-family: Arial; | ||
font-size: 13px; | ||
line-height: 15px; | ||
margin: 2px 0 4px 0; | ||
padding: 2px 0 3px 0; | ||
} | ||
|
||
p { | ||
margin: 8px 0 8px 0; | ||
} | ||
|
||
.box-noscroll { | ||
width: 865px; | ||
height: 19px; | ||
border: 1px solid #CCC; | ||
white-space: pre; | ||
} | ||
|
||
.box-scroll-x { | ||
width: 865px; | ||
height: 34px; | ||
border: 1px solid #CCC; | ||
white-space: pre; | ||
overflow-x: scroll; | ||
} | ||
|
||
a { | ||
color: #666; | ||
display: inline; | ||
} | ||
|
||
a:hover { | ||
color: #333; | ||
} | ||
|
||
ol, | ||
ul { | ||
padding: 0 0 0 20px; | ||
margin: -4px 0 0 0; | ||
} | ||
|
||
li { | ||
margin: 4px 0 4px 0; | ||
} | ||
|
||
dl { | ||
padding: 0 0 0 20px; | ||
margin: 0 0 0 0; | ||
display: grid; | ||
grid-template-columns: max-content auto; | ||
} | ||
|
||
dt { | ||
grid-column-start: 1; | ||
margin: 2px 0 0 0; | ||
} | ||
|
||
dd { | ||
grid-column-start: 2; | ||
margin: 2px 0 0 1.5em; | ||
} | ||
|
||
table { | ||
border-collapse: collapse; | ||
} | ||
|
||
th, | ||
td { | ||
border-bottom: 1px solid #cccccc; | ||
border-right: 1px solid #cccccc; | ||
vertical-align: top; | ||
} | ||
|
||
th { | ||
text-align: left; | ||
padding: 0 4px 2px 4px; | ||
} | ||
|
||
td { | ||
padding: 0 4px 0 4px; | ||
} | ||
|
||
table.Tabelle_Logicnode { | ||
width: 100%; | ||
max-width: 900px; | ||
margin: 8px 0 8px 0; | ||
} | ||
|
||
table.Tabelle_Logicnode th { | ||
font-family: Arial; | ||
font-size: 15px; | ||
line-height: 20px; | ||
text-align: left; | ||
vertical-align: baseline; | ||
padding: 6px 4px 8px 4px; | ||
border-bottom: 1px solid #cccccc; | ||
border-right: none; | ||
} | ||
|
||
table.Tabelle_Logicnode th.small { | ||
font-size: 13px; | ||
line-height: 16px; | ||
} | ||
|
||
table.Tabelle_Logicnode td { | ||
vertical-align: top; | ||
padding: 0 4px 0 4px; | ||
border-bottom: 1px solid #cccccc; | ||
border-right: none; | ||
} | ||
|
||
table.Tabelle_Logicnode td.group { | ||
border-bottom: none; | ||
} | ||
|
||
table.Tabelle_Logicnode td.group p { | ||
margin: 6px 0 2px 0; | ||
} | ||
|
||
img { | ||
border: none; | ||
margin: 0 0 0 0; | ||
vertical-align: middle; | ||
} | ||
|
||
.description { | ||
border: none; | ||
margin: 0 0 0 0; | ||
padding: 3px 30px 40px 40px; | ||
float: right; | ||
} | ||
|
||
.example { | ||
border: none; | ||
margin: 0 0 0 0; | ||
padding-top: 6px; | ||
max-width: 900px; | ||
} | ||
|
||
c { | ||
font-family: 'Courier New', Courier, monospace; | ||
} |
Binary file added
BIN
+3.72 KB
dotnet/src/NecatiMeral.Logic.Ads/icons/noun-ventilation-3506887-44x44.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters