August 1, 2022
Modeling [08-01-2022]
Our latest release is the culmination of a lot of ground-breaking changes that will totally change and enhance the way the ThinkIQ platform is used. Let’s begin.
Background
Up to now, the platform provided rich modeling capabilities that allowed one to create equipment and material definitions in two separate tools. This allowed one to declare things that looked like objects provided they were either equipment or materials. There were limitations to this approach in that the object modeling capability could only be applied to these two types of objects, but the system has and needs a rich set of organizational objects. We wanted to put structure on any thing: a rich organizational hierarchy, configuration data, nameplate data, and more.
To this end, several major changes have been introduced to the platform:
- Introduced a broader way to do Object Oriented development
- Introduced new Data Types
- Enabled true Object Behavior
- Enhanced the Model Abstraction Layer
- Changed the way the ThinkIQ Base Library operates and the content that it delivers
Better Object Orientated Programming
In this release, we have taken the general ability to create object types and instances and made this same richness applicable for organizations, places, and custom objects. The power in the system that once applied only to equipment is now generically available for all objects in the system. For example, now when you create any Type, the type supports inheritance and layers of inheritance, and the system maintains and enforces all rules for a nested type system.
Types that now support the new features include
- organizations, places, sites, etc.
- custom objects such as nameplates, workday shifts,
- persons
In support of this work, the Model Editor no longer has Equipment and Equipment Type grids, or the Places grid. Now all objects are created under new Types and Instances grids.
New fundamental Data Types
Three new data types have been introduced that will greatly enhance the ability to create, describe, and display objects:
- Enumerations
The enumeration data type allows for a defined set of allowed values for an attribute. These defined sets of allowed values can be driven by integers mapping onto strings or strings mapping onto integers. In addition, for convenience, enumerations carry descriptions and color definitions so that the system can display them well. Enumerations may supersede Booleans in some instances, for example, the state of a machine ‘Running” or “Not Running”, but even more importantly, enumerations are applicable to configuration data, ie, they not only apply to time-series data, but also to configuration data. - GeoPoints
GeoPoints build on a powerful underlying system for coordinates and can define the location of things in the cartesian linear space, or the shape of things such as polygons and circles on a globe. They not only allow for establishing where a place or organization is, but also distance and whether something is inside something else. This is important in manufacturing, where things have a value at a place and point in time, like, for example, mobile assets such as delivery trucks, as well as layouts of assets within a place. We perceive GeoPoints to be a fundamental building block to smart systems. - Object References
Object references are similar to what the platform has always supported in terms of object composition, but they are a little looser. In terms of object composition, you can define a tank, a valve, and a motor as separate types, and create a composite instance Batch Tank that is composed of these object types. The object, Batch Tank, ‘owns’ the other objects in that they only exist in the thing that is composed of them. When Batch Tank is deleted, its composite parts are also deleted. This is a very tight relationship.
Object references allow for a looser relationship between objects. They allow objects to point at one another independently of one another. Take, for example, Motor and Power Supply. A Power Supply can supply power to any number of objects, the Motor being only one of them. Removing Motor will not destroy the Power Supply object.
Object Behavior
Until recently, one of the powers of the ThinkIQ platform was the ability to create objects declaratively, and to create representations of things and organizations. One could define classes – types – and create instances of these classes and wire them to data sources. This was essentially a representation of an organized environment for data coming into the system. But to enable behavior on an object – to do calculations, create digital twins, or to do data science on the object - the code needed to exist and operate on the outside the object. This is not consistent with most object models.
With this release, behavior can now be implemented on classes. ThinkIQ classes are associated with Types – they are synonymous. It is now possible to create a specific script on a Type, called a class script, from with the Mini IDE (integrated development environment). These scripts can be developed by ‘citizen developers’ – people who are skilled but not experts at programming. Sample scripts provide a programming model that allows people to mimic and add behaviors to objects.
Model Abstraction Layer
In support of the other capabilities this release introduces, the Model Abstraction Layer has been greatly enhanced. Among many other enhancements, the Model Abstraction Layer (MAL) introduces
- easy ways to create and modify limits and ranges of an attribute
- easy ways to get to data
- leverage expressions inside the behavior of an object
- creates patterns to invoke class scripts automatically
The effect of these changes on scripts is important: in the past you could schedule scripts, run scripts from within Mini IDE, or cause scripts to run from user interaction in the browser. With the introduction of class scripts code will run when it needs to, code will run whenever anyone asks for data on an object that has a class script and be automatically executed when data is requested.
The Model Abstraction Layer is exposed how?
Changes to the Base Library / Built-In Types
Prior to this release the ThinkIQ Base Library provided a collection of about 60 simple types, all of which had the previous limitations of types. From now on, ThinkIQ will no longer deliver pre-configured type in the Base library. Based on user feedback, ThinkIQ will be delivering a smaller number of types that will be more useful and deliver them in specific libraries.
For backward compatibility, any system that implemented types from the ThinkIQ Base Library would notice the following after update: if you created instances from the types, the types will be moved into the Local Library, as will the instances; all unused types will be deleted from the ThinkIQ Base Library.
In place of the types in the ThinkIQ Base Library, the platform will provide new libraries of types, starting with a Smart Equipment library focusing on the most common equipment types. These types will be rich, include digital twins and useful behaviors, and likely be good enough for most customers to use and embrace out of the box. If not, customers can extend the types further with all the new capabilities of the system.
Engineering Units and Quantity Kinds
- The platform now leverages the ability to automatically convert measurement units to the desired unit based on common Quantity Kinds
Model Editor
1. Removed the Places, Equipment Types and Equipment tabs in the Model Browser. In the place of these tabs Types and Instances have been added. This allows adding and referencing and leveraging a wider range of 'things' in the platform. Types now introduce Material, Organization, Person and Object Types along with Place and Equipment. Introducing Objects to the platform will allow for a lot of freedom in creating and leveraging the Model.
2. The new Instances tab not only replaces the Equipment tab, but provides a location to create Places, Materials, Objects, etc., in one place, and leverages the rich model objects to their fullest. The reorganization provides for a full class structure with inheritance of properties and behavior from Types, including propagation rules that maintain data integrity and symmetry.
3. Enumeration Types tab has been added to the Model Editor. See Added for details.
ADDED:
Enumeration Types
Added the new data type of Enumerations to allow for permutations of state, or classification, that an item assumes.
- Users can use pre-existing Enumeration Types or add their own enumerations under the Enumeration Types tab in the Model Editor
- Enumerations are used by adding them as Attributes to:
- another Type, for example, The Enumeration Type of 'Motor Type' (a list of 6 types of motors) can be an attribute of the Equipment Type 'Motor'
- an Instance, for example, the enumeration type Run State('Running', 'Stopped') can be added to directly to an equipment item
- Enumerations present human-readable text to the end user: if the state is 0, the display name could read 'Running', not true/false or 1/0.
- Enumerations can leverage different Data Sources:
- Tags
- Internal (scripts, etc.)
- Expressions
- Static, or Config
- Enumerations can have color-coding for use in displays
- each choice in the enumeration list can be represented by a user-defined color
- this color can enhance data display in Trends, Process Layouts, and more
Model Editor
A multi-select combo-box has been added to the Libraries tag to allow scoping the list of items shown to one or more libraries.
REMOVED:
Removed the Places and Equipment tabs in the Model Editor: see Changed
Removed the Attribute Types tab in the Model Editor.