Earlier in the week we described what the DataStore Plus ActiveX was. Today we walk you through the steps you need to take to add it to a FactoryTalk ViewStudio Machine Edition project.
Basic steps to setup the DataStore Plus ActiveX in ViewStudio:
- Create and configure a new “on top” display to host the DataStore Plus ActiveX
- Add and configure the DataStore Plus ActiveX to the new display
- Set the DataStore Plus display as the project's new initial graphic
- Configure the DataStore Plus display to load your original initial graphic display by:
- Creating an HMI Tag
- Assigning the HMI Tag to the Global Connection's “remote display number”
- Create and assign two macros
- Create first macro to trigger original initial graphic by setting the HMI Tag to the original initial display's number
- Create second macro to reset the HMI Tag to “0”
- Assign the first macro to the DataStore Plus “on top” display's startup macro setting
- Assign the second macro to the original initial display's startup macro setting
Now on to the detailed steps:
DataStore Plus Step 1:
The first step to using DataStore Plus is to create a new graphic display in your project to “host” this ActiveX. To do so, create a new graphic display with these display settings:
On the General Tab
- On Top
- Cannot be replaced
- Display Number 999
- Maximum Tag Update Rate of .25
- Specify Size of 400 width and 400 height
- X and Y position of -401 and -401 (off the visible screen)
Note: Below is a picture of my display settings:
Explanation of above settings:
Since we want the DataStore Plus ActiveX to run while the PVPlus project is running, we need to keep the display it's on open at all times. One way to accomplish this is to set the display as “always on top,” and “cannot be replaced.” However, we don't actually need to see this display, so we also position it out of the visible pixel range with a negative X Y position.
DataStore Plus Step 2:
Now that our graphic display is created, we need to add the DataStore Plus ActiveX to it. To do this, choose ActiveX from the Objects Menu:
Click and drag a box on your display. When you release the mouse, you'll be prompted to choose an ActiveX – choose the ME DataStore Plus ActiveX and press OK:
This is now what your graphic display screen should look like:
Next, double click on the DataStore Plus object and set the general settings to meet your preferences (mine are shown below:)
Do the same on the Advanced tab (my advanced settings are shown below:)
Finally, on the Connections Tab you'll need to fill in the “File Location” (includes file name and CSV extension,) “Trigger” (this acts as an enable,) and add at least one real or string tag (my settings are shown below:)
NOTE: “FileLocation” can either be a String Tag which contains the full path and file name for your CSV file, OR it can be the actual full path and filename included within quotes as shown below:
Next press Apply and OK, then save your screen with a memorable name (I saved mine as DataStore Plus)
DataStore Plus Step 3:
In this step you need to set your DataStore Plus display as the new initial display, after recording what the initial display is currently set to. This is done in “Startup”
DataStore Plus Step 4:
Now that our DataStore Plus display is setup as the initial display, it will launch when the project runs. However, if we do nothing else we'll be left with a blank gray screen.
So our next step is to setup our DataStore Plus display to launch our original initial display. To do this, we first need to create a new HMI tag as shown below:
Now let's set our new “RemoteDisplayTag” to be the Global Connection's “remote display number” tag as shown below:
DataStore Plus Step 5:
Now we need to create two macro's. One to change our “RemoteDisplayTag” to the number of our original initial graphic display (in my case “1”.) And another to reset it back to “0” so the operator can navigate to other displays.
Below is the first of the two macros we must create. This is the one our DataStore Plus screen will trigger after opening, to then trigger the opening of our original initial display.
Note: Changing the tag associated with the Global Connection for “remote display number” to “1” will cause the system to display the graphic display with that corresponding display number. However, the operator will not be able to navigate away from that screen until the “remote display number” is changed back to “0”
Note: Always be sure when implementing “remote display number” that all your displays have a unique “display number” in display settings.
Below is the second macro we must create. It will be launched by our original initial display to reset the “remote display number” tag to “0” so the operator can navigate to other displays:
Our final step is to set our two displays to run the appropriate macros.
First, on our DataStore Plus display we need to open the display settings. Then on the Behavior Tab we add our “Macro_GotoMainScreen” to the Macro Startup field as shown below. When done press OK, then save and close the display:
Next, we need to open our original initial display and on the Behavior Tab in the display settings we need to add “Macro_ResetRemoteDisplay” to the Macro Startup field as shown below. When done press OK, then save and close the display:
At this point we've successfully added the DataStore Plus ActiveX to our project. Once we run our project we can open Windows explorer to look for our next CSV datalog file. Just navigate Windows Explorer to the location specified in the DataStore Plus ActiveX's “FileLocation” property, and you should see the first CSV log file.
If you open the file in Microsoft Excel, you should find data similar to what you see in my file below:
That's it for DataStore Plus ActiveX step-by-step. If you have any questions or comments please don't hesitate to let us know by either using the “post a comment or question” link below, or by contacting us directly using the “Contact” link at the top of this page.
Click HERE to scroll down to view or leave comments
- I would like to know if the methods outlined in this thread are so data captured historically could be sent to ao USB or SD Card for extraction later via csv file format. Is this true? How would you be able to remove the device when you want to see the data without harming the process?
CarissaJust wanted to give whoever is reading this a heads up. I ran into this in the field, and found that these ActiveX objects are NOT intended to be used for "On Demand" logging, meaning they are not intended for the PLC to actually trigger the individual logs. It was designed to be a purely TIME-BASED logging setup, where the "Enable" is supposed to be left on for long periods of time. The reason for this is that if the Enable is not set during the midnight transition, the object will not make a new file for the next day, but instead continue writing the log entries in the previous day's file, until the log enable just so happens to be enabled during that transition, and only THEN will it create a new file. I wrestled with this for months, unable to explain why the files would seemingly just randomly generate, but there would be several days to several weeks' worth of entries in a single day's file. There was no rhyme or reason to when the system would generate a new file, and as far as I could tell, I had it set to start a new file every day, so my work was done.
Then, finally, I found the technote that mentions the midnight transition, and how logging has to be enabled during this in order to facilitate the file name change. I was logging at intervals that included midnight anyway, but since the time between the HMI and PLC is not always perfectly synced, I just extended the time to ensure they'd be on at midnight. Unfortunately, I would create situations where there would be "multiple logs" for certain times. At any rate, it wasn't a "clean" solution.
But, I did find a workaround that, as far as I have lab tested so far, seems to work well. In a nutshell, you take the file name control away from the ActiveX Object and give it to the PLC. By periodically (about once an hour) syncronizing my PLC and HMI clocks, I can make sure new files are created and the entries are stored in the correct day flawlessly and cleanly. In the PLC, I create several string tags and, using conversion and concatenating instructions, "assemble" the log file name in the program, based on the current date. I then point the field in the ActiveX setup to that tag instead of typing it out. This also gives me the option to easily change where the file goes on the fly, in case my customer connects the HMI to their network and wants those log files to go onto a server folder, without having to edit the HMI program.
I tested it out in the office here, and it worked wonderfully. I was able to change my PC's date, and it created a new file. I even changed the date back, and the object would simply append the existing file with the new entries.
If you're using this to log data on an "On Demand" basis, this is the way to do it.Thanks for sharing your experience brstilsonNot sure how I missed your post but I do believe the newer versions of this ActiveX has been upgraded to address this?
Before that, we would use a batch file on the memory stick to "copy" the csv file from the internal storage to the USB stick like I show here:
I am trying the steps above using Factory Talk View V8.1 but I am unable to complete steps 3 through 5 because I am not seeing other options on the explorer such as Startup and Global Connection. Please assist.Hey Bellgast,
While this article is from 2013, ViewStudio ME 8.1 still has Startup and Global Connections.
Are you trying to use it with ViewSE? Datastore Plus will work with ViewSE, but this procedure won't as it's ViewME specific.
Instructor, The Automation SchoolThanks Mr. Shawn. I forgot to state the platform that I am using. I am using ViewSE. Please help me steps on how to set Data Plus in SE. Thanks in advance.Bellgast,
Well, if you are sure you don't want to use the built-in Data Log features of ViewSE you can use the If you are familiar with ViewSE, create a screen, add the ActiveX to it, setup MAlso keep in mind that if you are running a client server system, the Best of luck!
Instructor, The Automation School
PS - If you're not familiar enough with ViewSE to follow the above, you may want to consider my ViewSE course here: https://theautomationschool.com/courses/viewse-basics-course/Good Morning Shawn,
I absolutely love your topics and posts - very informative!
I'm writing to get more information about choosing DataStore Plus vs Custom Data Storage on my Panelview Plus 7.
My goal is to log the values of maybe fifteen tags into longterm storage. The data needs to be exportable to a CSV so I'm leaning towards Custom vs Standard for the path. I'm a bit stuck however on whether using Custom Data Storage via a USB or DataStore Plus is the way to go. I thank you for your previous posts,
I am not sure I completely understand how to set up the script for the USB export, can you describe this another way?
Can you elaborate more on (1) what, if any, action would need to be done when removing the USB and plugging it back in? Does any process need to be stopped, paused, restarted etc? Can you also describe (2) how much data exactly could be stored on the USB? For example, if I set up a CSV to be made daily, would it do so every day until the USB was filled?
Again, I can't thank you enough for being such a great resource!
All the best,
Carissa GalganoGood morning Carissa,
Sorry I missed your post. I'm sure at this point you've probably found your answers, but for those who come after here's some food for thought:
1) I've never run into an issue "copying" a CSV file that was actively being written to, and that is what I would suggest you do in your script - copy not move the csv log files to the USB Memory Stick.
I also add "echo" text to my autorun scripts to let the operator know when the process has started, as well as when it's done to "count to ten" before removing the memory card with the script on it.
2) The average USB Memory Stick can hold hundreds of thousands of average CSV files. That said, to know for sure if yours will fit, you'll want to log the average amount of data over an average time, and then multiply the resulting file size by the number you need to store on your memory card to determine how big it needs to be.
Hope this helps,
Instructor at The Automation School