Download presentation
Presentation is loading. Please wait.
Published byLewis Morrison Modified over 9 years ago
1
PI Software Development Kit PI-SDK
2
Agenda The expanded class hierarchy Data access with the PI-SDK The PITimeServer library Multi-threading and the PI-SDK OSI and the PI-SDK Troubleshooting tips Coming attractions Questions
3
Class Hierarchy PI-SDK 1.0 The current release PI-SDK 1.1 PI-Batch and the Module Database PI-SDK 2.0 Data Access
4
PI-SDK 1.0
5
PI-SDK 1.1
6
PI-SDK 2.0
7
Data Access with the PI-SDK PIData and ListData The access paths Value Format What do values look like now? PIValues capabilities What can I do with the values? Writing Values
8
PIData
9
Data.RecordedValues() Start time and end time as Variant Boundary type Filter expression Show filtered Asynchronous Returns a PIValues collection
10
What’s in a PIValue?
11
PIValues – More than a datatype
12
Writing values to PI UpdateValue and UpdateValues RemoveValues
13
Demo Retrieving PIValues
14
Advanced Topics Event pipes Using asynchronous calls
15
Problem: Alarm Application Your app must catch every event But you can’t listen all the time Polling may miss an event Oop s
16
The EventPipe Object Get from a PIPoint or a PointList Collects value changes Count property Take, Peek methods First In, First Out (FIFO). OnNewValue event Can be throttled to avoid event overload
17
Problem: Long Queries Long blocking calls inhibit user response and slow down your application But breaking the query into small chunks may reduce efficiency Server does redundant work More network calls
18
PIAsynchStatus Object Lets you monitor the status of a query Sends an event when done Provides for progress bar Many calls can be asynchronous PIPoint.Data archive retrieval PointList.Data archive retrieval PIValues.RecordSet Server. GetPoints, GetPointsSQL PISDK.GetPoints MessageLog.List
19
Using PIAsynchStatus Dim WithEvents asy As PIAsynchStatus Set asy = New PIAsynchStatus Dim pv As PIValues Set pv = MyPoint.Data.RecordedValues (“*-1h”, “*”,,,, asy) Rem pv.Count should be zero... Private Sub a_OnStatusChange If asy.Status = csCompleted Then...
20
Time in the SDK Classic problems: summer time, time zones, clock drift The solution: PITimeServer
21
Time—The Problems Summer time (DST) What are the rules for this location? What were the rules last year? We must track historic changes Does my computer follow the rules? It probably doesn’t even know them. Even if it does (NT), it may not follow them.
22
Time—The Problems Time zones Servers can be in various time zones Clients can be in a different time zone from any server Queries must be interpreted in the time zone of the server
23
Time—The Problems Clock drift Even in the same time zone, the client clock may not be exactly the same as the server clock Real-time data inputs to a server should be timestamped with the server clock, i.e. adjusted for clock drift Historical inputs should not be adjusted for clock drift
24
Time—The Problems Time intervals (days, months, shifts) Is 1 day = 24 hours ? Not always, if you observe summer time On March 30, what does this mean? “* - 1 month” Can I define my plant shift schedule?
25
Time—The Solutions PITimeServer Independent COM server DLL Does not require PISDK.DLL for support Defines these objects: PITime, PITimeFormat, DynamicTime PITimeZoneInfos, PITimeZoneInfo DeviceTimeZones TimeIntervals, ITimeInterval
26
PITimeZoneInfo object Encapsulates time zone information Offset from UTC Summer/winter time change rules Historical changes in rules Every device is assigned one Server, client, instrument PITimeZoneInfos collection All known time zones on this client User can add or remove zones
27
Time Objects: PITime Lightweight, server-independent Translates wallclock to UTC using client-node time zone information Operations: UTCSeconds property UTCFileTime property LocalDate property SetToCurrent method
28
Time Objects: PITimeFormat Superset of PITime Knows its time zone TimeZoneInfo property Parses time strings Microsoft format (localized) or PI format Formats output strings Works with time intervals “subtract 3 weeks”
29
Time Objects: DynamicTime Superset of PITimeFormat Represents a moving time, such as “ * ” or “ * - 4.5 hours ” Property values change constantly Referenced to a known clock source Server clock Client clock Device clock, user-defined
30
ITimeInterval Object Represents a kind of interval Name, ShortName:month, mo MemberLo, MemberHi: 1, 12 Member(Short)Name: January, Jan, … Operations: given a time— What month is it? When did that month start? Add or Subtract n months How many months between two times?
31
TimeIntervals Collection Contains all intervals known on the client Interval servers Installed via registry entry Standard: year, month, day, week, weekday, yearday, hour, minute, second User-defined: whatever you want Shift, Plant day Fiscal year/month/week/quarter
32
Threading Release 1 was apartment-threaded Release 2 will be free-threaded Apartment-neutral Uses the Free-Threaded Marshaler (FTM)
33
If It Ain’t Broke… Apartment-threading works correctly But performance is unacceptable
34
Why Should I Care? Multi-threaded design is natural for many applications Interfaces—thread per scan class Displays—thread per graphic Today, this mostly affects C++ developers VB7 will support free-threading
35
OSI and the PI-SDK Redesigns of existing products New products in development Existing products
36
Redesigns for the PI-SDK PI-ProcessBook PI-DataLink Sigmafine PI-BatchView PI-Profiles
37
New Applications PI-PointBuilder PI-AlarmView Real-time SQC Point Manager PI-AutoPointSynch These are demonstrated Tuesday afternoon.
38
Controls and Libraries PI-BatchView 3.0 Module Database Controls Tag search
39
New Interfaces PI-Perfmon OPC ICCP
40
Existing Products Embedded PI systems Point creation User/Group management Batch Event File Interface Integration with batch systems UNIINT 3.2.0 Flexible attribute retrieval PIlog32.dll and sdkreg.dll
41
Troubleshooting Tips After the setup Read the setuppisdk.log Run AboutPI-SDK The new apisnap
42
AboutPI-SDK Version Info Timeout Info Hidden Connect Button
43
Connecting Manage your Servers Here
44
Server Management
45
Communication Layers What’s a pinetmgr and do I need one? What’s a redirector and how is it configured? ~\pipc\dat\pisubsys.cfg
46
Pisubsys.cfg Redirected Generic_local hostname:portnumber For example: Generic_local bilbo:5450 Local pinetmgr Generic_local \\.\pipe\rendevouz file path For example: Generic_local \\.\pipe\e:\PI\dat\piv3.rdz
47
What if? Remember AboutPI-SDK = apisnap Can’t run AboutPI-SDK Check error message Check setup
48
What if? Can’t connect Is server running? Client side Ping, apisnap, ProcessBook Server side Check services.(Net start, or services applet) Does piconfig work? Does pisnap work? Is the local pinetmgr service running? Try using a redirector
49
What if? Err.Description Often includes server specific errors Intermittent errors If it used to work, suspect the server PI-SDK web page Reported Problems http://support.osisoft.com/progtools/pisdk/
50
Coding Problems Try the examples in the help file Try the sample applications on the web Isolate the problem Send small examples that demonstrate the problem to tech support.
51
Coming Attractions PI-SDK 1.1 ModuleDatabase/ PIBatch PI-SDK 2.0 Data Any beyond
52
PI-SDK Questions?
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.