TOPServer_257w_76h

Change Configuration from
the Client Using System Tags

SWTB_logo_93w_76h

clearpixel

SWTB_7Button_BlueLine_900w

Users who have used the TOP Server before know that the variety of built-in system tags are very useful for providing the ability to display errors and diagnostic data at the client level as well as enable/disable device communications from the client level.  If you have not used system tags before you can learn how to use these tags under the Startup/Testing Section.

System level tags are available for each Channel and Device in your configuration to allow you to change the TOP Server driver configuration from the client while the server is running . These features help the TOP Server stand alone -- most I/O servers require you to not only stop the I/O server to make these types of changes, but also to shut them down and restart them for the changes to take effect.  New applications are made easier with this feature of the TOP Server product line, such as:

  • Redundant Ethernet connections
  • Redundant Serial connections
  • Redundant PLCs on the same network
  • Client controllable tuning of timeout and diagnostics parameters
  • Communications Error Status Monitoring
  • Driver and Channel Settings Monitoring
  • Channel Diagnostics Monitoring
  • PC Time and Date Information Monitoring
  • Project Information
  • Client and Tag Count Monitoring
  • Serialized Channel Communications
  • Knowledge of The Specific OPC Clients Connected

You can access the following items "on the go" from your client application WITHOUT stopping the server! Each item that can be written to can also be configured as "Read only" to prevent unauthorized client access to the item.

Note: All Systems tags begin with a leading underscore ( _ ) which must be included in the tag name in our Client application.

IMPORTANT:  Click here for details on enabling writes to System/Statistic Tags if the tag supports writes.

Application-Level system Tags
Channel-level System Tags for Serial Port Driver
Channel-level System Tags for Ethernet Drivers
Channel-level System Tags for Communication Serialization
Device-level System Tags for both Serial and Ethernet Drivers
Channel-Diagnostic System Tags
Modem System Tags
Alarms & Events Tags for Event Log - New with Version 5.1

Application-Level system Tags

Syntax Example: _System._ActiveTagCount

The TOPIC used to access this level in DDE and SuiteLink Connections is _ddedata. 
You can see the full listing of Application_Level System Tags in the OPC Quick Client if you open it from the TOP Server by clicking on the Quick Client Icon on the TOP Server Icon bar.

Look under the folder shown here. QuickClientTree_Systemfolder

Tag Name

Description

_ActiveTagCount

The _ActiveTagCount is a tag that indicates the number of tags that are currently active in the server.  The Client programs request for tags changes this number and is not related to the number of tags configured in the Server.

_ClientCount

The _ClientCount is a tag that indicates the number of clients that are currently connected to the server. SuiteLink connections will only show one connection regardless of the number of SuiteLink clients connected. Number included OPC A&E client connections.

_Date

The _Date is a tag that indicates the current date of the system that the server is running on. The format of this string is defined by the operating system date/time settings.

_Date_Day

The _Date_Day Tag indicates the current day of the month of the system on which the server is running.

_Date_Month

The _Date_Month Tag indicates the current month of the system on which the server is running. The format of the string is a number (such as "9" instead of "September").

_Date_Year2

The _Date_Year2 Tag indicates the last two digits of the current year of the system on which the server is running.

_Date_Year4

The _Date_Year4 Tag indicates the current year of the system on which the server is running.

_DateTime

The _DateTime is a tag that indicates the GMT date and time of the system that the server is running on. The format of the string is '2004-05-21T20:39:07.000'.

_DateTimeLocal

The _DateTimeLocal is a tag that indicates the localized date and time of the system that the server is running on. The format of the string is '2004-05-21T16:39:07.000'.

_FullProjectName

The _FullProjectName is a tag that indicates the fully qualified path and file name to the currently loaded project.  The default project can be set under the Tools | Options | General tab

_IsDemo

The _IsDemo Tag indicates whether the server is running in Demo Mode. When True, the Demo timer is running. When False, either the product is licensed or the product is unlicensed but a licensable action has not yet occurred.

_OpcClientNames

The _OpcClientNames Tag is a String Array that lists the names of all OPC clients that connect to the server and register their name through the IOPCCommon::SetClientName method.

_ProjectName

The _ProjectName is a tag that indicates the currently loaded project file name and does not include path information

_ProjectTitle

The _ProjectTitle Tag is a String tag that indicates the title of the project that is currently loaded.

_Time

The _Time is a tag that indicates the current time of the system that the server is running on. The format of this string is defined by the operating system date/time settings.

_Time_Hour

The _Time_Hour Tag indicates the current hour of the system on which the server is running.

_Time_Hour24

The _Time_Hour24 Tag indicates the current hour of the system on which the server is running in a 24 hour format.

_Time_Minute

The _Time_Minute Tag indicates the current minute of the system on which the server is running.

_Time_PM

The _Time_PM Tag indicates the current AM/PM status of the system on which the server is running. This is a Boolean tag: 0 (False) indicates AM, and 1 (True) indicates PM.

_Time_Second

The _Time_Second Tag indicates the current second of the system on which the server is running.

_TotalTagCount

The _TotalTagCount is a tag that indicates the total number of tags that are currently being accessed. These tags can be active or inactive. OPC Clients can subscribe to tags and set them InActive.  InActive tags values will not be requested from the device so the values will not be updated in the Client.

Note: This count does not represent the number of tags configured in the project.

Confirming Application Tag Syntax

For easy viewing, you can open the OPC Quick Client from the TOP Server under the folder shown. QuickClientTree_Systemfolder

 

Channel-level System Tags for Serial Port Driver

Syntax Example: <channel name>._System._BaudRate

The TOPIC used to access this level in DDE and SuiteLink Connections is the Channel name you configured for this driver. You can also customize this path for any Client connection type using the Alias Map.
You can see the full listing of Channel-level System Tags in the OPC Quick Client if you open it from the TOP Server by clicking on the Quick Client Icon on the TOP Server Icon bar.

Look under the folder as shown here. QuickClientTree_ChanelSystemfolder
Your folder will have your channel name instead of MyChannel. 

Tag Name

Description

_AvailableNetworkAdapters

The _AvailableNetworkAdapters is a tag that lists the available NICs and will include both unique NIC cards and NICs that have multiple IPs assigned to them. Additionally this tag will also display any WAN connections that are active, such as a dialup connection. This tag is provided as a string tag and can be used to determine the network adapters available for use on this PC. The string returned will contain all of the NIC names and their IP assignments. A semicolon will separate each unique NIC in order to allow the names to be parsed within an OPC application. For a serial driver this tag will only be used if Ethernet Encapsulation is selected.

_NetworkAdapter

The _NetworkAdapter tag is a tag that allows the current NIC adapter in use by the driver to be changed on the fly. As a string tag, the name of the newly desired NIC adapter must be written to this tag in string format. The string written must match the exact description of the desired NIC in order for the change to take effect. NIC names can be obtained from the _AvailableNetworkAdapters tag listed above. For a serial driver, this tag will only be used if Ethernet Encapsulation is selected. Note: When changing the NIC selection the driver will be forced to break all current device connections and reconnect.

_ComId

The _ComId tag is a tag that allows the comm port selection for the driver to be changed on the fly. As a string tag, the desired comm port must be written to the tag as a string value using the following possible selections: COM 1, COM 2 COM 3, COM 4, - - -, COM 100, and Ethernet Encapsulation. When selecting Device Properties - Ethernet Encapsulation mode, users will also need to set the IP number of the remote terminal server. This is done at the device-level and will be shown below.

_BaudRate

The _BaudRate tag is a tag that allows the baud rate of the driver to be changed on the fly. The _BaudRate tag is defined as a long value and therefore new baud rates should be written in this format.

_Parity

The _Parity tag is a tag that allows the parity of the driver to be changed on the fly. As a string tag, the desired parity setting must be written to the tag as a string value using the following possible selections: None, Odd and Even.

_DataBits

The _DataBits tag is a tag that allows the data bits of the driver to be changed on the fly. The _DataBits tag is defined as an signed 8 bit value. Valid data bits selections are 5, 6, 7 and 8.

_StopBits

The _StopBits tag is a tag that allows the stop bits of the driver to be changed on the fly. The _StopBits tag is defined as a signed 8 bit value. Valid data bit selections are 1 and 2.

_FlowControl

The _FlowControl tag is a tag that allows the flow control setting of the driver to be changed on the fly. As a string tag, the desired flow control setting must be written to the tag in this format. Possible selections for flow control include: None, DTR, RTS, "DTR,RTS", RTS Always and RTS Manual. Not all drivers support the RTS Manual mode of operation.

_RtsLineRaise

The _RtsLineRaise tag is a tag that allows the RTS Line to be raised for a user-selected period of time before the driver attempts to transmit a message. This tag will only be effective for drivers that support Manual RTS mode. The _RtsLineRaise is defined as a Long value. The valid range is 10 - 2550 milliseconds. The Manual RTS mode has been designed for use with radio modems.

_RtsLineDrop

The _RtsLineDrop tag is a tag that allows the RTS Line to be lowered for a user-selected period of time after the driver attempts to transmit a message. This tag will only be effective for drivers that support Manual RTS mode. The _RtsLineDrop is defined as a Long value. The valid range is 0 - 2550 milliseconds. The Manual RTS mode has been designed for use with radio modems.

_RtsLinePollDelay

The _RtsLinePollDelay tag is a tag that allows a user-configurable pause to be placed after each message sent from the driver. This tag will only be effective for drivers that support Manual RTS mode. The _RtsLinePollDelay is defined as a Long value. The valid range is 0 - 2550 milliseconds. The Manual RTS mode has been designed for use with radio modems.

_ReportComErrors

The _ReportComErrors tag is a tag that allows the reporting of low level communications errors such as parity and framing errors to be enabled or disabled. This tag is defined as a Boolean tag and can be set either true or false. When true, the driver will report any low-level communications error to the server event system. When set false the driver will ignore the low-level communications errors and not report them. The driver will still reject a communications transaction if it contains errors. If the environment contains a lot of electrical noise, this feature can be disabled to prevent the event log from filling with error messages.

_SharedConnection

The _SharedConnection Tag indicates that the port settings are being shared with another channel.

_EnableDiagnostics

The _EnableDiagnostics tag is a tag that allows the diagnostic system of the driver to be enabled and disabled. The diagnostic system places a little additional burden on the driver while enabled. As such the server allows diagnostics to be enabled or disabled to improve the driver's performance. When disabled, the Diagnostics Tags will not be available.

_WriteOptimizationDutyCycle

The _WriteOptimizationDutyCycle tag is a tag that allows the duty cycle of the Write to Read ratio to be changed on the fly. The duty cycle controls how many Writes the driver will do for each Read it performs. The _WriteOptimizationDutyCycle is defined as an Long value. The valid range is 1 to 10 Write per Read.

 

Channel-level System Tags for Ethernet Drivers

Syntax Example: <channel name>._System._NetworkAdapter

The TOPIC used to access this level in DDE and SuiteLink Connections is the Channel name you configured for this driver. You can also customize this path for any Client connection type using the Alias Map.
You can see the full listing of Channel-level System Tags in the OPC Quick Client if you open it from the TOP Server by clicking on the Quick Client Icon on the TOP Server Icon bar.

Look under the folder as shown here. QuickClientTree_ChanelSystemfolder
Your folder will have your channel name instead of MyChannel.

Tag Name

Description

_AvailableNetworkAdapters

The _AvailableNetworkAdapters is a tag that lists the available NICs and will include both unique NIC cards and NICs that have multiple IPs assigned to them. Additionally this tag will also display any WAN connections that are active, such as a dialup connection. This tag is provided as a string tag and can be used to determine the network adapters available for use on this PC. The string returned will contain all of the NIC names and their IP assignments. A semicolon will separate each unique NIC in order to allow the names to be parsed within an OPC application. For a serial driver, this tag will only be used if Ethernet Encapsulation is selected.

_NetworkAdapter

The _NetworkAdapter tag is a tag that allows the current NIC adapter in use by the driver to be changed on the fly. As a string tag, the name of the newly desired NIC adapter must be written to this tag in string format. The string written must match the exact description of the desired NIC in order for the change to take effect. NIC names can be obtained from the _AvailableNetworkAdapters tag listed above. For a serial driver, this tag will only be used if Ethernet Encapsulation is selected. Note: When changing the NIC selection, the driver will be forced to break all current device connections and reconnect.

_EnableDiagnostics

The _EnableDiagnostics tag is a tag that allows the diagnostic system of the driver to be enabled and disabled. The diagnostic system places a little additional burden on the driver while enabled. As such the server allows diagnostics to be enabled or disabled to improve the driver's performance. When disabled the Diagnostics Tags will not be available.

_WriteOptimizationDutyCycle

The _WriteOptimizationDutyCycle tag is a tag that allows the duty cycle of the Write to Read ratio to be changed on the fly. The duty cycle controls how many Writes the driver will do for each Read it performs. The _WriteOptimizationDutyCycle is defined as an Long value. The valid range is 1 to 10 Write per Read

 

Channel-level System Tags for Communication Serialization

Syntax Example: <Channel Name>._CommunicationSerialization._VirtualNetwork

The TOPIC used to access this level in DDE and SuiteLink Connections is the combination of the Channel Name and Device Name you configured for this channel.  Communication Serialization tags allow you to monitor and control serialization of channels when this feature is being used.  Currently, only the DNP Suite drivers support communication serialization.

Tag Name

Description

_VirtualNetwork

The _VirtualNetwork tag allows the virtual network selection for the channel to be changed on the fly. As a string tag, the desired virtual network must be written to the tag as a string value using the following possible selections: None, Network 1, Network 2, ---, Network 50. To disable communication serialization, select None.

This tag is Read/Write.

_Registered

The _Registered tag indicates whether the channel is currently registered to a virtual network. After setting the _VirtualNetwork, the channel will unregister from the network it is currently registered to (indicated in _RegisteredTo) when it is capable of doing so. In other words, if the channel owns control during the switch, it cannot unregister until it has released control. Upon unregistering, the channel will register with new virtual network. This tag will be FALSE if _VirtualNetwork is None.

This tag is Read Only.

_RegisteredTo

The _RegisteredTo tag indicates the virtual network to which the channel is currently registered. After setting the _VirtualNetwork, the channel will unregister from the network it is currently registered to when it is capable of doing so. In other words, if the channel owns control during the switch, it cannot unregister until it has released control. Upon unregistering, the channel will register with new virtual network. This tag will indicate if there are delays switching networks as _VirtualNetwork and _RegisteredTo could differ for a period of time. This tag will be N/A if _VirtualNetwork is None.

This tag is Read Only.

_NetworkOwner

The _NetworkOwner tag indicates if the channel currently owns control of communications on the network. The frequency of change reflects how often the channel is granted control.

This tag is Read Only.

_StatisticNetworkOwnershipCount

The _StatisticNetworkOwnershipCount tag indicates the number of times the channel has been granted control of communications since the start of the application (or since the last time _StatisticsReset was written to). This tag is formatted as an unsigned 32-bit integer and may eventually rollover.

This tag is Read Only.

_StatisticNetworkOwnershipTimeSec

The _StatisticNetworkOwnershipTimeSec tag indicates how long in seconds the channel has held ownership since the start of the application (or since the last time _StatisticsReset was written to). This tag is formatted as a 32-bit floating point and may eventually rollover.

This tag is Read Only.

_StatisticAvgNetworkOwnershipTimeSec

The _StatisticAvgNetworkOwnershipTimeSec tag indicates how long on average the channel holds ownership of control since the start of the application (or since the last time _StatisticsReset was written to). This tag will aid in identifying busy channels/bottlenecks. This tag is formatted as a 32-bit floating point and may eventually rollover.

This tag is Read Only.

_StatisticsReset

The _StatisticsReset tag can be used to reset all the statistic counters. The _StatisticsReset tag is formatted as a Boolean tag. Writing a non-zero value to the _StatisticsReset tag will cause the statistics counters to be reset.

This tag is Read/Write.

_TransactionsPerCycle

The _TransactionsPerCycle Tag indicates the number of Read/Write transactions that will occur on the channel when taking turns with other channels in a virtual network. It allows the channel-level setting to be changed from a client application. This tag is formatted as a signed 32 bit integer (Long). The valid range is 1 to 99. The default setting is 1.

_VirtualNetwork

The _VirtualNetwork Tag allows the virtual network selection for the channel to be changed on the fly. As a string tag, the desired virtual network must be written to the tag as a string value using the following possible selections: None, Network 1, Network 2, ---, Network 50. To disable communication serialization, select None.

 

Device-level System Tags for both Serial and Ethernet Drivers

Syntax Example: <Channel Name>.<Device Name>._System._Error

The TOPIC used to access this level in DDE and SuiteLink Connections is the combination of the Channel Name and Device Name you configured for this driver. You can also customize this path for any Client connection type using the Alias Map.
You can see the full listing of Device-level System Tags in the OPC Quick Client if you open it from the TOP Server by clicking on the Quick Client Icon on the TOP Server Icon bar. 

Look under the folder as shown here. QuickClientTree_DeviceSystemfolder
Your folder will have your channel name and device name instead of MyChannel.MyDevice

Tag Name

Description

_DeviceId

The _DeviceId tag is a tag that allows the ID of the device to be changed on the fly. The data format of the _DeviceId depends on the type of device. For most serial devices this tag will be a Long data type. For Ethernet drivers the _DeviceId will be formatted as a string tag, allowing the entry of an IP address. In either case, writing a new Device ID to this tag will cause the driver to change the target field device. This will only occur if the Device ID written to this tag is correctly formatted and within the valid range for the given driver.

_ConnectTimeout

The _ConnectTimeout is a tag that allows the timeout associated with making an IP connection to a device to be changed on the fly. This tag is available when either a native Ethernet driver is in use or a Serial driver is in Ethernet Encapsulation mode. The _ConnectTimeout is defined as a Long data type. The valid range is 1 to 30 seconds.

_RequestTimeout

The _RequestTimeout is a tag that allows the timeout associated with a data request to be changed on the fly. The _RequestTimeout tag is defined as a Long value. The valid range is 100 to 30000 milliseconds. This parameter tag applies to all drivers equally.

_RequestAttempts

The _RequestAttempts is a tag that allows the number of retry attempts to be changed on the fly. The _RequestAttempts is defined as a Long value. The valid range is 1 to 10 retries. This parameter tag applies to all drivers equally.

_InterRequestDelay

The _InterRequestDelay is a tag that allows the time interval between device transactions to be changed on the fly. The _InterRequestDelay is defined as a Long data type. The valid range is 0 to 30000 milliseconds. This parameter tag only applies to drivers that support this feature.

_EncapsulationIp

The _EncapsulationIp tag allows the IP of a remote terminal server to be specified and changed on the fly. This parameter tag is only available on serial drivers that support Device Properties - Ethernet Encapsulation mode. The _EncapsulationIp is defined as a string data type, allowing the entry of an IP address number. The server will reject entry of invalid IP addresses. This tag is only valid for a Serial driver in Ethernet Encapsulation mode

_EncapsulationPort

The _EncapsulationPort tag allows the port number of the remote terminal server to be specified and changed on the fly. The _EncapsulationPort is defined as a long data type. The valid range is 0 to 65535. The port number entered in this tag must match that of the desired remote terminal server for proper Ethernet Encapsulation to occur. This tag is only valid for a Serial driver in Ethernet Encapsulation mode.

_EncapsulationProtocol

The _EncapsulationProtocol tag allows the IP protocol used for Ethernet Encapsulation to be specified and changed on the fly. The _EncapsulationProtocol is defined as a string data type. Writing either "TCP/IP" or "UDP" to the tag specifies the IP protocol. The protocol used must match that of the remote terminal server for proper Ethernet Encapsulation to occur. This tag is only valid for a Serial driver in Ethernet Encapsulation mode.

_AutoCreateTagDatabase

The _AutoCreateTagDatabase tag is a Boolean tag that is used to initiate the automatic OPC tag database functions of this driver for the device to which this tag is attached. When this tag is set TRUE, the communications driver will attempt to automatically generate an OPC tag database for this device. This tag will not appear for drivers that do not support Automatic OPC Tag Database Generation.

_Enabled

The _Enabled tag is a Boolean tag that allows the active state of the device to be turned On or Off. When this tag is set FALSE, all other user-defined tags and data from this device will be marked as invalid and Writes will not be accepted for the device. When this tag is set TRUE, normal communications will occur with the device.

_Error

The _Error tag is a Boolean tag that returns the current error state of the device. When FALSE, the device is operating properly. When set TRUE, the driver has detected an error when communicating with this device. A device enters an error state if it has completed the cycle of request timeouts and retries without a response.

_NoError

The _NoError tag is a Boolean tag that returns the current error state of the device. When TRUE, the device is operating properly. When FALSE, the driver has detected an error when communicating with this device. A device enters an error state if it has completed the cycle of request timeouts and retries without a response.

_Simulated

The _Simulated tag is a Boolean tag that provides feedback about the simulation state of the current device. When Read as TRUE, this device is in a simulation mode. While in simulation mode, the server will return good data for this device but will not attempt to communicate with the actual physical device. When tag is Read as FALSE, communication with the physical device will be active.

_AutoDemoted

The _AutoDemoted tag is a Boolean tag that returns the current auto-demoted state of the device. When FALSE, the device is not demoted and is being scanned by the driver. When set TRUE, the device is in demoted and not being scanned by the driver.

_AutoDemotionEnabled

The _AutoDemotionEnabled tag is a Boolean tag that allows the device to be automatically demoted for a specific time period when the device is nonresponsive. When this tag is set FALSE, the device will never be demoted. When this tag is set TRUE, the device will be demoted when the _AutoDemotedFailureCount has been reached.

_AutoDemotedFailureCount

The _AutoDemotedFailureCount tag specifies how many successive failures it takes to demote a device. The _AutoDemotedFailureCount is defined as a long data type. The valid range is 1 to 30. This tag can only be written to if _AutoDemotionEnabled is set to TRUE

_AutoDemotionIntervalMS

The _AutoDemotionIntervalMS tag specifics how long, in milliseconds, a device will be demoted before re-attempting to communicate with the device. The _AutoDemotionIntervalMS is defined as a Long data type. The valid range is 100 to 3600000 milliseconds. This tag can only be written to if _AutoDemotionEnabled is set to TRUE.

_AutoDemotionDiscardWrites

The _AutoDemotionDiscardWrites tag is a Boolean tag that specifies whether or not Write requests should be discarded during the demotion period. When this tag is set to FALSE, all Writes requests will be performed regardless of the _AutoDemoted state. When this tag is set to TRUE, all Writes will be discarded during the demotion period.

 

Alarms & Events tag for the Event Log OPC Alarms and Events Support

Syntax Example: _Alarms&Events._ClientCount

The TOPIC used to access this level in DDE and SuiteLink Connections is _ddedata.
You can see the full listing of Alarms & Events System Tags in the OPC Quick Client if you open it from the TOP Server by clicking on the Quick Client Icon on the TOP Server Icon bar. Click here for more information on OPC Alarms & Events support in the TOP Server.

Look under the folder as shown here.  QuickClientTree_Alarms&Eventsfolder

Tag Name

Description

_ClientCount

The _ClientCount is an OPC DA tag that indicates the number of OPC Alarms&Events Clients connected to the Server. 

Client Write Access to System Tags

Starting with Version 5.8:

By default, writes will now be possible to TOP Server system tags via a new user management account called Data Client.

Open the TOP Server Settings by Right Clicking on the Administration Icon in your system tray (shown below)

V5_Administation_ICON_w45_h42_sharp

Choose Settings from the pop up menu and go to the User Manager Tab (shown below)

V5_UserManager_Admin

Under the properties for the Data Client user, client writes to system tags can be enabled/disabled completely by toggling the setting “Allow writes to system tags that...” or enabled/disabled for different groups of system tags using the other settings as shown.

. V5_UserManager_DataClientUser

Version 5.7 and Prior:

Open the TOP Server Settings by Right Clicking on the Administration Icon in your system tray (shown below).

V5_Administation_ICON_w45_h42_sharp

Choose Settings from the pop up menu and go to the Runtime Options Tab (shown below).

V5_Administation_RuntimeOptionsTAB

Make sure the check box below is checked to enable writes to these tags. These settings can be secured by making changes to the User Manager, also accessed through the Administration Icon.

V5_Administation_RuntimeOptions_SystemTags
.

 

 | TOP SERVER HOME  | PRODUCT DETAILS  | DRIVERS LIST  | FREE TRIAL  | ORDERING TOP SERVER  | SUPPORT  | NEWS

P: 1-888-665-3678 (US-Sales) or +1-704-849-2773 (Support & International), F: +1-704-849-6388
148A East Charles Street, Matthews, North Carolina, USA 28105
Copyright Software Toolbox, Inc., 1996-2009, All Rights Reserved Worldwide.

Wonderware, InTouch, and Invensys are registered trademarks of Invensys plc.  All  other marks are the property of their respective owners.
The Software Toolbox name and logo are registered trademarks of Software Toolbox Inc.