I wonder if it is possible to know what is writing to a PI Tag.
I would like to enter a PI Tag name and see what wrote a value in it.
I am trying to troubleshoot why I get values in that tag when it should not receive any...
As Barry mentioned, there's no out-of-the-box feature to tell where data is coming from for a specific PI Point. However, there are ways to tell at least which machine the data is coming from. If the data is buffered via PI Buffer Subsystem (hopefully all your data writes are buffered ), then you can run the command line tool %piserver%\adm> piartool -sd [tagname|\ptid] (e.g. piartool -sd sinusoid or piartool -sd \1). If the point is buffered, the buffered flag will be 1, and the compressed value will actually be the registration ID of the pibufss that owns the point. You can then cross-reference against %piserver%\adm> piartool -bfs, which prints out all registered pibufss sessions, along with their registration ID. This will lead you to a specific machine where the data is coming from.
Otherwise, if the data is not buffered: if you don't care so much about interrupting the data writes to the point, you can make a buffered write to it from anywhere. This will then transfer ownership of the point to that pibufss thus locking the point from unbuffered writes. The next time that the mystery source tries to write to the point, it will encounter and log a -11414 error. This error will show up in the server message logs, and you can use the details in the error message to find your culprit.
I don't believe there is an out-of-the-box way to do this. Some clues are to look at the connected clients in PI SMT>Network Manager Statistics and look at some of the timestamps, last connection time, etc. The Point Source of the tag might also help narrow down the list of potential writers/interfaces.
The PI SMT message logs might also have some clues if you search the tag name or point id. The connection ID will also be in the message, which you can correlate to the connected client via the Network Manager Statistics table.
Thanks to both of you. That should do it for me.
Thanks Barry and Gavin. Much needed info.
May I know how to lock a tag for a specific buffer machine?
PI Buffer Subsystem will be locking the point if it buffers a source writing to the particular point. This said, you need to configure PI Buffer Subsystem to buffer your source (Interface). You need to enable buffering for the developer technology used by your data source (Interface). This could be PI API, PI SDK or AF SDK or any combination of those. Please refer Buffering User Guide for details and additional information KB00093 has some Background information.
Thanks a lot. I have gone through the KB article. seems that we could track the machine / identity but not the individual users.
Take this scenario: suppose a person (user1) is using custom developed application (like PI manual logger) with SDK buffering enabled and update data for a particular tag . Another person update the same tag , log in from the same client machine (user1). I think its quiet difficult to track the person who modified the tag value.
Also, we should take care the below scenario :
Point ownership is transferable between PI Buffer Subsystem instances. The PI Buffer Subsystem instances do not lock out each other
This showed me that an Analytics was writting to my Manual entry point.
I'm glad this thread helped you Alejandro.
The information in this thread is a little out of date as of 2019, for PI Data Archive 2017 and later there is a tuning parameter called Snapshot_TracePointID you can set with PIconfig which will show which will show the connection ID and user which wrote to a tag. Instructions for setting this are in the knowledge article below:
In your case, now that you have determine that it is an analysis writing to a tag you can use the powershell script below to determine which analysis this is rather than manually looking at your analysis configuration.
Retrieving data ...