mpostol on master
Regenerate models using UA-Mode… Regenerate models using UA-Mode… Merge pull request #664 from mp… (compare)
mpostol on 6.5.5.39885
Regenerate models using UA-Mode… (compare)
mpostol on 6.5.5.39885
Regenerate models using UA-Mode… (compare)
ReferenceApplication
containing ready to use binaries. Unzip and run exe file to get started. Nuget package will be created after getting more feedback from MQTT and AMQP testing, which are in progress.
Not sure if I have got the question. Filtering is implemented in the library, so you should not care about it. Filtering and data content is setup in the configuration.
You should use the couple (RepositoryGroup, ProcessValueName) to find where the value must be written. If your HMI interface need additional configuration the provided configuration should be expanded. For example:
RepositoryGroup = Boiler.1
ProcessValueName = PipeIn_Presure
You can use the simulator to display generated values on selected picture or place on the screen - don't touch the MessageHandlers configuration to make sure you are getting everything form the producer.
master
. It needs harmonization of any derived libraries as the result of some minor architecture changes. The work on Rel 4 is underway so I cannot guarantee that the API will not change in future, but once more it is to be more stable for now.
repositoryGroup
, and while it works locally (on single machine) I ran into issues with receiving this data on mobile device in local network I'll try to debug it now. I tried enabling events on EventSource
of UDP message handler but I didn't receive any... I wonder whether it has to do with Mono's implementation of these.
Thanks for update. The critical point for logging the network traffic is application configuration, there is the switch:
<add name="System.Net.Sockets" value="Information" />
<!-- value: Required String attribute. Sets the verbosity of the output.
Legitimate values are Critical, Error, Verbose, Warning, and Information.
-->
<!-- maxdatasize: Optional Int32 attribute. Sets the maximum number of bytes of network data included in each line trace.
The default value is 1024.
-->
<!-- tracemode Optional String attribute. Set to includehex to show protocol traces in hexadecimal and text format.
Set to protocolonly to show only text. The default value is includehex.
-->
</switches>
change Information
to All
UDPMessageHandlerSemanticEventSource
and while in WPF application it works, on mono it doesn't. I'm also not sure how I'm suppposed to obtain its instance since Log
property is internal. For now I've been using reflection to test (but it wasn't very helpful)..xml
config files sufficient? I'm now adding one more DataSetConfiguration
with only AssociationName
and RepositoryGroup
changed. Additionaly I'm adding ProducerAssociationConfiguration
entry with updated AssociationName
to match the ones defined in DataSetConfiguration
IEncodingFactory
is implemented by the code-base as .NET Standards so you can use it instead of implementing it. I don't see any reasons to rework this lib , or maybe I am not following you.
Wireshark
. Let's think about a piece of software converting the producer configuration to consumer configuration - for example as a unit test. Yes .xml file consist all details for selected producer or consumer. In a few days I should have the configuration generator for the simulator I am working on. Maybe it helps. Lets think about conf call or F2F meeting - details we exchange by separate conversation by email.
IEncodingFactory
is that it forces repositoryGroup
which is undesirable, I just made my own without this check.IEncodingFactory
is required in case you need to provide a data converted.The
/// <summary>
/// Updates the value converter.
/// </summary>
/// <param name="binding">An object responsible to transfer the value between the message and ultimate destination in the repository.</param>
/// <param name="repositoryGroup">The repository group.</param>
/// <param name="sourceEncoding">The source encoding.</param>
/// <exception cref="ArgumentOutOfRangeException">
/// repositoryGroup
/// or
/// binding
/// </exception>
void IEncodingFactory.UpdateValueConverter(IBinding binding, string repositoryGroup, UATypeInfo sourceEncoding)
is the pace where you can assign to the Converter
property used by the library to handle additional type conversion if needed.
IBinding
definition.
IEncodingFactory
EncodingFactoryBinarySimple
has useless test of the repositoryGroup
parameter. #304400
.@Drutol I am glad to say that the work on the factory (boilers set) simulator (alfa) is close to release. :simple_smile:
The starting point for boiler description is on the commsvr.com page:
Investigate also the document: section Custom model boiler
I will use this documents to prepare the simulator description, so you may read them in advance.
You may find also helpful downloading the
OPC UA Address Space Model Designer
It has the model attached as the embedded example.
The simulator documentation is planned as the #306 in the current milestone.
@Drutol My concern is how to provide the observed device coordinates. We must consider two scenarios:
In 2 the coordinates must be modeled and encoded - importance level is as the timestamp. I must ask my OPC UA fellows if we have any standard representation of the GPS coordinates.
Are you aware of that? The first approach is 1. but we should be ready to accommodate 2.
App.BilersSet.xml
. The simulator is loosely coupled with the ReferenceApplication. Hard references have been added to copy all assemblies during the build.@Drutol Good news. I haven't really tested the behavior of the boiler simulator . I have stolen it form the OPC Foundation stuff as is, but now my concern is where set points are provided. Anyway, the simulator is implemented in tempuri.org.UA.Examples.BoilerType.BoilerState
:
/// <summary>
/// Updates the values for the simulation.
/// </summary>
private void DoSimulation(object state)
{
//....
}
Note it is partial and located in at :
Networking\Simulator.Boiler\Model\BoilerState.cs
It seems that it was not implemented with real physic rules in mind, but it shout generate random data.
If the configuration works fine, add the file to the DataLogger and PR back to me. Use similar name as for the producer.
Goo luck and inform me about success.