LabVIEW Idea Exchange

Community Browser
cancel
Showing results for 
Search instead for 
Did you mean: 
Post an idea

Please include into AF:
Certain templates, standard actors, HALs, MALs should be part of the framework e.g. TDMS Logger Actor, DAQmx Actor. Right now the framework feels naked when you start with it, and substantial effort is required to prepare it for real application development. The fact that standard solutions would not be perfect for everyone should not prevent us from providing them, because still 80% of programmers will benefit.

LabView has supported SSL secure communications for the web server for some time now.

But, there is no support for using SSL to a data socket.

 

In these times, with the NSA and hackers snooping everywhere, it seems like a necessity.

 

There is a third party library "SSL Library" on the NI site.  It has no documentation.  It uses Microsoft .NET calls to do SSL, but it is not clear how to make it work.

 

We have been using a proxy written in perl to get SSL to a LV data socket.  It is a kludge solution.

 

Why can't LabView handle this?

 

Mike

 

Please make the LabVIEW Web Server more efficient! I love the idea of the LabVIEW Web Server as it allows me to create powerful, dynamic web pages for my clients. However, I recently published my VI using the "Embedded" option of the LabVIEW Web Server and found that this uses 3 Mbps per instance. An NI support tech was kind enough to point me to the following article: http://www.ni.com/white-paper/3277/en. This article confirmed my fears: the LabVIEW Web Server is transmitting all of the data for each object (even the invisible ones) at the 10Hz update rate of my application.

 

For this reason, I've decided to use Windows RemoteApps (using the Windows Remote Desktop engine) to publish my VI. In doing so, my network bandwidth is reduced from 3 Mbps to 10 Kbps with zero loss of functionality. However, RemoteApps are a pain to set up and aren't nearly as nice to the end user as a web published LabVIEW front panel. I would like to suggest that you all look at the algorithm behind Windows Remote Desktop and use something similar for the LabVIEW Web Server. In my understanding, Remote Desktop simply sends CHANGED pixels from server to client, and sends mouse and key clicks from client to server. Why would you need anything else?

LabView has email capability but if you do not have a mail (POP or Exchange) server on your network, or like in my case use of the company exchange server is restricted to users with logins, but automated test machines and ATE system users are not granted logins, you can not send email using the LabView vi's.

 

Sure it can be done by getting a G-mail account and using the POP servers on G-mail through active-X but that is a lot of hoops to jump through just to send an email, and who knows how long G-mail is going to allow use of the POP servers.

 

It would be a lot simpler if LabView had a basic POP server vi that could directly send email with settable outgoing port just in case port 110 is blocked for some reason.

 

 

                  I would like to be able to program the XNodes.

 


                                  img_1-557_smile_triste.png

 

 

          Include the programming of Xnodes in labview features

 

                               ... for the next Christmas   clin d'oeil _ 1.gif


 

                                         noel_1.gif

 


 


Currently the "Bytes at port" property only applies to serial ports. If you are trying to write a generic driver or communications package that supports multiple connection types you cannot use the "bytes at port" since it will not work for anything but a serial connection. There is a related idea here which proposes the "Bytes at port" can be added to the event structure. It also suggests that this be expanded to other connection types. My idea suggests that at a minimum the VISA property node can be expanded.

This is a bit esoteric but for those who use the DSC toolkit to read trace data from a Citadel DB you will find that you cannot always obtain the most current value

of a trace.  Here is the text describing what a ghost point is:

 

Citadel uses ghost points to maintain real-time awareness of traces that do not change frequently.

For example, suppose you configure a thermocouple measurement for logging with a deadband of 1°F. The thermocouple is in an environment that remains at a constant temperature most of the time, but you need to know when any major changes occur. If the temperature remains within 1°F for one hour, Citadel does not log redundant points, even if the temperature is sampled once every five seconds. However, if the logging system experiences a failure at some point during the sampling, you want to know the temperature at the time of the system failure. You also want to know the approximate time of the failure. Citadel handles this situation by logging a single ghost point for each trace. The ghost point in each trace updates constantly at a rate based on the time group specified for the trace. The ghost point always reflects the most recent time and value of a trace.

Citadel stores ghost points in a .tgpffile that updates once every ten seconds. This file ensures that Citadel has an accurate record of the value for every trace at the time of a system failure.

 

It would be very useful to be able to specify in the trace read vi that you would like it to return the ghost data points.  Otherwise, it is very cumbersome to try to detect if you are missing this data point and then have to programmatically read it yourself from the originating data system.

My request is for NI to review and develop the ability to select where (IP specifically) a NSV will deploy on a system (eg. PC) containing multiple networks.

 

After searching through various forums and issues, I understand that currently we can only choose LabView software's global default adapter via unusual Windows methods. What if other projects do need to use the primary NIC ? or what if in one project I need some NSV to go to primary NIC and some to use the secondary NIC ? As various hacks and workarounds did not fulfill my requirements I opened a request for technical support. After review, the case (#03609821) concluded that this was not possible and suggested I post here to see if others also would find this useful to boost development priority.

 

My example scenario is this. My company develops specialized motion products (mainly automotive transmissions for heavy duty and defense applications). We primarily use NI in our dyno and own a few NI hardware systems: cRIO, cDAQ, PXI.

I work in the dyno room here and am trying to set up a cRIO as a datalogger and RT OS to primarily measure analog and CANbus signals and thereby control testing.

 

The test fixture is operated on a PC with two network cards. One private LAN to talk to the cRIO to stream data and control. The network shared variables keep track of various statuses. The other network card is on the company LAN primarily so we can transfer data and share fixture status. The secondary purpose of being on the company LAN is that we have 6 configurable dyno motors (usually used in pairs) in the room that run on a shared master controller (non-NI). Currently that is done via PC RS232 to the cRIO, but we’re planning eventually to transition that to a more open ethernet architecture. NSVs would be ideal for sharing each dynos’ status as the serial is limited in 1-1 connection and bandwidth.

Working with XML is fairly common and an addition to the palette to replace a specific node value would be helpful. Besides, there's lots of space there yet.

 

This link saved time. Thank you to juliodia

for posting this.

 

https://forums.ni.com/t5/LabVIEW/XML-Update-Element-Text/td-p/1239026?profile.language=en&lang=en

The current way to bind many shared variables to an OPC client, is through browsing a tree and selecting.

This is very time consuming when you have hundrends or thousands of tags to bind. Specialy if the all the tags are not in the same path.

A better way, is to bind the variables, by simple text.

Example: We will insert the following text

A1M01Z1:value

A2M01Z1:value

A3M01Z1:value

 

and LabVIEW will automatically create 3 variables, bounding to those addresses (with the same name, prefered). Many OPC Servers supports this type of address.

Note that the true path of A1M01Z1 could be something very big, like:

My Computer\OPC ABB.lvlib\_OPC1\[Control Structure]\Root\NETWORK 1\Nodecm3\Extended Process Objects\MB300 AI\A1M01Z1\VALUE

 

This way you can add thousands of items in minutes. It is quite easy for the R&D team to implement and will help many professional engineers.

Most probably, this idea will not accept many kudos, but i think R&D must consider to implement this.

 

(this was discussed with NI technical suport, Reference#3279019)

 

Thank you all, for reading

Please add to AF:

Interface based messaging. The need to create messages for all communication is a major decrease in productivity and speed of actor programming. It also decreases readability. It is a better with the BD Preview in Choose Implementation Dialog in LV19, but still.

 

LabVIEW AF is a fantastic tool to create multi-threaded messaging applications the right way. It promotes best practices and help write big yet scalable applications. 

I feel however that there is not enough included in the box 🙂 When looking at many other industry implementation of the actor model e.g. Scala Akka, Erlang, Elixir, microservices in many languages etc. you find that the frameworks usually include many more features. https://getakka.net/

 

I understand the decisions behind the design for AF yet would like to start a discussion about some of these.

I would like to see the following features being included into AF:
1. Ability to Get Actor Enqueuer by Path through hierarchy of actors e.g. /root/pactor/chactor could be used to get the enqueuer to chactor. This would probably require actors to have unique paths pointing to them. Having a system manager keeping all enqueuers on local system is not a bad thing. It is a good thing.

2. Ability to seamlessly communicate over the network and create your own queue specifications. For example actors should be able to talk between physical systems. Using the Network Actor is not a good solution, because it is simply to verbose and difficult to understand. The philosophy of AKKA should be embraced here "This effort has been undertaken to ensure that all functions are available equally when running within a single process or on a cluster of hundreds of machines. The key for enabling this is to go from remote to local by way of optimization instead of trying to go from local to remote by way of generalization. See this classic paper for a detailed discussion on why the second approach is bound to fail."

3. Improved debugging features like MGI Monitored Actor being inbuilt. https://www.mooregoodideas.com/actor-framework/monitored-actor/monitored-actor-2-0/

4. Included Subscriber Publisher communication scheme as a standard way for communicating outside the tree hierarchy. https://forums.ni.com/t5/Actor-Framework-Documents/Event-Source-Actor-Package/ta-p/3538542?profile.language=en&fbclid=IwAR3ajPR1lvFDyPFP_aRqFZzxR4FCQXh2nB2z0LYmPRQlnvXnsC_GQaWuZQk

5. Certain templates, standard actors, HALs, MALs should be part of the framework e.g. TDMS Logger Actor, DAQmx Actor. Right now the framework feels naked when you start with it, and substantial effort is required to prepare it for real application development. The fact that standard solutions would not be perfect for everyone should not prevent us from providing them, because still 80% of programmers will benefit.

6. Interface based messaging. The need to create messages for all communication is a major decrease in productivity and speed of actor programming. It also decreases readability. It is a better with the BD Preview in Choose Implementation Dialog in LV19, but still 🙂

7. This is more of an object orientation thing rather than actor thing but would have huge implications for actor core VI, or Receive Message VI. Please add pattern matching into OO LV. It could look like a case structure adapting to a class hierarchy on case selector and doing the type casting to the specific class inside the case structure. You could have dynamic, class based behavior without creating dynamic dispatch VIs, and you would still keep everything type safe. https://docs.scala-lang.org/tour/pattern-matching.html

 

The natural way for programming languages to evolve is to take ideas from the community and build them into the language. This needs to also become the LabVIEW way. I saw a demo of features of LV20 and I am really happy to see that many new features were inspired by the community. Lets take some ideas about actor and add them in.

 

I wanted to share my view on the direction I think AF should go. I see in it the potential to become the standard way to do big applications, but for that we need to minimize the barrier to entry.

Dear all,

 

timeouts and UID properties of "Modbus Master.lvclass" and "Modbus Slave.lvclass" can currently be set but not read out (they should).

 

See discussion here.

 

Sincerely,

Currently, the only way to add a webservice to a project, is by right clicking a Target and selecting New->Web Service.

There's no way to add existing Web Service definitions to a project, other than manually performing the copy operation at the XML file level.

This prevents proper re-use of IP!

 

Webservice in project.png

 

I would propose extending the capabilities of a Library to also support Web Service definitions as Child objects.

That way, the library can act as a container for the Web Service definition, and can easily be reused in other projects:

 

Webservice in library.png

I tried using an XML editor to manually put a Web Service definition underneath a Library, LabVIEW didn't like that!

Not just via Datasocket. All of them, property nodes, programmatic creation, controls bound to, etc.

Selection_002.png

Screenshot from 2017-12-11 16_52_41.png

Is there some intrinsic reason why SVE is possible only on Windows, like (I read) is said for OPC?

This idea directly comes from this issue : http://forums.ni.com/t5/LabVIEW/Issue-when-using-SOAP-requests-with-HTTP-POST-function/td-p/3169229

 

More and more devices are equipped with embedded webservers. And some of them require more controls HTTP protocol capabilities.

It would be nice to give the access to these VIs diagrams or to give more options set header fields !

Closing an HTTP handle should stop HTTP functions (GET/POST/etc)

 

HTTP abort.PNG

For example, in the above code, if the GET is taking a long time, the user might not want to keep waiting and hit the close button. The above code should skip the remaing wait and cleanly cleanup any refrences as needed.

As far as I can tell the SMTP Email VIs on the SMTP Email pallet do not support any sort of authentification.  Unless I am missing something this makes them close to useless.  It definately makes them usless to me.

 

I think there should be a login (and logout) VI where the login session is passed into the other VIs via a reference object.

The current implementation for remote debugging needs two ports to be opened on a stand-alone firewall in between.

  • Port 3580 to connect to the NI service locator on the target machine
  • A random port for the application on the target to connect to
    This port is dynamically assigned to the application by asking the OS for a free one

 

This dynamic port cannot be pre-configured on the stand-alone firewall except by opening up the whole port rang above 1024.

The latter is something no IT person with any sense of security will do !

 

So we need to be able to pre-configure a certain port for the target application, so that we can open a dedicated port for this connection on the firewall as well.

Otherwise this whole remote debugging feature is useless to us.

Hello,

 

when you use the URL property node for network streams you allways get localhost url only. 

NS URL.png

 

The Idea is simple. Just to change the information provided by this URL not for localhost but for the other endpoint of the connection. This would simplify managing multiple stream connections.