Quantcast
Channel: OSIsoft Users Community
Viewing all 1120 articles
Browse latest View live

Advise OPC Callback error, RPC failed.

$
0
0

Hello,

 

I am working on a project that must connect to an OPC server, thing is, some of the items weren't in a group, so that is what I am trying to do.
I check the OPCgroup, and it works, the items are added. However, when I get to "group.AdviseIOPCDataCallback()", I get the following error:

The remote procedure call failed(Exception from HRESULT: 0x0800706BE)

I have tried something similar to this on a different pc, where I group, add the items, and perform Advise, and it works just fine. Both computers have admin access, all the access settings are the same. I don't really know what's wrong at this point. Any ideas?


Performance Equation to Calculate Projected Average

$
0
0

I am trying to configure a performance equation for projected average starting minute 0 of the hour. The idea is when time 12:05, it averages last five minutes, at 12:10, averages last 10 minutes and so on. The counter is reset at 1:00. I'd appreciate any suggestion on how it can be achieved.

 

Thanks

Datalink, Timed Data Interpolating Old Data

$
0
0

I use Datalink and PICompDat to pull lab results, call it Tag1, into Excel.  I'm never sure what the frequency or time stamp will be, or even whether the test was being run, so Compressed data works best to pull in all the available results.  For each Tag1 value, I then want to get a result for Tag2, a different lab test, from around the same time.  By tieing them together on the same row, I can then do some calcs with the two values, run statistics, etc. 

 

Typically, I've used PiTimedDat for Tag2, referencing the timestamps of Tag1.  But if Tag2 values do not exist for whatever reason, PI will interpolate a result from days, even weeks old data!  I tried using exact time for the retrieval mode, but the time stamps never exactly match up and I get no Tag2 data. 

 

If no Tag2 data exists within an couple hours, I rather have a blank, or a flag I can test for in Excel, because I could then calculate a value from other data. 

 

We're relatively new to PI, so presumably there is a way around this.  Thanks in advance.

PI tag avg depending on another pi tag

$
0
0

Someone please help.  I work at a plant and we run different products.  I am looking to get data based on the product and display the average to the operators.

 

So lets say that product A  ran 3 weeks ago and we ran it for 12 hours.  Before product A ran we ran product C for 24 hours then after product A ran we ran product B

 

I want to go back to the last time product A ran from start to finish and grab the values of 4 tags of data and display the average of these 4 tags for the length that product A ran last.  The 4 tags are taken at about a rate of every 10 seconds.   I also only want to take the value of the tags if the tag data is > 0 .   We change products up to every 6-12 hours. 

 

I need this to update the averages on its own based on product changes.  The product change is automatically recorded in pi via an OPC tag.  So when the product changes I need to display the following information

 

Example of what is needed with product A

 

Next Product change to product A which makes Product Tag   = A     I have this

 

When the product changes the system will need to find the start and end time below of that product.

 

Last  time Product A  Start Date and Time   = HELP  This needs to be done by an automatic search or VBA code is my guess.  (Product C changed to Product A  this would be the Start of product A)

Last time Product A  End Date and Time    = HELP   This needs to be done by an automatic search or VBA code is my guess.  (Product A changes to Product B  this would be the end of product A)  

 

Tag 1 = AVG of the values of Tag 1 while Line Running and Product = Product A with the value of Tag 1 > 0

Tag 2 = AVG of the values of Tag 2 while line running and  Product = Product A with value of Tag 2 >0

Tag 3 = AVG of the values of Tag 3 while line running and  Product = Product A with value of Tag 3 >0

Tag 4 = AVG of the values of Tag 4 while line running and  Product = Product A with value of Tag 4 >0

 

Please help me find out how to display the start time and end time that the next product on the line was run and the AVG of the 4 tags of data we need to be displayed.

 

 

Sorry if this is confusing I hope someone can help.

 

 

How to change PI AF retrieval mode with SQL to get previous compressed time value?

$
0
0

In this video I see mention of a retrieval mode http://www.youtube.com/watch?v=L43IPKXVopI.

 

What SQL query can I use to change the retrieval mode?

 

I want to get the previous compressed tag time before some specific time.

 

More detail:

A normal SQL query like select top 1 order by time where time < x takes way too long (times out), there must be some function I can use.

InterpolateDiscrete almost does what I want but it returns the timestamp I give as a parameter instead of the timestamp that the event occured at.

I want non-interpolated values.

PiBatchView Excel add-in

$
0
0

Hi all:

 

I have PI 2010, and the Pi batch is an excellent tool for my daily work, but when I try to use the Excel add-in on a Excel spreadsheet the Excel blocks and stops working Excele in general, is there any thing I can do for solving this issue?

 

this happens when I try to open a unit name tag.

 

Thank you in advance  :)

Attached Images

  • Pi Batch error.PNG

Excel Add-in Problem

$
0
0

Hi all:
 
 
Every time I enter to Excel, It aprears a legend that there is a eroor in an add-in as shown in the picture, the problem started when the PI-SMT add-in was installed in my computer, is there any soution for this? o do I have to learn to live with this error?
 
Best regards from Mexico- :)

Attached Images

  • Captura.PNG

PI ProcessBook 2012 SP1 Install Location

$
0
0

Hello All,

 

I'm having abit of trouble trying to install ProcessBook silently to a different location. We have this software installed on alot of machine around our site and I'm trying to automate the Install

 

I've followed that Knowledgebase articles and below is what im doing:

 

Run "setup.exe -f Silent.ini"

 

The .ini is then edited to include the line in bold.

 

 

 

[COMMANDLINE]
2 = /qn REBOOT=Suppress ALLUSERS=1
3 = /qn REBOOT=Suppress ALLUSERS=1
4 = /qn REBOOT=Suppress ALLUSERS=1 PI_SERVER=#### PI_ALIAS=localhost PI_TYPE=3 PI_PORT=5450 PI_USER=#### INSTALLDIR="C:\PIPC"
5 = /qn ALLUSERS=1 USING_EXUIH=1
;-----------------------
; single server example:
;-----------------------
6 = /qn REBOOT=Suppress ALLUSERS=1 TRANSFORMS=pisdk.mst PI_SERVER=localhost PI_TYPE=3 PI_USER=pidemo NOPISDKBuFFERING=1
;-------------------------
; list of servers example:
;-------------------------
; 3 = /qn IMPORT_KST=1 KST_INI_FILE="c:\full path\file.ini" ALLUSERS=1 REBOOT=Suppress

 

 

The setup runs fine and installs everything, however it still installs in C:/Program Files/PIPC

 

Has anyone else had a similar issue that they have working?

 

Regards

Mark

 

 


PI SDK Pipe

$
0
0

Hi All,

The PI SDK pipe stopped firing events after period of time for Digital points only.
I created a small code in C# that subscribes to PI pipe for about 5000 PI Digital points. After about a month the pipe stopped firing for new points events.

Any ideas?

Process Book - VBA - Opening a Display based on a trigger

$
0
0

Hi Everyone,

 

I want to reproduce an alarm pop-up window.

 

I figured that I could write a bit of VBA to open a .pdi file (which looks like an alarm pop-up) when ever a PI tag value exceeded a given limit.

 

Firstly, is the VBA approach the best way ?

 

Secondly, what would the code look like ?

 

Thanks in anticipation,

Ron

Override DefaultServer property in PI SDK call

$
0
0

Hello All,

 

Good Day!

 

I am trying to fetch data from PI tag using some PI-SDK functions in one of our .Net application (in C#).

 

I have used Servers.DefaultServer property to get all connection configuration (user name, password, server name etc). This works fine, however, it is getting limited to the type of default server configuration in PI-SDK where the application is hosted.

 

I want to use a specific PI server (e.g. ServerXX) even if the PI-SDK configuration has a default server as ServerYY.

 

Code sample-

 

var mysdk = new PISDK.PISDK();

Server objServer = mysdk.Servers.DefaultServer;

PIPoints objPiPoint = null;

PIPoint snapPoint = null;

objPiPoint = objServer.PIPoints;

snapPoint = objPiPoint[strPiTagName];

 

Please let me know for any details required.

 

Thanks,

Souvik

PI Manual Logger Mobile

$
0
0

Hi, I've recently purchased PIML for a trial for manual data entry of local transmitters by using a tough tablet at our production station.

 

I am trying to get to the more user-friendly "Mobile" mode (as shown here: http://www.osisoft.com/software-support/products/additional_detail/PI_Manual_Logger.aspx), and in reading the user manual it appears I need to download a stand-alone program called "PI Manual Logger Mobile", however I seem unable to find this program in my Download Centre, nor can I find any reference to it ANYWHERE on the web.

 

How do I get this application?

 

Thanks,

Nathan

Calculate average value between specified time period

$
0
0

Hi,

 

I'm trying to setup a performance equation to calculate the average value of a tag but I would like it to be for the production day which is from 7AM yesterday to 7AM today. I would like it to update daily, but I'm not sure how to write the performance equation?

 

Can anyone help?

 

Thanks.

Are you up for a challenge?

$
0
0

Hi everyone!

 

I’ve got a challenge I wish to share with you and hopefully get some ideas on a solution as my creativity, knowledge of PI, and patience have been pushed to the limits! J

 

 

Background:

I’m working on a fugitive emissions project for the mining industry. The purpose of the project is to implement a system to capture emissions data from our underground mines using Citect SCADA, historize all the data in our PI historian, calculate our emissions in volumetric tonnes (CO2 equivalent tonnes) using the PI ModuleDB and PI ACE, and report the volume of our emissions to our overarching systems such as our ERP and BI using PI OLEDB.

 

Instrumentation in our mine sites can be replaced due to damage, reliability, or accuracy, or temporarily changed for servicing (e.g. calibration).

 

Our data stream though cannot stop, as we require continuous monitoring (both for safety reasons and our calculations). As a result, we have primary instrumentation, and secondary instrumentation.

Primary instruments pass data that is deemed as reliable for our calculations. Secondary instrumentation passes data for validation purposes. The data from both types of instrumentation is captured and historized in PI.

 

As a result, we conceptually have two types of PI tags; primary and secondary tags. Primary tags collect and historize readings from primary instruments, and secondary tags collect and historize readings from secondary instruments.

 

The ModuleDB holds the mapping between our primary PI tags (as module aliases) and our required parameters for our PI ACE calculations.

 

 

Issue:

When our primary instrumentation changes for reasons described above, we need the primary tag changes reflected in the ModuleDB so our PI ACE calculations can retrieve the correct data.

 

Because the ModuleDB does not have any effective and obsolete dates for module aliases, we have an issue on how we can capture the instrumentation change-out, and therefore tag mapping changes, for our PI ACE calculations and recalculations, whether it’s a permanent or a temporary instrument change.

 

 

Here's an example of the issue:

Tag “Pressure_01” is a primary tag that collects and historizes all the pressure readings from the mine’s primary instrument. Being a primary tag, it’s data is used for our PI ACE calculations.

 

If the primary instrumentation measuring pressure changes, we must create a new tag “Pressure_02” to collect and historize all the pressure readings from the mine’s new primary instrument.

NB. The process of creating a new tag is required as new instrumentation may be recording in different units of measure (engineering units attribute on the PI tag), which are critical for our calculations (e.g. measuring pressure in kPa vs. Pa, the difference in UoM significance is 1000 times!). Our PI ACE calculations have been coded to include conversion logic between recorded UoM’s vs. required UoM’s for our calculations (e.g. if our calculations require pressure in kPa, but the instrument is recording in Pa, simply divide the tag’s data by 1000 to get the relative reading in kPa).

 

As a result of the primary instrument change and new tag creation, we must then update our ModuleDB alias to retrieve pressure data from tag “Pressure_02” for our PI ACE calculations.

 

If we change the ModuleDB alias for ‘Pressure’ to now point to tag “Pressure_02”, if recalculations need to take place sometime in the future for a period starting past the creation date of “Pressure_02”, no pressure data will exist as all that data was historized in tag “Pressure_01”.

 

 

Challenge: How do we get around this?

 

Solutions considered but rejected are (I’ll continue with the example used above for ease):

  1. Have an intermediate PE tag called “Pressure”, which all it does is replicate (using the PrevVal() PE function) readings from our primary tags “Pressure_01”, and then “Pressure_02” when the instrumentation changes. That way we no longer need to change any aliases in the ModuleDB! Hooray!  But… the problems with this solution are:
    1. If the data in the “Pressure_01” or “Pressure_02” tags are substituted/corrected by operators, the changes will not replicate on to the intermediate tag called “Pressure”. This of course could be overcome if the operators review and correct the “Pressure” tag’s data, but this links on to problem b. below.
    2. Responsiveness of PI Administrator to update the PE tag to now point to the new tags. If the PI administrator is notified of the change-out of the instrument, he/she must be quick to amend the “Pressure” intermediate tag to retrieve the data from “Pressure_02”. If not done immediately, that’s more work for the operators as they need to review and substitute more data!
    3.  “Spaghetti” tags – Chained links of tags increases complexity, risk of error when changes are required, and most importantly traceability (our auditor friends will not be happy!)
  2. Forget about intermediate tags and creating multiple tags recording the same attribute (pressure). Have only one single tag capturing the pressure readings from the primary instruments. If an instrument changes, simply update the instrument tag field on the PI tag for the data to now be collected and historized from our new primary instrument. Well, what if the instrument has different UoM’s (remember my example above of kPa vs. Pa?). Our calculation results will be incorrect!
  3. Similar to solution 2, have only one single tag capturing the pressure readings from the primary instruments. If an instrument changes, update the instrument tag field on the PI tag, but this time also update the engineering units of the PI tag (e.g. from Pa to kPa). Hmmm… what if we choose to recalculate for a period past the instrument change? Our as reading UoM’s will be different, thus our recalculation results will be incorrect!

 

If you are still awake, and have some ideas to share to solve this challenge, please do! J

 

Thanks guys!

 

Cheers,

Mario

VBA in lieu of multistate

$
0
0

I only recently figured out how to use multistate, and have come to love it for lab results.  I ran across a few tags though that have apparently been assigned an incorrect span, and therefore cannot use multistate for these.  When I click on the tag and look at the attributes, the span is set to 100.  So for a result that typically is say 210, my options for multistate are only from 0 to 100.  I know there's a way to correct this, but I don't think I have access to that, and the only person that does, is extremely busy with much more important things than updating pi tag attributes for me.  Is there a way that I can use VBA instead to essentially accomplish the same task as multistate?  Thanks in advance!


AF Modeler download

$
0
0

Hi

 

   I would like to get AFModeler Add-In for ProcessBook, but "Download Center" gives me only User Guide not 

Add-In itself. Is AFModeler available now or it needs some extra rights to download?

 

Regards, Yuri.

x y plot of fixed and realtime value with comparision using vba

$
0
0

hi all,

I want to draw xy plot for saturation temperature corresponding to pressure.how can i do in vba please explain?

Tweeting OSIsoft vCampus Live! 2013 in Pictures

$
0
0

 

Sandy Fliderman shows above the view from the Grand Hyatt and below the view at the opening session.

 

 

Not sure exactly what the battery means but Chirayu Shah is ready for day two. 

 

 

Here's a picture from Lars Christoffersen, whose teams from Dong Energy won BOTH hackathons this year.

 

 

Lonnie Bowling's view of the opening. He later reported the announcement that, just like this community, vCampus.osisoft.com will "include forums, blogs, guides, webinars open to all!!!"

 

Getting "Resize to show all values" in Excel

$
0
0

I am using "Sampled Data" to call data with an adjustable Start/End time that is entered using cells. When I change these times, the output cells are updated.  However, if the array is larger than it was previously, the bottom cells show "Resize to show all values".  This causes my formulas on the sheet to become invalid (#Value errors).  Is there a way to avoid this issue either with an excel/pi property or VBA code?

 

Thanks,

 

Kevin

PI Notifications trigger

$
0
0

We have a third-party tool that every 20 minutes,  writes a *.txt file in an folder.

This file is very important for correct production.

We want to check if the service that creates the *.txt file is running.

 

Can I use "PI Notifications"  to create a trigger that sends an email if this file does not exist or is older than 20 minutes?

Viewing all 1120 articles
Browse latest View live