Overview
Unlike S7-300/S7-400, where STEP 7 V5.x allows you to select and download a single Function Block (FB), Function (FC), or Data Block (DB) directly from the SIMATIC Manager, the S7-1200 and S7-1500 families operate on a consistent project download model in TIA Portal. This means that when you compile a project, the engineering system determines the dependency closure for any changed block and downloads every block that the changed block depends on (or that depends on the changed block) so the running program remains syntactically and semantically consistent in the CPU's load memory.
This behavior is by design: S7-1200 CPUs (firmware V1.0 and later, see Siemens Support entry 109751654) and S7-1500 CPUs (firmware V1.0 and later) enforce a compile-then-load cycle where only the minimum affected set of blocks is transferred. The question "can I download just FC100 without FC1?" therefore has a precise answer: not directly through the standard "Download to device" path when the dependency closure includes FC1, but several workflows allow you to achieve a single-block update in practice.
Prerequisites
- TIA Portal V13 SP1 or later (V15.1, V16, V17, V18, V19, or V20 recommended for S7-1500 CPUs of firmware V2.9+).
- An online connection to the target S7-1200 (e.g., 6ES7214-1AG40-0XB0) or S7-1500 (e.g., 6ES7515-2AM02-0AB0) via PROFINET, PROFIBUS, or the CPU's X1/X2 interface.
- The project must compile without errors. Open blocks: Project tree → CPU → Program blocks → right-click → Compile → Software (rebuild all blocks).
- Read/write access to the CPU. The CPU must not be password-protected for "Read access to PLC program" if you want to verify which blocks are loaded.
How TIA Portal Selects Blocks for Download
When you trigger Online → Download to device, TIA Portal runs an internal dependency analysis. The relevant inputs are:
| Selection Node in Project Tree | What Gets Downloaded | Typical Side Effect |
|---|---|---|
| CPU (root node) | Hardware configuration + all program blocks + all system data | CPU goes STOP if HW config changed |
| Program blocks folder | All changed/affected program blocks; no HW config | CPU stays RUN if interface unchanged |
| Single FC/FB/DB block | The selected block + every block that calls it or is called by it (dependency closure) | OB1 reloaded when interface changed |
| PLC data types / Tags | Only the modified UDT and dependent blocks | DB instance reloaded if UDT changed |
| Watch tables / force tables | NOT downloaded with the program; only inserted as online objects | No runtime impact |
The dependency closure is computed against the compile timestamp in the offline project versus the load timestamp on the device. You can view this in the CPU's online block list (Online → Go online → Program blocks). Any block whose offline timestamp differs from the online timestamp is queued for download.
Method 1 — Highlight Only the Modified Block Before Downloading
The cleanest method to limit the download scope to a single block is to right-click the changed block (e.g., FC100) in the project tree and select Download to device → Software (only changes).
- Open the Project tree and expand CPU_1 → Program blocks.
- Locate FC100. Confirm the icon shows a yellow/orange "modified" indicator (compile time > load time).
- Right-click FC100 → Download to device → Software (only changes).
- In the Load preview dialog, inspect the Actions column. TIA Portal will list every block in the dependency closure. If only FC100 is listed, accept. If OB1 or FC1 is also listed, see Method 2.
- Click Load. The dialog shows the final list of blocks actually transferred. Check Finish when done.
Method 2 — Isolate the Block to Avoid Cascading Reloads
When the load preview shows extra blocks (FC1, OB1, etc.), inspect why. The most common causes are:
| Extra Block Listed | Likely Cause | Remedy |
|---|---|---|
| OB1 | Interface change in FC100 affects the call in OB1 | Reopen FC100, check IN/OUT/STAT signatures match the call in OB1; do not change the interface |
| FC1 | FC1 calls FC100, or vice versa | Re-link the call from FC1 to FC100 only if interface is unchanged; otherwise both must reload |
| DB with changed structure | UDT/PLC data type change inside FC100 affects DB layout | Initialize the DB or use a separate instance DB (see Retain section below) |
| System blocks (SDB) | Hardware reconfiguration triggered | Do not select the CPU root node; select Program blocks only |
To perform a true single-block update without affecting any caller, the interface of FC100 must remain identical to the version on the CPU. If only the code body (the code section, not the interface section) was modified, the dependency closure is empty, and TIA Portal will transfer only FC100. To verify, open the block's properties → Interface tab and compare online vs. offline with Online → Compare offline/online.
Method 3 — Download Directly to the SIMATIC Memory Card
For S7-1200 (CPU firmware V2.0+ with the 24 MB card option 6ES7954-8LF02-0AA0) and S7-1500 (SIMATIC MC 6ES7954-8LP03-0AA0 or larger), you can use the Load to memory card function to push a single block without an active online connection. Per the Siemens Support entry 48711409 (Download project data into the S7-1200/S7-1500 CPU without TIA Portal), this approach is intended for service scenarios where the engineering station is offline:
- Insert the SIMATIC Memory Card into the card reader of the PG/PC.
- In TIA Portal: Project tree → CPU_1 → Program blocks → right-click FC100 → Card Reader/USB → Write to memory card.
- Select Transfer to plugged memory card and confirm the block list (only FC100 should appear).
- Insert the memory card into the CPU and power-cycle, or trigger a card evaluation. The CPU loads the block from the card at startup and writes it to internal load memory.
Method 4 — Use the Online Block Compare and Update
For a controlled service update when interface changes are minimal:
- Online → Go online with the CPU.
- In the Online view of Program blocks, TIA Portal shows a comparison column with status icons (green = identical, blue = different offline, orange = different online).
- Right-click FC100 → Download to device → Software (only changes).
- Set the option Consistent download to Off if the changed block has no interface impact. This is the closest equivalent to the S7-300/400 "Download block" function.
For an in-depth walkthrough of these flows, refer to the TIA Portal help portal entry Introduction to downloading blocks (S7-1200, S7-1500) in the TIA Portal V20 documentation set.
Retain Behavior of Data Blocks
When a DB is reloaded as part of the dependency closure, TIA Portal resets its initial values to whatever is defined in the offline project, then reinitializes the actual values in work memory. The behavior with respect to retain tags depends on the block's retain configuration:
- Non-retain DB: All values are reset to initial values on every DB download. The CPU stays in RUN only if the DB's structure (number of tags, names, types) is unchanged.
- Retain DB: Tags marked as RETAIN in the block interface (or in the Properties → Retain setting for the DB) keep their values across a download, provided the data structure (offsets, types, names) is unchanged.
- Instance DB: Behaves like a non-retain DB unless the FB explicitly declares RETAIN on STAT variables.
Comparison: S7-300/400 vs. S7-1200/1500 Download Model
| Feature | S7-300/400 in STEP 7 V5.x | S7-1200/1500 in TIA Portal |
|---|---|---|
| Select single block for download | Yes — right-click block → Download | Indirect — TIA Portal computes dependency closure |
| Interface change requires reload of caller | No (warning only) | Yes (mandatory for consistency) |
| Hardware config separate from program | Yes (HW Config → Station) | Yes (in project tree), but compile couples them |
| Block online without project match | Possible via "Accessible Nodes" | Limited — online block view only |
| Retain data preserved on block download | Yes, with manual precautions | Yes, if structure unchanged |
Step-by-Step Verification Procedure
After the download completes, perform these checks to confirm only FC100 was affected:
- Online → Go online. The Program blocks view should show FC100 with a blue "different" or green "identical" icon depending on whether the body changed.
- Open the Diagnostics → Diagnostics buffer and confirm no STOP events or download-restart events are present.
- Check the CPU's operating mode: RUN with green RUN LED, no red MF/MAINT LED. If MAINT is lit, a maintenance event is pending but the program is still running.
- Compare the online version of FC1 and OB1 with the offline project (Right-click → Compare offline/online). They should be marked identical.
- Verify retain values in the relevant DB: open the DB in Monitor/Modify view and confirm production values are intact.
Troubleshooting Matrix
| Symptom | Likely Cause | Action |
|---|---|---|
| Load preview shows OB1 and FC1 every time | Interface mismatch on FC100 | Compare interface, restore signatures, recompile |
| CPU goes to STOP after download | Hardware configuration was included | Select Program blocks node, not the CPU root, before downloading |
| DB values reset to initial values | Retain not enabled or structure changed | Enable RETAIN on tags; do not modify DB structure |
| Download fails with "firmware mismatch" | TIA Portal version < CPU firmware | Update TIA Portal or downgrade CPU firmware to a compatible version |
| Block marked "different online" after download | Online/offline timestamps not refreshed | Right-click CPU → Compile and download software |
| Memory card write fails | Card write-protected or wrong format | Check write-protect slider, format the card in the CPU first |
Best Practices for Service Updates
- Always perform a Project tree → CPU → Compare offline/online before downloading. This surfaces every block that has diverged and prevents surprise reloading.
- Maintain a separate Service project for hotfixes that contains only the affected blocks; the rest of the project is set to "do not load" via the Load preview checkboxes.
- Never change block interfaces on a running production line. Add new inputs as optional parameters, deploy the new interface, then iterate. This keeps the dependency closure empty.
- Document retain tag layouts in a separate functional specification. A retain DB that is structurally changed during a service update is the most common cause of lost production data.
- For S7-1500 CPUs with security functions enabled (CPU firmware V2.0+ with PLC → Properties → Security), the access level must be configured to allow "Write" for the program blocks folder; otherwise, the download dialog will reject single-block updates even if the full project is writable.
Can I download just FC100 without FC1 to an S7-1200 or S7-1500?
Yes, if and only if the offline interface of FC100 is identical to the version already loaded in the CPU. TIA Portal computes a dependency closure and will refuse to load only FC100 if FC1 calls it (or is called by it) and the interface has changed. Select Program blocks → FC100 → Download to device → Software (only changes) to scope the download to a single block.
Why does OB1 appear in the download list when I only changed FC100?
OB1 is the main cyclic organization block and contains the call to FC100. When you modify the interface (IN, OUT, STAT, TEMP) of FC100, the compiler must regenerate the call in OB1 to match the new signature, so OB1 is included in the dependency closure. Body-only changes inside FC100 do not require OB1 to be reloaded.
Will the CPU go to STOP if I download a single block?
No, provided you select the Program blocks folder or a single block before clicking Download to device, and you do not include the hardware configuration. S7-1200 and S7-1500 CPUs support online block updates in RUN mode when the block interface and the call sites are unchanged. The CPU only goes to STOP if hardware reconfiguration is part of the download.
Are retain values preserved when a DB is reloaded?
Retain values are preserved only if the DB's data structure (number of tags, names, types, and offsets) is unchanged. Adding a new tag to a retain DB preserves existing values and initializes the new tag to its initial value. Renaming, reordering, or changing the data type of an existing tag clears all retain values for that DB and resets to initial values.
How do I download a single block to a SIMATIC Memory Card without an online connection?
Use the Card Reader/USB → Write to memory card function on the specific block (e.g., FC100) in the project tree. After the write completes, insert the card into the CPU and trigger a card evaluation. The CPU loads the new block at startup. This procedure is documented in Siemens Support entry 48711409.