DataStorePlus Step 16
CSV file created using Rockwell's DataStore Plus ActiveX

Last week I was contacted by an OEM for my advice on the best way to create reports that customers could view in Microsoft Excel. Since his equipment was outfitted with the PanelView Plus 6, I suggested the first option we should discuss would be the one already built-in to his existing HMI: Rockwell's DataStore Plus ActiveX extension.

FactoryTalk View Machine Edition and the PanelView Plus always had the ability to log data using a built-in datalog feature. However, I've found this implementation of datalogging so limited that I describe it to new clients as, “just a historical log for trends.”

What's limited about it? For starters, each ViewME project can only run a single datalog model which logs to a single file. And this log file is limited to 300,000 data points (expanded to 1,000,000 in version 7.0.) The log file is also in a proprietary file format. And while there is a free utility to extract the contents of the log file, providing access to the file can often result in the need to restart the Machine Edition project.

So in my opinion using the ViewME Datalog feature for anything beside historical trends is cumbersome. On the other hand, Rockwell's free DataStore Plus ActiveX extension is a very practical data logging solution.

DataStorePlus Step 6
DataStore Plus General settings (click on picture for larger image)

NOTE: The DataStore ActiveX was available for use with the older VersaView CE / PanelView Plus CE models. However, to use previous versions on those devices you had to download and install it yourself. Today with the PanelView Plus 6 and ViewStudio 6.0, the DataStore Plus ActiveX is just one of many extensions which come preinstalled.

The DataStore Plus ActiveX is designed to give the PanelView Plus 6 and ViewME runtimes the ability to datalog up to 100 Real tags and 50 String tags. It's also not limited to a single file, or a certain number of records like the built-in datalog. In fact, it has several options which determine the format and content of the log files, and it's only log limit is the amount of storage space on your target storage device.

DataStorePlus Step 7
DataStore Plus Advanced settings (click on picture for larger image)

DataStore Plus also allows for time based creation of new CSV files, and can automatically purge old files base on number or age. In fact, there are so many options its just easier to include screen shots versus trying to list them all (see the pictures on right.)

How the DataStore Plus ActiveX works:

In most cases, you'll want to put the DataStore Plus ActiveX on a display that remains open at all times. This allows it to continuously run and log data.

If you don't have a display which always remains open, you can easily create a new “on top” display to host this ActiveX. Often, the always DataStorePlus Step 5open display will be launched as the initial display. Then, it in turn will launch the original initial display. This is accomplished through the use of the Global Connection's “remote display number” setting.

Well that's it for DataStore Plus ActiveX basics. Later in the week I'll post a step-by-step procedure for setting it up. Until then, 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.


Shawn Tierney
Automation Instructor and Blogger
If you enjoyed my article, you may like my courses at

Click HERE to scroll down to view or leave comments

  1. Does anyone have advice for helping to chart data from these files?
    I have a macro-enabled excel file that reads in a given csv file and dynamically maps the data
    I have a process that I record three temperatures and it could span over a day so its important that I be able to graph/scatter plot the data by Date and Time in case say 11:00:01 is hit on two consecutive days. But I dont know how to tell it to use multiple variables for the x axis, or combine the date and time using VBA.
    Challenge #2 is that the first row has header information and I need to delete it/skip that row as it tries to plot that data. I have used the following line in my VBA and it deletes it after I go into the xlsm file and execute the code but not when it first opens which is when it would need to.
    I am hoping someone on this thread has faced a similiar situation or maybe you all can help with a workaround through Panelview:
    Maybe some option to combine date/time on the panelview so I do not need to in VBA?
    Any method to suppress the header row altogether? I only see options to change the header template, not to remove it.
    VBA Code Below:
    Private Sub Workbook_Open()
    Dim fso As New FileSystemObject
    Dim fnum
    Dim MyFile As String
    Dim strDataLine As String
    Dim x0Var() As Variant 'First column, index
    Dim x1Var() As Variant 'Date
    Dim x2Var() As Variant 'Time
    Dim y1Var() As Variant 'Col D, first data range
    Dim y2Var() As Variant
    Dim y3Var() As Variant
    Dim intNumOfLines As Long
    'This is defining where the CSV file is stored
    'which should be the default USB drive location when inserted to this PC
    MyFile = "G:\16228\Trend Data\MYDATA.csv"
    fnum = FreeFile()
    Open MyFile For Input As #1
    intNumOfLines = 0
    Do While Not EOF(1)
    intNumOfLines = intNumOfLines + 1
    Input #1, strDataLine
    Input #1, strDataLine
    Close #1
    ReDim x0Var(intNumOfLines)
    ReDim x1Var(intNumOfLines)
    ReDim x2Var(intNumOfLines)
    ReDim y1Var(intNumOfLines)
    ReDim y2Var(intNumOfLines)
    ReDim y3Var(intNumOfLines)
    Open MyFile For Input As #1
    intNumOfLines = 0
    Do While Not EOF(1)
    Input #1, x0Var(intNumOfLines)
    Input #1, x1Var(intNumOfLines)
    Input #1, x2Var(intNumOfLines)
    Input #1, y1Var(intNumOfLines)
    Input #1, y2Var(intNumOfLines)
    Input #1, y3Var(intNumOfLines)
    intNumOfLines = intNumOfLines + 1
    Close #1
    With Sheet1.VBAChart
    Set oChart = .Charts.Add
    oChart.HasTitle = True
    oChart.Title.Caption = "Oven 4 Bake Times"
    'oChart.Interior.Color = "blue"
    oChart.PlotArea.Interior.Color = "white"
    Set o1Series = oChart.SeriesCollection.Add
    With o1Series
    .Caption = "AGING TC"
    .SetData chDimCategories, chDataLiteral, x2Var
    .SetData chDimValues, chDataLiteral, y1Var
    .Line.Color = "green"
    '.Line.DashStyle = chLineDash
    .Line.Weight = 2
    .Type = chChartTypeLine
    End With
    Set o2Series = oChart.SeriesCollection.Add
    With o2Series
    .Caption = "SOAK TC"
    .SetData chDimCategories, chDataLiteral, x2Var
    .SetData chDimValues, chDataLiteral, y2Var
    .Line.Color = "blue"
    '.Line.DashStyle = chLineDash
    .Line.Weight = 2
    .Type = chChartTypeLine
    End With
    Set o3Series = oChart.SeriesCollection.Add
    With o3Series
    .Caption = "HTL TC"
    .SetData chDimCategories, chDataLiteral, x2Var
    .SetData chDimValues, chDataLiteral, y3Var
    .Line.Color = "red"
    '.Line.DashStyle = chLineDash
    .Line.Weight = 2
    .Type = chChartTypeLine
    End With
    oChart.HasLegend = True
    oChart.Legend.Position = chLegendPositionBottom
    End With
    End Sub
    Example CSV Data: