Overview
This page provides a comprehensive overview of objects and namespaces, fundamental concepts crucial for effective development within the software platform. Understanding these concepts is essential for organizing and managing the various elements of your application.
On this page:
Table of Contents | ||||
---|---|---|---|---|
|
Introduction to Objects and Namespaces
Accessing Objects Directly in Your
ProjectSolution
In most of the other systems, custom logic and using the status of the modules in extension, or extending properties for Tags, requires the usage of APIs and some programming.
creation of tags or variables for all internal properties are necessary. However, our platform allows your application to directly access all the objects you create in your project. This means that user-created temporary tags are not required to manage the status of PLC network nodes, the total number of alarms in a group, or the number of rows in a dataset. You can access runtime objects, business objects (representing a network node), or an alarm group or dataset directly. This allows you to display the required information or take action through the object's built-in properties.created, and its properties, and use the .NET classes extension, with no configuration or programming required.
An example, If you create an Alarm Group named ProductionAlerts, it iis immediately available to the solution, the property Alarm.Group.ProductionAlerts.TotalCount, which holds the number of active alarms within that group.
Another example, if you need to find that the Day of the Year, for a DateTime value, you can use the .NET class, directly in extension for the solution tags, like in Tag.StartDateTime.Value.DayOfYear
The DayOfYear wasn't created, neither programmed by our software platform, but as our Tags are .NET objects, their values can naturally use all the .NET functionality right away.
Not only Tags are .NET object. Everything created with the solution, Alarms, Database Connections, are all .NET objects extending the feature
Modules Namespaces
The platform namespaces are organized following exactly the names and organization of the Designer configuration tools. Those are the opThere is an underlying .NET object model with 100% managed code, specifically targeting the development of real-time data management applications. The hierarchical object model includes the following top-level objects that correspond to the main modules in the platform:
Namespace | Description |
---|---|
Tags | Real-Time Tags |
defined in Unified Namespace Tags (or AssetTree) | |
Alarm | Alarm Module |
Client | Client Station |
, local variable to each Client Displays User (WPF or WEB). | |
Dataset | Dataset Module |
Device | Device Module |
Display |
Displays Module (holds all displays created) | |
Historian | Historian Module |
Info |
Info, contains generation information about the Solution | |
Report | Report Module |
Script | Script Module |
Security | Security Module |
Server | Server station |
, contains information abbot the Server Computer where the Solution is running | |
Toolkit | Toolkit Classes, additional library of methods for general use. |
The top-level hierarchy is implemented as .NET namespaces. Each namespace includes .NET classes and objects that are created when building projects. These objects have runtime properties, methods, statuses, and configuration settings.
For instance, the Tag namespace contains every tag within an application, and each tag has built-in field properties, such as Quality, Timestamp, Min, Max, Units, etc.
Examples:
Tag.tagname1.bit0
,
tag.tagname2.timestamp
The same concept of tag fields applies to all namespaces, for instance:
Alarm.TotalCount
Alarm.Group.Warning.Disable
Our platform features IntelliSense auto-completion for building projects, filling in input fields, and creating scripts. This functionality guides you to any existing properties allowed for the object you are editing and enables you to easily "drill down" to a specific property.
When accessing a project's object in the .NET Script Editor, you must prefix the namespace with an "@" symbol to avoid conflicts with the names of .NET local variables.
Examples:
In Script → Tasks and CodeBehind, use:
Code Block | ||
---|---|---|
| ||
@Device.Node.Node1.Status |
The at "@" symbol is not necessary on Grids and Dialogs. Some input fields may require objects of only one type, such as Tag or Display. For these, IntelliSense will automatically guide you to the required objects.
These concepts may seem abstract for users that do not have experience in .NET or similar object-oriented systems. However, the power of these concepts will become clearer when users learn the engineering configuration tools and the FactoryStudio modules. When users get used to working with object models and Intellisense, they realize that there is a huge increase in productivity so they no longer want to work with systems that lack these features.
You can see the available Namespaces on the platform here.
What's Next?