You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 4 Current »

Devices Points (Reference) represent specific data elements within field devices, mapping PLC registers, I/O values, and variables to platform tags for monitoring and control.

Device Points provide:

  • Register-to-tag mapping
  • Data type conversion
  • Read/write access control
  • Scaling and modifiers
  • Dynamic addressing
  • Import capabilities

Each point links a specific device address to a tag, enabling data exchange between field devices and the platform.

On this page:

Creating Device Points

  1. Navigate to Unified Namespace → Tags
  2. Copy tags to be mapped
  3. Go to Devices → Points
  4. Paste copied tags
  5. Configure point properties

Point Properties

PropertyDescriptionExample
TagNameAssociated platform tagTag.Temperature01
NodeParent device nodePLC_Line1
AddressDevice register/location40001, DB100.DBW10
DataTypeData formatNative, Int32, Float
ModifiersByte order adjustmentsSwapBytes, SwapWords
AccessTypeRead/Write permissionsReadWrite, ReadOnly
ScalingValue transformationDiv:10, Add:32

Address Configuration

Static Addressing

Protocol-specific formats:

  • Modbus: 40001, 30001, 10001
  • ControlLogix: Controller.Tag[0]
  • Siemens: DB100.DBW10
  • OPC: ns=2;s=Channel.Device.Tag

Dynamic Addressing

Change addresses at runtime:

csharp

// Retrieve point configuration
DataTable dt = TK.ProjectDB.GetDataTable("DevicesPoints", 
    "TagName='Tag.Temperature'");

// Update address
DataRow row = dt.Rows[0];
row["Address"] = "Group01/" + @Tag.Gateway + "/Device01";
row.AcceptChanges();

// Apply changes
string error;
TK.ProjectDB.UpdateDataRows("DevicesPoints", row, out error);
TK.ProjectDB.ApplyProjectChanges();

Data Types

Native Type

Default - protocol handles conversion automatically

Override Types

TypeDescriptionUse Case
BooleanSingle bitDigital I/O
Int1616-bit signedAnalog values
Int3232-bit signedCounters
Float32-bit floatingMeasurements
Double64-bit floatingPrecision values
StringText dataMessages

Modifiers

Byte Order Adjustments

ModifierDescriptionWhen to Use
SwapBytesReverse byte orderBig/Little endian mismatch
SwapWordsReverse word order32-bit value issues
SwapDWordsReverse double word64-bit value issues
BitIndexExtract specific bitPacked boolean values

Scaling Configuration

Read Operations

Tag Value = (Device Value / Div) + Add

Write Operations

Device Value = (Tag Value - Add) * Div

Examples

Temperature scaling:

  • Device: 0-1000 (tenths of degree)
  • Div: 10, Add: 0
  • Result: 0-100.0 degrees

Offset correction:

  • Device: 0-100
  • Div: 1, Add: -50
  • Result: -50 to 50

Access Types

Configure read/write behavior:

  • ReadWrite - Full bidirectional
  • ReadOnly - Monitor only
  • WriteOnly - Control only
  • OnDemand - Manual trigger

See → Devices AccessTypes for detailed configuration


Dynamic Address Example

MQTT Topic Routing

csharp

public void UpdateMQTTAddress(string tagName, string gateway)
{
    string error;
    
    // Get point configuration
    DataTable dt = TK.ProjectDB.GetDataTable("DevicesPoints", 
        $"TagName='{tagName}'");
    
    if (dt.Rows.Count > 0)
    {
        // Update address with gateway
        DataRow row = dt.Rows[0];
        row["Address"] = $"/topic/{gateway}/data";
        row.AcceptChanges();
        
        // Apply to project
        TK.ProjectDB.UpdateDataRows("DevicesPoints", 
            new DataRow[] { row }, out error);
        
        if (string.IsNullOrEmpty(error))
        {
            TK.ProjectDB.ApplyProjectChanges();
            @Info.Trace($"Address updated: {row["Address"]}");
        }
        else
        {
            @Info.Trace($"Error: {error}");
        }
    }
}

Importing Points

Import Methods

  • PLC program files (L5K, TIA)
  • OPC browsing
  • CSV/Excel files
  • Online discovery

See → Importing PLC Addresses for procedures


Performance Optimization

Efficient Configuration

  • Group consecutive registers
  • Use block reads when possible
  • Minimize individual points
  • Optimize polling rates

Address Optimization

Good: 40001-40010 (block read)
Poor: 40001, 40003, 40005 (individual reads)

Best Practices Guidelines

  • Group Related Points - Organize by function
  • Use Native Types - Let protocol handle conversion
  • Document Addresses - Include descriptions
  • Test Scaling - Verify calculations
  • Plan Access Types - Minimize unnecessary writes
  • Validate Imports - Check addressing after import
  • Monitor Point Count - Stay within license limits

Troubleshooting

Point not updating:

  • Verify node connection
  • Check address format
  • Review access type
  • Test with OPC client

Wrong values:

  • Check data type match
  • Verify byte order
  • Review scaling settings
  • Test without modifiers

Write failures:

  • Confirm write access
  • Check PLC program
  • Verify address writable
  • Review error logs

Import issues:

  • Validate source file
  • Check address format
  • Review tag mapping
  • Test with sample

Diagnostics

Monitor point communication:

csharp

// Get point status
bool quality = @Tag.Temperature.Quality == 192;

// Check last update
DateTime timestamp = @Tag.Temperature.TimeStamp;

// Monitor errors
string lastError = @Device.Point["Temperature"].LastError;

// Communication statistics
int readCount = @Device.Point["Temperature"].ReadCount;
int writeCount = @Device.Point["Temperature"].WriteCount;




In this section...

The root page @parent could not be found in space 93Draft.



  • No labels