Combining advanced data storage and compression techniques with an industry-standard query interface, AVEVA Historian brings high-performance simplicity to keep your team fully aware of operational performance for faster troubleshooting and informed decisions.
AVEVA Historian simplifies the most demanding data reporting and analysis requirements. Historian can be deployed to monitor a single process or an entire facility, storing data locally and aggregating data at the corporate level. Eliminating multiple versions of plant operating data in this way increases productivity, reduces errors, and lowers operating costs.
Historian will maintain the data integrity needed for the most demanding requirements. AVEVA Historian manages low bandwidth data communications, late-coming information, and even data from systems with mismatched system clocks. Ensuring high resolution data is captured accurately every time.
We deliver end-to-end visibility of your operations lifecycle, with AI-infused insights that help you optimize your people, processes, and assets. Maximize productivity and safety with a full spectrum of operations solutions, from SCADA control systems to HMI, predictive analytics, and data management software.
I am hoping that someone can help me out. I have a valid connection to the database and it appears to be working. When I run the following in SSMS, I get the results I would expect. (As the user that is authenticated against database)
Error running query: SELECT * FROM OPENQUERY(INSQL, "SELECT DateTime, [TAG1], [TAG2] FROM WideHistory WHERE wwRetrievalMode = 'Cyclic' AND wwResolution = 1000 AND wwQualityRule = 'Extended' AND wwVersion = 'Latest' AND DateTime >= DateAdd(hh,-1,GetDate()) AND DateTime = GetDate()") order by DateTime asc The identifier that starts with 'SELECT DateTime, [TAG1], [TAG2] FROM WideHistory WHERE wwRetrievalMode = 'Cyclic' AND wwResolu' is too long. Maximum length is 128.
First of All I want to say thank you to @kcollins1 and @PGriffith for leading me to the right answer. The issue is with the double quotes and single quotes. I am not sure how it worked originally but it did. Then it stopped working. The double quotes can only have 128 characters in it. Once I changed the variables to double quotes and the overall string to single quotes it worked. Thanks to all for the help.
What I would do is make a custom screen that did the query to pull all the WWH tag names and gave your engineers the ability to make new tags for doing HMI bindings on the fly. You could even do queries to get the real-time values out of the WWH if you want.
If you structure your UDT correctly then it would be pretty straightforward to do. You may be better off though just creating all the UDT tags you need up front so that the tags are then available for engineers and operators to choose from to create tables and charts as needed.
It is possible to create tags in Ignition by pasting in a JSON data set of the tags to be added. All of the needed tag metadata is in the Wonderware Historian DB, and I can extract that with SQL. I plan to write a small application that would take the tag data and create a JSON data set of the Wonderware tags to be added to Ignition. This will give me an integrated tag provider that contains both Ignition and Wonderware tags.
If you are storing your alarms and events in History Blocks, you no longer have the A2ALMDB to query. In fact, many of the same VIEWS that were part of the A2ALMDB or even the much older WWALMDB are now located in the Runtime DB for your Historian. Only Galaxy based alarms can be stored in History Blocks (as of Update 3 SP1). To query, you can reference the following VIEW.
Keep in mind that when you chose to SELECT the Top 1000 records that the query will give you an error message "Event History no longer supports queries that do not provide time". We must reference a WHERE clause that focuses on the Timestamp which is denoted by the EventStampUTC field. Make sure that you reference the EventStampUTC field with a properly formatted datetime in order for the query to execute properly.
At the moment this performance has degraded to take a massive 8-9 seconds per query. i am having trouble figuring out why this is. If someone could help me / point out what the issue seems to be it would be greatly appreciated.
They begin with a basic walkthrough of the tooling they display on screen, including a dev system and SQL server management studio. This is the tool used to connect to the system platform database that is created alongside your galaxy.
Next, they displayed a database called sandbox, the system platform IDE, and a sandbox galaxy that they did their queries against. They used a CQL server management studio to begin their change log query, which enables users to see what has happened in their galaxy or retrieve objects that may have changed.
One of the main tables used is the G Object Change Log. This table not only defines each object in the galaxy server, but it also contains all change log information for each one, including what was changed, when, who did so, and any comments made.
The query was organized into two columns and includes the ability to filter for the specific information being searched for. These built-in capabilities allow for plenty of flexibility, whether users are searching for a timestamp, undeployed changes, or other items.
Taking advantage of this allows users to pull IO mappings directly from the galaxy database, search for an input source or wild card, and even run stat. This information means users can use the IDE to reference them.
When it comes to uses for this type of query and resulting information, some examples include updating references, moving register mappings, and searching for a specific object, OPC client object, or scan group. These, and others like them, narrow the scope.
Using these types of queries creates an environment in which users can do a little more and dig a little deeper. It also helps to answer questions when a client is upgrading or would like to better understand how things such as security are configured.
This post will outline the procedure to set up Grafana to query tags from an AVEVA Historian using Microsoft SQL Server connector and plot them on a chart. Users can select available tags from a list.
Bundled with the historian are the traditional Windows desktop application - AVEVA Historian Client Trend, and more recently the AVEVA Historian Web Client. Both the desktop and web application requires a valid license and is limited to a certain number of clients.
Unlike AVEVA Insight , Grafana is vendor-neutral and can be hosted on a local machine or on a cloud platform. Not only does it offer a plethora of connectors and plugins, but also plenty of visualisation types to allow deep customisation of dashboards.
We need to add a user with read-only permission for grafana backend. Grafana's Microsoft SQL connector supports either SQL Server Authentication or Windows Authentication (single sign-on for Windows users). I chose grafana as the Login name and SQL Server Authentication. Set default database to Runtime
In more recent versions of AVEVA Historian, the ability to query data via REST API is introduced. AVEVA Historian Insight (on-premises) uses windows integrated security. The solution is to use an NTLM Authorization Proxy Server to allow Grafana to access the historian via the REST API. Please leave a comment if you would like to know more details or have anything to add or discuss :)
The first error "Column Newsite not found." is occurring because Newsite is missing the enclosing single quotes to make it a string literal (assuming Description is a string field).
The second error "Equality operation '=' cannot be used with Integer and String." is occurring because the ID column is an integer but the value it is being compared with is a string literal (it is enclosed in quotes).
It does work but I used Point ID to update. I wanted to update the Description of a point, But it had cleared other point descriptions on the same template except the one which I wanted to update. I tried several ways to check it but nothing helped and now I have to manually or use update query to update other points on the same template. And it does not throw up any error.
If the Point you are trying to update is in an Instance of a Template, is the Attribute of that Point you are trying to update included in the Property Overrides of the Template? If not, you could change the attribute in the template to say "Newsite", then it will be set to all of the instances.
If the Point Attribute is already included in the Property Overrides of the Template, then only new Instances of the original Template would say this. Which is likely part of what you would like to happen.
To go back and fill in the attribute on Instances of the Template where the Property Override for the Attribute is already turned on and the Attribute is blank for many of the Instances, you likely need to take a slightly different approach.
One way I have updated Point.objDescription attributes is to setup a Function Block Diagram set to an interval of 0 seconds in the Template, then map out somewhere that has the objDescription I desire, or even a Constant in the FBD, to the Point.objDescription. Then there are two ways to execute all of the FBD's, either manually one at a time, or by creating a Structured Text program that finds all of the FBD's of a particular name and executing them.
The second way is much like the ST program mentioned just above for executing a FBD with the time interval set to 0 seconds. Write a ST program with a Query in it that will find all of the Instances of a particular template, and will update the Point.Attribute. Of course some care needs to be taken in setting up the query to not update Instances of the Template you don't want it to. For instance having the ST Query only return results where the Point.Attribute is empty, or in a specific Group, etc.
c80f0f1006