How Do I Split QuickOPC Subscriptions for S7-1500?

David Krause6 min read
OPC / OPC UASiemensTutorial / How-to
Licensed PE Working through this on a live machine? A Maine-licensed engineer can take it from here — included with IMD hardware, by the hour for everything else. Book an engineer

An OPC UA subscription is the server-side container that publishes notifications for its monitored items. The S7-1500 OPC UA server in this configuration permits no more than 1000 monitored items in one subscription. QuickOPC automatically combines monitored items that have the same subscription-related parameters, so a request for 2000 items at one rate can exceed the server limit even though the individual item definitions are valid.

Subscription Limit and Batch Plan

The term batch here means the set of monitored items deliberately mapped to one QuickOPC subscription. For a limit of 1000 items, calculate the minimum batch count as:

minimum subscription count = ceiling(total monitored items / 1000)
Total items Minimum subscriptions Maximum batch size
1000 1 1000
2000 2 1000
More than 2000 Apply the ceiling formula 1000

List every requested item before changing the configuration. Divide the list into stable groups so that additions do not silently push an existing subscription above 1000. Keep each process value in only one group unless duplicate monitoring is intentional.

Check 1: Expect the batch inventory to equal the total requested item count, with every batch containing 1000 items or fewer.

First Monitored-Item Group

QuickOPC-UA for COM does not provide a direct control in this configuration for creating an additional subscription solely because an item count has crossed the server limit. Subscription creation follows QuickOPC's automatic grouping rules. The first group therefore establishes the baseline parameter set against which the next group must differ.

  1. Create the first group with no more than 1000 monitored items.
  2. Assign the required subscription-related rate to the whole group. In the working 2000-item configuration, the first 1000 items used 500 ms.
  3. Submit the first group and inspect the per-item creation results before adding the next group.
  4. Read the server or client diagnostics that report the active subscription and monitored-item counts. Use the reported count rather than the application array length.

A successful session connection does not prove that all monitored items were accepted. OPC UA reports item-level results, so validate those results along with the aggregate count.

Check 2: Expect one active subscription for the first group, no more than 1000 monitored items in it, and successful status for every requested item.

Second Subscription Parameter Set

Create the second subscription by changing a monitored-item parameter that QuickOPC uses when grouping requests. The proven configuration assigned 500 ms to the first 1000 items and 499 ms to the second 1000 items. QuickOPC treated the two parameter sets as different and created two subscriptions.

  1. Keep the second batch at 1000 items or fewer.
  2. Apply 499 ms to the second batch while leaving the first batch at 500 ms.
  3. Submit the second batch through the same client configuration.
  4. Inspect the active subscription count and the monitored-item count within each subscription.

The one-millisecond difference is a grouping discriminator, not a guarantee that the server will execute two distinguishable physical update periods. An OPC UA server can revise requested timing values according to its supported interval range and scheduler. Confirm both the subscription split and the effective timing reported at runtime.

For additional batches, select distinct grouping parameters that remain valid for the process and the server. Do not introduce arbitrary rate changes when update timing affects control, alarming, sequence detection, or data quality. If no harmless distinction is available, use isolated client instances instead.

Check 3: For the stated 2000-item case, expect two subscriptions with 1000 monitored items each; also confirm that the requested or revised rates meet the application's acquisition requirement.

Isolated Client-Session Alternative

A separate EasyUAClient object with its Isolated property set to true creates a separate session with its own set of subscriptions. Assign each monitored-item group to a different isolated client instance. This separates otherwise identical parameter sets without relying on a one-millisecond rate difference.

  1. Create one EasyUAClient instance for each required group.
  2. Set Isolated to true on each instance.
  3. Place no more than 1000 monitored items in any subscription created under an instance.
  4. Keep each client object active for as long as its monitored items must remain subscribed.

This method consumes more resources because a session carries more server and client state than another subscription inside an existing session. Two or three isolated sessions may be practical, but increasing the count without measuring load is wrong practice. Prefer parameter-based splitting when the small parameter difference is operationally acceptable.

Check 4: Expect the server diagnostics to show separate sessions for the isolated clients, with each session owning its subscription set and no subscription exceeding 1000 monitored items.

Recurring Commissioning Faults

Observed condition Likely mechanism Corrective check
QuickOPC still creates one subscription The two groups still have identical parameters for automatic subscription grouping, or the changed value was not applied to the request. Read back the parameters used for both batches and verify that one uses 500 ms and the other 499 ms.
Two groups exist in application code, but the server limit is still crossed Application grouping does not itself create OPC UA subscriptions. Inspect the server-side subscription count and item count rather than relying on local collection boundaries.
Additional sessions appear unexpectedly Multiple EasyUAClient objects are operating with Isolated enabled. Inventory active client instances and retain only those required by the selected architecture.
Subscription creation succeeds but values do not update as expected Some monitored items failed individually, the server revised timing, or the source values did not change. Check every item result, read the effective timing, and stimulate or observe a known changing item in each batch.
The arrangement fails after adding tags A batch grew beyond the 1000-item boundary. Recalculate the batch count and move the added items into a subscription that remains at or below 1000.

Check 5: Expect the configured batch count, active subscription count, active session count, and sum of accepted monitored items to match the selected design.

End-to-End Verification

  1. Item-count check: Record the requested total and calculate ceiling(total / 1000). Expect at least that many subscriptions when all items are active.
  2. Subscription check: Connect the client and read the server or client diagnostic counts. Expect every subscription to contain 1000 monitored items or fewer.
  3. Status check: Review the result for every monitored-item request. Expect no rejected or failed item hidden by an otherwise successful session.
  4. Data-path check: Change or observe one known process value in each batch. Expect a notification from every subscription and correct routing to the corresponding application item.
  5. Timing check: Compare the effective update behavior with the acquisition requirement. Expect the 500 ms and 499 ms grouping method to preserve acceptable process visibility even if the server revises timing.
  6. Reconnect check: Disconnect and reconnect using the production startup sequence. Expect QuickOPC to rebuild the same number of sessions, subscriptions, and accepted monitored items without crossing the 1000-item limit.

FAQ

Can I directly tell QuickOPC to create another subscription after 1000 items?

Not in the described QuickOPC-UA for COM configuration. Force separate automatic groups by using different subscription-related parameters, such as 500 ms and 499 ms, or use isolated client instances.

Does setting EasyUAClient Isolated create only another subscription?

No. Setting Isolated to true on separate EasyUAClient instances creates separate sessions, each with its own subscriptions, so measure server and client load when using several instances.

Does a successful OPC UA connection prove that the split worked?

No. Final check: expect at least ceiling(total / 1000) subscriptions, no more than 1000 monitored items in each, successful item-level results, and a received value change from one known item in every batch after reconnecting.

Back to blog