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)
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.
Now how to deal with the geographical localization? As I sad we must consider two scenarios:
It is static, so it is not provided by the data transferred over the wire - it is HMI feature, so you must deal with it. Using the repository name
is not the perfect solution (but possible), because it makes consumer/producer configuration synchronization very difficult. The OOI stuff is prepared for a situation like this by expanding the configuration file. An example you have in UANetworkingConfigurationUnitTest
. I believe your work will be proof of concept in this respect. In your part of the configuration, you may add an array containing <key, value> pairs, where the key is repository name
and value is geographical localization.
It is dynamic (running train, rolling ball) the geo position must be provided as a variable with the part of relationship
with the object model. But now it is not the case. So let's fix the static solution, and after that, if we have time we will think about the UA model containing localization. BTW, I have forgotten to ask :-1: , sorry about that. Fortunately, having proof of concept for a static case we may inform about the success while asking about this particular detail :smile: .
GitHub Pages
. They are visible even for private repositories, so I will be able to add ref to you stuff if you don't mind.
GitHub Pages
... hmm I don't really feel like there's much to present there. Any specifics in mind? I've prepared the static website generator though so I'm pretty much ready to go.
ExtensionDataObject
but I don't believe that this is what I'm looking for either. Also even if I do expand the configuration file I won't be given any data from the library when creating bindings for example so I would have to intercept the configuration somewhere anyway. Isn't it more feasible to create some other configuration file or just derive from existing ConfiguarationData
class and forward extra data to some other component?
@Drutol I have added issue to your repository related to GitHub Pages.
Read more about GitHub Pages Basics.
GitHub Pages sites are publicly available on the internet, even if their repositories are private.
Therefore, GitHub Pages can be referenced by a link and available to the public community.
The content should follow the gist:
https://gist.github.com/mpostol/2d3f982ac548a272233956046625b2d6
As the starting point use your RAEDME.md and the project description:
It should be cover page of your project. I have generated it from the README.md. See OOI
@Drutol configuration management followup:
I have reported a new issue:
The API I mentioned previously is dedicated to using the library as a component of a configuration editor. For the communication, it is not applicable, and the API is hard-coded so it must be modified. Let's assume the custom configuration must be derived from the ConfigurationData. Tomorrow afternoon I will provide a fix for that.