Overview of FactoryLink 7.5 Application Editor
FactoryLink 7.5 is a SCADA/HMI runtime from the Siemens Tecnomatix product line. The Application Editor (AppEd) is the offline drawing tool used to assemble operator screens that the supervisory runtime resolves when the project is loaded. Unlike Client Builder, which configures client topology and channel routing, Application Editor works directly on the .G drawing files inside the project. The editor does not embed raster images inline; instead it consumes a same-stem .BMP file in the same project directory and uses it as both the design-time and runtime background.
| Component | Purpose | File extensions handled |
|---|---|---|
| Application Editor | Build operator graphics, animations, scripts | .G, .SYM, .BMP, embedded .VB |
| Client Builder | Configure client topology and channel bindings | .CLB, .INI |
| Symbol Library (SYMBOLS.G) | Reusable named objects for symbol animation | SYMBOLS.G |
| PowerVB Engine | VBA-compatible scripting for runtime events | .VB (PowerVB blocks embedded in .G) |
| Database Manager | Tag and point configuration | .MDB / .FAP index |
Application Directory Layout and File Conventions
The Application Editor reads drawings from the project root denoted by the {FLAPP} token. {FLAPP} resolves to the directory that contains the project .FAP file. All static graphic resources consumed by Application Editor must live in dedicated subfolders under {FLAPP}\USER\DRW so that the supervisory runtime can resolve them at load time.
{FLAPP}
+-- application.FAP
+-- USER
+-- DRW
+-- MENU.G
+-- MENU.BMP
+-- AREA1.G
+-- AREA1.BMP
+-- SYMBOLS.G
+-- SYMBOLS.BMP
{FLAPP}\USER\DRW. Filenames are case-insensitive on Windows NT/2000 hosts but case-sensitive on mixed Samba / NFS mounts. Stick to uppercase 8.3-safe stems for legacy paths to avoid load-order issues on Windows NT 4 / Windows 2000 runtime hosts.Inserting a Bitmap Background into a Drawing
Application Editor does not provide an Insert → Image menu. The bitmap is bound at runtime by name match. To attach a company logo or a custom faceplate background to drawing MENU.G, the file MENU.BMP must be present in the same folder.
- Create or export the desired graphic as an uncompressed Windows BMP (8-bit indexed or 24-bit; BI_RLE8 compressed BMPs are not rendered reliably by FactoryLink 7.5 and should be avoided).
- Rename the BMP so its stem matches the target drawing exactly:
MENU.G↔MENU.BMP,AREA1.G↔AREA1.BMP. - Copy the BMP into
{FLAPP}\USER\DRWusing Windows Explorer, a deployment script, or the project publisher. Do not place the BMP in the runtimeBINdirectory; the editor and the runtime both resolve it fromUSER\DRW. - Open the drawing in Application Editor. The bitmap appears as the design-time background. Reopen the project from the supervisory if a stale copy was cached.
- At runtime, the supervisory service paints the bitmap before any vector primitives, so vector objects drawn on top overprint the image in z-order. Avoid placing transparent vector fills beneath visually critical image regions if the BMP carries gradients.
| Item | Required value | Notes |
|---|---|---|
| Color depth | 8 bpp (256 color) or 24 bpp | 32 bpp alpha is not decoded in 7.5 |
| Compression | BI_RGB (none) | Avoid BI_RLE8; risk of blank bitmap |
| Maximum size | 2048 x 2048 px recommended | Tested up to 4096 with reduced paint rate |
| File stem | Identical to drawing stem, extension .BMP | Case-insensitive on Windows |
| Location | {FLAPP}\USER\DRW |
Same folder as the .G file |
.FAP file or restart the flMain service to force a re-scan of the DRW folder.Controlling Object Visibility with Symbol Animation
Symbol Animation is the built-in mechanism to swap one or more predefined symbols based on a tag value. A symbol is a named object drawn inside the project-wide SYMBOLS.G file. The named symbol is then referenced by the Symbol Animation tool inside any drawing.
- Open
{FLAPP}\USER\DRW\SYMBOLS.Gin Application Editor. - Draw two (or more) variants, e.g., STATE_HIDDEN and STATE_VISIBLE. The hidden variant is typically placed off-canvas at coordinates
(-32000, -32000)so the symbol appears to vanish when the animation selects it. - Save
SYMBOLS.Gand reopen the target drawing (e.g.,MENU.G). - Select the host object, choose Insert → Animation → Symbol.
- Bind the animation to the controlling tag (e.g.,
PUMP1_RUN) and set the symbol mapping:- Tag value 0 →
STATE_HIDDEN - Tag value 1 →
STATE_VISIBLE
- Tag value 0 →
- Set the refresh rate. Recommended: 250 ms for visibility, 100 ms for level meters, 500 ms for slow alarms.
Symbol Animation is purely declarative, requires no script, and survives HMI client rebuilds cleanly. Use it whenever the on/off visibility logic is static and the number of states is small (8 or fewer). For composite conditions or computed visibility, fall back to PowerVB.
Controlling Object Visibility with PowerVB Script
When visibility depends on compound expressions (multiple tags, computed thresholds, or alarm states), Symbol Animation becomes cumbersome. PowerVB scripts attached to OnShow or tag-change events give full control.
The classic FactoryLink pattern is to relocate the object off-screen rather than toggle a visibility property. The following PowerVB snippet, attached to the OnShow event of drawing AREA1.G, hides object VALVE_V1 when tag ZONE1_ENABLE is 0 and shows it when the tag is 1.
' PowerVB - AREA1.G - OnShow event
If ZONE1_ENABLE = 0 Then
VALVE_V1.X = -32000
VALVE_V1.Y = -32000
Else
VALVE_V1.X = 220
VALVE_V1.Y = 140
End If
For dynamic tag-driven visibility without OnShow, attach the same logic to a tag-change subscription on ZONE1_ENABLE:
' PowerVB - TagChange on ZONE1_ENABLE
Sub OnChange_ZONE1_ENABLE(NewVal)
If NewVal = 0 Then
VALVE_V1.Visible = 0 ' 0 = hidden, 1 = visible in 7.5
VALVE_V1.X = -32000
VALVE_V1.Y = -32000
Else
VALVE_V1.Visible = 1
VALVE_V1.X = 220
VALVE_V1.Y = 140
End If
End Sub
Visible = 0 because the back buffer is not cleared. Moving the object to (-32000, -32000) guarantees it is clipped. This is the documented pattern for FactoryLink tooltips and remains the field-tested approach for valve and motor visibility.Building a "Go To" Navigation Button
Application Editor exposes a button animation that fires an action on mouse click. The simplest action type is DRW, which loads another drawing in place of the current one.
- In Application Editor, draw a rectangle on the source drawing. The rectangle becomes the hot region of the button.
- Select the rectangle and click the OK-button icon in the toolbox (the icon resembles a check mark). This invokes the Button Animation dialog.
- Set Action Type =
DRW. - In the Value field, type the target drawing stem without the
.Gextension, e.g.,AREA1forAREA1.G. - Add a Text object on top of the rectangle to label the button (e.g., Open Area 1).
- For an optional security gate, change Action Type to DRW_S and supply a numeric level code, or wrap the call in a PowerVB OnClick handler that checks operator level before invoking
OpenDrawing "AREA1".
| Action Type | Effect | When to use |
|---|---|---|
| DRW | Loads target .G drawing unconditionally | Free navigation between screens |
| DRW_S | Loads drawing only if operator security level ≥ Value | Restricted engineering screens |
| CMD | Sends a command string to a configured channel | Direct PLC writes (start/stop) |
| VB | Invokes a PowerVB subroutine | Conditional or multi-step logic |
| DDE | Sends a DDE execute to a server application | Legacy bridges to non-PLC software |
Implementing a Toggle Tag Button with PowerVB
FactoryLink 7.5 ships without a built-in toggle animation. The runtime pattern is a small PowerVB handler bound to the button's OnClick event.
' PowerVB - Toggle button OnClick handler
Sub OnClick_TOGGLE_PUMP()
If PUMP1_CMD = 0 Then
PUMP1_CMD = 1
Else
PUMP1_CMD = 0
End If
End Sub
For auditable toggle behavior, route the new value through the command channel rather than the live value tag so the action shows up in the audit log:
' PowerVB - Toggle through command channel
Sub OnClick_TOGGLE_PUMP()
Dim newState As Integer
newState = IIf(PUMP1_CMD = 0, 1, 0)
' Write through channel; preserves audit trail
Channel1.Write "PUMP1_CMD", newState
End Sub
- Draw a rectangle on the operator screen (e.g.,
MENU.G) and apply the OK-button animation. Set Action Type to VB and Value toOnClick_TOGGLE_PUMP. - Save the drawing and reload the supervisory to register the new event handler.
- Verify by clicking at runtime. Tag
PUMP1_CMDshould flip 0→1→0→1 on consecutive clicks. - For multi-tag toggles (start permissive + run command), extend the handler with a guard:
If PERMISSIVE_OK = 1 Then ... Else MsgBox "Permissive not satisfied".
PowerVB Script Reference Snippets
The following snippets capture the canonical FactoryLink 7.5 patterns. Use them as a quick-reference when porting screens or troubleshooting field reports.
| Intent | Code |
|---|---|
| Read tag value | v = MOTOR_SPEED |
| Write tag value | MOTOR_SPEED = 1500 |
| Conditional visibility | If TAG > 0 Then OBJ.Visible = 1 Else OBJ.Visible = 0 |
| Off-screen hide | OBJ.X = -32000 : OBJ.Y = -32000 |
| Restore position | OBJ.X = 220 : OBJ.Y = 140 |
| Open drawing | OpenDrawing "AREA1" |
| Confirm prompt | If MsgBox("Confirm?", 4) = 6 Then TAG = 1 |
| Audit log | LogMessage "Operator toggled PUMP1" |
| Tag-change subscribe | Sub OnChange_TAGNAME(NewVal) ... End Sub |
| Toggle (no audit) | TAG = IIf(TAG = 0, 1, 0) |
Dim types beyond Integer, Long, Single, Double, and String. Class modules are not supported. For complex projects, decompose logic into multiple subroutines rather than relying on object-oriented features.Common Errors and Troubleshooting Matrix
| Symptom | Likely root cause | Resolution |
|---|---|---|
| Bitmap does not show in editor or runtime | Filename mismatch with .G drawing | Rename BMP to match drawing stem; redeploy to {FLAPP}\USER\DRW
|
| Bitmap shows in editor but not at runtime | BI_RLE8 compressed BMP | Re-save with BI_RGB (no compression) |
| Object remains visible after Visible=0 | Back-buffer not cleared on legacy GDI | Move object to (-32000, -32000) in addition to Visible flag |
| Go To button does nothing | Action Type set to DRW but Value includes .G extension | Strip the .G; enter target drawing stem only |
| Go To button opens wrong screen | Stem collision with another project | Rename drawing to a unique stem; verify against entire DRW folder |
| Toggle button flips once then sticks | Handler bound to wrong tag or stale read cache | Reference the live tag, not a snapshot; reload supervisor |
| Symbol Animation always shows first state | SYMBOLS.G not deployed alongside drawing | Copy SYMBOLS.G to {FLAPP}\USER\DRW on every client |
| PowerVB handler never fires | Handler name does not match Button Animation Value | Verify exact case match between VB subroutine name and Value field |
| Drawing opens blank at runtime | Corrupt .FAP project or wrong project root | Validate project with Application Manager; republish |
| Slow paint on large BMP | Bitmap larger than 2048x2048 on low-end client | Tile the background or reduce to 1024x768 |
| Toggle fires twice on single click | Handler bound to both MouseDown and MouseUp | Bind to a single event; use MouseUp only |
Migration Considerations to WinCC
Siemens positions WinCC as the strategic successor to FactoryLink, and the Tecnomatix integration path eventually folded the FactoryLink runtime into the WinCC ecosystem. Customers running FactoryLink 7.5 should plan a staged migration when:
- Windows XP / Server 2003 host support ends (FactoryLink 7.5 was certified only through those operating systems).
- Cyber-hardening mandates require signed binaries and current TLS stacks; FactoryLink 7.5 ships with DES-based OPC Classic tunnels and a 32-bit channel architecture.
- Operator training moves to WinCC Comfort / Advanced panels, which do not run the
.Gdrawing format. - PLC fleets migrate to S7-1500 / ET 200SP, which expect TIA Portal engineering flows.
Before migration, capture an inventory of:
- Every
.Gdrawing and its matching.BMPbackground (the file-stem coupling is the first casualty of automated converters). - Every PowerVB handler, its triggering event, and the tag namespace it touches.
- Custom channel configurations (DDE, OPC Classic, SuiteLink) and their server names.
- Operator security levels, group memberships, and override passwords.
- Alarm priorities, audible annunciator mappings, and any external pager integrations.
For migration planning, consult the Siemens SCADA and HMI software portfolio and the official Siemens Industry Online Support portal. FactoryLink-specific migration notes are filed under the legacy SCADA archive.
Verification and Acceptance Tests
After implementing the techniques above, run the following acceptance checks before handing the screen back to operations.
- Background test: Open the drawing at runtime. Confirm the bitmap fills the canvas, and that no white border or stretched distortion is visible at the configured client resolution (typically 1024 x 768 or 1280 x 1024 for FactoryLink 7.5 clients).
- Visibility test: Force the controlling tag to 0 in the Database Manager, then to 1. Confirm the object disappears and reappears within one refresh cycle (typically ≤ 500 ms).
- Navigation test: Click the Go To button. Confirm the new drawing loads in ≤ 1 s on the target client hardware.
- Toggle test: Click the toggle button ten times. Confirm the tag values alternate 0, 1, 0, 1 ... and that no double-fire occurs on hold-down (mousedown debounce).
- Symbol Animation test: Drive the tag through every defined state value. Confirm each symbol variant displays correctly and that no off-screen artifacts leak into the visible canvas.
- Script audit: Open the PowerVB IDE, export the project, and diff against the source-controlled template to catch accidental edits.
- Restart resilience: Restart the supervisory service (flMain). All custom graphics, animations, and handlers should restore without manual intervention.
- Multi-client test: Repeat the visibility and navigation tests on at least two clients (one with 32-bit color, one with 16-bit) to surface palette-related display bugs.
How do I add a logo to a FactoryLink Application Editor screen?
Save the logo as an uncompressed Windows BMP with the same file stem as the target drawing (e.g., MENU.G ↔ MENU.BMP) and copy it to {FLAPP}\USER\DRW. The bitmap becomes the drawing background at design time and runtime. Use BI_RGB compression and 8-bit or 24-bit color depth.
Can I insert an image object inside a drawing like in WinCC?
No. Application Editor has no Insert → Image command. It only consumes a same-stem BMP in {FLAPP}\USER\DRW as a full background. For inline images or partial overlays, migrate to WinCC or use Symbol Animation with a pre-rendered bitmap variant.
How do I hide and show an object based on a tag?
Use Symbol Animation for static 0/1 visibility, or PowerVB script on OnShow / tag-change to move the object to (-32000, -32000) and back. The off-screen move is the field-proven pattern when flipping Visible=0 alone does not redraw correctly on legacy GDI stacks.
How do I create a button that opens another drawing?
Draw a rectangle, apply Button Animation with Action Type = DRW, and enter the target drawing stem without the .G extension. For security gating, use DRW_S with a numeric level code, or wrap a PowerVB OnClick handler that checks operator level before calling OpenDrawing.
How do I create a toggle button in FactoryLink 7.5?
FactoryLink 7.5 has no built-in toggle animation. Attach a PowerVB OnClick handler that reads the current tag value and writes the opposite, e.g., If TAG = 0 Then TAG = 1 Else TAG = 0. Bind the handler name in the Button Animation Value field with Action Type = VB. For audit trails, write through the configured command channel rather than the live value tag.
Which FactoryLink version is the last to support Application Editor graphics?
Application Editor graphics and the {FLAPP}\USER\DRW file-stem BMP convention are a FactoryLink 7.x feature. Siemens WinCC Comfort/Advanced panels and TIA Portal use PDX/EMF faceplates, not the .G drawing format, so a converter or full migration is required for new projects.