Overview
Monitor Pro 7.2 (the Wonderware/ABB-branded successor to FactoryLink) exposes its real-time database (RTDB) to external Windows applications through legacy dynamic data exchange (DDE), OLE for Process Control (OPC), and DDE-based Excel links. This article covers the canonical DDE path: configuring the FLDDESRV task (flag FSR) inside Monitor Pro and consuming the published items from Microsoft Excel 2003 using the flapp1.shareusr|RTDB!tagname syntax. Although OPC DA is the recommended modern integration, DDE remains the lowest-friction path for spreadsheets, ad-hoc reports, and proof-of-concept dashboards because it requires no SDK, no driver, and no extra Microsoft component beyond the built-in DDE support in Office 2003.
The article also clarifies the role of the FLAPP, FLNAME, and FLUSER environment variables, the formula syntax accepted by Excel's DDE() function, and the licensing model (Client Access Licenses, or CALs) that gates every external data consumer.
Prerequisites
- Monitor Pro 7.2 server installed and licensed on the host (or a remote host reachable from the Excel client machine).
- An RTDB configured with at least one tag (e.g.
DATETIME,SECTIME, or a user-defined analog/digital point). - At least one Client Access License (CAL) available on the server. Every active external connection (DDE, OPC, OLE, Client Builder, third-party client) consumes one CAL. CALs are concurrent; you may install many clients but only the number of purchased CALs may connect simultaneously.
- Microsoft Excel 2003 (or any version that still ships the DDE client — Excel 97/2000/2002/2003 are confirmed; Excel 2007 partial; 2010+ removed). Reference the Microsoft DDE function reference for cell-level syntax and supported operations.
- Network and DDE share rights: the user running Excel must have read access to the Monitor Pro RTDB share, and the Monitor Pro service must be running as a user with full RTDB read/write privileges.
Monitor Pro DDE Server Architecture
Monitor Pro does not bind DDE into the kernel or the I/O server process. Instead, the product relies on a child task, FLDDESRV, started by the FSR (FL Server Requester) launcher. The launcher reads a series of environment variables and command-line switches, locates the application directory, and starts the DDE server in the user's session. The server then advertises three DDE items by default:
-
SYSTEM— system status and runtime statistics -
RTDB— direct read access to real-time database tags (the canonical one used by Excel) -
ALARM— alarm summary items
The DDE service name, topic, and item together define the application|topic!item triple that the Microsoft DDE protocol uses to address any data point. The service name is constructed from FLNAME (the application alias) and FLUSER (the logical user). The topic is fixed to RTDB for live data, ALARM for alarm data, and SYSTEM for system state.
Environment Variables: FLAPP, FLNAME, FLUSER
Three environment variables control how Monitor Pro resolves a DDE request. They are typically set by the Monitor Pro startup shortcut, by the Windows service wrapper, or manually in the System Properties dialog.
| Variable | Meaning | Example Value | Used In DDE Address As |
|---|---|---|---|
FLAPP |
Full path (including drive letter) to the directory containing the Monitor Pro application files (RTDB, mimic, scripts, configurations). | C:\MonitorPro\MyPlant |
Indirect — used by the server to locate the RTDB files; not embedded in the DDE address. |
FLNAME |
Application name. The FLNAME value becomes the leftmost identifier (the DDE "service name") that clients use to open a conversation. |
flapp1 |
Leftmost identifier in FLNAME.shareusr|RTDB!tag. |
FLUSER |
Logical user name under which the conversation is opened. Acts as the DDE "topic" in the address string when RTDB is the topic; it controls which logical user the client is connecting as for permission and licensing purposes. |
shareusr |
Middle identifier between the DDE service name and the pipe-delimited topic (RTDB). |
The DDE address syntax follows the Microsoft DDE convention:
=FLNAME.FLUSER|RTDB!'tag_name'
Substituting the example values above:
=flapp1.shareusr|RTDB!'SECTIME'
To confirm the variables currently in scope on the server, open a CMD prompt and run set FL. Excel reads these names from the parent shell it inherited at launch; if you change the variables, you must restart Excel for the new address to resolve.
Configuring the FLDDESRV Task in Monitor Pro
- Open the Monitor Pro Configuration Explorer.
- Expand the System node in the tree on the left.
- Right-click Tasks and choose Add Task.
- Set the task parameters exactly as follows:
-
Flag:
FSR -
Task Name:
FLDDESRV -
Path:
/bin/flddesrv(relative toFLAPP; resolves to%FLAPP%\bin\flddesrv.exe)
-
Flag:
- Save the configuration. The task will start the next time the Monitor Pro runtime is brought up.
Once the FSR task is running, the FLDDESRV process registers the DDE service with Windows. You can confirm it is alive with the Microsoft DDE test utility DDEML (third-party) or by attempting a connection from Excel (see the next section). If the process is not present in Task Manager after a Monitor Pro restart, check the system log under FLAPP\log for the launch failure reason — most commonly a missing FLAPP variable, an unreadable application directory, or an absent RTDB file.
Excel 2003 DDE Formula Syntax
Excel 2003 supports two equivalent ways to bind a cell to a DDE item.
Method 1: Direct DDE Formula
Type the DDE address directly into a cell as a formula. Excel resolves the conversation when the sheet is opened or when the cell is recalculated.
=flapp1.shareusr|RTDB!'DATETIME'
=flapp1.shareusr|RTDB!'SECTIME'
=flapp1.shareusr|RTDB!'MY_PLANT.TANK_LEVEL'
=flapp1.shareusr|RTDB!'MY_PLANT.PUMP_01.STATUS'
The pipe character separates the DDE topic (RTDB) from the item, and the single-quoted item is the tag name. Hierarchical RTDB paths are dot-delimited.
Method 2: DDE() Function
Excel's built-in DDE() function wraps the same protocol but adds error handling. The Microsoft DDE function reference documents the full signature; the typical form is:
=DDE("flapp1","RTDB","DATETIME")
=DDE("flapp1","shareusr|RTDB","SECTIME")
Wrapping IFERROR() (Excel 2007+) or ISERROR() (Excel 2003) around DDE() lets you replace transient "server busy" errors with a blank or a fixed string:
=IFERROR(DDE("flapp1","shareusr|RTDB","TANK_LEVEL"),"--")
Method 3: Paste Link from Copy
When you copy a DDE formula and use Edit > Paste Special > Paste Link, Excel creates a reference to the cell containing the formula. This is the recommended way to replicate one DDE point across a sheet without re-typing the full address.
Client Access License (CAL) Behavior
Every DDE, OPC, OLE, or Client Builder connection to the Monitor Pro server consumes one Client Access License. CALs are enforced by the server, not by the client. The licensing rules observed in production deployments are:
- CALs are concurrent — the same client can reconnect any number of times, but only N simultaneous external consumers may read data, where N is the count of purchased CALs.
- CALs are per-server, not per-machine. If you have two Client Builders on the same PC they typically share a single CAL, while two OPC clients on two PCs each consume one CAL.
- An OPC connection to the Monitor Pro server costs 1 CAL; the same is true for a DDE Excel session. A single Excel workbook opening K DDE conversations counts as K external connections, but the server usually only charges one CAL because they share a single process context.
- When all CALs are consumed, the server returns "There are no available license" to subsequent connection attempts and silently drops updates to existing clients in some legacy builds. There is no out-of-band warning; monitor the FSR task log.
Step-by-Step: Wiring a Live Cell to a Monitor Pro Tag
- Confirm
FLDDESRVis registered. From the Windows Run dialog, typeddeml /qor open a CMD and runtasklist | findstr flddesrv. The process should be present. - Start Excel 2003. If Excel was already running when you changed
FLNAMEorFLUSER, close and re-open it so the DDE cache is cleared. - Click the target cell (e.g.
A1). - Type the formula:
=flapp1.shareusr|RTDB!'SECTIME'(substitute yourFLNAMEandFLUSERvalues). - Press Enter. The cell should immediately display the seconds-since-epoch counter from the RTDB.
- To force continuous update, press F9 (recalculate) or enable iterative calculation and set a short recalculation interval under Tools > Options > Calculation.
- To test the conversation lifecycle, watch the
FLDDESRVtask in the Monitor Pro Task Manager view: it should report one active DDE conversation while the workbook is open and zero after it is closed.
Verification
After configuration, run this checklist:
-
Process presence:
FLDDESRV.exeis listed in Task Manager while the Monitor Pro service is running. -
Service registration: open
DDESHARE(Windows 2000/XP resource kit) orDDEViewand confirm theflapp1service is registered with theRTDBtopic. -
Cell value: the Excel cell updates without manual recalculation. A tag with a continuously changing value (e.g.
SECTIME,DATETIME) is the best smoke test. - CAL consumption: Monitor Pro's runtime status screen should increment the active external connections count by 1 when the workbook opens, and decrement it when the workbook closes.
-
Log review: no
FSRerrors appear in%FLAPP%\log\flddesrv.logwithin the first 60 seconds.
Troubleshooting Matrix
| Symptom | Likely Cause | Diagnostic | Fix |
|---|---|---|---|
Cell displays #REF! immediately |
FLDDESRV not running, or wrong service name | Task Manager; set FL on server |
Restart Monitor Pro; correct FLNAME; reopen Excel |
Cell shows #N/A with no update |
Tag name misspelled or RTDB not loaded | Open point in Monitor Pro editor | Match exact spelling (case-insensitive but underscore-sensitive) |
| Cell freezes on a single value | DDE Advise loop dropped | Check FSR log; toggle Edit > Links | Re-establish the link; ensure FSR is not restarting |
| Server reports "There are no available license" | All CALs consumed by other clients | Runtime status screen > External Connections | Close other external clients or purchase additional CALs |
Excel shows Server Busy dialog on open |
Race between Excel launch and FSR startup | Task Manager timing | Delay Excel startup via logon script; or click Retry until FSR is up |
| Updates stop after some time | DDE timeout from Windows networking | Event Viewer > Application log | Disable SMB signing, or switch to OPC DA |
| Workbook works locally but not from a remote PC | DDE is session-scoped, not network-aware | Test from server console | Use OPC DA over TCP/IP for remote access |
OPC DA Alternative (Recommended for Excel 2010+)
DDE is session-scoped — it works only when Excel and Monitor Pro are running in the same Windows session, typically on the same PC. If you need cross-machine access, or you are on Excel 2010 or later (which dropped the DDE client), use OPC DA:
- On the server, start the OPC task
FLOPCSVwith flagFSR, analogous to FLDDESRV. - On the client PC, install a small OPC-DA-to-Excel bridge, e.g. the open-source OPC Data Client or the commercial MatrikonOPC Excel Add-in.
- Bind Excel cells to OPC items using the bridge's ribbon UI; the cell formula is then a normal Excel reference.
OPC DA honors the same CAL accounting: one OPC connection = one CAL. If you have multiple Excel add-ins reading from the same Monitor Pro server, budget CALs accordingly.
Security and Reliability Notes
- Microsoft has progressively deprecated DDE. Office 2010 and later block most DDE conversations by default, and Microsoft Defender Application Control policies can permanently disable DDE. If you must remain on DDE, freeze the version of Office or whitelist the FSR binary in WDAC.
- DDE is not encrypted and not authenticated. Treat any DDE link as a trusted-LAN-only integration; do not expose the Monitor Pro server to the public internet.
- The FSR task inherits the security token of the Monitor Pro service account. Do not start the Monitor Pro service as a highly privileged account; a domain user with read/write to the RTDB directory is sufficient.
- DDE updates are best-effort. Excel will silently display the last value if the FSR task is restarted; for mission-critical reporting, write to a CSV file (via a Client Builder script) and import the CSV into Excel instead.
FAQ
What does FLNAME refer to in the Monitor Pro DDE address?
FLNAME is the application name that Monitor Pro publishes as the DDE service name. It is set as a Windows environment variable by the Monitor Pro startup shortcut and forms the leftmost identifier in the Excel DDE formula, for example =flapp1.shareusr|RTDB!'tag'.
What is FLUSER and why is it part of the DDE syntax?
FLUSER is the logical user name under which the DDE conversation is opened. It controls the user identity the server sees and is encoded between the DDE service name and the pipe-delimited topic, e.g. flapp1.shareusr|RTDB!tag. The typical value is shareusr for a generic read-only user.
Do I need a Client Access License (CAL) for DDE to Excel?
Yes. Every DDE, OPC, OLE, or Client Builder connection consumes one concurrent CAL on the Monitor Pro server. CALs are enforced server-side; running out of CALs surfaces as "There are no available license" errors. Co-located applications do not collapse to a single CAL.
Why does my DDE cell freeze on a single value?
Most often because the FSR task restarted (check the FSR log) or because Excel's DDE advise loop timed out. Reopen the workbook, confirm FLDDESRV is still running, and watch the Monitor Pro external-connection count to confirm the conversation was re-established.
How do I read Monitor Pro tags from Excel 2010 or later?
Excel 2010 and later no longer ship a working DDE client. Switch to OPC DA: start the FLOPCSV task on the Monitor Pro server and use an OPC-DA-to-Excel bridge (such as the MatrikonOPC Excel add-in) on the client machine. OPC DA is also the only supported way to read from a remote Monitor Pro server.