1. Prepare source and consumer
Prerequisites: B has a valid collected Tag and A has joined B. On A, select B’s IO, save PLC scope and reference the Tag. IO selection does not copy Devices, Tags or values.
Prerequisites: B has a valid collected Tag and A has joined B. On A, select B’s IO, save PLC scope and reference the Tag. IO selection does not copy Devices, Tags or values.
Prerequisites: B has a valid collected Tag and A has joined B. On A, select B’s IO, save PLC scope and reference the Tag. IO selection does not copy Devices, Tags or values.
Expected result The source maintains this catalog; A creates no PLC connection. Saved scope survives an outage, and the catalog reloads after recovery.
Expected result After the save is effective, this Site can use source Tags within the scope. Checking Devices changes only the draft; preview does not submit the change.
If the result differs
A TagRef is a stable source reference: hq://io/<io-domain-uuid>/<device-uuid>/<tag-uuid>. Expand Source Reference in synchronized Site Tags and copy it. If you already have the target Tag’s complete reference, continue to the next step.
admin:view, Site view or management permission, and IO or Tag view permission. Synchronization also requires io:manage.hq://io/... text.Expected result Synchronization saves only local Tag definitions and source bindings. It creates no acquisition Devices, copies no live values, rules or history, and enables no writes. Copy references from the catalog, not Site names or IPs.
If the result differs
The built-in hqcontrol reads collected state without another package. Run Test supports local Tags only; use a Point Change event to include a remote TagRef in the action scope.
tags.read(...) with the URI copied above and save the source. Then set this script’s entrypoint and runtime limits in Settings → Python → Python Packages → Advanced Project Settings → Project Runtime Configuration and check the application state. The script must read the same Tag selected by the event below.# scripts/read_value.py
from hqcontrol import tags
def main(ctx):
response = tags.read("hq://io/<io-domain-id>/<device-uid>/<tag-uid>")
if not response or response.get("ok") is not True:
raise RuntimeError("Tag read failed")
snapshot = response["value"]
if not tags.is_good_quality(snapshot):
raise RuntimeError("Tag quality is not good")
print("Value:", snapshot.get("value"), "Quality:", snapshot.get("quality"))
return {"value": snapshot.get("value")}
if __name__ == "__main__":
main({})
Expected result After triggering, the script reads the event-scoped remote value on A. If nothing fires, check enablement, conditions and source changes; for execution failures, check quality and permissions. The example does not write PLC values or archive trends.
The default reuse-only reads collected source values without another PLC connection. On-demand Tags need valid source collection demand and the required scope and subscription permissions.
Scroll horizontally to view the full table
| Result | Where to check |
|---|---|
| Current value with good quality | Compare value and time with the source Tag before connecting a consumer. |
| No value / not collected | Source Device and Tag enablement, collection mode and actual collection demand. |
| Invalid quality / source unavailable | Source Device, IO service and Site connection. Wait for valid new data after recovery. |
| Scope or permission denied | PLC usage scope, caller permissions and capability authorization. |
| Reference not found | Check whether the source Tag was removed or recreated, and obtain its current stable reference from the catalog. |
Expected result Reading a remote value does not establish alarm evaluation or trend recording on A. Configure those consumers separately.
Expected result Alarm and Trend have separate entry points and do not require Screens to be selected. Results still belong to B; a failure does not substitute A’s same-named menu or data.
Scroll horizontally to view the full table
| Use | Current entry point | Meaning after saving |
|---|---|---|
| Read-only Python | Configuration Center → script → Code: call tags.read with the complete source reference, then bind an event for the same remote Tag as described above. | The script runs on A and reads collected state from B. |
| Point-change script trigger | Configuration Center → script → Run → New Event. Choose Point Change, then select B, a Device and one Tag under Choose a Trigger Tag. | After the event and actions are configured and enabled, only continuous, current, valid value changes participate in triggering. |
| A’s own alarms and trends | Tag Management → Site Tags → Synchronized Tags → Alarm / Trend Configuration. Also choose the Devices processed by the service in Local Capabilities. | A maintains its own rules and retention. B’s alarm rules, trend policies and history are not copied. |
| Custom page | Declare read scope and runtime context according to the page SDK tutorial. | The page uses its authorized interfaces, with the FullCode or reference format required by each interface. |
| External application | Configure IO State API credentials, Profiles and read scopes. | API access is authorized separately. Site membership does not automatically expand an API Key’s permissions. |
Expected result Save Device scopes, Tag definitions, alarms, trends and events separately, then check services, input quality and results. Synchronizing Tag definitions does not automatically bind Tags in runtime screens.