diff --git a/src/AasxPackageExplorer.sln b/src/AasxPackageExplorer.sln
index d268877f..815d2c34 100644
--- a/src/AasxPackageExplorer.sln
+++ b/src/AasxPackageExplorer.sln
@@ -154,7 +154,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AasxPluginProductChangeNoti
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AasxPluginSmdExporter", "AasxPluginSmdExporter\AasxPluginSmdExporter.csproj", "{621D9B9C-1723-48CB-AE2D-3C17390B7F4B}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AasxOpcUa2Client", "AasxOpcUa2Client\AasxOpcUa2Client.csproj", "{6B8BDF03-9C9B-492B-8904-9756B498B9B7}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AasxOpcUa2Client", "AasxOpcUa2Client\AasxOpcUa2Client.csproj", "{6B8BDF03-9C9B-492B-8904-9756B498B9B7}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
diff --git a/src/AasxPluginAssetInterfaceDesc/AidInterfaceStatus.cs b/src/AasxPluginAssetInterfaceDesc/AidInterfaceStatus.cs
index 4f00087b..d492efaa 100644
--- a/src/AasxPluginAssetInterfaceDesc/AidInterfaceStatus.cs
+++ b/src/AasxPluginAssetInterfaceDesc/AidInterfaceStatus.cs
@@ -27,6 +27,8 @@ This source code may use other Open Source software components (see LICENSE.txt)
using System.Windows.Media.Animation;
using AasxIntegrationBase.AdminShellEvents;
using System.IO;
+using Newtonsoft.Json.Linq;
+using Newtonsoft.Json;
namespace AasxPluginAssetInterfaceDescription
{
@@ -68,6 +70,11 @@ public class AidIfxItemStatus
///
public CD_Forms FormData = null;
+ ///
+ /// To help map object payloads(JSON, XML or Octet-stream that is complex)
+ ///
+ public string payloadType = null;
+
///
/// String data for value incl. unit information.
///
@@ -121,6 +128,17 @@ public class AidInterfaceStatus
///
public string EndpointBase = "";
+
+ ///
+ /// Used by byteStream payload for decoding, presently, mainly used by Modbus but other protocols will also be using it
+ ///
+ public string mostSignificantByte = "";
+
+ ///
+ /// Used by byteStream payload for decoding, presently, mainly used by Modbus but other protocols will also be using it
+ ///
+ public string mostSignificantWord = "";
+
///
/// Actual summary of the status of the interface.
///
@@ -239,6 +257,16 @@ public class AidBaseConnection
///
public string Password = null;
+ ///
+ /// Used by byteStream payload for decoding, presently, mainly used by Modbus but other protocols will also be using it
+ ///
+ public string mostSignificantByte = "";
+
+ ///
+ /// Used by byteStream payload for decoding, presently, mainly used by Modbus but other protocols will also be using it
+ ///
+ public string mostSignificantWord = "";
+
///
/// If greater 10, specifies the time rate in milli seconds for polling the
/// respective subscriptions.
@@ -310,27 +338,70 @@ public void NotifyOutputItems(AidIfxItemStatus item, string strval)
foreach (var moi in item.MapOutputItems)
{
// valid?
- if (moi?.MapRelation?.Second == null
- || !(moi.MapRelation.SecondHint is Aas.Property prop))
+ if (moi?.MapRelation?.Second == null)
continue;
- // set here
- prop.Value = strval;
+ // For literal payloads
+ else if (moi.MapRelation.SecondHint is Aas.Property prop)
+ {
+ // set here
+ prop.Value = strval;
+
+ // create
+ var evi = new AasPayloadUpdateValueItem(
+ path: (prop)?.GetModelReference()?.Keys,
+ value: prop.ValueAsText());
- // create
- var evi = new AasPayloadUpdateValueItem(
- path: (prop)?.GetModelReference()?.Keys,
- value: prop.ValueAsText());
+ evi.ValueId = prop.ValueId;
- evi.ValueId = prop.ValueId;
+ evi.FoundReferable = prop;
- evi.FoundReferable = prop;
+ // add to the aas element itself
+ DiaryDataDef.AddAndSetTimestamps(prop, evi, isCreate: false);
- // add to the aas element itself
- DiaryDataDef.AddAndSetTimestamps(prop, evi, isCreate: false);
+ // give upwards for animation
+ AnimateSingleValueChange?.Invoke(prop);
+ }
+
+ // for object payloads--only JSON for now.
+ else if (moi.MapRelation.SecondHint is Aas.SubmodelElementCollection coll)
+ {
+ //run complex mappping here
+
+ JObject payloadJObject;
+
+ using (var tdStringReader = new StringReader(strval))
+ using (var jsonTextReader = new JsonTextReader(tdStringReader)
+ { DateParseHandling = DateParseHandling.None })
+ {
+ payloadJObject = JObject.FromObject(JToken.ReadFrom(jsonTextReader));
+ }
+ foreach (var internalProperty in coll.Value)
+ {
+ if ((internalProperty is Aas.Property internalProp) && payloadJObject.ContainsKey(internalProperty.IdShort))
+ {
+ // set The value related to the json key found here
+ internalProp.Value = payloadJObject[internalProperty.IdShort].ToString();
+
+ // create
+ var evi = new AasPayloadUpdateValueItem(
+ path: (internalProp)?.GetModelReference()?.Keys,
+ value: internalProp.ValueAsText());
- // give upwards for animation
- AnimateSingleValueChange?.Invoke(prop);
+ evi.ValueId = internalProp.ValueId;
+
+ evi.FoundReferable = internalProp;
+
+ // add to the aas element itself
+ DiaryDataDef.AddAndSetTimestamps(internalProp, evi, isCreate: false);
+
+ // give upwards for animation
+ AnimateSingleValueChange?.Invoke(internalProp);
+ }
+ }
+ }
+
+
}
}
}
@@ -762,6 +833,8 @@ public void PrepareAidInformation(Aas.ISubmodel smAid, Aas.ISubmodel smMapping =
DisplayName = $"{dn}",
Info = $"{ifx.EndpointMetadata?.Base}",
EndpointBase = "" + ifx.EndpointMetadata?.Base,
+ mostSignificantByte = "" + ifx.EndpointMetadata?.Modv_mostSignificantByte,
+ mostSignificantWord = "" + ifx.EndpointMetadata?.Modv_mostSignificantWord,
Tag = ifx
};
InterfaceStatus.Add(aidIfx);
@@ -780,7 +853,7 @@ public void PrepareAidInformation(Aas.ISubmodel smAid, Aas.ISubmodel smMapping =
FormData = propName.Forms,
Value = "???"
};
- aidIfx.AddItem(ifcItem);
+
// does (some) mapping have a source with this property name?
var lst = new List();
@@ -797,19 +870,26 @@ public void PrepareAidInformation(Aas.ISubmodel smAid, Aas.ISubmodel smMapping =
MapRelation = mr
});
if (lst.Count > 0)
+ {
+ aidIfx.AddItem(ifcItem);
ifcItem.MapOutputItems = lst;
+ }
+
// directly recurse?
- /*
if (propName?.Properties?.Property != null)
foreach (var child in propName.Properties.Property)
+ {
+ //added this to cater for internal object mapping.
+ child.Forms = propName.Forms;
recurseProp(location + " . " + ifcItem.DisplayName, child);
- */
+ }
+
};
- if (ifx.InterfaceMetadata?.Properties?.Property == null)
+ if (ifx.InteractionMetadata?.Properties?.Property == null)
continue;
- foreach (var propName in ifx.InterfaceMetadata?.Properties?.Property)
+ foreach (var propName in ifx.InteractionMetadata?.Properties?.Property)
recurseProp("\u2302", propName);
}
}
@@ -869,12 +949,12 @@ public void SetAidInformationForUpdateAndTimeout(
// polltimes
SetDoubleOnDefaultOrAvgOfIntList(
ref ifc.UpdateFreqMs, 10.0, defaultUpdateFreqMs,
- SelectValuesToIntList(ifc?.Items?.Values, (it) => it.FormData?.Modbus_pollingTime));
+ SelectValuesToIntList(ifc?.Items?.Values, (it) => it.FormData?.Modv_pollingTime));
// time out
SetDoubleOnDefaultOrAvgOfIntList(
ref ifc.TimeOutMs, 10.0, defaultTimeOutMs,
- SelectValuesToIntList(ifc?.Items?.Values, (it) => it.FormData?.Modbus_timeout));
+ SelectValuesToIntList(ifc?.Items?.Values, (it) => it.FormData?.Modv_timeout));
}
// for OPC UA, analyze update frequency and timeout
diff --git a/src/AasxPluginAssetInterfaceDesc/AidModbusConnection.cs b/src/AasxPluginAssetInterfaceDesc/AidModbusConnection.cs
index 02d03e09..9820c24f 100644
--- a/src/AasxPluginAssetInterfaceDesc/AidModbusConnection.cs
+++ b/src/AasxPluginAssetInterfaceDesc/AidModbusConnection.cs
@@ -72,7 +72,7 @@ override public int UpdateItemValue(AidIfxItemStatus item)
{
// access
if (item?.FormData?.Href?.HasContent() != true
- || item.FormData.Modbus_function?.HasContent() != true)
+ || item.FormData.Modv_function?.HasContent() != true)
return 0;
int res = 0;
@@ -90,10 +90,15 @@ override public int UpdateItemValue(AidIfxItemStatus item)
// perform function (id = in data)
byte[] id = null;
- if (item.FormData.Modbus_function.Trim().ToLower() == "readholdingregisters")
+ if (item.FormData.Modv_function.Trim().ToLower() == "readholdingregisters")
{
+ //Get device unitID
+ int.TryParse(TargetUri.LocalPath.Replace("/", ""), out var unitID);
+
// readHoldingRegisters
- id = (Client.ReadHoldingRegisters(99, address, 2 * quantity)).ToArray();
+ id = (Client.ReadHoldingRegisters(unitID, address, 2 * quantity)).ToArray();
+ if (BitConverter.IsLittleEndian)
+ Array.Reverse(id);
// time
LastActive = DateTime.Now;
}
@@ -104,90 +109,128 @@ override public int UpdateItemValue(AidIfxItemStatus item)
// swapping (od = out data)
// https://doc.iobroker.net/#de/adapters/adapterref/iobroker.modbus/README.md?wp
- var mbtp = item.FormData.Modbus_type?.ToLower().Trim();
+ var mbtp = item.FormData.Modv_type?.ToLower();
+ var byteSequence = item.FormData.Modv_mostSignificantByte;
+ var wordSequence = item.FormData.Modv_mostSignificantWord;
byte[] od = id.ToArray();
if (quantity == 2)
{
- // 32bit operation on AABBCCDD
- if (mbtp.EndsWith("be"))
- {
- // big endian AABBCCDD => AABBCCDD
- od[3] = id[3]; od[2] = id[2]; od[1] = id[1]; od[0] = id[0];
- }
- else
- if (mbtp.EndsWith("le"))
- {
- // little endian AABBCCDD => DDCCBBAA
- od[3] = id[0]; od[2] = id[1]; od[1] = id[2]; od[0] = id[3];
- }
- else
- if (mbtp.EndsWith("sw"))
- {
- // Big Endian Word Swap AABBCCDD => CCDDAABB
- od[3] = id[2]; od[2] = id[3]; od[1] = id[0]; od[0] = id[1];
- }
- else
- if (mbtp.EndsWith("sb"))
- {
- // Big Endian Byte Swap AABBCCDD => DDCCBBAA
- od[3] = id[0]; od[2] = id[1]; od[1] = id[2]; od[0] = id[3];
- }
+ if (byteSequence == "" && wordSequence == "") // //byte sequence defined at the local level
+
+ //byte sequence defined at the global level
+ if ((mostSignificantByte == "" && mostSignificantWord == "") ||
+ (mostSignificantByte == "true" && mostSignificantWord == "") ||
+ (mostSignificantByte == "" && mostSignificantWord == "true") ||
+ (mostSignificantByte == "true" && mostSignificantWord == "true"))
+ {
+ //use default, byte == true and word == true (Big endian and no word swapping)
+ }
+
+ else if ((mostSignificantByte == "" && mostSignificantWord == "false") ||
+ (mostSignificantByte == "true" && mostSignificantWord == "false"))
+ {
+ //big endian wordswap AABBCCDD => CCDDAABB
+ od[3] = id[1]; od[2] = id[0]; od[1] = id[3]; od[0] = id[2];
+ }
+ else if ((mostSignificantByte == "false" && mostSignificantWord == "true") ||
+ (mostSignificantByte == "false" && mostSignificantWord == ""))
+ {
+ // Little Endian AABBCCDD => DDCCBBAA
+ Array.Reverse(od);
+ }
+
+ //byte sequence defined at the global level
+ else if ((byteSequence == "true" && wordSequence == "") ||
+ (byteSequence == "" && wordSequence == "true") ||
+ (byteSequence == "true" && wordSequence == "true"))
+ {
+ //use default, byte == true and word == true (Big endian and no word swapping)
+ }
+
+ //byte sequence defined at the global level
+ else if ((byteSequence == "true" && wordSequence == "false") ||
+ (byteSequence == "" && wordSequence == "false"))
+ {
+ //big endian wordswap AABBCCDD => CCDDAABB
+ od[3] = id[1]; od[2] = id[0]; od[1] = id[3]; od[0] = id[2];
+ }
+
+ //byte sequence defined at the global level
+ else if ((byteSequence == "false" && wordSequence == "true") ||
+ (byteSequence == "false" && wordSequence == ""))
+ {
+ // Little Endian little endian AABBCCDD => DDCCBBAA
+ Array.Reverse(od);
+ }
+
+
+
}
else
if (quantity == 1)
{
- // 16bit operation on AABB
- if (mbtp.EndsWith("le"))
+
+ if (byteSequence == "" && mostSignificantByte == "false") //byte sequence defined at the global level
+ {
+ // little endian AABB => BBAA
+ od[1] = id[0]; od[0] = id[1];
+ }
+
+ else if (byteSequence != "" && byteSequence.ToLower() == "false") //byte sequence defined at local level, it overrides gloabal level
{
// little endian AABB => BBAA
od[1] = id[0]; od[0] = id[1];
}
+ else
+ {
+ // big endian AABB => AABB
+ }
}
// conversion to value
// idea: (1) convert to binary type, (2) convert to adequate string representation
var strval = "";
- if (mbtp.StartsWith("uint32") && quantity >= 2)
+ if (mbtp == "xsd:unsignedint" && quantity >= 2)
{
strval = BitConverter.ToUInt32(od).ToString();
}
else
- if (mbtp.StartsWith("int32") && quantity >= 2)
+ if (mbtp == "xsd:integer" && quantity >= 2)
{
strval = BitConverter.ToInt32(od).ToString();
}
else
- if (mbtp.StartsWith("uint16") && quantity >= 1)
+ if (mbtp == "xsd:int" && quantity >= 1)
{
strval = BitConverter.ToUInt16(od).ToString();
}
else
- if (mbtp.StartsWith("int16") && quantity >= 1)
+ if (mbtp == "xsd:int" && quantity >= 1)
{
strval = BitConverter.ToInt16(od).ToString();
}
else
- if (mbtp.StartsWith("uint8") && quantity >= 1)
+ if (mbtp == "xsd:unsignedshort" && quantity >= 1)
{
strval = Convert.ToByte(od[0]).ToString();
}
else
- if (mbtp.StartsWith("int8") && quantity >= 1)
+ if (mbtp == "xsd:short" && quantity >= 1)
{
strval = Convert.ToSByte(od[0]).ToString();
}
else
- if (mbtp.StartsWith("float") && quantity >= 2)
+ if (mbtp == "xsd:float" && quantity >= 2)
{
strval = BitConverter.ToSingle(od).ToString("R", CultureInfo.InvariantCulture);
}
else
- if (mbtp.StartsWith("double") && quantity >= 4)
+ if (mbtp == "xsd:double" && quantity >= 4)
{
strval = BitConverter.ToDouble(od).ToString("R", CultureInfo.InvariantCulture);
}
else
- if (mbtp.StartsWith("string") && quantity >= 1)
+ if (mbtp == "xsd:string" && quantity >= 1)
{
strval = BitConverter.ToString(od);
}
diff --git a/src/AasxPredefinedConcepts/Mappings/MappingsAssetInterfacesDescription.cs b/src/AasxPredefinedConcepts/Mappings/MappingsAssetInterfacesDescription.cs
index f6f78a18..b4d97890 100644
--- a/src/AasxPredefinedConcepts/Mappings/MappingsAssetInterfacesDescription.cs
+++ b/src/AasxPredefinedConcepts/Mappings/MappingsAssetInterfacesDescription.cs
@@ -31,20 +31,20 @@ public class CD_GenericInterface
[AasConcept(Cd = "https://www.w3.org/2019/wot/td#title", Card = AasxPredefinedCardinality.One)]
public string Title;
- [AasConcept(Cd = "https://www.w3.org/2019/wot/td#created", Card = AasxPredefinedCardinality.ZeroToOne)]
+ [AasConcept(Cd = "http://purl.org/dc/terms/created", Card = AasxPredefinedCardinality.ZeroToOne)]
public DateTime? Created;
- [AasConcept(Cd = "https://www.w3.org/2019/wot/td#modified", Card = AasxPredefinedCardinality.ZeroToOne)]
+ [AasConcept(Cd = "http://purl.org/dc/terms/modified", Card = AasxPredefinedCardinality.ZeroToOne)]
public DateTime? Modified;
- [AasConcept(Cd = "https://www.w3.org/2019/wot/td#support", Card = AasxPredefinedCardinality.ZeroToOne)]
+ [AasConcept(Cd = "https://www.w3.org/2019/wot/td#supportContact", Card = AasxPredefinedCardinality.ZeroToOne)]
public string Support;
[AasConcept(Cd = "https://admin-shell.io/idta/AssetInterfacesDescription/1/0/EndpointMetadata", Card = AasxPredefinedCardinality.One)]
public CD_EndpointMetadata EndpointMetadata = new CD_EndpointMetadata();
- [AasConcept(Cd = "https://admin-shell.io/idta/AssetInterfacesDescription/1/0/InterfaceMetadata", Card = AasxPredefinedCardinality.One)]
- public CD_InterfaceMetadata InterfaceMetadata = new CD_InterfaceMetadata();
+ [AasConcept(Cd = "https://admin-shell.io/idta/AssetInterfacesDescription/1/0/InteractionMetadata", Card = AasxPredefinedCardinality.One)]
+ public CD_InterfaceMetadata InteractionMetadata = new CD_InterfaceMetadata();
[AasConcept(Cd = "https://admin-shell.io/idta/AssetInterfacesDescription/1/0/ExternalDescriptor", Card = AasxPredefinedCardinality.ZeroToOne)]
public CD_ExternalDescriptor ExternalDescriptor = null;
@@ -56,12 +56,18 @@ public class CD_GenericInterface
[AasConcept(Cd = "https://admin-shell.io/idta/AssetInterfacesDescription/1/0/EndpointMetadata")]
public class CD_EndpointMetadata
{
- [AasConcept(Cd = "https://www.w3.org/2019/wot/td#base", Card = AasxPredefinedCardinality.One)]
+ [AasConcept(Cd = "https://www.w3.org/2019/wot/td#baseURI", Card = AasxPredefinedCardinality.One)]
public string Base;
[AasConcept(Cd = "https://www.w3.org/2019/wot/hypermedia#forContentType", Card = AasxPredefinedCardinality.One)]
public string ContentType;
+ [AasConcept(Cd = "https://www.w3.org/2019/wot/modbus#hasMostSignificantByte", Card = AasxPredefinedCardinality.ZeroToOne)]
+ public string Modv_mostSignificantByte = "";
+
+ [AasConcept(Cd = "https://www.w3.org/2019/wot/modbus#hasMostSignificantWord", Card = AasxPredefinedCardinality.ZeroToOne)]
+ public string Modv_mostSignificantWord = "";
+
[AasConcept(Cd = "https://www.w3.org/2019/wot/td#hasSecurityConfiguration", Card = AasxPredefinedCardinality.One)]
public CD_Security Security = new CD_Security();
@@ -117,7 +123,7 @@ public class CD_SecurityDefinitions
[AasConcept(Cd = "https://www.w3.org/2019/wot/security#NoSecurityScheme")]
public class CD_Nosec_sc
{
- [AasConcept(Cd = "https://www.w3.org/2019/wot/td#definesSecurityScheme", Card = AasxPredefinedCardinality.One)]
+ [AasConcept(Cd = "https://www.w3.org/2019/wot/security#SecurityScheme", Card = AasxPredefinedCardinality.One)]
public string Scheme;
// auto-generated informations
@@ -127,7 +133,7 @@ public class CD_Nosec_sc
[AasConcept(Cd = "https://www.w3.org/2019/wot/security#AutoSecurityScheme")]
public class CD_Auto_sc
{
- [AasConcept(Cd = "https://www.w3.org/2019/wot/td#definesSecurityScheme", Card = AasxPredefinedCardinality.One)]
+ [AasConcept(Cd = "https://www.w3.org/2019/wot/security#SecurityScheme", Card = AasxPredefinedCardinality.One)]
public string Scheme;
[AasConcept(Cd = "https://www.w3.org/2019/wot/security#proxy", Card = AasxPredefinedCardinality.ZeroToOne)]
@@ -140,7 +146,7 @@ public class CD_Auto_sc
[AasConcept(Cd = "https://www.w3.org/2019/wot/security#BasicSecurityScheme")]
public class CD_Basic_sc
{
- [AasConcept(Cd = "https://www.w3.org/2019/wot/td#definesSecurityScheme", Card = AasxPredefinedCardinality.One)]
+ [AasConcept(Cd = "https://www.w3.org/2019/wot/security#SecurityScheme", Card = AasxPredefinedCardinality.One)]
public string Scheme;
[AasConcept(Cd = "https://www.w3.org/2019/wot/security#name", Card = AasxPredefinedCardinality.ZeroToOne)]
@@ -159,7 +165,7 @@ public class CD_Basic_sc
[AasConcept(Cd = "https://www.w3.org/2019/wot/security#ComboSecurityScheme")]
public class CD_Combo_sc
{
- [AasConcept(Cd = "https://www.w3.org/2019/wot/td#definesSecurityScheme", Card = AasxPredefinedCardinality.One)]
+ [AasConcept(Cd = "https://www.w3.org/2019/wot/security#SecurityScheme", Card = AasxPredefinedCardinality.One)]
public string Scheme;
[AasConcept(Cd = "https://www.w3.org/2019/wot/json-schema#oneOf", Card = AasxPredefinedCardinality.One)]
@@ -194,7 +200,7 @@ public class CD_AllOf
[AasConcept(Cd = "https://www.w3.org/2019/wot/security#APIKeySecurityScheme")]
public class CD_Apikey_sc
{
- [AasConcept(Cd = "https://www.w3.org/2019/wot/td#definesSecurityScheme", Card = AasxPredefinedCardinality.One)]
+ [AasConcept(Cd = "https://www.w3.org/2019/wot/security#SecurityScheme", Card = AasxPredefinedCardinality.One)]
public string Scheme;
[AasConcept(Cd = "https://www.w3.org/2019/wot/security#name", Card = AasxPredefinedCardinality.ZeroToOne)]
@@ -213,7 +219,7 @@ public class CD_Apikey_sc
[AasConcept(Cd = "https://www.w3.org/2019/wot/security#PSKSecurityScheme")]
public class CD_Psk_sc
{
- [AasConcept(Cd = "https://www.w3.org/2019/wot/td#definesSecurityScheme", Card = AasxPredefinedCardinality.One)]
+ [AasConcept(Cd = "https://www.w3.org/2019/wot/security#SecurityScheme", Card = AasxPredefinedCardinality.One)]
public string Scheme;
[AasConcept(Cd = "https://www.w3.org/2019/wot/security#identity", Card = AasxPredefinedCardinality.ZeroToOne)]
@@ -229,7 +235,7 @@ public class CD_Psk_sc
[AasConcept(Cd = "https://www.w3.org/2019/wot/security#DigestSecurityScheme")]
public class CD_Digest_sc
{
- [AasConcept(Cd = "https://www.w3.org/2019/wot/td#definesSecurityScheme", Card = AasxPredefinedCardinality.One)]
+ [AasConcept(Cd = "https://www.w3.org/2019/wot/security#SecurityScheme", Card = AasxPredefinedCardinality.One)]
public string Scheme;
[AasConcept(Cd = "https://www.w3.org/2019/wot/security#name", Card = AasxPredefinedCardinality.ZeroToOne)]
@@ -250,7 +256,7 @@ public class CD_Digest_sc
[AasConcept(Cd = "https://www.w3.org/2019/wot/security#BearerSecurityScheme")]
public class CD_Bearer_sc
{
- [AasConcept(Cd = "https://www.w3.org/2019/wot/td#definesSecurityScheme", Card = AasxPredefinedCardinality.One)]
+ [AasConcept(Cd = "https://www.w3.org/2019/wot/security#SecurityScheme", Card = AasxPredefinedCardinality.One)]
public string Scheme;
[AasConcept(Cd = "https://www.w3.org/2019/wot/security#name", Card = AasxPredefinedCardinality.ZeroToOne)]
@@ -278,7 +284,7 @@ public class CD_Bearer_sc
[AasConcept(Cd = "https://www.w3.org/2019/wot/security#OAuth2SecurityScheme")]
public class CD_Oauth2_sc
{
- [AasConcept(Cd = "https://www.w3.org/2019/wot/td#definesSecurityScheme", Card = AasxPredefinedCardinality.One)]
+ [AasConcept(Cd = "https://www.w3.org/2019/wot/security#SecurityScheme", Card = AasxPredefinedCardinality.One)]
public string Scheme;
[AasConcept(Cd = "https://www.w3.org/2019/wot/security#token", Card = AasxPredefinedCardinality.ZeroToOne)]
@@ -441,23 +447,29 @@ public class CD_Forms
[AasConcept(Cd = "https://www.w3.org/2019/wot/http#timeout", Card = AasxPredefinedCardinality.ZeroToOne)]
public string Htv_timeout;
- [AasConcept(Cd = "https://www.w3.org/2019/wot/modbus#Function", Card = AasxPredefinedCardinality.ZeroToOne)]
- public string Modbus_function;
+ [AasConcept(Cd = "https://www.w3.org/2019/wot/modbus#hasFunction", Card = AasxPredefinedCardinality.ZeroToOne)]
+ public string Modv_function;
- [AasConcept(Cd = "https://www.w3.org/2019/wot/modbus#Entity", Card = AasxPredefinedCardinality.ZeroToOne)]
- public string Modbus_entity;
+ [AasConcept(Cd = "https://www.w3.org/2019/wot/modbus#hasEntity", Card = AasxPredefinedCardinality.ZeroToOne)]
+ public string Modv_entity;
[AasConcept(Cd = "https://www.w3.org/2019/wot/modbus#hasZeroBasedAddressingFlag", Card = AasxPredefinedCardinality.ZeroToOne)]
- public string Modbus_zeroBasedAddressing;
+ public string Modv_zeroBasedAddressing;
+
+ [AasConcept(Cd = "https://www.w3.org/2019/wot/modbus#hasPollingTime", Card = AasxPredefinedCardinality.ZeroToOne)]
+ public string Modv_pollingTime;
+
+ [AasConcept(Cd = "https://www.w3.org/2019/wot/modbus#hasTimeout", Card = AasxPredefinedCardinality.ZeroToOne)]
+ public string Modv_timeout;
- [AasConcept(Cd = "https://www.w3.org/2019/wot/modbus#pollingTime", Card = AasxPredefinedCardinality.ZeroToOne)]
- public string Modbus_pollingTime;
+ [AasConcept(Cd = "https://www.w3.org/2019/wot/modbus#hasPayloadDataType", Card = AasxPredefinedCardinality.ZeroToOne)]
+ public string Modv_type;
- [AasConcept(Cd = "https://www.w3.org/2019/wot/modbus#timeout", Card = AasxPredefinedCardinality.ZeroToOne)]
- public string Modbus_timeout;
+ [AasConcept(Cd = "https://www.w3.org/2019/wot/modbus#hasMostSignificantByte", Card = AasxPredefinedCardinality.ZeroToOne)]
+ public string Modv_mostSignificantByte = "";
- [AasConcept(Cd = "https://www.w3.org/2019/wot/modbus#type", Card = AasxPredefinedCardinality.ZeroToOne)]
- public string Modbus_type;
+ [AasConcept(Cd = "https://www.w3.org/2019/wot/modbus#hasMostSignificantWord", Card = AasxPredefinedCardinality.ZeroToOne)]
+ public string Modv_mostSignificantWord = "";
[AasConcept(Cd = "https://www.w3.org/2019/wot/mqtt#hasRetainFlag", Card = AasxPredefinedCardinality.ZeroToOne)]
public string Mqv_retain;