10-25-2018 08:59 AM - edited 10-25-2018 09:09 AM
I think you are starting out to dress up the horse from the wrong side. While the mobile data transfer may be a constraint you have to live with, it should never dictate the architecture of your actual application. That is simply insane.
I would go with a channel system like the CVT (Current Value Table) reference design, which is still available but basically superseded by the DECAF reference design now. Then design the control system around that and eventually fine tune the TCP/IP interface to allow efficient transfer of the values in combined data frames. Makes much more sense than architecting an application around a data format that is optimized for minimal data transfer size over the network. Because if you do that your application not only gets unneccessarily complex but anytime you end up wanting to add a new IO point you will basically have to revisit every single piece of your application to adapt it and/or make sure it still performs right and the scalability of such an application is very bad.
10-25-2018 10:43 AM
The point here is that sometimes the machines work under very poor connectivity conditions, and we must keep a real-time streaming even in these cases. This is why programation is done around an efficient data type.
Anyway I will take a deeper look to your proposal. I'm not an experienced programmer and is the first time I see this.
Thanks and regards,
EMCCi
10-25-2018 10:51 AM
I think that's DCAF. Nit picky, but might help if you start looking for it.
10-25-2018 10:58 AM
@EMCCi It will help if I upload the VI?
Yes!!
You can also use the name in the same VI I sent, see below.
mcduff
10-25-2018 11:28 AM
@EMCCi wrote:
The point here is that sometimes the machines work under very poor connectivity conditions, and we must keep a real-time streaming even in these cases. This is why programation is done around an efficient data type.
Anyway I will take a deeper look to your proposal. I'm not an experienced programmer and is the first time I see this.
Thanks and regards,
EMCCi
Listen to what Rolf is saying. He is giving you very good advice. Don't constrain your actual system architecture on a limited external interface. Let the system be design in the most efficient and sound architecture to accomplish the task at hand. If you need to stream the data out on a low band network, convert the data at that point. Don't limit your entire application to the lowest common denominator. This will likely limit the overall application which would not be a good thing. You are being given some excellent advice. Stop trying to fit a square peg into a round hole.
10-25-2018 11:39 AM - edited 10-25-2018 11:45 AM
And yes it is DCAF. Sorry for misleading anyone here with a wrong abbreviation. I always pronounce it as DECAF and that somehow stuck to muscle memory when writing that post.
It may seem a little frightening when looking the first time at it as it looks probably like overkill for the application you have to do right now. But I would anytime go by such a tag/channel oriented system unless I needed to have extreme high speed channel streaming on only a few channels. The DCAF or just about any other tag oriented system is not ideal for high speed streaming but for decent speed process control applications with various different types of channels it is definitely the best in terms of scaling to new types of IO and an universal interface to the data channels for the rest of the application, including remote applications.
10-26-2018 02:23 AM
Also, DCAF support seems to be pretty excellent. Dedicated NI engineers (the creators) are very actively monitoring the DCAF forum. They take it seriously.
I'm still looking for an opportunity to use it. Just the amount of included drivers is begging for reuse...
10-26-2018 11:09 AM
We search for lossless streaming. So i think that it doesn't fit good in my application, but I think it can be useful in following projects.
Many thanks for your responses. I consider the question closed. I was searching a way to do it automatically but finally I have build the cluster manually variable by variable.
mcduff: It is a solution but after all you have to manually program each cluster variable writting. The only reason why I was using references is to avoid this.
Best regards and thanks for your ansers,
EMCCi
10-30-2018 09:44 AM
@EMCCi wrote:
Yamaheda & wiebe@CARYA: I build a cluster because this data is send by mobile network. Doing it like this I can adjust the data type for each variable, which is necessary to save mobile data. I was searching a way to do what you both are proposing but in a for loop, making it easier to program and scale in the future. But seems like this solution do not exist, so I will do it like this.
rolfk: It's not a competition
I have understood in this project that updating controls through value properties is not a good idea.
Anyone has the solution to index through a cluster to update the values without using references?
Thanks for your time and responses,
EMCCi
If sending a cluster over the network, i'd use Flatten/Unflatten and send it all as a string, probably with an integer in front to say how many bytes it turns out to be.
/Y