版本

S7-200 SMART PLUS

西门子 S7-200 SMART 技术参考

Version 2.2

技术资料，仅供参考；由此引起的一切后果，概不负责
保留所有权利


使用说明

说明

S7-200 SMART PLUS 是由西门子技术支持工程师利用业余时间制作的，关于西门子小型自动化（S7-200 SMART）产品的技术参考文档。

读者必须在阅读《S7-200 SMART系统手册》的基础上参考本文档。

S7-200 SMART PLUS 不能代替或部分代替西门子的任何正式出版物，如产品宣传样本，产品目录，产品手册，随同产品、软件发布的说明性文档和在线帮助文件等等。S7-200 SMART PLUS 也无意更改上述正式技术资料的任何内容，或提供勘误。在所有正式场合，一切应以西门子的正式出版物为准。

S7-200 SMART PLUS 的内容来自西门子的技术资料，西门子的产品开发、维修、技术支持工程师的知识、经验，用户的知识和经验，以及其他技术资料。

S7-200 SMART PLUS 包括对用户经常，甚至是必然遇到的问题、疑问的解答，以及隐含着其他许多问题答案的叙述性文字，还有一些作者认为有助于读者理解、解决问题的背景知识。S7-200 SMART PLUS 力争做到精简实用，几乎其中的每个段落、每句话都有一定的针对性。

虽然作者已经尽力保证其正确性，但疏漏难免。读者如欲采纳，风险自担。

使用

S7-200 SMART PLUS 是HTML Help格式的文档。

S7-200 SMART PLUS 以便于查阅为目的设计，没有一定的阅读顺序。各篇技术资料在S7-200 SMART PLUS 窗口左侧的目录中归类。读者可以直接进入树型目录，寻找感兴趣的标题。文章中可能有超级链接，指向其他文章、其他文章的某部分，或者互联网网址。

  • 代表这是一个分类目录，同时其中有文字说明
  • 代表这仅是一个分类目录
  • 鼠标单击目录树的 [image] 可打开下一级目录
  • 文章中没有回退链接，可以用窗口工具栏上的“后退”、“前进”按钮
  • 按住Shift键再用鼠标点击文档中的链接，可在新的浏览器窗口中打开链接
  • 用工具栏“打印”按钮可以打印文章
  • 在窗口左侧的“搜索”标签中，可以进行全文范围内的文本检索

下载

S7-200 SMART PLUS 将会根据情况更新。读者可以从西门子（中国）自动化与驱动集团技术支持与服务首页，进入“下载中心”下载。

http://www.ad.siemens.com.cn/download 文档编号 A0666

意见与建议

欢迎读者就 S7-200 SMART PLUS 的内容、形式提出意见与建议。本文档当然不能涵盖全部的相关技术问题，如果读者认为有缺失的，或者难以理解的地方，尽请指出。


What's New

V2.2 ... ...5.13.2019

增加：

  • PROFINET通信
  • Modbus TCP通信
  • 通过PROFINET连接V90 PN实现基本定位控制
  • V2.4版本技术参数
  • V2.4版新功能
  • STEP 7-Micro/WIN SMART与操作系统兼容性
  • 间接寻址
  • 字符串相关指令介绍及例程
  • 电池卡
  • 扩展电缆
  • 表格指令介绍及例程
  • 用高速输入脉冲测定瞬时流量
  • 增加常问功能的例程（PWM、运动控制、数据日志、中断指令、获取和设置IP地址）

    • 更新：

  • 存储卡功能
  • CPU密码
  • 资料手册在线下载
  • 更新原有例程体现方式（PLS、S7-200 SMART CPU之间S7\TCP\UDP\ISO-ON-TCP通信、自由口通信、USS通信、Modbus RTU通信等）

V2.1 ... ...5.15.2018

增加：

  • 通过MD720收发短消息
  • symbol_table

    • 更新：

  • 清除CPU密码

V2.0 ... ...8.15.2017

增加：

  • 优化定时器
  • PTO如何保持断电前的位置
  • 通过485接口如何上传下载程序
  • 通过软件更新CPU固件
  • 经济型CPU自由口/PPI模式切换
  • V2.3版本新功能
  • V2.3版本技术参数
  • CAD图下载
  • 运动控制常见问题
  • 从RAM建立数据块

    更新：

  • 清除CPU密码
  • 实时时钟
  • 搜索不到CPU
  • 编程软件的安装与卸载
  • 高速计数器

V1.9 ... ...1.6.2017

增加：

  • S7-200 SMART CPU与TCP Debug之间的开放式以太网通讯
  • TCP通讯常见问题

    更新：

  • S7-200 SMART CPU之间的S7通讯
  • S7-200 SMART CPU与S7-200 SMART进行TCP通信
  • S7-200 SMART CPU与S7-200 SMART进行ISO on TCP通信
  • S7-200 SMART CPU与S7-200 SMART进行UDP通信
  • 如何将 Micro/WIN 的库文件导入到 Micro/WIN SMART 中
  • 将S7-200的项目移植到S7-200 SMART
  • 编程软件的安装与卸载
  • 数据格式
  • 如何下载程序
  • MODBUS TCP通信

V1.8 ... ...30.12.2016

增加：

  • S7-200 SMART CPU与S7-200 SMART进行TCP通信
  • S7-200 SMART CPU与S7-200 SMART进行ISO on TCP通信
  • S7-200 SMART CPU与S7-200 SMART进行UDP通信
  • S7-200 SMART CPU与S7-1200 进行TCP通信
  • S7-200 SMART CPU与S7-1200 进行ISO on TCP通信
  • S7-200 SMART CPU与S7-1200 进行UDP通信
  • S7-200 SMART CPU与S7-300 PN口进行TCP通信
  • S7-200 SMART CPU与S7-300 PN口进行ISO on TCP通信
  • S7-200 SMART CPU与S7-300PN口 进行UDP通信
  • S7-200 SMART CPU与S7-300 CP卡进行TCP通信
  • S7-200 SMART CPU与S7-300 CP卡进行ISO on TCP通信
  • S7-200 SMART CPU与S7-300 CP卡 进行UDP通信
  • EM DP01与SIMATIC NET进行S7通信
  • SIMATIC NET与S7-200 SMART 集成以太网口OPC 通信（TIA平台）
  • S7-200 SMART V90 Modbus Library
  • 通过指令获取和设置S7-200 SMART IP地址
  • 通过触摸屏实现PID参数设置和自整定功能
  • V2.2版本新功能
  • V2.2 版本技术参数

    更新：

  • 用户自定义指令库
  • DP01模块简介
  • 运动控制向导
  • S7-200 SMART PTO立即停止后如何快速再次启动
  • MODBUS通信常见问题
  • S7-200 SMART产品订货号

V1.7 ... ...25.05.2016

增加：

  • STEP 7-Micro/WIN SMART软件在打开时报错“软件停止
  • STEP 7-Micro/WIN SMART软件在打开时显示“????”
  • 自然指数和对数
  • FOR-NEXT指令
  • 取整指令
  • V2.1 版本技术参数
  • CE证书下载

    更新：

  • 高速计数器

V1.6 ... ...29.01.2015

增加：

  • S7-200 SMART V2.1 版本新增加功能
  • 常见问题：下载时搜索不到CPU
  • 高速计数器当前值断电保持
  • S7-200 SMART CPU与S7-300/400以太网接口进行S7通信
  • S7-200 SMART CPU与S7-1200以太网接口进行S7通信
  • S7-200项目移植到S7-200 SMART
  • EM DP01模块介绍
  • EM DP01 DP通讯
  • EM DP01 MPI通讯
  • 数字量输出抑制回路
  • S7-200 SMART PLC读取V90绝对值编码器数值
  • PLS指令介绍
  • PLS指令编程
  • 与S7-200 PLS指令比较
  • PTO如何立即停止输出
  • PTO立即停止后如何快速再次启动

更新：

  • S7-200SMART CPU 订货号
  • PC ACCESS SMART常见问题

V1.5 ... ...07.07.2015

增加：

  • 符号表
  • Scaling 量程转化指令库
  • Clock Integer指令库
  • 常用指令库
  • 硬件诊断
  • 硬件诊断举例
  • 子程序调用常问问题
  • 顺序控制
  • 通信端口
  • CPU之间以太网通信常见问题
  • Modbus RTU通信常见问题
  • USS通信常见问题
  • 通过RS485连接SMART LINE
  • 通过以太网连接SMART LINE

更新：

  • 模拟量扩展模块接线
  • 用户自定义指令库
  • PC ACCESS SMART(OPC通信)

V1.4 ... ... 16.01.2015

增加：

  • S7-200 SMART 与 WINCC OPC通信
  • 自由口通信

    更新：

  • 清除CPU密码
  • 存储卡

V1.3 ... ... 25.07.2014

增加：

  • PC Access SMART(OPC 通信)

V1.2 ... ... 22.04.2014

增加：

  • 技术参数 V2.0
  • S7-200 SMART V2.0 版本新增加功能
  • 数据记录
  • 以太网通信

更新：

  • 视频教程
  • S7-200 SMART 订货号
  • CPU 模块连接的模块个数

V1.1 ... ... 17.05.2013

增加：

  • S7-200 SMART 跟我学/跟我做 视频教程
  • USS 通信

更新：

  • S7-200 SMART 产品图片
  • Modbus 通信


S7-200 SMART 产品新特性

概述

Simatic S7-200 SMART PLC是全新的针对经济型自动化市场的自动化控制产品。该产品在中国进行研发和生产、凝聚了西门子中德工程师的丰富经验，以期满足不断增长的中国OEM市场，并为客户提供经济、便捷以及可靠的自动化控制产品。该产品具备机型丰富、选件多样、软件友好多种特点，并可无缝集成SMART LINE触摸屏及V20变频器。

凭借西门子在华140年的电气工程领域的经验，S7-200 SMART PLC设计精良且性能可靠。CPU模块配备了标准型和经济型供用户选择，分别用于复杂和简单的工业领域。可扩展的标准型模块可处理更多I/O需求的复杂任务，最大可扩展到188点，可满足大部分小型自动化设备的控制需求。经济型CPU模块则直接通过单机本体满足控制需求。S7-200 SMART CPU模块本体最多可集成3路高速脉冲输出，频率高达100KHz，支持PWM/PTO输出方式以及多种运动模式，可自由设置运动包络。

新颖的信号板设计可扩展通信端口、数字量通道以及模拟量通道。在不额外占用电控柜空间的前提下，信号板扩展能更加贴合用户的实际配置。高速处理芯片，基本指令执行时间可达0.15μs。该产品还集成了Micro SD卡插槽，使用市面上通用的Micro SD卡即可实现程序的更新和PLC固件升级，极大地方便了客户工程师对最终用户的远程服务支持，也省去了因PLC固件升级返场服务所带来的不便。

作为SMART解决方案的核心，Simatic S7-200 SMART PLC可无缝集成西门子SMART LINE操作屏和Sinamics V20变频器，为OEM客户提供高性价比的小型自动化解决方案，同时满足客户对人机界面、控制和传动的一站式需求。

创新一直是西门子不断进步的源动力之一，加之西门子坚持扩大本地化的投入，为其新产品在这个快速变化的市场带来了更多的竞争优势。同时，适应本地需求的SMART产品和解决方案不仅将提升中国OEM市场的自动化水平，也将助力加快中国工业化的发展进程。

Simatic S7-200 SMART PLC产品亮点

机型丰富，更多选择

S7-200 SMART PLC提供不同类型、I/O点数丰富的CPU模块，单体I/O点数最高可达60点，可满足大部分小型自动化设备的控制需求。另外，CPU模块配备标准型和经济性供用户选择，对于不同的应用需求，产品配置更加灵活，最大限度的控制成本。

选件扩展，精确定制

S7-200 SMART PLC新颖的信号板设计可扩展通讯端口、数字量通道、模拟量通道、在不额外占用电控柜空间的前提下，信号板扩展能更加贴合用户的实际配置，提升产品的利用率，同时降低用户的扩展成本。

高速芯片，性能卓越

S7-200 SMART PLC配备西门子专用高速处理器芯片，基本指令执行时间可达0.15us，在同级别小型PLC中遥遥领先。一颗强有力的“芯”，能让您在应对繁琐的程序逻辑，复杂的工艺要求时表现的从容不迫。

以太互动，经济便捷

S7-200 SMART PLC的CPU模块本体标配以太网接口，继承了强大的以太网通信功能。一根普通的网线即可将程序下载到PLC中，方便快捷，省去了专用编程电缆。通过以太网接口还可与其他CPU模块、触摸屏、计算机进行通讯，轻松组网。

三轴脉冲，运动自如

S7-200 SMART PLC的CPU模块本体最多集成3路高速脉冲输出，频率高达100KHz，支持PWM/PO输出方式以及多种运动模式，可自由设置运动包络。配以方便易用的向导设置功能，快速实现设备调速，定位等功能。

通用SD卡，方便下载

S7-200 SMART PLC本机继承Micro SD卡插槽，使用市面上通用的Micro SD卡即可实现程序的更新和PLC固件升级，极大地方便了客户工程师对最终用户的远程服务支持，也省去了因PLC固件升级返场服务的不便。

软件友好，编程高效

S7-200 SMART PLC在继承西门子变成软件强大功能的基础上，融入了更多的人性化设计，如新颖的带状式菜单，全移动式界面窗口，方便的程序注释功能，强大的密码保护等。在体验强大功能的同时，大幅提高开发效率，缩短产品上市时间。

完美整合，无缝集成

SIMATIC S7-200 SMART可编程控制器，Smart Line IE触摸屏和SINAMICS V20变频器完美整合，为OEM客户带来高性价比的小型自动化解决方案，满足客户对于人机交互、控制、驱动等功能的全方位需求。


简单移植

硬件对比

首先，对比S7-200 与 S7-200 SMART的硬件配置。如下表所示：

表1. S7-200 CPU参数

CPU类型 | CPU 221 | CPU 222 | CPU 224 | CPU 224 XP | CPU 226
集成 DI/DO | 6/4 | 8/6 | 14/10 |  | 24/16
集成 AI/AO | - | - | - | 2/1 | -
最大 DI/DO/使用扩展模块的最大通道数 | - | 48/46/94 | 114/110/224 |  | 128/128/256
最大 AI/AO//使用扩展模块的最大通道数 | - | 16/8/16 | 32/28/44
扩展模块数量 | - | 2 | 7
程序存储器 | 4 KB |  | 12 KB | 16 KB | 24 KB
用户存储器（V区） | 2 KB |  | 8 KB | 10 KB
保持性 | 内部电容+电池
高速计数器 | 4*30 KHz，其中2*20 KHz A/B计数器可用 |  | 6*30 KHz，其中4*20 KHz A/B计数器可用 | 4*30 KHz，2*20 KHz ，其中3*20 KHz+1*100 KHz A/B计数器可用 | 6*30 KHz，其中4*20 KHz A/B计数器可用
通讯接口 RS485 | 1 |  |  | 2
- PPI | 支持
- MPI | 支持
- 自由口（ASCII协议） | 支持
以太网 S7 通讯 | - | 扩展CP 243-1实现
DC 5V 总线电流 | - | 340 mA | 660 mA |  | 1000 mA
DC 24V 传感器电源 | 180 mA |  | 280 mA |  | 400 mA
尺寸 W * H * D (mm) | 90*80*62 |  | 120.5*80*62 | 140*80*62 | 196*80*62

表2. S7-200 SMART CPU参数

CPU类型 | SR20 ST20 | SR30 ST30 | SR40 ST40 | SR60 ST60 | CR40 | CR60
集成 DI/DO | 12/8 | 18/12 | 24/16 | 36/24 | 24/16 | 36/24
集成 AI/AO | - | - | - | - | - | -
I/O过程映像区 | DI：256 / DO：256
模拟映像 | AI：56 / AO：56 |  |  |  | - | -
扩展模块数量 | 6+1 （信号板） |  |  |  | - | -
程序存储器 | 12 KB | 18 KB | 24 KB | 30 KB | 12 KB
用户存储器（V区） | 8 KB | 12 KB | 16 KB | 20 KB | 8 KB
保持性 | 永久保存
高速计数器 | 4*200 KHz，其中2*100 KHz A/B计数器可用
通讯接口 RS485 | 1+1 （信号板） |  |  |  | 1
- PPI | 支持
- MPI | 支持
- 自由口 （ASCII协议） | 支持
以太网 S7 通讯 | 1
DC 5V 总线电流 | 1400 mA |  |  |  | -
DC 24V 总线电流 | 300 mA
尺寸 W * H * D (mm) | 90*100*81 | 110*100*81 | 125*100*81 | 175*100*81 | 125*100*81 | 175*100*81

表3. S7-200 信号模块

模块类型 | 订货号 | 模块描述
DI | 6ES7 221-1BF22-0XA8 | EM221：DI 8* 24V DC
 | 6ES7 221-1BH22-0XA8 | EM221：DI 8* 24V DC
DO | 6ES7 222-1BF22-0XA8 | EM222：DO 8*24V DC
 | 6ES7 222-1HF22-0XA8 | EM222：DO 8*继电器
DI/DO | 6ES7 223-1BF22-0XA8 | EM223 ：DI 4* DC 24V / DO 4* DC 24V
 | 6ES7 223-1HF22-0XA8 | EM223 ：DI 4* DC 24V / DO 4* 继电器
 | 6ES7 223-1BH22-0XA8 | EM223 ：DI 8* DC 24V / DO 8* DC 24V
 | 6ES7 223-1PH22-0XA8 | EM223 ：DI 8* DC 24V / DO 8* 继电器
 | 6ES7 223-1BL22-0XA8 | EM223 ：DI 16* DC 24V / DO 16* DC 24V
 | 6ES7 223-1PL22-0XA8 | EM223 ：DI 16* DC 24V / DO 16* 继电器
 | 6ES7223-1BM22-0XA8 | EM223 ：DI 32* DC 24V / DO 32* DC 24V
 | 6ES7223-1PM22-0XA8 | EM223 ：DI 32* DC 24V / DO 32* 继电器
AI | 6ES7 231-0HC22-0XA8 | EM231：4* AI
 | 6ES7 231-0HC22-0XA8 | EM231：8* AI
 | 6ES7 231-7PB22-0XA8 | EM231：2* RTD
 | 6ES7 231-7PD22-0XA8 | EM231：4* TC
AO | 6ES7 232-0HB22-0XA8 | EM232：2* AO
AI/AQ | 6ES7 235-0KD22-0XA8 | EM235：4* AI/1* AO

表4. S7-200 SMART 信号模块

模块类型 | 订货号 | 模块描述
DI | 6ES7 288-2DE08-0AA0 | EM DE08：DI 8* 24V DC
DO | 6ES7 288-2DT08-0AA0 | EM DT08：DO 8*24V DC
 | 6ES7 288-2DR08-0AA0 | EM DR08：DO 8*继电器
DI/DO | 6ES7 288-2DT16-0AA0 | EM DT16：DI 8* 24V DC/DO 8*24V DC
 | 6ES7 288-2DR16-0AA0 | EM DR16：DI 8* 24V DC/DO 8*继电器
 | 6ES7 288-2DT32-0AA0 | EM DT32：DI 16* 24V DC/DO 16*24V DC
 | 6ES7 288-2DR32-0AA0 | EM DT32：DI 16* 24V DC/DO 16*继电器
AI | 6ES7 288-3AE04-0AA0 | EM AE04：4* AI
 | 6ES7 288-3AE08-0AA0 | EM AE08：8* AI
 | 6ES7 288-3AR02-0AA0 | EM AR02：2* RTD
 | 6ES7 288-3AR04-0AA0 | EM AR04：2* RTD
 | 6ES7 288-3AT04-0AA0 | EM AT04：4* TC
AQ | 6ES7 288-3AQ02-0AA0 | 2* AO
 | 6ES7 288-3AQ04-0AA0 | 4* AO
AI/AO | 6ES7 288-3AM03-0AA0 | 2* AI/1* AO
EM232 | 6ES7 288-3AM06-0AA0 | 4* AI/2* AO
EM235 | 6ES7 235-0KD22-0XA8 | 4* AI/1* AO

表5. 其他卡件

 | S7-200 | S7-200 SMART
DP | EM277 | DP01
CP | CP243-1 | - 已集成
电池卡 | BC293 | SB BA01（仅保持时钟）
运动控制模块 | EM253 | - 已集成

从以上表格可以看出，S7-200 SMART 增加了本体集成 I/O，功能更灵活，性能更好，而且，S7-200 SMART模块接线方式与 S7-200一致，如下图所示：

图1. S7-200 与 S7-200 SMART 数字量输入/输出接线图

图2，S7-200 与 S7-200 SMART 模拟量输入/输出接线图

由上图可见，S7-200 与S7-200 SMART 接线方式基本一致。

移植案例

以下S7-200 224XP CPU移植举例来看，如何从硬件配置到软件编程的移植

确定S7-200 与 S7-200 SMART硬件对比

移植举例，如下表所示：

表6. S7-200 移植到 S7-200 SMART 对照表

类型 | S7-200 | S7-200 SMART
CPU | 224XP：6ES7 214-2AD23-0XB8 | ST30：6ES7 288-1ST30-0AA0
供电电源 | DC 24V | DC 24V
程序存储器 | 16 KB | 18 KB
用户存储器（V区） | 10 KB | 12 KB
集成DI/DO | DI：14/DO：10 | DI：18/DO12
扩展DI/DO | EM223：6ES7 223-1BH22-0XA0 DI：8/DO：8 | EM DT16：6ES7 288-2DT16-0AA0 DI：8/DO：8
DI/DO通道总数 | DI：24/DO：18 | DI：26/DO：20
集成AI/AO | AI：2（±10 V）/AO：1 | EM AE04：6ES7 288-3AE04-0AA0 AI：4
扩展AI/AO | EM235：6ES7 235-0KD22-0XA8 AI：4/AO：1 | EM AM06：6ES7 288-3AM06-0AA0 AI：4/AO：2
AI/AO通道总数 | AI：6/AO：2 | AI：8/AO：2
热电偶 （TC） | EM231：6ES7 231-7PD22-0XA8 4*TC | EM AT04：6ES7 288-3AT04-0AA0 4*TC
热电阻 （RTD） | EM231：6ES7 231-7PB22-0XA8 2*RTD | EM AR02：6ES7 288-3AR02-0AA0 2*RTD
以太网口 | CP243-1：6GK7 243-1EX01-0XE0 | 集成
RS485通讯口 | 集成：2个 | 集成：1个+CB CM01：6ES7 288-5CM01-0AA0
DP 从站通讯 | EM277：6ES7 277-0AA22-0XA0 | DP01：6ES7 288-7PD01-0AA0
模块总数 | 6 | 6+1

注意：以上表格仅用于举例说明 S7-200 移植到S7-200 SMART着重点，非工程实际应用

确定S7-200 与 S7-200 SMART 安装与组态

以下为S7-200 安装组态步骤：

步骤1：安装

图3. S7-200安装方式

步骤2：AI 模块拨码设置

表7. EM235 拨码设置

单极性 |  |  |  |  |  | 满量程输入 | 分辨率
SW1 | SW2 | SW3 | SW4 | SW5 | SW6
ON | OFF | OFF | ON | OFF | ON | 0 - 50 mV | 12.5μV
OFF | ON | OFF | ON | OFF | ON | 0 - 100 mV | 25μV
ON | OFF | OFF | OFF | ON | ON | 0 - 500 mV | 125μV
OFF | ON | OFF | OFF | ON | ON | 0 - 1 V | 250μV
ON | OFF | OFF | OFF | OFF | ON | 0 - 5 V | 1.25mV
 |  |  |  |  |  | 0 - 20 mA | 5μA
OFF | ON | OFF | OFF | OFF | ON | 0 - 10 V | 2.5mV
双极性 |  |  |  |  |  | 满量程输入 | 分辨率
SW1 | SW2 | SW3 | SW4 | SW5 | SW6
ON | OFF | OFF | ON | OFF | OFF | ±25 mV | 12.5μV
OFF | ON | OFF | ON | OFF | OFF | ±50 mV | 25μV
OFF | OFF | ON | ON | OFF | OFF | ±100 mV | 50μV
ON | OFF | OFF | OFF | ON | OFF | ±250 mV | 125μV
OFF | ON | OFF | OFF | ON | OFF | ±500 mV | 250μV
OFF | OFF | ON | OFF | ON | OFF | ±1 V | 500μV
ON | OFF | OFF | OFF | OFF | OFF | ±2.5 V | 1.25mV
OFF | ON | OFF | OFF | OFF | OFF | ±5 V | 2.5 mV
OFF | OFF | ON | OFF | OFF | OFF | ±10 V | 5 mV

表8. EM231 2*RTD模块拨码

RTD Type and Alpha¹ | SW1 | SW2 | SW3 | SW4 | SW5 | RTD Type and Alpha¹ | SW1 | SW2 | SW3 | SW4 | SW5
100Ω Pt 0.003850 (Default) | 0 | 0 | 0 | 0 | 0 | 100Ω Pt 0.003902 | 1 | 0 | 0 | 0 | 0
200Ω Pt 0.003850 | 0 | 0 | 0 | 0 | 1 | 200Ω Pt 0.003902 | 1 | 0 | 0 | 0 | 1
500Ω Pt 0.003850 | 0 | 0 | 0 | 1 | 0 | 500Ω Pt 0.003902 | 1 | 0 | 0 | 1 | 0
1000Ω Pt 0.003850 | 0 | 0 | 0 | 1 | 1 | 1000Ω Pt 0.003902 | 1 | 0 | 0 | 1 | 1
100Ω Pt 0.003920 | 0 | 0 | 1 | 0 | 0 | SPARE | 1 | 0 | 1 | 0 | 0
200Ω Pt 0.003920 | 0 | 0 | 1 | 0 | 1 | 100Ω Ni 0.00672 | 1 | 0 | 1 | 0 | 1
500Ω Pt 0.003920 | 0 | 0 | 1 | 1 | 0 | 120Ω Ni 0.00672 | 1 | 0 | 1 | 1 | 0
1000Ω Pt 0.003920 | 0 | 0 | 1 | 1 | 1 | 1000Ω Ni 0.00672 | 1 | 0 | 1 | 1 | 1
100Ω Pt 0.00385055 | 0 | 1 | 0 | 0 | 0 | 100Ω Ni 0.006178 | 1 | 1 | 0 | 0 | 0
200Ω Pt 0.00385055 | 0 | 1 | 0 | 0 | 1 | 120Ω Ni 0.006178 | 1 | 1 | 0 | 0 | 1
500Ω Pt 0.00385055 | 0 | 1 | 0 | 1 | 0 | 1000Ω Ni 0.006178 | 1 | 1 | 0 | 1 | 0
1000Ω Pt 0.00385055 | 0 | 1 | 0 | 1 | 1 | 10000Ω Pt 0.003850 | 1 | 1 | 0 | 1 | 1
100Ω Pt 0.003916 | 0 | 1 | 1 | 0 | 0 | 10Ω Cu 0.004270 | 1 | 1 | 1 | 0 | 0
200Ω Pt 0.003916 | 0 | 1 | 1 | 0 | 1 | 150Ω FS Resistance | 1 | 1 | 1 | 0 | 1
500Ω Pt 0.003916 | 0 | 1 | 1 | 1 | 0 | 300Ω FS Resistance | 1 | 1 | 1 | 1 | 0
1000Ω Pt 0.003916 | 0 | 1 | 1 | 1 | 1 | 600Ω FS Resistance | 1 | 1 | 1 | 1 | 1

图4. EM231 RTD 模块拨码设置

图5. EM231 TC 模块拨码设置

步骤3：寻址

方式1：S7-200 的地址连续，可按照模块的安装次序分配地址

方式2：可通过查看菜单“PLC”>“信息” 查看模块起始地址，如下图所示：

图6. S7-200 PLC 信息

以下为S7-200 SMART 安装组态步骤：

步骤1：安装

图7. S7-200 SMART 安装步骤

步骤2：硬件组态及寻址

图8. S7-200 SMART 模块组态

步骤3：模块设置

图9. SB CM01 组态

图10. EM AE04 组态

注：EM AE04 的设置以2个通道为一组设置

图11. EM AM06 组态

注：

  1. 输入通道设置与EM AE04 相同；
  2. 输出通道0 与通道1 替代值设置为一组
  3. 选择不同的输出类型，通道诊断的报警设置不同，如下表

表9. EM AM06 输出通道报警

 | 电压 | 电流
超出上限 | √ | √
超出下限 | √ | √
断线 | x | √
短路 | √ | x

图12. EM AR02 模块组态

图13. EM AT04 模块组态

注：参考点设置仅在检测热电偶时有效

S7-200 到S7-200 SMART 基本程序移植

以模拟量转换加上下限报警的程序为例：输入信号4~20mA；输出信号4~20mA

步骤1：STEP 7-MicroWIN SMART 打开S7-200 程序，如下图所示：

图14. S7-200 SMART 编程界面

步骤2：添加硬件及组态，如下图所示：

图15. S7-200 SMART 组态界面

1,添加当前组态

2,修改通道属性

步骤3：修改程序

1，修改程序的硬件输入/输出地址；

2，模拟量量程替换：

S7-200 ：0~20mA：0~32000；4~20mA：6400~32000

S7-200 SMART：0~20mA：0~27648；4~20mA：5530~27648

图16. 修改硬件地址

图17. 修改程序段

步骤4：修改断电保持区域、修改安全等级及CPU上电运行模式

图18. 修改断电保持、密码、CPU上电模式

步骤5：编译下载


PID 移植

S7-200 SMART 与 S7-200一样，支持8路PID控制，支持模拟量输出及PWM输出

PID 向导移植

将 S7-200 带有PID向导生成的程序用 S7-200 SMART打开，提示错误，如下图所示：

图1. S7-200 PID程序在S7-200 SMART 打开报错

解决方法：

1，新建 S7-200 SMART项目，并进行正确的设备组态

2，将 S7-200程序用STEP 7-Micro/win SMART 软件打开，将除PID子程序之外的程序段复制到新项目

3，修改新项目的 I/O 地址及模拟量转换量程与S7-200 SMART 匹配

PID 指令移植

比较 S7-200 与 S7-200 SMART PID回路表，两者完全相同，如下表所示：

表1. S7-200 与 S7-200 SMART PID 回路对比表

偏移 | 类型 | S7-200 | S7-200 SMART
0 | 过程变量(PVn) | 包含过程变量，其值必须标定在 0.0 到 1.0 之间
4 | 设定值(SPn) | 包含设定值，其值必须标定在 0.0 到 1.0 之间
8 | 输出(Mn) | 包含计算出的输出，其值必须标定在 0.0 到 1.0 之间
12 | 增益(Kc) | 包含增益，为比例常数。 可以是正数或负数
16 | 采样时间 | 包含采样时间，单位为秒。 必须是正数
20 | 积分时间 | 包含积分时间或复位，单位为分
24 | 微分时间 | 包含微分时间或速率，单位为分
28 | 偏置 | 包含偏置或积分和值，介于 0.0 到 1.0 之间
32 | 前一过程变量 | 包含上次执行 PID 指令时存储的过程变量值
36 | PID扩展表 | ‘PIDA’（PID 扩展表，版本 A）： ASCII 常数
40 | AT 控制 |
41 | AT 状态 |
42 | AT 结果 |
43 | AT 配置 |
44 | 偏差 | 最大 PV 振荡幅度的标准化值（范围： 0.025 到 0.25）
48 | 滞后 | 用于确定过零的 PV 滞后标准化值（范围： 0.005 到 0.1）
52 | 初始输出阶跃 | 输出值中阶跃变化的标准化大小，用于使 PV 产生振荡（范围：0.05 到 0.4）
56 | 看门狗时间 | 两次过零之间允许的最大秒数值（范围：60 到 7200）
60 | 建议增益 | 自整定过程确定的建议回路增益
64 | 建议积分时间 | 自整定过程确定的建议积分时间
68 | 建议微分时间 | 自整定过程确定的建议微分时间
72 | 实际阶跃大小 | 自整定过程确定的标准化输出阶跃大小值
76 | 实际滞后 | 自整定过程确定的标准化 PV 滞后值

如上表所示，两者PID回路表完全一致，所以，当将S7-200 PID 指令编程进行移植时，需将反馈与输出的模拟量地址按照 S7-200 SMART 的地址分配进行修改，同时修改模数转换数值即可。如下图所示：

图2. 程序移植


高速计数功能移植

S7-200 支持6路30KHz的高速计数器（224XP支持200KHz），支持13种模式；S7-200 SMART支持4路200KHz（CR40/60仅支持100KHz）高速计数器，支持8种模式，详细对比参看下表：

表1. S7-200 高速计数功能

模式 | 描述 | 输入点
 | HSC0 | I0.0 | I0.1 | I0.2 |
 | HSC1 | I0.6 | I0.7 | I1.0 | I1.1
 | HSC2 | I1.2 | I1.3 | I1.4 | I1.5
 | HSC3 | I0.1 |  |  |
 | HSC4 | I0.3 | I0.4 | I0.5 |
 | HSC5 | I0.4 |  |  |
0 | 带有内部方向控制的单相计数器 | 时钟 |  |  |
1 |  | 时钟 |  | 复位 |
2 |  | 时钟 |  | 复位 | 启动
3 | 带有外部方向控制的单相计数器 | 时钟 | 方向 |  |
4 |  | 时钟 | 方向 | 复位 |
5 |  | 时钟 | 方向 | 复位 | 启动
6 | 带有增减计数时钟的双相计数器 | 增时钟 | 减时钟 |  |
7 |  | 增时钟 | 减时钟 | 复位 |
8 |  | 增时钟 | 减时钟 | 复位 | 启动
9 | A/B相正交计数器 | 时钟A | 时钟B |  |
10 |  | 时钟A | 时钟B | 复位 |
11 |  | 时钟A | 时钟B | 复位 | 启动

红色：S7-200 SMART 不支持的功能。

表2. S7-200高速计数器寻址

高速计数器号 | HSC0 | HSC1 | HSC2 | HSC3 | HSC4 | HSC5
新当前值(仅装入) | SMD38 | SMD48 | SMD58 | SMD138 | SMD148 | SMD158
新预置值(仅装入) | SMD42 | SMD52 | SMD62 | SMD142 | SMD152 | SMD162
当前计数值(仅读取) | HC0 | HC1 | HC2 | HSC3 | HSC4 | HSC5

表3. S7-200 SMART 高速计数功能

模式 | 描述 | 输入点
 | HSC0 | I0.0 | I0.1 | I0.4
 | HSC1 | I0.1 |  |
 | HSC2 | I0.2 | I0.3 | I0.5
 | HSC3 | I0.3 |  |
0 | 带有内部方向控制的单相计数器 | 时钟 |  |
1 |  | 时钟 |  | 复位
3 | 带有外部方向控制的单相计数器 | 时钟 | 方向 |
4 |  | 时钟 | 方向 | 复位
6 | 带有增减计数时钟的双相计数器 | 增时钟 | 减时钟 |
7 |  | 增时钟 | 减时钟 | 复位
9 | A/B相正交计数器 | 时钟A | 时钟B |
10 |  | 时钟A | 时钟B | 复位

表4. S7-200 SMART 高速计数器寻址

高速计数器号 | HSC0 | HSC1 | HSC2 | HSC3
新当前值(仅装入) | SMD38 | SMD48 | SMD58 | SMD138
新预置值(仅装入) | SMD42 | SMD52 | SMD62 | SMD142
当前计数值(仅读取) | HC0 | HC1 | HC2 | HSC3

注意：

1，S7-200 SMART 不支持模式2、模式5、模式8、模式11、模式12（在运动控制向导时勾选）；

2，S7-200 SMART 做高速计数需要硬件滤波，如下图所示：

图1. S7-200 SMART 滤波时间与频率关系

注：CR40/60 两款CPU最高支持 100kHz 频率

高速计数功能移植案例

以S7-200 224XP举例，使用高速计数HSC0，模式9，分别利用指令与向导分别编程，然后移植到S7-200 SMART

向导移植

首先，将S7-200 高速计数向导与S7-200 SMART高速计数向导横向对比，如下图所示：

图2. 高速计数器及模式选择

图3. HSC 初始化选项

图4.配置中断及步骤

图5. HSC 第 1 步

图6. 完成向导

如上图所示：S7-200 高速计数向导组态与S7-200 SMART高速计数向导组态一致。

具有相同功能由向导生成的 S7-200 项目可直接用S7-200 SMART 打开，按照以下步骤移植：

步骤1：用STEP 7 Micro/Win SMART 打开S7-200 的原程序

步骤2：按照《表3. S7-200 SMART 高速计数功能》，进行高速计数通道的接线

步骤3：按照《图1. S7-200 SMART 滤波时间与频率关系》，进行高速计数通道滤波时间的设置

步骤4：编译下载，下载即可。如下图示：

图7. 程序对比

指令移植

首先，将 S7-200 高速计数的特殊存储器 ( SM ) 与 S7-200 SMART 高速计数的特殊存储器 ( SM ) 横向对比，以 HSC0 如下表所示：

表5. S7-200 与 S7-200 SMART 特殊存储器（SM）对比

 | S7-200 | S7-200 SMART
HSC0 计数器状态字
SM36.0~SM36.4 | 保留
SM36.5 | HSC0 当前计数方向状态位：1=增计数
SM36.6 | HSC0 当前值等于预设值状态位：1=相等
SM36.7 | HSC0 当前值大于预置值状态位：1=大于
HSC0 计数器控制字
SM37.0 | 复位的有效电平控制位： 0=高电平有效 1=低电平有效
SM37.1 | 保留
SM37.2 | HSC0 AB正交计数器的计数速率选择： 0=4x 1=1x
SM37.3 | HSC0 方向控制位：1=加计数
SM37.4 | HSC0 更新方向：1=更新方向
SM37.5 | HSC0 更新预设值：1=将新的预设值写入HSC0 预设值
SM37.6 | HSC0 更新当前值：1=将新的预设值写入HSC0 当前值
SM37.7 | HSC0 使能位：1=使能
SMD38 | HSC0 当前值
SMD42 | HSC0 预设值

由上表可见，S7-200 与 S7-200 SMART 特殊存储器（SM）完全一致。

将 S7-200与 S7-200 SMART 高速计数中断事件功能横向对比，如下表所示：

表6. S7-200 与 S7-200 SMART 中断事件功能对比

S7-200 |  | S7-200 SMART
中断号 | 中断事件 | 中断号 | 中断事件
12 | HSC0 CV=PV | 12 | HSC0 CV=PV
13 | HSC1 CV=PV | 13 | HSC1 CV=PV
14 | HSC1 输入方向改变 | 14 | -
15 | HSC1 外部复位 | 15 | -
16 | HSC2 CV=PV | 16 | HSC2 CV=PV
17 | HSC2 输入方向改变 | 17 | HSC2 输入方向改变
18 | HSC2 外部复位 | 18 | HSC2 外部复位
27 | HSC0 输入方向改变 | 27 | HSC0 输入方向改变
28 | HSC0 外部复位 | 28 | HSC0 外部复位
29 | HSC4 CV=PV | 29 | -
30 | HSC4 输入方向改变 | 30 | -
31 | HSC4 外部复位 | 31 | -
32 | HSC3 CV=PV | 32 | HSC3 CV=PV
33 | HSC5 CV=PV | 33 | -

由上表可见，S7-200 SMART 与 S7-200 相比，S7-200 SMART 高速计数功能所支持的中断与 S7-200 相同。

具有相同功能由指令生成的 S7-200 项目可直接用S7-200 SMART 打开，按照以下步骤移植：

步骤1：用STEP 7 Micro/Win SMART 打开S7-200 的原程序

步骤2：按照《表3. S7-200 SMART 高速计数功能》，进行高速计数通道的接线

步骤3：按照《图1. S7-200 SMART 滤波时间与频率关系》，进行高速计数通道滤波时间的设置

步骤4：编译下载，下载即可。如下图示：

图8. 程序对比

图9. 功能测试

常问问题

S7-200 所支持的HSC4、HSC5，及模式2、模式5、模式8、模式11、模式12（在运动控制向导时勾选）能否移植到S7-200 SMART？

答：不能，无论是向导生成，还是指令生成，都不能移植到S7-200 SMART。

S7-200 与 S7-200 SMART相同功能，移植成功后，高速检测不到脉冲？

答：S7-200 SMART必须修改硬件地址的滤波时间。


TD文本显示器移植

TD 文本显示器是一种低成本的人机界面 (HMI)，是可嵌入数据的文本显示器。可以使用 TD 设备组态层级式用户菜单及信息画面，TD设备可用于查看、监视和改变应用程序的过程变量。也可以组态TD 文本显示器，使其显示由CPU 中逻辑使能的报警或信息。

S7-200 SMART 文本显示向导可组态TD400C的最大数量为5个，通过本体集成的RS485端口可以连接4个TD400C，SB CM01 RS485/RS232 端口也可以连接4个TD400C

TD文本显示器移植

TD400C使用拷贝数据块的移植主要分成两大部分：

  • 基本功能移植
  • 报警功能移植

基本功能移植

步骤一：使用STEP7 Micro/WIN 打开原S7-200的程序:

图1. TD 文本显示器移植

步骤二：点击查看-符号寻址，取消符号寻址功能：

图2. 取消符号寻址

步骤三：点击数据块，再次点击：TD_DATA0 ：

图3. 打开数据块

步骤四：将上述画面中的全部内容用鼠标全部选中，然后拷贝（Ctrl+C）

图4.复制数据块

步骤五：打开S7-200 SMART编程软件。点击数据块-页面1，查看右面打开的数据块页面

图5. 打开S7-200 SMART软件数据块

步骤六：在上述蓝色框的区域内，粘贴（Ctrl+V），完成后显示如下：

图6. 将数据复制到S7-200 SMART 程序

步骤七：保存编译

图7. S7-200 SMART 编译

报警功能移植

如果之前使用TD400C的向导时，组态了报警窗口，并在程序中调用了TD_ALM块，仅需按照下图在S7-200 SMART内编程即可，如下图所示：

图8. 报警移植

注意：
1.不要在S7-200 SMART编程软件中再使用TD400C的向导；
2若需修改TD400C的画面，烦请在S7-200的编程软件中修改后，再次执行本文的移植方法 。


PLS指令移植

S7-200 与 S7-200 SMART 使用PLS指令控制脉冲串输出（PTO）的SM 定义不同，不能将 S7-200 CPU 编写的 PLS指令程序直接用于S7-200 SMART。

PLS指令的单段管道化

如表1所示，使用 STEP 7-Micro/Win SMART 打开S7-200 CPU 的 PLS 指令程序需修改控制字节（SM67.6）和更改周期为频率（SMW68）。

表1. S7-200 与 S7-200 SMART 的SM 对比

Q0.0 | S7-200 | S7-200 SMART
SM67.0 | PTO更新周期 | PTO更新频率
SM67.1 | 未使用 | 未使用
SM67.2 | PTO更新脉冲计数值 | PTO更新脉冲计数值
SM67.3 | PTO时间基准：0=1μs，1=1ms | 未使用
SM67.4 | 未使用 | 未使用
SM67.5 | PTO操作：0=单段，1=多段 | PTO操作：0=单段，1=多段
SM67.6 | PTO/PWM模式选择：0=PTO，1=PWM | PTO/PWM模式选择：0=PWM，1=PTO
SM67.7 | PTO启用：0=禁止，1=启用 | PTO启用：0=禁止，1=启用
SMW68 | PTO周期 | PTO频率

使用 STEP 7-Micro/Win SMART 打开S7-200 CPU 的 PLS 指令程序需修改控制字节（SM67.6）和更改周期为频率（SMW68）。

例如：在 S7-200 程序里，编写 500ms/周期（SMB67=16#8D，SMW68=500ms），装载周期和脉冲的PTO 输出程序，移植至S7-200 SMART需要修改SMB67=16#C5，SMW68=2Hz。

图1. PLS指令单段PTO移植

在单段管道化期间，频率的上限为65,535Hz，如果需要更高的频率（最高为100,000Hz），则必须使用多段管道化。

PLS指令的多段管道化

相对于 S7-200 多段 PTO 计算周期增量的方式，S7-200 SMART 多段 PTO 设置更简单，只需要定义起始、结束频率和脉冲计数即可，如图2所示。因此移植时需要重新编写PTO多段管道化程序。

图2. 多段PTO操作的包络表格式对比

对于依照周期时间（而非频率）的S7-200项目移植至S7-200smart时，可以使用以下公式来进行频率转换：

CTFinal = CTInitial + (ΔCT * PC)

FInitial = 1 / CTInitial

FFinal = 1 / CTFinal

CTInitial | 段启动周期时间 (s)
ΔCT | 段增量周期时间 (s)
PC | 段内脉冲数量
CTFinal | 段结束周期时间 (s)
FFInitial | 段起始频率 (Hz)
FFinal | 段结束频率 (Hz)

如图3所示，PLS指令多段PTO移植时无论 S7-200 中定义的SMB67为16#A0（1μs/周期）还是16#A8（1ms/周期），S7-200 SMART中都需要改为16#E0。起始、结束频率根据公式计算，脉冲数不需要改变。

图3. PLS指令多段PTO移植

计算包络段的加速度（或减速度）和持续时间有助于确定正确的包络表值，可按如下公式计算 Ts 段持续时间：

ΔF = FFinal - FInitial

Ts = PC / (Fmin + (|ΔF| / 2 ) )

As = ΔF / Ts

Ts | 段持续时间 (s)
As | 段频率加速度 (Hz/s)
PC | 段内脉冲数量
Fmin | 段最小频率 (Hz)
ΔF | 段增量（总变化）频率 (Hz)

注意：如果 Ts 段持续时间少于 500 微秒，将导致 CPU 没有足够的时间来计算 PTO 段值。 PTO 管道下溢位（SM66.6、SM76.6 和 SM566.6）将置为 1，PTO 操作终止。

S7-200 SMART PTO 脉冲数测量

S7-200 SMART CPU 没有类似 S7-200 CPU 的高速计数器模式 12 功能。

S7-200 SMART CPU 硬件脉冲输出接到输入，配置高速计数器向导并调用 HSC 子程序可监视 PTO 脉冲数量 。如下图4所示：

图4. S7-200 SMART PTO 脉冲数测量


PTO向导移植

S7-200 PTO向导移植至 S7-200 SMART 运动控制，移植时需要在 S7-200 SMART 中重新运行运动控制向导编程。

S7-200 SMART 运动控制向导的测量系统选择相对脉冲，如图1所示：

图1. 选择测量系统

S7-200 SMART 运动控制向导的方向控制根据实际情况可以选择“单相（1个输出）”或者“单相（2个输出）”，“单相（2个输出）”有方向控制，如图2所示：

图2. 选择方向控制

CTRL 指令移植

PTOx_CTRL 指令由 AXISx_CTRL 指令替换，如图3所示：

图3. CTRL指令移植

1、I_STOP参数，在S7-200 SMART运动控制向导中根据实际情况启用LMT+（正限位）、LMT-（负限位）、STP（停止点）DI点，选择响应为“立即停止”，如图4所示。如果立即停止为内部变量，可以将该内部变量通过DO点控制DI点实现。

图4. 立即停止

2、D_STOP参数，在S7-200 SMART运动控制向导中根据实际情况启用LMT+（正限位）、LMT-（负限位）、STP（停止点）DI点，选择响应为“减速停止”，如图5所示。如果减速停止为内部变量，可以使用MOD_EN参数替换。

图5. 减速停止

MAN 指令移植

PTOx_MAN 指令由 AXISx_MAN 指令替换，如图6所示：

图6. MAN指令移植

1、同一时刻仅能启用RUN、JOG_P或JOG_N中的一个命令；

2、如果改变方向需先改变Dir参数再启用RUN，Dir=0时为正向。

RUN 指令移植

PTOx_RUN指令由AXISx_RUN指令替换，如图7所示：

图7. RUN指令移植

1、S7-200最多25个包络，每个包络最多29步，S7-200 SMART 最多32个包络，每个包络最多16步；

2、S7-200包络定义为“单速连续旋转”且使用PTOx_ADV指令后继续发送指定脉冲停止功能，在S7-200 SMART 可以使用RPS输入点停止，可以通过DO点控制RPS输入点实现，如图8所示：

图8. PTOx_ADV 功能移植

LDPOS 指令移植

PTOx_LDPOS 指令由 AXISx_LDPOS 指令替换，如图9所示：

图9. PTOx_LDPOS 指令移植


MAP库移植

S7-200 MAP 库移植至 S7-200 SMART 运动控制，移植时需要在 S7-200 SMART 中通过运动控制向导编程。

测量系统移植

1、如果 MAP 库使用相对脉冲，S7-200 SMART 运动控制向导的测量系统选择相对脉冲，如图1：

图1. 选择测量系统

2、S7-200 SMART 运动控制向导的方向控制根据实际情况可以选择“单相（1个输出）”或者“单相（2个输出）”，如图2：

图2. 选择方向控制

3、如果 MAP 库使用工程量，S7-200 SMART 运动控制向导的测量系统选择工程单位，如图3所示：

图3. Scale_EU_Pulse指令移植

4、最大速度和启动/停止速度在S7-200 SMART运动控制向导中设置，如图4所示：

图4. 最大速度

5、加减速时间在 S7-200 SMART 运动控制向导中设置，如图5所示：

图5. 加减速时间

CTRL指令移植

Q0_X_CTRL指令由AXISx_CTRL指令替换，如图6所示：

图6. CTRL指令移植

启动/停止速度、最大速度、加减速时间、正限位和负限位，在S7-200 SMART 运动控制向导中设置。

MoveVelocity指令移植

1、使用 Q0_X_MoveVelocity 指令，在运动过程中修改速度，由 AXISx_MAN 指令替换，如图7所示：

图7. MoveVelocity指令移植

2、使用 Q0_X_MoveVelocity 指令，在运动过程中不需要修改速度，由 AXISx_MAN 指令或者 AXISx_GOTO 指令（正向模式2，反向模式3）替换，如图8所示：

图8. MoveVelocity 指令移植

MoveAbsolute 指令移植

Q0_X_MoveAbsolute 指令由 AXISx_GOTO 指令（模式0）替换，如图9所示：

图9. MoveAbsolute指令移植

MoveRelative 指令移植

Q0_X_MoveRelative 指令由 AXISx_GOTO 指令（模式1）替换，如图10所示：

图10. MoveRelative 指令移植

Q0_X_MoveRelative 指令的方向 Direction（0=反向、1=正向），AXISx_GOTO 指令的 Pos 正数为正向、负数为反向。

Home 指令移植

Q0_X_Home 指令由 AXISx_RSEEK 指令替换，如图11所示：

图11. Q0_X_Home 指令移植

1、Q0_X_Home 指令的 Start_Dir、Final_Dir、Homing_Slow_Spd、Homing_Fast_Spd 需要在 S7-200 SMART 运动控制向导中设置，如图12所示：

图12. S7-200 SMART 运动控制向导方向、速度设置

2、Q0_X_Home 指令的 Position 需要在 S7-200 SMART 运动控制向导中设置参考点偏移量，如图13所示：

图13. S7-200 SMART 运动控制向导设置参考点偏移量

3、需要在 S7-200 SMART 运动控制向导中设置搜索顺序为1，如图14所示：

图14. S7-200 SMART 运动控制向导设置搜索顺序

LDPOS 指令移植

Q0_X_LoadPos 指令由 AXISx_LDPOS 指令替换，如图15：

图15. Q0_X_LoadPos 指令移植


EM253移植

S7-200 EM253 移植至 S7-200 SMART 时，硬件差异很大（如表1），因此移植时伺服驱动器需要与 S7-200 SMART 匹配。

表1.S7-200 EM253与S7-200 SMART硬件差异

序号 | 内容 | EM253 | S7-200 SMART
1 | 电压等级 | 5V、12V、24V及5V差分 | 24V
2 | 频率 | 最高200KHz | 最高100KHz
3 | 输出 | 漏型输出和差分输出 | 源型输出

指令移植

S7-200 EM253向导移植至S7-200 SMART运动控制，移植时需要在S7-200 SMART中重新运行向导编程。

EM253的运动控制指令与S7-200 SMART运动控制指令功能区别很小，按照表2对应关系移植：

表2.S7-200 EM253移植至S7-200 SMART指令对应关系

序号 | EM253 | S7-200 SMART
1 | POSx_CTRL | AXISx_CTRL
2 | POSx_MAN | AXISx_MAN
3 | POSx_GOTO | AXISx_GOTO
4 | POSx_RUN | AXISx_RUN
5 | POSx_RSEEK | AXISx_RSEEK
6 | POSx_LDOFF | AXISx_LDOFF
7 | POSx_LDPOS | AXISx_LDPOS
8 | POSx_SRATE | AXISx_SRATE
9 | POSx_DIS | AXISx_DIS
10 | POSx_CLR | 无相关指令，使用Q点编程50ms脉冲实现
11 | POSx_CFG | AXISx_CFG


PWM移植

S7-200 PWM向导移植至S7-200 SMART PWM，移植时需要在S7-200 SMART中重新运行PWM向导编程。

PWM向导移植

S7-200 PWM 向导移植至S7-200 SMART PWM，移植时需要在 S7-200 SMART中 重新运行PWM向导编程，如图1所示：

图1. PWM向导移植

在S7-200 SMART 中重新调用向导生成的 PWMx_RUN 子程序，如图2所示：

图2. PWMx_RUN子程序移植

PWM 指令移植

S7-200 与 S7-200 SMART 使用PLS指令控制脉宽调制（PWM）的SM 定义不同，如表1所示，不能将 S7-200 CPU 编写的 PLS指令程序直接用于S7-200 SMART。

表1.S7-200 与 S7-200 SMART 的SM 对比

Q0.0 | S7-200 | S7-200 SMART
SM67.0 | PWM更新周期 | PWM更新周期
SM67.1 | PWM更新脉宽 | PWM更新脉宽
SM67.2 | 未使用 | 未使用
SM67.3 | PWM时间基准：0=1μs，1=1ms | PWM时间基准：0=1μs，1=1ms
SM67.4 | PWM更新：0=异步，1=同步 | 未使用
SM67.5 | 未使用 | 未使用
SM67.6 | PTO/PWM模式选择：0=PTO，1=PWM | PTO/PWM模式选择：0=PWM，1=PTO
SM67.7 | PWM启用：0=禁止，1=启用 | PWM启用：0=禁止，1=启用

S7-200 SMART 只能使用同步更新更改 PWM 波形的特性。

使用 STEP 7 Micro/Win SMART 打开S7-200 CPU 的 PLS 指令程序需修改控制字SM67.6，如图3所示：

图3. PWM 指令移植


PPI通信移植

S7-200 SMART CPU PPI协议只支持与HMI连接，因此S7-200 SMART CPU间通信需要使用以太网通信（Get/Put指令），移植时需要在S7-200 SMART中重新运行Get/Put向导或者指令编程。

NETR/NETW指令向导移植

S7-200 NETR/NETW指令向导移植至S7-200 SMART Get/Put向导，移植时需要在S7-200 SMART中重新运行Get/Put向导编程，如图1所示：

图1. NETR/NETW指令向导移植

1、NETR由Get代替，NETW由Put代替；

2、NETR/NETW最大16字节数据，Get/Put最大200字节数据，可以将NETR/NETW的多项网络读操作合并在一个Get/Put操作中处理；

3、远程CPU地址改为远程CPU IP地址；

4、本地CPU的通信区域和起始地址，直接对映；

5、远程CPU的通信区域和起始地址，直接对映。

S7-200 NETR/NETW指令向导生成的NET_EXE子程序由S7-200 SMART Get/Put向导生成的NET_EXE子程序替换，如图2所示：

图2. NET_EXE子程序移植

NETR/NETW指令移植

S7-200 NETR/NETW指令移植至S7-200 SMART GET/PUT指令，移植时需要在S7-200 SMART中重新编程，如图3所示：

图3. NETR/NETW指令移植

1、远程CPU地址改为远程CPU IP地址；

2、远程CPU的通信区域和起始地址，直接对映；

3、NETR/NETW最大16字节数据，Get/Put最大222/212字节数据，可以将NETR/NETW的多项网络读操作合并在一个GET/Put操作中处理；

4、本地CPU的通信区域和起始地址，直接对映；

5、NETR由GET代替，NETW由PUT代替；


串口通信移植

串口通信主要包括自由口通信、MODBUS通信、USS通信。S7-200 串口通信移植至S7-200 SMART 时，PORT1端口需要使用CM01信号板替代。

自由口通信移植

S7-200 自由口通信移植至S7-200 SMART 时，使用STEP 7-Micro/WIN SMART 直接打开S7-200 自由口通信程序即可，也可以将S7-200 自由口通信程序复制至S7-200 SMART 项目程序中。

图1. 使用STEP 7-Micro/WIN SMART 直接打开 S7-200 自由口通信程序

MODBUS通信移植

S7-200 MODBUS通信移植至S7-200 SMART 时，使用STEP 7-Micro/WIN SMART 直接打开S7-200 MODBUS 通信程序即可，也可以在S7-200 SMART 中使用MODBUS库重新编写程序。

1、S7-200 SMART V2.1 及以前版本软件有一个modbus主站库程序和一个modbus从站库程序，PORT0端口和PORT1端口不能同时做modbus主站，也不能同时做modbus从站；如果两个端口同时做modbus主站，建议使用STEP 7-Micro/WIN SMART 直接打开S7-200 MODBUS通信程序。

2、S7-200 SMART V2.2 版本软件有两个modbus主站库程序和一个modbus从站库程序，如图2所示。两个modbus主站库程序和一个modbus从站库程序都可以选择通信端口0或者1，如图3所示。

图2. V2.2版本软件的modbus主站和从站库程序

图3. V2.2 版本软件的modbus主站和从站库程序端口选择

USS通信移植

S7-200 USS通信移植至S7-200 SMART 时，使用STEP 7-Micro/WIN SMART 直接打开S7-200 USS通信程序即可，也可以在S7-200 SMART中使用USS库重新编写程序。

S7-200 SMART软件只有一个USS库程序，PORT0端口和PORT1端口不能同时用作USS通信，如果两个端口同时USS通信，建议使用STEP 7-Micro/WIN SMART 直接打开S7-200 USS通信程序。

常问问题

1. S7-200 SMART 使用S7-200的Modbus slave库无法初始化成功？

如下图所示，使用STEP 7-Micro/WIN SMART 直接打开S7-200 MODBUS 通信程序并做相关设置后测试，

首先，图中的MBUS_INIT的相关参数针对200smart来说，设置均正常，但是从测试结果可以看出，初始化MBUS_INIT报错1：存储器范围出错，而且MBUS_SLAVE报错10：从站功能未启用

图4. MODBUS Slave报错

这是因为200的库程序里针对过程映像区MaxIQ(0-128)，AaxAI(0-32)做的报警判断，如下图Modbus Slave程序所示，S7-200的过程映像区最大0-31，所以超过31会报错，【但S7-200smart的AI过程映像区最大255】

图4. MODBUS Slave报警判断

所以当S7-200 SMART需要设计AI大于31的地址时，考虑还是使用STEP 7-Micro/WIN SMART自己的库。


DP/MPI通信移植

DP/MPI通信移植时，S7-200 SMART需要使用DP01模块，S7-200 SMART不需要编程，但是需要在系统块中组态DP01模块。

图1. DP01组态

DP通信移植

DP通信移植时，主站需要导入EM DP01模块的GSD文件，如图2所示：

图2. DP通信移植

步骤一：主站重新添加DP01的GSD文件；

步骤二：按照EM277组态的通信数据区及数据长度重新组态DP01。

EM DP 01 GSD文件

MPI通信移植

MPI通信移植时，需要按照主站组态的从站地址修改DP01的实际地址，如图3所示，需将DP01模块地址修改为3。

图3. MPI通信从站地址


以太网通信移植

S7-200需要扩展CP243-1模块进行以太网通信，S7-200 SMART集成以太网口，不需要扩展模块。8个连接用于CPU与其他S7-200 SMART CPU之间的PUT/GET主动连接，8个连接用于CPU与其他S7-200 SMART CPU之间的PUT/GET被动连接。

与S7-300/400以太网通信移植

S7-200通过扩展CP243-1与与S7-300/400以太网通信，CP243-1即可以作为客户端、也可以作为服务器，移植至S7-200 SMART时，S7-200 SMART只能作为服务器，需要在S7-300/400侧调用PUT/GET。

S7-300/400配置S7连接时设置伙伴方的TSAP为03.01。

S7-200 SMART不能与CP343-1 Lean 模块以太网通信，V2.2及以上版本软件和硬件支持开放式以太网通信，可以与CP343-1 Lean通过TCP通信。

与S7-1200/1500以太网通信移植

S7-200通过扩展CP243-1与与S7-1200/1500以太网通信，CP243-1即可以作为客户端、也可以作为服务器，移植至S7-200 SMART时，S7-200 SMART也可以作为客户端、服务器。做服务器时需要在S7-1200/1500侧调用PUT/GET，做客户端操作详见：《西门子 S7-200 SMART PLUS V1.7 技术参考》

S7-1200/1500配置S7连接时设置伙伴方的TSAP为03.01。

S7-1200/1500用于通信的数据块需要取消属性中"优化的块访问"选项。

S7-200 SMART作为客户端时，S7-1200/1500需要允许PUT/GET访问。

OPC 通讯移植

S7-200 OPC通信主要有以下2种情况：

1、S7-200扩展CP243-1通过以太网口以S7协议进行OPC通信，OPC站安装以太网卡。移植时，使用S7-200 SMART本体集成以太网口即可，OPC软件可以选择PC ACCESS SMART 或者SIMATIC NET。

2、通过S7-200 CPU本体集成的RS485端口以PPI协议进行OPC通信或者扩展EM277通过DP口以S7协议进行OPC通信，OPC站安装CP5611卡等。移植时，S7-200 SMART可以使用以太网也可以扩展DP01模块，OPC软件使用SIMATIC NET。


资料手册在线下载

软件固件手册等在线下载

S7-200 SMART 软件，固件，GSD，手册，样本，认证下载

http://www.siemens.com.cn/s7-200smart

图1.软件及手册下载位置

S7-200 SMART PLUS文档网页版内容查找

1.S7-200 SMART PLUS文档网页版内容，可以通过以下链接自行查找，具体步骤参考下文图2-图4：

http://www.ad.siemens.com.cn/service/answer/NewHl/HlSearch.aspx

图2.查找步骤

  • A.更改产品线为S7-200SMART
  • B.简单描述问题，尤其体现问题关键字
  • C.手动点击，快速查找 (必须手动操作)

2.简单举例：查找OPC相关内容：在描述计数问题出填写关键字“OPC”，点击查找后，网页切换到图3，会出现推荐参考答案。

图3.OPC查找举例

3.点击相关匹配内容，打开即可，如图4所示。

图4.OPC查找内容


CAD图纸下载

S7-200 SMART图纸在线下载

按住 Shift 键时用鼠标点击下列链接，打开新浏览器窗口。

S7-200 SMART 图纸下载链接

用户可从SIMATIC产品数据库下载官网可以提供的各种图纸，点击以下链接，具体步骤见下图：

https://www.automation.siemens.com/bilddb/search.aspx?lang=en

图1 查找图纸


CAD图纸下载

S7-200 SMART 证书在线下载

按住 Shift 键时用鼠标点击下列链接，打开新浏览器窗口。

1.S7-200 SMART EC/EU证书下载链接

https://support.industry.siemens.com/cs/cn/zh/view/68791956

2.S7-200 SMART CE证书EC/EU证书本地下载(2017)

S7-200 SMART CE证书EC/EU证书

3.SIMATIC PM207_V3_201707 CE证书EC/EU证书本地下载(2017)

PM207 CE证书EC/EU证书

证书查找步骤

如果需要其他的认证，或者上文中的认证过期，可以自己通过下述步骤自己查询，具体查找步骤：

点击该链接

https://support.industry.siemens.com/cs/products/6es7288-1sr60-0aa0/cpu-sr60-ac-dc-relay-36di-24do?pid=157718&dtp=Certificate&mlfb=6ES7288-1SR60-0AA0&mfn=ps&pnid=21148&lc=en-CN

可以打开西门子全球技术资源库关于LOGO!产品的所有证书信息，如下图所示。在证书分类搜索里可以按照证书类型、证书名称、审批单位或国家进行进一步筛选。

图1 查找证书


常用网站地址

西门子自动化与驱动集团常用网站地址

技术支持主页

英文产品信息系统主页（ProDIS）

http://support.automation.siemens.com

中文技术支持主页

http://www.4008104288.com.cn

ProDIS主页提供了西门子自动化与驱动集团产品的详细技术资料，包括免费目录、手册的电子版本，产品介绍，常问问题，News Letter等。中文技术支持主页上包括“技术论坛”、“网上课堂”等。

本地下载

中、英文资料、软件、应用文档本地下载

http://www.ad.siemens.com.cn/download

产品分类网址

西门子（中国）有限公司 工业自动化与驱动技术集团 客户服务与支持中心

自动化系统

自动化系统 下载中心：http://www.ad.siemens.com.cn/download/DocList.aspx?TypeId=0&CatFirst=1

自动化系统 全球技术资源：http://support.automation.siemens.com/CN/view/zh/10805045/130000

“找答案”自动化系统版区：http://www.ad.siemens.com.cn/service/answer/category.asp?cid=1027

通信/网络

通信/网络 全球技术资源：http://support.automation.siemens.com/CN/view/zh/10805878/130000

“找答案”Net版区：http://www.ad.siemens.com.cn/service/answer/category.asp?cid=1031

驱动技术

驱动技术 全球技术资源：http://support.automation.siemens.com/CN/view/zh/10803928/130000

“找答案”驱动技术版区：http://www.ad.siemens.com.cn/service/answer/category.asp?cid=1038

SIMATIC HMI人机界面

HMI全球技术资源：http://support.automation.siemens.com/CN/view/zh/10805548/130000

“找答案”WinCC版区：http://www.ad.siemens.com.cn/service/answer/category.asp?cid=1032


西门子工业技术培训中心

西门子工业技术培训中心--网址

简介：

西门子工业技术培训中心是 Sitrain 在中国的本地化运营机构。Sitrain 在全球 60 多个国家拥有 200 多家专业的西门子技术培训中心，提供全球统一的培训课程。20 年来，我们为中国本地客户提供来自原始设备厂商的专业的课程和人才发展服务。 培训，助力个人卓越，成就企业发展！

http://www.industry.siemens.com.cn/home/cn/zh/customer-service/vs/sitrain/Pages/homepage.aspx

西门子工业技术培训中心联系方式

电话：4008104288 转 8


常用网站地址

S7-200 SMART E-Learning 视频教程

S7-200 SMART 在线跟我学/跟我做的视频，从编程基础、基本指令介绍、向导编程介绍、通信和网络功能等几方面，理论结合实际操作，全方位的为用户提供简单易学的电子化学习资料，适用于初次学习 S7-200 SMART的用户或单个知识点需要详细介绍的用户。

注意 ：关于 S7-200 SMART 教学视频中断的问题，需要设置必须的播放环境。如何使用 IE 浏览器，请下载 flash player 7.0 for IE 插件。如果下载后观看，请安装 flash player 7.0 播放器。

系列视频：S7-200 SMART跟我学/跟我做
http://www.ad.siemens.com.cn/service/elearning/cn/SerialVideo.aspx?vsid=145

S7-200 SMART 西门子热线工程师内部学习讲座

本系列视频是西门子热线工程师S7-200 SMART内部培训讲座，涉及了S7-200 SMART概述和硬件、软件和PID、串口通信、工艺功能等等内容，深入浅出，是您不可多得的学习资料！

系列视频：S7-200 SMART西门子热线工程师内部学习讲座
http://www.ad.siemens.com.cn/service/elearning/cn/SerialVideo.aspx?vsid=152


常用网站地址

S7-200 SMART 常用编程指令

位逻辑指令 | 位逻辑指令 | S7-200 SMART位逻辑指令概述及应用举例——跟我学17/40 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1027
 |  | S7-200 SMART位逻辑指令概述及应用举例——跟我做18/40 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1028
定时器、 计数器、 时钟指令 | 定时器 | S7-200 SMART定时器指令概述及应用举例——跟我学25/40 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1035
 |  | S7-200 SMART定时器指令概述及应用举例——跟我做26/40 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1036
 | 计数器 | S7-200 SMART计数器指令概述及应用举例——跟我学27/40 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1037
 |  | S7-200 SMART计数器指令概述及应用举例——跟我做28/40 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1038
 | 时钟指令 | S7-200 SMART时钟指令概述及应用举例——跟我学29/40 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1039
 |  | S7-200 SMART时钟指令概述及应用举例——跟我做30/40 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1040
位移、 循环、 比较、 移动、 转换指令 | 位移和循环位移指令 | S7-200 SMART移位和循环移位运算指令概述及应用举例——跟我学23/40 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1033
 |  | S7-200 SMART移位和循环移位运算指令概述及应用举例——跟我做24/40 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1034
 | 比较指令 | S7-200 SMART 比较指令概述及应用举例——跟我学47/52 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1061
 |  | S7-200 SMART 比较指令概述及应用举例——跟我做48/52 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1062
 | 移动指令 | S7-200 SMART 移动指令概述及应用举例——跟我学49/52 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1063
 |  | S7-200 SMART 移动指令概述及应用举例——跟我做50/52 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1064
 | 转换指令 | S7-200 SMART 转换指令概述及应用举例——跟我学51/52 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1065
 |  | S7-200 SMART 转换指令概述及应用举例——跟我做52/52 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1066
运算指令 | 整数运算指令 | S7-200 SMART整数运算指令概述及应用举例——跟我学19/40 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1029
 |  | S7-200 SMART整数运算指令概述及应用举例——跟我做20/40 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1030
 | 逻辑运算指令 | S7-200 SMART逻辑运算指令概述及应用举例——跟我学21/40 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1031
 |  | S7-200 SMART逻辑运算指令概述及应用举例——跟我做22/40 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1032
子程序和中断 | 带参数子程序编写 | S7-200 SMART带参数子程序编写举例——跟我学 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1096
 |  | S7-200 SMART带参数子程序编写举例——跟我做 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1097
 | 中断及中断指令概述 | S7-200 SMART中断及中断指令概述——跟我学 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1106
 |  | S7-200 SMART中断及中断指令概述——跟我做 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1107
 | 中断指令应用举例 | S7-200 SMART中断指令应用举例——跟我学 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1108
 |  | S7-200 SMART中断指令应用举例——跟我做 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1109


常用网站地址

S7-200 SMART 编程软件的使用和PLC的操作

SETP 7-MicroWIN SMART简介 | S7-200 SMART SETP 7-MicroWIN SMART简介——跟我学39/52 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1053
 | S7-200 SMART SETP 7-MicroWIN SMART简介——跟我做40/52 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1054
数据块的使用 | S7-200 SMART数据块的使用——跟我学15/40 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1025
 | S7-200 SMART数据块的使用——跟我做16/40 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1026
符号的使用 | S7-200 SMART 符号的使用——跟我学31/52 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1045
 | S7-200 SMART 符号的使用——跟我做32/52 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1046
交叉引用的使用 | S7-200 SMART 交叉引用的使用——跟我学33/52 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1047
 | S7-200 SMART 交叉引用的使用——跟我做34/52 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1048
系统块的组态 | S7-200 SMART 系统块的组态——跟我学35/52 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1049
 | S7-200 SMART 系统块的组态——跟我做36/52 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1050
状态表的使用 | S7-200 SMART 状态图表的使用——跟我学37/52 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1051
 | S7-200 SMART 状态图表的使用——跟我做38/52 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1052
存储卡的使用 | S7-200 SMART 使用存储卡——跟我学43/52 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1057
 | S7-200 SMART 使用存储卡——跟我做44/52 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1058
输入和程序编辑 | S7-200 SMART 输入和程序编辑——跟我学45/52 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1059
 | S7-200 SMART 输入和程序编辑——跟我做46/52 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1060
PLC操作 | S7-200 SMART PLC操作——跟我学 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1094
 | S7-200 SMART PLC操作——跟我做 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1095
编译下载运行调试项目 | S7-200 SMART编译下载运行调试项目——跟我学 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1104
 | S7-200 SMART编译下载运行调试项目——跟我做 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1105
设备组态 和 通信组态 | S7-200 SMART PLC设备组态和通信组态——跟我学41/52 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1055
 | S7-200 SMART PLC设备组态和通信组态——跟我做42/52 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1056


常用网站地址

S7-200 SMART PID回路控制

PID回路控制 | 概述及项目编程准备 | S7-200 SMART PID回路控制(1):概述及项目编程准备——跟我学 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1084
 |  | S7-200 SMART PID回路控制(1):概述及项目编程准备——跟我做 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1085
 | 配置PID向导 | S7-200 SMART PID回路控制(2):配置PID向导——跟我学 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1086
 |  | S7-200 SMART PID回路控制(2):配置PID向导——跟我做 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1087
 | 调用向导生成子程序编程 | S7-200 SMART PID回路控制(3):调用向导生成的子程序编程——跟我学 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1088
 |  | S7-200 SMART PID回路控制(3):调用向导生成的子程序编程——跟我做 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1089
 | 下载测试 | S7-200 SMART PID回路控制(4):下载测试——跟我学 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1090
 |  | S7-200 SMART PID回路控制(4):下载测试——跟我做 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1091
 | PID整定控制面板 | S7-200 SMART PID回路控制(5):PID整定控制面板——跟我学 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1092
 |  | S7-200 SMART PID回路控制(5):PID整定控制面板——跟我做 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1093


常用网站地址

S7-200 SMART 通信功能

Modbus RTU通信 | 从站编程 | S7-200 SMART Modbus RTU通信(1):概述及从站编程——跟我学 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1078
 |  | S7-200 SMART Modbus RTU通信(1):概述及从站编程——跟我做 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1079
 | 主站编程 | S7-200 SMART Modbus RTU通信(2):主站编程——跟我学 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1080
 |  | S7-200 SMART Modbus RTU通信(2):主站编程——跟我做 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1081
 | 下载测试 | S7-200 SMART Modbus RTU通信(3):下载测试——跟我学 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1082
 |  | S7-200 SMART Modbus RTU通信(3):下载测试——跟我做 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1083
USS通信 | 变频器参数设置 | S7-200 SMART USS通信(1):变频器参数设置——跟我学 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1098
 |  | S7-200 SMART USS通信(1):变频器参数设置——跟我做 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1099
 | 程序编写 | S7-200 SMART USS通信(2):PLC程序编写——跟我学 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1100
 |  | S7-200 SMART USS通信(2):PLC程序编写——跟我做 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1101
 | 下载测试 | S7-200 SMART USS通信(3):下载测试——跟我学 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1102
 |  | S7-200 SMART USS通信(3):下载测试——跟我做 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1103
自由口通信 | 设置参数 | S7-200 SMART自由口通信(1):设置参数——跟我学 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1110
 |  | S7-200 SMART自由口通信(1):设置参数——跟我做 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1111
 | 发送程序 | S7-200 SMART自由口通信(2):编写发送程序——跟我学 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1112
 |  | S7-200 SMART自由口通信(2):编写发送程序——跟我做 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1113
 | 接收程序 | S7-200 SMART自由口通信(3):编写接收程序——跟我学 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1114
 |  | S7-200 SMART自由口通信(3):编写接收程序——跟我做 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1115


常用网站地址

S7-200 SMART 西门子热线工程师内部学习讲座

本系列视频是西门子热线工程师S7-200 SMART内部培训讲座，涉及了S7-200 SMART概述和硬件、软件和PID、串口通信、工艺功能等等内容，深入浅出，是您不可多得的学习资料！

注意 ：关于 S7-200 SMART 教学视频中断的问题，需要设置必须的播放环境。如何使用 IE 浏览器，请下载 flash player 7.0 for IE 插件。如果下载后观看，请安装 flash player 7.0 播放器。

系列视频：S7-200 SMART西门子热线工程师内部学习讲座
http://www.ad.siemens.com.cn/service/elearning/cn/SerialVideo.aspx?vsid=152

概述 | S7-200 SMART 概述Part1 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1147
 | S7-200 SMART 概述Part2 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1148
CPU系统属性 | S7-200 SMART PLC CPU系统属性Part1 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1149
 | S7-200 SMART PLC CPU系统属性Part2 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1150
模块和存储卡 | S7-200 SMART PLC模块及设置 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1151
 | S7-200 SMART PLC存储卡的使用 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1152
软件的介绍和使用 | S7-200 SMART 软件介绍 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1153
 | S7-200 SMART 软件使用 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1154
自定义库和项目移植 | S7-200 SMART 自定义库和项目移植 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1155
PID功能 | S7-200 SMART PID功能介绍 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1156
 | S7-200 SMART PID自整定及常见问题 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1157
ASCII协议 | S7-200 SMART PLC ASCII协议 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1159
通讯 | S7-200 SMART PLC串口通信概述 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1158
 | S7-200 SMART PLC Modbus RTU | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1160
 | S7-200 SMART PLC USS协议+常问问题 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1161
 | S7-200 SMART EM DP01功能 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1583
 | S7-200 SMART DP通讯实例 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1584
高速计数与脉宽调制 | S7-200 SMART PLC 高速计数器功能 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1162
 | S7-200 SMART PLC 脉宽调制输出功能 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1163
运动功能 | S7-200 SMART PLC运动功能Part1 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1164
 | S7-200 SMART PLC运动功能Part2 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1165
 | S7-200 SMART PLS编程 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1585
 | S7-200 SMART PLS定位 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1586
 | 与S7-200 PLS比较 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1587


S7-200 SMART选型指南_产品介绍

S7-200 SMART 选型指南

S7-200 SMART 行业应用

S7-200 SMART应用遍及各行各业，涵盖各种机器设备应用，无缝贴合机器设备制造商的各种需求 。

S7-200 SMART 八大亮点

截止到目前，S7-200 SMART历经五次产品重大升级，V1(2012.7)，V2(2013.11) ，V2.1(2015.9)，V2.2(2016.12)，V2.3(2017.07)产品线在每次升级中都得到完善，性能大幅提升 。

S7-200 SMART PLC，SMART LINE触摸屏， V20变频器，V90伺服系统组成新型的SMART?? 小型自动化解决方案，全面覆盖客户关于自动控制、人机交互、变频调速及伺服定位的需求。

亮点一 机型丰富，更多选择

亮点二 选件扩展，精确定制

亮点三 高速芯片，性能卓越

亮点四 以太互联，经济便捷

亮点五 三轴脉冲，运动自如

亮点六 通用SD卡，快速更新

亮点七 软件友好，编程高效

亮点八 完美整合，无缝集成

S7-200 SMART 其他特点


S7-200 SMART选型指南_选项关注

S7-200 SMART 硬件能力

CPU 性能

S7-200 SMART全新设计，性能卓越：为各种应用提供了经济、可靠、易用的解决方案。

CPU硬件参数

IO 扩展

S7-200 SMART家族提供各种各样的扩展模块和信号板通过额外的I/O和通信接口，使得S7-200 SMART可以很好地按照您的应用需求来配置。

信号板

S7-200 SMART共提供了5种不同的信号板。使用信号板，可以在不额外占用电控柜空间的前提下，提供额外的数字量I/O、模拟量I/O和通信接口，达到精确化配置。

SM模块

S7-200 SMART提供20种不同扩展模块，方便扩展本地的数字量和模拟量I/O及通信端口

扩展能力

其他附件

通讯能力


S7-200 SMART选型指南_产品功能

S7-200 SMART 功能

S7-200smart传承了S7-200 系列CPU经典编程理念，可以实现基本编程及高级功能的应用。

基本功能

高级功能

S7-200 SMART 编程软件

远程控制方案

型号说明

相关资料下载

1. 产品样本

2. 系统手册

3. 编程宝典(S7-200 SMART PLUS)

4. 编程软件

5. 最新固件

6. GSD文件

7. 学习视频


CPU外形结构与电源需求计算

CPU外形结构

CPU外形结构

图1.CPU外形结构

电源及传感器输出电源

在安装或拆卸任何电气设备之前，请确保已切断该设备的电源。在安装和拆卸CPU之前，必须采取合适的安全预防措施并确保切断该CPU的电源。

将CPU连接至电源，下图显示了直流和交流型CPU的接线。

图2.直流安装 [image] 图3.交流安装

如果在通电情况下尝试安装CPU或相关设备或者对他们进行接线，则可能会触电或导致设备错误运行。如果在安装和拆卸过程中未切断CPU和相关设备的所有电源，则可能导致人员死亡、重伤、或设备损坏。

传感器输出电源：每一个CPU（除CRs）模块都有一个24VDC传感器电源（CPU的电源都在右上方，而右下方是传感器电源。），它为本机输入点和扩展模块继电器线圈提供24VDC。如果电源要求超出了CPU模块24VDC电源的定额，你可以增加一个外部24VDC电源来供给扩展模块的24VDC。

CPU输入电压范围

直流DC：20.4-28.8 VDC

交流AC：85-264VAC（47-63Hz）

S7-200 SMART 电源需求与计算

S7-200 SMART CPU模块提供5VDC和24VDC电源：

CPU有一个内部电源，用于为CPU、扩展模块、信号板提供电源和满足其他24 VDC用户电源需求。请使用以下信息作为指导，确定CPU可以为组态提供多少电能（或电流）。

请参见特定CPU的技术规范，确定24 VDC传感器电源功率预算，CPU提供的5 VDC 逻辑预算，以及扩展模块和信号板5 VDC功率要求。请参考计算功率预算来确定CPU可以为您的组态提供多少电能（或电流）。

CPU为系统中的所有扩展模块提供5 VDC逻辑电源。请特别注意系统配置，确保CPU可提供所选扩展模块要求的5 VDC电源。如果组态要求的电源超出CPU提供的电源范围，则必须拆下一些模块。

如果超出CPU功率预算，则可能无法连接CPU允许的最大数量模块。

CPU还提供了 24V传感器电源，该电源可以为输入点、扩展模块上的继电器线圈电源或其他需求提供24V电源。必须手动将不同电源的公共端（M）连接在一起。

如果需要外部24 VDC电源，则确保该电源未与CPU的传感器电源并联。为提高电气噪声保护能力，建议将不同电源的公共端（M）连接在一起。

将外部24 VDC电源与CPU的24 VDC传感器的电源并联会导致这两个电源之间有冲突，因为每个电源都试图建立自己首选的输出电压电平。该冲突可能导致一个电源或两个电源的寿命缩短或立即发生故障，从而导致PLC系统意外运行。意外运行可能导致人员 死亡、重伤或设备损坏。CPU的直流传感器电源和任何外部电源应给不同点供电。允许将多个公共端连接到一起。

S7-200 SMART 系统中的一些24 VDC电源输入端口是互连的，并且通过一个公共逻辑电路连接多个M端子。例如，在数据表中指定为“非隔离”时，以下电路是互连的：CPU的24 VDC、EM的继电器线圈的电源输入或非隔离模拟输入的电源。所有非隔离的M端必须连接到同一个外部参考电位。

将非隔离的M端子连接到不同参考电位将导致意外的电流，该电流可能导致PLC和任何连接设备损坏或允许不确定。不遵守这些准则可能会导致设备损坏或运行不确定，而后者可能导致死亡、人员重伤和财产损失。务必确保S7-200 SMART系统中的所有非隔离M端子都连接到同一个参考电位。

表1. S7-200 SMART CPU V1.0 版本供电能力
CPU型号 | 电流供应
 | +5 VDC | +24 VDC(传感器电源)
CPU SR20 | 740mA | 300mA
CPU ST40 | 740mA | 300mA
CPU SR40 | 740mA | 300mA
CPU CR40 | -- | 300mA
CPU ST60 | 740mA | 300mA
CPU SR60 | 740mA | 300mA

表2. S7-200 SMART CPU V2.0及以上版本供电能力
CPU型号 | 电流供应
 | +5 VDC | +24 VDC(传感器电源)
CPU SR20/ST20 | 1400mA | 300mA
CPU SR30/ST40 | 1400mA | 300mA
CPU SR60/ST60 | 1400mA | 300mA
CPU CR40/CR60 | -- | 300mA
CPU CR20/30/40/60 s | -- | --

表3. CPU上的数字量输入所消耗的电流
CPU上的数字量 | 电流需求
 | ＋5VDC | +24VDC
每点输入 | - | 4mA/每输入

表4. 数字扩展模块所消耗的电流

数字扩展模块型号 | 电流供应
 | +5 VDC | +24 VDC
EM DE08 | 105mA | 8*4mA
EM DT08 | 120mA | --
EM DR08 | 120mA | 8*11mA
EM DT16 | 145mA | 输入：8*4mA 输出：---------
EM DR16 | 145mA | 输入：8*4mA 输出：8*11mA
EM DT32 | 185mA | 输入：16*4mA 输出：---------
EM DR32 | 180mA | 输入：16*4mA 输出：16*11mA

表5.模拟扩展模块所消耗的电流

模拟扩展模块型号 | 电流供应
 | +5 VDC | +24 VDC
EM AE04 | 80mA | 40mA（无负载）
EM AE08 | 80mA | 70mA（无负载）
EM AQ02 | 60mA | 50mA（无负载）
EM AQ04 | 60mA | 75mA（无负载）
EM AM03 | 60mA | 30mA（无负载）
EM AM06 | 80mA | 60mA（无负载）

表6. RTD、TC扩展模块所消耗的电流

RTD/TC扩展模块型号 | 电流供应
 | +5 VDC | +24 VDC
EM AR02 | 80mA | 40mA
EM AR04 | 80mA | 40mA
EM AT04 | 80mA | 40mA

表7. 信号板和DP扩展模块所消耗的电流

模拟扩展模块型号 | 电流供应
 | +5 VDC | +24 VDC
SB AQ01 | 15mA | 40mA（无负载）
SB DT04 | 50mA | 2*4mA
SB RS485/RS232 | 50mA | 不适用
SB AE01 | 50mA | 不适用
EM DP01 | 150mA | 30 mA；通信端口激活时 60 mA；通信端口加90mA/5V负载时 180 mA；通信端口加120mA/24V负载时

功率要求计算示例

下表给出了包括以下模块的CPU系统的功率要求计算例子：

• CPU SR40 AC/DC/ 继电器 (固件版本V1.0)
• 3个 EM 8 点继电器型数字量输出（EMDR08）
• 一个 EM 8 点数字量输入（EM DE08）

该安装共有32点输入40点输出

该CPU已分配驱动CPU内部继电器线圈所需的功率。功率计算中无需包括内部继电器线圈功率要求。

本例中的CPU提供了足够5VDC电流，但没有通过传感器电源为所有输入和扩展继电器线圈提供足够的24VC电流。I/O需要392mA，但CPU提供了300mA。该安装额外需要一个至少为92mA的24VDC电源以运行所有包括的24 VDC输入和输出。

表8.电源计算示例
CPU功率预算 | 5 VDC | 24 VDC
CPU SR40 AC/DC/继电器 | 740mA | 300mA
减去
系统要求 | 5 VDC | 24 VDC
CPU SR40 ，24点输入 | -- | 24*4mA=96mA
插槽0：EM DR08 | 120mA | 8*11mA=88mA
插槽1：EM DR08 | 120mA | 8*11mA=88mA
插槽2：EM DR08 | 120mA | 8*11mA=88mA
插槽3：EM DE08 | 105mA | 8*4mA=32mA
总要求 | 465mA | 392mA
等于
电流差额 | 5 VDC | 24 VDC
总电流差额 | 275mA | （92mA）


New_function_V2.4

S7-200 SMART V2.4 版本新增加功能

STEP 7-Micro/WIN SMART V2.4 和 S7-200 SMART V2.4 CPU 均引入了以下新功能：

1. 受固件更新V2.4.0影响的CPU型号

目前只有以下型号的CPU支持V2.4.0的固件：

CPU 型号 | 订货号
CPU SR20，AC/DC/继电器 | 6ES7288-1SR20-0AA0
CPU ST20，DC/DC/DC | 6ES7288-1ST20-0AA0
CPU SR30，AC/DC/继电器 | 6ES7288-1SR30-0AA0
CPU ST30，DC/DC/DC | 6ES7288-1ST30-0AA0
CPU SR40，AC/DC/继电器 | 6ES7288-1SR40-0AA0
CPU ST40，DC/DC/DC | 6ES7288-1ST40-0AA0
CPU SR60，AC/DC/继电器 | 6ES7288-1SR60-0AA0
CPU ST60，DC/DC/DC | 6ES7288-1ST60-0AA0

2. PROFINET 通信

STEP?7-Micro/WIN SMART V2.4 和 S7-200 SMART V2.4 CPU 固件增加了 PROFINET通信。

  • PROFINET设备的LED状态
  • 查找PROFINET设备
  • GSDML管理
  • 新的编程向导：PROFINET
  • 新的程序指令：PROFINET
  • PROFINET设备提供诊断功能
  • PROFINET设备提供状态图表功能

    • 3. Modbus TCP库

    STEP7-Micro/WIN SMART V2.4集成了Modbus TCP库。

    4. PN Read Write Record 库

    该库提供从/向 PROFINET 设备读取/写入数据记录的功能。

    5. SINAMICS 库

    该库包含预组态的子程序，更易控制驱动器。可使用 SINAMICS 库控制物理驱动器和驱动参数。

    6. 存储卡

    在 STEP7-Micro/Win SMART V2.4 中，可直接将 S7-200 SMART 项目下载到计算机，然后通过读卡器将其 保存在 Micro SD 卡上。


New_function_V2.3

S7-200 SMART V2.3 版本新增加功能

STEP 7-Micro/WIN SMART V2.3 和 S7-200 SMART V2.3 CPU 均引入了以下新功能：

1 新 CPU 型号

S7-200 SMART 具有四种新的紧凑型串行 CPU 型号：

CPU CR20s AC/DC/继电器 (6ES7288-1CR20-0AA1)

CPU CR30s AC/DC/继电器 (6ES7288-1CR30-0AA1)

CPU CR40s AC/DC/继电器 (6ES7288-1CR40-0AA1)

CPU CR60s AC/DC/继电器 (6ES7288-1CR60-0AA1)

2 状态 LED 状态

现在，如果强制施加一个值，则所有型号 CPU 在 1 Hz 时闪烁的都将是 STOP LED（在 RUN 或 STOP 模式下）。

3 高速计数器 (HSC)

HSC 新功能包括：

SR 和 ST 型号 CPU 的 HSC 数量由四个增至六个。新的 CRs 型 CPU 配有四个 HSC。

SR/ST30 CPU 现已针对 HSC4 使用高速输入 I0.6 和 I0.7。这意味着 SR/ST30 CPU 比其他 SR/ST 型号多一个 200 kHz 计数器。

4 STEP 7-Micro/WIN SMART 支持 USB/PPI 串行接口

现在可以使用 USB/PPI 多主站电缆通过以下任意串行端口对所有 CPU 型号进行编程：

RS485 端口

信号板端口

DP01 PROFIBUS 端口

5 STEP 7-Micro/WIN SMART 固件更新

现可通过以下任意串行端口将固件更新下载至所有 CPU 型号：

RS485 端口

信号板端口

DP01 PROFIBUS 端口

说明
CPU CR40 和 CPU CR60

S7-200 SMART CPU 固件版本 V2.3 不适用于 CPU CR40 和 CPU CR60 型号。


New_function_V2.2

S7-200 SMART V2.2 版本新增加功能

STEP 7-Micro/WIN SMART V2.2 和 S7-200 SMART V2.2 CPU 引入了以下新功能：

● 增加了新模块：
– 16 点数字输入模块 (EM DE16) (6ES7288-2DE16-0AA0)
– 16 点继电器型数字量输出模块 (EM QR16) (6ES7288-2QR16-0AA0)
– 16 点晶体管型数字量输出模块 (EM QT16) (6ES7288-2QT16-0AA0)
– 扩展电缆，1m (6ES7288-6EC01-0AA0)
● 支持两个 Modbus RTU 主站
● 改进了添加自定义库的功能
● 支持开放式用户通信


New_function_V2.1

S7-200 SMART V2.1 版本新增加功能

STEP 7 Micro/WIN SMART V2.1 和 S7-200 SMART V2.1 CPU 引入了以下新功能：

  • 新模块:

    • EM DP01：智能扩展模块，支持 MPI 协议和 PROFIBUS DP V0 和 V1 作为从站

    • EM AM03：带有两个模拟量输入和一个模拟量输出的模拟量扩展模块

    • EM AR04：带有四个 RTD 输入通道的模拟量扩展模块

    • EM AE08：带有八个模拟量输入通道的模拟量扩展模块

    • EM AQ04：带有四个模拟量输出通道的模拟量扩展模块

    • EM AE01：带有一个模拟量 输入通道的信号板

  • 增强了使用 PTO（脉冲串输出）功能和 PWM（脉宽调制）功能的 PLS 指令。

  • 性能增强。


New function

S7-200 SMART V2.0 版本新增加功能

STEP 7-Micro/WIN SMART V2.0 和 S7-200 SMART V2.0 CPU 均引入了新功能，如下所示：

  • 新型号 CPU:

    • CPU ST20 (DC/DC/DC)

    • CPU ST30 (DC/DC/DC)

    • CPU SR30（AC/DC/继电器）

    • CPU CR60（AC/DC/继电器）

  • 新型电池信号板 (SB BA01) 扩展了断电时保存 CPU 时间和日期信息的功能。

  • 新型四通道热电偶输入扩展模块 (EM AT04)。

  • CPU 现在最多可连接六个扩展模块。

  • 支持 RUN 模式下载： 当 CPU 处于 RUN 模式时，用户可对程序进行编辑并将其下载至 CPU。

  • 程序编辑器的性能有所提升，包括缩放、子分支、连接通过连接点的元件、输入符号名称时的自动完成以及在符号表中自动生成新符号。

  • 安全功能增强，包括 CPU 密码保护功能以及对未授权用户隐藏部分用户程序功能。

  • 临时授权访问受密码保护的 POU 的功能。

  • STEP 7-Micro/WIN SMART 中有关已组态 CPU 的 I/O 符号映射表，可显示模块上的可用 I/O 点并提供便于摆放 I/O 名称和描述的位置。

  • 启动 SINAMICS V90 驱动器组态工具的功能。

  • 用户可借助新 GET/PUT 指令实现同一以太网网络中 CPU 之间的数据读写。

  • 附加运动功能：

    • 急停补偿

    • 借助读取绝对位置功能，您可以读取 SINAMIC V90 驱动器当前位置值

  • 通过增强的通信对话框，可从手动输入的 IP 地址选择设备。

  • 新向导：

    • Get/Put： 用户可借此选择操作类型（GET 或 PUT）、传送大小、远程 CPU 及其地址，进而针对 GET/PUT 操作创建程序块。

    • 数据日志： 用户可借此组态最多四个永久数据日志文件并分配 PLC 过程数据以注册各个文件。 本向导可创建数据日志的写入子例程，这样用户便可根据应用需要通过程序调用子例程来记录数据。


技术参数

SIMATIC S7-200 SMART PLC

S7-200 SMART PLC 主要性能参数

标准型CPU 参数 |  | CPU SR20 AC/DC/Relay | CPU ST20 DC/DC/DC | CPU SR30 AC/DC/Relay | CPU ST30 DC/DC/DC | CPU ST40 DC/DC/DC | CPU SR40 AC/DC/Relay | CPU ST60 DC/DC/DC | CPU SR60 AC/DC/Relay
外形尺寸（mm） |  | 90 x 100 x 81 |  | 110 x 100 x 81 |  | 125 x 100 x 81 |  | 175 x 100 x 81
用户 存储区 | 程序存储区 数据存储区 保持存储区 | 12K字节 8K字节 10K字节 |  | 18K字节 12K字节 10K字节 |  | 24K字节 16K字节 10K字节 |  | 30K字节 20K字节 10K字节
本机数字量I/O |  | 12输入/8输出 |  | 18输入/12输出 |  | 24输入/16输出 |  | 36输入/24输出
过程映像区大小 |  | 256位输入(I)/256 位输出(Q)
位存储区大小 |  | 32字节
信号板扩展 |  | 1 |  | 1 |  | 1 |  | 1
信号模块扩展 |  | 6 |  | 6 |  | 6 |  | 6
高速计数器 |  | 6（全部） |  | 6（全部） |  | 6（全部） |  | 6（全部）
——单相 |  | 4 @ 200 KHz +2 @30 KHz |  | 5 @ 200 KHz +1 @30 KHz |  | 4 @ 200 KHz +2 @30 KHz |  | 4 @ 200 KHz +2 @30 KHz
——A/B相 |  | 2 @ 100 KHz+ 2@20Kz |  | 3 @ 100 KHz+ 1@20Kz |  | 2 @ 100 KHz+ 2@20Kz |  | 2 @ 100 KHz+ 2@20Kz
高速脉冲输出 |  | -- | 2 @ 100 KHz | -- | 3 @ 100 KHz | 3 @ 100 KHz | -- | 3 @ 100 KHz |
定时器 |  | 非保持（TON,TOF）：192 保持（TONR）：64
计数器 |  | 256
循环中断 |  | 2（1ms精度）
脉冲捕捉输入 |  | 12 （加信号板 14 ） |  | 14 （加信号板 16） |  | 14 （加信号板 16） |  | 14 （加信号板 16）
存储卡 |  | microSD卡（可选） |  | microSD卡（可选） |  | microSD卡（可选） |  | microSD卡（可选）
实时时钟精度 |  | ± 120 秒 / 月 |  | ± 120 秒 / 月 |  | ± 120 秒 / 月 |  | ± 120 秒 / 月
实时时钟保持时间 |  | 7天 典型值 / 6天 最小 在25摄氏度 靠超级电容保持 |  | 7天 典型值 / 6天 最小 在25摄氏度 靠超级电容保持 |  | 7天 典型值 / 6天 最小 在25摄氏度 靠超级电容保持 |  | 7天 典型值 / 6天 最小 在25摄氏度 靠超级电容保持
PID 回路 |  | 8路
供电能力（mA） |  | 最大 1400 mA (5 V DC) | 最大 1400 mA (5 V DC) | 最大 1400 mA (5 V DC) | 最大 1400 mA (5 V DC) | 最大 1400 mA (5 V DC) |  | 最大 1400 mA (5 V DC)
 |  | 最大 300 mA (传感器电源) | 最大 300 mA (传感器电源) | 最大 300 mA (传感器电源) | 最大 300 mA (传感器电源) | 最大 300 mA (传感器电源) |  | 最大 300 mA (传感器电源)
工作环境要求 |  | 0°-55°，水平安装 0°-45°，垂直安装 相对湿度95%，不结露；大气压1080 至 795 hPa（相当于海拔 -1000 到 2000 m）

CPU 性能 | 全系列CPU
布尔执行速度 | 0.15 μs / 指令
Move Word 执行速度 | 1.2 μs / 指令
Real Math 执行速度 | 3.6 μs / 指令

标准型CPU 通信/连接 | CPU SR20 AC/DC/Relay | CPU ST20 DC/DC/DC | CPU SR30 AC/DC/Relay | CPU ST30 DC/DC/DC | CPU ST40 DC/DC/DC | CPU SR40 AC/DC/Relay | CPU ST60 DC/DC/DC | CPU SR60 AC/DC/Relay
通信口 | 以太网：1
 | 串口：1 （RS485）
 | 附加串口：1 (RS232/RS485 可选) |  | 附加串口：1 (RS232/RS485 可选) |  | 附加串口：1 (RS232/RS485 可选) |  | 附加串口：1 (RS232/RS485 可选)
速率 | 以太网：10/100 Mb/s
 | RS485 PPI 协议： 9600,19200,187500 b/s
 | RS485自由口通讯：1200 到 115200 b/s
HMI 设备 | 每个端口 4 个： RS485，SB CM01（RS232/485 信号板） 每个端口 8 个：以太网
编程设备（PG） | 以太网：1
连接资源 | 以太网： 1 个供编程设备使用、8 个供 HMI 使用、8 个 主动 GET/PUT 连接、8 个被动 GET/PUT 连接； 支持开放式以太网通信，8个主动连接、8个被动连接；支持PROFINET通信，8个连接，仅作为PROFINET IO控制器。 RS485： 每个端口 4 个供 HMI 使用的连接 EM DP01 模块：支持Profibus DP 从站和MPI从站功能。MPI连接资源为6个，其中1个连接资源预留给OP通信。
隔离（从外部信号到 PLC 逻辑） | 以太网：变压器隔离，1500 VDC
 | RS485：无
通信电缆类型 | 以太网：CAT5e 屏蔽
 | RS485：PROFIBUS 网络电缆

注意，目前紧凑型CPU没有V2.4固件版本，相关紧凑型CPU的参数，参考V2.3版技数参数。


技术参数

SIMATIC S7-200 SMART PLC

S7-200 SMART PLC 主要性能参数

标准型CPU 参数 |  | CPU SR20 AC/DC/Relay | CPU ST20 DC/DC/DC | CPU SR30 AC/DC/Relay | CPU ST30 DC/DC/DC | CPU ST40 DC/DC/DC | CPU SR40 AC/DC/Relay | CPU ST60 DC/DC/DC | CPU SR60 AC/DC/Relay
外形尺寸（mm） |  | 90 x 100 x 81 |  | 110 x 100 x 81 |  | 125 x 100 x 81 |  | 175 x 100 x 81
用户 存储区 | 程序存储区 数据存储区 保持存储区 | 12K字节 8K字节 10K字节 |  | 18K字节 12K字节 10K字节 |  | 24K字节 16K字节 10K字节 |  | 30K字节 20K字节 10K字节
本机数字量I/O |  | 12输入/8输出 |  | 18输入/12输出 |  | 24输入/16输出 |  | 36输入/24输出
过程映像区大小 |  | 256位输入(I)/256 位输出(Q)
位存储区大小 |  | 32字节
信号板扩展 |  | 1 |  | 1 |  | 1 |  | 1
信号模块扩展 |  | 6 |  | 6 |  | 6 |  | 6
高速计数器 |  | 6（全部） |  | 6（全部） |  | 6（全部） |  | 6（全部）
——单相 |  | 4 @ 200 KHz +2 @30 KHz |  | 5 @ 200 KHz +1 @30 KHz |  | 4 @ 200 KHz +2 @30 KHz |  | 4 @ 200 KHz +2 @30 KHz
——A/B相 |  | 2 @ 100 KHz+ 2@20Kz |  | 3 @ 100 KHz+ 1@20Kz |  | 2 @ 100 KHz+ 2@20Kz |  | 2 @ 100 KHz+ 2@20Kz
高速脉冲输出 |  | -- | 2 @ 100 KHz | -- | 3 @ 100 KHz | 3 @ 100 KHz | -- | 3 @ 100 KHz |
定时器 |  | 非保持（TON,TOF）：192 保持（TONR）：64
计数器 |  | 256
循环中断 |  | 2（1ms精度）
脉冲捕捉输入 |  | 12 （加信号板 14 ） |  | 14 （加信号板 16） |  | 14 （加信号板 16） |  | 14 （加信号板 16）
存储卡 |  | microSD卡（可选） |  | microSD卡（可选） |  | microSD卡（可选） |  | microSD卡（可选）
实时时钟精度 |  | ± 120 秒 / 月 |  | ± 120 秒 / 月 |  | ± 120 秒 / 月 |  | ± 120 秒 / 月
实时时钟保持时间 |  | 7天 典型值 / 6天 最小 在25摄氏度 靠超级电容保持 |  | 7天 典型值 / 6天 最小 在25摄氏度 靠超级电容保持 |  | 7天 典型值 / 6天 最小 在25摄氏度 靠超级电容保持 |  | 7天 典型值 / 6天 最小 在25摄氏度 靠超级电容保持
PID 回路 |  | 8路
供电能力（mA） |  | 最大 1400 mA (5 V DC) | 最大 1400 mA (5 V DC) | 最大 1400 mA (5 V DC) | 最大 1400 mA (5 V DC) | 最大 1400 mA (5 V DC) |  | 最大 1400 mA (5 V DC)
 |  | 最大 300 mA (传感器电源) | 最大 300 mA (传感器电源) | 最大 300 mA (传感器电源) | 最大 300 mA (传感器电源) | 最大 300 mA (传感器电源) |  | 最大 300 mA (传感器电源)
工作环境要求 |  | 0°-55°，水平安装 0°-45°，垂直安装 相对湿度95%，不结露；大气压1080 至 795 hPa（相当于海拔 -1000 到 2000 m）
经济型CPU 参数 |  | CPU CR20s AC/DC/Relay | CPU CR30s AC/DC/Relay | CPU CR40s AC/DC/Relay | CPU CR60s AC/DC/Relay
外形尺寸（mm） |  | 90 x 100 x 81 | 110 x 100 x 81 | 125 x 100 x 81 | 175 x 100 x 81
用户 存储区 | 程序存储区 数据存储区 保持存储区 | 12K字节 8K字节 2K字节 | 12K字节 8K字节 2K字节 | 12K字节 8K字节 2K字节 | 12K字节 8K字节 2K字节
本机数字量I/O |  | 12输入/8输出 | 18输入/12输出 | 24输入/16输出 | 36输入/24输出
过程映像区大小 |  | 256位输入(I)/256 位输出(Q)
位存储区大小 |  | 32字节
信号板扩展 |  | -- | -- | -- | --
信号模块扩展 |  | -- | -- | -- | --
高速计数器 |  | 4（全部）
——单相 |  | 4 @100 KHz | 4 @ 100 KHz | 4 @ 100 KHz | 4 @ 100 KHz
——A/B相 |  | 2 @ 50 KHz | 2 @ 50 KHz | 2 @ 50 KHz | 2 @ 50 KHz
高速脉冲输出 |  | -- | -- | -- |
定时器 |  | 非保持（TON,TOF）：192 保持（TONR）：64
计数器 |  | 256
循环中断 |  | 2（1ms精度）
脉冲捕捉输入 |  | 14 | 14 | 14 | 14
存储卡 |  | -- | -- | -- | --
实时时钟精度 |  | -- | -- | -- | --
实时时钟保持时间 |  | -- | -- | -- | --
PID 回路 |  | 8路
供电能力（mA） |  | -- | -- | -- | --
 |  | -- | -- | -- | --
工作环境要求 |  | 0°-55°，水平安装 0°-45°，垂直安装 相对湿度95%，不结露；大气压1080 至 795 hPa（相当于海拔 -1000 到 2000 m）

CPU 性能 | 全系列CPU
布尔执行速度 | 0.15 μs / 指令
Move Word 执行速度 | 1.2 μs / 指令
Real Math 执行速度 | 3.6 μs / 指令

标准型CPU 通信/连接 | CPU SR20 AC/DC/Relay | CPU ST20 DC/DC/DC | CPU SR30 AC/DC/Relay | CPU ST30 DC/DC/DC | CPU ST40 DC/DC/DC | CPU SR40 AC/DC/Relay | CPU ST60 DC/DC/DC | CPU SR60 AC/DC/Relay
通信口 | 以太网：1
 | 串口：1 （RS485）
 | 附加串口：1 (RS232/RS485 可选) |  | 附加串口：1 (RS232/RS485 可选) |  | 附加串口：1 (RS232/RS485 可选) |  | 附加串口：1 (RS232/RS485 可选)
速率 | 以太网：10/100 Mb/s
 | RS485 PPI 协议： 9600,19200,187500 b/s
 | RS485自由口通讯：1200 到 115200 b/s
HMI 设备 | 每个端口 4 个： RS485，SB CM01（RS232/485 信号板） 每个端口 8 个：以太网
编程设备（PG） | 以太网：1
连接资源 | 以太网： 1 个供编程设备使用、8 个供 HMI 使用、8 个 主动 GET/PUT 连接、8 个被动 GET/PUT 连接；支持开放式以太网通信，8个主动连接、8个被动连接 RS485： 每个端口 4 个供 HMI 使用的连接 EM DP01 模块：支持Profibus DP 从站和MPI从站功能。MPI连接资源为6个，其中1个连接资源预留给OP通信。
隔离（从外部信号到 PLC 逻辑） | 以太网：变压器隔离，1500 VDC
 | RS485：无
通信电缆类型 | 以太网：CAT5e 屏蔽
 | RS485：PROFIBUS 网络电缆

紧凑型CPU 通信/连接 | CPU CR20s AC/DC/Relay | CPU CR30s AC/DC/Relay | CPU CR40s AC/DC/Relay | CPU CR60s AC/DC/Relay
通信口 | 串口：1 （RS485）
速率 | RS485 PPI 协议： 9600,19200,187500 b/s
 | RS485自由口通讯：1200 到 115200 b/s
HMI 设备 | 4 个
编程设备（PG） | 1个
连接资源 | RS485： 每个端口 4 个供 HMI 使用的连接
通信电缆类型 | PROFIBUS 网络电缆


技术参数

SIMATIC S7-200 SMART PLC

S7-200 SMART PLC 主要性能参数

CPU 参数 |  | CPU SR20 AC/DC/Relay | CPU ST20 DC/DC/DC | CPU SR30 AC/DC/Relay | CPU ST30 DC/DC/DC | CPU ST40 DC/DC/DC | CPU SR40 AC/DC/Relay | CPU CR40 AC/DC/Relay | CPU ST60 DC/DC/DC | CPU SR60 AC/DC/Relay | CPU CR60 AC/DC/Relay
外形尺寸（mm） |  | 90 x 100 x 81 |  | 110 x 100 x 81 |  | 125 x 100 x 81 |  |  | 175 x 100 x 81
用户 存储区 | 程序存储区 数据存储区 保持存储区 | 12K字节 8K字节 10K字节 |  | 18K字节 12K字节 10K字节 |  | 24K字节 16K字节 10K字节 |  | 12K字节 8K字节 10K字节 | 30K字节 20K字节 10K字节 |  | 12K字节 8K字节 10K字节
本机数字量I/O |  | 12输入/8输出 |  | 18输入/12输出 |  | 24输入/16输出 |  |  | 36输入/24输出
过程映像区大小 |  | 256位输入(I)/256 位输出(Q)
位存储区大小 |  | 32字节
信号板扩展 |  | 1 |  | 1 |  | 1 |  | -- | 1 |  | --
信号模块扩展 |  | 6 |  | 6 |  | 6 |  | -- | 6 |  | --
高速计数器 |  | 4（全部） |  | 4（全部） |  | 4（全部） |  | 4（全部） | 4（全部）
——单相 |  | 4 @ 200 KHz |  | 4 @ 200 KHz |  | 4 @ 200 KHz |  | 4 @ 100 KHz | 4 @ 200 KHz |  | 4 @ 100 KHz
——A/B相 |  | 2 @ 100 KHz |  | 2 @ 100 KHz |  | 2 @ 100 KHz |  | 2 @ 50 KHz | 2 @ 100 KHz |  | 2 @ 50 KHz
高速脉冲输出 |  | -- | 2 @ 100 KHz | -- | 3 @ 100 KHz | 3 @ 100 KHz | -- | -- | 3 @ 100 KHz |  | --
定时器 |  | 非保持（TON,TOF）：192 保持（TONR）：64
计数器 |  | 256
循环中断 |  | 2（1ms精度）
脉冲捕捉输入 |  | 12 （加信号板 14 ） |  | 14 （加信号板 16） |  | 14 （加信号板 16） |  | 14 | 14 （加信号板 16） |  | 14
存储卡 |  | microSD卡（可选） |  | microSD卡（可选） |  | microSD卡（可选） |  | -- | microSD卡（可选） |  | --
实时时钟精度 |  | ± 120 秒 / 月 |  | ± 120 秒 / 月 |  | ± 120 秒 / 月 |  | -- | ± 120 秒 / 月 |  | --
实时时钟保持时间 |  | 7天 典型值 / 6天 最小 在25摄氏度 靠超级电容保持 |  | 7天 典型值 / 6天 最小 在25摄氏度 靠超级电容保持 |  | 7天 典型值 / 6天 最小 在25摄氏度 靠超级电容保持 |  | -- | 7天 典型值 / 6天 最小 在25摄氏度 靠超级电容保持 |  | --
PID 回路 |  | 8路
供电能力（mA） |  | 最大 1400 mA (5 V DC) | 最大 1400 mA (5 V DC) | 最大 1400 mA (5 V DC) | 最大 1400 mA (5 V DC) | 最大 1400 mA (5 V DC) |  | -- | 最大 1400 mA (5 V DC) |  | --
 |  | 最大 300 mA (传感器电源) | 最大 300 mA (传感器电源) | 最大 300 mA (传感器电源) | 最大 300 mA (传感器电源) | 最大 300 mA (传感器电源) |  | 最大 300 mA (传感器电源) | 最大 300 mA (传感器电源) |  | 最大 300 mA (传感器电源)
工作环境要求 |  | 0°-55°，水平安装 0°-55°，水平安装 相对湿度95%，不结露；大气压1080 至 795 hPa（相当于海拔 -1000 到 2000 m）

CPU 性能 | 全系列CPU
布尔执行速度 | 0.15 μs / 指令
Move Word 执行速度 | 1.2 μs / 指令
Real Math 执行速度 | 3.6 μs / 指令

CPU 通信/连接 | CPU SR20 AC/DC/Relay | CPU ST20 DC/DC/DC | CPU SR30 AC/DC/Relay | CPU ST30 DC/DC/DC | CPU ST40 DC/DC/DC | CPU SR40 AC/DC/Relay | CPU CR40 AC/DC/Relay | CPU ST60 DC/DC/DC | CPU SR60 AC/DC/Relay | CPU CR60 AC/DC/Relay
通信口 | 以太网：1
 | 串口：1 （RS485）
 | 附加串口：1 (RS232/RS485 可选) |  | 附加串口：1 (RS232/RS485 可选) |  | 附加串口：1 (RS232/RS485 可选) |  | -- | 附加串口：1 (RS232/RS485 可选) |  | --
速率 | 以太网：10/100 Mb/s
 | RS485 PPI 协议： 9600,19200,187500 b/s
 | RS485自由口通讯：1200 到 115200 b/s
HMI 设备 | 每个端口 4 个： RS485，SB CM01（RS232/485 信号板） 每个端口 8 个：以太网
编程设备（PG） | 以太网：1
连接资源 | 以太网： 1 个供编程设备使用、8 个供 HMI 使用、8 个 主动 GET/PUT 连接、8 个被动 GET/PUT 连接；支持开放式以太网通信，8个主动连接、8个被动连接 RS485： 每个端口 4 个供 HMI 使用的连接 EM DP01 模块：支持Profibus DP 从站和MPI从站功能。MPI连接资源为6个，其中1个连接资源预留给OP通信。
隔离（从外部信号到 PLC 逻辑） | 以太网：变压器隔离，1500 VDC
 | RS485：无
通信电缆类型 | 以太网：CAT5e 屏蔽
 | RS485：PROFIBUS 网络电缆


技术参数

SIMATIC S7-200 SMART PLC

S7-200 SMART PLC 主要性能参数

CPU 参数 |  | CPU SR20 AC/DC/Relay | CPU ST20 DC/DC/DC | CPU SR30 AC/DC/Relay | CPU ST30 DC/DC/DC | CPU ST40 DC/DC/DC | CPU SR40 AC/DC/Relay | CPU CR40 AC/DC/Relay | CPU ST60 DC/DC/DC | CPU SR60 AC/DC/Relay | CPU CR60 AC/DC/Relay
外形尺寸（mm） |  | 90 x 100 x 81 |  | 110 x 100 x 81 |  | 125 x 100 x 81 |  |  | 175 x 100 x 81
用户 存储区 | 程序存储区 数据存储区 保持存储区 | 12K字节 8K字节 10K字节 |  | 18K字节 12K字节 10K字节 |  | 24K字节 16K字节 10K字节 |  | 12K字节 8K字节 10K字节 | 30K字节 20K字节 10K字节 |  | 12K字节 8K字节 10K字节
本机数字量I/O |  | 12输入/8输出 |  | 18输入/12输出 |  | 24输入/16输出 |  |  | 36输入/24输出
过程映像区大小 |  | 256位输入(I)/256 位输出(Q)
位存储区大小 |  | 32字节
信号板扩展 |  | 1 |  | 1 |  | 1 |  | -- | 1 |  | --
信号模块扩展 |  | 6 |  | 6 |  | 6 |  | -- | 6 |  | --
高速计数器 |  | 4（全部） |  | 4（全部） |  | 4（全部） |  | 4（全部） | 4（全部）
——单相 |  | 4 @ 200 KHz |  | 4 @ 200 KHz |  | 4 @ 200 KHz |  | 4 @ 100 KHz | 4 @ 200 KHz |  | 4 @ 100 KHz
——A/B相 |  | 2 @ 100 KHz |  | 2 @ 100 KHz |  | 2 @ 100 KHz |  | 2 @ 50 KHz | 2 @ 100 KHz |  | 2 @ 50 KHz
高速脉冲输出 |  | -- | 2 @ 100 KHz | -- | 3 @ 100 KHz | 3 @ 100 KHz | -- | -- | 3 @ 100 KHz |  | --
定时器 |  | 非保持（TON,TOF）：192 保持（TONR）：64
计数器 |  | 256
循环中断 |  | 2（1ms精度）
脉冲捕捉输入 |  | 12 （加信号板 14 ） |  | 14 （加信号板 16） |  | 14 （加信号板 16） |  | 14 | 14 （加信号板 16） |  | 14
存储卡 |  | microSD卡（可选） |  | microSD卡（可选） |  | microSD卡（可选） |  | -- | microSD卡（可选） |  | --
实时时钟精度 |  | ± 120 秒 / 月 |  | ± 120 秒 / 月 |  | ± 120 秒 / 月 |  | -- | ± 120 秒 / 月 |  | --
实时时钟保持时间 |  | 7天 典型值 / 6天 最小 在25摄氏度 靠超级电容保持 |  | 7天 典型值 / 6天 最小 在25摄氏度 靠超级电容保持 |  | 7天 典型值 / 6天 最小 在25摄氏度 靠超级电容保持 |  | -- | 7天 典型值 / 6天 最小 在25摄氏度 靠超级电容保持 |  | --
PID 回路 |  | 8路
供电能力（mA） |  | 最大 1400 mA (5 V DC) | 最大 1400 mA (5 V DC) | 最大 1400 mA (5 V DC) | 最大 1400 mA (5 V DC) | 最大 1400 mA (5 V DC) |  | -- | 最大 1400 mA (5 V DC) |  | --
 |  | 最大 300 mA (传感器电源) | 最大 300 mA (传感器电源) | 最大 300 mA (传感器电源) | 最大 300 mA (传感器电源) | 最大 300 mA (传感器电源) |  | 最大 300 mA (传感器电源) | 最大 300 mA (传感器电源) |  | 最大 300 mA (传感器电源)
工作环境要求 |  | 0°-55°，水平安装 0°-55°，水平安装 相对湿度95%，不结露;大气压1080 至 795 hPa（相当于海拔 -1000 到 2000 m）

CPU 性能 | 全系列CPU
布尔执行速度 | 0.15 μs / 指令
Move Word 执行速度 | 1.2 μs / 指令
Real Math 执行速度 | 3.6 μs / 指令

CPU 通信/连接 | CPU SR20 AC/DC/Relay | CPU ST20 DC/DC/DC | CPU SR30 AC/DC/Relay | CPU ST30 DC/DC/DC | CPU ST40 DC/DC/DC | CPU SR40 AC/DC/Relay | CPU CR40 AC/DC/Relay | CPU ST60 DC/DC/DC | CPU SR60 AC/DC/Relay | CPU CR60 AC/DC/Relay
通信口 | 以太网：1
 | 串口：1 （RS485）
 | 附加串口：1 (RS232/RS485 可选) |  | 附加串口：1 (RS232/RS485 可选) |  | 附加串口：1 (RS232/RS485 可选) |  | -- | 附加串口：1 (RS232/RS485 可选) |  | --
速率 | 以太网：10/100 Mb/s
 | RS485 PPI 协议： 9600,19200,187500 b/s
 | RS485自由口通讯：1200 到 115200 b/s
HMI 设备 | 每个端口 4 个： RS485，SB CM01（RS232/485 信号板） 每个端口 8 个：以太网
编程设备（PG） | 以太网：1
连接资源 | 以太网： 1 个供编程设备使用、8 个供 HMI 使用、8 个 主动 GET/PUT 连接、8 个被动 GET/PUT 连接 RS485： 每个端口 4 个供 HMI 使用的连接 EM DP01 模块：支持Profibus DP 从站和MPI从站功能。MPI连接资源为6个，其中1个连接资源预留给OP通信。
隔离（从外部信号到 PLC 逻辑） | 以太网：变压器隔离，1500 VDC
 | RS485：无
通信电缆类型 | 以太网：CAT5e 屏蔽
 | RS485：PROFIBUS 网络电缆


技术参数

SIMATIC S7-200 SMART PLC

S7-200 SMART PLC 主要性能参数

CPU 参数 |  | CPU SR20 AC/DC/Relay | CPU ST20 DC/DC/DC | CPU SR30 AC/DC/Relay | CPU ST30 DC/DC/DC | CPU ST40 DC/DC/DC | CPU SR40 AC/DC/Relay | CPU CR40 AC/DC/Relay | CPU ST60 DC/DC/DC | CPU SR60 AC/DC/Relay | CPU CR60 AC/DC/Relay
外形尺寸（mm） |  | 90 x 100 x 81 |  | 110 x 100 x 81 |  | 125 x 100 x 81 |  |  | 175 x 100 x 81
用户 存储区 | 程序存储区 数据存储区 保持存储区 | 12K字节 8K字节 10K字节 |  | 18K字节 12K字节 10K字节 |  | 24K字节 16K字节 10K字节 |  | 12K字节 8K字节 10K字节 | 30K字节 20K字节 10K字节 |  | 12K字节 8K字节 10K字节
本机数字量I/O |  | 12输入/8输出 |  | 18输入/12输出 |  | 24输入/16输出 |  |  | 36输入/24输出
过程映像区大小 |  | 256位输入(I)/256 位输出(Q)
位存储区大小 |  | 32字节
信号板扩展 |  | 1 |  | 1 |  | 1 |  | -- | 1 |  | --
信号模块扩展 |  | 6 |  | 6 |  | 6 |  | -- | 6 |  | --
高速计数器 |  | 4（全部） |  | 4（全部） |  | 4（全部） |  | 4（全部） | 4（全部）
——单相 |  | 4 @ 200 KHz |  | 4 @ 200 KHz |  | 4 @ 200 KHz |  | 4 @ 100 KHz | 4 @ 200 KHz |  | 4 @ 100 KHz
——A/B相 |  | 2 @ 100 KHz |  | 2 @ 100 KHz |  | 2 @ 100 KHz |  | 2 @ 50 KHz | 2 @ 100 KHz |  | 2 @ 50 KHz
高速脉冲输出 |  | -- | 2 @ 100 KHz | -- | 3 @ 100 KHz | 3 @ 100 KHz | -- | -- | 3 @ 100 KHz |  | --
定时器 |  | 非保持（TON,TOF）：192 保持（TONR）：64
计数器 |  | 256
循环中断 |  | 2（1ms精度）
脉冲捕捉输入 |  | 12 （加信号板 14 ） |  | 14 （加信号板 16） |  | 14 （加信号板 16） |  | 14 | 14 （加信号板 16） |  | 14
存储卡 |  | microSD卡（可选） |  | microSD卡（可选） |  | microSD卡（可选） |  | -- | microSD卡（可选） |  | --
实时时钟精度 |  | ± 120 秒 / 月 |  | ± 120 秒 / 月 |  | ± 120 秒 / 月 |  | -- | ± 120 秒 / 月 |  | --
实时时钟保持时间 |  | 7天 典型值 / 6天 最小 在25摄氏度 靠超级电容保持 |  | 7天 典型值 / 6天 最小 在25摄氏度 靠超级电容保持 |  | 7天 典型值 / 6天 最小 在25摄氏度 靠超级电容保持 |  | -- | 7天 典型值 / 6天 最小 在25摄氏度 靠超级电容保持 |  | --
PID 回路 |  | 8路
供电能力（mA） |  | 最大 1110 mA (5 V DC) | 最大 740 mA (5 V DC) | 最大 740 mA (5 V DC) | 最大 740 mA (5 V DC) | 最大 740 mA (5 V DC) |  | -- | 最大 740 mA (5 V DC) |  | --
 |  | 最大 300 mA (传感器电源) | 最大 300 mA (传感器电源) | 最大 300 mA (传感器电源) | 最大 300 mA (传感器电源) | 最大 300 mA (传感器电源) |  | 最大 300 mA (传感器电源) | 最大 300 mA (传感器电源) |  | 最大 300 mA (传感器电源)
工作环境要求 |  | 0°-55°，水平安装 0°-55°，水平安装 相对湿度95%，不结露;大气压1080 至 795 hPa（相当于海拔 -1000 到 2000 m）

CPU 性能 | 全系列CPU
布尔执行速度 | 0.15 μs / 指令
Move Word 执行速度 | 1.2 μs / 指令
Real Math 执行速度 | 3.6 μs / 指令

CPU 通信/连接 | CPU SR20 AC/DC/Relay | CPU ST20 1 DC/DC/DC | CPU SR30 1 AC/DC/Relay | CPU ST30 1 DC/DC/DC | CPU ST40 DC/DC/DC | CPU SR40 AC/DC/Relay | CPU CR40 AC/DC/Relay | CPU ST60 DC/DC/DC | CPU SR60 AC/DC/Relay | CPU CR60 1 AC/DC/Relay
通信口 | 以太网：1
 | 串口：1 （RS485）
 | 附加串口：1 (RS232/RS485 可选) |  | 附加串口：1 (RS232/RS485 可选) |  | 附加串口：1 (RS232/RS485 可选) |  | -- | 附加串口：1 (RS232/RS485 可选) |  | --
速率 | 以太网：10/100 Mb/s
 | RS485 PPI 协议： 9600,19200,187500 b/s
 | RS485自由口通讯：1200 到 115200 b/s
HMI 设备 | 每个端口 4 个： RS485，SB CM01（RS232/485 信号板） 每个端口 8 个：以太网
编程设备（PG） | 以太网：1
连接资源 | 以太网： 1 个供编程设备使用、8 个供 HMI 使用、8 个 主动 GET/PUT 连接 1 、8 个被动 GET/PUT 连接 1 RS485： 每个端口 4 个供 HMI 使用的连接
隔离（从外部信号到 PLC 逻辑） | 以太网：变压器隔离，1500 VDC
 | RS485：无
通信电缆类型 | 以太网：CAT5e 屏蔽
 | RS485：PROFIBUS 网络电缆


技术参数

SIMATIC S7-200 SMART PLC

S7-200 SMART PLC 主要性能参数

CPU 参数 |  | CPU SR20 AC/DC/Relay | CPU ST40 DC/DC/DC | CPU SR40 AC/DC/Relay | CPU CR40 AC/DC/Relay | CPU ST60 DC/DC/DC | CPU SR60 AC/DC/Relay
外形尺寸（mm） |  | 90 x 100 x 81 | 125 x 100 x 81 |  |  | 175 x 100 x 81
用户 存储区 | 程序存储区 数据存储区 保持存储区 | 12K字节 8K字节 10K字节 | 24K字节 16K字节 10K字节 |  | 12K字节 8K字节 -- | 30K字节 20K字节 10K字节
本机数字量I/O |  | 12输入/8输出 | 24输入/16输出 |  |  | 36输入/24输出
过程映像区大小 |  | 256位输入(I)/ 256位输出(Q) | 256位输入(I)/256 位输出(Q) |  |  | 256位输入(I)/256 位输出(Q)
位存储区大小 |  | 32字节 | 32 字节 |  |  | 32 字节
信号板扩展 |  | 1 | 1 |  | -- | 1
信号模块扩展 |  | 4 | 4 |  | -- | 4
高速计数器 |  | 4（全部） | 4（全部） |  | 4（全部） | 4（全部）
——单相 |  | 4 @ 60 KHz | 4 @ 60 KHz |  | 4 @ 30 KHz | 4 @ 60 KHz
——A/B相 |  | 2 @ 40 KHz | 2 @ 40 KHz |  | 2 @ 20 KHz | 2 @ 40 KHz
高速脉冲输出 |  | -- | 3 @ 100 KHz | -- | -- | 3 @ 100 KHz | --
定时器 |  | 非保持（TON,TOF）：192 保持（TONR）：64
计数器 |  | 256
循环中断 |  | 2（1ms精度）
脉冲捕捉输入 |  | 12 （加信号板 14 ） | 14 （加信号板 16） |  | 14 | 14 （加信号板 16）
电池卡 |  | --
存储卡 |  | microSD卡（可选） | microSD卡（可选） |  | -- | microSD卡（可选）
实时时钟精度 |  | ± 120 秒 / 月 | 120 秒 / 月 |  | -- | 120 秒 / 月
实时时钟保持时间 |  | 7天 典型值 / 6天 最小 在25摄氏度 靠超级电容保持 | 7天 典型值 / 6天 最小 在25摄氏度 靠超级电容保持 |  | -- | 7天 典型值 / 6天 最小 在25摄氏度 靠超级电容保持
PID 回路 |  | 8路 | 8路 |  | 8路 | 8路
供电能力（mA） |  | 最大 740 mA (5 V DC) | 最大 740 mA (5 V DC) |  | -- | 最大 740 mA (5 V DC)
 |  | 最大 300 mA (传感器电源) | 最大 300 mA (传感器电源) |  | 最大 300 mA (传感器电源) | 最大 300 mA (传感器电源)
工作环境要求 |  | 0°-55°，水平安装 0°-55°，水平安装 相对湿度95%，不结露

CPU 性能 | CPU SR20 AC/DC/Relay | CPU ST40 DC/DC/DC | CPU SR40 AC/DC/Relay | CPU CR40 AC/DC/Relay | CPU ST60 DC/DC/DC | CPU SR60 AC/DC/Relay
布尔执行速度 | 0.15 μs / 指令
Move Word 执行速度 | 1.2 μs / 指令
Real Math 执行速度 | 3.6 μs / 指令

CPU 通信/连接 | SR20 | CPU ST40 DC/DC/DC | CPU SR40 AC/DC/Relay | CPU CR40 AC/DC/Relay | CPU ST60 DC/DC/DC | CPU SR60 AC/DC/Relay
通信口 | 以太网：1
 | 串口：1 （RS485）
 | 附加串口：1（在可选 RS232/RS485 信号板上） | 附加串口：1（在可选 RS232/RS485 信号板上） |  | -- | 附加串口：1（在可选 RS232/RS485 信号板上）
速率 | 以太网：10/100 Mb/s
 | RS485 系统协议： 9600,19200,187500 b/s
 | RS485自由口：1200 到 115200 b/s
HMI 设备 | 4/口
编程设备（PG） | 以太网：1
连接资源 | 以太网：1 编程设备， 4 HMI
 | RS485：4 HMI
隔离（从外部信号到 PLC 逻辑） | 以太网：变压器隔离，1500 VAC
 | RS485：无
通信电缆类型 | 以太网：CAT5e 屏蔽
 | RS485：PROFIBUS 网络电缆


S7-200 SMART 扩展模块

为更好地满足应用要求，S7-200 SMART 系列包括各种扩展模块和信号板。 可以将这些扩展模块与标准 CPU 型号（SR20\ST20、SR30\ST30、SR40\ST40、或 SR60\ST60）一起使用，给 CPU增加附加功能。 下表列出了当前提供的扩展模块。 有关特定模块的详细信息，请参见S7-200 SMART系统手册：技术规范 。
注意：
紧凑型CPU不支持扩展功能。

表1.SMART 扩展模块基本信息

类型 | 仅输入 | 仅输出 | 输入/输出组合 | 其他
数字信号模块 | 8 个直流输入 | 8 个直流输出 8 个继电器输出 | 8 个直流输入/8 个直流输出 8 个直流输入/8 个继电器输出 16 个直流输入/16 个直流输 16 个直流输入/16 个继电器输出 |
模拟信号模块 | 4 通道模拟量输入 2 通道 RTD输入 4通道TC输入 | 2 个模拟量输出 | 4 个模拟量输入/2 个模拟量输出 |
信号板 |  | 1 个模拟量输出 | 2 个直流输入/2 个直流输出 | RS485/RS232 BA 01电池板

S7-200 SMART CPU 附加的模块个数

表2.S7-200 SMART CPU V2.0 版本附加的模块个数

CPU型号 | 连接扩展模块数 | 信号板
CPU CR40 | -- | --
CPU CR60 | -- | --
CPU ST20/SR20 | 最多6个 | 1
CPU ST30/SR30 | 最多6个 | 1
CPU ST40/SR40 | 最多6个 | 1
CPU ST60/SR60 | 最多6个 | 1
CPU CR20s | -- | --
CPU CR30s | -- | --
CPU CR40s | -- | --
CPU CR60s | -- | --

注意：

1、模块连接个数还需要受CPU 5V电源预算限制
2、S7-200 SMART CPU V1.0 标准型CPU最多只支持4个扩展模块连接

常见问题

S7-200 SMART 是否有以太网、高速计数以及运动控制的扩展模块 ？

截止到V2.3版，以上功能的扩展模块均没有，如果想要确定是否有对应扩展模块可以查询最新的产品样本（网页右侧--资料下载--产品样本）。


CPU连接的模块个数

S7-200 SMART CPU 附加的模块个数

表1.S7-200 SMART CPU V2.0 版本附加的模块个数

CPU型号 | 连接扩展模块数 | 信号板
CPU CR40 | -- | --
CPU CR60 | -- | --
CPU ST20/SR20 | 最多6个 | 1
CPU ST30/SR30 | 最多6个 | 1
CPU ST40/SR40 | 最多6个 | 1
CPU ST60/SR60 | 最多6个 | 1
CPU CR20s | -- | --
CPU CR30s | -- | --
CPU CR40s | -- | --
CPU CR60s | -- | --

注意：

1、模块连接个数还需要受CPU 5V电源预算限制
2、S7-200 SMART CPU V1.0 标准型CPU最多只支持4个扩展模块连接


S7-200 SMART 扩展电缆

S7-200 SMART每个CPU系统只允许使用一条扩展电缆。扩展电缆的程度为1m。

订货号 | 6ES7288-6EC01-0AA0
电缆长度 | 1m
重量 | 80g
表1.S7-200 SMART扩展电缆

扩展电缆安装

可以将其安装在CPU和第一个EM之间，或者安装在任意两个EM之间，具体安装如下图所示：

图1. 扩展电缆安装图

在振动环境中安装扩展电缆 如果将扩展电缆连接在移动或固定不牢的模块上，电缆头连接处可能会慢慢松动。 为了提供额外的应力消除作用，应使用电缆扎带将电缆头固定在DIN导轨（或其它位置）上。安装期间拉拽电缆时应避免用力过猛。安装完成后，确保电缆与模块连接到位。


SB BA01电池板

S7-200 SMART SB BA01 电池板

CPU 紧凑型CPU没有内置的实时时钟，其他标准型CPU支持内置的实时时钟，CPU断电状态下可保持7天（典型值）。

S7-200 SMART SB BA01 电池板适用于实时时钟的长期备份。 它可插入 S7-200 SMART CPU（固件版本 2.0 及更高版本）正面的信号板插槽中。SB BA01 不能与较早版本的 CPU 一起使用。

必须将 BA01 添加到设备组态并将硬件配置下载到 CPU 中，BA01 电池板才能正常工作。

技术数据 | SB BA01 电池板
订货号 | 6ES7288-5BA01-0AA0
功耗 | 0.6W
电流消耗（5V DC） | 18mA
电流消耗（24 DC） | 无
电池保持时间 | 大约1年
电池类型 | CR1025
电池额定电压 | 3V
电池额定容量 | 30 mAH
表1.S7-200 SMART 电池板及电池

安装或更换SB BA01 电池板中的电池

SB BA01 只是电池板，电池未随 SB BA01 一起提供，必须由用户另行购买电池，电池型号为 CR1025。

要安装电池，请按以下步骤操作，如下图1所示：

1. 在 SB BA01 中，新电池的安装要求电池正极朝上，负极靠近印刷线路板。
2. 现在，已准备好将 SB BA01 安装到 CPU 中。

图1. 电池板安装电池

SB BA01 电池板诊断

电池板可通过指示灯，结合模板地址和诊断缓冲区进行诊断。

诊断 | SB BA01 电池板
临界电池电压 | < 2.5 V
电池诊断 | 低压指示灯： • 电池电压低会使 BA01 面板上的 LED 呈红色常亮状态。 • 诊断报警和/或电量不足时数字量输出状态可用
电池状态 | 提供的电池状态位 0 = 电池正常 1 = 电池电量低
电池状态更新 | 电池状态会在开机时更新，之后在 CPU 处于 RUN 模式时，每天更新一次。
表2.S7-200 SMART 电池板诊断

SB BA01 电池板提供的电池状态位可在"系统块"配置I7.0(固定，无法修改)查看。 如下图 2 所示：

图2. 电池板系统块设置

电池 (BA01) 信号板的相关操作

1.电池信号板上有一个红色 LED，可为用户提供有关电池健康状况的视觉指示。LED 亮表示电池电量不足。

2.无论系统块是否包含信号板的组态，CPU 都会自动采用信号板上的实时时钟并执行电池测试和电池健康状况 LED 操作。

3.借助电池信号板系统块组态中的相关选项，用户可以选择以诊断报警的方式报告电池电量不足，和/或在组态的设备映像寄存器输入字节的 LSB（例如，I7.0）位报告电池状态（1= 电池电量不足、0= 电池电量充足）。用户必须选择系统块组态中的电池信号板，这样才可以使用附加电池健康状况报告选项。

常见问题

1.S7-200SMART CPU 的数据断电保持功能是否需要 SB BA01电池板？

如果对S7-200SMART CPU V区 和 M 区数据设置了断电保持，无需再使用 SB BA01电池板，即可实现数据永久保持。 SS7-200 SMART池板适用于实时时钟的断电保持。

1.电池板插入 CPU 就能实现实时时钟的断电保持吗？

使用 SB BA01实现实时时钟的断电保持必须注意以下两点：

1. SB BA01只是电池板，必须由用户另行购买电池，电池型号为 CR1025。

2. 必须将SB BA01添加到设备组态并将硬件配置下载到 CPU 中，SB BA01电池板才能正常工作。

1.电池板能对实时时钟断电保持多长时间？

使用 SB BA01电池板和 CR1025 电池，能对实时时钟断电保持大约一年。可编程使用提供的电池状态位I7.0=1，检测电池电量低。

4.紧凑型CPU能否断电保持实时时钟？

1.CPU 型号 CPU CR20s、CPU CR30s、CPU CR40s 和 CPU CR60s的紧凑型CPU 无内置超级电容，所以实时时钟无电源缓冲，尽管用户可以使用READ_RTC 和 SET_RTC 指令设置日期/时间数据，但是当 紧凑型CPU断电并再次上电时，这些日期/时间数据会丢失，上电后日期时间数据会被初始化为2000年1月1日。
2.紧凑型CPU 不支持使用扩展模块、信号板或电池板。


S7-200 SMART 产品订货号

S7-200SMART CPU 订货号

产品选型或方案确认需求需要结合工艺、应用场合等因素综合考虑，最终方案或订货号请与西门子销售或经销商确认。本文列出的订货号仅供参考，不能作为最终订货依据！

表1. S7-200SMART CPU 订货号

CPU型号 | 规格 | 订货号
CPU SR20 | AC/DC/继电器 | 6ES7 288-1SR20-0AA0
CPU ST20 | DC/DC/DC | 6ES7 288-1ST20-0AA0
CPU CR20s | AC/DC/继电器 | 6ES7 288-1CR20-0AA1
CPU SR30 | AC/DC/继电器 | 6ES7 288-1SR30-0AA0
CPU ST30 | DC/DC/DC | 6ES7 288-1ST30-0AA0
CPU CR30s | AC/DC/继电器 | 6ES7 288-1CR30-0AA1
CPU ST40 | DC/DC/DC | 6ES7 288-1ST40-0AA0
CPU SR40 | AC/DC/继电器 | 6ES7 288-1SR40-0AA0
CPU CR40 (1) | AC/DC/继电器 | 6ES7 288-1CR40-0AA0
CPU CR40s | AC/DC/继电器 | 6ES7 288-1CR40-0AA1
CPU SR60 | AC/DC/继电器 | 6ES7 288-1SR60-0AA0
CPU ST60 | DC/DC/DC | 6ES7 288-1ST60-0AA0
CPU CR60 (1) | AC/DC/继电器 | 6ES7 288-1CR60-0AA0
CPU CR60s | AC/DC/继电器 | 6ES7 288-1CR60-0AA1

(1)目前不支持固件版本≥V2.3，具体请参考S7-200 SMART 系统手册以了解您的特定 CPU 型号和版本。

S7-200SMART EM 订货号

表2. S7-200SMART EM 订货号

EM型号 | 规格 | 订货号
EM DE08 | 8点数字量输入 | 6ES7 288-2DE08-0AA0
EM DT08 | 8点数字量输出 | 6ES7 288-2DT08-0AA0
EM DR08 | 8点继电器型数字量输出 | 6ES7 288-2DR08-0AA0
EM DT16 | 8点数字量输入/8点数字量输出 | 6ES7 288-2DT16-0AA0
EM DR16 | 8点数字量输入/8点继电器输出 | 6ES7 288-2DR16-0AA0
EM DT32 | 16点数字量输入/16点数字量输出 | 6ES7 288-2DT32-0AA0
EM DR32 | 16点数字量输入/16点继电器输出 | 6ES7 288-2DR32-0AA0
EM AE04 | 4点模拟量输入 | 6ES7 288-3AE04-0AA0
EM AQ02 | 2点模拟量输出 | 6ES7 288-3AQ02-0AA0
EM AM06 | 4点模拟量输入/2点模拟量输出 | 6ES7 288-3AM06-0AA0
EM AR02 | 2点16位RTD | 6ES7 288-3AR02-0AA0
EM AT04 | 4点16位TC | 6ES7 288-3AT04-0AA0
EM DP01 | Profibud-DP SMART | 6ES7 288-7PD01-0AA0
EM AM03 | 2点模拟量输入/1点模拟量输出 | 6ES7 288-3AM03-0AA0
EM AR04 | 4点16位RTD | 6ES7 288-3AR04-0AA0
EM AE08 | 8点模拟量输入 | 6ES7 288-3AE08-0AA0
EM AQ04 | 4点模拟量输出 | 6ES7 288-3AQ04-0AA0
EM DE16 | 16 点数字输入模块 | 6ES7288-2DE16-0AA0
EM QR16 | 16 点继电器型数字量输出模块 | 6ES7288-2QR16-0AA0
EM QT16 | 16 点晶体管型数字量输出模块 | 6ES7288-2QT16-0AA0

S7-200 SMART 信号板 订货号

表3. S7-200SMART 信号板 订货号

SB型号 | 规格 | 订货号
SB DT04 | 2点数字量输入/2点数字量输出 | 6ES7 288-5DT04-0AA0
SB AQ01 | 1点模拟量输出 | 6ES7 288-5AQ01-0AA0
SB CM01 | RS485/RS232 | 6ES7 288-5CM01-0AA0
SB BA01 (2) | 电池板 | 6ES7 288-5BA01-0AA0
SB AE01 | 1点模拟量输入 | 6ES7 288-5AE01-0AA0

(2)电池板插入 S7-200 SMART CPU（固件版本 V2.0 及更高版本）的信号板插槽中，购买 SB BA01 电池板时不含电池（类型 CR1025）。必须单独购买电池。

S7-200 SMART 前连接器订货号

表6. S7-200 SMART 前连接器订货号

端子排/连接器 | 规格 | 订货号
7针端子排 | 镀锡：7个端子，4个/包 | 6ES7 292-1AG30-0XA0
8针端子排 | 镀锡：8个端子，4个/包 | 6ES7 292-1AH30-0XA0
11针端子排 | 镀锡：11个端子，4个/包 | 6ES7 292-1AL30-0XA0
12针端子排 | 镀锡：12个端子，4个/包 | 6ES7 292-1AM30-0XA0
20针端子排 | 镀锡：20个端子，4个/包 | 6ES7 292-1AV30-0XA0
7针端子排 | 镀金：7个端子，4个/包 | 6ES7 292-1BG30-0XA0

上表中仅仅是不同类型举例，如果想要具体查询模块型号与端子排定义关系，需要查看S7-200 SMART系统手册 F.5 备件和其它硬件 章节

S7-200 SMART 网络总线连接器、电缆以及中继器订货号

表7.S7-200 SMART 网络总线连接器、电缆以及中继器订货号

中继器 | 规格 | 订货号
RS485 网络总线连接器 | 带编程端口，垂直电缆出口 | 6ES7 972-0BB12-0XA0
RS485 网络总线连接器 | 不带编程端口，垂直电缆出口 | 6ES7 972-0BA12-0XA0
RS485 网络总线连接器 | 带35°电缆出口，不带编程端口连接器 | 6ES7 972-0BA42-0XA0
RS485 网络总线连接器 | 带35°电缆出口，带编程端口连接器 | 6ES7 972-0BB42-0XA0
PROFIBUS 网络电缆 | 按米销售 | 6XV1830-0EH30
RS485 中继器 | IP 20，隔离 | 6ES7972-0AA02-0XA0

S7-200 SMART I/O扩展电缆订货号

电缆 | 规格 | 订货号
I/O扩展电缆 | 1m | 6ES7288-6EC01-0AA0
MPI电缆 | 5m | 6ES7901-0BF00-0AA0
USB/PPI 多主站电缆 | 5m | 6ES7901-3BD30-0XA0
TD/CPU 连接电缆 | 2.5m（用于TD400C与S7-200SMART连接） | 6ES7901-3EB10-0XA0


S7-200 SMART 产品图片

S7-200 SMART CPU

图1. S7-200 SMART CPU

S7-200 SMART 以太网口

图2. 以太网端口

运行灯和MAC地址

图3. 运行灯和MAC地址

S7-200 SMART 信号板

图4. 信号板SB CM01

图5. 信号板 SB AQ01

图6. 信号板 SB DT04

S7-200 SMART EM模块

图7. 扩展模块 EM DR32

图8. 扩展模块 EM DR16


数字量I/O接线

不同型号CPU输入/输出接线

表1. CPU SR20/ST20/CR20s接线图
CPU SR20 | CPU ST20 | CPU CR20s
 |  | CR20

表2. CPU SR30/ST30/CR30s接线图
CPU SR30 | CPU ST30 | CPU CR30s

表3. CPU SR40/ST40/CR40s接线图
CPU SR40 | CPU ST40 | CPU CR40s

表4. CPU SR60/ST60/CR60s接线图
CPU SR60 | CPU ST60 | CPU CR60s

数字量输入接线

图7. 漏型输入接法
图8. 源型输入接法

对于大多数输入来讲，都是24VDC输入，其中ST CPU的 I0.0-I0.3 支持 5-24V 输入，另外ST20/30 的I0.6、I0.7也支持5-24V输入。如下表所示：

S7-200 SMART的数字量输入点内部为双向二级管，可以接成漏型（图7）或源型（图8），只要每一组接成一样就行。
对于数字量输入电路来说，关键是构成电流回路。输入点可以分组接不同的电源，这些电源之间没有联系也可以。

数字量输出接线

图9. 源型输出
图10. 继电器输出
  • 晶体管输出只能接成源型输出（图9），不能接成漏型，即输出为24V。
  • 继电器输出是一组共用一个公共端的干节点，可以接交流或直流，电压等级最高到220V。例：可以接24V/110V/220V交直流信号。但要保证一组输出接同样的电压（一组共用一个公共端，如1L、2L）。对于弱小信号，如小于 5V 的信号，需要自己验证其输出的可靠性。
    继电器输出点（图10）接直流电源时，公共端接正或负都可以。

对于数字量输出电路来说，关键是构成电流回路。输出点可以分组接不同的电源，这些电源之间没有联系也可以。

代表24VDC传感器电源输出

常问问题

1. 同一个模块的数字量输入端可以同时接NPN和PNP两种信号的设备吗？

不可以，因为NPN和PNP两种类型的信号在DI端形成的回路中对于DI点的电流方向相反，同样地M点的电流方向也相反，如图7和图8，NPN和PNP回路的电流方向不同所示，如果把两种信号接到一个M端，则M端有两种电流流向，这是不正确的。因此不能在同一个模块的DI输入端同时接NPN和PNP两种信号的设备。

2. DO分成晶体管和继电器两种类型，它们的区别是什么？

继电器的负载电流比晶体管的大，但是输出频率受到机械装置的影响不能太快，同时存在机械寿命的限制。晶体管的负载电流比继电器的小，但是输出频率快，可以用于高速脉冲输出，没有机械寿命的限制。

3. S7-200 SMART CPU数字量输出可以接漏型的设备吗？

不可以，S7-200 SMART CPU 本体和扩展模块的DO端都只能接源型24V类型的设备，即集电极开路的PNP设备。

4. S7-200 SMART I/O扩展模块DIAG指示灯以红色闪烁的原因？

对于数字量扩展模块的DIAG指示灯以红色闪烁的原因主要是缺少24V直流供电电源，建议查看CPU的信息来确认具体报错原因，查看CPU信息的方法请见硬件诊断或诊断方法举例。

I/O扩展模块缺少24V直流供电电源时，所有通道指示灯也以红色闪烁。建议核对模块接线图，尤其是模块供电端含两排端子的，确定供电接线是否正确，以EM DR32为例，正确的接线方式如下图所示。

图11. EM DR32接线图


数字量输出抑制回路

S7-200 SMART 开关量输出的典型抑制电路

S7-200 SMART 开关量输出驱动感性负载时，需要配备抑制电路。抑制电路可以限制开关量输出断开时感应电压升高，可保护输出，并防止切断感性负载时产生的高压导致CPU损坏或CPU内部固件错误。
此外，抑制电路还可以限制关断感性负载时产生的电气噪声。配备一个外部抑制电路，使其从电路上跨接在负载两端并且在位置上接近负载，这样对降低电气噪声最有效。
S7-200 SMART晶体管输出内部回路已经包括抑制电路，该电路足以满足大多数应用中感性负载的要求。
继电器输出触点由于可用于直流或交流负载，所以未提供内部保护。

注：给定抑制电路的有效性取决于具体应用，必须进行验证其是否适合您的具体应用。

开关直流感性负载的晶体管或继电器输出的典型抑制电路见表1所示：

开关交流感性负载的继电器输出的典型抑制电路见表2所示：


模拟量模块接线

1.普通模拟量模块接线

模拟量类型的模块有三种：普通模拟量模块、RTD模块和TC模块。
普通模拟量模块可以采集标准电流和电压信号。其中，电流包括：0-20mA、4-20mA两种信号，电压包括：+/-2.5V、+/-5V、+/-10V三种信号。
注意：
S7-200 SMART CPU普通模拟量通道值范围是0~27648或-27648~27648。
普通模拟量模块接线端子分布如下图1 模拟量模块接线所示，每个模拟量通道都有两个接线端。

图1 模拟量模块接线

模拟量电流、电压信号根据模拟量仪表或设备线缆个数分成四线制、三线制、两线制三种类型，不同类型的信号其接线方式不同。
四线制信号指的是模拟量仪表或设备上信号线和电源线加起来有4根线。仪表或设备有单独的供电电源，除了两个电源线还有两个信号线。四线制信号的接线方式如下图2模拟量电压/电流四线制接线所示。

图2 模拟量电压/电流四线制接线

三线制信号是指仪表或设备上信号线和电源线加起来有3根线，负信号线与供电电源M线为公共线。三线制信号的接线方式如下图3 模拟量电压/电流三线制接线所示。

图3 模拟量电压/电流三线制接线

两线制信号指的是仪表或设备上信号线和电源线加起来只有两个接线端子。由于S7-200 SMART CPU模拟量模块通道没有供电功能，仪表或设备需要外接24V直流电源。两线制信号的接线方式如下图4 模拟量电压/电流两线制接线所示。

图4 模拟量电压/电流两线制接线

不使用的模拟量通道要将通道的两个信号端短接，接线方式如下图5 不使用的通道需要短接所示。

图5 不使用的通道需要短接

2. RTD模块接线

RTD热电阻温度传感器有两线、三线和四线之分，其中四线传感器测温值是最准确的。S7-200 SMART EM RTD模块支持两线制、三线制和四线制的RTD传感器信号，可以测量PT100、PT1000、Ni100、Ni1000、Cu100等常见的RTD温度传感器，具体型号请查阅《S7-200 SMART系统手册》。
S7-200 SMART EM RTD模块还可以检测电阻信号，电阻也有两线、三线和四线之分。
EM RTD模块的接线方法如下图6 传感器RTD/电阻信号接线所示。

图6 RTD传感器/电阻信号接线

3. TC模块接线

热电偶测量温度的基本原理是：两种不同成份的材质导体组成闭合回路，当两端存在温度梯度时回路中就会有电流通过，此时两端之间就存在电动势。
S7-200 SMART EM TC模块可以测量J、K、T、E、R&S和N型等热电偶温度传感器，具体型号请查阅《S7-200 SMART系统手册》。
TC模块的接线说明参考图7 TC信号接线。

图7 TC信号接线
注意：
每个模块的接线图请参考《S7-200 SMART 系统手册》中“技术规范”章节。


模拟量常问问题

1. S7-200 SMART 普通模拟量模块可以连接4-20mA的信号吗？

可以，S7-200 SMART CPU模拟量模块可以检测0～20mA和4～20mA的标准电流信号；两种电流信号的接线、在STEP 7-Micro/WIN SMART软件中的参数设置都是一样的。区别在于：0～20mA对应的通道值量程是0～27648，而4～20mA对应的通道值量程是5530～27648。

2. S7-200 SMART RTD模块可以测量电阻值吗？

可以，S7-200 SMART RTD模块最大可以测量3000Ω的电阻值。如下图所示，在"类型"下拉菜单中选择电阻类型；在"电阻" 下拉菜单中中选择可测量电阻的最大值，如图 2.31选择阻值量程范围所示。

图1.选择阻值量程范围

3. S7-200 SMART RTD和TC模块如何得到实际温度值？

把S7-200 SMART EM RTD和TC模块的通道值除以10就是实际的温度值。由于RTD和TC模块的通道值是整数值，需要把整数值转换成浮点数才能在计算后得到带有小数位的温度值。

4. 模拟量模块分辨率和转换精度的区别？

分辨率是A/D模拟量转换芯片的转换精度，即用多少位的数值来表示模拟量。以下举例说明10位分辨率和11位分辨率的区别。S7-200 SMART CPU模拟量0~20mA的通道值范围为0~27648。如果分辨率为10位，则表示当外部电流信号的变化大于0.01953125mA时，模拟量A/D转换芯片才认为外部信号有变化。如果分辨率为11位，则表示当外部电流信号的变化大于0.009765625mA时，模拟量A/D转换芯片即认为外部信号有变化。

图2.模拟量分辨

模拟量转换的精度除了取决于A/D转换的分辨率，还受到转换芯片的外围电路的影响。在实际应用中，输入的模拟量信号会有波动、噪声和干扰，内部模拟电路也会产生噪声、漂移，这些都会对转换的最后精度造成影响。这些因素造成的误差要大于A/D芯片的转换误差。

表1.模拟量扩展模块基础技术参数

模拟量扩展模块型号 | 分辨率 |  | 精度（25°C/0 到 55°C） |  | 范围
 | 电压模式 | 电流模式 | 电压模式 | 电流模式 | 电压 | 电流
EM AE04 | 11位+符号位 | 11位 | 满量程的 ±0.1%/±0.2% | 满量程的 ±0.2%/±0.3% | ±10 V、±5 V、±2.5V | 0 - 20 mA
EM AQ02 | 10位+符号位 | 10位 | 满量程的 ±0.5%/±1.0% | 满量程的 ±0.5%/±1.0% | ±10 V | 0 - 20 mA
EM AM06 | 10位+符号位 | 10位 | 满量程的 ±0.5%/±1.0% | 满量程的 ±0.5%/±1.0% | ±10 V | 0 - 20 mA
SB AQ01 | 11位+符号位 | 11位 | 满量程的 ±0.5%/±1.0% | 满量程的 ±0.5%/±1.0% | ±10 V | 0 - 20 mA

5. S7-200 SMART I/O扩展模块DIAG指示灯以红色闪烁的原因？

S7-200 SMART I/O扩展模块的DIAG指示灯以红色闪烁的原因有两个，建议查看CPU的信息来确认具体报错原因，查看CPU信息的方法请见硬件诊断或诊断方法举例。

（1） 模块缺少24V直流供电电源； I/O扩展模块缺少24V直流供电电源时，所有通道指示灯也以红色闪烁。建议核对模块接线图，尤其是模块供电端含两排端子的，确定供电接线是否正确，以EM DR32为例，正确的接线方式如下图所示。

图3. EM DR32接线图

（2） 模拟量模块上通道断线或是输入值超量程。 模拟量模块上通道断线或是输入值超量程，除了会引起模块的DIAG指示灯以红色闪烁，断线或是超量程的通道的指示灯也以红色闪烁，以提示用户存在故障通道。

以RTD或TC模块为例，如果RTD或TC模块选择了断线报警，如图2.39启动断线报警所示。则模块会检测每个通道的断线情况。默认情况下，该选项是没有被激活的。RTD或TC模块对于没有使用的通道的处理方法如下： ①RTD模块：将一个100Ohm的电阻按照与已用通道相同的接线方式连接到空的通道；或者将已经接好的那一路热电阻的所有引线，一一对应连接到空的通道上。 ②TC模块：短接未使用的通道，或者并联到旁边的实际接线通道上。 图2.39 启动断线报警 如果不是通道断线引起的报警，就是输入值超量程了。默认情况下，RTD和TC模块的通道输入值超上下限报警是激活的。发生了该报警，用户需要判断引起通道值超量程的原因：是信号问题还是模块硬件的问题。

图4.模拟量断线报警

6. 为什么使用S7-200 SMART模拟量输入模块时接收到变动很大的不稳定的值？

可能的原因如下：

1.可能模拟量输入模块和现场传感器分别使用了自供电或隔离的电源，而两个电源没有彼此连接，即模拟量输入模块的电源和现场传感器的信号地没有连接；这将会产生一个很高的上下振动的共模电压，影响模拟量输入值。

2.另一个原因可能是模拟量输入模块接线太长或绝缘不好受到电磁干扰。

可以用如下方法解决：

1.连接现场传感器的负端与模块上的公共M端以补偿此波动,如图1所示：（但要注意，确保这是两个电源系统之间的唯一联系。）

背景是：

  • 模拟量输入模块内部是非隔离的；
  • 共模电压必须小于12V且大于-12V；
  • 对于60Hz干扰信号的共模抑制比为40dB；

图5. 传感器信号等电位连接

注意：模块中未使用的通道直接短接本通道的+、-，已使用的通道将传感器的负端与模块上的公共M端短接 。

2.使用模拟量输入滤波。

  • 选择需要滤波的通道；
  • 选择滤波强度；

图6. 设置模拟量输入滤波

模拟量输入值的滤波过程会产生稳定的模拟信号，通常过滤对于在处理变化缓慢的信号时非常有用，例如温度测量。可以为滤波分为4个级别(无、弱、中、强)。

可组态模块在组态的周期数内平滑模拟量输入信号，从而将一个平均值传送给程序逻辑，滤波级别越高，经滤波处理的模拟值就越稳定，但无法反应快速变化的实际信号。

S7-200 SMART模拟量输入模块接收到测量值波动时的检测方法和步骤

当 S7-200 SMART模拟量输入模块接收到测量值波动时，可通过如下图的步骤进行检查：

图7. 测量值波动时的检测方法

注意：

A.上图中所提到的等电位连接以及不用通道短接请参考本页图5。

B.屏蔽层单端接地：是在屏蔽电缆的一端将金属屏蔽层直接接地，另一端不接地或通过保护接地。

在屏蔽层单端接地情况下，非接地端的金属屏蔽层对地之间有感应电压存在，感应电压与电缆的长度成正比，但屏蔽层无电势环流通过。单端接地就是利用抑制电势电位差达到消除电磁干扰的目的。


硬件诊断

S7-200 SMART 硬件诊断

硬件诊断是判断设备故障的重要途径。当CPU不能正常工作时，除了检查CPU内部的逻辑外还需要判断该故障是否由于CPU硬件故障造成的。CPU提供了多个途径来诊断CPU硬件的状态。

诊断方法介绍

通过模块指示灯、CPU信息、读取S7-200 SMART CPU特殊寄存器（SM）的数值这三种方式来诊断S7-200 SMART PLC的硬件故障，这三种方式可以一起使用。

1. 模块指示灯

S7-200 SMART CPU有一个ERROR状态指示灯，EM扩展模块有一个DIAG状态指示灯，SB电池信号板上有一个Alarm指示灯。这些指示灯都具有故障报警功能。如下图1. 模块指示灯所示。

图1. 模块指示灯

注意：
硬件模块上的指示灯仅仅提示用户：CPU、EM模块、SB信号板是否有故障，而不是直接告诉用户模块的故障是什么，因为能导致模块指示灯提示故障的原因不止一个。想要知道故障的详细信息需要查看CPU的信息和特殊寄存器（SM）的数值。

2. S7-200 SMART CPU信息

S7-200 SMART CPU具有一定的自诊断功能，通过查看CPU信息的方式能快速有效地得到CPU的状态信息。查看方法：在STEP 7-Micro/WIN SMART软件菜单功能区选择“PLC”选项，在PLC选项中的“信息”部分选择“PLC”，如下图2. PLC信息的查找方法所示。在CPU信息中，除了能够得到CPU的硬件信息、运行状态，还可以得到当前程序的扫描周期等其它有用信息。

图2. PLC信息的查找方法

图3. PLC信息

注意：
CPU的信息是实际CPU的内部信息，因此需要通过STEP 7-Micro/WIN SMART软件在线连接到CPU上才可以得到该信息。

从CPU的错误信息窗口中可以得到CPU致命错误、非致命错误、当前IO错误的信息提示。还包括CPU的产品序列以及固件版本。图4. 所示。

图4.CPU错误信息

从CPU的时间日志窗口里可以得到CPU的事件列表。其列表是根据时间先后顺序记录CPU事件的。用户可以查看列表的内容判断CPU的状态。 图5. 所示。

图5. CPU事件日志

从“扫描速率”页面可以得到CPU程序实际运行的扫描周期的时间。 图6. 所示。

图6. CPU扫描速率

3. 读取S7-200 SMART CPU特殊寄存器SM的数值

S7-200 SMART CPU内部有特殊寄存器SM，用户可以借以查看或是更改CPU的系统参数。其中有一些SM区域用来表示CPU硬件状态，包括CPU订货号、序列号、硬件版本、CPU故障信息，以及EM扩展模块和SB信号板的订货号、序列号、硬件版本、故障信息等。通过在线监控相应SM的数值可以得到信息参数来诊断硬件故障。
根据《S7-200 SMART系统手册》章节D“特殊存储器（SM）和系统符号名称”中关于特殊寄存器的描述，可以得到相应故障的解释和说明。表1. 特殊寄存器诊断地址列出了S7-200 SMART CPU、EM扩展模块、SB信号板的SM诊断地址。

表1. 特殊寄存器诊断地址

诊断对象 | 特殊寄存器地址 | 功能
IO信息 | SMB5 | I/O错误状态
 | SMW98 | I/O扩展总线通信错误
CPU | SMB6～SMB7 | CPU ID、错误状态和数字量I/O点
 | SMW100 | CPU诊断报警代码
 | SMB1300-SMB1049 | CPU硬件/固件ID
EM扩展模块 | SMB8-SMB19 | EM（扩展模块）ID和错误
 | SMW104～SMW114 | EM（扩展模块）诊断报警代码
 | SMB1100～SMB1399 | EM（扩展模块）硬件/固件ID
SB信号板 | SMB28～SMB29 | SB（信号板）ID和错误
 | SMW102 | SB（信号板）诊断报警代码
 | SMB1050～SMB1099 | SB（信号板）硬件/固件ID


诊断举例

诊断方法举例

以AM06模块为例，说明如何通过模块的指示灯状态、CPU信息、特殊寄存器SM数值这三种方式来诊断模块的状态。

表1. AM06模块诊断信息

AM06模块指示灯状态 |  | PLC信息和特殊寄存器（通过状态图标监视） | 故障说明
DIAG指示灯状态 | IO通道灯状态
绿色长亮 | 绿色长亮 | PLC信息： | 系统块组态正确，供电正常
 |  | 特殊寄存器中模块报警地址实时值： 请参考《S7-200 SMART系统手册》章节D
绿色闪烁 | 不亮 | PLC信息： | 没有在STEP 7-Micro/WIN SMART软件的 系统块中组态该扩展模块
 |  | 特殊寄存器中模块报警地址实时值： 请参考《S7-200 SMART系统手册》章节D
红色常亮 | 不亮 | 系统块中组态了该模块： 特殊寄存器中模块报警地址实时值： 请参考《S7-200 SMART系统手册》章节D | 硬件故障，CPU识别不了该模块
 |  | 系统块中没有组态该模块： 特殊寄存器中模块报警地址实时值： 请参考《S7-200 SMART系统手册》章节D
红色闪烁 | 所有通道红色闪烁 | PLC信息： | 模块没有接24V电源
 |  | 特殊寄存器中模块报警地址实时值： 请参考《S7-200 SMART系统手册》章节D
红色闪烁 | 某个或几个通道红色闪烁 | PLC信息： | 通道值超限
 |  | 特殊寄存器中模块报警地址实时值： 请参考《S7-200 SMART系统手册》章节D

通过一个特殊寄存器中模块报警地址实时值来说明如何查看CPU及模块的报错信息。如表1. AM06模块诊断信息中最后一行AM06通道0的通道值超出下限时SMW104值为2#0000_0000_0000_1000。根据表2. SMW100~SMW114系统报警代码格式说明中的解释：

  • 2#0000_0000_0000_1000：d=0，表示输入通道
  • 2#0000_0000_0000_1000：s=0，表示在单个通道上
  • 2#0000_0000_0000_1000：c=0，表示0通道
  • 2#0000_0000_0000_1000：a=08H，表示通道值超出下限

综合起来就是AM06模块的第0个输入通道的通道值超出下限，与CPU信息中的报错信息一致。

表2. SMW100~SMW114系统报警代码格式说明

SMW100~SMW114系统报警代码格式
 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
 | d | s | c | c | c | c | c | c | a | a | a | a | a | a | a | a
d：报警位置 | 0 | 输入通道或其它非IO模块
 | 1 | 输出通道
s：报警范围 |  | 0 | 在单个通道上
 |  | 1 | 在整个通道
c：通道号 |  |  | c | c | c | c | c | c | 如果s位为0，则c值表示受影响的通道
 |  |  |  |  |  |  |  |  | 如果s位为1，则c=0
a：报警类型 |  |  |  |  |  |  |  |  | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 00H：无报警
 |  |  |  |  |  |  |  |  | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 01H：短路
 |  |  |  |  |  |  |  |  | 0 | 0 | 0 | 0 | 0 | x | x | x | 02H~05H：保留
 |  |  |  |  |  |  |  |  | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 06H：断路
 |  |  |  |  |  |  |  |  | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 07H：超出上限
 |  |  |  |  |  |  |  |  | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 08H：超出下限
 |  |  |  |  |  |  |  |  | 0 | 0 | 0 | 0 | x | x | x | x | 09H~0FH：保留
 |  |  |  |  |  |  |  |  | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 10H：参数化错误
 |  |  |  |  |  |  |  |  | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 11H：传感器或负载电压缺失
 |  |  |  |  |  |  |  |  | 0 | 0 | 0 | x | x | x | x | x | 12H~1FH：保留
 |  |  |  |  |  |  |  |  | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 20H：内部错误（MID问题）
 |  |  |  |  |  |  |  |  | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 21H：内部错误（IID问题）
 |  |  |  |  |  |  |  |  | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 22H：保留
 |  |  |  |  |  |  |  |  | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 23H：组态错误
 |  |  |  |  |  |  |  |  | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 24H：保留
 |  |  |  |  |  |  |  |  | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 1 | 25H：固件损坏或缺失
 |  |  |  |  |  |  |  |  | 0 | 0 | 1 | 0 | x | x | x | x | 26H~2AH：保留
 |  |  |  |  |  |  |  |  | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 2BH：电池电压低
 |  |  |  |  |  |  |  |  | x | x | x | x | x | x | x | x | 2CH~FFH：保留

用同样的方法来查看SMB8和SMB9的实时值，根据SMB8和SMB9的数值结合表3. SMB8~SMB18 I/O模块ID和错误中的说明得到模块AM06的ID信息和错误说明。
SMB8=2#0001_1001的解释如下：

  • 2#0001_1001：m=0，表示该模块存在
  • 2#0001_1001：a=1，表示该模块是模拟量模块
  • 2#0001_1001：ii=10，表示模块有4AI
  • 2#0001_1001：qq=01，表示模块有2AO

SMB9=2#0100_0000的解释如下：

  • 2#0100_0000：c=0，无错误
  • 2#0100_0000：d=1，诊断报错
  • 2#0100_0000：b=0，无错误
  • 2#0100_0000：m=0，OK

SMB9=2#0100_0000表示AM06模块有诊断报错。

表3. SMB8~SMB18 I/O模块ID和错误说明

SMB8~SMB18 I/O模块ID和错误说明
 | 偶字节 |  |  |  |  |  |  |  |  | 奇字节
 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |  |  | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
 | m | 0 | 0 | a | i | i | q | q |  |  | c | d | 0 | b | 0 | 0 | 0 | m
m：模块是否存在 | 0 | 存在 |  |  |  |  |  |  |  | c | 0 | 无错误
 | 1 | 不存在 |  |  |  |  |  |  |  |  | 1 | 组态/参数化错误
a：I/O类型 |  |  |  | 0 | 数字量 |  |  |  |  | d |  | 0 | 无错误
 |  |  |  | 1 | 模拟量 |  |  |  |  |  |  | 1 | 诊断报警
ii：输入信息 |  |  |  |  | 0 | 0 | 无输入 |  |  | b |  |  |  | 0 | 无错误
 |  |  |  |  | 0 | 1 | 2AI或8DI |  |  |  |  |  |  | 1 | 总线访问错误
 |  |  |  |  | 1 | 0 | 4AI或16DI |  |  | m |  |  |  |  |  |  |  | 0 | OK
 |  |  |  |  | 1 | 1 | 8AI或32DI |  |  |  |  |  |  |  |  |  |  | 1 | 缺失已组态模块
qq：输出信息 |  |  |  |  |  |  | 0 | 0 | 无输出 |
 |  |  |  |  |  |  | 0 | 1 | 2AO或8DO
 |  |  |  |  |  |  | 1 | 0 | 4AO或16DO
 |  |  |  |  |  |  | 1 | 1 | 8AO或32DO

上面以AM06模块为例说明了硬件诊断的方法，用户可以用该方法来诊断其它CPU、EM扩展模块和SB信号板的信息状态。


符号表

在符号表中，允许您定义编辑符号名以及添加变量的注释，如下图 1 所示：

图1. 符号表

符号表使用的相关视频教程链接如下：

  • S7-200 SMART 符号的使用——跟我学31/52
  • S7-200 SMART 符号的使用——跟我做32/52

在 STEP 7-Micro/WIN SMART 软件中，可以建立多个符号表，但不允许将相同的符号名多次用作全局符号赋值，在单个符号表中和几个符号表内均不得如此。可以在多个不同局部变量表中多次使用相同的符号名称。

符号名的最大长度为 23 个字符。

在注释栏最多允许键入 79 个字符。

寻址方式

在 STEP 7 Micro/Win SMART 软件中可选择三种不同的寻址方式：仅绝对，仅符号，符号和地址。

在工具>选项>常规界面选择寻址方式

选择“工具”> “选项”菜单命令，如下图 2 所示：

图 2. 工具选项菜单

在常规选项里， 可选择寻址方式， 如下图 3 所示：

图 3. 选择寻址方式

在 “视图” 菜单栏，选择寻址方式

１. 仅绝对寻址

选择 “视图”> “仅绝对” 菜单命令，所有的变量都将以绝对地址寻址，并且在程序中仅作为绝对地址显示。如下图 4 所示：

图 4. 仅绝对寻址

绝对地址用存储区加上位或字节地址来标识地址（例如，V0.0），如下图 5 所示：

图 5. 绝对地址显示

２. 仅符号寻址

在符号表中定义符号名后不仅能用绝对地址访问变量，也能用符号地址访问变量。在 STEP 7 Micro/Win SMART 软件中选择 “视图”> “仅符号” 菜单命令。如下图 6 所示：

图 6. 仅符号寻址

符号地址用一串字符组合来标识地址（例如，启动），如下图 7 所示：

图 7. 仅符号寻址

3. 符号和绝对寻址

在 STEP 7 Micro/Win SMART 软件中选择 “视图”> “符号：绝对” 菜单命令。如下图 8 所示：

图 8. 符号和绝对地址寻址

所有的地址既显示符号也显示绝对地址。如下图 9 所示：

图9. 符号和绝对地址显示

常见问题

在符号表中修改变量的符号名后，为何程序中仍然显示为修改前的符号名且该字符显示绿色波浪下划线？

图10. 符号名显示不正确

原因：以上现象是因为在 “仅符号”或者“符号：绝对” 寻址方式下直接在符号表中修改了变量的符号名。

解决方式：如果要修改变量的符号名，应先按“仅绝对”寻址，修改符号名之后再恢复“符号：绝对”方式。具体按照以下步骤操作：

1. 选择“视图”>“仅绝对”，如下图 11 所示：

图11. 仅绝对寻址

2. 在符号表中修改变量（例如将地址 V0.0 的符号名由“启动”改为“停止”），如下图 12 所示：

图12. 修改后的符号名

3. 选择 “视图”>“符号：绝对” 寻址，如下图 13 所示：

图13. 符号和绝对寻址

程序中显示为修改后的符号名，如下图 14 所示：

图14. 符号名修改后的程序


编程软件的安装与卸载

STEP7-Micro/WIN SMART 的安装与卸载

计算机要求

STEP 7-Micro/WIN SMART 在个人计算机上运行。计算机应满足以下最低要求：

• 操作系统：Windows 7（支持32位和64位）和Windows 10（支持64位）
• 至少350M字节的空闲硬盘空间
• 鼠标（推荐）

安装 STEP7-Micro/WIN SMART

将STEP 7-Micro/WIN SMART CD 插入到计算机的CD-ROM驱动器中，或联系您的Siemens分销商或销售部门，从客户支持网站下载STEP 7-Micro/WIN SMART 。安装程序将自动启动并引导您完成整个安装过程。有关安装STEP 7-Micro/WIN SMART的详细信息，请参见自述文件。

要在Windows XP或Windows 7操作系统上安装STEP 7-Micro/WIN SMART ，必须以管理员权限登录。

卸载 STEP7-Micro/WIN SMART

从 Windows 操作系统的 “开始” > “设置” 打开 ”控制面板“，在其中运行” 添加/删除程序“，选择相应的 STEP 7-Micro/WIN SMART 版本卸载。

图1. 在”添加/删除程序“中选择卸载 STEP 7-Micro/WIN SMART。

卸载完成后，一般需要重新启动 Windows 系统。

安装常见问题

S7-200 SMART安装中止或者报告DLL函数调用失败如图2所示：

图2 安装报错

1. 用管理员权限的账号登录。
2. 点击电脑开始，输入"regedit"打开注册表。
3. 找到下面的路径的文件（如果有的话）：HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\InstallShield_{6BA8BB2D-F711-43F9-A5D1-F2182C26BB6D}。
4. 在右边的图框内双击"UninstallString。
5.复制数值数据里的内容，如下图所示。

图3 数值数据

6. 点击电脑开始，粘贴之前复制的内容然后回车，如下图所示。

7. 系统会弹出如下提示对话框，点击确定。

8. 找到以下路径，重复4-7的步骤。HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\InstallShield_{6BA8BB2D-F711-43F9-A5D1-F2182C26BB6D}
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\InstallShield_{C1081F1C-BDFA-4F65-BE40-931C2917EC9F}
9. 确保STEP 7-Micro/WIN SMART的安装目录已经被彻底删除。
注意：上面的注册表的文件夹并不一定全部都有，对可以找到的文件进行相应的操作，没有的文件，不需要理会就可以了。
对于WIN7 64位的操作系统，相应的注册表的路径如下：
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\InstallShield_{2C62E69E-D92D-4888-9F01-A3E9A9FEB1A5}
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\InstallShield_{6BA8BB2D-F711-43F9-A5D1-F2182C26BB6D}
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\InstallShield_{C1081F1C-BDFA-4F65-BE40-931C2917EC9F}

安装STEP 7-MicroWIN SMART V2.2版本软件报错，如下图所示：

卸载PC ACCESS SMART软件后重新安装STEP 7-MicroWIN SMART V2.2软件。

安装STEP 7-MicroWIN SMART V2.2版本软件报错，如下图所示：

1. 用管理员权限的账号登录。
2. 点击电脑开始，输入"regedit"打开注册表。
3. 使用CTRL+F打开查找界面，点击“Find Next”搜索“202.0.174.1”

4.删除查找到的和STEP 7-Micro/WIN SMART相关的注册表条目

重要提示：

通常情况下，我们对直接修改注册表不做任何担保，因为这完全是用户自己的责任。建议无论如何先对注册表进行备份，然后再按照以上步骤操作。


软件停止

STEP 7-Micro/WIN SMART软件在打开时报错“软件停止”怎么办？

在一些盗版或GHOST WIN7 32或64位操作系统，打开STEP 7-Micro/WIN SMART软件时有可能会提示“MWSmart Executable has stopped working”错误时（见图1.）。

图1. MWSmart Executable has stopped working

该类错误可以尝试如下步骤来解决：

  1. 打开WINDOWS 开始菜单通过搜索“gpedit.msc”，打开“本地组策略编辑器”。
    注意： 当前Windows登录账户需要具有管理员权限；
    gpedit.msc文件一般位于如下路径 C:\Windows\System32\gpedit.msc。

  2. 在弹出的“本地组策略编辑器”窗口中，打开"用户配置\管理模板\"开始"菜单和任务栏，并导航到“不保留最近打开文档的历史"，如图2.所示。

    图2. 本地组策略编辑器

  3. 双击“不保留最近打开文档的历史"，并在弹出的对话框中选择”已禁用“并”确定“，如图3.所示。

    图3. 设置”不保留最近打开文档的历史“为”已禁用“
  4. 重启STEP 7-Micro/WIN SMART 软件测试。


软件界面显示问号

STEP 7-Micro/WIN SMART软件在打开时软件界面显示“？？？？”怎么处理？

STEP 7-Micro/WIN SMART软件在打开时，软件界面字体可能不会正常显示，显示为“？？？？”。可以采用如下步骤解决该问题:

图1. 显示为????

步骤1.打开Windows 控制面板中的"时钟、语言和区域"

图2. 打开控制面板

步骤2：点击区域和语言

图3. 选择“区域和语言”

步骤3：格式选项卡下：格式中选择中文（简体，中国）

图4. 格式：中文（简体，中国）

步骤4：在位置选项卡下，当前位置修改为：中国

图5. 当前位置设置为“中国”

步骤5：在管理选项卡下：点击更改系统区域设置，然后将当前系统区域设置为:中文（简体，中国）

图5. 系统区域设置为:中文（简体，中国）

至此，按照相关提示，重启电脑后。STEP7 Micro/Win SMART软件的即可显示正常。


编程软件的安装与卸载

STEP 7 - Micor/WIN SMART的版本

STEP 7-Micro/WIN SMART的各个版本与Windows操作系统的各个版本之间，有一定的兼容关系。如果您安装的Micro/WIN版本和操作系统不兼容，会发生各种问题，如比较常见的通信不正常的现象。

我们建议用户总是使用最新的版本。

STEP 7-Micro/WIN SMART版本与操作系统兼容性

截止到目前，从STEP 7-Micro/WIN SMART V2.3 起支持 Windows 10 操作系统，具体请查看下表

STEP7-Micro/WIN SMART | 操作系统
 | Microsoft Windows XP SP3 | Microsoft Windows7 (32位和64位) | Microsoft Windows 10
V1.0 | 兼容 | 兼容 | 不兼容
V2.0 | 兼容 | 兼容 | 不兼容
V2.1 | 兼容 | 兼容 | 不兼容
V2.2 | 不兼容 | 兼容 | 不兼容
V2.3 | 不兼容 | 兼容 | 兼容
V2.4 | 不兼容 | 兼容 | 兼容
表1. Micro/WIN SMART与Windows版本兼容表

PC Access SMART 版本与操作系统兼容性

S7-200 PC Access SMART与操作系统兼容性，具体请查看下表

S7-200 PC Access SMART | 操作系统
 | Microsoft Windows XP SP3 | Microsoft Windows7 (32位和64位) | Microsoft Windows 10
V2.0 | 兼容 | 兼容 | 不兼容
V2.3 | - | 兼容 | 兼容
表2. S7-200 PC Access SMART与Windows版本兼容表

常问问题

Micro/WIN SMART是否可以从V2.2直接升级到V2.3?

不可以。需要最新版软件请联系西门子的经销商。或参见软件下载链接。（打开网页查看网页右侧--资料下载内查找编程软件）

新版软件能否直接打开老版本?

不同版本的Micro/WIN SMART 生成的项目文件不同。高版本的Micro/WIN能够向下兼容低版本软件生成的项目文件；低版本的软件不能打开高版本保存的项目文件。

但是，可能会存在高版本软件打开低版本生成的项目文件时会提示“遇到不适当的参数”或者其他问题的，可以先查看低版本的程序内是否有向导生成的内容，如果有，建议在高版本软件创建空项目，将低版本程序内非向导生成的内容复制到空项目中，涉及到使用的向导内容，需要在项目里重新创建。


如何下载程序

步骤一：建立通信连接

S7-200 SMART CPU 可以通过以太网电缆与安装有STEP7 Micro/WIN SMART 的编程设备进行通信连接。

注意：一对一通信不需要交换机，如果网络中存在两台以上设备则需要交换机。

  1. 硬件连接（编程设备直接与 CPU 连接）
    首先，安装 CPU 到固定位置；
    其次，在 CPU 上端以太网接口插入以太网电缆，如图1所示；
    最后，将以太网电缆连接到编程设备的以太网口上。

    图 1 以太网接口示意图

  2. 建立 Micro/WIN SMART 与 CPU 的连接
    首先，在 STEP 7-Micro/WIN SMART 中，点击 “通信” 按钮（图 2）打开 “通信” 对话框（图 3）；

    图 2. Micro/WIN SMART 界面中 “通信” 按钮

    图 3. 通信对话框

    然后，进行如下操作：

a. 单击 “网络接口卡” 下拉列表选择编程设备的 “网络接口卡”。
b. 双击 “查找CPU” 来刷新网络中存在的 CPU ；
c. 在设备列表中跟据 CPU 的 IP 地址选择已连接的 CPU。
d. 选择需要进行下载的 CPU 的 IP 地址之后，单击 “OK” 按钮，建立连接。（同时只能选择一个 CPU 与Micro/WIN SMART 进行通信）

注意：如果网络中存在不只一台设备，用户可以在 “通信” 对话框中左侧的设备列表中选中某台设备然后点击 “Flash Lights” 按钮轮流点亮 CPU 本体上的 RUN ，STOP 和 ERROR 灯来辨识该 CPU。 也可以通过 “MAC地址” 来确定网络中的 CPU， MAC 地址在 CPU 本体上 “LINK” 指示灯的上方。

步骤二：为编程设备分配 IP 地址

如果编程设备使用内置适配器卡（on-board adapter card）连接网络，则 CPU 和编程设备的内置适配器卡（on-board adapter card） 的 IP 地址网络 ID 和子网掩码必须一致。（网络 ID 为 IP 地址的前三个八位字节，例如：192.168.2.77（粗体部分），默认的子网掩码通常为 255.255.255.0）

具体操作步骤如下（基于Windows XP SP3 操作系统）：

  1. 打开 “本地连接 状态” 对话框，如图 4所示；
    方式一： 单击 “开始” 按钮->单击 “控制面板” ->双击打开 “网络连接” ->双击 “本地连接”
    方式二： 在任务栏右下角单击 “本地连接” 图标

    图 4. “本地连接 状态” 对话框

  2. 单击 “属性” 按钮，打开 “本地连接 属性” 对话框，如图 5所示；

    图 5. “本地连接 属性” 对话框

  3. 在 “此连接使用下列项目” 区域中，滑动右侧滚动条，找到 “ Internet 协议 （TCP/IP）” 并选中该项，单击 “属性” 按钮 ，打开 “Internet 协议 （TCP/IP）属性” 对话框，如图 6所示；

    图 6 “Internet 协议 （TCP/IP）属性” 对话框

    选中 “使用下面的 IP 地址” 前面的单选按钮然后进行如下操作：
    a.输入编程设备的 IP 地址（必须与 CPU 在同一个网段）；
    b.输入编程设备的 “子网掩码” （ 必须与 CPU 一致）；
    c.输入默认网关（必须是编程设备所在网段中的 IP 地址）；
    d.单击“确定”按钮，完成设置。

    注意：IP 地址的前三个字节必须同 CPU 的 IP 地址一致，后一个字节应在 "1-254" 之间（避免 0 和 255 ），避免与 网络中其它设备的 IP 地址重复。

步骤三：修改 CPU 的 IP 地址（可选）

在 Micro/WIN SMART 中可以通过系统块修改 CPU 的 IP 地址，具体步骤如下：

  1. 在导航条中单击 “系统块” 按钮，或者在项目树中双击打开 “系统块” 对话框，如图 7所示：

    图 7. “系统块” 按钮

  2. 打开系统块对话框，如图 8 所示：

    图 8. 系统块对话框

    然后进行如下操作：
    a.选择 CPU 类型（与需要下载的 CPU 类型一致）；
    b.选择 “通信” 选项；
    c.勾选 “随项目存储 IP 信息”；
    d.设置 IP 地址，子网掩码和默认网关；
    e.单击 “确定” 按钮，完成设置。

注意：由于系统块是用户创建的项目的一部分，所以只有将系统块下载至 CPU 时，IP 地址修改才能够生效。

步骤四：下载程序

在 Micro/WIN SMART 中点击“下载”按钮，如图 9所示；

图 9. Micro/WIN SMART 界面中“下载”按钮位置

打开下载对话框（图 10），选择需要下载的块（如果进行了“步骤三”，则必须下载系统块才能完成 IP 地址修改），单击 “下载” 按钮进行下载。

图 10. 下载对话框

注意：如果 CPU 在运行状态，Micro/WIN SMART 会弹出提示对话框，提示将 CPU 切换到 STOP 模式，点击“YES”。

图 11. 下载成功对话框

下载成功后，“下载” 对话框会显示 “下载成功” ，点击“关闭”按钮关闭对话框，完成下载，如图 11 所示。

注意：如果用户在完成通信设置（步骤一）后打开一个新的项目文件再进行下载操作会要求用户重新进行通信连接设置。

常问问题：

1.为何程序下载不成功？

产生此问题的原因有很多，可按照如下步骤逐一检查：

  1. 检查硬件连接
    网络电缆是否连接好，在 CPU 本体左上角以太网接口处有“以太网状态”指示灯 “LINK” ，此灯常亮表示以太网连接成功。

  2. 检查编程设备的 IP 地址是否与 CPU 的 IP 地址在同一网段中
    编程设备必须与 CPU 在同一网段中。S7-200 SMART CPU 预置的 IP 地址为：192.168.2.1。

  3. 通信参数不匹配
    若下载系统块，注意用户项目系统块中的 CPU 类型是否与实际 CPU 类型相符合，若不符合则会报错。

2.为什么 S7-200 SMART上传程序后程序块丢失？

如果程序上传的过程中没有报错，但是打开上传程序后，只看到主程序或者只显示部分程序如下图a.，有可能是因为其他程序块未打开，可以点击图中b.的程序块文件夹，选择需要查看的程序块，双击打开即可。

图 11. 下载成功对话框

注意：

  • 为了保证程序的完整有效，建议备份源程序，因为即使可以上传程序，也有程序上传不完整的的风险，如非特殊情况，不推荐使用上传的程序。

3.为什么编译程序时没有任何错误，但是下载时提示错误？

有时候，用户编写的程序离线编译的时候提示没有任何错误，但是下载时会遇到如图12下载错误 所示的报错信息，下载过程也会被终止。

图 12. 下载发生编译错误

出现上述错误的原因是程序中使用了超出S7-200 SMART CPU 范围的资源，比如：S7-200 SMART CPU 只有1024个上升沿P或下降沿捕捉N指令资源，如果用户在程序中使用了超过1024个，就会遇到该错误提示。

查看CPU信息的方法请见 硬件诊断或诊断方法举例。


485口下载程序

通过 S7-200 SMART CPU 本体自带RS485 口和DP01上传/下载程序

S7-200 SMART 在软件和固件为V2.3 开始支持使用编程电缆（6ES7901-3DB30-0XA0）给CPU 本体的RS485 口和DP01上传下载程序

本文档使用硬件及软件介绍如下：

S7-200SMART CPU: SR60 V2.3,DP01

编程软件：STEP7 Micro/WIN SMART V2.3

编程电缆：6ES7901-3DB30-0XA0 (S7-200 USB/PPI 电缆）

建立通讯连接（下载/上传前需要先建立通信连接）

1.硬件连接

首先，安装CPU到固定位置；

其次，在CPU左下角485通讯口插上编程电缆

最后，将编程电缆另一端连接到编程设备，并且给CPU上电

2.建立Micro/WIN SMART与CPU的连接

首先，在STEP 7-Micro/WIN SMART中，点击“通信”按钮打开“通信对话框”；

图1.Micor/WIN SMART界面中“通信”按钮

图2.通信对话框

然后，进行如下操作：

a.单击“网络接口卡”下拉列表选择PC/PPI cable.PPI.1；

b.单击“查找CPU”来刷新网络中存在的CPU；

c.在“找到的CPU”列表里选择需要进行下载的CPU之后，单击“确定”按钮，建立连接。

注意：站地址和波特率不需要进行设置，编程电缆会搜索所有波特率，最终把实际的站地址和波特率显示出来。

上传程序

在Micro/WIN SMART 中点击“上传”按钮，如图3所示：

图3.Micro/WIN SMART 界面中“上传”按钮位置

打开“上传对话框”(图4），选择需要上传的块，单击“上传”按钮进行上传。

图4.上传对话框

图5.上传成功对话框

上传成功后，上传对话框会弹出显示“上传已成功完成”，点击“关闭”按钮关闭对话框，完成上传。

下载程序

在Micro/WIN SMART 中点击“下载”按钮，如图6所示：

图6.Micro/WIN SMART 界面中“下载”按钮位置

打开下载对话框(图7），选择需要下载的块，单击“下载”按钮进行下载。

图7.下载对话框

注意：如果CPU在运行状态，Micro/WIN SMART会弹出提示对话框，提示是否将CPU切换到STOP模式，点击“是”；

图8.下载成功对话框

下载成功后，下载对话框会弹出显示“下载已成功完成”，点击“关闭”按钮关闭对话框，完成下载。

通过 DP01模块的RS485 口上传/下载程序

通过DP01上传下载程序，需要先通过以太网口或者CPU本体的485口下载配置有DP01的系统块，之后的操作参照“通过 S7-200 SMART V2.3本体自带RS485 口上传/下载程序”


搜索不到CPU

下载时以太网口搜索不到CPU怎么办

为何程序下载时搜索不到CPU？

产生此问题的原因有很多，比如安装了360安全卫士、金山卫士以及QQ管家等第三方杀毒软件；或者Windows 操作系统非完整版操作系统，例如安装了GHOST版本的操作系统，其他定制化的操作系统。
可按照如下步骤逐一检查：

  • 检查硬件连接
    网络电缆是否连接好，在 CPU 本体左上角以太网接口处有“以太网状态”指示灯 “LINK” ，此灯常亮表示以太网连接成功。

  • 检查编程设备的 IP 地址是否与 CPU 的 IP 地址在同一网段中
    编程设备必须与 CPU 在同一网段中。S7-200 SMART CPU 预置的 IP 地址为：192.168.2.1。

  • 如果使用STEP 7 Micro/WIN SMART查找CPU无法找到或者可以找到CPU，但是点击“确定”时出现以下对话框，如图1，所示。

    图1. 端口无法打开
    当编程软件弹出上述对话框时，我们需要在操作系统的控制面板中，打开“设置PG/PC 接口”，确保“MWSMART”应用程序访问点选择的是当前PC机使用的以太网卡，如图2.所示。

    图2. 设置MWSMART 应用程序访问点

  • ping指令确认电脑是否和CPU物理连接正常
    注意：电脑的IP地址需要和CPU的IP地址在同一网段
    如果ping结果显示类似如下图3.，表示物理连接没有问题。

    图3.ping物理连接正常
    如果ping结果显示如下图4.，则要检查IP地址设置和网线，电脑网卡及CPU网络接口。

    图4.ping物理连接不正常

  • 检查360安全卫士、金山卫士以及QQ管家等软件是否对操作系统的启动进程进行了优化设置，是否禁用了西门子软件所需的应用进程。
    图5.中PNIOMGR进程不能被禁用，如果禁用将导致搜索不到S7-200 SMART CPU。需要恢复启动该进程，并重启再次电脑测试。

    图5.PNIOMGR进程被禁用

    另外，我们也可以手动启动该进程，然后在测试能否搜索到S7-200 SMART CPU ，如图6.所示。PNIOMGR进程默认存放路径C:\Program Files\Common Files\Siemens\SimNetCom（Windows XP 操作系统）
    或C:\Program Files\Common Files\Siemens\Automation\Simatic OAM\bin（Windows WIN7操作系统）。

    图6.手动启动PNIOMGR进程

  • 在计算机管理的服务中，找到SIMATIC S7DOS HELP SERVICE或者S7DOS HELP SERVICE等服务，需要确保该服务为自动状态并且已经启动，如图7.所示。

    图7.S7DOS HELP SERVICE需要被启动

  • 检查以上步骤，如果依然查找不到CPU，如果已经知道CPU IP 地址的情况下，可以通过直接添加CPU的IP地址的方式来连接，如图8. 所示。

    图8.添加CPU方式

  • 以上方法都无法奏效的情况下，可以考虑更换操作系统或者电脑测试 。

    RS485 端口无法搜索到 CPU怎么办

    S7-200 SMART V2.3 CPU 系列包含十二种 CPU 型号，分为两条产品线：紧凑型产品线和标准型产品线。
    紧凑型 CPU 四种: CPU CR20s、CPU CR30s、CPU CR40s 和 CPU CR60s ,V2.3 版本不适用于 CR40 和 CR 60 CPU，即 CR40 和 CR60 的 CPU 固件版本只到 V2.2 版本，V2.3 版本 CPU 中不包含。
    标准型 CPU 八种：ST （ST20、ST30、ST40、ST60 ) 和 SR ( SR20、SR30、SR40、SR60 )

    S7-200 SMART 编程软件及 CPU 固件，从 V2.3 开始支持通过 RS485 端口使用 USB-PPI （订货号：6ES7 901-3DB30-0XA0）编程电缆下载程序的功能。

    紧凑型 CPU 无以太网端口，仅 CPU 本体集成一个 RS485 端口，此端口作为 CPU 的唯一编程端口。使用 STEP 7 Micro/WIN SMART 和 USB-PPI 电缆可以进行上传和下载程序、监控程序、执行固件更新。
    紧凑型 CPU 没有 microSD 读卡器或任何与使用 microSD 卡相关的功能，不支持使用 microSD 卡。

    标准型 CPU 各个固件版本均支持使用以太网端口进行下载程序；如果通过 RS485 端口使用 USB-PPI 电缆下载程序，需要保证编程软件及 CPU 固件版本均在 V2.3 及以上。

    通过 RS485 端口使用 USB-PPI 电缆下载程序，搜索不到 CPU

    按照如下步骤进行检查：

    1.S7-200 SMART V2.3 编程软件，首次安装完成后，必须要重启电脑，然后再使用软件操作。

    2.关闭杀毒软件

    3.检查是否满足使用编程软件通过 RS485 端口进行下载程序的前提条件：
    a、编程软件使用 V2.3 及以上版本。
    b、要更新固件的硬件，实际固件版本为 V2.3 或更高版本的模块的固件。
    c、如果使用编程电缆需要使用 USB-PPI 电缆,订货号：6ES7 901-3DB30-0XA0；不支持使用 RS232 / RS 485 编程电缆更新固件，订货号：6ES7 901-3CB30-0XA0。

    4.核实使用的CPU类型及下载程序方法对应情况如表1.所示：

    CPU固件更新 ST SR CR CRs
    以太网网线 X X X --
    USB-PPI电缆 C C -- X
    表1.CPU类型及下载程序方法

    X：表示支持
    -- : 表示不支持
    C : 表示固件版本在 V2.3 及以上支持

    5.检查操作步骤是否正确或者有遗漏，参考文档：如何下载

    6.使用第三方编程电缆无法保证通信效果

    常见问题

    标准型 CPU 使用 USB-PPI 电缆可以搜索到 CPU，下载时报错 “ CPU 不支持该功能 ”？

    首先标准型 CPU 在任何固件版本都支持使用以太网口进行编程下载程序；
    如果使用 USB-PPI 电缆下载程序出现报错，使用以太网线连接 PLC ,查看 PLC 信息，检查 CPU 实际固件版本。如果是不是 V2.3 版本，使用存储卡升级固件到 V2.3 及以上，才可以使用 USB-PPI 电缆下载程序。否则有可能出现上图报错。

    CPU 实际固件在 V2.3 及以上，但是在虚拟机中使用 USB-PPI 电缆搜索不到 CPU？
    1、安装完毕编程软件后，需要重启电脑后，再使用编程软件
    2、检查是否与虚拟机设置相关，参考链接：PC Adapter USB(A2)在虚拟机中的连接 ，保证插接电缆后，电脑可以识别到 USB-PPI 电缆
    提醒注意，参考链接旨在提供虚拟机中设置，实际 S7-200 SMART 使用 RS485 端口下载, 编程电缆只能使用USB-PPI 电缆,订货号：6ES7 901-3DB30-0XA0，不能使用 PC Adapter 或者 PC Adapter USB A2


自由口切换到PPI模式

将CPU RS 485 接口由自由口模式切换到PPI模式

S7-200 SMART 软件在 V2.3 开始支持使用 USB-PPI （6ES7 901-3DB30-0XA0）电缆通过串行端口对所有型号的 CPU 进行编程。

不论是Modbus通信还是USS通信，在 S7-200 SMART CPU 通信口上实现的是 RS485 半双工通信，使用的是 S7-200 SMART 的自由口功能，以下说明以CPU Port0 自由口功能切换为例。

紧凑型 CRs CPU 模式切换方法

由于紧凑型 CRs CPU（CR20s、CR30s、CR40s 和 CR60s）无以太网端口，所以 RS485 端口为编程端口。因此，如果用户程序使用 RS485 端口作为自由端口，则会引起冲突。用户程序将RS485 端口用作自由端口时，STEP 7-Micro/WIN SMART V2.3 无法与CPU 通信。

切换方法：

自由口通信切换到PPI模式： 有以下两种方法：

  • 1.将USB-PPI 电缆连接到CPU的 RS485 端口，会强制CPU退出自由端口模式并启用 PPI 模式，CPU并不停机。这是CPU固件2.3版新增功能，会使 STEP 7-Micro/WIN SMART V2.3 恢复CPU 控制，实现上载或下载功能。 如果USB-PPI 电缆一直连接到CPU的 RS485 端口，则CPU无法启用自由端口。

  • 2.未连接 USB-PPI 电缆，通过程序手动给SMB30赋值切换到PPI模式。

PPI模式切换到自由口通信： 移除 USB-PPI 电缆后，CPU 不会自动重启自由端口，以下两种方法可以切换到自由口通信：

  • 1.将 USB-PPI 电缆拔掉以后，断电重启CPU，并进入运行模式；

  • 2.将 USB-PPI 电缆拔掉以后，通过程序手动给SMB30赋值切换到自由口（该方法可以在PLC不断电的情况下实现模式切换）。

常问问题

为什么USB--PPI编程电缆接到CPU端口后能切换到PPI模式？

连接 USB-PPI 电缆后，CPU 采用 RS485 连接器的引脚9 进行检测。 USB-PPI 电缆的检查仅在 CRs 型号上进行。ST 和 SR 型号会忽略引脚9 的状态。确保所有用于自由端口的电缆 都未与CRs 型号的引脚9 连接。

图1.S7-200 SMART CPU 集成 RS485 端口的引脚分配

1.连接 USB-PPI 电缆后，CPU 采用 RS485 连接器的引脚 9 进行检测。USB-PPI电缆的检查仅在 CRs 型号上进行。ST 和 SR 型号会忽略引脚 9的状态。确保所有用于自由端口的电缆都未与 CRs 型号的引脚 9 连接。

RS232-PPI编程电缆接到CPU端口后能否切换到PPI模式？

不可以，SMART CPU通讯 RS485通讯下载程序只支持USB-PPI编程电缆，RS232电缆连接后无法使端口切换到PPI模式，可以使用RS232-PPI编程电缆做自由口通信。

标准型 ST/SR CPU如何实现自由口与PPI模式的切换？

ST 和 SR 型号会忽略引脚 9的状态,无法通过连接 USB-PPI 电缆，强制切换到PPI模式。可以考虑将CPU切换到STOP 模式，或者人为手动修改SMB30到PPI模式。其实标准型CPU 支持通过以太网下载，如果485接口用来做自由口通信，建议还是使用以太网的方式上载、下载、监控程序。

CRs CPU做自由口通讯信，程序、接线均正常，但是无法正常通信？

CRs CPU 会对485接口 9 号引脚进行检测，从而判断端口模式，如果使用第三方的485连接器通讯，可能会导致端口无法切到自由口模式，影响通信，所以确保所有用于自由端口的电缆都未与 CRs 型号的引脚 9 连接。可以在程序里判断SMB30的状态，做一标志位显示在Q点，确认当前端口的模式。

推荐使用西门子原装DP接头通讯。


RS485端口进行软件更新固件

CPU 通过 RS485 接口从软件操作进行固件更新

S7-200 SMART 编程软件，从 V2.3 开始具有固件更新的功能。
S7-200 SMART V2.3 CPU 系列包含十二种 CPU 型号，分为两条产品线：紧凑型产品线和标准型产品线。
紧凑型 CPU 四种: CPU CR20s、CPU CR30s、CPU CR40s 和 CPU CR60s ,V2.3 版本不适用于 CR40 和 CR 60 CPU，即 CR40 和 CR60 的 CPU 固件版本只到 V2.2 版本，V2.3 版本 CPU 中不包含。
标准型 CPU 八种：ST （ST20、ST30、ST40、ST60 ) 和 SR ( SR20、SR30、SR40、SR60 )

紧凑型 CPU 无以太网端口，仅 CPU 本体集成一个 RS485 端口，此端口作为 CPU 的唯一编程端口。使用 STEP 7 Micro/WIN SMART 和 USB-PPI 电缆可以进行上传和下载程序、监控程序、执行固件更新。
紧凑型 CPU 没有 microSD 读卡器或任何与使用 microSD 卡相关的功能，不支持使用 microSD 卡。
因此，如果紧凑型 CPU 需要进行固件更新，仅可通过 RS485 端口从软件上操作完成。

标准型 CPU 各个固件版本均支持使用 Micro SD 卡进行固件更新；如果使用软件固件更新，需要保证 CPU 固件版本在 V2.3 及以上。
V2.3 版本标准型 CPU ,可以支持以太网端口使用网线或者 RS485口 使用 USB-PPI 编程电缆进行更新。

使用的CPU类型及固件更新方法对应情况如表1.所示：

CPU固件更新 | ST | SR | CR | CRs
Micro SD更新 | X | X | X | --
使用软件更新 | C | C | -- | X
表1.CPU类型及固件更新方法

X：表示支持
-- : 表示不支持
C : 表示固件版本在 V2.3 及以上支持

使用编程软件进行固件更新，前提条件：
1、编程软件使用V2.3及以上版本。
2、要更新固件的硬件，固件版本为 V2.3 或更高版本的模块的固件。
3、如果使用编程电缆需要使用USB-PPI电缆,订货号：6ES7 901-3DB30-0XA0；不支持使用 RS232 / RS 485编程电缆更新固件，订货号：6ES7 901-3CB30-0XA0。

操作步骤

此文档旨在体现从软件进行固件更新的操作步骤，在写此文档时，所有 CPU 固件最高版本只到 V2.3
所以，以标准 CPU(ST60 )为例,事先将 ST60 的固件使用 Micro SD 卡升级到 V2.3 版本，然后使用编程软件进行固件更新，更新后的固件版本依然是 V2.3版本
CRs 的CPU 固件更新方法亦可以参考此步骤

1.连接 PLC 与编程电脑，通信接口可以选择以太网卡或者选择 PC/PPI cable. PPI，需要注意：紧凑型 CPU 仅能使用 RS485接口更新固件，所以只能选择 PC/PPI cable. PPI

图1.通信接口设置

2. 鼠标点击PLC，PLC 菜单功能区的“信息”(Information) 区域单击 PLC 按钮

图2.菜单栏选择 PLC

3. 在 显示“PLC 信息”(PLC Information) 对话框中，点击“固件更新”按钮。

图3.选择固件更新

4. 单击“固件更新”(Firmware Update) 按钮。STEP 7-Micro/WIN SMART 显示“固件更新”(Firmware Update) 对话框

图4.固件更新窗口

5.单击“浏览”(Browse) 按钮进行浏览，以找到与您的 CPU 或任一连接的模块对应的固件更新 (.upd) 文件

图5.浏览固件更新文件

6.单击“更新”(Update) 按钮更新对应设备的固件。运行 CPU 固件更新需要数分钟时间，具体取决于通信接口类型及波特率设置。
更新期间，CPU 的固件更新会禁用 CPU 输出。扩展模块或信号板的固件更新会在更新期间禁用该模块或信号板。

图6.更新中

7.固件更新完成后，STEP 7-Micro/WIN SMART 会加以指示。 固件更新完成后单击“关闭”(Close) 按钮。

图7.固件更新完成

8.为 CPU 和所有模块循环上电。固件更新后，所有 CPU 输出和模块均可循环上电。

9.通过查看 PLC 信息，查看固件版本是否更新成功

图8.查看更新后的固件版本

注意：
请勿在固件更新期间循环上电。如果在固件更新期间 CPU 电源掉电，CPU 会恢复为您启动更新之前的固件版本。如果在固件更新期间模块电源掉电，该模块会恢复为上一个固件版本。模块也可能显示为失败，具体视掉电时间而定。在所有情况下，均会再次执行固件更新。

常见问题

使用编程软件进行固件更新，更新速度慢？
使用编程软件进行固件更新，更新时间取决于更新固件时使用的接口类型及选择的波特率。
使用以太网接口时，CPU 固件更新大约需要 2 分钟
使用 RS485 端口和 USB/PPI 多主站电缆时，完成固件更新大约需要以下时间（分钟），RS485 端口的波特率，取决于下载到 CPU 中的系统块中设定的端口波特率，出厂默认值为9.6 Kbps：
187.5 Kbps 时 5 分钟；
19.2 Kbps 时 25 分钟；
9.6 Kbps 时 55 分钟。

所以，想提高固件更新速率，按照如下方法：
标准型 CPU 固件更新：优先考虑使用 Micro SD 卡进行；如果固件版本在 V2.3及以上使用软件更新固件，优先考虑使用以太网口和网线更新；如果使用 RS485 端口，可以在系统块中增加 CPU 通信端口波特率设置。
紧凑型 CPU 固件更新：只能使用 RS485口进行固件更新，允许的情况下，增大通讯端口的波特率更新，以提高更新速率。

使用软件进行固件更新失败，怎么检查？
1、检查是否满足使用软件更新固件的前提条件：
编程软件使用V2.3及以上版本。
要更新固件的硬件，固件版本为 V2.3 或更高版本的模块的固件。
如果使用编程电缆需要使用USB-PPI电缆,订货号：6ES7 901-3DB30-0XA0；不支持使用 RS232 / RS 485编程电缆更新固件，订货号：6ES7 901-3CB30-0XA0。
2、检查进行固件更新的 CPU 类型：标准型 CPU 使用软件进行固件更新，需要保证 CPU的固件版本在 V2.3 及以上版本。
3、固件更新过程中不要断电，或者重启设备。
4、更新固件完毕后，需要将 CPU 循环上电 。


系统块设置

系统块

系统块提供S7-200 SMART CPU、信号板和扩展模块的组态。

系统块组态相关视频教程的链接如下：

  • S7-200 SMART 系统块的组态——跟我学35/52
  • S7-200 SMART 系统块的组态——跟我做36/52
  • S7-200 SMART PLC CPU系统属性Part1（西门子热线工程师内部学习讲座）
  • S7-200 SMART PLC CPU系统属性Part2（西门子热线工程师内部学习讲座）

使用以下方法之一查看和编辑系统块以设置CPU的选项：

• 在导航栏上单击“系统块”（System Block） [image] 按钮。

• 在“视图”（View）菜单功能区的“窗口”（Windows）区域内，从“组件”（Component）下拉列表中选择“系统块”（System Block）。

• 选择“系统块”（System Block）节点，然后按Enter，或在项目树中双击“系统块”（System Block）节点。STEP 7-Micro/WIN SMART 打开系统块 ，并显示适用于CPU类型的组态选项

图1.系统块设置窗口

硬件配置

“系统块”（System Block）对话框的顶部显示已经组态的模块，并允许添加和删除模块。使用下拉列表更改、添加或删除CPU型号、信号板和扩展模块。添加模块时，输入列和输出列显示已分配的输入地址和输出地址。

最好选择系统块中的CPU型号作为真正要使用的CPU型号。下载项目时，如果项目中的CPU型号与连接的CPU型号不匹配，STEP 7-Micro/WIN SMART 发出警告信息。您可继续下载，但如果连接的CPU不支持项目需要的资源和功能，将发生下载错误。

模块选择

系统块对话框底部显示在顶部选择的模块选项。单击组态选项树中的任意节点均可 修改所选模块的项目组态。

系统块包括CPU模块的以下组态选项：

• 通信
• 数字量输入和脉冲捕捉位
• 输出量输出
• 保持范围
• 安全
• 启动

其他设备（如模拟量输入、模拟量输出、RTD模拟量输入、RS485/RS232 CM01通信信号板以及附加数字量输入和输出）的组态选项可在添加这些模块时从系统块访问。

在下载或上传系统块之前，必须在STEP 7-Micro/WIN SMART 与CPU之间建立通信。 然后即可下载一个修改的系统块，以便为CPU提供新系统组态。您所输入的新属性在将修改内容下载到CPU时生效。

您也可以从CPU上传一个现有系统块，以使STEP 7-Micro/WIN SMART 项目组态与CPU组态相匹配。

常见问题

STEP 7-Micro/WIN SMART组态扩展模块时，找到不对应的模块？

随着S7-200 SMART 软件硬件的不断更新，可能会出现更新的模块无法在老版本的软件内组态的现象，遇到这种情况，可以将软件升级到最新版即可。

最新版的软件下载链接：编程软件（网页右侧--资料下载--编程软件）。

如何确认新增的产品与软件的对应关系？

可以参考S7-200 SMART PLUS文档（文档编号 A0666）--规格与技术数据（自行选择不同版本的新功能）


通信

组态通信

单击“系统块”（System Block）对话框的“通信”（Communication）节点组态以太网端口、背景时间和RS485端口。

图1.通信设置窗口

以太网端口

如果要让CPU从项目获取以太网端口信息，单击“IP地址数据固定为以下值且不能通过其他方式修改”（IP address data is fixed to the values below and cannot be changed by other means）复选框。然后可输入以下以太网信息：

• “IP地址”（IP Address）：每个设备必须有一个Internet 协议（IP）地址。设备使用此地址在更加复杂的路由网络中传送数据。

• “子网掩码”（Subnet Mask）：子网是已连接的网络设备的逻辑分组。在局域网（LAN）中，子网中的节点彼此之间的物理位置通常相对接近。子网掩码定义IP子网的边界。子网掩码255.255.255.0通常适用于本地网络。

• “默认网关”（Default Gateway）：网关（或IP路由器）是LAN之间的链路。LAN中的计算机可以使用网关向其他网络发送消息，这些网络可能还隐含着其他LAN。如果数据的目的地不在LAN内，网关会将数据转发给可将数据传送到其目的地的另一个网络或网络组。网关依靠IP地址来传送和接受数据包。

• “站名称”（Station Name）：站名称是在网络上定义的CPU名称。在“通信”(Communications)对话框中，请使用有助于识别CPU的名称。

站名称遵守标准DNS（域名系统）命名规范。S7-200 SMART CPU 将站名称限制为最多63个字符，其中包括小写字母a到z、数字0到9、连字符（减号）和句号。CPU禁用某些名称：

• 站名称不能有n.n.n.n格式，其中n取0到999中的值。
• 站名称不能以字符串port-nnn或port-nnn-nnnn开头，其中n取数字0到9中的值。例如，PORT-123和port-123-45678是非法站名称。站名称不能以连字符或句号开始或结束。

背景时间

可组态专门用于处理通信请求的扫描周期时间百分比。增加专门用于处理信息请求的时间百分比时，亦会增加扫描时间，从而减慢控制过程的运行速度。

专用于处理信息请求的默认扫描时间百分比被设定为10%。该设置在处理编译/状态监控操作和尽量减小 对控制过程的影响之间进行合理的折中。您可以调整该设置，每次增加5%，最大为50%。

RS485端口

使用以下设置 对板载RS485端口 调整系统协议通信参数。连接HMI设备时使用系统协议：

• RS485端口地址：单击滚动按钮输入所需CPU地址（1-126）.默认端口地址为2。
• 波特率：从下拉列表中选择所需数据波特率（9.6kbps、19.2kbps、187.5kbps）


数字量输入

组态数字量输入

单击 “系统块” (System Block) 对话框的 “数字量输入” (Digital Inputs) 节点组态数字量输入滤波器和脉冲捕捉位。

图1. 组态数字量输入设置窗口

数字量输入滤波器

S7-200 SMART CPU 允许为某些或所有数字量输入点选择一个定义时延（可在 0.2 ms 到 12.8 ms 和 0.2 μs 到 12.8 μs 之间选择）的输入滤波器。“系统块”中不能修改滤波时间的其他数字量输入通道，其滤波时间默认为12.8ms。

如果需要使用 S7-200 SMART 的高速计数器功能，需要手动修改滤波器的时间至 0.2 μs （也可根据速率设定成更长的滤波时间），否则在速率较高时将会造成高速计数器无法计数。 因为S7-200 SMART 与S7-200 不同，对于 S7-200 SMART ，用户可以根据输入信号速率不同自由设置滤波时间以便高速计数器过滤噪音。

通过设置输入延时，您可以过滤数字量输入信号。 输入状态改变时，输入必须在时延期限内保持在新状态，才能被认为有效。 滤波器会消除噪音脉冲，并强制输入线在数据被接受之前稳定下来。默认滤波时间是 6.4 ms。

要设置输入延迟，请按以下步骤操作：
1. 从一个或多个输入旁的下拉列表中选择延迟时间。
2. 单击 “确定” (OK) 按钮，输入选项。

如果数字量输入通道的滤波时间更改自以前的设置，则新的“0” 电平输入值可能需要保 持长达 12.8 ms 的累积时间，然后滤波器才会完全响应新输入。 在此期间，可能不 会检测到持续时间少于 12.8 ms 的短“0”脉冲事件或对其计数。 滤波时间的这种更改会引发意外的机械或过程操作，这可能会导致人员死亡、重伤和设备损坏。 为了确保新的滤波时间立即生效，必须关闭 CPU 电源后再开启。

脉冲捕捉位

S7-200 SMART CPU 为数字量输入点提供脉冲捕捉功能。通过脉冲捕捉功能可以捕捉高电平脉冲或低电平脉冲。此类脉冲出现的时间极短，CPU 在扫描周期开始读取数字量输入时，可能无法始终看到此类脉冲。

当为某一输入点启用脉冲捕捉时，输入状态的改变被锁定，并保持至下一次输入循环更新。 这样可确保延续时间很短的脉冲被捕捉，并保持至 S7-200 SMART CPU 读取输入。
根据 CPU 型号，可按以下数字量输入点数单独启用脉冲捕捉操作：
● CPU CR40： 14
● CPU SR20： 12 （14，如果存在 SB DT04 ）
● CPU ST40/CPU SR40： 14 （16，如果存在 SB DT04 ）
● CPU ST60/CPU SR60： 14 （16，如果存在 SB DT04 ）

图2. S7-200 SMART CPU （脉冲捕捉启用和未启用）的基本操作状况

由于脉冲捕捉功能在输入通过输入滤波器后对输入进行操作，您必须调整输入滤波时间， 以防滤波器过滤掉脉冲。

图3. 数字量输入电路方框图


保持范围

组态保持范围

单击“系统块”(System Block)对话框的“保持范围”(Retentive Ranges) 节点组态在循环上电后保留下来的存储器范围。

图1.组态数据保存范围设置窗口

选择要在上电循环期间保持的存储区。 为 V 、M、T 或 C 存储器输入新值。
您可将下列存储区中的地址范围定义为保持： V 、M、T 和 C 。对于定时器，只能保持保持性定时器 (TONR) ，而对于定时器和计数器，只能保持当前值（每次上电时都将定时器和计数器位清零）。
默认情况下，CPU 中并未定义保持区域，但可组态保持范围以保持最多 10 KB 的存储器 空间。

CPU 断电后的数据保持

CPU 在断电和上电时对保持性存储器执行以下操作：
● 断电时： CPU 将指定的保持性存储器范围保存到永久存储器。
● 上电时： CPU 先将 V 、M、C 和 T 存储器清零，将所有初始值都从数据块复制到 V 存储器，然后将保存的保持值从永久存储器复制到 RAM 。

所有类型的 CPU，只要是在系统块里设置了数据保持的数据，断电后数据都会永久保存（不依靠于超级电容），但永久保存的存储区的范围最大为10K。对于未设置为数据保持的存储在RAM 中的数据，一旦掉电其数据就会丢失。超级电容可以用于保持实时时钟，一般上电24小时后通常保持7天。

表1.S7-200 SMART CPU 存储器地址保持范围

数据类型 | 描述 | CPU SR20 | CPU CR40 | CPU SR40 CPU ST40 | CPU SR60 CPU ST60
V | 数据存储器 | VB0-VB8191 | VB0-VB8191 | VB0-VB16383 | VB0-VB20479
T | 定时器 | T0-T31 T6-T95 | T0-T31 T6-T95 | T0-T31 T6-T95 | T0-T31 T6-T95
C | 计数器 | C0-C255 | C0-C255 | C0-C255 | C0-C255
M | 标志位 | MB0-MB31 | MB0-MB31 | MB0-MB31 | MB0-MB31

从 RAM 建立数据块

要将 CPU V 存储器当前值保存到数据块页面；或者执行下载操作，担心 RAM 区数据当前值丢失，可以在执行下载操作前，先执行从 RAM 建立数据块，备份 V 存储区的当前值。

操作方法如下：

1、备份好源程序，新建空白项目操作

2、选择 PLC > 从 RAM 建立数据块（Create Data Block from RAM）菜单命令。如图2所示

图2

3、PLC 处于运行状态，执行操作时，会提示 “ 设置 PLC 为 STOP 模式 ？”，选择是才可以继续执行此功能，如图3所示；如果操作前 PLC 已处于 STOP 状态，不会出现此对话框

注意：想要执行从 RAM 建立数据块功能，需要在 PLC 可以切换到 STOP 的情况下才可以操作！

图3

4、图3点击“是”之后出现下面的对话框，如图4所示，选择 “是” 将执行更新，将 CPU 中 RAM 区的 V 存储区数据当前值上传到数据块的数据页中。

如果执行操作时，使用的程序文件是源程序，选择 " Yes " 前，一定要注意源程序的备份！

图4

5、等待一段上传数据的时间，出现对话框，如图5 所示，点击" OK "，可以在数据块中查看 V 区数据

图5

执行从 RAM 建立数据块，上载到数据块中的数据有可能存放的位置

  • 用户定义1：上一次下载数据块时，在数据块中用户自定义过初始值
  • _PLC_DATA1：上一次下载数据块时，未定义初始值，在程序执行过程中修改过的 V 区地址，执行"从 RAM 建立数据块"命令时，这些已修改的地址会被指定给一个新的标签名
  • 向导生成的数据块（例如 PID1_DATA）:上一次下载数据块时，包含配置完向导后自动生成的数据块，比如 配置完 PID 后生成如 PID1_DATA 的数据块，执行"从 RAM 建立数据块"命令时，依然上传到此数据块中

6、将上传的各个数据块页面中的 V 区地址复制，粘贴到要下载的程序文件的数据块页面中，此时，一旦下载，数据块保存到 EEPROM 中，作为 V 存储区数据的初始值生效。

常见问题

为什么S7-200 SMART 系统块设置断电保持后，数据依旧无法实现断电保持？

可以根据以下步骤核对设置：

1.确保已设置断电保持的程序下载到PLC。

2.如果SMART PLC 有连接HMI、上位机或者其他PLC，请先断开相关的通讯设备，再做测试，避免这些设备给PLC相关地址不断更新数据。

3.如果根据以上步骤测试均无效，请创建一个空项目，只做系统块断电保持设置，重新下载程序后通过状态图表给断电保持范围内某一地址写入新值后将PLC断电再上电查看。


数字量输出

组态数字量输出

单击 “系统块” (System Block) 的 “数字量输出” (Digital Outputs) 节点组态所选模块的数字量输出选项。

图1. 组态数字量输出设置窗口

当 CPU 处于 STOP 模式时，可将数字量输出点设置为特定值，或者保持在切换到 STOP模式之前存在的输出状态。
STOP 模式下，有两种方法可用于设置数字量输出行为：
● “将输出冻结在最后状态” (Freeze Outputs in last state) ： 单击此复选框，就可在进行RUN 到STOP 转换时将所有数字量输出冻结在其最后的状态。
● “替换值” (Substitute value)： 如果 “将输出冻结在最后状态” (Freeze Outputs in last state) 复选框未选中，只要 CPU 处于 STOP 模式，此表就允许选择每个输出所需状态。 单击要设置为 ON (1) 的每个输出的复选框。 数字量输出的默认替换值为 OFF (0)。


系统安全

组态系统安全

单击“系统块”(System Block)对话框的“安全”(Security) 节点组态 CPU 的密码及安全设置。

图1. 组态安全窗口

密码可以是字母、数字和符号的任意组合，区分大小写。

密码保护权限级别

CPU 提供四级密码保护，“完全权限” （1 级）提供无限制访问，“不允许上传” （4 级）提供最受限制的访问。 S7-200 SMART CPU 的默认密码级别是“完全权限” （1 级）。

CPU 密码授权访问 CPU 功能和存储器。 未下载 CPU 密码（“完全权限” （1 级））情况下，S7-200 SMART CPU 允许无限制访问。 如果已组态比“完全权限” （1 级）级别更高的访问权限并下载 CPU 密码，则 S7-200 SMART CPU 要求输入密码以访问下表定义的CPU 操作。

即使密码已知，“不允许上传” （4 级）密码限制也对用户程序（知识产权）进行保护。 4 级权限无法实现上传，只有在 CPU 没有用户程序时才能更改权限级别。 因此，即使有人 发现密码，您也始终能够保护用户程序。

表1. S7-200 SMART CPU 密码保护权限级别

操作说明 | 完全权限（1 级） | 读取权限（2 级） | 最低权限（3 级） | 不允许上传（4 级）
读取和写入用户数据 | 允许 | 允许 | 允许 | 允许
CPU 的启动、停止和上电复位 | 允许 | 有限制 | 有限制 | 有限制
读取日时钟 | 允许 | 允许 | 允许 | 允许
写入日时钟 | 允许 | 有限制 | 有限制 | 有限制
上传用户程序、数据和 CPU 组态 | 允许 | 允许 | 有限制 | 不允许
下载程序块、数据块或系统块 | 允许 | 有限制 | 有限制 | 有限制 注： 如果 存在用户程序块，不允许对系统块行操作。
复位为出厂默认设置 | 允许 | 有限制 | 有限制 | 有限制
删除程序块、数据块或系统块 | 允许 | 有限制 | 有限制 | 有限制 注： 如果 存在用户程序块，不允许对系统块行操作。
将程序块、数据块或系统块复制到存储卡 | 允许 | 有限制 | 有限制 | 有限制
强制状态图中的数据 | 允许 | 有限制 | 有限制 | 有限制
执行单次或多次扫描操作 | 允许 | 有限制 | 有限制 | 有限制
在 STOP 模式下写入输出 | 允许 | 有限制 | 有限制 | 有限制
复位 PLC 信息中的扫描速率 | 允许 | 有限制 | 有限制 | 有限制
程序状态 | 允许 | 有限制 | 有限制 | 不允许
项目比较 | 允许 | 允许 | 有限制 | 不允许

通信写入限制

可对 V 存储器特定范围的通信写入进行限制，禁止对其它存储区进行通信写入（I、Q、AQ 和 M ）。 要对 V 存储器特定范围的通信写入进行限制，选中“限制”(Restrict) 复选框，以字节为单位组态 V 存储器范围。

此区域可小到没有字节，大到整个 V 存储器。

使用此功能，用户程序可先验证写入此存储器子集的数据，然后再在应用程序中使用数据，以获得更好的安全性。 请注意，这些限制只适用于通信写入（例如从 HMI 、 STEP 7-Micro/WIN SMART 写入或 PC 访问），不适用于用户程序写入。

如果限制对 V 存储器特定范围的写访问，确保“文本显示”模块或 HMI 只在 V 存储器的可写范围内写入。 此外，如果使用 PID 向导、PID 控制面板、运动控制向导或运动控制面板，确保这些向导或面板使用的 V 存储器在其可写范围内。

禁用此项限制时，可写入存储区的全部范围，包括 I 、Q、M、V 和 AQ 。

串行端口模式更改和日时钟 (TOD) 写入

无需密码也可通过串行端口（内置 RS485 和 RS485/RS232 信号板）允许 CPU 模式更改（go-to-RUN 和 go-to-STOP ）和 TOD 写入。 为此，在“ 串行端口”(Serial Ports) 部分选中 “允许” (Allow) 复选框。 此复选框可向下兼容不提示这些功能的密码的旧版 HMI 。 下列选项可用：

● 如果已选中此复选框且 CPU 受密码保护，则可使用这些旧版 HMI 更改工作模式和进行 TOD 写入。
● 如果未选中此复选框且 CPU 受密码保护，无法使用这些旧版 HMI 更改工作模式和进行 TOD 写入。
● 如果 CPU 不受密码保护，无论是否选中复选框，都可使用这些旧版 HMI 更改工作模式和进行 TOD 写入。

访问受密码保护的 CPU

输入受密码保护的 CPU 的密码后，当编程设备从 S7-200 SMART CPU 断开后，该密码的授权级别最多可保持一分钟有效时间。 始终在断开电缆之前退出 STEP 7-Micro/WIN SMART，以防另一位用户未经授权擅自访问。

通过网络输入密码并不影响 S7-200 SMART CPU 的密码保护。 如果一位授权用户通过网络访问受限功能，则不授权其他用户访问这些功能。 在某一时刻，只允许一位用户无限制访问 S7-200 SMART CPU 。

禁用密码

由于 1 级权限允许所有不受限制的 CPU 访问，因此可通过将权限级别 4 、3 或 2 更改为“完全权限” （1 级）来禁用密码。

如果权限级别为“不允许上传” （4 级），存在有效用户程序时无法通过新的密码级别下载 新的系统块。 必须首先删除该用户程序，然后才能下载更新的系统块。

常问问题

忘记密码怎么办？

没有解密的方法，有关清除密码的方法，参见：清除CPU密码


启动选项

组态启动选项

单击“系统块”(System Block) 对话框的“启动”(Startup) 节点组态 PLC 的启动选项。

图1. 组态启动选项设置窗口

CPU模式

可从此对话框选择 CPU 启动后的模式。 可以选择以下三种模式之一：
● STOP ：CPU 在上电或重启后始终应该进入 STOP 模式（默认选项）。
● RUN ：CPU 在上电或重启后始终应该进入 RUN 模式。 对于多数应用，特别是对 CPU 独立运行而不连接 STEP 7-Micro/WIN SMART 的应用，RUN 启动模式选项是正确选择。
● LAST ：CPU 应进入上一次上电或重启前存在的工作模式。 此选项可用于程序开发或调试。 请注意，正在运行的 CPU 可能由于多种原因而进入 STOP 模式，如信号模块故障、出现扫描看门狗超时、存储卡插入或上电不稳定事件。 CPU 进入 STOP 模式后，每次上电时 CPU 都会继续进入 STOP 模式。 必须通过 STEP 7-Micro/WIN SMART 将
CPU 恢复到 RUN 模式。

硬件选项

还可组态 CPU 以允许在以下硬件条件下以 RUN 模式运行：
● 缺少在 CPU 中存储的硬件配置内指定的一台或多台设备。
● CPU 中存储的硬件配置与实际存在的设备之间存在差别，导致配置错误（例如，离散 、输入模块取代了组态的离散输出模块）。
如果不选择以上选项之一或全部并有任一禁止条件为真，则禁止 CPU 进入 RUN 模式。


模拟量输入

组态模拟量输入

单击“系统块”(System Block) 对话框的“模拟量输入”(Analog Inputs) 节点为在顶部选择的模拟量输入模块组态选项。

图1.模拟量输入设置窗口

对于每条模拟量输入通道，都将类型组态为电压或电流。 为偶数通道选择的类型也适用于奇数通道： 为通道 0 选择的类型也适用于通道 1 ，为通道 2 选择的类型也适用于通
道 3 。
然后组态通道的电压范围或电流范围。 可选择以下取值范围之一：
● +/- 2.5v
● +/- 5v
● +/- 10v
● 0 - 20mA

注意：同一个通道组为同一种信号类型，不同的通道组可以接不同的信号类型。

“抑制”(Rejection)

传感器的响应时间或传送模拟量信号至模块的信号线的长度和状况，也会引起模拟量输入值的波动。 在这种情况下，波动值可能变化太快，导致程序逻辑无法有效响应。 可组态模块对信号进行抑制，以在下列频率点消除或最小化噪声：
● 10 Hz
● 50 Hz
● 60 Hz
● 400 Hz

“平滑”(Smoothing)

可组态模块在组态的周期数内平滑模拟量输入信号，从而将一个平均值传送给程序逻辑。
有四种平滑算法可供选择：
● 无（无平滑）
● 弱
● 中
● 强

报警组态

可为所选模块的所选通道选择是启用还是禁用以下报警：
● 超出上限
● 超出下限
● 用户电源（在系统块“模块参数”(Module Parameters) 节点组态，参见下图。）

图2.报警设置窗口

常见问题

模拟量输入支持的距离是多长？

100 m 屏蔽双绞线


模拟量输出

组态模拟量输出

单击“系统块”(System Block)对话框的“模拟量输出”(Analog Outputs) 节点为在顶部选择的模拟量输出模块组态选项。

图1.模拟量输出设置窗口

对于每条模拟量输出通道，都将类型组态为电压或电流。

范围

组态通道的电压范围或电流范围。 可选择以下取值范围之一：
● +/- 10v
● 0 - 20mA

STOP 模式下的输出行为

当 CPU 处于 STOP 模式时，可将模拟量输出点设置为特定值，或者保持在切换到 STOP模式之前存在的输出状态。
STOP 模式下，有两种方法可用于设置模拟量输出行为：
● “将输出冻结在最后状态”(Freeze outputs in last state)： 单击此复选框，就可在 PLC 进行 RUN 到 STOP 转换时将所有模拟量输出冻结在其最后值。
● “替换值”(Substitute value) ： 如果“将输出冻结在最后状态”(Freeze outputs in last state) 复选框未选中，只要 CPU 处于 STOP 模式就可输入应用于输出的值（-32512 到 32511 ）。 默认替换值为 0 。

报警组态

可为所选模块的所选通道选择是启用还是禁用以下报警：
● 超出上限
● 超出下限
● “断路”(Wire break) （仅限电流通道）
● “短路”(Short circuit) （仅限电压通道）
● 用户电源（在系统块“模块参数”(Module Parameters) 节点组态，参见下图。）

图2.报警设置窗口


RTD模拟量输入

组态 RTD 模拟量输入

单击“系统块”(System Block)对话框的 RTD 模拟量输入节点为在顶部选择的RTD 模拟量输入模块组态选项。

图1.组态RTD设置窗口

RTD 模拟量输入模块为电阻测量提供端子 I+ 和 I- 电流。 电流流经电阻，以测量其电压。 电流电缆必须直接接线到电阻温度计/ 电阻上。
RTD 模拟量输入模块为 4 线制或 3 线制编程的测量可补偿线路阻抗，并返回一个相当高精度的测量结果（与 2 线制比较）。

RTD 类型组态

选择以下选项之一，为每条 RTD 输入通道组态类型：
● 电阻，4 线制
● 电阻，3 线制
● 电阻，2 线制
● 热敏电阻，4 线制
● 热敏电阻，3 线制
● 热敏电阻，2 线制

RTD类型和可用电阻、RTD温度系数详情参见S7-200 SMART 系统手册

标定

选择以下选项之一为通道组态温度标定：
● 摄氏度
● 华氏

对于“ 电阻，4 线制”，“ 电阻，3 线制”和“ 电阻，2 线制” RTD 类型和相关电阻，无法组态温度系数和温度标定。

“抑制”(Rejection)

传感器的响应时间或传送 RTD 模拟量信号至模块的信号线的长度和状况，也会引起 RTD 模拟量输入值的波动。 在这种情况下，波动值可能变化太快，导致程序逻辑无法有效响 应。 可组态模块对信号进行抑制，以在下列频率点消除或最小化噪声：
● 10 Hz
● 50 Hz
● 60 Hz
● 400 Hz

平滑”(Smoothing)

可组态模块在组态的周期数内平滑 RTD 模拟量输入信号，从而将一个平均值传送给程序逻辑。 有四种平滑算法可供选择：
● 无
● 弱
● 中
● 强

报警组态

可为所选 RTD 模块的所选通道选择是启用还是禁用以下报警：

● 断路
● 超出上限
● 超出下限
● 用户电源：在系统块“模块参数”(Module Parameters) 节点组态，参见下图。

图2. 报警设置窗口


通信信号板

组态通信信号板

击“系统块”(System Block) 对话框的“通信”(Communication) 节点组态在顶部选择的 RS485/RS232 CM01 通信信号板选项。

图1.组态通信窗口

CM01 信号板类型组态：

从下拉列表中选择以下选项之一组态 CM01 信号板类型：
● RS485
● RS232

地址

单击滚动按钮为 RS485 或 RS232 端口输入所需端口地址 (1-126) ： 默认端口地址为 2 。

波特率

从下拉列表中选择所需数据波特率：
● 9.6 kbps
● 19.2 kbps
● 187.5 kbps


清除PLC存储区

要清除指定的 PLC 存储区，按以下步骤操作：

1. 确保 PLC 处于 STOP 模式。

2. 在 PLC 菜单功能区的“修改”(Modify) 区域单击“清除”(Clear) 按钮。

图1. 清除按钮

清除 PLC 存储区影响数字量和模拟量输出的状态。 默认设置是让数字量和模拟量输出使用替换值 0 。如果已为数字量或模拟量输出定义不为 0 的替换值或选择“冻
结”(Freeze)，则在删除系统块时需要注意，您将删除替换值和冻结信息，因此输出将返回默认值 0 。此外，如果执行选择性清除以保留系统块而删除程序块，则模拟量输
出冻结在其当前值。 直至您下载新的程序块，对模拟量输出状态进行更改的唯一方法是使用状态图。

清除 PLC 存储区时，如果 S7-200 SMART PLC 与设备相连，对数字量输出状态的更改可发送到该设备。 如果清除了 PLC 存储区，却没有仔细考虑对数字量和模拟量
输出的影响，设备操作可能出现无法预料的状况，这可能导致人员死亡或严重伤害和设备损坏。

请始终采用适当的安全预防措施，并在清除 PLC 存储区之前确保进程处于安全状态。

3. 选择要清除的内容 - 程序块、数据块、系统块或所有块，或选择“复位为出厂默认设置 ”(Reset to factory defaults) 。

4. 单击“清除”(Clear) 按钮。

图2. 清除选项窗口

清除 PLC 存储器要求 PLC 处于 STOP 模式，然后根据选择删除所选块或将 PLC 复位为出厂默认设置。 清除操作并不清除 IP 地址和站名称，也不复位日时钟。执行后，“复位为出厂默认设置”(Reset to factory defaults) 删除所有块，将所有用户存储器都复位为初始上电状态，并将所有“特殊存储器”都复位为初始值。

忘记 PLC 密码怎么办？

如果忘记 PLC 密码，必须从专为此目的而设计的“复位为出厂默认存储卡”(reset-to-factory-defaults memory card) (页 129) 清除 PLC 存储器。

在 RUN 模式下将存储卡插入 CPU 导致 CPU 自动转换到 STOP 模式。 如果已插入存储卡，无法将 CPU 更改为 RUN 模式。将存储卡插入正在运行的 CPU 可导致过程操作中断，可能引起人员死亡或严重伤害。 插入存储卡前，务必确保 CPU 处于 STOP 模式。

要使用存储卡清除 PLC ，按以下步骤操作：

1. 插入复位为出厂默认存储卡。 CPU 切换到 STOP 模式并且 STOP LED 闪烁。
2. 对 CPU 循环上电。 CPU 使 RUN/STOP LED 闪烁，直到复位完成（大约一秒），然后 STOP LED 闪烁，表示复位结束。
3. 卸下存储卡。
4. 对 CPU 循环上电。 CPU 复位为出厂默认设置。 之前的 IP 地址和波特率设置都均已清除，但日时钟不受影响。
CPU 复位后，可分配一个新密码并开始编程，也可从硬盘或从另一个程序传送存储卡加 载程序 。

如果从存储卡或硬盘上的文件加载密码保护程序，必须输入密码才能访问保护区域。 没有密码不能访问密码保护程序组件，不输入密码也不能清除分配的密码。


设置“助记符”选项

因为用户此时选择的助记符集为“SIMATIC” 。将其改为“国际”可以改为大家习惯的显示方式。

操作步骤如下：

1. 点击“工具”菜单中的“选项”（如图 1)

图1. 工具选项

2. 选择“常规”标签，将“助记符集”改为“国际。

图2. 选项设置对话框

如此，再编程时输入I*.*、Q*.*、AIW*、AQW*，便不会自动变为E*.*、A*.*、AEW*、AAW*。


模拟量- 换算

模拟量比例换算

因为A/D（模/数）、D/A（数/模）转换之间的对应关系，S7-200 SMART CPU内部用数值表示外部的模拟量信号，两者之间有一定的数学关系。这个关系就是模拟量/数值量的换算关系。

例如，使用一个0 - 20mA的模拟量信号输入，在S7-200 SMART CPU内部，0 - 20mA对应于数值范围0 - 27648；对于4 - 20mA的信号，对应的内部数值为5530 - 27648。

如果有两个传感器，量程都是0 - 16MPa，但是一个是0 - 20mA输出，另一个是4 - 20mA输出。它们在相同的压力下，变送的模拟量电流大小不同，在S7-200 SMART内部的数值表示也不同。显然两者之间存在比例换算关系。模拟量输出的情况也大致相同。

上面谈到的是0 - 20mA与4 - 20mA之间换算关系，但模拟量转换的目的显然不是在S7-200 SMART CPU中得到一个0 - 27648之类的数值；对于编程和操作人员来说，得到具体的物理量数值（如压力值、流量值），或者对应物理量占量程的百分比数值要更方便，这是换算的最终目标。

通用比例换算公式

模拟量的输入/输出都可以用下列的通用换算公式换算：

Ov = [(Osh - Osl)*(Iv - Isl)/(Ish - Isl)] + Osl

其中：

Ov:
换算结果
Iv:
换算对象
Osh:
换算结果的高限
Osl:
换算结果的低限
Ish:
换算对象的高限
Isl:
换算对象的低限

它们之间的关系可以图示如下：

图1. 模拟量比例换算关系

量程转化指令库

为便于用户使用，这里提供了量程转化库，用户可以添加到自己的Micro/WIN编程软件中应用。

模拟量比例换算指令库

注意：此指令库/程序的作者和拥有者对于该软件的功能性和兼容性不负任何责任。使用该软件的风险完全由用户自行承担。由于它是免费的，所以不提供任何担保，错误纠正和热线支持，用户不必为此联系西门子技术支持与服务部门。

在这个指令库中，子程序S_ITR用来进行模拟量输入到S7-200 SMART 内部数据的转换；子程序S_RTI可用于内部数据到模拟量输出的转换。

编程举例：

将4 - 20mA模拟量输入转换为内部百分比值 | 将内部百分比值转换为4 - 20mA模拟量输出

图2. 编程举例

热电阻、热电偶比例换算

温度模拟量输入模块（EM231 TC、EM231 RTD）所读取的数据是温度测量值的10倍（摄氏或华氏温度）。如AIW16里监控到520相当于实际温度52.0度。，可以自己做运算，当然也可以按照上文图2中的步骤做量程转换，调整上下限即可。


Library - Clock Integer

Clock_Integer 指令库及其使用

使用 S7-200 SMART的 READ_RTC（读取实时时钟）和 SET_RTC（设置实时时钟）指令时， 读取和设置的数据格式都是 BCD 码的。如果觉得不便计算、处理，可使用 Clock Integer 指令库。

Clock_Integer 指令库用于将 BCD 码格式的 S7-200 SMART日期、时间转换为十进制整数格式，以及将十进制整数格式的日期、时间值设定为 S7-200 SMART时钟。

注意：此指令库/程序的作者和拥有者对于该软件的功能性和兼容性不负任何责任。使用该软件的风险完全由用户自行承担。由于它是免费的，所以不提供任何担保，错误纠正和热线支持，用户不必为此联系西门子技术支持与服务部门。

要使用 Clock_Integer 指令库，须遵循下列步骤：

  1. 取得 Clock_Integer 指令库文件，并添加到编程软件 STEP 7-Micro/WIN SMART中；
  2. 按照要求编写用户程序调用 Clock_Integer 指令库。

添加 Clock_Integer 指令库

Clock_Integer 指令库

点击上面的链接下载 Clock_Integer 指令库到本地计算机硬盘， 然后将指令库库手动添加到STEP 7 Micro/WIN SMART软件中。

成功添加指令库后，用户可以在STEP7 Micro/win的指令树中找到‘Clock_Integer (v1.1)'

图1.Clock_Integer 库

Clock_Integer 指令库编程应用 － 读取系统时钟

1、调用 READ_RTC_I，读取 PLC 时钟 ，并将其转换为十进制整数格式 ：

图 2. READ_RTC_I

表 1. READ_RTC_I参数
参数 | 数据类型 | 注释
EN | BOOL | 信号为‘1’时激活库指令
Address | DWORD | 起始偏移地址，转换为十进制格式的 PLC 时钟被保存在以此地址为起始地址的 8 个字节中

2、分配库存储区：

调用指令 READ_RTC_I 或 SET_RTC_I 后，必须定义 8个字节的 V 存储区为库存储区，库存储区分配过程如图3. 所示。

图 3. 分配库存储区

注意：库存储区分配地址不能与程序中其他部分使用的地址重叠！

表2. 字节时间缓冲区的格式
Address | 年
Address＋1 | 月
Address＋2 | 日
Address＋3 | 小时
Address＋4 | 分钟
Address＋5 | 秒
Address＋6 | 保留
Address＋7 | 星期(1)
(1) 1 = 星期天；7 = 星期日；0 = 禁止星期

如图 2 所示，当 V50.0 为 ‘1’ 时，转换后的实时时钟被存储在 VB10 至 VB17 中。

注意：此指令库读取的整数格式时钟数据以连续字节的形式保存，而后续的整数运算需要一个字（两个字节）长度的数据。编程时要注意这一点。

Clock_Integer 指令库编程应用 － 设置系统时钟

1、调用 SET_RTC_I，将以十进制整数格式存储的日期时间设定为 PLC 时钟

图4.SET_RTC_I

参数 | 数据类型 | 注释
EN | BOOL | 信号为‘1’时激活库指令
Address | DWORD | 起始偏移地址，以此地址为起始地址的 8 个字节中，应已经存储着用户时间数据

表 3. SET_RTC_I 参数

8 字节时间缓冲区的格式同表 2。

2、分配库存储区：

调用指令 READ_RTC_I 或 SET_RTC_I 后，必须定义 8 个字节的 V 存储区为库存储区。

Clock_Integer 指令库应用例程

Clock_Integer 指令库例子程序

注意：此指令库/程序的作者和拥有者对于该软件的功能性和兼容性不负任何责任。使用该软件的风险完全由用户自行承担。由于它是免费的，所以不提供任何担保，错误纠正和热线支持，用户不必为此联系西门子技术支持与服务部门。

注意：

  • 在使用 ‘SET_RTC_I’ 设定 PLC 时钟时，被设定的时间必须有实际意义，否则设定操作不能成功完成。例如： 不能将月份设为 13，或者将分钟设为 61 等。
  • Address 端必须输入地址指针，如：&VB10，&VB20；或者为双字地址，如：VD100，MD10，AC0等，在该地址中存有地址。

常问问题：

Clock_Integer 指令库和STEP 7 Micro/WIN SMART指令树中的读、写实时时钟指令有什么不同？

Clock_Integer 指令库读出或写入的 PLC 时钟是以十进制整数格式存储；而读、写实时时钟指令读出或写入的 PLC 时钟为 BCD 码格式。


V90 Modbus Library 使用

V90 Modbus Library 简介

S7-200 SMART V90 Modbus Library 可以支持速度及内部位置控制，如图1。所有的功能块都编写成了子程序，使用时只需将相应的子程序拷贝到项目中即可， 但要注意避免使用与子程序中重复的地址。

图1. V90 Modbus Library

优势

1. 在 PLC 侧不必编写任何位控程序，只需调用 S7-200 SMART V90 Modbus Library 即可。

2. 不必查询V90 中的参数号，只需通过库的接口参数输入相应的速度，位置以及控制参数

3. 库例程中已经做好轮询程序，用户只需稍做修改就可用在自己的项目中

注意：由于Modbus RTU 是串口通信，实时响应与直接脉冲控制相比要慢，特别是控制多轴时

软硬件要求

序号 | 软硬件要求
1 | S7-200 SMART CPU V2.1
2 | STEP7-Micro/WIN SMART V2.1 Update 2
3 | V90 驱动器 V1.05 以上
4 | SINAMICS V-ASSISTANT V1.03

SINAMICS V-ASSISTANT 设置V90

使用S7-200 SMART V90 Modbus Library 之前要先用SINAMICS V-ASSISTANT 软件对 V90 进行设置（或是直接在V90上进行参数设置）

1. 使用USB电缆连接V90与装有SINAMICS V-ASSISTANT 的软件， 如图2。

图2. USB 电缆连接 V-ASSISTANT 与 V90

2. 打开SINAMICS V-ASSISTANT 软件，并点击“在线”，软件会自动检测出所使用的V90 的型号以及电机的型号，如此时可设置控制模式，如图3。

图3. 在线检测读出 V90 及电机型号

3. 定义IO输入输出分配，有些输入信号如果没有实际接入，可以通过软件中的强制实现，如图4。

图4. 输入输出分配

4. 仿真及测试电机，使用PLC 控制前可先进行 IO 及 电机测试，以便检测V90 侧没有任何问题，如图5。

图5. IO 仿真及电机测试

速度控制

1. 在 V-ASSISTANT中设置 V90 基本参数，如图6。

图6. V-ASSISTANT 中设置 V90 参数

2. 如果不使用 V-ASSISTANT， 则在 V90 上直接设置参数，如图7。

图7. V90 面板直接设置伺服驱动器参数

3. Modbus 初始化，设置的通信速率要与V90中的设置一致， 如图8。

图8. Modbus 初始化

4. 控制速度轴，如图9。

图9. 控制速度轴

参数定义如表1.

表1. 速度轴参数定义

EN | ：Bool 子程序使能信号；
COM_EN | ：Bool MBUS通讯触发信号， 上升沿有效，触发一次COM_EN信号，子程序中通讯操作轮询一次；
Slave_Addr | ：Byte V90 驱动MBUS通讯地址（P29004）；
CTW | ：WORD V90 驱动MBUS通讯控制字（40100），第0位SON_OFF1必须需要0-->1才能伺服使能；输入：16#41E-16#41F与V90中的40100一致，如果需要单独控制其它位，需要参照控制字每一位的含义，如图10；
SpeedSet | ：Real 速度给定（40101），范围 0.0 % --100.0%额定转速；例：如果额定速度为3000，输入20，则速度为3000*20%=600；
COM_Buf | ：DWORD MBUS读写操作缓冲区，指针变量 格式必须为 &VB，建议每个周间隔50 Bytes，例如Axis_1----&VB6000; Axis_2----&VB6050; Axis_3----&VB6100......；
Done | ：Bool 当前子程序扫描完成信号，可以用于下一个子程序的COM_EN触发信号，但是必须在下一个子程序扫描完成之后进行复位操作；
Active | ：Bool 当前子程序激活，正在处理；

图10. 控制速度 40100 参数定义

内部位置控制

内部位置控制可以实现相对位移和绝对位移的控制，可根据实际应用选择使用，如图11。

图11.位置控制程序块

相对定位控制

1. 在 V-ASSISTANT 中设置 V90 基本参数，如图12。

图12. V-ASSISTANT 中设置 V90 参数

2. 如果不使用 V-ASSISTANT， 则在 V90 上直接设置参数，如图13。

图13. V90 面板直接设置伺服驱动器参数

3. Modbus 初始化，设置的通信速率要与 V90 中的设置一致， 如图14。

图14. Modbus 初始化

4. 控制相对定位（通过40100参数中的 “POS_TYP" 参数来选择相对位定位)， 如图15。

图15. 控制相对定位

参数定义如表2.

表2. 相对定位接口参数定义

EN | ：Bool 子程序使能信号；
COM_EN | ：Bool MBUS通讯触发信号， 上升沿有效，触发一次COM_EN信号，子程序中通讯操作轮询一次；
Slave_Addr | ：Byte V90 驱动MBUS通讯地址（P29004）；
CTW | ：WORD V90 驱动MBUS通讯控制字（40100），位置模式给出 16#40E 到 16#40F，驱动使能，第0位SON_OFF1必须需要0-->1才能伺服使能；然后再给出16#41F，使得STEP_ACC有一个触发上升沿；如果需要单独控制其它位，需要参照V90位置模式IPOS下的控制字每一位的含义，如图16；
PositionSet | ：Dint 位置给定，对应于 LU；
SpeedSet | ：Dint 速度给定，对应于 SpeedSet * 1000 LU/MIN；
COM_Buf | ：DWORD MBUS读写操作缓冲区，指针变量 格式必须为 &VB，建议每个间隔100 Bytes，例如Axis_1----&VB7000; Axis_2----&VB7100; Axis_3----&VB7200......；
Done | ：Bool 当前子程序扫描完成信号，可以用于下一个子程序的COM_EN触发信号，但是必须在下一个子程序扫描完成之后进行复位操作；
Active | ：Bool 当前子程序激活，正在处理；

图16. 相对定位 40100 参数定义

绝对定位控制

绝对定位控制，V90 的基本参数设置与相对定位基本相同，如图12。除此之外，还需要对参考点进行参数设置。

1. 使用 V-ASSISTANT 选择参考点类型，如图17。

图17. 选择绝对定位参考点类型

2. 分配参考点输入地址，如图18。

图18. 分配参考点输入地址

3. 分配"参考点OK" 输出地址，当执行寻找参考点指令并寻参成功后， “REFOK” 输出置位为1，如图19。可使用该输出判断寻参成功后，执行绝对定位指令。

图19. 分配参考点OK" 输出地址

4. 控制绝对定位（通过40100参数中的“ POS_TYP" 参数来选择绝对定位)，图20。

图20. 控制绝对定位

注意：一定要在寻参成功后，即“REFOK”为1后，才可执行绝对定位。

表3. 绝对定位接口参数定义

EN | ：Bool 子程序使能信号；
COM_EN | ：Bool MBUS通讯触发信号， 上升沿有效，触发一次COM_EN信号，子程序中通讯操作轮询一次；
Slave_Addr | ：Byte V90 驱动MBUS通讯地址（P29004）；
CTW | ：WORD V90 驱动MBUS通讯控制字（40100），位绝对置模式给出 16#40E 到 16#40F，驱动使能，第0位SON_OFF1必须需要0-->1才能伺服使能；然后再给出16#240F，寻找参考点；用REFOK来判断寻参成功后，再给出16#46F，执行绝对定位操作。以后只要位置或速度变化就会立即执行，不需要再改变CWT的参数。如果需要单独控制其它位，需要参照V90位置模式IPOS下的控制字每一位的含义，如图21；
PositionSet | ：Dint 位置给定，对应于 LU；
SpeedSet | ：Dint 速度给定，对应于 SpeedSet * 1000 LU/MIN；
COM_Buf | ：DWORD MBUS读写操作缓冲区，指针变量 格式必须为 &VB，建议每个间隔100 Bytes，例如Axis_1----&VB7000; Axis_2----&VB7100; Axis_3----&VB7200......；
Done | ：Bool 当前子程序扫描完成信号，可以用于下一个子程序的COM_EN触发信号，但是必须在下一个子程序扫描完成之后进行复位操作；
Active | ：Bool 当前子程序激活，正在处理；

图21. 绝对定位 40100 参数定义

库程序及例程

所有的功能块都编写成了子程序，使用时只需将相应的子程序拷贝到项目中即可， 但要注意避免使用与子程序中重复的地址。程序里面不能多个轴使用一个子程序，如要增加新的轴可通过拷贝增加新的子程序，每一个轴对应一个子程序；具体应用程序包里面有一个3轴速度模式程序和2轴位置模式程序，可以按照这种方式进行修改；

注意：此程序的作者和拥有者对于该程序的功能性和兼容性不负任何责任。使用该程序的风险完全由用户自行承担。由于它是免费的，所以不提供任何担保，错误纠正和热线支持，用户不必为此联系西门子技术支持与服务部门。

ModbusV20Sample

常见问题

为什么修改了V90中的一些参数(如RS485 地址) 却不生效?

答：很多参数需要重新启动才会生效，注意参数后面的生效方式，图如22。

图22. 参数生效方式


STEP 7 Micro/WIN 指令库下载网址大全

STEP 7 Micro/WIN SMART指令库

STEP 7 Micro/WIN SMART可以集成两种类型的指令库，西门子提供的标准指令库和用户自定义的指令库。

1 标准指令库—Modbus RTU Library 、USS Library

功能：该标准指令库包括USS通信和Modbus RTU Slave/Master通信协议库。
安装STEP 7 Micro/WIN SMART 软件时Modbus RTU以及USS指令库已经被自动集成。

2 STEP 7 Micro/WIN附加指令库

注意：西门子全球技术资源网站为S7-200 CPU提供了些常用的指令库，但是目前还未提供S7-200 SMART所使用的指令库。S7-200 CPU使用的指令库可以被转化成S7-200 SMART CPU 指令库，具体步骤见如何将 Micro/WIN 的库文件导入到 Micro/WIN SMART 中。

注意：本文件已经将常见指令库转化成S7-200 SMART CPU 指令库，这些指令库可以被添加到STEP 7 Micro/WIN SMART软件，但是这些指令库的功能性和兼容性未在S7-200 SMART CPU进行充分验证， 使用这些指令的风险完全由用户自行承担，西门子不提供任何担保、错误纠正和热线支持，用户不必为此联系西门子技术支持部门。

这些指令库的功能、使用说明请参考西门子全球技术资源网站关于其相应S7-200指令库的介绍。

2.1 Toggle

功能：使用该库指令可以实现一个输出线圈随输入点接通而不断翻转状态。
S7-200 CPU库文件下载地址：http://support.automation.siemens.com/CN/view/zh/1032831
S7-200 SMART CPU 库文件

2.2 Clock_integer

功能：由于S7-200时钟指令的数据格式是BCD码，使用该库指令可以直接读取S7-200 CPU时钟并以整数格式输出所读取的值。
S7-200 CPU库文件下载地址：http://support.automation.siemens.com/CN/view/zh/19294366
S7-200 SMART CPU 库文件

2.3 Logic_operation

功能：使用该库指令可以添加 NEG（一个数字的二进制补码），NAND（是AND 运算符的配对运算符，NAND的输出仅在所有输入都具有状态1时才会具有状态0），NOR（是OR运算符的配对运算符，NOR的输出仅在所有输入都具有状态 0时才会具有状态 1），和NXOR（是XOR 运算符的配对运算符，当输入具有不同状态值时，NXOR的输出具有状态0）指令。
S7-200 CPU库文件下载地址：http://support.automation.siemens.com/CN/view/zh/18251129.
S7-200 SMART CPU 库文件

2.4 modulo

功能：使用该库指令可以实现取模功能，可以检查一个数是否可以被另一个数整除（取模运算中结果是否为0）。
S7-200 CPU库文件下载地址：http://support.automation.siemens.com/CN/view/zh/18251123
S7-200 SMART CPU 库文件

2.5 logo_function

功能：使用该库指令可以实现LOGO!的脉冲继电器功能。
S7-200 CPU库文件下载地址：http://support.automation.siemens.com/CN/view/zh/19141713
S7-200 SMART CPU 库文件

2.6 real_compare

功能：在S7-200中实数精确到6个小数位，在使用包括较大数和很小数的很多数值来计算实数时，可能会生成不精确的结果。该库指令可以准确的进行浮点数比较。
S7-200 CPU库文件下载地址：http://support.automation.siemens.com/CN/view/zh/17924241
S7-200 SMART CPU 库文件

2.7 graycode

功能：使用该哭指令可以实现怎样二进制码和格雷码之间的互转。
S7-200 CPU库文件下载地址：http://support.automation.siemens.com/CN/view/zh/26485059
S7-200 SMART CPU 库文件

2.8 shutter_control

功能：使用该库指令可以实现不使用感光开关，使用S7-200来控制百叶窗的日出而开和日落而关。
S7-200 CPU库文件下载地址：http://support.automation.siemens.com/CN/view/zh/35146699
S7-200 SMART CPU 库文件

2.9 Counter_DINT

功能：使用该库指令可以实现S7-200 CPU计算大于16 位的循环计数。
S7-200 CPU库文件下载地址：http://support.automation.siemens.com/CN/view/zh/35096610
S7-200 SMART CPU 库文件

2.10 Frequency

功能：使用该库指令可以测定高速脉冲串的频率和速度。
S7-200 CPU库文件下载地址：http://support.automation.siemens.com/CN/view/zh/27864874
S7-200 SMART CPU 库文件

2.11 scale

功能：使用该库指令可以实现S7-200模拟量值比例换算。
S7-200 CPU库文件下载地址：http://support.automation.siemens.com/CN/view/zh/27043396
S7-200 SMART CPU 库文件

2.12 BCD

功能：使用该库指令可以实现将双整数DINT与BCD码互转。
S7-200 CPU库文件下载地址：http://support.automation.siemens.com/CN/view/zh/25943079
S7-200 SMART CPU 库文件

2.13 Sign operation

功能：使用该库指令可以实现数值求绝对值和求反(反号).
S7-200 CPU库文件下载地址：http://support.automation.siemens.com/CN/view/zh/25939521
S7-200 SMART CPU 库文件

2.14 arc functions

功能：使用该库指令可以实现S7-200反三角函数arcsin，arccosin和arctan功能。
S7-200 CPU库文件下载地址：http://support.automation.siemens.com/CN/view/zh/19308841
S7-200 SMART CPU 库文件

2.15 Daytime_saving_time_S7-200

功能：使用该库指令可以实现S7-200系统实现的夏令时开始和结束时间的调整。
S7-200 CPU库文件下载地址：http://support.automation.siemens.com/CN/view/zh/25547955
S7-200 SMART CPU 库文件


用户自定义库指令

用户自定义指令库

用户可以把自己编制程序集成到编程软件Micro/WIN SMART中。这样可以在编程时调用实现相同功能的库指令，而不必同时打开几个项目文件拷贝。指令库也可以方便地在多个编程计算机之间传递。

图1. 自定义库和西门子标准库

必须具有管理员权限才能创建用户定义的库。如果您使用"以管理员身份运行"(Run as administrator) 命令启动 STEP 7?Micro/WIN SMART，这将提供足够的权限。

自定义指令库使用相关视频教程的链接如下：

  • S7-200 SMART 自定义库和项目移植（西门子热线工程师内部学习讲座）

定义库指令

一个已存在的程序项目只有子程序、中断程序可以被创建为指令库。中断程序只能随定义它的主程序、子程序集成到库中。

例如一个项目的的程序结构如下：

图1. 库指令的源项目程序

现欲将子程序My_SUB_a和My_SUB_b创建为指令库，其中在My_SUB_b中定义了中断程序My_INT（将某中断事件号与中断服务程序My_INT连接起来——使用ATTACH指令）。

操作步骤：

第一步：在文件菜单中，选择建立库命令；或者用鼠标右键单击指令树的指令库分支，选择创建库

图2. 在库分支上单击鼠标右键

第二步：通过执行"创建库"(Create Library) 对话框的各个步骤（节点），组态库的构成。可单击各对话框的"下一步"(Next) 按钮进入下一步。也可单击任何节点以更改该节点的信息：

a. "名称和路径"(Name and Path) 节点 :

库名称：库名称可以包含空格和大小写混合字母；

库文件路径：默认路径存储库。

图3. 设置指令库名称和文件路径

b."组件"(Components) 节点:选择项目中的哪些子例程要作为指令包括在库中。

要包括子例程，请在左侧列表中选择子例程，然后单击"添加"(Add) 按钮。

要删除子例程，请选择右侧的子例程，然后单击"删除"(Remove) 按钮。

不能直接添加中断例程；但如果子例程引用了中断例程，STEP 7 Micro/WIN SMART 会自动包含该中断例程。

图4. 使用添加、删除按钮选择要建立成为库指令的子程序

c."保护"(Protection) 节点:可选择是否要用密码保护库中的代码，以防止查看和编辑。要用密码保护库，请选中"是"(Yes) 复选框，然后为库输入密码，并重新输入密码以进行验证。

图5. 设置密码

d."版本化"(Versioning) 节点:可设置要创建的库的版本，包括主次版本标识符。

图6.创建库版本

e."完成"(Completion) 节点 :要创建库的组成部分，单击"创建"(Create) 按钮。

图7.创建库完成

确保您在"选项"(Options) 对话框的"项目"(Project) 节点中配置的用户库文件夹与您在"名称和路径"(Name and Path) 节点中使用的库文件夹为同一文件夹。

图8.用户库文件夹库位置

f.按创建按钮确定，输出指令库文件

图9. 消息输出窗口显示指令库文件的详细信息

指令库文件扩展名为.smartlib。库文件可以作为单独的文件拷贝、移动。

在项目中使用库

注意：在项目中使用库时，必须关闭从中创建库的项目，然后打开一个新项目或其它项目以使用库。

当打开新项目时，项目树中的库文件夹显示在项目选项中为用户自定义库配置的文件夹中的库，指令库的调用方法与子程序基本一样。

图10.项目树中的库文件显示

添加删除指令树中库指令

第一步：用鼠标右键单击指令树的指令库分支，选择打开库文件夹，并在库文件夹里添加或者删除库文件

图11. 打开库文件夹

图12. 库文件夹

第二步：关闭项目后重新打开软件即可看到指令树中库文件添加或者删除成功，删除库文件时也用鼠标右键单击指令树的指令库分支，选择刷新库，即可看到项目树中的库文件夹该库删除。

常问问题

如何编制一个用户自定义库，使之像西门子的库一样在调用时可以灵活分配库指令内存（V存储区）？

在编程时，凡用到V存储区地址处都使用“符号寻址”，为每个变量指定一个符号。然后按照上述方法生成自定义库。注意此时使用V存储区的绝对寻址，或者定义符号表有误，则不能正常生成库指令。

如何更改库版本？

要创建现有库的新版本，请按以下步骤操作：

1.将您在项目选项中配置的库文件夹中的原始库复制到另一个位置作为备份。

2.打开从中创建库的原始项目。这个项目是包含库子例程代码的项目，而不是调用库指令的项目。

3.进行必要的更改。

4.在"文件"(File) 菜单功能区的"库"(Libraries) 区域中，单击"创建库"(Create library) 按钮 。

5.按照与创建库相同的步骤进行操作，但为该库提供一个新版本号，或者可能要提供一个新名称。

更改库版本时，可更改库文件的名称，或使用其它文件夹存储之前的库。如果您未更改库文件的名称或位置，则 STEP 7?Micro/WIN SMART 在保存新版本的库时会覆盖掉原有版本。之后，原始库将无法使用。

添加自定义库功能改进

STEP 7-Micro/WIN SMART V2.2 版本软件改进了自定义库功能。

老版本软件用户自定义库存放地址不统一，不利于指令库的版本更新与维护。

STEP 7-Micro/WIN SMART V2.2 版本软件取消了“添加/删除库”操作，增加了“打开库文件夹”操作。

新增加的自定义指令库都将统一地添加到STEP 7-Micro/WIN SMART库文件夹中，存储地址统一了。

备注：STEP 7-Micro/WIN SMART库文件夹一般存储路径为C:\Users\Public\Documents\Siemens\STEP 7-MicroWIN SMART\Lib


如何将Micro/WIN库文件导入到Micro/WIN SMART中

如何将 Micro/WIN 的库文件导入到 Micro/WIN SMART 中

1. 打开S7-200 库文件 选择要导入的库文件，并将其放在程序编辑器的子程序中。

图1. 指令库

2. 配置相应参数。

图2. 编程窗口

3. 编译并保存。

图3. 编译按钮

4. S7-200SMART编程软件，打开刚刚保存的文件。（与200不同，200smart模拟量输入的量程为0-27648。）

图4. 编程窗口

5.在符号表中给VW0和VD100设置符号名。

图5. 设置符号名

6. 鼠标右击 “库” 选择 “创建库”。

图6. 指令库

7. 对库进行命名，点击 “浏览” 将库存到指定位置，设置完成后单击“下一页”。

图7. 名称和路径

8. 将要添加的内容添加到项目中，单击“下一页”。

图8. 添加窗口

9. 设置密码保护（可选），完成后单击“下一页”。

图9. 密码保护

10. 设置库的版本，完成后单击“下一页”。

图10. 版本生成

11. 单击“创建”，完成创建库。

图11. 完成创建

12. 关闭软件后，以管理员身份重新运行，选择“库”即可找到添加的库文件。

图12. 指令库

13. 将其添加到程序编辑器中，为其分配库存储区。

图13. 分配库存储区

14.编译后无报错，即可使用。

图14. 编程窗口


CPU加密保护

CPU 密码

表1. CPU密码

操作说明 | 完全权限（1 级） | 读取权限（2 级） | 最低权限（3 级） | 不允许上传（4 级）
读取和写入用户数据 | 允许 | 允许 | 允许 | 允许
CPU 的启动、停止和上电复位 | 允许 | 需要密码验证 | 需要密码验证 | 需要密码验证
读取日时钟 | 允许 | 允许 | 允许 | 允许
写入日时钟 | 允许 | 需要密码验证 | 需要密码验证 | 需要密码验证
上传用户程序、数据和 CPU 组态 | 允许 | 允许 | 有限制 | 不允许
下载程序块、数据块或系统块 | 允许 | 需要密码验证 | 需要密码验证 | 需要密码验证 注： 1. 如果CPU内包含程序块，则下载程序块、数据块需要密码验证，系统块不允许下载， 2.如果CPU内不包含程序块，则下载程序块、数据块以及系统块均需要密码验证。
复位为出厂默认设置 | 允许 | 需要密码验证 | 需要密码验证 | 需要密码验证
删除程序块、数据块或系统块 | 允许 | 需要密码验证 | 需要密码验证 | 需要密码验证 注： 1.如果CPU内包含程序块，则删除程序块、数据块需要密码验证，系统块不允许删除， 2.如果CPU内不包含程序块，则删除数据块以及系统块均需要密码验证。
将程序块、数据块或系统块复制到存储卡 | 允许 | 需要密码验证 | 需要密码验证 | 需要密码验证
强制状态图中的数据 | 允许 | 需要密码验证 | 需要密码验证 | 需要密码验证
执行单次或多次扫描操作 | 允许 | 需要密码验证 | 需要密码验证 | 需要密码验证
在 STOP 模式下写入输出 | 允许 | 需要密码验证 | 需要密码验证 | 需要密码验证
复位 PLC 信息中的扫描速率 | 允许 | 需要密码验证 | 需要密码验证 | 需要密码验证
程序状态 | 允许 | 允许 | 需要密码验证 | 不允许
项目比较 | 允许 | 允许 | 需要密码验证 | 不允许

图1. 组态安全设置窗口

有关CPU密码保护的详细说明参见：组态系统安全


清除CPU密码

如何清除带密码的CPU的内容

1. 鼠标点击PLC，选择清除，选择全部

图1.菜单栏

2. 点击清除

图2.清除设置窗口

注意：从S7-200 SMART V2.3 开始，清除窗口中增加 “忘记密码” 选项， V2.3 之前的版本无此勾选项。

3. 键入密码

图3.键入密码窗口

4.清除完成后，点击关闭即可。

图4.关闭清除窗口

忘记密码如何处理

自S7-200 SMART V2.3版本开始，如果忘记密码，有两种方法可以操作，但需要注意使用对象及固件版本情况：

方法一、使用 Micro SD 卡将 CPU 恢复为出厂默认状态
方法二、使用软件清除窗口中的“忘记密码” 和 “复位为出厂默认值”将 CPU 重置为出厂设置
使用方法及使用 CPU 类型配合使用情况如下表所示：

CPU忘记密码 ST SR CR CRs
使用Micro SD X X X --
使用软件清除 C C -- X

X：表示支持
-- : 表示不支持
C : 表示固件版本在 V2.3 及以上支持

方法一 通过存储卡清除密码和程序，具体操作步骤：

步骤一：
使用Windows 系统自带的记事本软件创建一个只包含一行字符串“RESET_TO_FACTORY”的简单文本文件，并将该文本文件的文件名修改为 “S7_JOB.S7S”，即可制作完成恢复出厂设置文件。使用普通读卡器将恢复出厂设置文件拷贝到一个空的 Micro SD 卡中。注意文本文件的默认文件名后缀为“.txt”必须被修改成“.S7S”。

这里提供了一个预制完成的恢复出厂设置文件，请鼠标右键，目标另存该文件：恢复出厂设置文件

步骤二：
在 CPU 断电状态下插入 Micro SD 卡，给 CPU 上电，CPU 会自动识别存储卡为恢复出厂设置卡并且自动恢复 CPU 出厂设置。恢复出厂设置过程中，RUN 指示灯和 STOP 指示灯以 2 HZ 的频率交替点亮。

步骤三：
当 CPU 只有 STOP 灯开始闪烁，表示“恢复出厂设置”操作成功，从 CPU 上取下存储卡。

步骤四：
“恢复出厂设置”操作包括以下几项操作：将 CPU IP 地址恢复为出厂默认设置，清空 CPU 程序块、数据库和系统块。

注意：S7-200 SMART CPU 支持 Micro SD卡的容量为4G，8G，16G；不支持 2G 和 32G 容量。

方法二 通过编程软件清除密码和程序，操作步骤：

1. 鼠标点击PLC，在 PLC 菜单功能区的“修改”(Modify) 区域单击“清除”(Clear) 按钮。

图1.菜单栏

2. 选中“块”(Blocks) 下的“复位为出厂默认设置”(Reset to factory defaults) 选项和“选项”(Options) 下的“忘记密码”(Forgot Password) 选项。（从S7-200 SMART V2.3 开始，清除窗口中增加 “忘记密码” 选项， V2.3 之前的版本无此勾选项）

图2.清除设置窗口

注意：从S7-200 SMART V2.3 开始，清除窗口中增加 “忘记密码” 选项， V2.3 之前的版本无此勾选项。

3. 单击“清除”(Clear) 按钮并在 60 秒内对 CPU 循环上电。

图3.清除设置窗口

注意，必须在 60 秒内以物理方式循环上电；暖启动或其它重启方式都不会达到预期效果。

S7-200 SMART V2.3 新推出四种紧凑型串行 CPU （CPU CR20s、CPU CR30s、CPU CR40s 和 CPU CR60s ），紧凑型 CPU 没有 microSD 读卡器，不支持 microSD 卡。因此，如果紧凑型 CPU 忘记密码，只能通过 RS485 端口从软件上操作，重置为出厂设置。紧凑型 CPU 无以太网端口，仅 CPU 本体集成一个 RS485 端口，此端口作为 CPU 的唯一编程端口。使用 STEP 7 Micro/WIN SMART 和 USB-PPI 电缆可以进行上传和下载程序、监控程序、执行固件更新。

485口上传下载程序

STEP 7 Micro/WIN SMART软件固件更新


POU加密

POU即程序组织单元，包括S7-200项目文件中的主程序（OB1）、子程序和中断服务程序。POU可以单独加密，加密后的POU会显示一个锁的标记，不能打开查看程序内容。程序下载到CPU中，再上载后也保持加密状态。

西门子公司随编程软件Micro/WIN SMART 提供的库指令、指令向导生成的子程序、中断程序都加了密。加密并不妨碍使用它们。

加密

1. 打开程序块，选择要加密的对象，鼠标右键，选择属性。

图1.程序块

2. 选择保护选项，并对POU进行加密。

图2.属性窗口

3. 加密后的程序会带一个锁。

图3.指令树

验证POU密码

1. 选择要验证的POU，点击鼠标右键 ， 选择属性，选择保护，输入密码，并点击授权。

图4. 属性对话框

2. 点击确认键即可。

图5. 设置后提示框


项目文件加密

项目加密

1. 选择菜单 栏中的文件，选择项目。

图1. 菜单栏

2. 并对项目进行加密。

图2. 配置密码窗口

3. 下次打开此项目时需要键入密码。

图3. 解码对话框


数据类型

S7-200 SMART的数据主要分为：

  • 与实际输入/输出信号相关的输入/输出映象区：

    • I：数字量输入（DI）
    • Q：数字量输出（DO）
    • AI：模拟量输入
    • AQ：模拟量输出
  • 内部数据存储区

    • V：变量存储区，可以按位、字节、字或双字来存取V 区数据
    • M：位存储区，可以按位、字节、字或双字来存取M区数据
    • T：定时器存储区，用于时间累计
    • C：计数器存储区，用于累计其输入端脉冲电平由低到高的次数
    • HC：高速计数器，独立于 CPU 的扫描周期对高速事件进行计数，高速计数器的当前值是只读值，仅可作为双字（32 位）来寻址
    • AC：累加器，可以像存储器一样使用的读/写器件，可以按位、字节、字或双字访问累加器中的数据
    • SM：特殊存储器，提供了在 CPU 和用户程序之间传递信息的一种方法。 可以使用这些位来选择和控制 CPU 的某些特殊功能， 可以按位、字节、字或双字访问 SM 位
    • L：局部存储区，用于向子例程传递形式参数
    • S：顺序控制继电器，用于将机器或步骤组织到等效的程序段中，实现控制程序的逻辑分段。 可以按位、字节、字或双字访问 S 存储器

存储器范围及特性

表1.存储器范围

说明 | CPU SR20 ,ST20 | CPU SR30 ,ST30 | CPU SR40, ST40 | CPU SR60, ST60 | CPU CR20s,CR30s,R40s,CR60s,
用户程序大小 | 12288字节 | 18432字节 | 24576字节 | 30270字节 | 12288字节
用户数据大小 | 8192字节 | 12288字节 | 16384字节 | 20480字节 | 8192字节
过程映象输入寄存器 | I0.0到I31.7 | I0.0到I31.7 | I0.0到I31.7 | I0.0到I31.7 | I0.0到I31.7
过程映象输出寄存器 | Q0.0到Q31.7 | Q0.0到Q31.7 | Q0.0到Q31.7 | Q0.0到Q31.7 | Q0.0到Q31.7
模拟量输入（只读） | AIW0到AIW110 | AIW0到AIW110 | AIW0到AIW110 | AIW0到AIW110 | --- ---
模拟量输出（只写） | AQW0到AQW110 | AQW0到AQW110 | AQW0到AQW110 | AQW0到AQW110 | --- ---
变量存储器（V） | VB0到VB8191 | VB0到VB812287 | VB0到VB16383 | VB0到VB20479 | VB0到VB8191
局部存储器（L) | LB0到LB63 | LB0到LB63 | LB0到LB63 | LB0到LB63 | LB0到LB63
位存储器（M） | M0.0到M31.7 | M0.0到M31.7 | M0.0到M31.7 | M0.0到M31.7 | M0.0到M31.7
特殊存储器（SM) | SM0.0到SM1699.7 SMB0到SMB29/SMB480到SMB515/SMB1000到SMB1699 只读 | SM0.0到SM1699.7 SMB0到SMB29/SMB480到SMB515/SMB1000到SMB1699 只读 | SM0.0到SM1699.7 SMB0到SMB29/SMB480到SMB515/SMB1000到SMB1699 只读 | SM0.0到SM1699.7 SMB0到SMB29/SMB480到SMB515/SMB1000到SMB1699 只读 | SM0.0到SM1699.7 SMB0到SMB29/SMB480到SMB515/SMB1000到SMB1049 只读

数据寻址


数据格式

S7-200 SMART 系统中的数据及其格式

S7-200 SMART CPU收集操作指令、现场状况等信息，把这些信息按照用户程序指定的规律进行运算、处理，然后输出控制、显示等信号。所有这些信息都表示为不同格式的数据，作为数据来处理。各种指令对数据格式都有一定要求，指令与数据之间的格式要一致才能正常工作。例如，为一个整数数据使用实数（浮点数）运算指令，显然会得到不正确的结果。

数据有不同的长度（以二进制表示它们时，占据的位数不同），也就决定了数值的大小范围。模拟量信号在进行模/数（A/D）和数/模（D/A）转换时，一定会存在误差；代表模拟量信号的数据，只能以一定的精度表示模拟量信号。

  • 所有的数据在PLC中都是以二进制形式表示的
  • 数据都有其特定的长度和表示方式，称为格式
  • 数据的格式与用于运算、处理它的指令相关
  • 以不同的格式查看一个数据，或是使用不同格式的指令处理它，会得到不同的效果

二进制、十六进制和十进制

二进制和二进制数： 所有通过S7-200 SMART PLC处理的数据（数值、字符等等）都以二进制形式表示。

十六进制和十六进制数：在二进制数中，每4个二进制位可以分为一组；这组二进制数值的不同变化可以表示16个状态，正好是16进制数每一位数字的变化范围。因此，可以用十六进制数值方便地表示二进制数。

例如，二进制数1000_1111b分为两组来看，分别是1000b和1111b，正好可以表示16进制数字8h和Fh（0000b对应于0h，...，1111b对应于Fh）；那么这个二进制数就可以表示为8Fh。

十进制和十进制数：十进制是S7-200 SMART的数学计算的基础，一般都使用十进制的体系，除了时间（12/24或60进制）等特殊数据外。

二进制数用于在PLC中表示十进制数值、或者其他（如字符等）数据，而16进制用来比较简单地描述二进制数。

二进制位逻辑（bit）

PLC中以二进制“位”的数据形式来表示逻辑“1”、“0”（或者“开”、“关”）。位是最基本的数据单位。

在数据字节（Byte）中，二进制逻辑只用一个位（bit）来表示。每个字节由8个位组成。

整数、无符号整数和有符号整数

字节、字、双字都可以用来表示十进制整数，显然它们的数据长度不同，能够表示的数的大小范围也不同。

无符号整数只有0和正整数；有符号整数可以有正数和负数。

有符号整数采用二进制补码的形式来表示负数。

实数（浮点数）

实数（或浮点数）以 32 位单精度数表示，其格式为 ANSI/IEEE 754-1985 标准中所描述的形式。实数按双字长度访问。
 注意：浮点数精确到小数点后第 6 位。 因此输入浮点常数时，最多只能指定 6 位小数。计算涉及到包含非常大和非常小数字的一长串数值时，计算结果可能不准确。

双实数转实数可以参考下面的例程：

dreal--real.smart

注意：此程序的作者和拥有者对于该软件的功能性和兼容性不负任何责任。使用该软件的风险完全由用户自行承担。由于它是免费的，所以不提供任何担保，错误纠正和热线支持，用户不必为此联系西门子技术支持与服务部门。

ASCII字符和String（字符串）

在S7-200 SMART中，ASCII字符是由表示字母、数字和一些特殊符号的ASCII编码组成的二进制数据字节，一个字节存储一个字符。

ASCII（美国信息交换标准码）是一种字符编码格式，在一个字节长度中不同的二进制数值代表不同的字符。如字母A为41h（十六进制数值），以十进制看就是65；而数字5的ASCII值为35h，十进制值为53。

字符串是一个字符序列，其中的每个字符都以字节的形式存储。 字符串的第一个字节定义字符串的长度，即字符数。 字符串的长度可以是 0 到 254个字符，再加上长度字节，因此字符串的最大长度为 255 个字节。 字符串常数限制为126 个字节。(字符串中也能包括汉字编码，每个汉字占用两个字节。)

这是S7-200 SMART 内部对ASCII字符串的格式定义，所有与字符串有关的指令都遵照这个格式。

  • 在编程软件中，用单字节（英文）的单引号（'）将作为字符的内容括起来可以在数据块和状态图中输入ASCII数据字节
  • 在单字节的双引号（"）中间输入文本内容可以输入字符串
  • 按上述方法输入的字符串会自动按字符串格式排列（在起始地址中放入字符个数）
  • 使用程序，或人为组合成的ASCII字符串，使用ASCII字符串指令时，必须注意是否符合格式

例如：

图1. 在数据块中输入ASCII数据和字符串

下载项目到S7-200 SMART CPU，使用状态图在线监控可以看到：

图2. 状态图

注意ASCII字节和字符串的区别。D6D0h是汉字“中”的编码。


数据寻址

S7-200 SMART 数据寻址

  • 如何调用开关量或模拟量信号？
  • 怎样读取数据？
  • 怎么使用输入信号？
  • 如何输出控制？
  • ……

上述问题都是关于如何访问、使用数据的问题，也就是所谓“寻址”。

访问S7-200 SMART 中的数据

S7-200 SMART从外部接收信号输入（输入数据），在内部按照用户程序运算、处理后，再输出进行各种控制、显示。

CPU 将信息存储在不同存储单元，每个位置均具有唯一的地址。寻址时，数据地址以代表存储区类型的字母开始，随后是表示数据长度的标记，然后是存储单元编号；对于二进制位寻址，还需要在一个小数点分隔符后指定位编号。

位寻址的举例如下图所示：

图1.位寻址举例

其中，存储区和字节地址（“M3”）代表 M 存储器的第 3 个字节，用句点（“.”）与位地址（位 4）分开。

字节寻址的举例如下图所示：

图2. 字节寻址举例

可以看出，VW100包括VB100和VB101；VD100包括VW100和VW102，即VB100，VB101，VB102，VB103这4个字节。这些地址是互相交叠的。

当涉及到多字节组合寻址时，遵循“高地址，低字节”的规律。

下表给出了不同数据长度可表示的整数值范围。

表1.不同数据长度表示的十进制和十六进制数范围

表示方式 | 字节（B) | 字（w) | 双字 （DW)
无符号整数 | 0到255 16＃00到16＃FF | 0到65，535 16＃0000到16＃FFFF | 0到4,294,967,295 16＃00000000到16＃FFFFFFFF
有符号整数 | -128到+127 16＃80到16＃7F | -32，768到+32，767 16＃8000到16＃7FFF | -2，147，483，648到+2，147，483，647 16＃8000 0000到16＃7FFF FFFF
实数（IEEE32位浮点数） | 不适用 | 不适用 | +1.175495E-38 到 +3.402823E+38（正数） -1.175495E-38到-3.402823E+38 （负数）

S7-200 SMART 中的数据类型

《S7-200 SMART系统手册》上关于PLC概念的第四章，其中对于S7-200 SMART中数据寻址的叙述非常好，建议初学者必读！

几乎所有的指令、功能都与各种形式的寻址有关，不弄清楚数据寻址会给工作带来极大的困难。

对本地 I/O 和扩展 I/O 进行寻址

CPU 提供的本地 I/O 具有固定的 I/O 地址。可以通过在 CPU 的右侧连接扩展 I/O 模块，或通过安装信号板来增加 I/O 点。 模块点的地址取决于 I/O 类型和模块在 I/O 链中的位置。

注意：

  • 数字量 I/O 的过程映像寄存器空间总是以八位（一个字节）递增的形式预留。 如果模块没有为每个保留字节中的每一位提供相应的物理点，那些未使用的位就无法分配给 I/O 链中的后续模块。 对于输入模块，这些未使用的位会在每个输入更新周期中被清零。
  • 模拟量 I/O 点总是以两点递增的方式分配。 如果模块没有为这些点分配相应的物理 I/O，则这些 I/O 点将丢失，并且不能够分配给 I/O 链中的后续模块。

下表提供固定映射惯例的示例（由 STEP 7 Micro/WIN SMART 建立，并作为系统块中I/O 组态的一部分下载）。

表2. CPU 映射惯例:

 | CPU | 信号板 | 信号模块 0 | 信号模块 1 | 信号模块 2 | 信号模块 3
起始地址 | I0.0 Q0.0 | I7.0 Q7.0 无 AI SB AQ12 | I8.0 Q8.0 AI16 AQ16 | I12.0 Q12.0 AI32 AQ32 | I16.0 Q16.0 AI48 AQ48 | I20.0 Q20.0 AI64 AQ64

间接寻址

有关间接寻址的内容请参考链接：间接寻址

常问问题

1. CPU连接若干个I/O扩展模块时，如何查看每个模块占用的I/O通道地址？

由于I/O扩展模块占用的输入和输出地址与模块位置有关，不连续且不能被用户自定义，因此建议用户到系统块上方的概览表格中查看

图4.I/O通道地址举例


间接寻址

S7-200 SMART 间接寻址

间接寻址是指用指针来访问存储区的数据。指针以双字的形式存储其它存储区的地址，只能将 V 存储单元、L 存储单元或累加器寄存器（AC1、AC2、AC3）用作指针。

注意：S7-200 SMART CPU 允许指针访问下列存储区： I、Q、V、M、S、AI、AQ、SM、T（仅限当前值）和 C（仅限当前值）。不能使用间接寻址访问单个位或访问 HC、L 或累加器存储区。

创建指针步骤

要创建指针，必须使用“移动双字”指令，将间接寻址的存储单元地址移至指针位置。；用“&”符号加上要访问的存储区地址可建立一个指针，当指令中的操作数是指针时，应该在操作数前加上“*”号。

如下图所示为以创建和使用指针示例。在该示例中，输入*AC1 表示 AC1 存储指向“移动字”(MOVW) 指令引用的字长度值的指针，在 VB200 和 VB201 中存储的值被移至累加器 AC0。

图1.创建和使用指针举例

其中：

  • 通过将VB200的地址（VW100的初始字节）移动到AC1创建指针。
  • 移动AC1中的指针引用的字值。

注意：修改指针的值时，请记住调整所访问数据的大小：访问字节时，指针值加 1；访问定时器 或计数器的字或当前值时，指针值加 2；访问双字时，指针值加 4。

例程1.通过指针访问数据表

例程所需条件：

1、软件版本：STEP 7-Micro/WIN SMART V2.3

2、SMART CPU固件版本:V1.0及以上

3、通讯硬件：TP电缆（以太网电缆）

所实现的功能：

索引号VW1008=0时，将指定的配方0(VB100~VB104) 数据传送到(VB1500~VB1504)

索引号VW1008=1时，将指定的配方1(VB105~VB109) 数据传送到(VB1500~VB1504)

索引号VW1008=2时，将指定的配方2(VB110~VB114) 数据传送到(VB1500~VB1504)

索引号VW1008=3时，将指定的配方3(VB115~VB119) 数据传送到(VB1500~VB1504)

依次类推，具体的程序说明，参考例程内的描述。

Addressing_1

例程2.通过指针存储数据表

例程所需条件：

1、软件版本：STEP 7-Micro/WIN SMART V2.3

2、SMART CPU固件版本:V1.0及以上

3、通讯硬件：TP电缆（以太网电缆）

所实现的功能：

索引号VW1008=0时，将(VB1500~VB1504)数据传送到指定的配方0(VB100~VB104)

索引号VW1008=1时，将(VB1500~VB1504)数据传送到指定的配方1(VB105~VB109)

索引号VW1008=2时，将(VB1500~VB1504)数据传送到指定的配方2(VB110~VB114)

索引号VW1008=3时，将(VB1500~VB1504)数据传送到指定的配方3(VB115~VB119)

依次类推，具体的程序说明，参考例程内的描述。

Addressing_2

例程3.通过地址偏移量来访问V存储区数据

例程所需条件：

1、软件版本：STEP 7-Micro/WIN SMART V2.3

2、SMART CPU固件版本:V1.0及以上

3、通讯硬件：TP电缆（以太网电缆）

所实现的功能：

本例程可以实现对区任意字节数据的访问。

VD1000作为指针，指向VB0，然后利用VD1004存储的地址偏移量改变指针值，即，VD1000指向VD1000+VD1004的地址，并将该地址的数据复制到VB1008。

通过改变VD1004，可以访问V区的任意单元。

举例：

VD1004=0时，将VB0的数据传送到VB1008，

VD1004=1时，将VB1的数据传送到VB1008，

VD1004=100时，将VB100的数据传送到VB1008，

依次类推，具体的程序说明，参考例程内的描述。

Addressing_3

免责声明

本例程仅供参考，程序中的CPU版本、类型可能与用户实际使用不同，用户可能需要先对例子程序做修改和调整，才能将其用于测试。本例程的作者和拥有者对于该例程的功能性和兼容性不负任何责任，使用该例程的风险完全由用户自行承担。由于它是免费的，所以不提供任何担保，错误纠正和热线支持，用户不必为此联系西门子技术支持与服务部门。


中断指令

S7-200 SMART设置了中断功能，用于实时控制、高速处理、通信和网络等复杂和特殊的控制任务。

中断指令相关视频教程的链接如下：

  • S7-200 SMART中断及中断指令概述——跟我学
  • S7-200 SMART中断及中断指令概述——跟我做
  • S7-200 SMART中断指令应用举例——跟我学
  • S7-200 SMART中断指令应用举例——跟我做

S7-200 SMART 系列可编程控制器最多有38个中断源(9个预留)，分为三大类：通信中断、输入/输出（I/O）中断和时基中断，S7-200 SMART规定的中断优先由高到低依次是：通信中断、I/O中断和时基中断。每类中断中不同的中断事件又有不同的优先权。

中断指令主要包括以下几种：

  • ATCH：中断连接，连接某中断事件所要调用的程序段。
  • ENI：全局允许中断，开放中断处理功能。
  • DISI：全局禁止中断，禁止处理中断服务程序，但中断事件仍然会排队等候。
  • DTCH：中断分离，将中断事件号与中断服务程序之间的关联切断，并禁止该中断事件。
  • RETI：条件中断返回，根据逻辑操作的条件，从中断服务程序中返回。
  • CLR_EVNT：清空中断队列。

与S7-200相比，下表所示中断事件号为S7-200 SMART 所特有的 ：

表1.S7-200 SMART 特有中断事件号

事件号 | 说明 | CR40 | SR20/SR40/ST40/SR60/ST60
35 | 上升沿，信号板输入0 | N | Y
36 | 下降沿，信号板输入0 | N | Y
37 | 上升沿，信号板输入1 | N | Y
38 | 下降沿，信号板输入1 | N | Y

中断指令的有效操作数如下：

表2.中断指令的有效操作数

输入/输出 | 数据类型 | 操作数
INT | BYTE | 常数： 中断例程编号（0 到 127）
EVNT | BYTE | 常数： 中断事件编号（CPU CR40： 0-13、16-18、21-23、27、28 和 32CPU SR20、SR40、ST40、SR60、ST60： 0-13、16-18、21-28、32和 35-38）

中断程序实例

本例使用定时中断实现对100ms定时周期计数。我们使用特殊存储器定时中断0。由定时中断0的中断事件号为10，确定周期的特殊寄存器字节时SMB34。

该程序主要包括以下几部分：

  • SBR_0：中断初始化程序；
  • INT_0：中断服务程序；

在主程序中调用SBR_0，如下图所示：

图1.SBR_0的调用

其中，初始化中断程序秩序调用一次，因此用SM0.1作为条件。

SBR_0编程如下图所示：

图2.SBR_0编程

其中，写入定时周期数100ms，连接10号中断事件即定时中断0，指定中断服务程序名称为INT_0。

INT_0编程如下图所示：

图3.INT_0编程

其中，用双字长的整数加法对VD200自身加1。

注意：中断程序的初始化只需执行一次。也可根据需要重新定义中断事件。

使用状态表监视，VD200的内容就是100ms周期到达的次数，如下图所示：

图4.状态表监视

中断例程

例程所需条件：

1、软件版本：STEP 7-Micro/WIN SMART V2.3

2、SMART CPU固件版本:V1.0及以上

3、通讯硬件：TP电缆（以太网电缆）

所实现的功能：

1.通过SMB34做100ms的定时中断

2.通过VD200自累加1，计算进入中断的次数

SMB34_interrupt

注意：本例程仅供参考，程序中的CPU版本、类型可能与用户实际使用不同，用户可能需要先对例子程序做修改和调整，才能将其用于测试。本例程的作者和拥有者对于该例程的功能性和兼容性不负任何责任，使用该例程的风险完全由用户自行承担。由于它是免费的，所以不提供任何担保，错误纠正和热线支持，用户不必为此联系西门子技术支持与服务部门。


表格指令

S7-200 SMART表格指令按照使用流程可分为

建表（存储器填充FILL）--->填表（增加至表格ATT）--->查询（表格查找TBL）--->先入先出（FIFO） 或后入先出（LIFO）

下图所示为表格指令图示:

LAD | STL | 指令名称 | 注释
 | FILL，IN，OUT，N | 存储器填充 | 存储器填充指令使用地址IN中存储的字值填充从地址OUT开始的N个连续字。 N的取值范围是1到255。
 | ATT DATA，TBL | 填表 | 向表格（TBL）中加入字值（DATA）。 表格中第一个数值为最大条目数TL，第二个数值为实际条目数EC。
 | FND=TBL,PTN,INDX FND<>TBL,PTN,INDX FND>TBL,PTN,INDX FND<TBL,PTN,INDX | 查表 | 在表格（TBL）中搜索与某些标准相符的数据。
 | LIFO TBL，DATA FIFO TBL，DATA | 后入先出 先入先出 | 将表格中的最新（或最后）一个条目移至输出内存地址。

注意：

  • 一个表格最多有100个数据条目（不包含最大条目数和实际条目数）
  • 所有的表格读取和写入指令都必须用上升沿或下降沿指令触发激活。

    表格指令的应用

    1.创建表格，表格包含20个条目，从存储器位置4开始。（在第一次扫描时，定义表格的最大长度）

    下图是创建的一个表格，其中VW0为表格最大长度，VW2为当前条目数，VW4~VW42为存储在条目内的数据

    2. 通过输入I0.0复位表格。在I0.0的上升沿，使用“+0”填充从VW2开始的存储单元。

    使用该指令后，将表格当前条目数清零，同时将VW2~VW42原有条目数据清零。

    3.通过输入I0.1将值写入表格。在I0.1的上升沿，将存储单元VW100的值复制到表格。

    通过添加表格指令,将VW100中的数据添加到表格中,此时当前条目数变为1,同时第一个条目VW4中数据赋值为1。

    通过填表指令,依次填满表格中的20个条目。

    4.在I0.2的上升沿，将表中的最后一个值移入VW102。

    通过执行先入后出指令,将表内最后一个数据条目VW42移入到VW102。移出后，当前条目数由20变为19。

    5.在I0.3的上升沿,将表中的第一个值移入VW104。

    在执行FIFO先入先出指令之前VW2=19，将表内第一个数据条目VW4移入到VW104，此时条目前移，同时当前条目数VW2由19变为18，操作执行完以后，结果如下图所示：

    6.在表中搜索值为10的第一个位置。在I0.4的上升沿，复原索引指针。查找等于10的表格条目。

    通过查找指令，查找表格内数据为10的条目，执行该指令后，指向条目内第8个条目数据符合查找条件（数据条目搜索编号从0开始）。

    表格指令例程

    例程所需条件：

    1、软件版本：STEP 7-Micro/WIN SMART V2.3

    2、SMART CPU固件版本:V1.0及以上

    3、通讯硬件：TP电缆（以太网电缆）

    所实现的功能：

    以下是上文提到的各表格指令的使用，具体说明参考程序注释

    Table

    注意：本例程仅供参考，程序中的CPU版本、类型可能与用户实际使用不同，用户可能需要先对例子程序做修改和调整，才能将其用于测试。本例程的作者和拥有者对于该例程的功能性和兼容性不负任何责任，使用该例程的风险完全由用户自行承担。由于它是免费的，所以不提供任何担保，错误纠正和热线支持，用户不必为此联系西门子技术支持与服务部门。


字符串相关指令

字符串定义

字符串是一系列字符，每个字符作为一个字节存储。

字符串由变量存储时，字符串长度为0至254个字符，最长为255个字节，其中第一个字符为长度字节。

常数字符串直接输入程序编辑器或数据块时，最长为126个字节； 且常数字符串必须用双引号字符起始和结束 (如:"ABCD", "1234" )

字符串转换

将浮点数/双整/整数转换为字符串，分别为转换指令中的R_S,S_DI,I_S。

将字符串转换为浮点数/双整/整数分别为转换指令中的S_R,S_DI,S_I。只能转换0-9的字符，其他字符均为无效字符。

具体转换步骤建议选中指令块，按"F1"，查看帮助信息。

几点注意事项：

1.无法识别科学计数法或指数形式，但不会设置溢出错误SM1.1；例：“1.234E6”-->"1.234"

2.当达到字符串结束时或当发现第一个无效字符时，转换终止；例：“123A456”--->"123"

另，如“A123”，第一个字符即为无效字符，因此，设置溢出错误SM1.1。

3.S_I指令，当转换产生一个大于32767或小于-32768的值时，则设置溢出错误（SM1.1）

字符串指令

字符串指令如下表所示：

LAD/FBD | 指令名称 | 描述
 | 字符串长度 | IN：字符串变量地址； OUT：字符串长度的存储地址
 | 复制字符串 | 将位于IN处的字符串复制到OUT处的新字符串地址
 | 从字符串复制子字符 | INDX：IN处字符串的有效字符地址 N：复制长度 OUT：复制出的新字符串地址
 | 字符串连接 | 将IN指定的字符串附加至OUT指定的字符串之后
 | 在字符串内查找字符串 | 在字符串IN1中搜索首次出现的字符串IN2。搜索从OUT起始位置开始
 | 在字符串中查找第一个字符 | 在首次出现的字符串IN1中搜索字符串IN2中描述的字符集中的任何字符。搜索从起始位置OUT开始

指令例子如下：

字符串连接

字符串赋值字符串

字符串长度

从字符串复制子字符串

在字符串中查找字符串

在字符串中查找第一个字符

其中，VB0初始状态通过数据块定义，如下。

依次执行程序后，监控VB0、VB100、VB1000、VB20、VB1100、VB1200的状态，如下所示。

字符串例程

例程所需条件：

1、软件版本：STEP 7-Micro/WIN SMART V2.3

2、SMART CPU固件版本:V1.0及以上

3、通讯硬件：TP电缆（以太网电缆）

所实现的功能：

结合上述文档所描述，

各字符串指令的使用，具体说明参考程序注释

String

注意：本例程仅供参考，程序中的CPU版本、类型可能与用户实际使用不同，用户可能需要先对例子程序做修改和调整，才能将其用于测试。本例程的作者和拥有者对于该例程的功能性和兼容性不负任何责任，使用该例程的风险完全由用户自行承担。由于它是免费的，所以不提供任何担保，错误纠正和热线支持，用户不必为此联系西门子技术支持与服务部门。

常问问题

1.字符串中既含有数字又含有其他字符（字母，特殊字符），如何只转换数字部分？？

如数字字符在前，其他字符在后；则可直接转换，转换部分到第一个非数字字符前。

如数字字符在后，其他字符在前；则

1.其他字符长度已知并固定；

如字符串定义如下：

注意：此处INDX处为有效字符的位数，不包含字符串第一位的长度字节

执行程序后，VW100=98；VD200=98；VD300=98.6

2.字符串实际内容未知或其他字符长度不定，则无法直接转换，否则设置溢出错误SM1.1。转换可参考如下程序：

注：CHR_FIND为在首次出现的字符串IN1中搜索字符串IN2中描述的字符集中的任何字符；找到的第一个相符字符的位置，被写入到OUT管脚。

仍以如下字符串为例：

程序执行后，AC0=7；VD100=98.6


计数器指令

计数器

S7-200 SMART 指令提供了下述三种类型的计数器。

  • CTU：增计数器。
  • CTD：减计数器 。
  • CTUD：增/减计数器 。

计数器相关视频教程的链接如下：

  • S7-200 SMART计数器指令概述及应用举例——跟我学27/40
  • S7-200 SMART计数器指令概述及应用举例——跟我做28/40

计数器指令的梯形图格式如下图所示。

图1.计数器指令

  • CU：增计数信号输入端；
  • CD：减计数信号输入端；
  • PV：预置值；
  • LD：装载预置值；
  • R：复位输入；

计数器指令的有效操作数如下表所示：

表1.计数器指令接收操作数

输入/输出 | 数据类型 | 操作数
Cxx | WORD | 常数（C0 到 C255）
CU，CD，LD，R | BOOL | I、Q、V、M、SM、S、T、C、L、逻辑流
PV | INT | IW、QW、VW、MW、SMW、SW、LW、T、C、AC、AIW、 *VD、*LD、*AC、常数

注意：当子程序在同一周期内被多次调用时，不能使用上升沿、下降沿、定时器和计数器。

注意：由于每个计数器有一个当前值，因此请勿将同一计数器编号分配给多个计数器。 （编号相同的加计数器、加/减计数器和减计数器会访问相同的当前值）

计数器按如下表所列的规律工作：

表2.计数器工作规律

类型 | 操作 | 计数器位 | 上电周期/首次扫描
CTU | CU 增加当前值。 直至达到32,767。 | 当前值 >= 预设值时，计数器位接通 | 计数器位关断。 当前值可保留
CTD | CD减少当前值。 直至达到0。 | 当前值 = 0时，计数器位接通 | 计数器位关断。 当前值可保留
CTUD | CU 增加当前值。CD 减少当前值。 当前值持续增加或减少，直至 计数器复位。 | 当前值 >= 预设值时，计数器位接通 | 计数器位关断。 当前值可保留

计数器计数范围为0～32，767。计数器号不能重复使用。计数器有两种寻址类型：Word（字）和Bit（位）。计数器号既可以用来访问计数器当前值，也可以用来表示计数器位的状态。

增/减计数器指令举例如下图所示：

图2.增/减计数器指令

时序图如下所示：

图3.时序图

其中：

  • I0.0加计数；
  • I0.1减计数；
  • I0.2将当前值复位为0；
  • 当前值大于等于4时，加/减计数计数器C48 接通 C48 位；


移位循环指令

移位指令

S7-200 SMART移位指令分为左、右移位、循环左、右移位及寄存器移位指令三大类。前两类移位指令按移位数据的长度又分字节型、字型、双字型3种。

下图所示为移位指令梯形图：

图1. 移位指令：

移位与循环指令相关视频教程的链接如下：

  • S7-200 SMART移位和循环移位运算指令概述及应用举例——跟我学23/40
  • S7-200 SMART移位和循环移位运算指令概述及应用举例——跟我做24/40

如下为一个移位和循环移位实例：

图2.移位和循环移位程序图

其中：

  • I4.0上升沿触发
  • FOR_W为字循环右移
  • SHL_W为字左移

其移位和循环移位的过程可由下图进一步说明：

图3.移位和循环移位过程说明图


取整指令

ROUND取整指令将实数（IN）转换成双整数，采用四舍五入的原则，将结果置入OUT指定的变量中。

TRUNC取整指令将实数（IN）转换成双整数，采用舍去小数位取整的原则，即将实数的整数部分置入OUT指定的变量中。

应用例程

图 1.程序示例

1）VD10=16.2，ROUND和TRUNC的运算结果都为16。

2）VD10=16.5，ROUND的运算结果为17，TRUNC的运算结果为16。


FOR-NEXT

FOR-NEXT循环指令

1、FOR-NEXT 指令用于重复执行程序段，FOR 指令和 NEXT 指令之间的指令为循环体。FOR指令标记循环的开始，NEXT指令为循环体的结束指令。

2、每条 FOR 指令需要有一条 NEXT 指令与之成对出现。

3、可以嵌套，嵌套深度为 8 层。

其中：

  • INIT,FINAL分别定义起始值和结束值。
  • 使能输入EN有效，循环体开始执行，执行到NEXT指令时返回，每执行一次循环体，当前值计数器INDX增1，达到终止值FINAL时，循环结束。
  • 使能输入无效时，循环体程序不执行。每次使能输入有效，指令自动将各参数复位。

注意：使用 FOR 和 NEXT 指令可在重复执行分配计数的循环中执行程序段。每条 FOR 指令需要一条 NEXT 指令。

应用例程

For Next 简单循环编程实例

图5.For Next 循环循环程序图

使用状态表监控程序的运行如下图所示

图6.状态监视图

如上表所示，VW100值为4, INDEX大于终止值，循环终止。

5个变量进行求和后取平均值实例

通过 FOR-NEXT 指令，对 5 个变量：VW100、VW102、VW104、VW106、VW108 进行求和,求和结果放到 VW200 中，计算的平均值存放在 VD210 中 。

FOR-NEXT_求和及求平均数

以上为关于指令使用的例程,仅供参考,使用前请先自行测试！此示例程序在STEP 7-MicroWIN SMART V2.0版本下生成

常问问题

FOR-NEXT指令的循环次数如何计算？

答：FOR-NEXT工作过程：启用FOR-NEXT指令，首先将 INIT( 初始值) 复制到 INDX（当前循环次数）；每执行一次，INDX (当前循环次数) 加1； 如 果 INDX 大于 FINAL (终止循环次数)，终止循环。

比如： INIT=1 FINAL=10，则循环体被执行10次，然后退出循环， 退出循环后INDX=11

INIT=0,FINAL=10, 则循环体被执行11次，然后退出循环，退出循环后INDX=11

FOR-NEXT指令执行时，主程序是否执行，对扫描周期的影响？

答：程序自上而下循环扫描，当FOR-NEXT指令启用后，则循环体被循环执行，直至循环次数到达，循环结束，程序继续向下执行。即在一个扫描周期内执行循环完毕后才会向下执行，循环次数越多，会导致扫描周期时间延长越多。如果循环次数过多或者出现死循环，会导致扫描周期时间超过看门狗时间，报出看门狗超时的致命错误，CPU停机并且SF/DIAG灯红灯常亮。

如何在FOR-NEXT执行循环过程中，退出循环？

答：您可以在FOR/NEXT 指令处于循环过程中时，在循环体中修改FINAL (终止循环次数)数值。


自然指令与对数

指数与对数相关概念

在介绍指令之前，首先了解一下指数和对数的相关概念及转换公式。

指数：乘方运算， [image],以 a 为底，x 为指数；其中，当底数为 e ，指数为 x 时，此时指数叫做自然指数

常用对数：以10为底的对数， [image] 记为 lgN

自然对数：以 e 为底的对数， [image] 记为 lnN。（ e 也叫欧拉数，约等于2.71828）

换底公式：

（a,c均大于0且不等于1）

举例：lg5=ln5/ln10 转换之后可以使用 LN 指令

注：以上介绍旨在抛砖引玉，有助于加深指令理解，如有不准确之处，请自行查阅相关资料！

自然指数与自然对数指令

自然指数（EXP）指令进行e 的IN次方指数计算，并将结果置于 OUT 中；也就是说 EXP 指令使用时必须要讲数据转换为以 e 为底的自然指数；IN输 入端填写转换后的指数位置的值。

自然对数（LN）指令对 IN 中的数值进行自然对数计算，并将结果置于 OUT 中。

自然指数（EXP）一般要和自然对数（LN）指令配合使用，即需要通过数学公式将数据转换为 e 的指数幂才可以使用 EXP 指令进行计算

举例：
5的立方 = 5^3=EXP(3*LN(5))=125

125的立方根 = 125^(1/3)=EXP((1/3)*LN(125))=5

5的立方的平方根 = 5^(3/2)=EXP(3/2*LN(5))=11.18034

10的（n-3）次幂=10^(n-3)=EXP((n-3)*LN(10))

以下为关于指令使用的例程,仅供参考,使用前请先自行测试！此示例程序在STEP 7-MicroWIN SMART V2.0版本下生成

EXP-LN.smart

注意：本例程仅供参考，程序中的CPU版本、类型可能与用户实际使用不同，用户可能需要先对例子程序做修改和调整，才能将其用于测试。本例程的作者和拥有者对于该例程的功能性和兼容性不负任何责任，使用该例程的风险完全由用户自行承担。由于它是免费的，所以不提供任何担保，错误纠正和热线支持，用户不必为此联系西门子技术支持与服务部门。


S7-200 SMART SIP_GIP

通过指令实现S7-200 Smart获取IP地址和设置IP地址

S7-200 Smart 固件版本V2.0及以上，STEP7-MicroWin Smart软件V2.0及以上提供指令GIP_ADDR可以实现在线获取PLC的IP地址；指令SIP_ADDR在线设置PLC的IP地址。其中，IP 地址、子网掩码和网关值被写入永久性存储器。指令位置见下图：

图1. GIP和SIP指令

注意：若要使用SIP_ADDR 指令，必须取消选中"IP地址数据固定为下面的值，不能通过其它方式更改"(IP address data is fixed to the values below and cannot be changed by other means) 复选框。该组态复选框位于"系统块"(System Block) "通 信"(Communication) 节点下的"以太网"(Ethernet) 字段中。

图2. 系统块中可以设置PLC固定IP地址

设置电脑的固定IP地址与程序下载

首先设置电脑的IP为固定地址：控制面板--“Network and Internet”--“Network and Share center”--“Local Area Connection”--“Properties”--“Internet Protocol Version 4(TCP/IPv4)”--见下图：

图3. 设置电脑IP地址

编写程序实现IP地址的获取和设置，建议使用变量触点获取IP地址，使用变量上升沿设置IP地址，如下图所示：

图4. GIP和SIP的编程部分

程序编译正确后，点击下载按钮进行下载操作。在弹出的窗口中，查找PLC，如下图所示：

图5. 查找PLC

测试结果

在指令中，IP 地址、子网掩码和网关输出给Dword，在程序监控表里可以单独对Byte寻址，对应IP地址、子网掩码和网关如下图所示：

图6. 获取IP地址程序监控及状态表监控

在进行设置IP地址时，需要完整设置IP地址、子网掩码和网关。先将IP地址和子网通过监控表设置好后，用M0.1上升沿触发，之后再从新使能M0.0，读取IP地址，如图所示：

图7. 设置IP地址程序监控及状态表监控

因设置的IP地址已更改，所以程序监控连接中断，见下图：

+

图8. 因IP地址更改后通信连接中断

如果修改后的IP地址与电脑不在同一子网，需要再次修改电脑的固定IP与新设置的IP地址在同一子网，从新查找PLC后进行连接。
注意：根据需求判断是否需要使用设置IP地址的功能，比如使用触摸屏上修改IP后，可能需要从新设置触摸屏的连接组态才可以通信得上。

例程

例程所需条件：

1、软件版本：STEP 7-Micro/WIN SMART V2.3

2、SMART CPU固件版本:V2.0及以上

3、通讯硬件：TP电缆（以太网电缆）

所实现的功能：

结合上述文档所描述，

M0.0置位时，获取CPU的IP地址，子网掩码以及网关

M0.1上升沿时，设置CPU的IP地址，子网掩码以及网关

GIP_SIP_ADDR

注意：本例程仅供参考，程序中的CPU版本、类型可能与用户实际使用不同，用户可能需要先对例子程序做修改和调整，才能将其用于测试。本例程的作者和拥有者对于该例程的功能性和兼容性不负任何责任，使用该例程的风险完全由用户自行承担。由于它是免费的，所以不提供任何担保，错误纠正和热线支持，用户不必为此联系西门子技术支持与服务部门。

常见问题

1.对于设置IP地址的使能建议用沿指令触发，获取IP地址的指令使能条件可以是触点或者沿指令。
指令中ADDR，MASK，GATE为Dword，若需要进行设置，建议对其中的Byte进行操作。

2.必须完整设置IP地址、子网掩码和网关，否则，无法正确执行该程序。
下图，仅设置IP地址，而不设置子网掩码。M0.1上升沿后，多次读取IP，仍是以前的IP地址，说明新的IP地址没有设置成功。

图9. 未设置子网掩码无法成功设置IP地址

若是换成触点接通SIP_ADDR，可以看到，当IP地址部分设置错误，例如没有设置子网掩码的话，该指令在执行程序监控时为红色，无法正确执行。

图10.未设置子网掩码无法成功设置IP地址且指令红色

结论:
1、对于设置IP地址的使能沿指令触发，获取IP地址的使能条件可以是触点或者沿指令。
2、 使用SIP_ADDR时，必须完整设置IP地址、子网掩码和网关。
3、 使用SIP_ADDR后，新IP地址即刻生效，SMART CPU无需重新启动或者断电上电。
4、重新设置IP地址后，STEP 7-Micro/WIN SMART 通常需要重新建立连接。


定时器指令

定时器

S7-200 SMART指令提供了下述三种类型的定时器。

  • 接通延时定时器（TON）：用于定时单个时间间隔 。
  • 有记忆的接通延时定时器（TONR)：用于累积多个定时时间间隔的时间值。
  • 断开延时定时器（TOF)： 用于在 OFF（或 FALSE） 条件之后延长一定时间间隔，例如冷却电机的延时。

定时器相关视频教程的链接如下：

  • S7-200 SMART定时器指令概述及应用举例——跟我学25/40
  • S7-200 SMART定时器指令概述及应用举例——跟我做26/40

定时器号和分辨率

定时器对时间间隔计数。定时器的分辨率（时基）决定了每个时间间隔的长短。

S7-200 SMART提供了256个可供使用的定时器，即用户可用的定时器号为T0-T255。TON、TONR 和 TOF 定时器提供三种分辨率：1ms、10ms和100ms。（当前值的每个单位均为时基的倍数。例如，使用 10 ms 定时器时，计数 50 表示经过的时间为 500 ms ）。

定时器号的分辨率（时基）及最大计数时间，如下表：

表1. 定时器号和分辨率

定时器类型 | 分辨率 | 最大定时值 | 定时器值
TONR （可保持） | 1 ms | 32.767s (0.546min.) | T0, T64
 | 10 ms | 327.67s (5.46min.) | T1-T4, T65-T68
 | 100 ms | 3276.7s (54.6min.) | T5-T31, T69-T95
TON,TOF （不保持） | 1 ms | 32.767s (0.546min.) | T32, T96
 | 10 ms | 327.67s (5.46min.) | T33-T36, T97-T100
 | 100 ms | 3276.7s (54.6min.) | T37-T63, T101-T255

定时器号决定了定时器的分辨率（时基），并且分辨率在指令块上标出。

注意：同一个定时器编号不能同时用于 TON 和 TOF 定时器。 例如，不能同时使用 TON T32和 TOF T32。

不同分辨率的定时器按以下规律刷新：

  • 1ms：1ms分辨率的定时器，定时器位和当前值的更新不与扫描周期同步。对于大于1ms的程序扫描周期，在一个扫描周期内，定时器位和当前值刷新多次。
  • 10ms：10ms分辨率的定时器，定时器位和当前值在每个程序扫描周期的开始刷新。定时器位和当前值在整个扫描周期过程中为常数。在每个扫描周期的开始会将一个扫描累计的时间间隔加到定时器的当前值上。
  • 100ms：100ms分辨率的定时器，定时器位和当前值在指令执行时刷新。因此为了保证正确的定时值，要确保在一个程序扫描周期中，只执行一次100ms定时器指令。

注意：要确保最小时间间隔，请将预设值 (PV) 增大 1。例如：使用 100 ms 定时器时，为确保最小时间间隔至少为 2100 ms，则将 PV 设置为22。

定时器指令的有效操作数如下表所示：

表2. 定时器指令的有效操作数

输入/输出 | 数据类型 | 操作数
Txxx | WORD | 定时器编号（T0～T255)
IN | BOOL | I、Q、V、M、SM、S、T、C、L、能流
PT | INT | ?IW 、QW、VW、MW、SMW、SW、T、C、LW、AC、AIW、*VD、 *LD、*AC、常数

不同定时器的功能

TON 和 TONR 定时器操作：

  • 在使能输入 IN 接通时开始计时。 当前值等于或大于预设时间时，定时器位置为接通。
  • 使能输入置为断开时，清除 TON 定时器的当前值。
  • 使能输入置为断开时，保持 TONR 定时器的当前值。 输入 IN 置为接通时，可以使用TONR 定时器累积时间。 使用复位指令 (R) 可清除 TONR 的当前值。
  • 达到预设时间后，TON 和 TONR 定时器继续定时，直到达到最大值 32,767 时才停止定时。

TOF 定时器

  • 使能输入接通时，定时器位立即接通，当前值置为 0。输入断开时，定时开始，定时一直持续到当前时间等于预设时间。
  • 达到预设值时，定时器位断开，当前值停止递增；但是，如果在 TOF 达到预设值之前使能输入再次接通，则定时器位保持接通。
  • 要使 TOF 定时器开始定时断开延时时间间隔，使能输入必须进行接通-断开转换。
  • 如果 TOF 定时器在 SCR 区域中，并且 SCR 区域处于未激活状态，则当前值设置为0，定时器位断开且当前值不递增。

定时器工作规律如下表所示：

表3. 定时器操作和PLC上电循环

类型 | 当前值 >= 预设值 | 使能输入 IN 的状态 | 上电循环/首次扫描
TON | 定时器位接通 当前值继续定时到 32,767 | ON： 当前值 = 定时值 OFF： 定时器位断开，当前值 = 0 | 定时器位 = OFF 当前值 = 0
TONR | 定时器位接通 当前值继续定时到 32,767 | ON： 当前值 = 定时值 OFF： 定时器位和当前值保持最后状态和值 | 定时器位 = OFF 当前值可以保持
TOF | 定时器位断开 当前值 = 预设值，停止定时 | ON： 定时器位接通，当前值 = 0 OFF： 在接通-断开转换之后，定时器开始定时 | 定时器位 = OFF 当前值 = 0

接通延时定时器指令举例如下图所示：

图1.接通延时定时器指令程序举例

其中：

  • 定时器T37时基为100ms，预置值设定为10，实际延时时间为100ms×10＝1s。

图2.时序图

其中：

  • IN为“1”状态时，定时器开始运行
  • 延时到达预置值，T37 置位
  • IN输入端为“0”状态时，定时器复位
  • 如无复位，当前值继续增至最大值

定时器在子程序中的表现

在条件调用子程序的主程序中，当停止子程序调用时，如果定时器已经激活正在计时，停止调用这个子程序会造成定时器的失控。不管此时定时器前面的激活条件如何变化，定时器（1ms、10ms 时基的）会一直走到最大值，定时器输出也会在达到设定值时接通；（100ms 时基的定时器会在上述情况下停止计时，但在逻辑上处于失控状态）。

如果用 SM0.0 调用子程序；或者在控制逻辑的时序上做到能够保证定时功能完整执行，定时器会正常运行。使用条件调用含有定时器的子程序时，一定要注意时序逻辑，以免造成程序运行错误。

常见问题

1.利用定时器定时的程序，在编译报错“指令操作数的存储器寻找范围无效”？

这种情况往往是调用的定时器号与定时器类型不配合造成的。参见上面的表格，如T7只能用作TONR，而不能用于TON或TOF。

2.为什么子程序中的定时器和计数器不工作或者工作不正常？

如果有下面情况产生：

A.一个在内部使用了定时器或计数器的子程序，在同一时刻被调用了多次

B. 相同编号的定时器或计数器被多个子程序使用，且同一时刻这些子程序有两个或者以上被调用

则定时器或者计数器资源会因重叠使用而相互影响，造成程序逻辑等方面的错误。


优化定时器

在 STEP 7 Micro/WIN SMART里怎样优化使用定时器?

描述:
在 STEP 7 Micro/WIN SMART里定时器的调用总数限制在 256:

接通延时定时器(“TON”) 和断开延时定时器(“TOF”) ：

  • 2 个(“T32” 和“T96”) 时基为 1 ms
  • 8 个(“T33” 到“T36” 以及“T97” 到“T100”) 时基为 10 ms
  • 182 个(“T37” 到“T63”以及“T101”到“T255”) 时基为 100 ms

带记忆的接通延时定时器 (“TONR”) ：

  • 2 个(“T0”和“T64”) 时基为 1 ms
  • 8 个(“T1”到“T4”以及“T65”到“T68”) 时基为 10 ms
  • 54 个(“T5”到“T31”以及“T69”到“T95”) 时基为 100 ms

图1

定时器可以进行如下仿真而没有限制:

注意：开始间隔时间指令读取内置 1 毫秒计数器的当前值，并将该值存储在 OUT 中。 双字毫秒值的最大计时间隔为 2 的 32 次方或 49.7 天。

接通延时定时器
输入点 I0.0 接通(上升沿) 3 秒后(3000 ms)， 输出点 Q0.0 置位。

图2

带记忆的接通延时定时器
如果输入点 I0.1 的接通时间等于或大于 3 秒 (3000 ms)，输出点 Q0.1 置位。输入点 I0.2 用于复位。

图3

断开延时定时器
输入点 I0.3 断开(下降沿) 3 秒 (3000 ms) 后，输出点 Q0.3 复位。

图4

脉冲发生
通过激活(下降沿)输入点 I0.4，输出点 Q0.4 获取一个持续 3 秒(3000 ms)的脉冲。

图5

注意：

  • 关于定时功能的更多的信息可参考STEP 7 Micro/WIN SMART帮助。

例程

例程所需条件：

1、软件版本：STEP 7-Micro/WIN SMART V2.3

2、SMART CPU固件版本:V1.0及以上

3、通讯硬件：TP电缆（以太网电缆）

所实现的功能：

针对上文的描述，可参看以下例程

TON_TONR_TOF_TP

免责声明

本例程仅供参考，程序中的CPU版本、类型可能与用户实际使用不同，用户可能需要先对例子程序做修改和调整，才能将其用于测试。本例程的作者和拥有者对于该例程的功能性和兼容性不负任何责任，使用该例程的风险完全由用户自行承担。由于它是免费的，所以不提供任何担保，错误纠正和热线支持，用户不必为此联系西门子技术支持与服务部门。


实时时钟

S7-200 SMART 实时时钟

S7-200 SMART的硬件实时时钟可以提供年、月、日、时、分、秒的日期/时间数据。

实时时钟指令使用的相关视频教程链接如下：

  • S7-200 SMART时钟指令概述及应用举例——跟我学29/40
  • S7-200 SMART时钟指令概述及应用举例——跟我做30/40

CPU CR40/CR60 等紧凑型CPU没有内置的实时时钟，其他标准型CPU支持内置的实时时钟，CPU断电状态下可保持7天。

S7-200 SMART CPU的时钟精度是± 120 秒 / 月。

S7-200 SMART CPU 靠内置超级电容为实时时钟提供电源缓冲，保持时间为典型值7天，最小值6天。缓冲电源放电完毕后，再次上电后时钟将停止在缺省值，并不开始走动。

注意：因为 紧凑型CPU 无内置超级电容，所以实时时钟无电源缓冲，尽管用户可以使用READ_RTC 和 SET_RTC 指令设置日期/时间数据，但是当 CPU CR40/CR60 断电并再次上电时，这些日期/时间数据会丢失，上电后日期时间数据会被初始化为2000年1月1日。

为了提高运算效率，应当避免每个程序周期都读取实时时钟。实际上可读取的最小时间单位是1秒，可每秒读取一次（使用SM0.5上升沿触发读取指令）。

使用程序读取的实时时钟数据为BCD格式，可在状态表中使用十六进制格式查看。

要设置日期、时间值，使之开始走动，可以：

  • 用编程软件（Micro/WIN SMART）的菜单命令PLC > SET Clock，通过与CPU的在线连接设置，完成后时钟开始走动
  • 编用户程序使用Set_RTC（设置时钟）指令设置

Micro/WIN SMART 可以通过任何编程连接实现实时时钟的设置。

用 Micro/WIN SMART 设置时钟

通过编程软件 Micro/WIN SMART 设置 CPU 的时钟，必须先建立编程通信连接。
在 Micro/WIN SMART 菜单中选择“PLC “- >”设置实时时钟”，打开“PLC 时钟操作”对话框：

图 1. PLC 实时时钟设置界面

图中：

  1. 设置日期：选择需要修改的数据字段，直接输入数字，或者使用输入框右侧的上下按钮调整
  2. 设置时间：选择需要修改的数据字段，直接输入数字，或者使用输入框右侧的上下按钮调整
  3. 读取 PC 时钟：按此按钮可以读取安装 Micro/WIN SMART的 PC 机的本机时间
  4. 读取 PLC 时钟：按此按钮读取 PLC 内部的实时时钟数据
  5. 根据需要选择夏时制调整选项
  6. 按“设置”按钮，将上面的时钟日期数据写入 PLC

时钟读写指令缓冲区格式

Read_RTC（读时钟）和Set_RTC（设置时钟）指令靠数据缓冲区在用户程序与硬件芯片间交换数据，它们的缓冲区格式相同。

表1. 时钟缓冲区

T字节 | 说明 | 数据值
0 | 年 | 00至99（BCD值）20xx年：其中，xx是T字节0中的两位数BCD值
1 | 月 | 01至12（BCD值）
2 | 日 | 01至31（BCD值）
3 | 小时 | 00至23（BCD值）
4 | 分 | 00至59（BCD值）
5 | 秒 | 00至59（BCD值）
6 | 保留 | 始终设置为00
7 | 星期几 | 使用SET_RTC/TODW指令写入时会或略值。通过SET_RTC/TODR指令进行读取时，值会根据当前年 / 月/日值报告正确的星期几。1至7,1=星期日，7=星期六（BCD值）

* 1 = 星期日，7 = 星期六，0 = 表示禁止计星期

T 就是缓冲区的起始字节地址，可以由用户自由设置（在CPU允许的V存储区范围内）。如果设置T为VB10，那么读取时钟后，“年”的信息就会保存在VB10中，“月”保存在VB11中。

为了更好地理解 实时时钟的读取与设置，可参考下面的例程（软件版本：STEP 7-Micro/WIN SMART V2.3）。

READ_RTC/SET_RTC例程

READ_RTC、SET_RTC 编程提示 不接受无效日期。 例如，如果您输入 2 月 30 日，则将发生非致命日时钟错误 (0007H) 。 不要在主程序和中断例程中使用READ_RTC/SET_RTC 指令。 执行另一个READ_RTC/SET_RTC 指令时，无法执行中断例程中的 READ_RTC/SET_RTC 指令。 在这种情况下，系统标志位 SM4.3 会置位，指示尝试同时对日时钟执行二重访问，导致T 数据错误（非致命错误 0007H ）。 CPU 中的日时钟仅使用年份的最后两位数，因此 2000 年表示为 00 。但使用年份值的用户程序必须考虑两位数的表示法。 2099 年之前的闰年均可正确处理。

实时时钟精度

表2.实时时钟精度

CPU型号 | 实时时钟精度 | 实时时钟保持时间
CPU SR20 | +/- 120 s/月 | 通常为7天，25°C时最少为6天（免维修超级电容）
CPU SR40 | 120 s/月 | 通常为7天，25°C时最少为6天
CPU ST40 | 120 s/月 | 通常为7天，25°C时最少为6天
CPU CR40 | -- | --
CPU ST60 | 120 s/月 | 通常为7天，25°C时最少为6天
CPU SR60 | 120 s/月 | 通常为7天，25°C时最少为6天

CPU在长时间断电后会对这些值进行初始化。

表3.初始化后的值

日期 | 时间 | 星期几
2000年1月1日 | 00:00:00 | 星期六

常问问题

写时钟指令（SET_RTC）为何不能正常改写时钟内容？

  1. 写时钟指令需要严格按照8个字节的时钟缓冲区格式，设置相应的数据单元，任何不合格的数据都可能造成不能写入的现象。注意数据的格式必须是BCD格式，可以说是将10进制数换成16进制表示，如16#59（59H）就是59（秒/分等）。

    执行写时钟指令要保证缓冲区所有字节都包含合法数据；仅修改某些数据时，其他字节不能包含非法数值，否则会发生错误。

  2. 写时钟指令必须使用一次性的脉冲（沿）触发条件，不能持续激活写时钟指令。

读写的时钟数据如何在十进制（整数）和BCD数据之间转换？

要计算时间需要将BCD格式的时钟数据与十进制的数据之间的转换，使用相应的转换指令就可以实现。

具体转换指令参见链接：Clock_Integer 指令库以及使用

如何实现实时是时钟的长期备份？

S7-200 SMART SB BA01 电池板适用于实时时钟的长期备份。其可插入 S7-200 SMART CPU（固件版本 V2.0 及更高版本）的信号板插槽中。必须将 SB BA01添加到设备组态并将硬件配置下载到 CPU 中，SB BA01才可以使用附加电池健康状况报告选项。电池（型号 CR1025）未随 SB BA01 一起提供，用户必须另行购买。


实时时钟例程

S7-200 SMART 实时时钟例程

例程1.READ_RTC/SET_RTC例程

实时时钟的读取与设置，可参考下面的例程（软件版本：STEP 7-Micro/WIN SMART V2.3）

READ_RTC/SET_RTC例程

例程2.Clock_Integer 指令库例程

要使用 Clock_Integer 指令库，须遵循下列步骤：

  • 取得 Clock_Integer 指令库文件，并添加到编程软件 STEP 7-Micro/WIN SMART中；
  • 按照要求编写用户程序调用 Clock_Integer 指令库。

    • Clock_Integer 指令库例程

    以上例程的详细描述可以参考：Clock_Integer 指令库及其使用

    常问问题：

    Clock_Integer 指令库和STEP 7 Micro/WIN SMART指令树中的读、写实时时钟指令有什么不同？

    Clock_Integer 指令库读出或写入的 PLC 时钟是以十进制整数格式存储；而读、写实时时钟指令读出或写入的 PLC 时钟为 BCD 码格式。

    免责声明

    本例程仅供参考，程序中的CPU版本、类型可能与用户实际使用不同，用户可能需要先对例子程序做修改和调整，才能将其用于测试。本例程的作者和拥有者对于该例程的功能性和兼容性不负任何责任，使用该例程的风险完全由用户自行承担。由于它是免费的，所以不提供任何担保，错误纠正和热线支持，用户不必为此联系西门子技术支持与服务部门。


顺序控制

顺序控制（SCR）指令

顺序控制指令的功能是是按照控制工艺将一个复杂的步骤分割成几个简单的步骤（即顺控段），并根据工艺步骤顺序执行这些顺控段。
普通的PLC程序是从头到尾不断扫描执行的。SCR指令的关键是“步”和“转换”，当转换的条件不满足时会一直保持在当前的步中。“转换”就是从一个步，进入另一个步。

注意：

请用户不要用调用子程序的原理去理解顺控的的执行方式，不被激活的顺控段并不是被直接跳过，而是从最左侧切断该顺控段的指令能流。

指令描述

LAD | 描述
 | 装载 SCR 指令 (LSCR) 将 S 位的值装载到 SCR 和逻辑堆栈中。 SCR 堆栈的结果值决定是否执行 SCR 程序段。 SCR 堆栈的值会被复制到逻辑堆栈中，因此可以直接将指令块或者输出线圈连接到左侧的能流线上而不经过中间触点。
 | SCRT 指令标识要启用的 SCR 位（要设置的下一个 S_bit）。能流进入线圈或 FBD 功能框时，CPU 会开启引用的 S_bit，并会关闭 LSCR 指令（启用此 SCR 段的指令）的 S_bit。
 | 梯形图编程中，直接连接SCRE指令到能流线上，表示该顺控段的结束。

控制流

常见的有顺序控制流和分散控制流两种：

顺序控制流 | 分散控制流

常问问题

1. 为什么顺控指令段对应的S标志位已经被复位了，但是顺控段中的程序似乎还能影响程序逻辑？

我们首先看如图4.47顺控程序举例 所示的程序例子：

图1.顺控程序举例

从上图可以看出，主程序的程序段1中使用SM0.0置位了输出Q0.0。从程序段2到5的顺控段对应的S0.1为OFF状态，但是在程序段3中输出Q0.0被复位了，在图片右侧所示的状态表中也显示了Q0.0的状态为'0'。这种结果的原因在于当一个顺控段对应的S标志位被复位时，程序并不是从指令SCR直接跳转到SCRE，而是将SCR和SCRE指令之间的程序段左侧的能流切断。 可以在不同的步中对同一个输出点进行操作。这些逻辑运算不应使用普通编程时的实时状态计算规则，应使用S（置位）和R（复位）指令对输出点操作；或者使用中间状态继电器过渡，最后再综合逻辑，一起输出。


SCR－顺控子程序的停止与恢复

步进程序急停与恢复的解决方案

这里提供了一个实例，说明了步进（顺序）控制程序的主要特定和注意事项，提供了一个停止和恢复顺控程序功能的解决方案。

功能描述

系统要求循环执行步进程序，程序启动后，按编制的顺序执行程序：

  1. 第一步输出 Q0.1为10秒的高电平信号；
  2. 10秒后切换到第二步复位Q0.1，同时输出Q0.2为20秒的高电平信号；
  3. 20秒后切换到第三步复位Q0.2，同时输出Q0.3为30秒的高电平信号；
  4. 30秒后返回第一步输出Q0.1为10秒的高电平信号，同时复位Q0.3；

依此循环执行步进程序。

当有意外情况发生或断电后需紧急停止输出，实现系统急停功能；待意外情况排除或恢复供电后继续执行步进程序，继续执行可选择从初始步运行或是从中断处运行。

解决方案

程序控制方式相同，按照急停与恢复控制和控制程序的关系有两种方案。

  1. 急停与恢复控制在步进程序内，

    参见程序： test_scr_1.smart

    具体控制方式和测试方法在主程序中有描述。

  2. 急停与恢复控制在步进程序外，

    参见程序： test_scr_2.smart

    具体控制方式和测试方法在主程序中有描述。

特别说明

程序中用到的VB0 ，VW2，VW4，VW6 必须设置为断电保存，而MB0，MB1不能设置为断电保存。


子程序和中断服务程序

子程序和中断服务程序都是程序的组织结构，它们和主程序一起被称为POU（程序组织单元）。

子程序

子程序可以把整个用户程序按照功能进行结构化的组织。一个“好”的程序总是把全部的控制功能分为几个符合工艺控制规律的子功能块，每个子功能块可以由一个或多个子程序组成。这样的结构也非常有利于分步调试，以免许多功能综合在一起无法判断问题的所在；而且，几个类似的项目也只需要对同一个程序作不多的修改就能适用。

  • 更好的组织程序结构，便于调试和阅读；
  • 子程序在执行到末尾时自动返回，不必加返回指令；
  • 子程序不能使用跳转语句跳入、跳出；
  • S7-200 SMART CPU最多可以调用128个子程序；
  • 子程序可以嵌套调用，即子程序中再调用子程序，一共可以嵌套8层 ；
  • 子程序可以带参数调用，在子程序的局部变量表中设置参数的类型；

有关子程序的详情，请看《S7-200 SMART系统手册》相关部分。

中断服务程序

中断功能是S7-200 SMART 的重要功能，用于实时控制、高速处理、通信和网络等复杂和特殊的控制任务。

S7-200 SMART 系列可编程控制器最多有38个中断源(9个预留)，分为三大类：通信中断、输入/输出（I/O）中断和时基中断，优先由高到低依次是：通信中断、I/O中断和时基中断。每类中断中不同的中断事件又有不同的优先权。

S7-200 SMART 中使用中断服务程序来响应这些内部、外部的中断事件。中断服务程序与子程序最大的不同是，中断服务程序不能由用户程序调用，而只能由特定的事件触发执行。

  • 及时处理与用户程序的执行时序无关的操作，或者不能事先预测何时发生的“事件”
  • 只有把中断服务程序标号（名称）与中断事件联系起来，并且开放系统中断后才能进入等待中断并随时执行的状态
  • 多个中断事件可以连接同一个中断服务程序；一个中断服务程序只能连接一个中断事件
  • 中断程序只需与中断事件连接一次，除非需要重新连接
  • 中断事件各有不同的优先级别 ，中断服务程序不能再被中断，如果再有中断事件发生，会按照发生的时间顺序和优先级排队
  • 中断程序应短小而简单，执行时对其他处理不要延时过长，即越短越好
  • 中断程序一共可以嵌套 4层子程序。

在《S7-200 SMART系统手册》中有关中断指令的叙述十分详细，建议初学者仔细阅读。


子程序应用常问问题

子程序调用的常问问题

1、为什么指令或者子程序的使能（EN）管脚前没有任何条件时，会有编译错误？

当子程序或者指令的使能管脚前面没有编写任何条件时，编译后会出现一个语法错误，如图.无条件调用指令或子程序 所示：

图.无条件调用指令或子程序

上面的编程方式是不被允许的。如果用户希望无条件调用子程序或者指令，可以使用SM0.0作为使能条件，如图1.SM0.0作为使能条件 所示：

图1. SM0.0作为使能条件

2、为什么子程序已经不激活了，但是子程序的输出没有复位？

以下面一个简单子程序SBR_0为例，SBR_0将一个IN类型的布尔变量IN1直接连接到一个OUT布尔变量OUT1。在主程序中使用M0.0条件调用SBR_0，如图2.子程序输出 所示：

图2.子程序输出
当M0.0为‘1’时，子程序执行，CPU_输入0有信号时，CPU_输出0有信号输出。此时将M0.0复位，则子程序不再执行，输出OUT1保持子程序最后一次执行的状态，不会被自动复位。

3、在子程序中如果使用了上升沿捕捉时指令，那么此子程序被多次重复调用时，为什么上升沿捕捉逻辑不能正常执行？

举一个简单的例子，在子程序SBR_0中声明一个布尔类型输入变量和一个布尔类型的输出变量，输入变量IN1通过一个常开触点连接一个上升沿捕捉指令，之后再连接一个线圈输出到输出变量OUT1。在主程序中的网络1和网络2中，连续使用SM0.0作为使能条件两次调用子程序SBR_0，子程序的输入输出分别连接M0.0、M0.1、M0.2、和M0.3。如图3.子程序和主程序内容 所示：

图3.子程序和主程序内容

如果将M0.0复位，M0.2置位，单纯按上升沿捕捉的逻辑，由于没有上升沿跳变，子程序的输出都应该是‘0’。但是在线监控可以看到M0.1持续为‘0’， M0.3保持为‘1’。如图4.在线监控 所示：

图4.在线监控
上升沿捕捉指令的工作原理是将本次左侧能流过来的‘1’、‘0’信号与上次指令执行时的状态比较，如果检测到从0到1的变化，则导通。每条上升沿下降沿指令都隐含一个布尔数据资源来存储上一次输入信号的‘1’、‘0’状态。在程序段1中，M0.0将上升沿捕捉清零，M0.2不输出。程序段2中M0.2为1，上升沿捕捉指令刚好捕捉到一个由0到1的变化，所以M0.3导通。详细请参考表1.上升沿变化：
表1.上升沿变化

 | 第一个扫描周期 |  | 第二个扫描周期
 | 程序段1 | 程序段2 | 程序段1 | 程序段2
M0.0 | 0 | 0 | 0 | 0
M0.1 | 0 | 0 | 0 | 0
M0.2 | 1 | 1 | 1 | 1
M0.3 | 1 | 1 | 1 | 1
P(上升沿捕捉) | 0 | 1 | 0 | 1

4、为什么子程序中的定时器和计数器不工作或者工作不正常？
如果有下面情况产生：
● 一个在内部使用了定时器或计数器的子程序，在同一时刻被调用了多次
● 相同编号的定时器或计数器被多个子程序使用，且同一时刻这些子程序有两个或者以上被调用
则定时器或者计数器资源会因重叠使用而相互影响，造成程序逻辑等方面的错误。

5、为什么子程序的输出不正常？
这里首先举例一个子程序SBR_0，该子程序的接口声明一个INT类型的IN变量‘Pressure’和一个BOOL类型的OUT变量‘OPEN’，子程序中只有一个程序段，在程序段1中编写当输入Pressure数值大于500时将输出OPEN置位，如图5. 子程序输出不正常 所示。

图5. 子程序输出不正常
这样的子程序被调用后，当输入Pressure达到过500时，输出OPEN被置位；但当输入Pressure从未达到过500时，输出OPEN一直保持为一个未知的状态，可能是1，也可能是0。由于子程序的局部变量仅在本次调用时有效，且每次获取到的局部变量资源有一定的随机性，有可能已经具有一个随机的数据存储在该局部变量地址中，因此对于OUT类型的接口变量，必须保证每次调用程序都对其进行写操作，否则就是编程逻辑的不严密。当然，用户也可以考虑使用IN_OUT变量类型代替OUT变量类型。


存储卡

S7-200 SMART CPU 支持商用MicroSD卡（支持容量为4G，8G，16G；2G和 32G容量不支持 ）：可用于程序传输，CPU固件更新，恢复 CPU 出厂设置。
注意:存储卡需要采用FAT32文件系统格式。

存储卡使用相关视频教程的链接如下：

  • S7-200 SMART 使用存储卡——跟我学43/52
  • S7-200 SMART 使用存储卡——跟我做44/52
  • S7-200 SMART PLC存储卡的使用（西门子热线工程师内部学习讲座）

打开CPU本体数字量输出点上方的端子盖，可以看到右侧有一卡槽，将MicroSD卡缺口向里插入，如图 1所示：

图 1. 插入Micro SD 卡

功能一、使用 MicroSD 卡传送程序

1.制作程序传输卡

目前，可以通过两种方式制作程序传输卡：

方法一： 在PLC上创建程序传输卡 (适用于STEP7 Micro/WIN SMART 软件各版本)

步骤一：
用户在 CPU 上电且停止状态下插入存储卡；

注意： 用户也可以在CPU断电状态下插入一张空的存储卡然后再将 CPU 上电，但是需要注意的是存储卡必须确实是空的而不是旧的固件更新卡或者是程序传输卡。否则可能会更改 CPU 固件或者是内部存储的项目。

步骤二：
下载源程序到CPU（如果CPU中已经存在源程序则不需此步）；

步骤三：

  • STEP7 Micro/WIN SMART V2.3及以前版本：
    在 Micro/WIN SMART 中，点击“PLC”->“存储卡设定” ，打开“程序存储卡”对话框，选择需要被拷贝到存储卡上的块（程序块、系统块、数据块），点击“编程”设定，如图2所示；

  • STEP7 Micro/WIN SMART V2.4：
    在 Micro/WIN SMART 中，点击"PLC"->"存储卡设定" ，单击"设定"按钮向下箭头，选择"PLC端的程序存储卡"如图3所示；打开"程序存储卡"对话框，选择需要被拷贝到存储卡上的块（程序块、系统块、数据块），点击"设定"按钮。

    图 2. 编程存储卡

    图 3. PLC端的程序存储卡

    注意：在 Micro/WIN SMART 中进行“编程存储卡”操作时，是将CPU中存储的程序拷贝至CPU，而非软件中打开的程序。所以必须先将程序下载到CPU中，才能执行“编程存储卡”操作。

    方法二： 在PC上创建程序传输卡（编程软件至少是STEP7 Micro/WIN SMART V2.4版本）

    如果没有实际的PLC，可以考虑通过编程软件直接将程序复制到存储卡，但是该功能仅限于STEP7 Micro/WIN SMART V2.4及以上的软件，具体步骤如下：

    步骤一：
    在 Micro/WIN SMART 中，点击"PLC"->"存储卡设定" ，单击"设定"按钮向下箭头，选择"PLC端的程序存储卡"如图4所示；

    图 4. PC端的程序存储卡

    步骤二：
    打开"程序存储卡"对话框，选择需要被拷贝到存储卡上的块（程序块、系统块、数据块）， 单击"浏览"按钮，导航至SD卡的根文件夹，如图5所示:
    选择完毕后点击"保存"按钮即可。

    图 5. 设置PC端的程序存储卡

    2.使用已制作好的程序传输卡拷贝项目到另一个 CPU

    步骤一：
    在 CPU 断电状态下插入存储卡；

    步骤二：
    给 CPU 上电，CPU 会自动识别存储卡为程序传输卡并且自动将其中的内容复制到 CPU 内部存储器，传输过程中RUN 指示灯和 STOP 指示灯以 2 HZ 的频率交替点亮；

    步骤三：
    当 CPU 只有 STOP 灯开始闪烁，表示“程序传送”操作成功，则从 CPU 上取下存储卡。

    功能二、使用 MicroSD 卡更新固件

    步骤一：
    用普通读卡器将固件文件拷贝到一个空的MicroSD 卡中。固件文件包括：工作文件 “S7_JOB.S7S” 和文件夹“FWUPDATE.S7S”（内含固件，命名方式：CPU订货号+固件版本号，扩展名为.upd）。
    使用记事本打开文件 “S7_JOB.S7S”，应只包含字符串“FWUPDATE”。

    图 6.固件文件夹

    步骤二：
    在 CPU 断电状态下将包含固件文件的存储卡插入 CPU ；

    步骤三：
    给 CPU 上电，CPU 会自动识别存储卡为固件更新卡并且自动更新 CPU 固件。更新过程中RUN 指示灯和 STOP 指示灯以 2 HZ 的频率交替点亮。

    步骤四：
    当 CPU 只有 STOP 灯开始闪烁，表示“固件更新”操作成功，·从 CPU 上取下存储卡。

    步骤五：
    给 CPU 重新上电，在 Micro/WIN SMART 中查看CPU固件版本，如图7所示。

    图 7.查看CPU固件版本

    功能三、使用 MicroSD 卡恢复 CPU 出厂设置

    步骤一：
    使用Windows 系统自带的记事本软件创建一个只包含一行字符串“RESET_TO_FACTORY”的简单文本文件，并将该文本文件的文件名修改为 “S7_JOB.S7S”，即可制作完成恢复出厂设置文件。使用普通读卡器将恢复出厂设置文件拷贝到一个空的 MicroSD 卡中。注意文本文件的默认文件名后缀为“.txt”必须被修改成“.S7S”。
    附： S7_JOB.rar（解压缩该文件后，请将S7_JOB.S7S 文件拷贝到空白的MicroSD卡中）

    步骤二：
    在 CPU 断电状态下插入 MicroSD 卡，给 CPU 上电，CPU 会自动识别存储卡为恢复出厂设置卡并且自动恢复 CPU 出厂设置。恢复出厂设置过程中，RUN 指示灯和 STOP 指示灯以 2 HZ 的频率交替点亮。

    步骤三：
    当 CPU 只有 STOP 灯开始闪烁，表示“恢复出厂设置”操作成功，从 CPU 上取下存储卡。

    步骤四：
    “恢复出厂设置”操作包括以下几项操作：将 CPU IP 地址恢复为出厂默认设置，清空 CPU 程序块、数据库和系统块。

    图 8.恢复出厂设置操作后 CPU 的 IP 地址

    注意：恢复出厂设置不会更改CPU的固件版本，CPU 固件版本将保持为恢复出厂设置操作之前的固件版本。

    常问问题

    S7-200 SMART的存储卡是否是必须的？

    S7-200 SMART存储卡不是必须的，程序存储在CPU的程序存储区EEPROM中，永久保存，不会丢失，EEPROM无法通过存储卡扩展。

    如何将固件更新卡转换为程序传输卡？

    在CPU上电且停止状态下插入固件更新卡，按照制作程序传输卡的步骤进行操作，即可得到一张程序传输卡，但需注意的是原卡中的固件更新文件会被删除。

    如何将程序传输卡转换为固件更新卡？

    使用读卡器将固件更新文件拷贝至程序传输卡，删除原卡中的程序传输文件夹 “SIMATIC.S7S” ，并将工作文件“S7_JOB.S7S”中的字符串更换为“FWUPDATE” 。

    注意：建议用户不要在同一张存储卡上同时存储程序传输文件和固件更新文件。

    在固件更新期间 CPU 本体上的 LED 指示灯如何显示？如果用户在固件更新期间取出存储卡，LED 指示灯如何显示？

    CPU 本体上的 LED 灯在使用存储卡时的显示状态及原因：

    状态一：如果用户在 CPU 运行状态下插入存储卡，CPU 会转入停止状态。无论存储卡中存储了什么这种行为都会发生。

    状态二：STOP 灯以 2 HZ 的频率闪烁
    a. CPU 上电后，通过存储卡的“固件更新”操作被成功执行，并且 CPU 此刻需要重新上电或者重启；
    b. CPU 上电后，通过存储卡的“程序传输”操作被成功执行；
    c. CPU 上电后，通过存储卡的“恢复出厂设置”操作被成功执行；
    d. CPU 上电后，检测到空存储卡或者是未知卡件，无任何操作被执行；
    e. 在上电状态下插入一张存储卡。

    状态三：STOP 灯和 ERROR 灯同时以 2 HZ 频率闪烁
    a. CPU 上电后，试图通过存储卡进行“固件更新”操作并且没有成功；
    b. CPU 上电后，试图通过存储卡进行“程序传输”操作并且没有成功；
    c. CPU 上电后，试图通过存储卡进行“恢复出厂设置”操作并且没有成功；
    d. 当“固件更新”操作和“程序传输”操作正在进行中，用户取出存储卡。

    注意：对于产生“状态二”的情况 b, c, d，e 以及产生“状态三”的情况 b, c ，当取出存储卡时 LED 灯的闪烁状况会停止；对于产生“状态二”的情况 a 和产生“状态三”的情况 a，只有当 CPU 重新上电或者重启时 LED 灯才会停止闪烁。

    状态四：繁忙 LED 模式（RUN 指示灯和 STOP 指示灯以 2 HZ 的频率交替点亮）
    “固件更新”操作和“程序传输”操作正在进行中，当该操作停止时， LED 灯显示状态转为“状态二”或者“状态三”。

    如果存储卡中同时包含程序文件和固件更新文件，哪种更新操作会被优先执行？是否有预定义的优先级？是否可以在一张固件更新存储卡上进行程序传输卡的制作？

    存储卡上的固件更新文件位于一个名为 “FWUPDATE.S7S” 的文件夹中，程序传输文件位于一个名为 “SIMATIC.S7S” 的文件夹中。所以理论上这两个文件夹可以同时存储在存储卡上。

    然而，存储卡内只有一个命名为 “S7_JOB.S7S” 工作文件，这个文件决定了CPU 将存储卡视为固件更新卡还是程序传输卡。如果工作文件包含字符串 “FWUPDATE”，那么这张存储卡便是固件更新卡。若工作文件包含字符串 “TO_ILM”，那么这张存储卡便是程序传输卡。

    此外，如果 CPU 被指示创建程序传输卡，固件实际上会在复制项目文件到存储卡上之前先删除存储卡上的以下内容：
    ——“FWUPDATE.S7S” 文件夹和其中的所有内容；
    ——“S7_JOB.S7S” 文件夹和其中所有的内容。

    如果一张程序传输卡中留有固件更新文件是存在潜在风险的。用户可能会在一张程序传输卡上拷贝固件更新文件，如果工作文件包含字符串 “FWUPDATE” ，则CPU会将存储卡视为固件更新卡。


数据日志

数据记录通常是指按照日期时间排序的一组数据，每条记录都是某些过程事件的一套过程数据。这些记录可以包含时间及日期标签。用户可以在程序控制下保存过程数据记录到CPU的存储器中。

只有固件版本V2.0或更高版本的S7-200 SMART CPU支持数据日志功能，在STEP 7-Micro/WIN SMART软件中,可以通过数据日志向导创建最多四个数据日志文件,他们存储在PLC的永久存储器中。每个数据日志都是一个单独的文件，最大为 2 兆字节。

  • 数据日志文件其结构为循环文件结构。添加新的记录数据，并保留旧的记录数据，直到所有记录均被写入为止。所有记录均被写入后，每个新添加的记录都会覆盖最早的记录被删除。
  • 特殊存储器地址用于对当前数据日志操作状态进行监视，例如初始化错误和数据记录的实际数量。有关详细信息，请参见《S7-200 SMART系统手册》中特殊存储器SMB480-SMB515：数据日志状态介绍。

注意：只有 CPU 固件版本 V2.0 或更高版本的 S7-200 SMART CPU 才支持数据日志功能。固件版本低于 V2.0 版本的 CPU 可以通过 MicroSD存储卡 进行固件升级，升级到 V2.0 版本。

数据日志向导

1、启动数据日志向导

在“工具”(Tools) 菜单的“向导”(Wizards) 区域单击“数据日志”按钮，启动数据日志向导。

图 1.启动数据日志向导

2、选择要组态的数据日志

数据日志向导中可以选择一到四个单独的数据日志文件。

图 2.选择要组态的数据日志

3、命名所选择的数据日志

图 3.命名数据日志

4、定义数据日志的可选项

图 4.定义数据日志可选项

  • a.定义卡中存储的数据归档记录的最大条数
  • b.选择数据日志时加上 CPU 的时间标签
  • c.选择数据日志时加上 CPU 的日期标签
  • d.选择数据日志上载时是否清除 CPU 中的 数据日志的数据

5、定义数据日志的字段

图 5.定义数据日志可选项

  • a.定义数据的符号名
  • b.定义数据类型
  • c.数据的描述

6、定义向导所需要的V存储区

图6. 分配向导所需要的V存储区

注：分配的存储器地址不能与其他程序存在地址重叠。

7、数据日志生成的项目组件

图7. 数据日志组件

8、调用 DATx_WRITE程序

图8. 调用 DATx_WRITE

注：CPU的EEPROM有擦写次数限制，不能无限次数据存储,所以使用沿触发调用 DATx_WRITE 指令 。

8、将数据日志上传到 PC

点击"PLC 菜单"的“上传数据日志”(Upload Data Logs) 命令会将数据日志副本从 CPU 上传到已连接的 PC 或 PG 上。 上传的数据日志文件的格式为 CSV（逗号分隔值），适合与文本编辑器或诸如 Microsoft Excel 之类的电子表格工具使用。下图显示了从"PLC 菜单"访问“上传数据日志”(Upload Data Logs) 的命令。

图9. 上传数据日志

下图显示了在 MS Excel 中打开的已上传的数据日志 CSV 文件示例。 该数据日志文件包括三个记录，每个记录有三个数据值。

图10. 数据日志 CSV 文件

数据日志例程

例程所需条件：

1、软件版本：STEP 7-Micro/WIN SMART V2.3

2、SMART CPU固件版本:V2.0及以上

3、通讯硬件：TP电缆（以太网电缆）

所实现的功能：

结合上述文档所描述，M0.0上升沿时记录数据一次：

Data_Log

注意：本例程仅供参考，程序中的CPU版本、类型可能与用户实际使用不同，用户可能需要先对例子程序做修改和调整，才能将其用于测试。本例程的作者和拥有者对于该例程的功能性和兼容性不负任何责任，使用该例程的风险完全由用户自行承担。由于它是免费的，所以不提供任何担保，错误纠正和热线支持，用户不必为此联系西门子技术支持与服务部门。

常见问题：

1、为什么软件中数据日志功能不可用呢?

只有固件版本V2.0或更高版本的S7-200 SMART CPU才支持数据日志功能！

2、如何监视或者显示数据日志的操作状态？

可以在触摸屏或上位机显示数据日志状态，如初始化错误和数据记录的实际数量；SMB480 至 SMB515 为只读特殊存储器地址，用于数据日志状态的介绍。


高速计数器

CPU 本体集成高速计数器

S7-200 SMART CPU具有集成的、硬件高速计数器。

固件版本V1.0 的CPU SR20、 CPU SR40、 CPUST40 、CPU SR60 和 CPU ST60可以使用4个60kHz单相高速计数器或2个40kHz的两相高速计数器，而CPU CR40可以使用4个30kHz单相高速计数器或2个20kHz的两相高速计数器。

固件版本V2.0 到V2.2的标准型CPU（ST/SR20、ST/SR30、ST/SR40、ST/SR60）可以使用4个200kHz单相高速计数器或2个100kHz的两相高速计数器，而紧凑型CPU CR40、CR60可以使用4个100kHz单相高速计数器或2个50kHz的两相高速计数器。

固件版本V2.3 的标准型CPU支持6个高速计数器，具体请参考表1和表2。

表1 标准CPU高速计数器

标准型CPU 参数 | CPU SR20 AC/DC/Relay | CPU ST20 DC/DC/DC | CPU SR30 AC/DC/Relay | CPU ST30 DC/DC/DC | CPU ST40 DC/DC/DC | CPU SR40 AC/DC/Relay | CPU ST60 DC/DC/DC | CPU SR60 AC/DC/Relay
高速计数器 | 6（全部） |  | 6（全部） |  | 6（全部） |  | 6（全部）
——单相/双相 | 4 @ 200 KHz +2 @30 KHz |  | 5 @ 200 KHz +1 @30 KHz |  | 4 @ 200 KHz +2 @30 KHz |  | 4 @ 200 KHz +2 @30 KHz
——A/B相 | 2 @ 100 KHz+ 2@20Kz |  | 3 @ 100 KHz+ 1@20Kz |  | 2 @ 100 KHz+ 2@20Kz |  | 2 @ 100 KHz+ 2@20Kz

表2 经济型CPU参数

经济型CPU 参数 | CPU CR20s AC/DC/Relay | CPU CR30s AC/DC/Relay | CPU CR40s AC/DC/Relay | CPU CR60s AC/DC/Relay
高速计数器 | 4（全部）
——单相/双相 | 4 @100 KHz | 4 @ 100 KHz | 4 @ 100 KHz | 4 @ 100 KHz
——A/B相 | 2 @ 50 KHz | 2 @ 50 KHz | 2 @ 50 KHz | 2 @ 50 KHz

计数器共有四种基本类型：带有内部方向控制的单相计数器，带有外部方向控制的单相计数器，带有两个时钟输入的双相计数器和A/B相正交计数器。

表3. 高速计数器的模式及输入点：

模式 | 描述 | 输入点
 | HSC0 | I0.0 | I0.1 | I0.4
 | HSC1 | I0.1 |  |
 | HSC2 | I0.2 | I0.3 | I0.5
 | HSC3 | I0.3 |  |
 | HSC4 | I0.6 | I0.7 | I1.2
 | HSC5 | I1.0 | I1.1 | I1.3
0 | 带有内部方向控制的单相计数器 | 时钟 |  |
1 |  | 时钟 |  | 复位
3 | 带有外部方向控制的单相计数器 | 时钟 | 方向 |
4 |  | 时钟 | 方向 | 复位
6 | 带有增减计数时钟的双相计数器 | 增时钟 | 减时钟 |
7 |  | 增时钟 | 减时钟 | 复位
9 | A/B相正交计数器 | 时钟A | 时钟B |
10 |  | 时钟A | 时钟B | 复位

表4. 高速计数器的寻址

高速计数器号 | HSC0 | HSC1 | HSC2 | HSC3 | HSC4 | HSC5
新当前值（新 CV） | SMD38 | SMD48 | SMD58 | SMD138 | SMD148 | SMD158
新预置值（新 PV） | SMD42 | SMD52 | SMD62 | SMD142 | SMD152 | SMD162
当前计数值（仅读出） | HC0 | HC1 | HC2 | HC3 | HC4 | HC5

高速计数器的具体编程及相关的中断和其它参数，请参见《S7-200 SMART 系统手册》，上面有详细的阐述及例程。

STEP 7-Micro/WIN SMART提供了一个方便实用的高速计数器指令编程向导，用户可以简单快速地配置自己的高速计数器功能。

西门子热线工程师内部学习讲座-HSC部分：

  • S7-200 SMART PLC 高速计数器功能（西门子热线工程师内部学习讲座）

高速输入降噪

要正确操作高速计数器，可能需要执行以下一项或两项操作：
● 调整 HSC 通道所用输入通道的“系统块”数字量输入滤波时间。 在 S7-200 SMART CPU 中。 在 HSC 通道对脉冲进行计数前应用输入滤波。 这意味着，如果 HSC 输入脉冲以输入滤波过滤掉的速率发生，则 HSC 不会在输入上检测到任何脉冲。 请务必将 HSC 的每路输入的滤波时间组态为允许以应用需要的速率进行计数的值。 包括方向和复位输入。 下表显示可检测到的每种输入滤波组态的最大输入频率。

表5.输入滤波设置和可检测到的最大输入频率

输入滤波时间 | 可检测到的最大频率
0.2μs | 200KHz （标准型CPU） 100KHz(紧凑型或经济型CPU)
0.4μs | 200KHz （标准型CPU） 100KHz(紧凑型或经济型CPU)
0.8μs | 200KHz （标准型CPU） 100KHz(紧凑型或经济型CPU)
1.6μs | 200KHz （标准型CPU） 100KHz(紧凑型或经济型CPU)
3.2μs | 156KHz （标准型CPU） 100KHz(紧凑型或经济型CPU)
6.4μs | 78kHz
12.8μs | 39 kHz
0.2ms | 2.5kHz
0.4ms | 1.25kHz
0.8ms | 625 Hz
1.6ms | 312 Hz
3.2ms | 156 Hz
6.4ms | 78 Hz
12.8ms | 39 Hz

输入逻辑电平有效电压范围

表6. 输入逻辑电平有效电压范围

CPU型号 | 逻辑1信号（最小） | 逻辑0信号（最大）
SR、CR、CRS | 2.5mA时 15VDC | 1mA时 5VDC
ST20/30 | I0.0-I0.3：8mA时 4VDC I0.6-I0.7：8mA时 4VDC 其他：2.5mA时15VDC | I0.0-I0.3：1mA时 1VDC I0.6-I0.7：1mA时 1VDC 其他：1mA时5VDC
CPU ST40/60 | I0.0-I0.3：8mA时 4VDC 其他：2.5mA时15VDC | I0.0-I0.3：1mA时 1VDC 其他：1mA时 5VDC

●加入下拉电阻是为了使输入输出信号达到其逻辑电平有效范围。 如果设备的输出是集电极开路晶体管，则可能出现这种情况。 晶体管关闭时，没有任何因素将信号驱动为低电平状态。 信号将转换为低电平状态，但所需时间将取决于电路的输入电阻和电容。 这种情况可能导致脉冲丢失。 可通过将下拉电阻接到输入信号的方法避免这种情况，如下图所示。 由于 CPU 的输入电压是24V，因此电阻的额定0功率必须为高功率。 100 欧 5 瓦的电阻是一个合适的选择。

图1. 集电极开路HSC输入驱动接线下拉电阻


高速计数器指令向导

在 Micro/WIN SMART 中的命令菜单中选择 Tools（工具）> Wizards（向导）中选择 High Speed Counter（高速计数器向导） ，也可以在项目树中选择 Wizards（向导）文件夹中的 High Speed Counter（高速计数器向导）按钮，如图 1所示。

图 1.选择 HSC 向导

步骤一：选择 HSC 编号，如图 2所示。

图 2.选择计数器编号

步骤二：为计数器命名，在左侧树形目录中选择“高速计数器”，如图 3所示。

图 3.高速计数器命名

步骤三：选择计数器模式，详细信息请见“表1.高速计数器的模式及输入点”。

图 4.选择高速计数器模式

步骤四：配置初始化信息。

图 5. HSC 初始化选项

在上图中：

  1. 为初始化子程序命名，或者使用默认名称。
  2. 设置计数器预置值：可以为整数、双字地址或符号名：如 5000、VD100、PV_HC0。用户可使用全局符号表中双字整数对应的符号名。如果用户输入的符号名尚未定义，点击‘ Generate （生成）’后会看到：

    这个提示框显示：“这不是定义的全局符号。您希望定义符号吗”，点击“是”

    填入地址和注释，注意：地址必须为双字地址， 注释可以不填。
  3. 设置计数器初始值：可以为整数、双字地址或符号名：5000、VD100、CV_HC0。
  4. 初始化计数方向：增，减。
  5. 对于带外部复位端的高速计数器，可以设定复位信号为高电平有效或者低电平有效。
  6. 使用A/B相正交计数器时，可以将计数频率设为1倍速或4倍速。使用非A/B相正交计数器时，此项为虚。
  7. S7-200 SMART 均不支持带外部启动端的高速计数器，因此此项为虚。
    注意：所谓“高/低电平有效”指的是在物理输入端子上的有效逻辑电平，即可以使 LED 灯点亮的电平。这取决于源型/漏型输入接法，并非指实际电平的高、低。

步骤五：配置中断事件，如图 6所示。

图 6.配置中断

如图 6所示，一个高速计数器最多可以有 3 个中断事件，在白色方框中填写中断服务程序名称或者使用默认名称：

在这里配置的中断事件并非必须，系由用户根据自己的控制工艺要求选用。

  1. 外部复位输入有效值时中断，如果使用的高速计数器模式不具有外部复位端，则此项为虚。
  2. 方向控制输入状态改变时的中断，有以下 3 种情况会产生该中断：

    • 单项计数器的内部或外部方向控制位改变瞬间
    • 双相计数器增、减时钟交替的瞬间
    • A/B相脉冲相对相位（超前或滞后）改变时瞬间

  3. 当前值等于预置值时产生的中断，通过向导，可以在该中断的服务程序中重新设置高速计数器的参数，如预置值、当前值。一个这样的过程称为‘一步‘。

步骤六：配置 HSC 步数，如图 7所示，最多可设置 10 步。

图 7. 配置 HSC 步数

步骤七：定义高速计数器每一步的操作，如图 8所示：

图 8. HSC 第一步

在这里配置的是当前值等于设定值中断的服务程序中的操作：

  1. 向导会自动为当前值等于预置值匹配一个新的中断服务程序，用户可以对其重新命名，或者使用默认的名称。
  2. 勾选后，用户在右侧输入新的预置值。
  3. 勾选后，用户在右侧输入新的当前值。
  4. 如果选用的高速计数器模式有内部方向控制位。
  5. 使用相同的方法完成其余两步的设置

步骤八：完成向导，如图 9所示：

图 9. 完成向导

点击向导对话框左侧树形目录中的选项“组件（Components）”可以看到此时向导生成的子程序和中断程序名称及描述，点击“生成（Generate）”按钮，完成向导。

注意：Micro/WIN SMART 高速计数器指令向导采用树形目录的形式，用户可以直接在目录树中选择相应选项进行设置，这种方式便于用户在完成指令向导后根据实际需求进行快速修改。

步骤九：调用子程序：

注意：

  • HSC_INIT 为初始化子程序，请在主程序块中使用 SM0.1 或一条边沿触发指令调用一次此子程序。
  • 向导生成的中断服务程序及子程序都未上锁，用户可以根据自己的控制需要进行修改。

通过向导实现高速计数器例程

所需条件：

1、软件版本：STEP 7-Micro/WIN SMART V2.3

2、SMART CPU固件版本:V2.3（其他版本亦可）

3、通讯硬件：TP电缆（以太网电缆）

所实现的功能：

例程中使用高速计数器0的模式0，实现计数功能，即测量I0.0的脉冲数。

程序内当计数值到2500后，进入中断清零，重新计数

如果遇到无法测量频率较高的计数值时，可以考虑适当改小I0.0的滤波时间

HSC_wizard例程

免责声明

本例程仅供参考，程序中的CPU版本、类型可能与用户实际使用不同，用户可能需要先对例子程序做修改和调整，才能将其用于测试。本例程的作者和拥有者对于该例程的功能性和兼容性不负任何责任，使用该例程的风险完全由用户自行承担。由于它是免费的，所以不提供任何担保，错误纠正和热线支持，用户不必为此联系西门子技术支持与服务部门。


S7-200 SMART CPU断电后保持高速计数器的当前值

如何在S7-200 SMART CPU断电后保持高速计数器的当前值

问题描述

S7-200 SMART的断电数据保持不支持高速计数器的范围设置，因此高速计数器的当前值在CPU每次断电后都会复位为数值0。要使S7-200 SMART高速计数器的当前值在CPU断电重启后依然保持，可以通过以下的编程来实现。

实现方法

在此以通过向导生成高速计数器0的模式0为例来说明如何在S7-200 SMART CPU断电后保持高速计数器的当前值，具体可参考以下三个部分的编程来实现：
首先，在除了第一个扫描周期之外的其它周期，需要将高速计数器0的当前值HC0传送到寄存器VD1000中，如下图1所示，以保证寄存器VD1000始终存储的是HC0的当前值。

图1 传送当前值到寄存器

其次，在上电的第一周期将寄存器VD1000存储的数值传送到高速计数器的当前值SMD38，保证高速计数器以VD1000为初始值开始计数，并初始化高速计数器0。
本例中HSC初始化程序是通过HSC向导生成的，只需要在向导生成的程序"HSC0_INIT"上进行简单修改就可以了， 如下图2所示：

图2 初始化HSC0

最后，在系统块的断电数据保持处设置寄存器VD1000为断电保持区域，如下图3所示。需要注意的是S7-200 SMART V存储区默认设置为断电数据不保持，如果将其设置为断电保持，则V区数据即为永久保持，
无需增加使用电池卡来实现数据的永久保持。

图3 设置VD1000为断电保持

例程

所需条件：

1、软件版本：STEP 7-Micro/WIN SMART V2.3

2、SMART CPU固件版本:V2.3（其他版本亦可）

3、通讯硬件：TP电缆（以太网电缆）

所实现的功能：

根据上文描述，实现CPU断电后保持高速计数器的当前值。

HSC_Retain例程

免责声明

本例程仅供参考，程序中的CPU版本、类型可能与用户实际使用不同，用户可能需要先对例子程序做修改和调整，才能将其用于测试。本例程的作者和拥有者对于该例程的功能性和兼容性不负任何责任，使用该例程的风险完全由用户自行承担。由于它是免费的，所以不提供任何担保，错误纠正和热线支持，用户不必为此联系西门子技术支持与服务部门。


用高速输入脉冲测定瞬时流量

西门子S7-200 SMART PLC高速计数功能除用于常见的运动控制系统转速测量之外，在流量计量方面也有着广泛的用途。

由于PLC内部没有相应的算法来计算频率，因此，测定脉冲输出信号的流量计的瞬时流量就需要在STEP 7 Micro/WIN SMART中 通过以下三部分编程来实现：

(１) 定义高速计数器计数流量计输出脉冲；

(２) 采用定时中断采集周期时间内高速脉冲输入；

(３) 计算高速输入脉冲频率并通过流量换算公式：瞬时流量(ml/s)=脉冲频率（pulse/s）÷脉冲当量（pulse/ml）计算瞬时流量。

具体实现步骤，请参考S7-200相关内容（文档号：79684513）：

如何用高速输入脉冲测定瞬时流量


PID功能

PID的实现方式及数目

1.S7-200 SMART中PID功能实现方式有以下三种：

  • PID指令块：通过一个PID回路表交换数据，只接受0.0 - 1.0之间的实数（实际上就是百分比）作为反馈、给定与控制输出的有效数值。
  • PID向导：方便地完成输入/输出信号转换/标准化处理。PID指令同时会被自动调用。
  • 根据PID算法自己编程（该文档不涉及）

    • 2.S7-200 SMART CPU最多可以支持8个PID控制回路（8个PID指令功能块）,根据PID算法自己编程没有具体数目的限制，但是需要考虑PLC的存储空间以及扫描周期等影响。

    PID控制是负反馈闭环控制，能够抑制系统闭环内的各种因素所引起的扰动，使反馈跟随给定变化。

    根据具体项目的控制要求，在实际应用中有可能用到其中的一部分，比如常用的是PI（比例－积分）控制，这时没有微分控制部分。

    PID指令使用的相关视频教程链接如下：

    PID回路控制 | 概述及项目编程准备 | S7-200 SMART PID回路控制(1):概述及项目编程准备——跟我学 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1084
 |  | S7-200 SMART PID回路控制(1):概述及项目编程准备——跟我做 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1085
 | 配置PID向导 | S7-200 SMART PID回路控制(2):配置PID向导——跟我学 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1086
 |  | S7-200 SMART PID回路控制(2):配置PID向导——跟我做 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1087
 | 调用向导生成子程序编程 | S7-200 SMART PID回路控制(3):调用向导生成的子程序编程——跟我学 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1088
 |  | S7-200 SMART PID回路控制(3):调用向导生成的子程序编程——跟我做 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1089
 | 下载测试 | S7-200 SMART PID回路控制(4):下载测试——跟我学 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1090
 |  | S7-200 SMART PID回路控制(4):下载测试——跟我做 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1091
 | PID整定控制面板 | S7-200 SMART PID回路控制(5):PID整定控制面板——跟我学 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1092
 |  | S7-200 SMART PID回路控制(5):PID整定控制面板——跟我做 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1093

    西门子热线工程师内部学习讲座-PID部分：

    • S7-200 SMART PID功能介绍（西门子热线工程师内部学习讲座）
    • S7-200 SMART PID自整定及常见问题（西门子热线工程师内部学习讲座）

    PID算法在S7-200 SMART中的实现

    PID控制最初在模拟量控制系统中实现，随着离散控制理论的发展，PID也在计算机化控制系统中实现。

    为便于实现，S7-200 SMART中的PID控制采用了迭代算法。详细的计算方法请参考《S7-200 SMART系统手册》中PID指令部分的相关内容。

    计算机化的PID控制算法有几个关键的参数Kc（Gain，增益），Ti（积分时间常数），Td（微分时间常数），Ts（采样时间）。

    在S7-200 SMART中PID功能是通过PID指令功能块实现。通过定时（按照采样时间）执行PID功能块，按照PID运算规律，根据当时的给定、反馈、比例－积分－微分数据，计算出控制量。

    PID功能块通过一个PID回路表交换数据，这个表是在V数据存储区中的开辟，长度为36字节。因此每个PID功能块在调用时需要指定两个要素：PID控制回路号，以及控制回路表的起始地址（以VB表示）。

    由于PID可以控制温度、压力等等许多对象，它们各自都是由工程量表示，因此有一种通用的数据表示方法才能被PID功能块识别。S7-200 SMART中的PID功能使用占调节范围的百分比的方法抽象地表示被控对象的数值大小。在实际工程中，这个调节范围往往被认为与被控对象（反馈）的测量范围（量程）一致。

    PID功能块只接受0.0 - 1.0之间的实数（实际上就是百分比）作为反馈、给定与控制输出的有效数值，如果是直接使用PID功能块编程，必须保证数据在这个范围之内，否则会出错。其他如增益、采样时间、积分时间、微分时间都是实数。

    因此，必须把外围实际的物理量与PID功能块需要的（或者输出的）数据之间进行转换。这就是所谓输入/输出的转换与标准化处理。《S7-200 SMART系统手册》上有详细的介绍。

    S7-200 SMART的编程软件Micro/WIN SMART提供了PID指令向导，以方便地完成这些转换/标准化处理。除此之外，PID指令也同时会被自动调用。

    调试PID控制器

    PID控制的效果就是看反馈（也就是控制对象）是否跟随设定值（给定），是否响应快速、稳定，是否能够抑制闭环中的各种扰动而回复稳定。

    要衡量PID参数是否合适，必须能够连续观察反馈对于给定变化的响应曲线；而实际上PID的参数也是通过观察反馈波形而调试的。因此，没有能够观察反馈的连续变化波形曲线的有效手段，就谈不上调试PID参数。

    观察反馈量的连续波形，可以使用带慢扫描记忆功能的示波器（如数字示波器），波形记录仪，或者在PC机上做的趋势曲线监控画面等。

    新版编程软件STEP 7-Micro/WIN SMART内置了一个PID调试控制面板工具，具有图形化的给定、反馈、调节器输出波形显示，可以用于手动调试PID参数。对于没有“自整定PID”功能的老版CPU，也能实现PID手动调节。

    PID参数的取值，以及它们之间的配合，对PID控制是否稳定具有重要的意义。这些主要参数是：

    • 采样时间：
      计算机必须按照一定的时间间隔对反馈进行采样，才能进行PID控制的计算。采样时间就是对反馈进行采样的间隔。短于采样时间间隔的信号变化是不能测量到的。过短的采样时间没有必要，过长的采样间隔显然不能满足扰动变化比较快、或者速度响应要求高的场合。

      编程时指定的PID控制器采样时间必须与实际的采样时间一致。S7-200 SMART中PID的采样时间精度用定时中断（PID向导用SMB34）来保证。

    • 增益（Gain，放大系数，比例常数）
      增益与偏差（给定与反馈的差值）的乘积作为控制器输出中的比例部分。提高响应速度，减少误差，但不能消除稳态误差，当比例作用过大时，系统的稳定性下降。

    • 积分时间（Integral Time）
      偏差值恒定时，积分时间决定了控制器输出的变化速率。积分时间越短，偏差得到的修正越快。过短的积分时间有可能造成不稳定。
      积分时间的长度相当于在阶跃给定下，增益为“1”的时候，输出的变化量与偏差值相等所需要的时间，也就是输出变化到二倍于初始阶跃偏差的时间。
      如果将积分时间设为最大值，则相当于没有积分作用。

    • 微分时间（Derivative Time）
      偏差值发生改变时，微分作用将增加一个尖峰到输出中，随着时间流逝减小。微分时间越长，输出的变化越大。微分使控制对扰动的敏感度增加，也就是偏差的变化率越大，微分控制作用越强。微分相当于对反馈变化趋势的预测性调整。
      如果将微分时间设置为0就不起作用，控制器将作为PI调节器工作。
    • 比例调节
      提高响应速度，减少误差，但不能消除稳态误差，当比例作用过大时，系统的稳定性下降。 (由小到大单独调节）
    • 积分调节
      消除稳态误差，使系统的动态响应变慢，积分时间越小，积分作用越大 ，偏差得到的修正越快，过短的积分时间有可能造成不稳定。（将调好的比例增益调整到50%~80%后，由大到小减小积分时间）
    • 微分调节
      超前调节，能预测误差变化的趋势，提前抑制误差的控制作用，从而避免了被控量的严重超调。可以改善系统的响应速度和稳定性，对噪声干扰有放大作用，对具有滞后性质的被控对象，应加入微分环节。

    参考链接

    用PID指令向导进行PID编程
    PID自整定与PID调试面板
    PID 的自动/手动切换
    PID常见问题


PID指令向导

PID Wizard - PID向导

Micro/WIN SMART提供了PID Wizard（PID指令向导），可以帮助用户方便地生成一个闭环控制过程的PID算法。此向导可以完成绝大多数PID运算的自动编程，用户只需在主程序中调用PID向导生成的子程序，就可以完成PID控制任务。

PID向导既可以生成模拟量输出PID控制算法，也支持开关量输出；既支持连续自动调节，也支持手动参与控制。建议用户使用此向导对PID编程，以避免不必要的错误。

建议用户使用较新的编程软件版本。在新版本中的PID向导获得了改善。

PID向导编程步骤

使用以下方法之一打开 PID 向导：
●在Micro/WIN SMART中的工具菜单中选择PID向导：

图1. 选择PID向导

● 在项目树中打开“向导”文件夹，然后双击“PID”，或选择“PID”并按回车键。

图2. 选择PID向导

第一步：定义需要配置的PID回路号
在此对话框中选择要组态的回路。 最多可组态 8 个回路。 在此对话框上选择回路时，PID 向导左侧的树视图随组态该回路所需的所有节点一起更新。

图3. 选择需要配置的回路

第二步：为回路组态命名
可为回路组态自定义名称。 此部分的默认名称是“回路 x”，其中“x”等于回路编号。

图4. 为PID回路命名

第三步：设定PID回路参数

图5. 设置PID参数

图5中定义了PID回路参数，这些参数都应当是实数：

  1. 增益： 即比例常数，默认值=1.00。
  2. 积分时间：如果不想要积分作用可以将该值设置很大（比如10000.0），默认值=10.00。
  3. 微分时间：如果不想要微分回路，可以把微分时间设为0 ，默认值=0.00。
  4. 采样时间：是PID控制回路对反馈采样和重新计算输出值的时间间隔,，默认值=1.00。在向导完成后，若想要修改此数，则必须返回向导中修改，不可在程序中或状态表中修改。

注意：关于具体的PID参数值，每一个项目都不一样，需要现场调试来定，没有所谓经验参数。

第四步：设定回路过程变量

图6. 设定PID输入过程变量

  1. 指定回路过程变量 (PV) 如何标定。可以从以下选项中选择：
    • 单极性:即输入的信号为正，如0－10V或0－20mA等
    • 双极性：输入信号在从负到正的范围内变化。如输入信号为±10V、±5V等时选用
    • 选用20%偏移：如果输入为4－20mA则选单极性及此项，4mA是0－20mA信号的20%，所以选20% 偏移，即4mA对应5530，20mA对应27648。
    • 温度 x 10 °C
    • 温度 x 10 °F
  2. 反馈输入取值范围
    • 在a.设置为单极时，缺省值为0 - 27648，对应输入量程范围0 - 10V或0 - 20mA等，输入信号为正
    • 在a.设置为双极时，缺省的取值为-27648 - +27648，对应的输入范围根据量程不同可以是±10V、±5V等
    • 在a.选中20% 偏移量时，取值范围为5530 - 27648，不可改变
  3. 在“标定”(Scaling) 参数中，指定回路设定值 (SP) 如何标定。 默认值是 0.0 和 100.0 之间的一个实数。
    此反馈输入也可以是工程单位数值，参见：设置给定－反馈的量程范围。

第五步：设定输入回路输出选项

图7. 设定PID输出选项

  1. 输出类型
    可以选择模拟量输出或数字量输出。模拟量输出用来控制一些需要模拟量给定的设备，如比例阀、变频器等；数字量输出实际上是控制输出点的通、断状态按照一定的占空比变化，可以控制固态继电器（加热棒等）
  2. 选择模拟量则需设定回路输出变量值的范围，可以选择：
    • 单极：单极性输出，可为0－10V或0－20mA等
    • 双极：双极性输出，可为正负10V或正负5V等
    • 单极20% 偏移量：如果选中20% 偏移，使输出为4 - 20mA
  3. 取值范围：
    • c为单极时，缺省值为 0 到 27648
    • c为双极时，取值-27648 到27648
    • c为20%偏移量时，取值5530 - 27648 ，不可改变

如果选择了开关量输出，需要设定此循环周期，如图7所示：

图8. 设定PID输出为数字量

第六步：设定回路报警选项

图9. 设定回路报警限幅值

向导提供了三个输出来反映过程值(PV)的低值报警、高值报警及过程值模拟量模块错误状态。当报警条件满足时，输出置位为1。这些功能在选中了相应的选择框之后起作用。

  1. 使能低值报警并设定过程值(PV)报警的低值，此值为过程值的百分数，缺省值为0.10，即报警的低值为过程值的10％。此值最低可设为0.01，即满量程的1%
  2. 使能高值报警并设定过程值(PV)报警的高值，此值为过程值的百分数，缺省值为0.90，即报警的高值为过程值的90％。此值最高可设为1.00，即满量程的100%
  3. 使能过程值(PV)模拟量模块错误报警并设定模块于CPU连接时所处的模块位置。“EM0”就是第一个扩展模块的位置

第七步：定义向导所生成的PID初使化子程序和中断程序名及手/自动模式

图10. 指定子程序、中断服务程序名和选择手动控制

向导已经为初使化子程序和中断子程序定义了缺省名，你也可以修改成自己起的名字。

  1. 指定PID初使化子程序的名字。
  2. 指定PID中断子程序的名字

    注意：
    1. 如果你的项目中已经存在一个PID配置，则中断程序名为只读，不可更改。因为一个项目中所有PID共用一个中断程序，它的名字不会被任何新的PID所更改。
    2. PID向导中断用的是SMB34定时中断，在用户使用了PID向导后，注意在其它编程时不要再用此中断，也不要向SMB34中写入新的数值，否则PID将停止工作。

  3. 此处可以选择添加PID 手动控制模式。在PID手动控制模式下，回路输出由手动输出设定控制，此时需要写入手动控制输出参数一个0.0－1.0的实数，代表输出的0％－100％而不是直接去改变输出值。

    PID 控制的自动/手动之间的无扰动切换

第八步：指定PID运算数据存储区

图11. 分配运算数据存储区

PID指令（功能块）使用了一个120个字节的V区参数表来进行控制回路的运算工作；除此之外，PID向导生成的输入/输出量的标准化程序也需要运算数据存储区。需要为它们定义一个起始地址，要保证该地址起始的若干字节在程序的其它地方没有被重复使用。如果点击“建议”，则向导将自动为你设定当前程序中没有用过的V区地址。

自动分配的地址只是在执行PID向导时编译检测到空闲地址。向导将自动为该参数表分配符号名，用户不要再自己为这些参数分配符号名，否则将导致PID控制不执行。

第九步：生成PID子程序、中断程序及符号表等
一旦点击完成按钮，将在你的项目中生成上述PID子程序、中断程序及符号表等。

图12. 生成PID子程序、中断程序和符号表等

第十步：配置完PID向导，需要在程序中调用向导生成的PID子程序（如下图）

图13. PID子程序

图14. 调用PID子程序

在用户程序中调用PID子程序时，可在指令树的程序块中用鼠标双击由向导生成的PID子程序，在局部变量表中，可以看到有关形式参数的解释和取值范围。

  1. 必须用SM0.0来使能 PIDx_CTRL 子程序，SM0.0 后不能串联任何其他条件，而且也不能有越过它的跳转；如果在子程序中调用 PIDx_CTRL 子程序，则调用它的子程序也必须仅使用 SM0.0 调用，以保证它的正常运行
  2. 此处输入过程值（反馈）的模拟量输入地址
  3. 此处输入设定值变量地址（VDxx），或者直接输入设定值常数，根据向导中的设定0.0－100.0，此处应输入一个0.0－100.0的实数，例：若输入20，即为过程值的20％，假设过程值AIW0是量程为0－200度的温度值，则此处的设定值20代表40度（即200度的20％）；如果在向导中设定给定范围为0.0 - 200.0，则此处的20相当于20度
  4. 此处用I0.0控制PID的手/自动方式，当I0.0为1时，为自动，经过PID运算从AQW0输出；当I0.0为0时，PID将停止计算，AQW0输出为ManualOutput（VD4）中的设定值，此时不要另外编程或直接给AQW0赋值。若在向导中没有选择PID手动功能，则此项不会出现
  5. 定义PID手动状态下的输出，从AQW0输出一个满值范围内对应此值的输出量。此处可输入手动设定值的变量地址（VDxx），或直接输入数。数值范围为0.0-1.0之间的一个实数，代表输出范围的百分比。例：如输入0.5，则设定为输出的50％。若在向导中没有选择PID手动功能，则此项不会出现
  6. 此处键入控制量的输出地址
  7. 当高报警条件满足时，相应的输出置位为1，若在向导中没有使能高报警功能，则此项将不会出现
  8. 当低报警条件满足时，相应的输出置位为1，若在向导中没有使能低报警功能，则此项将不会出现
  9. 当模块出错时，相应的输出置位为1，若在向导中没有使能模块错误报警功能，则此项将不会出现

调用PID子程序时，不用考虑中断程序。子程序会自动初始化相关的定时中断处理事项，然后中断程序会自动执行。

第十一步：实际运行并调试PID参数

没有一个PID项目的参数不需要修改而能直接运行，因此需要在实际运行时调试PID参数。
查看数据块以及符号表相应的PID符号标签的内容，可以找到包括PID核心指令所用的控制回路表，包括比例系数、积分时间等等。将此表的地址复制到状态表中，可以在监控模式下在线修改PID参数，而不必停机再次做配置。
参数调试合适后，用户可以在数据块中写入，也可以再做一次向导，或者编程向相应的数据区传送参数。

参考链接

PID常见问题


PID给定－反馈量程设置

PID 向导 中的给定－反馈设置

完成PID Wizard配置后，会为每个PID回路生成一个子程序PIDx_CTRL（x = 0 - 7）。在用户程序中，必须使用SM0.0始终调用这个子程序才能实现PID功能。

下图是一个最简单的PID子程序调用程序段：

图1. 调用PID子程序

其中：

  • PV_I： 过程反馈参数值的入口
  • Setpoint： 给定参数值的入口
  • Output： PID调节器的输出值

在这里，给定、反馈的入口参数不是PID指令功能块所需要的0.0 - 1.0之间的实数，而可以是实际的反馈地址，或是其他变量。例如，PV_I可以是模拟量输入地址AIW0，也可以是存储器地址VW100等；Setpoint则往往来自V变量存储区，这样可以从人机操作界面（HMI）设备输入给定值。

注意：

对于PID控制系统来说，必须保证给定与过程反馈的一致性：

  • 给定与反馈的物理意义一致
    这取决于被控制的对象，如果是压力，则给定也必须对应于压力值；如果是温度，则给定也必须对应于温度。

  • 给定与反馈的数值范围对应
    如果给定直接是摄氏温度值，则反馈必须是对应的摄氏温度值；如果反馈直接使用模拟量输入的对应数值，则给定也必须向反馈的数值范围换算。

    如果给定与反馈的换算有特定的比例关系也可以。如给定也可以表示为以反馈的数值范围的百分比数值。

给定与反馈的数值具体是什么数值，其取值范围究竟如何，完全取决于我们在使用“PID向导”编程时指定的给定与反馈的数值范围。其中，反馈量的数值范围不能随便自己定义，而要取决于具体应用的模拟量输入模块。

图2. 在图中c.处设置给定范围

图3. 在图中c.处设置反馈范围

实例

假定一个PID控制系统的控制对象是压力，反馈元件的测量范围为0 - 16MPa。反馈器件的信号经过变换，以4 - 20mA电流信号的形式输入到模拟量输入模块中。据此，我们可以按下表设置给定、反馈的范围。

表1.
 | 反馈（单极性） |  | 给定
 | 实际物理量 | 模拟量输入数值 | 百分比形式（占0 - 16MPa的百分比） | 物理工程单位形式
高限 | 16 MPa | 27648 | 100.0 | 16.0
低限 | 0 MPa | 5530 | 0.0 | 0.0

在上面的例子中，反馈和给定可以按照如下方法设置:

图4. 4 - 20mA电流信号测量时反馈范围设置

又如一个温度控制的PID系统，温度值直接由热电偶测量，输入到热电偶模块转换为温度 值。热电偶为J型，其测量范围为 -150.0°C - 1200.0 °C。则可按如下设置给定的范围。

表2.
 | 反馈（双极性） |  | 给定
 | 实际物理量 | 模拟量输入数值 | 百分比形式（占-150°C - 1200.0°C的百分比） | 物理工程单位形式
高限 | 1200.0 °C | 12000 | 100.0 | 1200
低限 | -150.0 °C | -1500 | 0.0 | -150

在上面的例子中，反馈和给定可以按照如下方法设置

图5.采用热电偶或热电阻模块测量时反馈范围设置


PID自整定与调试面板

PID自整定

新的S7-200 SMART CPU支持PID自整定功能，在STEP 7-Micro/WIN SMART中也添加了PID调节控制面板。

用户可以使用用户程序或PID调节控制面板来启动自整定功能。在同一时间最多可以有8个PID回路同时进行自整定。PID调节控制面板也可以用来手动调试老版本的（不支持PID自整定）CPU的PID控制回路。

用户可以根据工艺要求为调节回路选择快速响应、中速响应、慢速响应或极慢速响应。PID自整定会根据响应类型而计算出最优化的比例、积分、微分值，并可应用到控制中。

PID调节控制面板

STEP 7-Micro/WIN SMART中提供了一个PID控制面板，可以用图形方式监视PID回路的运行，另外从面板中还可以启动、停止自整定功能。

图1. PID调节控制面板

在图1中：

  1. 当前设定值指示
    显示当前使用的设定值

  2. 过程值指示
    显示过程变量的值

  3. 当前的输出值指示
    显示当前的输出值

  4. 可显示过程值、设定值及输出值的PID趋势图

    图2. 图形显示区

    5. 图中：

    1. 过程变量和设定值的取值范围及刻度
    2. PID输出的取值范围及刻度
    3. 实际PC时间
    4. 以不同颜色表示的设定值、过程变量及输出的趋势图

  5. 调节参数
    这里你可以：
    • 选择PID参数的显示：当前参数、推荐参数或手动输入值
    • 在手动调节模式下，可改变PID参数，并按更新PLC按钮来更新PLC中的参数
    • 启动PID自整定功能
    • 选择高级选项按钮进入高级参数设定

  6. 当前采样时间
    指示当前使用的采样时间

  7. 时间选项设定
    这里你可以设定趋势图的时基，时基以秒为单位

  8. 当前的PID回路号
    这里你可以选择需要监视或自整定的PID回路

  9. 关闭PID调节面板

要使用PID调节控制面板，PID编程必须使用PID向导完成。

PID自整定先决条件

启动自整定先决条件：

  • 要进行自整定的回路必须处于自动模式

在开始PID自整定调整前，整个PID控制回路必须工作在相对稳定的状态（稳定的PID是指过程变量接近设定值，输出不会不规则的变化，且回路的输出值在控制范围中心附近变化。）

理想状态下，自整定启动时，回路输出值应该在控制范围中心附近。 自整定过程在回路的输出中加入一些小的阶跃变化，使得控制过程产生振荡。 如果回路输出接近其控制范围的任一限值，自整定过程引入的阶跃变化可能导致输出值超出最小或最大范围限值。 如果发生这种情况，可能会生成自整定错误条件，当然也会使推荐值并非最优化。

PID自整定步骤

第一步： 在PID向导中完成PID功能配置

要想使用PID自整定功能，PID编程必须用PID向导来完成

第二步：打开PID调节控制面板，设置PID回路调节参数
在Micro/WIN SMART在线的情况下，从主菜单工具中点击 [image] 进入PID调节控制面板中。

在PID调节面板的h.区查看已选择的PID回路号，在e.区启动手动调节，调节PID参数并点击更新，使新参数值起作用，监视其趋势图，根据调节状况改变PID参数直至调节稳定。

为了使PID自整定顺利进行，应当做到：

  • 使PID调节器基本稳定，输出、反馈变化平缓，并且使反馈比较接近给定
  • 设置合适的给定值，使PID调节器的输出远离趋势图的上、下坐标轴，以免PID自整定开始后输出值的变化范围受限制

参见：手动调整PID回路参数

第三步：在e.区点击高级选项按钮，设定PID自整定选项。如果不是很特殊的系统，也可以不加理会。

图3. 设置PID自整定高级选项

在此允许你设定下列参数：

  1. 你可以选中复选框，让自整定来自动计算滞后值和偏值
    对于一般的PID系统，建议使用自动选择。

  2. 滞后：
    滞后值规定了允许过程值偏离设定值的最大（正负）范围，过程反馈在这个范围内的变化不会引起PID自整定调节器改变输出，或者使PID自整定调节器“认为”这个范围内的变化是由于自己改变输出进行自整定调节而引起的。PID自整定开始后，只有过程反馈值超出了该区域，PID自整定调节器才会认为它对输出的改变发生了效果。这个值用来减少过程变量的噪声对自整定的干扰，从而更精确地计算出过程系统的自然振动频率。如果选用自动计算，则缺省值为2％。

    如果过程变量反馈干扰信号较强（噪声大）自然变化范围就大，可能需要人为设置一个较大的值。但这个值的改变要与下面的偏差值保持1:4的关系。

  3. 偏差：
    偏差值决定了允许过程变量偏离设定值的峰峰值。如果选择自动计算该值，它将是死区的4倍，即8％。
    有些非常敏感的系统不允许过程量偏离给定值很多，也可以人工设置为比较小的值，但是要和上述“死区”设置保持比例关系。这就是说，一个精度要求高的系统，其反馈信号必须足够稳定。

  4. 初始输出步：PID调节的初始输出值
    PID自整定开始后，PID自整定调节器将主动改变PID的输出值，以观察整个系统的反应。初始步长值就是输出的变动第一步变化值，以占实际输出量程的百分比表示。

  5. 看门狗时间：过程变量必须在此时间（时基为秒）内达到或穿越给定值，否则会产生看门狗超时错误。
    PID自整定调节器在改变输出后，如果超过此时间还未观察到过程反馈（从下至上或从上至下）穿越给定曲线，则超时。如果能够事先确定实际系统响应非常慢，可以加长这个时间。

  6. 动态响应选项：根据回路过程（工艺）的要求可选择不同的响应类型：快、中、慢、非常慢
    • 快：可能产生超调，属于欠阻尼响应
    • 中：在产生超调的边缘，属于临界阻尼响应
    • 慢：不会产生任何超调，属于过阻尼响应
    • 非常慢：不会产生任何超调，属于严重过阻尼响应

      用户在这里指定需要达到的系统控制效果，而不是对系统本身响应快慢的判断。

  7. 设定完参数点击OK键回到PID调节控制面板的主画面

第四步：在手动将PID调节到稳定状态后，即过程值与设定值接近，且输出没有不规律的变化，并最好处于控制范围中心附近。此时可点击e.区内的启动按钮启动PID自整定功能，这时按钮变为停止。这时只需耐心等待，系统完成自整定后会自动将计算出的PID参数显示在e.区。当按钮再次变为启动时，表示系统已经完成了PID自整定。

要使用自整定功能，必须保证PID回路处于自动模式。开始自整定后，给定值不能再改变。

第五步：如果用户想将PID自整定的参数应用到当前PLC中，则只需点击更新PLC。

完成PID调整后，最好下载一次整个项目（包括数据块），使新参数保存到CPU的EEPROM中。

PID 回路表中应用于自整定部分的介绍

通过查询系统手册中 《PID回路和整定》章节，PID 回路表占用的存储器 V 区地址中所代表功能，见表1-PID 回路表：
红色：PID 自整定使能位、进行位、完成位、整定结果错误代码
蓝色：PID 自整定结束后的建议参数（含增益、积分、微分）
黄色：PID 运行时的增益积分微分，注意采样时间仅在组态界面设置，不可随意修改
绿色：PID 自整定高级选项设置（关于动态响应的，默认为快速响应）

表1. PID 回路表

PID 回路表中的 AT 控制字、状态字、配置字节详细描述见表 2：
ACNTL：Vx.0=1启动 PID 自整定；Vx.0=0停止 PID 自整定
ASTAT：Vv.0=1自整定正在进行；Vv.0=0自整定没有进行
ARES ：Vm.7=1自整定完成；Vm.7=0自整定未完成。包含自整定结果代码，方便错误查询
ACNFG：Vn.2 和 3=动态响应设置
注意：自整定完成位必须为 0，自整定才能启动

表2. PID 回路表控制字、状态字、配置字节说明

通过外部使能 PID 自整定

PID 回路表中是针对于 PID 存储器分配的首地址偏移量，若直接运用自整定部分控制字，具体地址可参考数据块 PIDx_DATA，如下图 4：

图4. PID 回路符号表

对于 PID 自整定部分的编程思路简略如下:
在触摸屏上按钮直接连接（如 M1.0），当按键按下时置位 PID 自整定使能位，启动自整定。
只有 Vm.7=0 时才能启动自整定功能，当 Vx.0=1 启动自整定后，Vm.7=1 表示自整定完成，期间可以使用 Vx.0=0 随时中止自整定过程。
通过程序中判定当 Vm.7=1 时表示 PID 整定已完成，将整定建议的参数传送（move）到 PID 运行参数里。
取出 PID 整定结果字节后七位，作为自整定状态和错误信息，如有错误可依此分析错误原因。具体代码表示含义参见表 2。

图5. PID 整定部分编程思路

通过程序启动 PID 自整定（Vx.0=1）后，可以使用 PID 整定控制面板监视 PID 回路的运行，如下图：

图6. PID 整定控制面板

当自整定完成（Vm.7=1）后，程序执行将整定后的参数更新到 PID 参数中。为保证参数断电后仍保持，建议在系统块-〉CPU属性-〉保持范围中设置属性，如下图所示：

图7. 系统块中的保持范围设置

为了更好地理解 PID 参数设置的编程，可参考下面的例程。

使用环境： STEP 7 Micro/WIN SMART V2.2

实现功能： 通过变量使能PID自整定

注意： 该例程仅设置一路 PID 向导配置，便于调试使用了 PID 被控对象的仿真库。

PID_SIM.smart例程

注意：此指令库/程序的作者和拥有者对于该软件的功能性和兼容性不负任何责任。使用该软件的风险完全由用户自行承担。由于它是免费的，所以不提供任何担保，错误纠正和热线支持，用户不必为此联系西门子技术支持与服务部门。

PID自整定失败的原因

  1. PID输出在最大值与最小值之间振荡（曲线接触到坐标轴）

    解决方法：降低PID初始输出步长值
  2. 经过一段时间后，PID自整定面板显示如下信息：“ 自整定计算因为等待反馈穿越给定值的看门狗超时而失败” 。

    解决方法： 确定在启动PID自整定前，过程变量和输出值已经稳定。并检查看门狗时间的值，将其适当增大。

    对于其它错误，可参考手册中表格11－3中的错误代码的描述。

参考链接

用PID指令向导进行PID编程
PID 的自动/手动切换
PID常见问题


手动调整PID至稳定

PID调节步骤简介

建议PID参数调节步骤：

（1）前提条件：反馈信号是否稳定，执行机构是否正常以及控制器的正反作用。（确保PID在自动模式下）

（2）积分时间设置为无穷大INF（或9999.9），此时积分作用近似为0；将微分时间设置为0.0，此时微分作用为0 。然后开始调节比例作用，逐步增大比例增益

（3）当过程变量达到给定值且在给定值上下波动，将调好的比例系数调整到50%~80%后，由大到小减小积分时间，直到过程值与设定值相等或无限接近

PID调节有很多种方法，以上仅是建议步骤，也并未考虑微分作用，客户依据实际情况灵活调节，同时可以参考 反馈与给定的曲线图

用户经常会遇到这样的问题：尝试了很多组PID参数，都无法满足控制器的要求， 此时需要考虑PID的采样时间是否适合当前系统。采样时间就是对反馈进行采样的间隔。短于采样时间间隔的信号变化是不能测量到的。采样时间过短，两次实测值的变化量太小，也不合适，而且增加PLC的运算负担；采样间隔过长，将会引起有用信号的丢失，使系统品质变差，不能满足扰动变化比较快、或者速度响应要求高的场合。除此以外，也有可能是系统自身的问题，无法调节到稳定，例如， 不规律的干扰，或者反馈信号不稳定。

手动调节PID至稳定

在开始PID自整定调整前，整个PID控制回路必须工作在相对稳定的状态。

稳定的PID是指过程变量接近设定值，输出不会不规则的变化，且回路的输出值在控制范围中心附近变化。

问题与解决方法：

1.PID输出总是输出很大的值，并在这一区间内调节变化

产生原因：
  • 增益值太高
  • PID扫描时间太长（对于快速响应PID的回路）
解决方法：降低增益值并且/或选择短一些的扫描时间

2.过程变量超过设定值很多（超调很大）

产生原因：积分时间可能太高

解决方法：降低积分时间

3.得到一个非常不稳定的PID

产生原因：

  • 如果用了微分，可能是微分参数有问题
  • 没有微分，可能是增益值太高
解决方法：

  • 调整微分参数到0－1的范围内
  • 根据回路调节特性将增益值降低，最低可从0.x 开始逐渐增大往上调，直到获得稳定的PID。
4.如何获取一组合适的参数，实现快速并稳定的PID控制？
PID调节过程中，用户通常需要做多次的参数调节才能获得最优的控制效果。从下面反馈（过程变量）与给定之间的曲线图中，可以看到黄色曲线较理想。用户可以将调节的PID反馈与给定曲线与下图中对比，并修改相关参数（但是因为现场情况不一样，用户还需具体问题具体对待，下图中的建议仅供参考：

反馈与给定曲线

1.超调过大，减小比例，增大积分时间

2.迅速变化，存在小超调

3.实际值缓慢接近设定值，并且无超调的达到设定值

4.增益系数太小和/或微分时间太长

5.益系数太小和/或积分时间太长

参考链接

PID常见问题


PID控制的自动/手动无扰切换

PID 自动/手动调节的无扰动切换

有些工程项目中可能需要根据工艺要求在不同的时刻投入、或者退出 PID 自动控制；退出 PID 自动控制时，控制器的输出部分可以由操作人员直接手动控制。这就是所谓的 PID 手动/自动切换。

PID 控制处于自动方式时，PID 控制器（S7-200 SMART 中的 PID 调节功能）会按照 PID 算法，自动通过输出的作用使过程反馈值跟随给定值变化，并保持稳定。这是一个自动的闭环控制系统。操作人员可以根据现场工艺的要求，改变给定（即设定值）的值。

PID 控制处于手动方式时，PID 控制器不再起自动计算的作用。这时，控制回路的输出是由操作人员手动控制、调整，由操作人员观察现场的控制效果，从而构成人工闭环控制。

所谓 PID 自动/手动控制，就是看控制系统的输出是由 PID 控制器自动控制，还是由操作人员手动控制。

有些控制系统的执行机构不能承受较大的冲击，这就要求在进行 PID 自动/手动切换时，保持控制输出的稳定。这就是要求无扰动切换。

为了达到 PID 自动/手动控制的无扰动切换，需要在编程时注意一些相关事项。下面分别就直接使用 PID 指令编程，和使用 PID 向导编程两种情况作一介绍。

1.直接使用 PID 指令编程时的 PID 自动/手动无扰切换

直接使用 PID 指令块编写 PID 控制程序时，可以简单地使用“调用/不调用”指令的方式控制自动/手动模式。因为 PID 指令本身已经具有实现无扰动切换的能力，此时在 PID 指令控制环节之外编程没有多大必要。

PID 指令的 EN 输入端使能（为“1”）时，我们认为是自动控制模式；EN 输入端未使能（为“0”）时，我们认为是手动控制模式。

PID 指令本身有一个“能流历史状态位”，以记录指令的状态切换。在 EN 端从“0”变为”“1”时，PID 指令认为这是从“手动”模式向“自动”模式切换。PID 指令此时会自动执行一系列动作，以配合无扰动切换：

  • 使设定值（ SPn） = 当前过程反馈变量（PVn）
  • 设置上次采样过程变量（PVn-1） = 当前过程反馈变量（PVn）
  • 设置积分偏差和（或所谓积分前项）（Mx） = 当前输出值（Mn）

使设定值等于当前反馈值可以避免出现偏差，使之不存在调整的要求；当然如果有工艺要求，也可以后续调整设定值。其他的动作都是为了使 PID 在后续的操作中不改变输出的值。

在编程时要注意：

  • 从自动模式向手动模式切换时，PID 指令的 EN 端不再有能流，计算停止，输出值 Mn 不再变化。此时如果需要操作人员人工观察控制的结果，手动控制输出量，就可以通过用户程序直接改变回路表中的输出值存储单元内容（见数据块或系统手册的相关部分内容）。如果有必要，操作人员的操作可能要进行一些标准化换算。
  • 为保证从手动模式向自动模式的切换无扰动，需要在手动控制时，或在切换过程中，禁止对 PID 回路表中设定值的更新，以便切换时 PID 指令用当前过程反馈值替代设定值。切换完成后，操作人员可以调整设定值。

2.使用 PID 向导编程时的 PID 自动/手动无扰切换

使用 PID 指令向导编程时，指令向导会自动调用 PID 指令，并且编写外围的控制变量标准化换算、定时采样等功能。用户在使用 PID 指令向导时，需要在用户程序中用 SM0.0 调用指令向导生成的子程序（如 PIDx_CTRL 子程序）。PID 向导可以生成带自动/手动切换功能的子程序，这个子程序使用一个数字量点为“1”、“0”的状态来控制是否投入 PID 自动控制。

到目前为止（STEP 7-Micro/WIN SMART），使用 PID 向导生成的子程序时，由于用户程序不能直接使用 PID 指令，它的无扰切换能力因为隔了外壳子程序，所以受到了局限。如果对无扰切换要求比较严格，需要另外编一些程序加以处理。

考察如下 PID 控制子程序。

图 1. PID 向导生成的指令

图中：

  1. 过程反馈量
  2. 设定值，实数
  3. 自动/手动控制，“1”=自动，“0”=手动
  4. 手动控制输出值，0.0 - 1.0 之间的一个实数
  5. PID 控制输出值

要实现无扰动切换，必须：

  • 在从自动向手动切换时，使手动输出值（VD2004）等于当前的实际控制输出值；
  • 在从手动向自动切换时，使设定值相当于当前的过程反馈值。

为此，可编写类似下图所示的程序，放在 PID 控制子程序之前：

图 2. 无扰切换处理程序

图中：

  1. 自动/手动切换控制点
  2. 从自动向手动切换时，使手动输出值等于实际当前值
  3. 从手动向自动切换时，把当前反馈量换算为相应的给定值

上述程序中的 Scale_I_to_R 就是量程变换指令库中的子程序，如何将该指令库导入到Micro/WIN SMART 中可参见如何将Micro/WIN 的库文件导入到Micro/WIN SMART中。这是为了解决过程反馈与设定值之间的换算问题。用户也可以自己编程换算，或者根据反馈与给定的取值范围决定是否需要换算。

为了更好地理解 PID向导的自动/手动无扰切换的使用，可参考下面的例程。

使用环境： STEP 7 Micro/WIN SMART V2.3.2

实现功能： PID向导的自动/手动无扰切换

PID向导自动/手动无扰切换

免责声明

本例程仅供参考，程序中的CPU版本、类型可能与用户实际使用不同，用户可能需要先对例子程序做修改和调整，才能将其用于测试。本例程的作者和拥有者对于该例程的功能性和兼容性不负任何责任，使用该例程的风险完全由用户自行承担。由于它是免费的，所以不提供任何担保，错误纠正和热线支持，用户不必为此联系西门子技术支持与服务部门。


通过触摸屏进行 S7-200 Smart 的 PID 参数设置

STEP 7-MicroWin SMART 软件在使用 PID 向导进行配置时，需要在 PID 回路向导的组态界面，首先定义回路增益、积分时间、微分时间。

图1. PID 回路向导参数设置界面

当程序运行后，PID 功能的参数可以通过软件监控表在线修改、或者通过上位机、触摸屏等外部设备修改，来实现 PID 参数的修改。
注意：上述方法可以修改 PID 的回路增益、积分时间、微分时间；PID 的采样时间仅可通过 PID 回路向导参数设置界面设置，若需更改须重新下载程序。

通过外部修改回路增益、积分时间、微分时间

使用 PID 回路向导进行配置时，在组态界面最后会进行存储器分配，见图 2。此处分配的 V 区地址防止冲突调用，本例中起始地址选择 VB0。

图2. PID 回路向导存储器分配

通过查询 PLC 的符号表 PIDx_SYM，见图 3，请注意只有回路增益、积分时间、微分时间是可以修改的，其他参数可以当作只读参数。如用户希望能够在触摸屏上显示百分比的参数时，会用到标准化过程值和标准化回路输出等。

图3. PID 回路符号表


PWM

脉宽调制（PWM）

PWM 提供了占空比可变周期固定的输出。PWM 输出以指定频率（循环时间）启动之后将连续运行。 脉宽根据所需要的控制要求进行变化。 占空比可表示为周期的百分比或对应于脉冲宽度的时间值。 脉宽的变化范围为 0%（无脉冲，始终为低电平)）到 100%（无脉冲，始终为高电平）。 请参见下图。

图1.PWM波形

由于 PWM 输出可从 0% 变化到 100%，如表1所示，因此在很多情况下，它可以提供一个类似于模拟量输出的数字量输出。 例如，PWM 输出可用于电机从静止到全速的速度，或用于阀从关闭到全开的位置控制。

表1.脉冲宽度时间、周期时间和 PWM 功能的响应
脉冲宽度时间/周期时间 | 响应
脉冲宽度时间 >= 周期时间值 | 占空比为 100% ： 输出一直接通
脉冲宽度时间 = 0 | 占空比为 0% ： 连续关闭输出
周期时间 < 2 个时间单位 | 默认情况下，周期时间为两个时间单位

PWM功能产生一个占空比变化周期固定的脉冲输出。你可以为其设定周期和脉宽（以微秒或毫秒为单位）：

  • 周期：10μs到65535μs或者2ms到65535ms（S7-200 SMART CPU 支持最高 100KHz 脉冲输出）
  • 脉宽：0μs到65535μs或者0ms到65535ms（最低4μs，设置为0μs等于禁止输出。）

PWM 发生器的详细参数和例程请参见《S7-200 SMART 系统手册》。

西门子热线工程师内部学习讲座-PWM部分：

  • S7-200 SMART PLC 脉宽调制输出功能（西门子热线工程师内部学习讲座）

PWM输出

实现方式：通过PWM向导或者PLS指令（特殊寄存器SM）实现

可实现的数量：S7-200 SMART CPU提供三个数字量输出（Q0.0、Q0.1和Q0.3）

为了简化应用中运动控制的使用，推荐使用“PWM 向导”来组态 PWM。

更改PWM特性

只能使用同步更新更改 PWM 波形的特性。 执行同步更新时，信号波形特性的更改发生在周期交界处，这样可实现平滑转换。


PWM向导组态

要为 PWM 组态其中一个内置输出，请使用 PWM 向导。

图1. PWM 向导

使用以下方法之一打开 PWM 向导：
● 在“工具”(Tools) 菜单的“向导”(Wizards) 区域单击“PWM”按钮。

● 在项目树中打开“向导”(Wizards) 文件夹，然后双击“PWM”，或选择“PWM”并按回车键。

组态PWM向导的步骤：

1. 选择脉冲发生器

图2. 选择脉冲发生器

2. 必要时，更改 PWM 通道的名称

图3. 更改 PWM 通道的名称

3. 组态 PWM 通道输出时基

图4. 组态 PWM 通道输出时基

4. 生成项目组件

图5. 生成项目组件

5. 使用 PWMx_RUN 子例程控制 PWM 输出的占空比

注意：

PWM 通道已硬编码：

  • PWM0 已分配到 Q0.0。

  • PWM1 已分配到 Q0.1。
  • PWM2 已分配到 Q0.3

PWMx_RUN子程序编程

PWMx_RUN子程序允许您通过使用改变脉冲宽度（从0到周期时间的脉冲宽度）来控制输出占空比。

其中：

a. PWMx_RUN执行控制：控制脉冲发生的产生

b.Cycle:写入脉冲周期

c.Pulse:写入脉冲宽度

为了更好地理解 PWM向导的使用，可参考下面的例程（软件版本：STEP 7-Micro/WIN SMART V2.3）。

PWM_Wizard例程

常问问题

使用PWM输出功能应使用什么类型的CPU？

应使用24VDC晶体管输出的CPU。如果使用继电器类型CPU，PWM输出频率不能高于继电器响应频率，即使PWM输出频率不过高，继电器频繁通断会影响CPU使用寿命。

PWM输出的幅值是多少？

PWM 输出的幅值为 24V（高电平有效，共负端连接），若想实现输出其他电压的幅值，需自己加转换器来实现。S7-200 SMART CPU的高速输出点所在的数字量输出点可以支持 20.4 － 28.8V 电压幅值。

如何强制停止PWM 输出？

可以通过编程将控制字节中的使能位 SM67.7 、SM77.7和SM567.7 清零，然后执行 PLS 指令，便可立即停止 PWM0、PWM1和PWM2输出。

PWM输出周期和脉宽有哪些限制？

因为限制PWM输出的因素有两个：

  • 硬件输出电路响应速度的限制，对于Q0.0、Q0.1和Q0.3 从断开到接通为1.0 μs，从接通到断开3.0μs ，因此最小脉宽不可能小于4.0 μs。
  • 最大的频率为100K，因此最小周期为10 μs。

不论是连续脉冲，还是相对较长周期内的单个脉冲，其脉冲宽度限制都是相同的。

如何改变PWM输出的周期/脉冲宽度？

PWM功能可以在初始化时设置脉冲的周期和宽度，也可以在连续输出脉冲时很快地改变上述参数。可以通过使用写入SM特殊寄存器和使用PWM向导两种方法更改PWM输出的周期和脉宽。

使用写入SM寄存器方式的操作步骤为：

  1. 设置控制字节，以允许写入（或者更新）相应的参数
  2. 将相应的特殊存储器写入新的周期/脉宽值
  3. 执行PLS指令，对PWM发生器进行硬件设置变更

使用PWM向导方法为：调用PWMx_RUN子程序，将周期值写入Cycle管脚，将脉宽值写入Pulse管脚，可实时修改周期和占空比

ST20 CPU支持几路PWM?

ST20 CPU 有两路高速脉冲输出，虽然向导可以组态3路PWM，实际使用只支持2路PWM功能，PLS指令用于ST20的CPU仅可用于两个通道（Q0.0和Q0.1）


PWM_PLS指令

使用 SM特殊寄存器组态控制 PWM 操作

如果已通过运动控制向导将所选输出点组态为运动控制用途，则无法通过 PLS 指令激活 PTO/PWM。 PTO/PWM 输出的最低负载必须至少为额定负载的 10%，才能实现启用与禁用之间的顺利转换。

PLS 指令读取存储在指定 SM 存储单元的数据，并相应地对 PWM 发生器进行编程。SMB67 控制 PWM 0 ，SMB77 控制 PWM 1 ，而 SMB567 控制 PWM 2 。
可以更改 PWM 波形的特性，方法是修改 SM 存储区中的位置（包括控制字节），然后执行 PLS 指令。 可以随时禁止生成 PWM 波形，方法是将 0 写入控制字节的 PWM 使能位（SM67.7、SM77.7 或 SM567.7 ），然后执行 PLS 指令。

加载新的脉冲计数（SMD72 或 SMD82 ）、脉冲宽度（SMW70 或 SMW80 ）或周期时间（SMW68 或 SMW78 ）时，也会在执行 PLS 指令之前置位控制寄存器中的相应更新位。

中止 PWM 操作后，应经过一个周期时间，然后再重新启用 PWM 通道进行操作。 如果未经过此时间就重新启用 PWM 通道，则可能因完成原始 PWM 命令而导致初始脉冲出现 脉冲失真。

如果在 PWM 正在执行时尝试更改 PWM 的时基，则该请求将被忽略，并会出现非致命错误 (0x001B - ILLEGAL PWM TIMEBASE CHG) 。

PWM控制寄存器的设置详见《S7-200 SMART系统手册》。

通过PLS指令实现 PWM功能

所需条件：

1、软件版本：STEP 7-Micro/WIN SMART V2.3

2、SMART CPU固件版本:V2.3（其他版本亦可）

3、通讯硬件：TP电缆（以太网电缆）

所实现的功能：

M0.0为1时，Q0.0输出周期为100ms脉宽为50ms的脉冲串

PWM_PLS例程

免责声明

本例程仅供参考，程序中的CPU版本、类型可能与用户实际使用不同，用户可能需要先对例子程序做修改和调整，才能将其用于测试。本例程的作者和拥有者对于该例程的功能性和兼容性不负任何责任，使用该例程的风险完全由用户自行承担。由于它是免费的，所以不提供任何担保，错误纠正和热线支持，用户不必为此联系西门子技术支持与服务部门。


开环运动控制

S7-200 SMART CPU 通过本体的晶体管输出点，实现运动轴（Axis of Motion）控制：内置于 CPU，用于速度和位置控制。

S7-200 SMART CPU 提供了三种开环运动控制方法：运动控制向导，PTO（脉冲串输出）及PWM（脉宽调制）。

如下表 1 所示：

开环运动控制方法 | CPU 版本
 | V1.0/V2.0 | V2.1以上
运动控制向导 | 运动控制向导 | 运动控制向导
PTO | -- | PLS 指令编程
PWM | PWM向导 | PLS 指令编程/PWM向导
表 1. S7-200 SMART 开环运动控制方法

注意：

1.高速脉冲输出操作只能在晶体管输出的 CPU 上进行，不可以在继电器输出的 CPU 上进行。

2.如果已通过运动控制向导将所选输出点组态为运动控制用途，则无法通过 PLS 指令激活PTO/PWM

通过PROFINET连接V90实现基本定位控制

从STEP 7-Micro/WIN SMART V2.4 和 S7-200 SMART PLC固件版本 V2.4开始增加了 PROFINET通信的功能，通过PROFINET接口可与V90 PN伺服驱动器进行通信连接进行位置控制，此接口可支持八个连接（IO 设备或驱动器）。


运动轴

运动轴（Axis of Motion）

内置于 S7-200 SMART CPU 的运动控制功能使用运动轴（Axis of Motion）进行步进电机和伺服电机的速度和位置控制。

S7-200 SMART 提供3个轴的开环位置控制所需要的功能和性能：

  1. 提供高速控制，速度从每秒2个脉冲到每秒100,000个脉冲（2HZ到100KHZ）；
  2. 提供可组态的测量系统，既可以使用工程单位（例如英寸和厘米）也可以使用脉冲数；
  3. 提供可组态的反冲补偿；
  4. 支持绝对、相对和手动位控方式；
  5. 提供连续操作；
  6. 提供多达32组移动曲线，每组最多可有16步；
  7. 提供4种不同的参考点寻找模式，每种模式都可对起始的寻找方向和最终的接近方向进行选择。

西门子热线工程师内部学习讲座-PTO部分：

  • S7-200 SMART PLC运动功能Part1（西门子热线工程师内部学习讲座）
  • S7-200 SMART PLC运动功能Part1（西门子热线工程师内部学习讲座）

S7-200 SMART CPU 运动控制输入/输出点定义见表 1：

表 1.运动控制输入/输出定义
类型 | 信号 | 描述 | CPU 本体 I/O 分配
输入 | STP | STP输入可让CPU停止脉冲输出。在位控向导中可选择您所需要的STP操作。 | 在位控向导中可被组态为I0.0-I0.7 ，I1.0-I1.3 中的任意一个，但是同一个输入点不能被重复定义
 | RPS | RPS（参考点）输入可为绝对运动操作建立参考点或零点位置。
 | LMT+ | LMT+和LMT-是运动位置的最大限制。位控向导中可以组态LMT+和LMT-输入。
 | LMT-
 | ZP(HSC) | ZP（零脉冲）输入可帮助建立参考点或零点位置。通常，电机驱动器/放大器在电机的每一转产生一个ZP脉冲 | CPU 本体高速计数器输入可被组态为ZP输入 HSC0 (I0.0) HSC1 (I0.1) HSC2 (I0.2) HSC3 (I0.3)
输出 |  |  | Axis0 | Axis1 | Axis2
 | P0 | P0和P1是源型晶体管输出，用以控制电机的运动和方向。 | Q0.0 | Q0.1 | Q0.3
 | P1 |  | Q0.2 | Q0.7 or Q0.3* | Q1.0
 | DIS | DIS是一个源型输出，用来禁止或使能电机驱动器/放大器。 | Q0.4 | Q0.5 | Q0.6

*如果Axis1组态为脉冲加方向，则P1分配到Q0.7。如果Axis1组态为双向输出或者A/B相输出，则P1被分配到Q0.3，但此时Axis2将不能使用。

Micro/WIN SMART 为运动控制提供了方便快捷的工具，遵守以下步骤即可：

  1. 组态 Axis of Motion ：
    Micro/WIN SMART 提供了运动控制向导，可生成组态/曲线表和位控指令。

    详细信息参看：位置控制向导

  2. 测试 Axis of Motion ：
    Micro/WIN SMART 提供一个运动控制面板，用以测试输入输出的接线、Axis of Motion 的组态以及运动曲线的运行。

    详细信息参看：运动控制面板

  3. 创建 CPU 执行程序：
    位控向导自动生成位控指令。您可以将这些指令插入您的程序中。将以下指令插入您的用户程序当中：
    - 要使能位控模块，请插入一个AXISx_CTRL指令。用SM0.0（始终接通）以确保这条指令在每一个循环周期中都得到执行。
    - 要将电机移动到一个指定位置，使用一条AXISx_GOTO指令或一条AXISx_RUN指令。AXISx_GOTO指令使电机运动到您在程序中输入的指定位置。AXISx_RUN指令则使电机按照您在位控向导中所组态的路线运动。
    - 要使用绝对坐标进行运动，您必须为您的应用建立零位置。使用一条AXISx_RSEEK或一条AXISx_LDPOS指令建立零位置。
    - 位控向导生成的其它指令为典型应用提供需要的功能，对于您的特定应用，这些指令是可选的。

    详细信息参看：程序编制

  4. 编译您的程序并将系统块、数据块和程序块下载到 S7-200 SMART CPU 中。


运动控制向导

  1. 打开“运动控制”向导，“工具”->“向导”->“运动控制”

    图 1.打开“运动控制”向导

  2. 选择需要配置的轴

    图 2.选择需要配置的轴

  3. 为所选择的轴命名

    图 3.为所选择的轴命名

  4. 输入系统的测量系统（“工程量”或者“脉冲数/转”）

    图 4.选择测量系统

    a.选择工程单位或者是脉冲数；
    b.选择电机每转脉冲数；
    c.选择基本单位 ；
    d.输入电机每转运行距离

  5. 设置脉冲方向输出

    图 5.设置脉冲方向输出

    a.设置有几路脉冲输出（单相：1路、双向：2路、正交：2路）；
    b.设置脉冲输出极性和控制方向。

  6. 分配输入点

    图 6.配置正限位输入点

    a.正限位使能；
    b.正限位输入点；
    c.指定相应输入点有效时的响应方式；
    d.指定输入信号有效电平（低电平有效或者高电平有效）。

    图 7.配置负限位输入点

    a.负限位使能；
    b.负限位输入点；
    c.指定相应输入点有效时的响应方式；
    d.指定输入信号有效电平（低电平有效或者高电平有效）。

    图 8.配置参考点

    a.使能参考点；
    b.参考点输入点；
    c.指定输入信号有效电平（低电平有效或者高电平有效）。

    图 9.配置零脉冲

    a.使能零脉冲：
    b.零脉冲输入点。

    图 10.配置停止点

    a.使能停止点；
    b.停止输入点；
    c.指定相应输入点有效时的响应方式；
    d.指定输入信号的触发方式，可以选择电平触发或者边沿触发。
    e.指定输入信号有效电平（低电平有效或者高电平有效）。

    注意：关于输入点的分配与定义请参看 [image] 运动控制输入/输出定义

  7. 定义输出点

    图 11.定义输出点

    注意：每个轴的输出点都是固定的用户不能对其进行修改，但是可以选择使能/不使能 DIS。
    关于输出点的定义请参看 [image] 运动控制输入/输出定义

  8. 定义电机的速度

    图 12.定义电机的速度

    a.定义电机运动的最大速度“MAX_SPEED”；
    b.根据定义的最大速度，在运动曲线中可以指定的最小速度；
    c.定义电机运动的启动/停止速度“SS_SPEED” 。

  9. 定义点动参数

    图 13.定义点动参数

    a.定义点动速度“JOG_SPEED”（电机的点动速度是点动命令有效时能够得到的最大速度）；
    b.定义点动位移“JOG_INCREMENT”（点动位移是瞬间的点动命令能够将工件运动的距离）。

    注意：当 CPU 收到一个点动命令后，它启动一个定时器。如果点动命令在0.5秒到时之前结束，CPU 则以定义的SS_SPEED速度将工件运动JOG_INCREMENT数值指定的距离。当0.5秒到时时，点动命令仍然是激活的，CPU 加速至JOG_SPEED速度。继续运动直至点动命令结束,随后减速停止。

  10. 加/减速时间设置

    图 14.加/减速时间设置

    a.设置从启动/停止速度“SS_SPEED”到最大速度“MAX_SPEED"的加速度时间“ACCEL_TIME”；
    b.设置从最大速度“MAX_SPEED”到启动/停止速度“SS_SPEED”的减速度时间“DECEL_TIME ”。

  11. 定义反冲补偿

    图 15.定义反冲补偿

    注意：反冲补偿为当方向发生变化时，为消除系统中因机械磨损而产生的误差，电机必须运动的距离。反冲补偿总是正值。（缺省=0）

  12. 使能寻找参考点位置

    图 16. 使能寻找参考点位置

    注意：若您的应用需要从一个绝对位置处开始运动或以绝对位置作为参考，您必须建立一个参考点（RP）或零点位置，该点将位置测量固定到物理系统的一个已知点上。

  13. 设置寻找参考点位置参数

    图 17.设置寻找参考点参

    a.定义快速寻找速度“RP_FAST”（快速寻找速度是模块执行RP寻找命令的初始速度，通常RP_FAST是MAX_SPEED的2/3左右）；
    b.定义慢速寻找速度“RP_SLOW”（慢速寻找速度是接近RP的最终速度，通常使用一个较慢的速度去接近RP以免错过，RP_SLOW的典型值为SS_SPEED）；
    c.定义初始寻找方向“RP_SEEK_DIR”（初始寻找方向是RP寻找操作的初始方向。通常，这个方向是从工作区到RP附近。限位开关在确定RP的寻找区域时扮演重要角色。当执行RP寻找操作时，遇到限位开关会引起方向反转，使寻找能够继续下去，默认方向=反向）；
    d.定义最终参考点接近方向“RP_APPR_DIR”，（最终参考点接近方向是为了减小反冲和提供更高的精度，应该按照从RP移动到工作区所使用的方向来接近参考点，默认方向=正向）。

  14. 设置参考点偏移量

    图 18.设置参考点偏移量

    注意：参考点偏移量“RP_OFFSET是”在物理的测量系统中RP到零位置之间的距离，缺省=0。

  15. 设置寻找参考点顺序

    图 19.设置寻找参考点顺序

    S7-200 SMART 提供4中寻找参考点顺序模式，每种模式定义如下：
    RP寻找模式1：RP位于RPS输入有效区接近工作区的一边开始有效的位置上；
    RP寻找模式2：RP位于RPS输入有效区的中央；
    RP寻找模式3：RP位于RPS输入有效区之外，需要指定在RPS失效之后应接收多少个ZP（零脉冲）输入；
    RP寻找模式4：RP通常位于RPS输入的有效区内，需要指定在RPS激活后应接收多少个ZP（零脉冲）输入。

    关于寻找参考点模式的详细信息请参考：
    《S7-200 SMART 系统手册》

  16. 新建运动曲线并命名

    图 20.新建运动曲线并命名

    通过点击“添加（Add）”按钮添加移动曲线并命名。

    注意：S7-200 SMART 支持最多32组移动曲线。运动控制向导提供移动曲线定义，在这里，您可以为您的应用程序定义每一个移动曲线。运动控制向导中可以为每个移动曲线定义一个符号名，其做法是您在定义曲线时输入一个符号名即可。

  17. 定义运动曲线

    图 21.定义运动曲线

    a.选择移动曲线的操作模式（支持四种操作模式：绝对位置、相对位置、单速连续旋转、两速连续转动）；
    b.定义该移动曲线每一段的速度和位置（S7-200 SMART 每组移动曲线支持最多16步）。

  18. 为配置分配存储区

    图 22.为配置分配存储区

    通过点击“建议（Suggest）”按钮分配存储区

    注意：程序中其他部分不能占用该向导分配的存储区。

  19. 完成组态

    图 23.向导生成的组件

    当您完成对运动控制向导的组态时，只需点击生成（Generate），然后运动控制向导会执行以下任务：
    a. 将组态和曲线表插入到您的 S7-200 SMART CPU 的数据块（AXISx_DATA）中；
    b. 为运动控制参数生成一个全局符号表（AXISx_SYM）；
    c. 在项目的程序块中增加运动控制指令子程序，您可在应用中使用这些指令；
    要修改任何组态或曲线信息，您可以再次运行运动控制向导。

    注意：由于运动控制向导修改了程序块、数据块和系统块，要确保这三种块都下载到 S7-200 SMART CPU 中。否则，CPU 可能会无法得到操作所需的所有程序组件。

  20. 查看输入输出点分配

    图 24.输入输出点分配

    完成配置后运动控制向导会显示运动控制功能所占用的 CPU 本体输入输出点的情况。


运动控制面板

使用运动控制面板进行调试

为了帮助用户更好的开发 S7-200 SMART 的运动控制功能, STEP-7 Micro/WIN SMART 提供了一个调试界面“运动控制面板”。通过“操作界面、配置参数界面和配置曲线参数界面”，可以帮助用户方便地调试、操作和监视S7-200 SMART 的工作状态，验证控制系统接线是否正确，调整配置运动控制参数，测试每一个预定义的运动轨迹曲线。

注意：使用运动控制面板之前请确保已经完成以下操作：

a.将运动控制向导生成的所有组件（包括程序块、数据块和系统块）下载到 CPU 中。否则 CPU 无法得到操作所需要的有效程序组件；
b.将 CPU 的运行状态设置为“STOP” 。

步骤一：打开运动控制面板。

  1. 通过菜单栏或者左侧树形目录打开“运动控制面板”

    图 1.打开“运动控制面板”

  2. 点击“运动控制面板”按钮，会弹出一个对话框，其作用是比较 STEP-7 Micro/WIN SMART 当前打开的程序与 CPU 中的程序是否一致（如图 2所示）。当程序比较通过后点击“继续”按钮（若未通过请重新下载程序块、数据库和系统块至 CPU）。

    图 2.程序比较对话框

步骤二： 在“操作”界面中监视和控制运动轴

“操作”界面允许用户以交互的方式，非常方便地操作、控制运动轴。该界面友好地显示当前设备运行速度、位置和方向信息，监控到输入、输出点状态信息。“操作”界面如图3所示：

图 3.运动控制面板“操作”界面

  1. 选择“激活DIS输出”， 点击“执行”，使能电机驱动器.

    图 4.激活“DIS”输出

  2. 选择“执行连续速度移动”，可以使电机连续运转.

    图 5.连续速度运转指令

    a.输入目标速度；
    b.输入目标方向；
    c.点击“启动”，执行连续速度运转指令；
    d.点击“停止”，终止连续速度运转指令；
    e.点击“点动 +”按钮执行正向点动命令，点击“点动 -”按钮执行负向点动命令，点击时间超过0.5秒电机会加速到点动速度（JOG_SPEED）。

  3. 选择“查找参考点 ”，点击“执行”，可以完成寻找机械坐标系参考点的操作。

    图 6.寻找参考点指令

  4. 选择“执行曲线”，可以完成配制运动轨迹曲线的操作。

    图 7.执行运动曲线指令

    通过下拉列表选择已组态曲线的符号名，点击“执行”，运行指定曲线。

步骤三：在“组态”界面中显示、修改运动控制参数

在“组态”界面中，可以帮助用户方便地监控、修改存储在 S7–200 CPU 数据块中的配置参数信息。 修改过组态设置以后，只需要先点击“允许更新PLC中的轴组态” ，再点击“写入”即可。

图 8.组态界面

步骤四：在“曲线组态”界面修改已组态的曲线参数并更新到CPU中

用户可以使能更新CPU中的轴组态功能

图 9.使能曲线组态信息

图 10.读取/修改曲线信息

用户可以通过点击“读取”，读取 CPU 中存储的已组态的曲线信息，点击“写入”可以将修改后的曲线信息更新到CPU中。


运动控制向导指令

运动控制向导为运动轴创建的指令

运动向导根据所选组态选项创建唯一的指令子程序，从而使运动轴的控制更容易。 各运动指令均具有“AXISx_”前缀，其中 x 代表轴通道编号。 由于每条运动指令都是一个子程序，所以 11 条运动指令使用 11 个子程序。

说明：运动指令使程序所需的存储空间增加多达 1700 个字节。 可以删除未使用的运动指令来降低所需的存储空间。 要恢复删除的运动指令，只需再次运行运动向导。

表 1.运动控制指令
指令名称 | 指令功能
AXISx_CTRL | 启用和初始化运动轴
AXISx_MAN | 手动模式
AXISx_GOTO | 命令运动轴转到所需位置
AXISx_RUN | 运行包络
AXISx_RSEEK | 搜索参考点位置
AXISx_LDOFF | 加载参考点偏移量
AXISx_LDPOS | 加载位置
AXISx_SRATE | 设置速率
AXISx_DIS | 使能/禁止DIS输出
AXISx_CFG | 重新加载组态
AXISx_CACHE | 缓冲包络

详细的运动控制指令介绍请参考：S7-200 SMART 系统手册

运动控制指令使用准则

必须确保在同一时间仅有一条运动指令激活。

可在中断例程中执行 AXISx_RUN 和 AXISx_GOTO。 但是，如果运动轴正在处理另一命令时，不要尝试在中断例程中启动指令。 如果在中断程序中启动指令，则可使用 AXISx_CTRL 指令的输出来监视运动轴是否完成移动。

运动向导根据所选的度量系统自动组态速度参数（Speed 和 C_Speed）和位置参数（Pos 或 C_Pos）的值。 对于脉冲，这些参数为 DINT 值。 对于工程单位，这些参数是所选单位类型对应的 REAL 值。例如： 如果选择厘米 (cm)，则以厘米为单位将位置参数存储为 REAL 值并以厘米/秒 (cm/sec) 为单位将速度参数存储为 REAL 值。

有些特定位置控制任务需要以下运动指令：

  • 要在每次扫描时执行指令，请在程序中插入 AXISx_CTRL 指令并使用 SM0.0 触点。

  • 要指定运动到绝对位置，必须首先使用 AXISx_RSEEK 或 AXISx_LDPOS 指令建立零位置。

  • 要根据程序输入移动到特定位置，请使用 AXISx_GOTO 指令。

  • 要运行通过位置控制向导组态的运动包络，请使用 AXISx_RUN 指令。

其它位置指令为可选项。

常用运动控制指令介绍

  1. AXISx_CTRL
    功能：启用和初始化运动轴，方法是自动命令运动轴每次 CPU 更改为 RUN 模式时加载组态/包络表。

    图 1. AXISx_CTRL指令

    注意：
    在您的项目中只对每条运动轴使用此子例程一次，并确保程序会在每次扫描时调用此子例程。使用 SM0.0（始终开启）作为 EN 参数的输入。

    MOD_EN 参数必须开启，才能启用其它运动控制子例程向运动轴发送命令。 如果 MOD_EN 参数关闭，运动轴会中止所有正在进行的命令；
    Done 参数会在运动轴完成任何一个子例程时开启；
    Error 参数存储该子程序运行时的错误代码；
    C_Pos 参数表示运动轴的当前位置。 根据测量单位，该值是脉冲数 (DINT) 或工程单位数 (REAL)；
    C_Speed 参数提供运动轴的当前速度。 如果您针对脉冲组态运动轴的测量系统，C_Speed 是一个 DINT 数值，其中包含脉冲数/每秒。如果您针对工程单位组态测量系统，C_Speed 是一个 REAL 数值，其中包含选择的工程单位数/每秒 (REAL)。
    C_Dir 参数表示电机的当前方向：信号状态 0 = 正向；信号状态 1 = 反向；

  2. AXISx_DIS
    功能：运动轴的 DIS 输出打开或关闭。这允许您将 DIS 输出用于禁用或启用电机控制器。

    图 2. AXISx_DIS指令

    EN 位打开以启用子例程时，DIS_ON 参数控制运动轴的 DIS 输出。

    注意：
    如果您在运动轴中使用 DIS 输出，可以在每次扫描时调用该子例程，或者仅在您需要更改 DIS 输出值时进行调用。若实际DIS连接了电机驱动器的DIS输入，如果不使能则可能导致电机不运转。

  3. AXISx_MAN
    功能：将运动轴置为手动模式。 这允许电机按不同的速度运行，或沿正向或负向慢进。

    图 3. AXISx_MAN指令

    RUN 参数会命令运动轴加速至指定的速度（Speed 参数）和方向（Dir 参数）。 您可以在电机运行时更改 Speed 参数，但 Dir 参数必须保持为常数。 禁用 RUN 参数会命令运动轴减速，直至电机停止；
    JOG_P（点动正向旋转）或 JOG_N（点动反向旋转）参数会命令运动轴正向或反向点动。 如果 JOG_P 或 JOG_N 参数保持启用的时间短于 0.5秒，则运动轴将通过脉冲指示移动 JOG_INCREMENT 中指定的距离。 如果 JOG_P 或 JOG_N 参数保持启用的时间为 0.5秒或更长，则运动轴将开始加速至指定的 JOG_SPEED；
    Speed 参数决定启用 RUN 时的速度。 如果您针对脉冲组态运动轴的测量系统，则速度为 DINT 值（脉冲数/每秒）。 如果您针对工程单位组态运动轴的测量系统，则速度为 REAL 值（单位数/每秒）。

    注意：同一时间仅能启用 RUN、JOG_P 或 JOG_N 输入之一。

  4. AXISx_RSEEK
    功能：使用组态/包络表中的搜索方法启动参考点搜索操作。当运动轴找到参考点且移动停止时，运动轴将 RP_OFFSET 参数值载入当前位置。

    图 4. AXISx_RSEEK指令

    RP_OFFSET 的默认值为 0。 可使用运动控制向导、运动控制面板或 AXISx_LDOFF（加载偏移量）子例程来更改 RP_OFFSET 值；
    EN 位开启会启用此子例程。确保 EN 位保持开启，直至 Done 位指示子例程执行已经完成；
    START 参数开启将向运动轴发出 RSEEK 命令。 对于在 START 参数开启且运动轴当前不繁忙时执行的每次扫描，该子例程向运动轴发送一个 RSEEK 命令。为了确保仅发送了一个命令，请使用边沿检测元素用脉冲方式开启 START 参数。

  5. AXISx_GOTO
    功能：命令运动轴转到所需位置。

    图 5. AXISx_GOTO指令

    START 参数开启会向运动轴发出 GOTO 命令。 对于在 START 参数开启且运动轴当前不繁忙时执行的每次扫描，该子例程向运动轴发送一个 GOTO 命令。为了确保仅发送了一个 GOTO 命令，请使用边沿检测元素用脉冲方式开启 START 参数；
    Pos 参数包含一个数值，指示要移动的位置（绝对移动）或要移动的距离（相对移动）。 根据所选的测量单位，该值是脉冲数 (DINT) 或工程单位数 (REAL)；
    Speed 参数确定该移动的最高速度。 根据所选的测量单位，该值是脉冲数/每秒 (DINT) 或工程单位数/每秒 (REAL)；
    Mode 参数选择移动的类型：
    0：绝对位置
    1：相对位置
    2：单速连续正向旋转
    3：单速连续反向旋转
    Abort 参数启动会命令运动轴停止当前包络并减速，直至电机停止。

    注意：若 Mode 参数设置为 0，则必须首先使用 AXISx_RSEEK 或 AXISx_LDPOS 指令建立零位置。

  6. AXISx_RUN
    功能：命令运动轴按照存储在组态/包络表的特定包络执行运动操作。

    图 6. AXISx_RUN指令

    START 参数开启将向运动轴发出 RUN 命令。 对于在 START 参数开启且运动轴当前不繁忙时执行的每次扫描，该子例程向运动轴发送一个 RUN 命令。为了确保仅发送了一个命令，请使用边沿检测元素用脉冲方式开启 START 参数；
    Profile 参数包含运动包络的编号或符号名称。 “Profile”输入必须介于 0 - 31。否则子例程将返回错误；
    Abort 参数会命令运动轴停止当前包络并减速，直至电机停止；
    C_Profile 参数包含运动轴当前执行的包络；
    C_Step 参数包含目前正在执行的包络步。

  7. AXISx_LDOFF
    功能：建立一个与参考点处于不同位置的新的零位置。

    图 7. AXISx_LDOFF指令

    开启 START 参数将向运动轴发出 LDOFF 命令。 对于在 START 参数开启且运动轴当前不繁忙时执行的每次扫描，该子例程向运动轴发送一个 LDOFF 命令。为了确保仅发送了一个命令，请使用边沿检测元素用脉冲方式开启 START 参数。

    注意：
    在执行该子例程之前，您必须首先确定参考点的位置。您还必须将机器移至起始位置。 当子例程发送 LDOFF 命令时，运动轴计算起始位置（当前位置）与参考点位置之间的偏移量。 运动轴然后将算出的偏移量存储到 RP_OFFSET 参数并将当前位置设为 0。这将起始位置建立为零位置。
    如果电机失去对位置的追踪（例如断电或手动更换电机的位置），您可以使用 AXISx_RSEEK 子例程自动重新建立零位置。

  8. AXISx_LDPOS
    功能：将运动轴中的当前位置值更改为新值。您还可以使用本子例程为任何绝对移动命令建立一个新的零位置。

    图 8. AXISx_LDPOS指令

    START 参数开启将向运动轴发出 LDPOS 命令。 对于在 START 参数开启且运动轴当前不繁忙时执行的每次扫描，该子例程向运动轴发送一个 LDPOS 命令。为了确保仅发送了一个命令，请使用边沿检测元素用脉冲方式开启 START 参数；
    New_Pos 参数提供新值，用于取代运动轴报告和用于绝对移动的当前位置值。 根据测量单位，该值是脉冲数 (DINT) 或工程单位数 (REAL)

    运动控制错误代码请查看运动控制错误代码

例程

所需条件：

1、软件版本：STEP 7-Micro/WIN SMART V2.3

2、SMART CPU固件版本:V2.3（其他版本亦可）

3、通讯硬件：TP电缆（以太网电缆）

所实现的功能：

S7-200 SMART CPU ST60 通过向导生成的轴0和轴1各指令块的使用，其中：轴0测量系统组态为相对脉冲，轴1测量系统组态为工程单位。

PTO_wizard

免责声明

本例程仅供参考，程序中的CPU版本、类型可能与用户实际使用不同，用户可能需要先对例子程序做修改和调整，才能将其用于测试。本例程的作者和拥有者对于该例程的功能性和兼容性不负任何责任，使用该例程的风险完全由用户自行承担。由于它是免费的，所以不提供任何担保，错误纠正和热线支持，用户不必为此联系西门子技术支持与服务部门。


Read_AbsPos_V90

S7-200 SMART PLC读取V90绝对值编码器数值

1.概况

SINAMICS V90是西门子推出的一款小型、高效便捷的伺服系统。它作为 SINAMICS 驱动系列家族的新成员，与SIMOTICS S-1FL6 伺服电机完美结合，组成最佳的伺服驱动系统，实现位置控制、速度控制和扭矩控制。目前1FL6电机有两种编码器类型，即增量编码器类型及绝对值编码器类型。
西门子的小型自动化S7-200 SMART PLC可以控制V90驱动器，本文介绍如何实现SMART PLC读取1FL6伺服电机的绝对值编码器数值。
关于如何实现SMART PLC控制V90实现定位控制请参见《SIMATIC S7-200 SMART 系统手册》及《S7-200 SMART连接SINAMICS V90 实现位置控制》。

2.使用的硬件及软件

硬件

序号 | 设备名称 | 订货号
1 | PS207电源 24 V DC/2.5 A | 6EP1 332-1LA00
2 | SIMATIC S7-200 SMART CPU ST60 | 6ES7288-1ST60-0AA0
3 | V90驱动器 | 6SL3210-5FE10-4UA0
4 | 伺服电机 | 1FL6042-1AF61-0LG1
5 | V90 动力电缆 (含接头) | 6FX3002-5CL01-1AD0
6 | 伺服电机编码器电缆 (含接头，用于绝对值编码器) | 6FX3002-2DB10-1AD0
7 | V90 控制信号电缆（含 50 针接头及 1m 电缆线） | 6SL3260-4NA00-1VB0
8 | SIMATIC Field PG M3 | 6ES7715-1BB23-0AA1
9 | Mini USB电缆 |

软件

序号 | 说 明
1 | Window 7 旗舰版 32位
2 | STEP 7-Micro/WIN SMART 编程软件
3 | SINAMICS_V-ASSISTANT

3.实现方法

3.1概述

如图1，使用PG通过标准mini USB电缆与V90连接，打开SINAMICS V—ASSITANT软件设置驱动器的参数。

图1 PG与V90连接
如图2所示，PLC通过V90上的RS485通讯读取编码器调整状态并且通过V90的数字量输出检查V90的驱动器状态，判断绝对位置是否有效。如果V90的DO1=1,DO2=0和DO3=1且r2507=3,这意味着PLC可以有效地读取编码器的绝对位置，此时可以通过RS485 USS通讯读取绝对位置(r2521[0]),否则r2521是无效的。PLC可以通过数字量输出报警或面板来提示用户当前r2521无效。读取r2521值后,PLC可以通过PTI方式输出脉冲给驱动器执行相应的运动控制。

图2 PLC与V90系统连接图

3.2实现步骤

根据SIMATIC S7-200 SMART CPU ST60的运动控制功能信号分配和V90端子定义进行接线（详见《SINAMICS V90 OPI操作手册》）；使用SINAMICS_V-ASSISTANT对SINAMICS V90进行参数设置以及对电机的绝对值编码器进行调试；使用STEP 7-Micro/WIN SMART编程软件对CPU ST60进行组态和参数化，操作步骤如表1所示。
表1.操作步骤

步骤 | 内容
1 | 接线
2 | 进行外部脉冲位置控制模式（PTI）下的系统调试
3 | STEP 7-Micro/WIN SMART连接S7-200 SMART
4 | 组态运动轴
5 | 组态轴工艺对象的参数
6 | 下载到PLC
7 | 用轴控制面板调试轴
8 | 编程
9 | 下载到PLC
10 | 试运行

3.3接线

S7-200 SMART与V90的485通讯连接：
SINAMICS V90 伺服驱动通过 RS485 接口（X12）使用 USS 协议与 PLC RS485（端口 0） 进行通讯，接线如图3所示。

图3 S7-200 SMART CPU 与V90通讯线连接

S7-200 SMART通过PTI方式控制V90定位的控制信号接线如图4所示：

图4 S7-200 SMART CPU 与V90控制信号连接

3.4 伺服驱动器的参数

3.4.1 位置控制相关的参数
按照表2所示对伺服驱动器的位置控制相关的参数进行设置
表2.V90 位置控制参数

参数 | 说明 | 设置
P29003 | 控制模式设定为PTI | P29003 = 0
P29250 | 使能PTI 绝对位置模式 | P29250 = 1
P29010~P29014 | PTI控制模式下的相关参数 | 根据实际条件设置
P29012 P29013 P29247~P29249 | 位置控制相关的参数 P29012 P29013是电子齿轮比 | 根据实际条件设置

3.4.2 USS通讯相关的参数
按照表3所示对伺服驱动器的USS通讯相关的参数进行设置
表3. V90 USS通讯参数

参数 | 说明 | 设置
USS波特率 | USS 波特率8(38400bits/s) | 缺省值
P29004 | USS 地址 | 0-31
PKW/PZD | USS PZD/PKW 长度为0/4 | 缺省值

注意：
PLC的 RS485接口的波特率和驱动器USS地址要求与V90一致, 因此， 需要对V90里的参数P29004设置一致的USS地址。并且V90 USS RS485端口的波特率设置为38400bits/s，报文长度为4个PKW和0个PZD的USS协议。

3.5 PLC组态及编程

在PLC的编程软件中组态运动轴，详细步骤参见《SIMATIC S7-200 SMART系统手册》，注意在组态轴工艺对象的参数中需启用从驱动器里读取1FL6伺服电机绝对值编码器的位置，如图5所示。

图5 启用从驱动器里读取1FL6伺服电机绝对值编码器的位置
在PLC中编程如表4所示：

表4. PLC编程

启用和初始化运动轴：执行AXISx_CTRL 。

使用手动模式运行轴运动：执行AXISx_MAN，输入RUN、JOG_P 或 JOG_N之一，使轴速度或位置点动运行。

通过 SINAMICS V90 伺服驱动器读取绝对位置值：
–执行AXIS0_ABSPOS
–把伺服驱动器返回的当前绝对位置放到VD326里

总结:

ABSPOS指令用途:

AXISx_ABSPOS 指令用于读取SINAMICS V90 伺服驱动器绝对值编码器数值。读取绝对位置值的目的是为了更新运动轴中的当前位置值。
SINAMICS V90 伺服驱动器与安装了绝对值编码器的 SIMOTICS-1FL6 伺服电机结合使用时，支持此功能。

ABSPOS指令D_POS:

AXISx_ABSPOS 指令的D_Pos 输出，指示SINAMICS V90 伺服驱动器绝对值编码器数值，该数值只在AXISx_ABSPOS 指令的完成位=1时有效，
为了保证D_Pos读数的稳定值，需要采用完成位的上升沿转移该数值。该数值显示方式因为运动控制组态向导不同而显示不同。如下所示:

（1）、测量系统选择：工程单位

如果测量系统选择为“工程单位”，则AXISx_ABSPOS.D_Pos的计算公式如下：

AXISx_ABSPOS.D_Pos [image] ，数据类型为real 。
其中：r2521显示V90 的编码器实际位置值，r2521正确显示必须先将V90驱动器ABS。
注：上边公式的假设条件为P29247 = 2^20=1048576, P29248 = 1, P29249 = 1

（2）、测量系统选择：相对脉冲
如果测量系统选择为“相对脉冲”，则AXISx_ABSPOS.D_Pos的计算公式如下：
AXISx_ABSPOS.D_Pos [image] ，数据类型为DINT。

SINAMICS V90手册链接：V90手册


S7-200 SMART PLS

S7-200 SMART PTO 实现方式

使用 S7-200 SMART CPU V1.0/V2.0 只能使用运动控制向导使 CPU 输出高速脉冲，使用 S7-200 SMART CPU V2.1以上 可使用运动控制向导或 PLS指令编程使 CPU 输出高速脉冲， 如下表 1 所示：

CPU 版本 | V1.0/V2.0 | V2.1以上
硬件 | 运动控制向导 | 运动控制向导
软件 | -- | PLS 指令编程

表 1. S7-200 SMART PTO 实现方式

注意：S7-200 SMART V2.1以上 CPU，如已使用运动控制向导组态输出点，则无法通过 PLS 指令激活 PTO。

西门子热线工程师内部学习讲座-PLS脉冲输出部分：

  • S7-200 SMART PLS编程
  • S7-200 SMART PLS定位
  • 与S7-200 PLS指令比较

S7-200 SMART PLS PTO 功能

S7-200 SMART PLS PTO 功能要求：

脉冲输出 (PLS) 指令控制高速输出（Q0.0、Q0.1 和 Q0.3）提供脉冲串输出 (PTO) 和脉宽调制 (PWM) 功能。S7-200 SMART V2.1 CPU PLS 新增 PTO （脉冲串输出）功能。

对使用 PLS 指令的 PTO 功能要求， 如下表 2 所示：

PLS 新增 PTO 功能要求 | 版本
硬件 | V02.01
软件 | STEP7 Micro/Win SMART V2.1 以上

表 2. PLS 新增 PTO 功能要求

图1. 查看CPU固件版本

S7-200 SMART PLS 指令：

使用 STEP7 Micro/Win SMART V2.1以上 编程软件， 鼠标选择指令> 计数器> PLS ，按下键盘 F1，可以看到脉冲输出指令 (PLS) 的帮助信息。如下图 1 所示：

图 2. PLS 指令

PLS 指令需在 EN 输入端使用沿触发，在 N 输入端设置脉冲输出通道。如下图 2 所示：

图 2. PLS 指令输入参数

注意： 脉冲输出 PLS 指令仅可用于以下 S7-200 SMART CPU:

  • SR20/ST20（两个通道，Q0.0 和 Q0.1）

  • SR30/ST30、SR40/ST40 以及 SR60/ST60（三个通道，Q0.0、Q0.1 和 Q0.3）

S7-200 SMART PTO 输出：

PTO 以指定频率和指定脉冲数量提供 50% 占空比输出的方波，PTO 可使用脉冲包络生成一个或多个脉冲串，您可以指定脉冲的数量和频率。

  • 脉冲数：1 到 2,147,483,647

  • 频率：

    • 1 到 100,000 Hz（多段）

    • 1 到 65,535 Hz（单段）

使用以下公式将周期时间转换为频率：F = 1 / CT

F | 频率 (Hz)
CT | 周期时间（秒）

S7-200 SMART PTO 对频率和脉冲数响应：

S7-200 SMART CPU 对最大或最小频率和脉冲数的响应， 如下表 3 所示：

脉冲频率/计数 | 响应
频率 < 1 Hz | 频率默认为 1 Hz
频率 > 100,000Hz | 频率默认为 100,000 Hz
脉冲计数 = 0 | 脉冲计数默认为 1 个脉冲
脉冲计数 > 2,147,483,647 | 脉冲计数默认为 2,147,483,647 个脉冲

表 3. S7-200 SMART CPU 对最大或最小频率和脉冲数的响应

注意：PTO 输出的最低负载必须至少为额定负载的 10%，才能实现启用与禁用之间的顺利转换。

在启用 PTO 操作前，请将过程映像寄存器中 Q0.0、Q0.1 和 Q0.3 的值设置为 0。

所有控制位、周期时间/频率、脉冲宽度和脉冲计数值的默认值均为 0。


PLS指令编程

PLS 指令编程步骤

使用 PLS 指令编程， 以实现 PTO 输出， 可按照以下步骤编程：

第一步：设置 PTO 控制字节，以确定使用单段操作或多段操作，是否更新频率或脉冲数；

第二步：如果是单段操作，装载或更新频率值，脉冲数；如果是多段操作，装载包络表起始地址以及包络表每段起始频率值，结束频率值，脉冲数；

第三步：设置 PLS 指令通道， 以确定是 Q0.0、Q0.1 或 Q0.3 PTO 输出；

第四步：沿触发 PLS 指令。

西门子热线工程师内部学习讲座-PLS脉冲输出部分：

  • S7-200 SMART PLS编程
  • S7-200 SMART PLS定位
  • 与S7-200 PLS指令比较

使用 SM 位置组态和控制 PTO 操作

PLS 指令读取存储于指定 SM 存储单元的数据，并相应地编程 PTO 生成器。

SMB67 控制 PTO0 ，SMB77 控制 PTO1 ，SMB567 控制 PTO2 。PTO 控制寄存器的 SM 单元表介绍了用于控制 PTO 操作的寄存器。可快速参考该表来确定在 PTO/PWM 控制寄存器中放置什么值才能调用想要的操作。

可通过修改 SM 区域（包括控制字节）中的单元，然后执行 PLS 指令，来改变 PTO 的特性。

任何时候都可通过向 PTO 控制字节（SM67.7、SM77.7 或 SM567.7）使能位写入 0，然后执行 PLS 指令，来实现禁止 PTO输出 。输出点将立即恢复为过程映像寄存器控制。

PTO 控制字节

PTO 产生单段脉冲串或者多段脉冲串，需先组态 PTO 控制字节（SMB67、SMB77 和 SMB567）。

PTO/PWM 控制寄存器的 SM 单元如下表 1 所示：

Q0.0 Q0.1 Q0.3

控制位
SM67.0 SM77.0 SM567.0

PTO/PWM 更新频率/周期时间：

  • 0 = 不更新

  • 1 = 更新频率/周期时间
SM67.1 SM77.1 SM567.1

PWM 更新脉冲宽度时间：

  • 0 = 不更新

  • 1 = 更新脉冲宽度
SM67.2 SM77.2 SM567.2

PTO 更新脉冲计数值：

  • 0 = 不更新

  • 1 = 更新脉冲计数
SM67.3 SM77.3 SM567.3

PWM 时基：

  • 0 = 1 µs/时标

  • 1 = 1 ms/刻度
SM67.4 SM77.4 SM567.4

保留
SM67.5 SM77.5 SM567.5

PTO 单/多段操作：

  • 0 = 单段

  • 1 = 多段
SM67.6 SM77.6 SM567.6

PTO/PWM 模式选择：

  • 0 = PWM

  • 1 = PTO
SM67.7 SM77.7 SM567.7

PWM 使能：

  • 0 = 禁用

  • 1 = 启用

表 1 .PTO/PWM 控制寄存器的 SM 单元

PTO 控制字节（SMB67、SMB77 和 SMB567）， 如下表 2 所示：

控制寄存器 （十六进制值） | 启用 | 选择模式 | PTO 段操作 | 时基 | 脉冲计数 | 频率
16#C0 | 是 | PTO | 单段 | 频率 HZ |  |
16#C1 | 是 | PTO | 单段 | 频率 HZ |  | 更新频率
16#C4 | 是 | PTO | 单段 | 频率 HZ | 更新 |
16#C5 | 是 | PTO | 单段 | 频率 HZ | 更新 | 更新频率
16#E0 | 是 | PTO | 多段 | 频率 HZ |  |

表 2. 十六进制值组态 PTO 控制字节

除组态 PTO 控制字节，应该在执行 PLS 指令前装载或更新脉冲频率，脉冲数。

如果使用多段脉冲串，在执行PLS 指令前还需要装入包络表的起始偏移量和包络表的值。 如下表 3 所示：

Q0.0 | Q0.1 | Q0.3 | 其它控制寄存器
SMW68 | SMW78 | SMW568 | PTO 频率：1 到 65,535 Hz (PTO)
SMD72 | SMD82 | SMD572 | PTO 脉冲计数值：1 到 2,147,483,647
SMW168 | SMW178 | SMW578 | 包络表的起始单元（相对 V0 的字节偏移） 仅限多段 PTO 操作

表 3. 其它控制寄存器

PTO 状态字节

可通过监视 PTO 状态字节（SMB66、SMB76 和 SMB566） ， 诊断 PTO 输出状态。 如下表 4 所示：

Q0.0 Q0.1 Q0.3 状态位

SM66.4

SM76.4

SM566.4

PTO 增量计算错误（因添加错误导致）

  • 0 = 无错误

  • 1 = 因错误而中止

SM66.5

SM76.5

SM566.5

PTO 包络被禁用（因用户指令导致）：

  • 0 = 非手动禁用的包络

  • 1 = 用户禁用的包络
SM66.6

SM76.6

SM566.6

PTO/PWM 管道溢出/下溢：

  • 0 = 无溢出/下溢

  • 1 = 溢出/下溢

SM66.7

SM76.7

SM566.7

PTO 空闲：

  • 0 = 进行中

  • 1 = PTO 空闲

表 4. PTO 状态位

PTO 脉冲的单段管道化

  • 单段管道化频率的上限为 65,535 Hz。

  • 在单段管道化中，用户可通过 SM 更新下一脉冲串的频率或脉冲数。更新后，再次执行 PLS 指令。

  • PTO 功能在单段管道中保留第二个脉冲串的属性，直到其完成了第一个脉冲串。在第一个脉冲串完成时，开始输出第二个波形，然后可在管道中存储一个新脉冲串设置。之后重复此过程。

  • PTO 在单段管道中一次只能存储一个条目。若在管道仍填满时装载新设置，PTO 溢出位置位且指令被忽略。

PTO 脉冲的单段管道化例程

S7-200 SMART CPU Q0.0 以 100 HZ 频率值输出 1000 个脉冲。

PTO 脉冲的单段管道化

注意：以上例程仅为示例程序，请勿直接用于测试！

测试前，用户务必使用晶体管输出的 S7-200 SMART CPU，并根据实际使用需求修改程序中的频率值和脉冲数！

此程序的作者和拥有者对于该程序的功能性和兼容性不负任何责任。使用该程序的风险完全由用户自行承担。由于它是免费的，所以不提供任何担保，错误纠正和热线支持，用户不必为此联系西门子技术支持与服务部门。

PTO 单段脉冲串排队

PTO 脉冲的单段只能有一个脉冲串排队，PTO 对溢出的脉冲串不响应，PTO 溢出位置 1。 如果希望检测后续溢出，溢出位置位后只能手动复位或 CPU STP 到 RUN。

PTO 脉冲的多段管道化

  • PTO 生成器自动将频率从起始频率线性提高或降低到结束频率，多段管道化频率的上限为 100,000 Hz。

  • 对于多段脉冲串操作，必须装载包络表的起始偏移量（SMW168、SMW178 或 SMW578）和包络表值。

  • S7-200 SMART 从 V 存储器的包络表中自动读取每个脉冲串段的特性，执行 PLS 指令将启动多段操作。

  • 在脉冲数量达到指定的脉冲计数时，立即装载下一个 PTO 段，该操作将一直重复到包络结束。

  • 每个脉冲包络最多可由 255 段组成，每段对应一个加速、运行或减速操作。

  • 在 SMB166、SMB176 或 SMB576 中可监视 PTO 包络当前有效段的编号。

  • 多段 PTO 每段条目长 12 字节，由 32 位起始频率、32 位结束频率和 32 位脉冲计数值组成。

多段 PTO 操作的包络表格式如下：

PTO 多段管道化例程

使用带有脉冲包络的 PTO 通过简单的加速、运行和减速顺序来控制步进电机。

通过定义脉冲包络可创建更复杂的顺序。

右图说明了生成输出波形所需的采样包络表值：

● 段 1：加速步进电机

● 段 2：以恒定转速运行电机

● 段 3：使电机减速

在本例中，要达到期望的电机转数，PTO 生成器需要以下值：

● 2 kHz 的启动和结束脉冲频率

● 10 kHz 的最大脉冲频率

● 4000 个脉冲

输出包络的加速部分，约在 200 脉冲后，输出波形达到最大脉冲频率

约在400 脉冲后，输出波形应完成包络的减速部分。

PTO 脉冲的多段管道化

注意：以上例程仅为示例程序，请勿直接用于测试！

测试前，用户务必使用晶体管输出的 S7-200 SMART CPU，并根据实际使用需求修改程序中的频率值和脉冲数！

此程序的作者和拥有者对于该程序的功能性和兼容性不负任何责任。使用该程序的风险完全由用户自行承担。由于它是免费的，所以不提供任何担保，错误纠正和热线支持，用户不必为此联系西门子技术支持与服务部门。

计算给定 PTO 包络段的加速度（或减速度）和持续时间

Ts 段持续时间对于 PTO 包络表计算的重要用途

计算包络段的加速度（或减速度）和持续时间有助于确定正确的包络表值。

注意：如果 Ts 段持续时间少于 500 微秒，将导致 CPU 没有足够的时间来计算 PTO 段值。 PTO 管道下溢位（SM66.6、SM76.6 和 SM566.6）将置为 1，PTO 操作终止。

可按如下公式计算 Ts 段持续时间

ΔF = FFinal - FInitial

Ts = PC / (Fmin + ( | ΔF | / 2 ) )

As = ΔF / Ts

Ts | 段持续时间 (s)
As | 段频率加速度 (Hz/s)
PC | 段内脉冲数量
Fmin | 段最小频率 (Hz)
ΔF | 段增量（总变化）频率 (Hz)

PTO 中断

状态位（SM66.7、SM76.7 或 SM566.7）是 PTO 空闲位，可用来指示编程的脉冲串是否已结束。PTO 中断在脉冲串结束后执行。

单段操作：在每个 PTO 脉冲串结束时可以产生PTO脉冲完成中断。中断例程可在脉冲串结束后进行调用。例如，如果第二个 PTO 已装载到管道中，PTO 功能在第一个 PTO 结束时调用中断例程，然后在已装载到管道中第二个 PTO 结束时再次调用。

多段操作：在 PTO 包络表完成时产生PTO脉冲完成中断。

PTO 中断事件号 | 说明
19 | PLS0 PTO 脉冲计数完成中断
20 | PLS1 PTO 脉冲计数完成中断
34 | PLS2 PTO 脉冲计数完成中断

以 PLS0 PTO 中断为例， 可在主程序中使用 CPU 第一个扫描周期有效位 SM0.1 调用 ATCH, 如下图 1 所示：

图 1. PLS0 PTO 脉冲计数完成中断

PTO 中断事件应用实例

S7-200 SMART CPU 发送无限脉冲。

以频率值 100 HZ 为例，一直发送脉冲为例， 程序说明如下：

PTO 控制字节 SMB67=16#C0

PTO 频率值 SMW68=100

PTO 脉冲数 SMD72=2147483647（最大值）

启用 PTO 脉冲计数完成中断

在脉冲计数完成中断 INT_0 ，再次执行 PLS 指令。

图 2. S7-200 SMART 发送无限脉冲程序

注意：以上例程仅为示例程序，请勿直接用于测试！

测试前，用户务必使用晶体管输出的 S7-200 SMART CPU，并根据实际使用需求修改程序中的频率值！

此程序的作者和拥有者对于该程序的功能性和兼容性不负任何责任。使用该程序的风险完全由用户自行承担。由于它是免费的，所以不提供任何担保，错误纠正和热线支持，用户不必为此联系西门子技术支持与服务部门。

常问问题

如何判断 S7-200 SMART CPU 是否输出高速脉冲？

可采用如下两种方法：

1. 观察 S7-200 SMART 硬件输出点 Q0.0、Q0.1 、Q0.3 指示灯状态：指示灯亮或闪烁时， 表示正在输出高速脉冲；

2. 在状态图表中， 在线监视状态位SM66.7、SM76.7 或 SM566.4：该位为 FALSE 时， 表示PTO 进行中； 为 TURE时， 表示 PTO 空闲。

为何连续触发多次 PLS 指令， S7-200 SMART CPU 只输出前几次的高速脉冲串？

PTO 单段脉冲串排队

PTO 脉冲的单段只能有一个脉冲串排队，PTO 对溢出的脉冲串不响应，PTO 溢出位置 1。 如果希望检测后续溢出，溢出位置位后只能手动复位或 CPU STP 到 RUN。

测试 PTO 单段脉冲串排队， 程序说明如下：

将 S7-200 SMART 硬件 Q0.0 接入I0.0。

配置高速计数器向导，启用 HSC0_INIT

PTO 控制字节 SMB67=16#C0

PTO 频率值 SMW68=100

PTO 脉冲数 SMD72=1000 第一个脉冲串发送期间，按如下操作连续三次使能 V0.0，上升沿触发 PLS 指令并累计次数：

第一、二次使能 V0.0 ，上升沿触发 PLS 指令，PLS 指令累计次数 VW20< =1，Q0.0 以 100 HZ 频率值输出 1000 个脉冲；

第三、四次使能 V0.0 ，更新脉冲数并上升沿触发 PLS 指令 ，PLS 指令累计次数 VW20 >1

PTO 控制字节 SMB67=16#C4

PTO 脉冲数 SMD72=500

如下图 3 所示：

图 3. PTO 单段脉冲串排队

待 S7-200 SMART CPU 脉冲发送完成， 监视状态图标，HC0=2000，PLS 累计计数 VW20=4 次， PTO 0溢出位 SM66.6=1。如下图 4 所示：

说明 PTO 脉冲的单段只能有一个脉冲串排队，对第三、四个溢出的脉冲串不响应，PTO 溢出位置 1。

图 4. PTO 单段脉冲串排队状态图表


S7-200 SMART PLS指令比较

使用 STEP 7 Micro/Win SMART 编程软件可打开 S7-200 CPU 编写的 PLS 程序

可使用 STEP 7 Micro/Win SMART 打开S7-200 CPU 编写的 PLS 程序。 在使用 STEP 7 Micro/Win SMART 编译后， 自动更新为新的 PLS 指令 。

如下图 1 所示：

图 1. 使用 STEP 7 Micro/Win SMART 打开 S7-200 CPU 编写的 PLS 程序比较

西门子热线工程师内部学习讲座-PLS脉冲输出部分：

  • S7-200 SMART PLS编程
  • S7-200 SMART PLS定位
  • 与S7-200 PLS指令比较

S7-200 SMART 与 S7-200 SM控制字节定义不同

S7-200 SMART 与 S7-200 SM 定义不同。不能将 S7-200 CPU 编写的 PLS 程序直接用于S7-200 SMART。

使用 STEP 7 Micro/Win SMART 打开S7-200 CPU 的 PLS 指令程序需修改控制字节和更改周期为频率 。

例如， 在 S7-200 程序里，编写 1ms/周期，装载周期和脉冲的PTO 输出程序；

由于S7-200 SMART 与 S7-200 SM 控制字节定义不同，使用 STEP 7 Micro/Win SMART 打开该程序，实际定义变化为 1ms/周期，更新周期的PWM 输出。

如下图 2 所示：

图 2. S7-200 SMART 与 S7-200 SM 定义不同

图3.S7-200 SMART与S7-200 SM控制字节区别

S7-200 SMART 使用频率时基

相对于 S7-200 CPU 多段 PTO 计算周期增量的方式，S7-200 SMART 多段 PTO 设置更简单。如下图 3 所示：

对于依照周期时间（而非频率）的计算，可以使用以下公式来进行频率转换：

CTFinal = CTInitial + (ΔCT * PC)

FInitial = 1 / CTInitial

FFinal = 1 / CTFinal

图 4. 周期频率换算

S7-200 SMART 与 S7-200 对脉冲频率，脉冲数组态范围响应不同

S7-200 SMART 与 S7-200 对脉冲频率，脉冲数组态范围响应不同。如下图 4 所示：

图 5. S7-200 SMART 与 S7-200 对脉冲频率，脉冲数组态范围响应

S7-200 SMART PLS 在再次执行 PLS 指令之前需有时间延迟

如果在 PTO 操作正在产生脉冲时被禁止，S7-200 PLS 在再次执行 PLS 指令之前没有时间延迟限制。

如果在 PTO 操作正在产生脉冲时被禁止，S7-200 SMART 再次执行 PLS 指令之前必须要有时间延迟，并要确保其等于上一个有效脉冲的最大周期时间。

S7-200 SMART PTO 脉冲数测量

S7-200 SMART CPU 没有类似 S7-200 CPU 的高速计数器模式 12 功能。

S7-200 SMART CPU 硬件脉冲输出接到输入，配置高速计数器向导并调用 HSC 子程序可监视 PTO 脉冲数量 。 如下图 5 所示：

图 6. S7-200 SMART PTO 脉冲数测量

S7-200 SMART PTO 频率测量

使用 HSC 功能和 Frequency 指令库可测量 S7-200 SMART CPU PTO 频率。

测量步骤如下：

1.下载 Frequency 指令库到本地 PC

该库指令已保存在本文档，链接请参考 常用指令库

2. 在 STEP 7 Micro/Win SMART 添加 Frequency 库指令

3. 程序中调用 Frequency 指令


PTO 停止脉冲发送

S7-200 SMART 立即停止发送脉冲

使用 S7-200 SMART 脉冲输出功能， 可采用以下两种方式来实现脉冲输出的立即停止：

1. S7-200 SMART STP 停止

使用 S7-200 SMART 创建运动控制向导， 可启用 STP 定位，立即停止脉冲串输出。

2. S7-200 SMART PLS 停止

使用 PLS 指令编程， 禁止 PTO 操作，可立即停止脉冲串输出。

S7-200 SMART STP 停止

STP 定位与 STP 信号的输入滤波时间和 PTO 频率有关。

例如，在 S7-200 SMART 运动控制向导中，启用 I0.2 作为 STP 信号，选择响应为 “立即停止”。 如下图 1 所示：

图 1. 启用 STP 信号和立即停止

由于 PTO 频率越大， 输出脉冲串越快，为最快响应 STP 输入信号，立即停止脉冲串输出， 应注意在系统块里修改STP 信号（例如 I0.2）的输入滤波时间为最小值 0.2 μs 。 如下图 2 所示：

图 2. 修改输入滤波时间

注意：更改数字量输入通道的滤波时间存在的风险：

如果数字量输入通道的滤波时间更改自以前的设置，则新的“0”电平输入值可能需要保持长达 12.8 ms 的累积时间，然后滤波器才会完全响应新输入。 在此期间，可能不会检测到持续时间少于 12.8 ms 的短“0”脉冲事件或对其计数。

滤波时间的这种更改会引发意外的机械或过程操作，这可能会导致人员死亡、重伤和/或设备损坏。

为了确保新的滤波时间立即生效，必须关闭 CPU 电源后再开启。

S7-200 SMART PLS 停止

PLS 定位与程序，指令执行时间有关。

例如，启用 I0.2 上升沿中断 INT_0， 对应的中断事件号 EVNT=4。在中断程序里编程，立即禁止 PTO。 如下图 3 所示：

图 3. 启用 I0.2 上升沿中断

使用 PLS 定位， 应在中断程序里网络 1， 立即禁止 PTO。例如，V0.0 上升沿触发 PLS 指令，以 100 HZ 频率输出 5000 个脉冲数。在 5000 个脉冲数输出完成之前，使能 I0.2 ，I0.2 上升沿中断禁止 PTO 。程序编写如下图 4 所示：

程序说明：

PTO 控制字节 SMB67=16#C5

PTO 频率值 SMW68=100

PTO 脉冲数 SMD72=5000

使能 V0.0，上升沿触发 PLS ,

I0.2 上升沿中断禁止 PTO 。

图 4. I0.2 上升沿中断禁止 PTO

  • 任何时候都可复位控制字节（SM67.7、SM77.7 或SM567.7）PTO 使能位，执行 PLS 指令，禁止 PTO。

  • 如果在 PTO 操作正在产生脉冲时被禁止，该脉冲将内在地完成其整个周期时间，不会出现在输出端。

  • 如果在 PTO 操作正在产生脉冲时被禁止，再次执行 PLS 指令之前必须要有时间延迟，并要确保其等于上一个有效脉冲的最大周期时间。

  • 若在脉冲内在完成之前设置使能位并执行 PLS 指令，将导致非致命错误以及指令被忽略。


S7-200 SMART PTO立即停止

S7-200 SMART PTO立即停止后如何快速再次启动

V2.2固件CPU

V2.2固件的CPU PTO停止后可以立即再次启动，不需要有上一个有效脉冲的周期时间延迟。

V2.1固件CPU

由于在 PTO 操作正在产生脉冲时被禁止，再次执行 PLS 指令之前必须要有时间延迟，并要确保其等于上一个有效脉冲的最大周期时间。因此，可采用如下方法来实现延迟执行新脉冲串输出：

1. 采用定时中断：

延迟上一个有效脉冲的最大周期时间，再执行PLS 指令，输出新脉冲串。

2. 利用 PTO 空闲状态位（SM66.7、SM77.7 和 SM566.7）和程序执行错误状态位 SM4.3：

PTO 空闲（SM66.7=1、SM77.7=1 和 SM566.7=1）以及程序执行无错误 SM4.3=0 时，执行 PLS 指令；

PTO 空闲（SM66.7=1、SM77.7=1 和 SM566.7=1）以及程序执行有错误 SM4.3=1 时， 通过GET_EEROR 指令获取 CPU 程序执行错误代码16#05，继续返回直到错误清除执行 PLS 指令。

S7-200 SMART PLS 定位编程方法比较

采用定时中断 | 利用 PTO 空闲状态位和程序执行错误状态位
实际应用中，在 PTO 频率值不固定的情况下， 需根据变化的 PTO 频率值计算再次执行 PLS 指令的延迟时间Tdelay = 1 / Fmax 编程相对复杂，但精确计算上一个有效脉冲的最大周期时间，有利于保证延迟执行新脉冲串的输出。 | PTO 频率越小，PTO 操作被禁止后内在地完成该脉冲的周期时间越长。 即 LBL 标签内跳转次数越多，该部分程序处理时间越长，因此可能造成 CPU 看门狗超时错误。此时，则需要用户编程延长看门狗时间，防止CPU 停机。

1. 采用定时中断：

例如，V0.0 上升沿触发 PLS 指令，以 100 HZ 频率输出 5000 个脉冲数。在 5000 个脉冲数输出完成之前，使能 I0.2 ，I0.2 上升沿中断程序 INT_0 里中断禁止 PTO 并启用定时中断 INT_1，定时中断时间 SMB34= Tdelay = 1 / 100HZ= 10 ms；

定时时间到，更新 PTO 频率为 2000 HZ 和脉冲数为 10000， 立即执行 PLS 指令输出新脉冲串并分离中断。 程序编写如下图 5 所示：

程序说明：

PTO 控制字节 SMB67=16#C5

PTO 频率值 SMW68=100

PTO 脉冲数 SMD72=5000

使能 V0.0，上升沿触发 PLS ,

在 5000 个脉冲数输出完成之前，I0.2 上升沿中断禁止 PTO并启用定时中断INT_1，定时时间 SMB34= 1 / 100HZ= 10 ms 。

定时时间到，进入定时中断 INT_1, 更新PTO 频率为 2000 HZ 和脉冲数为10000

PTO 控制字节 SMB67=16#C5

PTO 频率值 SMW68=2000

PTO 脉冲数 SMD72=10000

立即执行 PLS 指令输出新脉冲串并分离中断。

图 5. 采用定时中断禁止延时执行新脉冲串输出

2. 利用 PTO 空闲状态位（SM66.7、SM77.7 和 SM566.7）和程序执行错误状态位 SM4.3：

例如，V0.0 上升沿触发 PLS 指令，以 100 HZ 频率输出 5000 个脉冲数。在 5000 个脉冲数输出完成之前，使能 I0.2 ，I0.2 上升沿中断程序 INT_0 里中断禁止 PTO ，更新 PTO 频率为 2000 HZ 和脉冲数为 10000， 并跳转到标签 0；

程序说明：

PTO 控制字节 SMB67=16#C5

PTO 频率值 SMW68=100

PTO 脉冲数 SMD72=5000

使能 V0.0，上升沿触发 PLS 。

在 5000 个脉冲数输出完成之前，I0.2 上升沿中断禁止 PTO ， 更新PTO 频率为 2000 HZ 和脉冲数为10000

PTO 控制字节 SMB67=16#C5

PTO 频率值 SMW68=2000

PTO 脉冲数 SMD72=10000

在标签 0 编写如下程序：

PTO 空闲 SM66.7=1 以及程序执行无错误 SM4.3=0 时，执行 PLS 指令，输出新脉冲串；

PTO 空闲 SM66.7=1 以及程序执行错误状态位 SM4.3=1 时，

通过 GET_EEROR 指令获取 CPU 程序执行错误代码16#05，继续返回到标签 0。

程序编写如下图 6 所示：

图 6. 利用 PTO 空闲状态位和程序执行错误状态位延时执行新脉冲串输出

S7-200 SMART 采用运动控制向导STP实现立即停车，如何快速复位STP，实现再次启动？

在向导内激活STP后，当STP使能高速脉冲会立即停车，当需要再次发送脉冲时，需复位STP信号，而有些工况人工无法干预，如何复位STP？

以ST40为例，见图7 所示：

图7. 运动控制轴0组态

接线如下图所示：

将实际的STP信号接入 I0.0，将 Q1.0输出连接到 I0.1，如图 8 所示：

图8.ST40接线

注：红色虚线为程序内逻辑；黑色实线为实际接线

程序如下图 9 所示：

图9. STP功能复位

常问问题

S7-200 SMART PLS指令 正在产生脉冲时被禁止，为何不能再立即执行 PLS 指令输出新脉冲串？

S7-200 SMART PTO 正在产生脉冲时被禁止，CPU 对立即执行新脉冲串输出不响应，导致非致命错误。 再次执行 PLS 指令前必须要有时间延迟，并确保其等于上一个有效脉冲的最大周期时间 Tdelay = 1 / Fmax

例如，I0.2 上升沿中断禁止 PTO，立即更新脉冲频率和脉冲数，CPU 忽略立即执行的 PLS 指令并报错。

程序说明：

PTO 控制字节 SMB67=16#C5

PTO 频率值 SMW68=100

PTO 脉冲数 SMD72=5000

使能 V0.0，上升沿触发 PLS 。

在 5000 个脉冲数输出完成之前，I0.2 上升沿中断禁止 PTO ， 更新PTO 频率为 2000 HZ 和脉冲数为10000

PTO 控制字节 SMB67=16#C5

PTO 频率值 SMW68=2000

PTO 脉冲数 SMD72=10000

立即执行 PLS 指令。

如下图 10 所示：

图 10. 中断程序里立即执行 PLS 指令

STEP 7 Micro/Win SMART 软件在线，从 PLC 信息可以查看到非致命错误。如下图 11 所示：

图 11. 非致命错误


PTO断电保持

如何在S7-200 SMART CPU断电重启后保持运动控制的当前位置值

问题描述

S7-200 SMART 断电重启后由于初始化指令的执行，当前位置会复位为0。要使S7-200 SMART运动控制的当前位置值在CPU断电重启后依然保持，可以通过以下的编程来实现。

实现方法

在此以通过向导生成的运动控制 “ 轴 0 ” 为例来说明如何在 S7-200 SMART CPU 断电后保持 “ 轴 0 ” 的当前位置值，具体可参考以下三个部分的编程来实现 ：
1，设置两个个断电保持区域：VD1000、VD1004，如图1所示：

图1. 设置断电保持

2，将当前值位置值在第一个扫面周期内传送到保持位置VD1004内，如图2所示：

图2. 当前位置保持

3，当初始化完成后，用初始化指令 “ AXIS0_CTRL ” 的DONE位来触发修改位置指令 “ AXIS0_CTRL ”,将保持位置VD1000装载到当前位置VD200，如图3所示：

图3. 装载当前位置

例程

所需条件：

1、软件版本：STEP 7-Micro/WIN SMART V2.3

2、SMART CPU固件版本:V2.3（其他版本亦可）

3、通讯硬件：TP电缆（以太网电缆）

所实现的功能：

在S7-200 SMART CPU断电重启后保持运动控制的当前位置值。

Position_Retain

免责声明

本例程仅供参考，程序中的CPU版本、类型可能与用户实际使用不同，用户可能需要先对例子程序做修改和调整，才能将其用于测试。本例程的作者和拥有者对于该例程的功能性和兼容性不负任何责任，使用该例程的风险完全由用户自行承担。由于它是免费的，所以不提供任何担保，错误纠正和热线支持，用户不必为此联系西门子技术支持与服务部门。


常见问题

1.为何通过S7-200 SMART PTO方式控制V90 PTI定位换向时会有丢失脉冲的情况？

S7-1200(S7-200 SMART) PTO方式控制V90 PTI定位换向时，换向信号由高电平转换为低电平状态的时间取决于外围电路的输入电阻和电容，如果方向输出点的负载电流过小（应不小于10%），在高速时输出信号波形会发生畸变，换向切换时间过长，导致换向过程中的脉冲丢失。为确保换向时不丢失脉冲，同时保证脉冲输出信号波形不发生畸变，建议在SINAMICS V90 PTI的方向控制信号38、39和脉冲信号36、37的端子间连接阻值为200 Ohm至500 Ohm，最小功率为5W的下拉电阻。

图 1.V90接下拉电阻

如果涉及第三方驱动器出现以上类似问题，当运动控制切换方向丢失脉冲的问题，需要在方向输出端并联个电阻来解决，电阻的阻值可以参考下图：

图 2.下拉电阻参考值

2.如何在S7-200 SMART CPU断电重启后保持运动控制的当前位置值？

有关该问题的详细描述及例程可以参考：PTO断电保持

3. S7-200 SMART 如何实现立即停止发送脉冲？

有关该问题的详细描述可以参考：S7-200 SMART 立即停止发送脉冲

4. S7-200 SMART PTO立即停止后如何快速再次启动？

有关该问题的详细描述可以参考：PTO立即停止后如何快速再次启动

5. 运动控制指令报错，无法执行指令怎么办？

查看错误代码，根据错误代码查看相关问题，错误代码如下图所示。

图 3.运动控制错误代码

6. S7-200 SMART可以控制几个V90 PN？

在不挂其他PROFINET设备下，最多可以控制8个V90 PN。


S7-200 SMART 对V90 PN的基本定位控制

S7-200 SMART 通过PROFINET连接V90 PN实现基本定位控制

从STEP 7-Micro/WIN SMART V2.4 和 S7-200 SMART PLC固件版本 V2.4开始增加了 PROFINET通信的功能，通过PROFINET接口可与V90 PN伺服驱动器进行通信连接进行位置控制，此接口可支持八个连接（IO 设备或驱动器）。

需要安装的软件:

• STEP 7-Micro/WIN SMART V2.4 调试软件
• STEP 7 Micro/WIN V2.4 SINAMIC control 库更新工具： https://support.industry.siemens.com/cs/cn/en/view/109766118/zh
• SINAMICS V-ASSISTANT 软件

V90 PN配置要点

• 设置控制模式为"基本定位器控制(EPOS)"
• 配置通信报文为西门子报文111
• V90在线后点击"设置PROFINET->配置网络"，设置V90的IP地址及设备名称：注意：设置的设备名称一定要与200 SMART项目中配置的相同。
参数保存后需重启驱动器才能生效。

S7-200 SMART项目配置步骤

V90 PN与PLC采用PROFINET RT通信方式并使用报文111，项目步骤如下：

1. 创建项目后，安装V90 PN的GSD文件

从何处获取GSD文件？

可从所使用的 PROFINET IO 设备的制造商处获取到该设备的 GSD 文件，然后将其导入到 STEP 7-Micro/WIN SMART 中

例如：S7-200 SMART 要和 V90PN 通信，可以从以下链接地址获取到 V90PN 的 GSD 文件

https://support.industry.siemens.com/cs/cn/en/view/109737269

2. 通过向导功能，配置PROFINET 通信站点和报文信息

3. 设置PLC的IP地址，并且添加V90 PN驱动器并设置IP地址和设备名称

4. 在配置报文的视图中添加西门子报文111到模块列表中，最小的更新时间为4 ms

5. 编写程序，注意St_I_add和St_Q_add的地址必须和报文1的IO地址对应

6. 分配程序库使用的V地址区，需要注意库存储区不能与其他使用的V存储区冲突。

7. SINA_POS功能块输入输出参数说明

输入信号 | 类型 | 含义
ModePos | INT | 运行模式: 1 = 相对定位 2 = 绝对定位 3 = 连续运行模式(按指定速度运行) 4 = 主动回零 5 = 直接设置回零位置 6 = 运行程序段 0～15 7 = 按指定速度点动 8 = 按指定距离点动
Position | DINT | ModePos=1或2时的位置设定值[LU] ModePos=6时的程序段号
Velocity | DINT | ModePos=1、2、3时的速度设定值[1000LU/min]
EnableAxis | BOOL | 伺服运行命令： 0 = 停止(OFF1) 1 = 启动
CancelTraversing | BOOL | 0 = 取消当前的运行任务 1 = 不取消当前的运行任务
IntermediateStop | BOOL | 暂停任务运行： 0 = 暂停当前运行任务 1 = 不暂停当前运行任务
Execute | BOOL | 激活请求的模式
St_I_add | DWORD | PROFINET 通信报文I 存储区起始地址的指针，例如 &IB128
St_Q_add | DWORD | PROFINET 通信报文 Q 存储区起始地址的指针，例如 &QB128
Control_table3 | DWORD | Control_table 起始地址的指针，例如 &VD8000
Status_table4 | DWORD | Status_table 起始地址的指针，例如 &VD7500
ActVelocity | DWORD | 实际速度(十六进制的40000000h对应 p2000参数设置的转速)
ActPosition | DWORD | 实际位置[LU]
Warn_code | WORD | 来自V90 PN的警告代码信息
Fault_code | WORD | 来自V90 PN的故障代码信息
Done | BOOL | 当操作模式为相对运动或绝对运动时达到目标位置

3 Control_table参数的定义：

1 ConfigEpos：可以通过此参数控制基本定位的相关功能，位的对应关系如下表：

注意：如果程序里对此进行了变量分配，必须保证初始数值为3（即ConfigEPos.%X0 和ConfigEPos.%X1 等于1，不激活OFF2和OFF3停止）

4 Status_table参数的定义：

详细文档查看:S7-200 SMART通过PROFINET连接V90 PN实现基本定位控制

常问问题

1.S7-200 SMART可以控制几个V90 PN？

在不挂其他PROFINET设备下，最多可以控制8个V90 PN。


S7-200 SMART 通信协议与资源

每个 S7-200 SMART CPU 都提供一个以太网端口和一个 RS485 端口（端口0），标准型 CPU 额外支持 SB CM01 信号板（端口1），信号板可通过 STEP 7-Micro/WIN SMART 软件组态为 RS232 通信端口或 RS485 通信端口。
S7-200 SMART CPU 可实现 CPU、编程设备和 HMI（人机界面）之间的多种通信：
以太网：
● CPU 与 STEP 7-Micro/WIN SMART 软件之间的数据交换。
● CPU 与 HMI 之间的数据交换。
● CPU 与其它 S7-200 SMART CPU 之间的 GET/PUT 通信。
● CPU 与第三方设备之间的Open IE( TCP、ISO on TCP、UDP) 通信。
● CPU 与IO设备或驱动器之间的PROFINET 通信（目前S7-200 SMART 只支持做PROFINET的IO控制器）。
RS485/RS232：
● CPU 与 HMI 之间的数据交换(PPI协议)。
● CPU 使用自由端口模式与其它设备之间的串行通信（ 例如：XMT/RCV 通信、Modbus RTU通信、USS通信等）。

S7-200 SMART CPU 可同时支持的最大通信连接资源数如下：
以太网：
● 1 个连接用于与 STEP 7-Micro/WIN SMART 软件的通信。
● 8 个连接用于 CPU 与 HMI 之间的通信。
● 8 个连接用于 CPU 与其它 S7-200 SMART CPU 之间的 GET/PUT 主动连接。
● 8 个连接用于 CPU 与其它 S7-200 SMART CPU 之间的 GET/PUT 被动连接。
● 8 个连接用于 CPU 与第三方设备之间的Open IE主动连接。
● 8 个连接用于 CPU 与第三方设备之间的Open IE被动连接。
● 8 个连接用于 CPU 其他IO设备或者驱动器的PROFINET连接。
RS485/RS232：
● 4 个连接用于 CPU 与 HMI 之间的通信(PPI协议)。

注意：
●S7-200 SMART CPU以太网通信端口从V2.4版本（STEP 7-Micro/WIN SMART 也必须是V2.4及以上）开始支持PROFINET通信。
●S7-200 SMART CPU以太网通信端口从V2.2版本开始支持TCP、UDP和ISO on TCP等开放式用户通信及Modbus TCP通信。
●S7-200 SMART CPU RS485/RS232 通信端口采用 PPI 协议时具有4 个连接资源用于 CPU 与 HMI 之间的通信，采用自由口通信时则不受该连接资源限制。
●S7-200 SMART CPU RS485/RS232 通信端口不再支持CPU之间PPI通信。


S7-200 SMART 通信接口和连接方式

S7-200 SMART 通信端口以及连接方式

每个 S7-200 SMART CPU 都提供一个以太网端口和一个 RS485 端口（端口0），标准型 CPU 额外支持 SB CM01 信号板（端口1），信号板可通过 STEP 7-Micro/WIN SMART 软件组态为 RS232 通信端口或 RS485 通信端口。

CPU 通信端口引脚分配

1.S7-200 SMART CPU 集成的 RS485 通信端口（端口0）是与 RS485 兼容的9针 D 型连接器。CPU 集成的 RS485 通信端口的引脚分配如表1. S7-200 SMART CPU 集成 RS485 端口的引脚分配表所示。
表1. S7-200 SMART CPU 集成 RS485 端口的引脚分配

连接器 | 引脚标号 | 信号 | 引脚定义
 | 1 | 屏蔽 | 机壳接地
 | 2 | 24V 返回 | 逻辑公共端
 | 3 | RS-485 信号 B | RS-485 信号 B
 | 4 | 发送请求 | RTS （TTL）
 | 5 | 5V 返回 | 逻辑公共端
 | 6 | + 5V | +5 V，100 Ω 串联电阻
 | 7 | +24V | +24 V
 | 8 | RS-485 信号 A | RS-485 信号 A
 | 9 | 不适用 | 10 位协议选择（输入）
 | 外壳 | 屏蔽 | 机壳接地

2.标准型 CPU 额外支持 SB CM01 信号板，该信号板可以通过 STEP 7-Micro/WIN SMART 软件组态为 RS485通信端口或者 RS232 通信端口。表 2. 给出了 SB CM01 信号板的引脚分配 。
表2. S7-200 SMART SB CM01 信号板端口（端口1）的引脚分配表

连接器 | 引脚标号 | 信号 | 引脚定义
 | 1 | 接地 | 机壳接地
 | 2 | Tx/B | RS232-Tx/RS485-B
 | 3 | 发送请求 | RTS （TTL）
 | 4 | M接地 | 逻辑公共端
 | 5 | Rx/A | RS232-Rx/RS485-A
 | 6 | + 5V | +5 V，100 Ω 串联电阻

使用STEP 7-Micro/WIN SMART 软件组态 SB CM01 信号板为 RS485通信端口或者RS232通信端口的过程如图 1. SB CM01 信号板组态过程所示。

图1. SB CM01 信号板组态过程

EM DP01通讯端口引脚分配

EM DP01 上的 RS485 串行通信接口是一个 RS485 兼容的九针迷你 D型插口，与欧洲标准 EN 50170 规定的 PROFIBUS标准一致，下图介绍了通讯端口的引脚分配。

图 2. S7-200SMART EM DP01通讯端口的引脚分配

以太网端口连接

S7-200 SMART CPU 的以太网端口有两种网络连接方法：直接连接和网络连接。

直接连接 ：

当一个 S7-200 SMART CPU 与一个编程设备、 HMI 或者另外一个 S7-200 SMART CPU 通信时，实现的是直接连接。直接连接不需要使用交换机，使用网线直接连接两个设备即可，如图2.通信设备的直接连接所示。

图 3. 通信设备的直接连接

网络连接 ：

当两个以上的通信设备进行通信时，需要使用交换机来实现网络连接。可以使用导轨安装的西门子 CSM1277 4端口交换机来连接多个 CPU 和 HMI 设备，如图 3. 多个通信设备的网络连接所示。

图 4.多个通信设备的网络连接

RS485 网络连接

RS485 网络的传输距离和波特率

RS485 网络为采用屏蔽双绞线电缆的线性总线网络，总线两端需要终端电阻。RS485 网络允许每一个网段的最大通信节点数为 32 个，允许的最大电缆长度则由通信端口是否隔离以及通信波特率大小等两个因素所决定，见表 3. RS485 网段电缆的最大长度所示。
表 3. RS485 网段电缆的最大长度

波特率（bit/s） | S7-200 SMART CPU 端口 | 隔离型 CPU 端口
9.6K~187.5K | 50m | 1000m
500K | 不支持 | 400m
1M~1.5M | 不支持 | 200m
3M~12M | 不支持 | 100m

S7-200 SMART CPU 集成的 RS485 端口以及 SB CM01 信号板都是非隔离型通信端口，允许的最大通信距离为 50m，该距离为网段中第一个通信节点到最后一个节点的距离。如果网络中的通信节点数大于 32 个或者通信距离大于 50m 则需要添加 RS485 中继器拓展网络连接。
注意：
● S7-200 SMART CPU 集成的 RS485 端口以及 SB CM01 信号板都是非隔离型，与网段中其它节点通信时需要做好参考点电位的等电位连接或者使用 RS485 中继器为网络提供隔离。参考点电位不同的节点通信时可能会导致通信错误或者端口烧坏。
● S7-200 SAMRT CPU 与其它节点联网时，可以将 CPU 模块右下角的传感器电源的 M 端与其它节点通信端口的 0V 参考点连接起来做到等电位连接。

RS485 中继器

RS485 中继器可用于延长网络距离，电气隔离不同网段以及增加通信节点数量。中继器的作用如下：
1.延长网络距离：
网络中添加中继器允许将网络再延长 50m ，如果两台中继器连接在一起，中间无其它节点，则可将网络延长 1000m ，一个网络中最多可以使用 9 个西门子中继器。如图 4. 使用 RS485 中继器拓展网络所示。

图 5. 使用 RS485 中继器拓展网络

注意：
S7-200 SMART CPU自由口通信、Modbus RTU通信和USS通信时，不能使用西门子中继器拓展网络。

2.电气隔离不同网段：
隔离网络可以使参考点电位不相同的网段相互隔离，从而确保通信传输质量。

3.增加网络设备：
在一个 RS485 网段中，最多可以连接 32 个通信节点。使用中继器可以向网络中拓展一个网段，可以再连接 32 个通信节点，但是中继器本身也占用一个通信节点位置，所以拓展的网段只能再连接 31 个通信节点。

RS485 网络连接器

西门子提供了两种类型的 RS485 网络连接器（如图 5. RS485网络连接器所示），可使用它们轻松地将多台通信节点连接到通信网络上。一种是标准型网络连接器，另一种则增加了可编程接口。带有可编程接口的网络连接器可以将 S7-200 SMART CPU 集成的 RS485 端口所有通信引脚扩展到编程接口，其中 2 号、7 号引脚对外提供 24VDC电源，可以用于连接 TD400C 。

图 6. RS485网络连接器

网络连接器上两组连接端子，用于连接输入电缆和输出电缆。网络连接器上具有终端和偏置电阻的选择开关，网络两端的通信节点必须将网络连接器的选择开关设置为 On ，网络中间的通信节点需要将选择开关设置为 Off 。典型的网络连接器终端电阻和偏置电阻接线如表 4. 网络连接器终端和偏置电阻所示。
表 4. 网络连接器终端和偏置电阻

使用 SB CM01 信号板可用于连接 RS485 网络，当信号板为终端通信节点时需要接终端电阻和连接偏置电阻，典型的电路图如图 6. SB CM01 信号板终端和偏置电阻接线图所示。

图 7. SB CM01 信号板终端和偏置电阻接线
注意：
● 终端电阻用于消除通信电缆中由于特性阻抗不连续而造成的信号反射。信号传输到网络末端时，如果电缆阻抗很小或者没有阻抗的话，在这个地方就会引起信号反射。消除这种反射的方法，就是在网络的两端端接一个与电缆的特性阻抗相同的终端电阻，使电缆阻抗连续。
● 当网络上没有通信节点发送数据时，网络总线处于空闲状态，增加偏置电阻可使总线上有一个确定的空闲电位，保证了逻辑信号 “0”、“1” 的稳定性。

RS232 连接

RS232 网络为两台设备之间的点对点连接，最大通信距离为15m，通信速率最大为 115.2 Kbit/s 。RS232 连接可用于连接扫描器、打印机、调制解调器等设备。SB CM01 信号板通过组态可以设置为 RS232 通信端口，典型的 RS232 接线方式如图 7. SB CM01 信号板 RS232 连接图所示。

图 8. SB CM01 信号板 RS232 连接


RS485网络的硬件连接

工业以太网连接器

在S7-200 SMART CPU 本体集成了一个RJ45以太网端口，该端口连接到工业以太网网络中需要以下主要部件：

● 工业以太网电缆：电缆型号有多种，其中最常用通信电缆为IE FC TP标准电缆GP 2×2（订货号6XV1 840-2AH10）
● 网络连接器：网络连接器也有多种形式，如出线角度不同等等

IE FC RJ45 Plug 2x2

工业以太网 FC RJ45 Plug 2x2 用于直接连接长达 100m 的 IE FC 2x2 电缆而不使用接插工艺。
4个集成的夹紧-穿刺接线柱使得 IE FC 2x2 电缆(100MBit/s)的连接简单而可靠。打开插头外壳后， 触点盖板上的彩色标记可方便用户将电缆中的导线连接到IDC插针。
表1.FC RJ45 Plug 2x2型号

型号 | IE FC RJ45 Plug 180 2x2 | E FC RJ45 Plug 90 2x2 | IE FC RJ45 Plug 145 2x2
图片 |  |  |
订货号 | 6GK1901-1BB10-2AA0(1件) 6GK1901-1BB10-2AB0(10件) 6GK1901-1BB10-2AE0(50件) | 6GK1901-1BB20-2AA0(1件) 6GK1901-1BB20-2AB0(10件) 6GK1901-1BB20-2AE0(50件) | 6GK1901-1BB30-0AA0(1件) 6GK1901-1BB30-0AB0(10件) 6GK1901-1BB30-0AE0(50件)

制作非交叉电缆时 IE FC RJ45 Plug 2x2 的针脚分配和 IE FC 2x2 电缆四种颜色导线之间的对应关系如表2所示。
表2.IE FC RJ45 Plug针脚分配

针脚序号 | 导线颜色 | 功能
1 | 黄 | Tx+
2 | 橙 | Tx-
3 | 白 | Rx+
6 | 蓝 | Rx-

IE FC RJ45 Plug 4x2

工业以太网 FC RJ45 Plugs 4x2 用于直接连接长达 85m 的 IE FC 4x2 (AWG24) 标准电缆(订货号：6XV1 878-2A)和长达 55m 的 IE FC 4x2 (AWG24) 柔性电缆(订货号：6XV1 878-2B)。
8个集成的夹紧-穿刺接线柱使得 IE FC 4x2 和 2x2 电缆的连接简单而可靠。 打开插头外壳后， 触点盖板上的彩色标记可方便用户将电缆中的导线连接到IDC插针。
表3.FC RJ45 Plug 4x2型号

型号 | IE FC RJ45 Plug 180 4x2
图片 |
订货号 | 6GK1901-1BB11-2AA0(1件) 6GK1901-1BB11-2AB0(10件) 6GK1901-1BB11-2AE0(50件)

制作非交叉电缆时 IE FC RJ45 Plug 4x2 的针脚分配和 IE FC 4x2 电缆8种颜色导线之间的对应关系如表4所示。
表4.IE FC RJ45 Plug 4x2针脚分配

针脚序号 | 导线颜色 | 1000BaseT 功能 | 10BaseT, 100BaseTX 功能
1 | 绿 / 白 | D1+ | Tx+
2 | 绿 | D1- | Tx-
3 | 橙 / 白 | D2+ | Rx+
4 | 蓝 | D3+ | -
5 | 蓝 / 白 | D3- | -
6 | 橙 | D2- | Rx-
7 | 棕 / 白 | D4+ | -
8 | 棕 | D4- | -


RS485网络的硬件连接

RS-485网络连接器

在S7-200 SMART系统中，无论是组成PPI通信、还是自由口通信，用到的主要部件都是一样的：

  • PROFIBUS电缆：电缆型号有多种，其中最基本的是PROFIBUS FC（Fast Connect快速连接）Standard电缆（订货号6XV1 830-0EH10）
  • PROFIBUS网络连接器：网络连接器也有多种形式，如出线角度不同等等

连接网络连接器

A. 电缆和剥线器。使用FC技术不用剥出裸露的铜线。

图1. 剥好一端的PROFIBUS电缆与快速剥线器（FCS，订货号6GK1905-6AA00）。

B. 打开PROFIBUS网络连接器。首先打开电缆张力释放压块，然后掀开芯线锁。

图2. 打开的PROFIBUS连接器

C. 去除PROFIBUS电缆芯线外的保护层，将芯线按照相应的颜色标记插入芯线锁，再把锁块用力压下，使内部导体接触。应注意使电缆剥出的屏蔽层与屏蔽连接压片接触。

图3. 插入电缆

由于通信频率比较高，因此通信电缆采用双端接地。电缆两头都要连接屏蔽层。

D. 复位电缆压块，拧紧螺丝，消除外部拉力对内部连接的影响。

网络连接器

网络连接器主要分为两种类型：带和不带编程口的。不带编程口的插头用于一般联网，带编程口的插头可以在联网的同时仍然提供一个编程连接端口，用于编程或者连接HMI等。

图4. 左侧为不带编程口的网络连接器（订货号：6ES7 972-0BA52-0XA0）
右侧的是带编程口的网络连接器（订货号：6ES7 972-0BB52-0XA0）

线型网络结构

通过PROFIBUS电缆连接网络插头，构成总线型网络结构。

图5. 总线型网络连接

在上图中，网络连接器A、B、C分别插到三个通信站点的通信口上；电缆a把插头A和B连接起来，电缆b连接插头B和C。线型结构可以照此扩展。

注意圆圈内的“终端电阻”开关设置。网络终端的插头，其终端电阻开关必须放在“ON”的位置；中间站点的插头其终端电阻开关应放在“OFF”位置。


S7-200 SMART Ethernet Communication

S7-200 SMART CPU之间的以太网通信

S7-200 SMART CPU 固件版本 V2.0 及以上版本的 CPU 可实现CPU、编程设备和HMI（触摸屏）之间的多种通信：
— CPU与编程设备之间的数据交换。
— CPU与HMI之间的数据交换。
— CPU与其他S7-200 SMART CPU之间的PUT/GET通信。

S7-200 SMART CPU 以太网连接资源如下：
— 1个连接用于与STEP7 Micro/Win SMART软件的通信。
— 8个连接用于CPU与HMI之间的通信。
— 8个连接用于CPU与其他S7-200 SMART CPU之间的PUT/GET主动连接
— 8个连接用于CPU与其他S7-200 SMART CPU之间的PUT/GET被动连接

PUT/GET 指令格式

S7-200 SMART CPU提供了PUT/GET 指令，用于S7-200 SMART CPU之间的以太网通信（PUT/GET 指令格式见 表 1）。PUT/GET 指令只需要在主动建立连接的 CPU 中调用执行，被动建立连接的 CPU不需要进行通信编程。PUT/GET 指令中TABLE 参数用于定义远程CPU的 IP地址、本地CPU和远程 CPU的数据区域以及通信长度（TABLE 参数定义见 表 2）。

表 1 PUT和GET 指令：

LAD/FBD | STL | 描述
 | PUT TABLE | PUT 指令启动以太网端口上的通信操作，将数据写入远程设备。PUT 指令可向远程设备写入最多 212 个字节的数据。
 | GET TABLE | GET 指令启动以太网端口上的通信操作，从远程设备获取数据。GET 指令可从远程设备读取最多 222 个字节的数据。

表 2 PUT和GET 指令的TABLE参数定义：

字节偏移量 | Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0
0 | D1 | A2 | E3 | 0 | 错误代码4
1 | 远程 CPU的 IP地址
2
3
4
5 | 预留（必须设置为0）
6 | 预留（必须设置为0）
7 | 指向远程 CPU 通信数据区域的地址指针 （允许数据区域包括：I、Q、M、V）
8
9
10
11 | 通信数据长度5
12 | 指向本地 CPU 通信数据区域的地址指针 （允许数据区域包括：I、Q、M、V）
13
14
15

1 D ：通信完成标志位，通信已经成功完成或者通信发生错误。
2 A ：通信已经激活标志位。
3 E ：通信发生错误，错误原因需要查询 错误代码4。
4 错误代码 ：见表 3 PUT 和 GET 指令TABLE 参数的错误代码。
5 通信数据长度 ：需要访问远程 CPU通信数据的字节个数，PUT 指令可向远程设备写入最多 212 个字节的数据，GET 指令可从远程设备读取最多 222 个字节的数据。

表 3 PUT 和 GET 指令TABLE 参数的错误代码：

错误代码

描述

0

通信无错误

1
PUT/GET TABLE参数表中存在非法参数：
  • 本地CPU通信区域不包括 I、Q、M 或 V。
  • 本地CPU不足以提供请求的数据长度。
  • 对于 GET指令数据长度为零或大于 222 字节；对于 PUT指令数据长度大于 212 字节。
  • 远程CPU通信区域不包括 I、Q、M 或 V。
  • 远程CPU 的IP 地址是非法的 (0.0.0.0)。
  • 远程CPU 的IP 地址为广播地址或组播地址。
  • 远程CPU 的IP 地址与本地 CPU的IP 地址相同
  • 远程CPU 的IP 地址位于不同的子网。

2

同一时刻处于激活状态的 PUT/GET 指令过多（仅允许 16 个）

3

无可以连接资源，当前所有的连接都在处理未完成的数据请求（S7-200 SAMRT CPU主动连接资源数为 8 个）。

4
从远程 CPU 返回的错误：
  • 请求或发送的数据过多。
  • STOP 模式下不允许对 Q 存储器执行写入操作。
  • 存储区处于写保护状态

5
与远程 CPU 之间无可用连接：
  • 远程 CPU 无可用的被动连接资源（S7-200 SMART CPU被动连接资源数为 8 个）。
  • 与远程 CPU 之间的连接丢失（远程 CPU 断电或者物理断开）。

6-9

预留

通信资源数量

S7-200 SMART CPU 以太网端口含有 8 个PUT/GET 主动连接资源和 8 个PUT/GET 被动连接资源。例如：CPU1 调用 PUT/GET 指令与 CPU2 ~ CPU9 建立8主动连接的同时，可以与 CPU10 ~ CPU17 建立8被动连接（CPU10 ~ CPU17 调用 PUT/GET 指令），这样的话 CPU1 可以同时与16台 CPU（CPU2 ~ CPU17）建立连接。关于主动连接资源和被动连接资源的详细解释如下：

1、主动连接资源和被动连接资源
  • 调用 PUT/GET 指令的CPU 占用主动连接资源数；相应的远程 CPU 占用被动连接资源。
2、8 个PUT/GET 主动连接资源
  • S7-200 SMART CPU 程序中可以包含远多于 8个PUT/GET 指令的调用，但是在同一时刻最多只能激活 8 个 PUT/GET 连接资源。
  • 同一时刻对同一个远程 CPU 的多个 PUT/GET 指令的调用，只会占用本地 CPU的一个主动连接资源和远程 CPU的一个被动连接资源。本地 CPU 与远程 CPU之间只会建立一条连接通道，同一时刻触发的多个 PUT/GET 指令将会在这条连接通道上顺序执行。
  • 同一时刻最多能对8个不同 IP 地址的远程 CPU 进行 PUT/GET 指令的调用，第9个 远程CPU的PUT/GET 指令调用将报错，无可用连接资源。已经成功建立的连接将被保持，直到远程 CPU断电或者物理断开。
3、8 个PUT/GET 被动连接资源
  • S7-200 SMART CPU 调用 PUT/GET 指令，执行主动连接的同时也可以被动地被其他远程 CPU 进行通信读写。
  • S7-200 SMART最多可以与被8个不同 IP 地址的远程 CPU 进行 建立被动连接。已经成功建立的连接将被保持，直到远程 CPU断电或者物理断开。

指令编程举例

在下面的例子中，CPU1 为主动端，其 IP 地址为192.168.2.100，调用 PUT/GET 指令；CPU2 为被动端，其 IP 地址为192.168.2.101，不需调用 PUT/GET 指令，网络配置见图 1 。通信任务是把 CPU1 的实时时钟信息写入 CPU2 中，把CPU2 中的实时时钟信息读写到 CPU1 中。

图 1 CPU通信网络配置图

1、CPU1 主动端编程

CPU1 主程序中包含读取 CPU 实时时钟、初始化 PUT/ GET 指令的 TABLE 参数表、调用 PUT 指令和 GET 指令等。

网络1：读取 CPU1 实时时钟，存储到 VB100 ~ VB107 。

图 2 读取 CPU1 实时时钟

注：READ_RTC 指令用于读取 CPU 实时时钟指令，并将其存储到从字节地址 T 开始的 8 字节时间缓冲区中，数据格式为 BCD 码。

网络2：定义 PUT 指令 TABLE 参数表，用于将 CPU1 的VB100 ~ VB107 传输到远程 CPU2 的VB0 ~ VB7。

图 3 定义 PUT 指令 TABLE 参数表

  • a.定义通信状态字节
  • b.定义 CPU2 IP 地址
  • c.定义 CPU2 的通信区域 ，从 VB0 地址开始
  • d.定义通信数据长度
  • e.定义 CPU1 的通信区域，从 VB100 地址开始
网络3：定义 GET 指令 TABLE 参数表，用于将远程 CPU2 的VB100 ~ VB107 读取到 CPU1 的 VB0 ~ VB7。

图 4 定义 GET 指令 TABLE 参数表

  • a.定义通信状态字节
  • b.定义 CPU2 IP 地址
  • c.定义 CPU2 的通信区域 ，从 VB100 地址开始
  • d.定义通信数据长度
  • e.定义 CPU1 的通信区域，从 VB0 地址开始
网络4：调用 PUT 指令和 GET 指令。

图 5 调用 PUT 指令和 GET 指令

2、CPU2 被动端编程

CPU2 的主程序只需包含一条语句用于读取 CPU2 的实时时钟，并存储到 VB100 ~ VB107，如图 6 所示。

图 6 读取 CPU2 实时时钟

PUT/GET指令例程

为了更好地理解 PUT/GET指令的使用，可参考下面的例程。

PUT_GET_Client

PUT_GET_Server

注意：此指令库/程序的作者和拥有者对于该软件的功能性和兼容性不负任何责任。使用该软件的风险完全由用户自行承担。由于它是免费的，所以不提供任何担保，错误纠正和热线支持，用户不必为此联系西门子技术支持与服务部门。


S7-200 SMART CPU PUT/GET Wizard

S7-200 SMART CPU PUT/GET 向导

在 S7-200 SMART CPU 之间以太网通信 章节中 CPU1 的PUT/GET 指令的编程可以使用 PUT/GET 向导以简化编程步骤。该向导最多允许组态 16 项独立 PUT/GET 操作，并生成代码块来协调这些操作。

PUT/GET 向导编程步骤

1、STEP 7 Micro/WIN SMART 在“工具” 菜单的“向导”区域单击“Get/Put”按钮，启动 PUT/GET 向导（见图 1）。

图 1 启动 PUT/GET 向导

2、在弹出的“Get/Put”向导界面中添加操作步骤名称并添加注释（见图 2）。

图 2 添加 PUT/GET 操作

  • a. 点击“添加”按钮，添加PUT/GET 操作
  • b. 为每个操作创建名称并添加注释
3、定义PUT/GET 操作（见图 3 、图 4）。

图 3 定义 PUT 操作

  • a. 选择操作类型，PUT 或 GET
  • b. 通信数据长度
  • c. 定义远程 CPU 的 IP 地址
  • d. 本地 CPU 的 通信区域和起始地址
  • e. 远程 CPU 的 通信区域和起始地址

图 4 定义 GET 操作

  • a. 选择操作类型，PUT 或 GET
  • b. 通信数据长度
  • c. 定义远程 CPU 的 IP 地址
  • d. 本地 CPU 的 通信区域和起始地址
  • e. 远程 CPU 的 通信区域和起始地址
4、定义PUT/GET 向导存储器地址分配（见图 5）。

图 5 分配存储器地址

注： 点击“建议”按钮向导会自动分配存储器地址。需要确保程序中已经占用的地址、PUT/GET 向导中使用的通信区域与不能存储器分配的地址重复，否则将导致程序不能正常工作。

5、在 图 5 中点击“生成”按钮将自动生成网络读写指令以及符号表。只需用在主程序中调用向导所生成的网络读写指令即可（见图 6）。

图 6 主程序中调用向导生成的网络读写指令

PUT/GET 向导例程

为了更好地理解 PUT/GET向导的使用，可参考下面的例程。

S7_Wizard_Client

S7_Wizard_Server

注意：此指令库/程序的作者和拥有者对于该软件的功能性和兼容性不负任何责任。使用该软件的风险完全由用户自行承担。由于它是免费的，所以不提供任何担保，错误纠正和热线支持，用户不必为此联系西门子技术支持与服务部门。


S7-200 SMART Ethernet FAQ

常见问题

1、S7-200 SMART CPU以太网通信端口支持哪些通信协议，是否支持TCP、UDP和ISO on TCP等开放式用户通信或Modbus TCP通信？

S7-200 SMART CPU以太网通信端口从V2.2固件支持TCP、UDP和ISO on TCP等开放式用户通信及Modbus TCP通信。

2、S7-200 SMART CPU标准型和紧凑型产品是否都支持 GET/PUT 通信？

S7-200 SMART CPU 全系列产品都支持 GET/PUT 通信。但是固件版本低于 V2.0 的产品不支持 GET/PUT 通信，CPU 固件可以通过 Micro SD 卡进行升级。

3、S7-200 SMART CPU在同一时刻能否对同一个远程 CPU 调用多于 8 个 GET/PUT 指令？

同一时刻对同一个远程 CPU 可以调用多于 8 个 GET/PUT 指令。同一时刻对同一个远程 CPU 调用多个 GET/PUT 指令只会占用 1 个GET/PUT 主动连接资源，而不是 8 个主动连接资源。

4、为什么有些第三方触摸屏不能与 STEP 7-Micro/WIN SMART 软件同时访问 S7-200 SMART CPU？

虽然S7-200 SMART CPU 以太网端口具有 25 个连接资源，但是其中只有 1 个连接资源（PG连接资源）用于与 STEP 7-Micro/WIN SMART 软件的通信。如果第三方触摸屏与S7-200 SMART CPU的连接也使用 PG连接资源，就会造成第三方触摸屏不能与 STEP 7-Micro/WIN SMART 软件同时访问 S7-200 SMART CPU。

5、GET/PUT 指令可以传送的最大用户数据是多少？

GET 指令可从远程站点读取最大 222 个字节的用户数据，PUT 指令可向远程站点写入最大 212 个字节的用户数据；大数据量的用户数据通信可以调用多个 GET/PUT 指令来实现。采用 GET/PUT 向导时每个操作的读写用户数据的最大个数为 200 个字节。

6、GET/PUT 通信错误有哪些可能原因？

GET/PUT 指令 TABLE 参数表的第一个字节提供了“错误代码”，用于排查错误原因。GET/PUT 指令故障可能原因：
● S7-200 SMART CPU 固件版本较低，通信双方 CPU 固件都需要 V2.0 及以上版本。
● 超出了本地 CPU 主动连接资源限制或远程 CPU 无可用的被动连接资源。
● GET/PUT 指令 TABLE 参数定义错误。
● 通信站点之间的物理连接出错。


S7-200 SMART Communicate with S7-1200

S7-200 SMART CPU与S7-1200进行S7通信

S7通信是S7系列PLC基于MPI、PROFIBUS、ETHERNET网络的一种优化的通信协议，主要用于S7-300/400PLC之间的通信。
经过测试发现S7-1200与S7-200 SMART PLC 之间的S7通信也是可以成功的，S7-1200侧编程调用PUT/GET指令或者S7-200 SMART侧编程调用PUT/GET指令都是可以的。

注意：
1.S7-200 SMART CPU 与S7-1200 之间的S7通信未经西门子官方测试，本文档仅供客户测试使用，使用该种通信方式所产生的任何危险需要有客户自己承担！
2.S7-200 SMARTPLC V2.0 版本才开始支持PUT/GET通信，V1.0版本的CPU需要升级固件后方可支持PUT/GET。
3.本文只介绍了S7-1200侧调用PUT/GET指令编程方式（S7-200 SMART CPU作为服务器方，无需编程），未介绍S7-200 SMART侧编程调用PUT/GET方式。

硬件和软件需求及所完成的通信任务

本文以采用1个CPU1215C(6ES7215-1AG40-0AB0)，1个S7-200 SMART PLC为例，介绍它们之间的S7通信。
硬件：
① S7-1200 CPU
② S7-200 SMART CPU (固件V2.0)
③ PC （带以太网卡）
④ TP以太网电缆
软件：
① STEP7 V13 SP1
② STEP 7 Micro/WIN SMART V2.1
所完成的通信任务：
① S7-1200 将通信数据区 DB1 中的200 个字节发送到 S7-200 SMART的VB 数据区。
② S7-1200 读取 S7-200 SMART中的VB数据区存储到S7-1200 的数据区DB2 。

S7-1200侧硬件组态和网络组态

1. 使用TIA V13 软件新建一个项目，添加1个S7-1200站点并为其分配网络和IP地址 ，如图1.所示。

图1. TIA 软件中添加S7-1200站点

2. TIA 软件的网络视图中为S7-1200 CPU 添加一个新连接，如图2.所示。

图2.S7-1200 添加新连接
在弹出"创建新连接"对话框中选择"未指定"，然后点击"添加"按钮，添加新连接，如图3.所示。

图3.选择未指定连接

需要为新创建的连接指定连接伙伴方的IP地址和TSAP，设置方法如图4.，图5.所示。
注意：S7-200 SMART 侧的TSAP 只能设置为03.00 或者03.01 。

图4. 设置连接伙伴方IP地址

图5. 设置连接伙伴方TSAP地址

TIA软件程序编程

1 .创建发送数据块DB1（接收区数据块DB2类似），数据块定义为200个字节的数组且数据块的属性中需要取消"优化的块访问"选项，如图6. 所示。

图6. 创建数据块并取消优化访问

2.发送数据块与接收数据块创建完成后，即可在OB1中调用PUT/GET指令，进行S7通信了，如图7.所示。

图7.调用PUT/GET指令

表1.PUT 指令参数说明

CALL “PUT” | , %DB3 | //调用 PUT，使用背景DB块：DB3
REQ | ：=%M0.0 | //上升沿触发程序块的调用
ID | ：=W#16#0100 | //连接号，要与连接配置中一致，创建连接时的连接号，见图1.标记7
DONE | ：=%M2.0 | // 为1时，发送完成
ERROR | ：=%M2.1 | // 为1时，有故障发生
STATUS | ：=%MW4 | // 状态代码
ADDR_1 | ：=P#DB1.DBX0.0 BYTE 200 | // 发送到通信伙伴数据区的地址，对应S7-200 SMART VB0-VB199
SD_1 | ：=P#DB1.DBX0.0 BYTE 200 | // 本地发送数据区

表2.GET指令参数说明

CALL “GET” | , %DB4 | //调用 GET，使用背景DB块：DB4
REQ | ：=%M0.1 | //系统时钟 2秒脉冲
ID | ：=W#16#0100 | //连接号，要与连接配置中一致，创建连接时的连接号，见图1.标记7
NDR | ：=%M2.2 | //为1时，接收到新数据
ERROR | ：=%M2.3 | //为1时，有故障发生
STATUS | ：=%MW6 | //状态代码
ADDR_1 | ：=P#DB1.DBX200.0 BYTE 200 | //从通信伙伴数据区读取数据的地址，对应S7-200 SMART VB200-VB399
RD_1 | ：=P#DB2.DBX0.0 BYTE 200 | //本地接收数据地址

综合以上步骤，已经完成了S7-1200 硬件和软件部分的编程，下载只需要将程序下载到S7-1200 PLC 即可。

状态监控

1.连接状态监控
S7连接成功的建立是调用PUT/GET指令的基础，S7连接成功建立后，方能正确执行PUT/GET指令。
在TIA 软件的网络视图中，将软件切换到在线模式，可以监控S7连接状态，如图8.所示。

图8.监控S7连接状态

S7连接成功建立后，S7-1200 触发PUT/GET指令，通过TIA 软件监控表和STEP 7 Micro/WIN SMART 软件的状态表，可以监控数据通信是否正常。

注意：S7-200 SMART中V区对应于DB1，即在PUT指令中使用的通信伙伴数据区ADDR_1=P#DB1.DBX0.0 BYTE 200在S7-200 SMAR中对于为VB0~VB199。
本文档中S7-200 SMART 做S7通讯的服务器，占用S7-200 SMART PLC 的服务器连接资源，S7-200 SMART PLC 本身不需要编写通讯程序。
S7-1200 与S7-200 SMART S7 通讯的另外一种方法是S7-200 SAMRT PLC做客服端，S7-1200做服务器。该方式需要S7-200 SMART调用PUT/GET指令，S7-1200侧不需要编写通讯程序。
该方式比较简单，本文档不做介绍。


S7-200 SMART Communicate with S7-300

S7-200 SMART CPU与S7-300/400以太网接口进行S7通信

S7通信是S7系列PLC基于MPI、PROFIBUS、ETHERNET网络的一种优化的通信协议，主要用于S7-300/400PLC之间的通信。
经过测试发现S7-300/400通过集成的PN口或CP343-1/CP443-1与S7-200 SMART PLC 之间的S7通信也是可以成功的， 但是需要S7-300/400侧编程调用PUT/GET指令。

注意：
1.S7-200 SMART CPU 与S7-300/400 CPU 之间的S7通信未经西门子官方测试，本文档仅供客户测试使用，使用该种通信方式所产生的任何危险需要有客户自己承担！
2.S7-200 SMARTPLC V2.0 版本才开始支持PUT/GET通信，V1.0版本的CPU需要升级固件后方可支持PUT/GET。
3. S7-300/400若采用CP通信时，则需要采用Standard或Advanced类型通信模块，CP343-1 Lean模块不支持。
4.本文仅介绍S7-300集成PN口与S7-200 SMART CPU S7通信。

S7通信介绍

S7通信是S7系列PLC基于MPI、PROFIBUS、ETHERNET网络的一种优化的通信协议，主要用于S7-300/400PLC之间的通信。
S7-300/400通过以太网接口与S7-200 SMART PLC 之间的S7通讯经过测试是可以成功的，但是需要S7-300/400侧编程调用PUT/GET指令，见表1所示。
表 1 PUT和GET ：

S7-400 | S7-300 | 描述 | 简要描述
SFB 14 | FB 14 | 读数据 | 单边编程读访问。
SFB 15 | FB 15 | 写数据 | 单边编程写访问。

S7-300/400根据使用通信接口（集成的PN口或CP343-1/CP443-1）不同，调用的功能块来源也不同。
通信接口为S7-300 集成PN接口时，需要使用Standard Library中PUT/GET指令，如图1所示。

图1 S7-300PN接口需采用Standard Library

通信接口为S7-300 CP通信模块时，需要使用SIMATIC_NET_CP 库中PUT/GET指令，如图2所示。

图2 S7-300 CP模块接口需采用SIMATIC_NET_CP库

S7-400 CPU不区分通信接口，需要使用System Function Blocks 中的SFB14/SFB15指令块，如图3所示。

图3 S7-400 需采用SFB程序块

硬件及网络组态

本文以采用1个315-2PN/DP，1个S7-200 SMART PLC为例，介绍它们之间的S7通信。
在STEP7中创建一个新项目，项目名称为S7-300-SMART。插入1个S7-300站，在硬件组态中插入CPU 315-2 PN/DP。如图4所示。

图4 STEP7 项目中插入S7-300站点

设置CPU 315-2PN/DP的IP地址：192.168.0.1，如图5所示。硬件组态完成后，即可下载该组态。

图5 设置CPU PN IP地址

打开“NetPro”设置网络参数，选中CPU 315-2PN/DP，在连接列表中建立新的连接。步骤如图6所示。

图6 NetPro组态视图中插入新连接

选择 Unspecified 站点，选择通讯协议 S7 connection，点击 Apply，如图7所示。

图7 组态新连接

在弹出的S7 connection属性对话框中，勾选 Establish an active connection,设置Partner address:192.168.0.2(S7-200 SMART PLC IP 地址)，如图8所示。

图8 设置S7连接参数
点击 "Address Details" ，再弹出来的对话框设置 Partner 的 Slot 为1，如图9所示。点击 OK即可关闭该对话框。

图9 设置“address details”参数

网络组态创建完成后，需要编译，如图10所示。

图10 保存并编译连接

网络组态编译无错，鼠标先点击 CPU 315-2PN/DP ,然后点击下载按钮下载网络组态，步骤如图11所示。

图 11 下载组态连接

程序编程

可以通过SFB/FB 14 "GET"，从远程CPU中读取数据。
S7-300：在REQ的上升沿处读取数据。在REQ的每个上升沿处传送参数ID、ADDR_1和RD_1。在每个作业结束之后，可以分配新数值给ID、ADDR_1和RD_1参数。
S7-400：在控制输入REQ的上升沿处启动SFB。在此过程中，将要读取的区域的相关指针(ADDR_i)发送到伙伴CPU。远程伙伴返回此数据。在下一个SFB/FB调用处，已接收的数据被复制到组态的接收区(RD_i)中。必须要确保通过参数ADDR_i和RD_i定义的区域在长度和数据类型方面要相互匹配。
通过状态参数NDR数值为1来指示此作业已完成。只有在前一个作业已经完成之后，才能重新激活读作业。远程CPU可以处于RUN或STOP工作状态。如果正在读取数据时发生访问故障，或如果数据类型检查过程中出错，则出错和警告信息将通过ERROR和STATUS输出表示。

通过使用SFB/FB 15 "PUT"，可以将数据写入到远程CPU。
S7-300：在REQ的上升沿处发送数据。在REQ的每个上升沿处传送参数ID、ADDR_1和SD_1。在每个作业结束之后，可以给ID、ADDR_1和SD_1参数分配新数值。
S7-400：在控制输入REQ的上升沿处启动SFB。在此过程中，将指向要写入数据的区域(ADDR_i)的指针和数据(SD_i)发送到伙伴CPU。 远程伙伴将所需要的数据保存在随数据一起提供的地址下面，并返回一个执行确认。必须要确保通过参数ADDR_i和SD_i定义的区域在编号、长度和数据类型方面相互匹配。
如果没有产生任何错误，则在下一个SFB/FB调用时，通过状态参数DONE来指示，其数值为1。只有在最后一个作业完成之后，才能再次激活写作业。远程CPU可以处于RUN或STOP模式。如果正在写入数据时发生访问故障，或如果执行检查过程中出错，则出错和警告信息将通过ERROR和STATUS输出表示。
打开SIMATIC 315 PN-1的OB1，在OB1中依次调用FB14，FB15如图12、图13所示：

图12 FB14调用
表2.FB14参数说明 ：

参数 | 描述 | 数据类型 | 存储区 | 描述
REQ | INPUT | BOOL | I、Q、M、D、L | 上升沿触发调用功能块
ID | INPUT | WORD | M、D、常数 | 地址参数ID
NDR | OUTPUT | BOOL | I、Q、M、D、L | 为1时，接收数据成功
ERROR | OUTPUT | BOOL | I、Q、M、D、L | 接收到新数据
STATUS | OUTPUT | WORD | I、Q、M、D、L | 故障代码
S7-300： ADDR_1 S7-400： ADDR_i (1 ≤ i ≤ 4) | IN_OUT | ANY | M、D I、Q、M、D、 T、C | 从S7-200 SMART的数据地址中读取数据;V区数据对应DB1。
S7-300： RD_1 S7-400： RD_i (1 ≤ i ≤ 4) | IN_OUT | ANY | S7-300：M、D S7-400 I、Q、 M、D、T、C | 本站接收数据地址

图13 FB15调用
表3.FB15参数说明 ：

参数 | 描述 | 数据类型 | 存储区 | 描述
REQ | INPUT | BOOL | I、Q、M、D、L | 上升沿触发调用功能块
ID | INPUT | WORD | M、D、常数 | 地址参数
DONE | OUTPUT | BOOL | I、Q、M、D、L | 为1时，发送完成
ERROR | OUTPUT | BOOL | I、Q、M、D、L | 为1时，有故障发生
STATUS | OUTPUT | WORD | I、Q、M、D、L | 故障代码
S7-300： ADDR_1 S7-400： ADDR_i (1 ≤ i ≤ 4) | IN_OUT | ANY | M、D I、Q、M、D、 T、C | 从S7-200 SMART的数据地址中读取数据;V区数据对应DB1。
S7-300： SD_1 S7-400： SD_i (1 ≤ i ≤ 4) | IN_OUT | ANY | S7-300：M、D S7-400 I、Q、 M、D、T、C | 本站发送数据地址

注意：

S7-200 SMART PLC 不需要编程。 S7-200 SMART 中的V存储区在S7-300/400 PLC 编程中以DB1数据块的形式体现。


S7-200 SMART 和S7-200 之间的S7通讯

S7-200 CP243-1 和S7-200 SMART CPU以太网口之间的S7通讯

S7通信是S7系列PLC基于MPI、PROFIBUS、ETHERNET网络的一种优化的通信协议，主要用于S7-300/400PLC之间的通信。
经过测试发现S7-200 通过CP243-1与S7-200 SMART PLC 之间的S7通信也是可以成功的，但是需要S7-200侧作为客户端组态以太网向导。

注意：
1.S7-200 CP243-1 与S7-200 SMART 之间的S7通信未经西门子官方测试，本文档仅供客户测试使用，使用该种通信方式所产生的任何危险需要有客户自己承担！
2.经测试S7-200 SMART PLC V2.1 版本以及以上才支持与S7-200 之间的S7通讯。CPU固件需升级到V2.1以及以上。
3.经测试S7-200 CP243-1侧组态客户端，S7-200 SMART作为服务器才能进行通讯。

硬件和软件需求及所完成的通信任务

本文采用一个S7-200 加上CP243-1，一个S7-200 SMART PLC为例，介绍他们之间的S7通讯。

硬件：
① S7-200 CPU
② CP243-1(6GK7 243-1EX01-0XE0 )
③S7-200 SMART CPU(固件V2.1/V2.2/V2.3)
④ PC (带以太网卡)
⑤ TP以太网电缆

软件：
① STEP 7 Micro/WIN V4.0 SP9
② STEP 7 Micro/WIN SMART V2.3

所完成的通信任务：
① S7-200(192.168.0.102) VB4000的数据发送到 S7-200 SMART(192.168.0.15) 的VB4000 。
② S7-200 (192.168.0.102) VB4001获取S7-200 SMART(192.168.0.15) 的VB4001的数据 。

S7-200侧CP243-1的组态

首先，通过编程电缆使PC机与S7-200的通信，然后选择工具中的以太网向导配置界面，如图1所示：

图 1 以太网向导配置

进入到向导配置界面中，将会看到如图2所示的界面。点击“读取模块”即可读出CP243-1的模块信息，然后双击模块信息，将模块位置添加成功。

图2 模块位置读取

选择模块相匹配的版本，本例中的CP243-1模块型号为6GK7243-1EX01-0XE0，如下图3所示：

图3 模块版本选择

每个CP243-1模块都需要配置一个IP地址，如图3的界面所示。IP地址的设置需要在指定的对话框中进行设置。

图4 IP地址分配界面

点击图3中标注的选项，进入图4界面。在该界面中的IP地址栏内填入IP地址:192.168.0.102，然后点击保存，并退出该界面。

图5 IP地址设定

模块命令字节：CP243-1模块需要占用一个QB字节，该字节的地址不能任意填写，需要进行计算（如果通过自动读取模块位置的方式则会自动计算）。计算的规则就是从CPU本体的输出字节开始计算，依次排列到CP243-1的模块位置即可；

对等链接：组态CP243-1进行S7连接的连接数量的设置，通过S7连接可以与通信伙伴进行读写数据操作。

图6 设定QB字节地址及连接数目

选择此为客户机连接，TSAP是Transport Service Access Point的缩写，表示的是连接资源的地址,与S7-200 SMART通讯可设置为：

1、02.00
2、02.01
3、03.00
4、03.01

本例中设置的为02.00。输入S7-200 SMART 侧的IP地址:192.168.0.15。点击数据传输按钮进入数据交换的定义。

图7 连接设置

选择"数据传输"标记，并单击"新传输"按钮进行配置：选择是读取数据还是写入数据，填写通讯数据的字节个数，填写发送数据区和接收数据区的起始地址。
本例中为将S7-200的VB4000传送到S7-200 SMART CPU的VB4000；
S7-200 VB4001获取S7-200 SMART的VB4001的数据 。

图8 定义数据传输

选择CRC校验,使用缺省的时间间隔30秒,点击下一步按钮。

图9 使用CRC

填写模块所占用的V存储区的起始地址。注意不要和程序中的其他地址冲突。

图10 配置存储区

S7-200侧编程

完成以太网向导配置后需要在程序中调用以太网向导所生成的ETHx_CTRL和ETHx_XFR, 然后，将整个项目下载到S7-200 CPU。
对于S7-200的同一个连接的多个数据传输，不能同时激活，必须分时调用。下面的程序就是用前一个数据传输的完成位去激活下一个数据传输，如图11.图12.图13. 所示

图11 S7-200程序段1

图12 S7-200程序段2

图13 S7-200程序段3

以上描述，可参考例程：

S7-200 客户端以太网轮询例程

S7-200 SMART作为服务器，不需要额外做通讯编程，此处不增加例程，只需注意S7-200 SMART CPU的IP设置为192.168.0.15。

注意：此指令库/程序的作者和拥有者对于该软件的功能性和兼容性不负任何责任。使用该软件的风险完全由用户自行承担。由于它是免费的，所以不提供任何担保，错误纠正和热线支持，用户不必为此联系西门子技术支持与服务部门。

S7-200 SMART的组态

S7-200 SMART 做服务器不用编写任何程序。

图14 设置IP地址

监控结果


S7-200 SMART CPU S7 通信 例程

例程1. S7-200 SMART与S7-200 SMART 之间：PUT/GET 向导例程

为了更好地理解 PUT/GET向导的使用，可参考下面的例程。

S7_Wizard_Client

S7_Wizard_Server

以上例程的详细描述可以参考：S7-200 SMART CPU PUT/GET 向导

例程2. S7-200 SMART与S7-200 SMART 之间：PUT/GET指令例程

为了更好地理解 PUT/GET指令的使用，可参考下面的例程。

PUT_GET_Client

PUT_GET_Server

以上例程的详细描述可以参考：S7-200 SMART CPU PUT/GET 指令编程

例程3. S7-200 SMART与S7-200 之间S7通信例程

注意：
1.S7-200 CP243-1 与S7-200 SMART 之间的S7通信未经西门子官方测试，本文档仅供客户测试使用，使用该种通信方式所产生的任何危险需要有客户自己承担！
2.经测试S7-200 SMART PLC V2.1 版本以及以上才支持与S7-200 之间的S7通讯。CPU固件需升级到V2.1以及以上。
3.经测试S7-200 CP243-1侧组态客户端，S7-200 SMART作为服务器才能进行通讯。

硬件：
① S7-200 CPU
② CP243-1(6GK7 243-1EX01-0XE0 )
③S7-200 SMART CPU(固件V2.1/V2.2/V2.3)
软件：
① STEP 7 Micro/WIN V4.0 SP9
② STEP 7 Micro/WIN SMART V2.3

所完成的通信任务：
① S7-200(192.168.0.102) VB4000的数据发送到 S7-200 SMART(192.168.0.15) 的VB4000 。
② S7-200 (192.168.0.102) VB4001获取S7-200 SMART(192.168.0.15) 的VB4001的数据 。

S7-200 客户端以太网轮询例程

S7-200 SMART作为服务器，不需要额外做通讯编程，此处不增加例程，只需注意S7-200 SMART CPU的IP设置为192.168.0.15。

以上例程的详细描述可以参考：S7-200 SMART与S7-200 之间S7通信

免责声明

本例程仅供参考，程序中的CPU版本、类型可能与用户实际使用不同，用户可能需要先对例子程序做修改和调整，才能将其用于测试。本例程的作者和拥有者对于该例程的功能性和兼容性不负任何责任，使用该例程的风险完全由用户自行承担。由于它是免费的，所以不提供任何担保，错误纠正和热线支持，用户不必为此联系西门子技术支持与服务部门。


SMART之间的TCP通讯

TCP 协议通讯

TCP是一个因特网核心协议。在通过以太网通信的主机上运行的应用程序之间，TCP 提供了可靠、有序并能够进行错误校验的消息发送功能。TCP 能保证接收和发送的所有字节内容和顺序完全相同。TCP 协议在主动设备（发起连接的设备）和被动设备（接受连接的设备）之间创建连接。一旦连接建立，任一方均可发起数据传送。

TCP协议是一种"流"协议。这意味着消息中不存在结束标志。所有接收到的消息均被认为是数据流的一部分。

S7 200 SMART与之间的TCP通讯可以通过两边调用OUC(开放式用户通讯)指令库中的TCP_CONNECT、TCP_SEND、TCP_RECV、DISCONNECT指令来实现。

图1.开放式用户通讯库

开放式用户通信库需要使用 50 个字节的 V 存储器。

开放式的用户通讯连接资源包括8个主动连接和8个被动连接。

只可从主程序或中断例程中调用库函数，但不可同时从这两个程序中调用。

所需条件：

1、软件版本：STEP 7-Micro/WIN SMART V2.2

2、SMART CPU固件版本:V2.2

3、通讯硬件：TP电缆（以太网电缆）

所完成的通讯任务：

将作为客户端的PLC（IP地址为192.168.0.101）中VB0-VB3的数据传送到作为服务器端的PLC(IP地址为192.168.0.102）的VB2000-VB2003中。

S7-200 SMART 客户端编程

1、设置本机IP地址

在客户端设置IP地址为192.168.0.101

图2.设置IP地址

2、建立TCP连接

调用TCP_CONNECT指令建立TCP连接。设置连接伙伴地址为192.168.0.102，远端端口为2001，本地端口为5000，连接标识ID为1。利用SM0.0使能Active，设置为主动连接。

图3.调用TCP_CONNECT指令

指令的参数

输入参数：

EN ：使能输入

Req：沿触发

Active :TURE=主动连接（客户端）

FALSE=被动连接（服务器）

ConnID：连接ID为连接标识符，可能范围为0-65534。

IPaddr1 ... IPaddr4 :IP 地址的四个八位字节。IPaddr1 是 IP 地址的最高有效字节，IPaddr4 是 IP 地址的最低有效字节。

RemPort：远程设备上的端口号。远程端口号范围为 1 到 49151。对于被动连接，可使用零。

LocPort ：本地设备端口号。范围为1-49151，但是存在一些限制。

本地端口号的规则如下：

  • 有效端口号范围为 1 到 49151。
  • 不能使用端口号 20、21、25、80、102、135、161、162、443以及34962至34964。这些端口具有特定用途。
  • 建议采用的端口号范围为 2000 到 5000。
  • 对于被动连接，本地端口号必须唯一（不重复）。

输出参数：

Done：当连接操作完成且没有错误时，指令置位 Done 输出。

Busy： 当连接操作正在进行时，指令置位 Busy 输出。

Error：当连接操作完成但发生错误时，指令置位 Error 输出。

Status：如果指令置位 Error 输出，Status 输出会显示错误代码。具体错误代码对应详见手册。如果指令置位 Busy 或 Done 输出，Status 为零（无错误）。

3、调用发送数据指令TCP_SEND

调用TCP_SEND指令发送以VB0为起始，数据长度为DataLen长度的数据发送到连接ID为1指定的远程设备。

利用1HZ的时钟上升沿触发发送请求。

图4.调用TCP_SEND指令

指令的参数

输入参数：

EN ：使能输入

Req：沿触发

ConnID：连接 ID (ConnID) 是此发送操作的连接ID号。

DataLen ：DataLen 是要发送的字节数（1 到 1024）。

DataPtr：DataPtr 是指向待发送数据的指针。

输出参数：

Done：当连接操作完成且没有错误时，指令置位 Done 输出。

Busy： 当连接操作正在进行时，指令置位 Busy 输出。

Error：当连接操作完成但发生错误时，指令置位 Error 输出。

Status：如果指令置位 Error 输出，Status 输出会显示错误代码。具体错误代码对应详见手册。如果指令置位 Busy 或 Done 输出，Status 为零（无错误）。

4、终止通讯连接

用户可通过DISCONNECT指令终止指定ID的连接。

图5.调用DISCONNECT指令

参数说明：

输入参数：

EN :使能

Req：沿触发指令。

输出参数：

Done：当连接操作完成且没有错误时，指令置位 Done 输出。

Busy： 当连接操作正在进行时，指令置位 Busy 输出。

Error：当连接操作完成但发生错误时，指令置位 Error 输出。

Status：如果指令置位 Error 输出，Status 输出会显示错误代码。具体错误代码对应详见手册。如果指令置位 Busy 或 Done 输出，Status 为零（无错误）。

5、分配库存储区

开放式用户通信库需要使用 50 个字节的 V 存储器，用户需手动分配 。在指令树的程序中，以鼠标右键单击程序块，在弹出的快捷菜单中选择库存储器。如图所示：

图6.库存储器

在弹出的选项卡中设置库指令数据区：

图7.分配地址

S7-200 SMART 服务器端编程

1、设置本机IP地址

设置IP地址为192.168.0.102

图8.设置本机IP地址

2、建立TCP连接

调用TCP_CONNECT指令建立TCP连接。设置连接伙伴地址为192.168.0.101，远端端口为5000，本地端口为2001，连接标识ID为1。利用SM0.0常闭点使能Active，设置为被动连接。

图9.调用TCP_CONNECT指令

3、接收数据

调用TCP_RECV指令接收指定ID连接的的数据。接收的缓冲区长度为MaxLen，数据接收缓冲区以VB2000为起始。

图11.调用TCP_RECV指令

监控结果

其中客户端的VW1000是发送的数据长度，服务器端的vw1000是接收的数据长度。

图12.监控结果

TCP例程

为了更好地理解 TCP的编程，可参考下面的例程。

1. 该例程使用 STEP 7-Micro/WIN SMART 编写。

2.在建立连接时需先触发服务器端的建立连接指令，再触发客户端。

TCP_Client 客户端

TCP_Server 服务器

注意：

此指令库/程序的作者和拥有者对于该软件的功能性和兼容性不负任何责任。使用该软件的风险完全由用户自行承担。由于它是免费的，所以不提供任何担保，错误纠正和热线支持，用户不必为 此联系西门子技术支持与服务部门。


S7-200 SMART之间TCP通信例程

为了更好地理解 TCP的编程，可参考下面的例程。

所需条件：

1、软件版本：STEP 7-Micro/WIN SMART V2.2

2、SMART CPU固件版本:V2.2

3、通讯硬件：TP电缆（以太网电缆）

所完成的通讯任务：

将作为客户端的PLC（IP地址为192.168.0.101）中VB0-VB3的数据传送到作为服务器端的PLC(IP地址为192.168.0.102）的VB2000-VB2003中。

注意：

在建立连接时需先触发服务器端的建立连接指令，再触发客户端。

TCP_Client 客户端

TCP_Server 服务器

以上例程的详细描述可以参考：S7-200 SMART 之间 TCP 通信

免责声明

本例程仅供参考，程序中的CPU版本、类型可能与用户实际使用不同，用户可能需要先对例子程序做修改和调整，才能将其用于测试。本例程的作者和拥有者对于该例程的功能性和兼容性不负任何责任，使用该例程的风险完全由用户自行承担。由于它是免费的，所以不提供任何担保，错误纠正和热线支持，用户不必为此联系西门子技术支持与服务部门。


S7-200 SMART 与 S7-1200 之间 TCP 通信— S7-200 SMART 作为服务器

TCP 协议通信

TCP 通信为面向连接的通信，需要双方都调用指令以建立连接及交换数据。S7-200 SMART 与 S7-1200 通过 TCP 通信，在 S7-1200 调用 T-block 指令 ( TCON, TDISCON, TSEND, TRCV ) ，在 S7-200 SMART 调用 Open User Communication 库指令( TCP_CONNECT,DISCONNECT,TCP_SEND,TCP_RECV) 。双方的发送和接收指令必须成对出现。

客户端：主动建立连接，可以理解为主站 ； 服务器：被动建立连接，可以理解为从站。

注意：

S7-200 SMART 在 CPU 硬件固件及编程软件版本均升级到 V2.2 之后才开始支持开放式通信。编程软件版本低于V2.2，无 Open User Communication 库指令；硬件固件低于 V2.2，硬件不支持开放式通信协议。

S7-200 SMART TCP 连接资源：8个主动连接资源，8个被动连接资源

S7-200 SMART TCP 通信数据量：1024 字节

硬件和软件需求及所完成的通信任务

硬件：
① S7-1200 CPU （IP 地址 192.168.0.100 ；子网掩码 255.255.255.0）
② S7-200 SMART CPU (固件版本V2.2) ( IP 地址 192.168.0.20 ；子网掩码 255.255.255.0）
③ PC （带以太网卡）
④ TP 以太网电缆
软件：
① STEP7 V13 SP1 Upd 9
② STEP 7 Micro/WIN SMART （ 软件版本 V2.2 ）
所完成的通信任务：
① S7-1200 发送 10 个字节数据：（ S7-1200侧 ） DB4.DBB0~DB4.DBB9 --> （ S7- 200 SMART 侧 ） VB2000~VB2009
② S7-1200 接收 10 个字节数据： （ S7-1200 侧 ） DB4.DBB10~DB4.DBB19 <-- ( S7-200 SMART 侧 ） VB0~VB9

S7-1200 侧硬件组态和编程 ( 客户机侧组态编程 )

1. 使用 TIA V13 SP1 Upd 9 软件 Portal 视图中，创建新项目

2. 添加硬件并命名PLC

进入 “项目视图”，在“项目树” 下双击 “添加新设备”，在对话框中选择所使用的 S7-1200 CPU 添加到机架上，命名为 PLC_1 如图1所示

图1. 添加新设备

3. 启用时钟位

为了编程方便，使用 CPU 属性中定义的时钟位，定义方法如下：
在 “项目树” > “PLC_1” > “设备组态” 中，选中 CPU ，然后在下面的属性窗口中，“属性” > “系统和时钟存储器” 下，将时钟位定义在 MB0，如图2所示。
时钟位我们使用 M0.5 ，它是频率为 1 Hz 的脉冲，可以使用它去自动激活发送任务。

图2.启用时钟位

4. 为 PROFINET 通信口分配以太网地址

在 “设备视图”中点击 CPU 上代表 PROFINET 通信口的绿色小方块，在下方会出现 PROFINET 接口的属性，在 “以太网地址” 下分配 S7-1200 CPU 的 IP 地址为 192.168.0.100 ，子网掩码为255.255.255.0，如图3 所示

图3. 分配 IP 地址

5.在S7-1200 中调用建立连接指令，进入 “项目树” > “ PLC_1” > “程序块” > “OB1” 主程序中，从右侧窗口 “指令”> “通信”>“开放式用户通信”下调用 “TCON” 指令，配置连接参数，如图4所示。

图4. 调用TCON指令并配置连接参数

6.创建用于交换数据的全局DB块及定义变量

通过“项目树”>“PLC_1”>“程序块”>“添加新块”，选择“数据块” 创建全局 DB 块，点击“确定” 生成数据块。如图5所示。

图5.添加新块

通过“项目树”>“PLC_1”>“程序块”>点击生成的 “数据块_1” ( DB4 ) ，右键属性，取消勾选“优化的块访问”。如图6所示。

图6.取消勾选优化的块访问

双击生成的 “数据块_1” ( DB4 ) ，定义数组，10 个字节用于发送，10个字节用于接收，然后编译数据块。结果如图7所示。

图7. 定义交换数据区

7.在OB1中调用 TSEND 和 TRCV

指令块位置及调用方法参考 TCON 指令的调用，调用结果如图8所示。

CALL TSEND
, DB3
//调用TSEND，使用背景DB块:DB3
REQ
：M0.5
//使用1Hz的时钟脉冲，上升沿激活发送任务
ID
：1
//连接号，要与连接配置中一致
DATA
：P#DB4.DBX0.0 BYTE 10
// 发送数据区的数据，需要注意DB块要选用绝对寻址
DONE
：M20.0
// 任务执行完成并且没有错误，该位置1
BUSY
：M20.1
// 该位为1，代表任务未完成，不能激活新任务
ERROR
：M20.2
// 通信过程中有错误发生，该位置1
STATUS
：MW22
// 有错误发生时，会显示错误信息号

CALL TRCV
, DB5
//调用TRCV，使用背景DB块:DB5
EN_R
：M1.2
//准备好接受数据 ,常1接收
ID
：1
//连接号，要与连接配置中一致
DATA
：P#DB4.DBX10.0 BYTE 10
// 接受数据区的数据，需要注意DB块要选用绝对寻址
DONE
：M30.0
// 任务执行完成并且没有错误，该位置1
BUSY
：M30.1
// 该位为1，代表任务未完成，不能激活新任务
ERROR
：M30.2
// 通信过程中有错误发生，该位置1
STATUS
：MW32
// 有错误发生时，会显示错误信息号
RCVD_LEN
：MW34
// 实际接受数据的字节数

图8. 调用发送和接收指令

接收和发送指令调用需要注意：

程序块的 ID 要与指令 TCON 中的 ID 保持一致

DATA 参数的填写方法 ( 以 TRCV 程序块为例 )：

1、直接输入 : P#DB4.DBX10.0 BYTE 10

2、打开数据块，点击数据块右上角浮动按钮 [image] ，移动数据块与OB1并排显示，选中数据块变量名称 “ TCP_RCV ” 拖拽到 TRCV 指令 DATA 参数处，该区域显示为绿色，释放鼠标即可。

S7-200 SMART侧编程 ( 服务器侧组态编程 )

1.打开STEP 7 Micro/WIN SMART>项目树>指令树>库>Open User Communication ,调用TCP_CONNECT，如图9所示。

TCP_CONNECT
//调用TCP_CONNECT
EN
：SM0.0
//使能输入
Req
：V6010.0
//如果 Req = TRUE，CPU 启动连接操作。如果 Req = FALSE，则输出显示连接的当前状态。使用上升沿触发
Active
：SM0.0闭点
//TRUE = 主动连接 ;FALSE = 被动连接
ConnID
：1
// CPU 使用连接 ID (ConnID) 为其它指令标识该连接。可能的 ConnID 范围为 0 到 65534。
IPaddr1~4
：0~0
//IPaddr1 是 IP 地址的最高有效字节，IPaddr4 是 IP 地址的最低有效字节。服务器侧IP地址写0，表示接收所有请求
RemPort
：0
//RemPort 是远程设备上的端口号。远程端口号范围为 1 到 49151。对于被动连接，使用零。
LocPort
：2000
// LocPort 是本地设备上的端口号。本地端口号范围为 1 到 49151，但存在一些限制。
DONE
：V6000.0
// 当连接操作完成且没有错误时，指令置位 Done 输出。
BUSY
：V6000.1
// 当连接操作正在进行时，指令置位 Busy 输出。
ERROR
：V6000.2
// 当连接操作完成但发生错误时，指令置位 Error 输出
STATUS
：VB6002
// 如果指令置位 Error 输出，Status 输出会显示错误代码。如果指令置位 Busy 或 Done 输出，Status 为零（无错误）

图9. 指令位置及调用连接指令

2.调用TCP_SEND 和 TCP_RCV 指令，如图10 所示。

CALL TCP_SEND
//调用TCP_SEND
EN
：SM0.5
//使能输入
Req
：SM0.5
//如果 Req = TRUE，CPU 启动发送操作。如果 Req = FALSE，则输出显示发送操作的当前状态。
ConnID
:1
//连接 ID (ConnID) 是此发送操作所用连接的编号。使用您为 TCP_CONNECT 操作选择的 ConnID。
DataLen
:10
//DataLen 是要发送的字节数（1 到 1024）。
DataPtr
：&VB0
//DataPtr 是指向待发送数据的指针。这是指向 I、Q、M 或 V 存储器的 S7-200 SMART 指针（例如，＆VB100）。
Done
：V6000.6
// 当连接操作完成且没有错误时，指令置位 Done 输出。
Busy
：V6000.7
// 当连接操作正在进行时，指令置位 Busy 输出。
Error
：V6001.0
// 当连接操作完成但发生错误时，指令置位 Error 输出。
Status
：VB6004
// 如果指令置位 Error 输出，Status 输出会显示错误代码。如果指令置位 Busy 或 Done 输出，Status 为零（无错误）

CALL TCP_RECV |  | //调用TCP_RECV
EN | ：SM0.0 | //使能输入，常1接收
ConnID | ：1 | //CPU 将连接 ID (ConnID) 用于此接收操作（连接过程中定义）。
MaxLen | ：10 | // MaxLen 是要接收的最大字节数（例如，DataPt 中缓冲区的大小（1 到 1024））。
DataPtr | ：&VB2000 | // DataPtr 是指向接收数据存储位置的指针。这是指向 I、Q、M 或 V 存储器的 S7-200 SMART 指针（例如，＆VB100）
Done | ：V6001.1 | //当接收操作完成且没有错误时，指令置位 Done 输出。当指令置位 Done 输出时，Length 输出有效。
Busy | ：V6001.2 | // 当接收操作正在进行时，指令置位 Busy 输出。
Error | ：V6001.3 | // 当接收操作完成但发生错误时，指令置位 Error 输出
Status | ：VB6005 | // 如果指令置位 Error 输出，Status 输出会显示错误代码。如果指令置位 Busy 或 Done 输出，Status 为零（无错误）。
Length | ：VW6006 | //Length 是实际接收的字节数。

图10. 调用发送和接收指令

3.分配库存储区，如图11 所示。

图11. 分配库存储区

注意：为保证指令库可以正常工作，分配库存储区的时候，一定不能与程序中使用的其他 V 区地址重叠！！

通信结果

将 S7-1200 和 S7-200 SMART 项目编译，下载 ；

S7-1200 侧触发 TCON 指令的REQ （M10.0 置位为1），S7-200 SMART 侧触发 TCP_CONNECT 指令的Req （V6010.0 置位为1 ）以建立连接；

通信结果如下：


S7-200 SMART 与 S7-1200 之间 TCP 通信— S7-200 SMART 作为客户端

TCP 协议通信

TCP 通信为面向连接的通信，需要双方都调用指令以建立连接及交换数据。S7-200 SMART 与 S7-1200 通过 TCP 通信，在 S7-1200 调用 T-block 指令 ( TCON, TDISCON, TSEND, TRCV ) ，在 S7-200 SMART 调用 Open User Communication 库指令( TCP_CONNECT,DISCONNECT,TCP_SEND,TCP_RECV) 。双方的发送和接收指令必须成对出现。

客户端：主动建立连接，可以理解为主站 ； 服务器：被动建立连接，可以理解为从站。

注意：

S7-200 SMART 在 CPU 硬件固件及编程软件版本均升级到 V2.2 之后才开始支持开放式通信。编程软件版本低于V2.2，无 Open User Communication 库指令；硬件固件低于 V2.2，硬件不支持开放式通信协议。

S7-200 SMART TCP 连接资源：8个主动连接资源，8个被动连接资源

S7-200 SMART TCP 通信数据量：1024 字节

硬件和软件需求及所完成的通信任务

硬件：
① S7-1200 CPU （IP 地址 192.168.0.100 ；子网掩码 255.255.255.0）
② S7-200 SMART CPU (固件版本V2.2 ) ( IP 地址 192.168.0.55 ；子网掩码 255.255.255.0）
③ PC （带以太网卡）
④ TP 以太网电缆
软件：
① STEP7 V13 SP1 Upd 9
② STEP 7 Micro/WIN SMART （ 软件版本 V2.2 ）
所完成的通信任务：
① S7-200 SMART 发送 10 个字节数据：（S7-200 SMART 侧 ） VB0~VB9 --> （ S7-1200侧 ） DB4.DBB10~DB4.DBB19
② S7-200 SMART 接收 10 个字节数据： ( S7-200 SMART 侧 ） VB2000~VB2009<-- （ S7-1200 侧 ） DB4.DBB0~DB4.DBB9

S7-200 SMART侧编程 ( 客户机侧组态编程 )

1.打开STEP 7 Micro/WIN SMART>项目树>指令树>库>Open User Communication ,调用TCP_CONNECT，如图1所示。

TCP_CONNECT
//调用TCP_CONNECT
EN
：SM0.0
//使能输入
Req
：V6010.0
//如果 Req = TRUE，CPU 启动连接操作。如果 Req = FALSE，则输出显示连接的当前状态。使用上升沿触发
Active
：SM0.0
//TRUE = 主动连接 ;FALSE = 被动连接
ConnID
：1
// CPU 使用连接 ID (ConnID) 为其它指令标识该连接。可能的 ConnID 范围为 0 到 65534。
IPaddr1~4
：192.168.0.100
//IPaddr1 是 IP 地址的最高有效字节，IPaddr4 是 IP 地址的最低有效字节。192.168.0.100为伙伴的IP地址
RemPort
：2001
//RemPort 是远程设备上的端口号。远程端口号范围为 1 到 49151。
LocPort
：2000
// LocPort 是本地设备上的端口号。本地端口号范围为 1 到 49151，但存在一些限制。
DONE
：V6000.0
// 当连接操作完成且没有错误时，指令置位 Done 输出。
BUSY
：V6000.1
// 当连接操作正在进行时，指令置位 Busy 输出。
ERROR
：V6000.2
// 当连接操作完成但发生错误时，指令置位 Error 输出
STATUS
：VB6002
// 如果指令置位 Error 输出，Status 输出会显示错误代码。如果指令置位 Busy 或 Done 输出，Status 为零（无错误）

图1. 指令位置及调用连接指令

2.调用TCP_SEND 和 TCP_RCV 指令，如图2 所示。

CALL TCP_SEND
//调用TCP_SEND
EN
：SM0.5
//使能输入
Req
：SM0.5
//如果 Req = TRUE，CPU 启动发送操作。如果 Req = FALSE，则输出显示发送操作的当前状态。
ConnID
:1
//连接 ID (ConnID) 是此发送操作所用连接的编号。使用您为 TCP_CONNECT 操作选择的 ConnID。
DataLen
:10
//DataLen 是要发送的字节数（1 到 1024）。
DataPtr
：&VB0
//DataPtr 是指向待发送数据的指针。这是指向 I、Q、M 或 V 存储器的 S7-200 SMART 指针（例如，＆VB100）。
Done
：V6000.6
// 当连接操作完成且没有错误时，指令置位 Done 输出。
Busy
：V6000.7
// 当连接操作正在进行时，指令置位 Busy 输出。
Error
：V6001.0
// 当连接操作完成但发生错误时，指令置位 Error 输出。
Status
：VB6004
// 如果指令置位 Error 输出，Status 输出会显示错误代码。如果指令置位 Busy 或 Done 输出，Status 为零（无错误）

CALL TCP_RECV |  | //调用TCP_RECV
EN | ：SM0.0 | //使能输入,常1接收
ConnID | ：1 | //CPU 将连接 ID (ConnID) 用于此接收操作（连接过程中定义）。
MaxLen | ：10 | // MaxLen 是要接收的最大字节数（例如，DataPt 中缓冲区的大小（1 到 1024））。
DataPtr | ：&VB2000 | // DataPtr 是指向接收数据存储位置的指针。这是指向 I、Q、M 或 V 存储器的 S7-200 SMART 指针（例如，＆VB100）
Done | ：V6001.1 | //当接收操作完成且没有错误时，指令置位 Done 输出。当指令置位 Done 输出时，Length 输出有效。
Busy | ：V6001.2 | // 当接收操作正在进行时，指令置位 Busy 输出。
Error | ：V6001.3 | // 当接收操作完成但发生错误时，指令置位 Error 输出
Status | ：VB6005 | // 如果指令置位 Error 输出，Status 输出会显示错误代码。如果指令置位 Busy 或 Done 输出，Status 为零（无错误）。
Length | ：VW6006 | //Length 是实际接收的字节数。

图2. 调用发送和接收指令

3.分配库存储区，如图3 所示。

图3. 分配库存储区

注意：为保证指令库可以正常工作，分配库存储区的时候，一定不能与程序中使用的其他 V 区地址重叠！！

S7-1200 侧硬件组态和编程 ( 服务器侧组态编程 )

1. 使用 TIA V13 SP1 Upd 9 软件 Portal 视图中，创建新项目

2. 添加硬件并命名PLC

进入 “项目视图”，在“项目树” 下双击 “添加新设备”，在对话框中选择所使用的 S7-1200 CPU 添加到机架上，命名为 PLC_1 如图4 所示

图4. 添加新设备

3. 启用时钟位

为了编程方便，使用 CPU 属性中定义的时钟位，定义方法如下：
在 “项目树” > “PLC_1” > “设备组态” 中，选中 CPU ，然后在下面的属性窗口中，“属性” > “系统和时钟存储器” 下，将时钟位定义在 MB0，如图5所示。
时钟位我们使用 M0.5 ，它是频率为 1 Hz 的脉冲，可以使用它去自动激活发送任务。

图5.启用时钟位

4. 为 PROFINET 通信口分配以太网地址

在 “设备视图”中点击 CPU 上代表 PROFINET 通信口的绿色小方块，在下方会出现 PROFINET 接口的属性，在 “以太网地址” 下分配 S7-1200 CPU 的 IP 地址为 192.168.0.100 ，子网掩码为255.255.255.0，如图6 所示

图6. 分配 IP 地址

5.在S7-1200 中调用建立连接指令，进入 “项目树” > “ PLC_1” > “程序块” > “OB1” 主程序中，从右侧窗口 “指令”> “通信”>“开放式用户通信”下调用 “TCON” 指令，配置连接参数，如图7所示。

图7. 调用TCON指令并配置连接参数

6.创建用于交换数据的全局DB块及定义变量

通过“项目树”>“PLC_1”>“程序块”>“添加新块”，选择“数据块” 创建全局 DB 块，点击“确定” 生成数据块。如图8所示。

图8.添加新块

通过“项目树”>“PLC_1”>“程序块”>点击生成的 “数据块_1” ( DB4 ) ，右键属性，取消勾选“优化的块访问”。如图9所示。

图9.取消勾选优化的块访问

双击生成的 “数据块_1” ( DB4 ) ，定义数组，10 个字节用于发送，10个字节用于接收，然后编译数据块。结果如图10所示。

图10. 定义交换数据区

7.在OB1中调用 TSEND 和 TRCV

指令块位置及调用方法参考 TCON 指令的调用，调用结果如图11所示。

CALL TSEND
, DB3
//调用TSEND，使用背景DB块:DB3
REQ
：M0.5
//使用1Hz的时钟脉冲，上升沿激活发送任务
ID
：1
//连接号，要与连接配置中一致
DATA
：P#DB4.DBX0.0 BYTE 10
// 发送数据区的数据，需要注意DB块要选用绝对寻址
DONE
：M20.0
// 任务执行完成并且没有错误，该位置1
BUSY
：M20.1
// 该位为1，代表任务未完成，不能激活新任务
ERROR
：M20.2
// 通信过程中有错误发生，该位置1
STATUS
：MW22
// 有错误发生时，会显示错误信息号

CALL TRCV
, DB5
//调用TRCV，使用背景DB块:DB5
EN_R
：M1.2
//准备好接受数据 ,常1接收
ID
：1
//连接号，要与连接配置中一致
DATA
：P#DB4.DBX10.0 BYTE 10
// 接受数据区的数据，需要注意DB块要选用绝对寻址
DONE
：M30.0
// 任务执行完成并且没有错误，该位置1
BUSY
：M30.1
// 该位为1，代表任务未完成，不能激活新任务
ERROR
：M30.2
// 通信过程中有错误发生，该位置1
STATUS
：MW32
// 有错误发生时，会显示错误信息号
RCVD_LEN
：MW34
// 实际接受数据的字节数

图11. 调用发送和接收指令

接收和发送指令调用需要注意：

程序块的 ID 要与指令 TCON 中的 ID 保持一致

DATA 参数的填写方法 ( 以 TRCV 程序块为例 )：

1、直接输入 : P#DB4.DBX10.0 BYTE 10

2、打开数据块，点击数据块右上角浮动按钮 [image] ，移动数据块与OB1并排显示，选中数据块变量名称 “ TCP_RCV ” 拖拽到 TRCV 指令 DATA 参数处，该区域显示为绿色，释放鼠标即可。

通信结果

将 S7-1200 和 S7-200 SMART 项目编译，下载 ；

S7-1200 侧触发 TCON 指令的REQ （M10.0 置位为1） ，S7-200 SMART 侧触发 TCP_CONNECT 指令的Req （V6010.0 置位为1 ）以建立连接；

通信结果如下：


S7-200 SMART 与 S7-300 集成 PN 口之间 TCP 通信— S7-200 SMART 作为服务器

TCP 协议通信

TCP 通信为面向连接的通信，需要双方都调用指令以建立连接及交换数据。S7-200 SMART 与 S7-300 通过 TCP 通信，在 S7-300 调用 T-block 指令 ( TCON, TDISCON, TSEND, TRCV ) ，在 S7-200 SMART 调用 Open User Communication 库指令( TCP_CONNECT,DISCONNECT,TCP_SEND,TCP_RECV) 。双方的发送和接收指令必须成对出现。

客户端：主动建立连接，可以理解为主站 ； 服务器：被动建立连接，可以理解为从站。

注意：

S7-200 SMART 在 CPU 硬件固件及编程软件版本均升级到 V2.2 之后才开始支持开放式通信。编程软件版本低于V2.2，无 Open User Communication 库指令；硬件固件低于 V2.2，硬件不支持开放式通信协议。

S7-200 SMART TCP 连接资源：8个主动连接资源，8个被动连接资源

S7-200 SMART TCP 通信数据量：1024 字节

硬件和软件需求及所完成的通信任务

硬件：
① S7-300 CPU （IP 地址 192.168.0.101 ；子网掩码 255.255.255.0）
② S7-200 SMART CPU (固件版本V2.2) ( IP 地址 192.168.0.20 ；子网掩码 255.255.255.0）
③ PC （带以太网卡）
④ TP 以太网电缆
软件：
① STEP7 V13 SP1 Upd 9
② STEP 7 Micro/WIN SMART （ 软件版本 V2.2 ）
所完成的通信任务：
① S7-300 发送 10 个字节数据：（ S7-300 侧 ） DB5.DBB0~DB5.DBB9 --> （ S7- 200 SMART 侧 ） VB2000~VB2009
② S7-300 接收 10 个字节数据： （ S7-300 侧 ） DB5.DBB10~DB5.DBB19 <-- ( S7-200 SMART 侧 ） VB0~VB9

S7-300 侧硬件组态和编程 ( 客户机侧组态编程 )

1. 使用 TIA V13 SP1 Upd 9 软件 Portal 视图中，创建新项目

2. 添加硬件并命名PLC

进入 “项目视图”，在“项目树” 下双击 “添加新设备”，在对话框中选择所使用的 S7-300 CPU 添加到机架上，命名为 PLC_2 如图1 所示。

图1. 添加新设备

3. 启用时钟位

为了编程方便，使用 CPU 属性中定义的时钟位，定义方法如下：
在 “项目树” > “PLC_2” > “设备组态” 中，选中 CPU ，然后在下面的属性窗口中，“属性” > “时钟存储器” 下，将时钟位定义在 MB0，如图2所示。
时钟位我们使用 M0.7 ，它是频率为 0.5 Hz 的脉冲，可以使用它去自动激活发送任务。

图2.启用时钟位

4. 为 PROFINET 通信口分配以太网地址

在 “设备视图”中点击 CPU 上代表 PROFINET 通信口的绿色小方块，在下方会出现 PROFINET 接口的属性，在 “以太网地址” 下分配 S7-300 CPU 的 IP 地址为 192.168.0.101 ，子网掩码为255.255.255.0，如图3 所示。

图3. 分配 IP 地址

5.在S7-300 中调用建立连接指令，进入 “项目树” > “ PLC_2” > “程序块” > “OB1” 主程序中，从右侧窗口 “指令”> “通信”>“开放式用户通信”下调用 “TCON” 指令，配置连接参数，如图4 所示。

图4. 调用TCON指令并配置连接参数

6.创建用于交换数据的全局DB块及定义变量

通过“项目树”>“PLC_2”>“程序块”>“添加新块”，选择“数据块” 创建全局 DB 块，点击“确定” 生成数据块。如图5所示。S7-300 生成的数据块都是非优化的数据块，不用单独设置。

图5.添加新块

双击生成的 “数据块_1” ( DB5 ) ，定义数组，10 个字节用于发送，10个字节用于接收，然后编译数据块。结果如图6.所示。

图6. 定义交换数据区

7.在OB1中调用 TSEND 和 TRCV

指令块位置及调用方法参考 TCON 指令的调用，调用结果如图7所示。

CALL TSEND
, DB3
//调用TSEND，使用背景DB块:DB3
REQ
：M0.7
//使用0.5Hz的时钟脉冲，上升沿激活发送任务
ID
：1
//连接号，要与连接配置中一致
DATA
：P#DB5.DBX0.0 BYTE 10
// 发送数据区的数据，需要注意DB块要选用绝对寻址
DONE
：M20.0
// 任务执行完成并且没有错误，该位置1
BUSY
：M20.1
// 该位为1，代表任务未完成，不能激活新任务
ERROR
：M20.2
// 通信过程中有错误发生，该位置1
STATUS
：MW22
// 有错误发生时，会显示错误信息

CALL TRCV
, DB4
//调用TRCV，使用背景DB块:DB4
EN_R
：M10.0
//准备好接受数据
ID
：1
//连接号，要与连接配置中一致
DATA
：P#DB5.DBX10.0 BYTE 10
// 接受数据区的数据，需要注意DB块要选用绝对寻址
DONE
：M30.0
// 任务执行完成并且没有错误，该位置1
BUSY
：M30.1
// 该位为1，代表任务未完成，不能激活新任务
ERROR
：M30.2
// 通信过程中有错误发生，该位置1
STATUS
：MW32
// 有错误发生时，会显示错误信息号
RCVD_LEN
：MW34
// 实际接受数据的字节数

图7. 调用发送和接收指令

接收和发送指令调用需要注意：

程序块的 ID 要与指令 TCON 中的 ID 保持一致

DATA 参数的填写方法 ( 以 TRCV 程序块为例 )：

1、直接输入 : P#DB5.DBX10.0 BYTE 10

2、打开数据块，点击数据块右上角浮动按钮 [image] ，移动数据块与OB1并排显示，选中数据块变量名称 “ TCP_RCV ” 拖拽到 TRCV 指令 DATA 参数处，该区域显示为绿色，释放鼠标即可。

S7-200 SMART侧编程 ( 服务器侧组态编程 )

1.打开STEP 7 Micro/WIN SMART>项目树>指令树>库>Open User Communication ,调用TCP_CONNECT ，如图8所示。

TCP_CONNECT
//调用TCP_CONNECT
EN
：SM0.0
//使能输入
Req
：V6010.0
//如果 Req = TRUE，CPU 启动连接操作。如果 Req = FALSE，则输出显示连接的当前状态。使用上升沿触发
Active
：SM0.0闭点
//TRUE = 主动连接 ;FALSE = 被动连接
ConnID
：1
// CPU 使用连接 ID (ConnID) 为其它指令标识该连接。可能的 ConnID 范围为 0 到 65534。
IPaddr1~4
：0~0
//IPaddr1 是 IP 地址的最高有效字节，IPaddr4 是 IP 地址的最低有效字节。服务器侧IP地址写0，表示接收所有请求
RemPort
：0
//RemPort 是远程设备上的端口号。远程端口号范围为 1 到 49151。对于被动连接，使用零。
LocPort
：2000
// LocPort 是本地设备上的端口号。本地端口号范围为 1 到 49151，但存在一些限制。
DONE
：V6000.0
// 当连接操作完成且没有错误时，指令置位 Done 输出。
BUSY
：V6000.1
// 当连接操作正在进行时，指令置位 Busy 输出。
ERROR
：V6000.2
// 当连接操作完成但发生错误时，指令置位 Error 输出
STATUS
：VB6002
// 如果指令置位 Error 输出，Status 输出会显示错误代码。如果指令置位 Busy 或 Done 输出，Status 为零（无错误）

图8. 指令位置及调用连接指令

2.调用TCP_SEND 和 TCP_RCV 指令，如图9 所示。

CALL TCP_SEND
//调用TCP_SEND
EN
：SM0.5
//使能输入
Req
：SM0.5
//如果 Req = TRUE，CPU 启动发送操作。如果 Req = FALSE，则输出显示发送操作的当前状态。
ConnID
:1
//连接 ID (ConnID) 是此发送操作所用连接的编号。使用您为 TCP_CONNECT 操作选择的 ConnID。
DataLen
:10
//DataLen 是要发送的字节数（1 到 1024）。
DataPtr
：&VB0
//DataPtr 是指向待发送数据的指针。这是指向 I、Q、M 或 V 存储器的 S7-200 SMART 指针（例如，＆VB100）。
Done
：V6000.6
// 当连接操作完成且没有错误时，指令置位 Done 输出。
Busy
：V6000.7
// 当连接操作正在进行时，指令置位 Busy 输出。
Error
：V6001.0
// 当连接操作完成但发生错误时，指令置位 Error 输出。
Status
：VB6004
// 如果指令置位 Error 输出，Status 输出会显示错误代码。如果指令置位 Busy 或 Done 输出，Status 为零（无错误）

CALL TCP_RECV |  | //调用TCP_RECV
EN | ：SM0.0 | //使能输入，常1接收
ConnID | ：1 | //CPU 将连接 ID (ConnID) 用于此接收操作（连接过程中定义）。
MaxLen | ：10 | // MaxLen 是要接收的最大字节数（例如，DataPt 中缓冲区的大小（1 到 1024））。
DataPtr | ：&VB2000 | // DataPtr 是指向接收数据存储位置的指针。这是指向 I、Q、M 或 V 存储器的 S7-200 SMART 指针（例如，＆VB100）
Done | ：V6001.1 | //当接收操作完成且没有错误时，指令置位 Done 输出。当指令置位 Done 输出时，Length 输出有效。
Busy | ：V6001.2 | // 当接收操作正在进行时，指令置位 Busy 输出。
Error | ：V6001.3 | // 当接收操作完成但发生错误时，指令置位 Error 输出
Status | ：VB6005 | // 如果指令置位 Error 输出，Status 输出会显示错误代码。如果指令置位 Busy 或 Done 输出，Status 为零（无错误）。
Length | ：VW6006 | //Length 是实际接收的字节数。

图9. 调用发送和接收指令

3.分配库存储区，如图10 所示。

图10. 分配库存储区

注意：为保证指令库可以正常工作，分配库存储区的时候，一定不能与程序中使用的其他 V 区地址重叠！！

通信结果

将 S7-300 和 S7-200 SMART程序编译，下载 ；

S7-300 侧触发 TCON 指令的REQ （M10.0 置位为1），S7-200 SMART 侧触发 TCP_CONNECT 指令的Req （V6010.0 置位为1 ）以建立连接 ；

通信结果如下：


S7-200 SMART 与 S7-300 集成 PN 口之间 TCP 通信— S7-200 SMART 作为客户端

TCP 协议通信

TCP 通信为面向连接的通信，需要双方都调用指令以建立连接及交换数据。S7-200 SMART 与 S7-300 通过 TCP 通信，在 S7-300 调用 T-block 指令 ( TCON, TDISCON, TSEND, TRCV ) ，在 S7-200 SMART 调用 Open User Communication 库指令( TCP_CONNECT,DISCONNECT,TCP_SEND,TCP_RECV) 。双方的发送和接收指令必须成对出现。

客户端：主动建立连接，可以理解为主站 ； 服务器：被动建立连接，可以理解为从站。

注意：

S7-200 SMART 在 CPU 硬件固件及编程软件版本均升级到 V2.2 之后才开始支持开放式通信。编程软件版本低于V2.2，无 Open User Communication 库指令；硬件固件低于 V2.2，硬件不支持开放式通信协议。

S7-200 SMART TCP 连接资源：8个主动连接资源，8个被动连接资源

S7-200 SMART TCP 通信数据量：1024 字节

硬件和软件需求及所完成的通信任务

硬件：
① S7-300 CPU （IP 地址 192.168.0.101 ；子网掩码 255.255.255.0）
② S7-200 SMART CPU (固件版本V2.2) ( IP 地址 192.168.0.55 ；子网掩码 255.255.255.0）
③ PC （带以太网卡）
④ TP 以太网电缆

软件：
① STEP7 V13 SP1 Upd 9
② STEP 7 Micro/WIN SMART （ 软件版本 V2.2 ）
所完成的通信任务：
① S7-200 SMART 发送 10 个字节数据： （ S7- 200 SMART 侧 ） VB0~VB9 -->（ S7-300 侧 ） DB5.DBB10~DB5.DBB19
② S7-200 SMART 接收 10 个字节数据： ( S7-200 SMART 侧 ） VB2000~VB2009<-- （ S7-300 侧 ） DB5.DBB0~DB5.DBB9

S7-200 SMART侧编程 ( 客户机侧组态编程 )

1.打开STEP 7 Micro/WIN SMART>项目树>指令树>库>Open User Communication ,调用TCP_CONNECT ，如图1所示。

TCP_CONNECT
//调用TCP_CONNECT
EN
：SM0.0
//使能输入
Req
：V6010.0
//如果 Req = TRUE，CPU 启动连接操作。如果 Req = FALSE，则输出显示连接的当前状态。使用上升沿触发
Active
：SM0.0
//TRUE = 主动连接 ;FALSE = 被动连接
ConnID
：1
// CPU 使用连接 ID (ConnID) 为其它指令标识该连接。可能的 ConnID 范围为 0 到 65534。
IPaddr1~4
：192.168.0.101
//IPaddr1 是 IP 地址的最高有效字节，IPaddr4 是 IP 地址的最低有效字节。192.168.0.101为伙伴的IP地址
RemPort
：2000
//RemPort 是远程设备上的端口号。远程端口号范围为 1 到 49151。
LocPort
：2000
// LocPort 是本地设备上的端口号。本地端口号范围为 1 到 49151，但存在一些限制。
DONE
：V6000.0
// 当连接操作完成且没有错误时，指令置位 Done 输出。
BUSY
：V6000.1
// 当连接操作正在进行时，指令置位 Busy 输出。
ERROR
：V6000.2
// 当连接操作完成但发生错误时，指令置位 Error 输出
STATUS
：VB6002
// 如果指令置位 Error 输出，Status 输出会显示错误代码。如果指令置位 Busy 或 Done 输出，Status 为零（无错误）

图1. 指令位置及调用连接指令

2.调用TCP_SEND 和 TCP_RCV 指令，如图2 所示。

CALL TCP_SEND
//调用TCP_SEND
EN
：SM0.5
//使能输入
Req
：SM0.5
//如果 Req = TRUE，CPU 启动发送操作。如果 Req = FALSE，则输出显示发送操作的当前状态。
ConnID
:1
//连接 ID (ConnID) 是此发送操作所用连接的编号。使用您为 TCP_CONNECT 操作选择的 ConnID。
DataLen
:10
//DataLen 是要发送的字节数（1 到 1024）。
DataPtr
：&VB0
//DataPtr 是指向待发送数据的指针。这是指向 I、Q、M 或 V 存储器的 S7-200 SMART 指针（例如，＆VB100）。
Done
：V6000.6
// 当连接操作完成且没有错误时，指令置位 Done 输出。
Busy
：V6000.7
// 当连接操作正在进行时，指令置位 Busy 输出。
Error
：V6001.0
// 当连接操作完成但发生错误时，指令置位 Error 输出。
Status
：VB6004
// 如果指令置位 Error 输出，Status 输出会显示错误代码。如果指令置位 Busy 或 Done 输出，Status 为零（无错误）

CALL TCP_RECV |  | //调用TCP_RECV
EN | ：SM0.0 | //使能输入,常1接收
ConnID | ：1 | //CPU 将连接 ID (ConnID) 用于此接收操作（连接过程中定义）
MaxLen | ：10 | // MaxLen 是要接收的最大字节数（例如，DataPt 中缓冲区的大小（1 到 1024））。
DataPtr | ：&VB2000 | // DataPtr 是指向接收数据存储位置的指针。这是指向 I、Q、M 或 V 存储器的 S7-200 SMART 指针（例如，＆VB100）
Done | ：V6001.1 | //当接收操作完成且没有错误时，指令置位 Done 输出。当指令置位 Done 输出时，Length 输出有效。
Busy | ：V6001.2 | // 当接收操作正在进行时，指令置位 Busy 输出。
Error | ：V6001.3 | // 当接收操作完成但发生错误时，指令置位 Error 输出
Status | ：VB6005 | // 如果指令置位 Error 输出，Status 输出会显示错误代码。如果指令置位 Busy 或 Done 输出，Status 为零（无错误）。
Length | ：VW6006 | //Length 是实际接收的字节数。

图2. 调用发送和接收指令

3.分配库存储区，如图3 所示。

图3. 分配库存储区

注意：为保证指令库可以正常工作，分配库存储区的时候，一定不能与程序中使用的其他 V 区地址重叠！！

S7-300 侧硬件组态和编程 ( 服务器侧组态编程 )

1. 使用 TIA V13 SP1 Upd 9 软件 Portal 视图中，创建新项目

2. 添加硬件并命名PLC

进入 “项目视图”，在“项目树” 下双击 “添加新设备”，在对话框中选择所使用的 S7-300 CPU 添加到机架上，命名为 PLC_2 如图4 所示

图4. 添加新设备

3. 启用时钟位

为了编程方便，使用 CPU 属性中定义的时钟位，定义方法如下：
在 “项目树” > “PLC_2” > “设备组态” 中，选中 CPU ，然后在下面的属性窗口中，“属性” > “时钟存储器” 下，将时钟位定义在 MB0，如图5所示。
时钟位我们使用 M0.7 ，它是频率为 0.5 Hz 的脉冲，可以使用它去自动激活发送任务。

图5.启用时钟位

4. 为 PROFINET 通信口分配以太网地址

在 “设备视图”中点击 CPU 上代表 PROFINET 通信口的绿色小方块，在下方会出现 PROFINET 接口的属性，在 “以太网地址” 下分配 S7-300 CPU 的 IP 地址为 192.168.0.101 ，子网掩码为255.255.255.0，如图6所示

图6. 分配 IP 地址

5.在S7-300 中调用建立连接指令，进入 “项目树” > “ PLC_2” > “程序块” > “OB1” 主程序中，从右侧窗口 “指令”> “通信”>“开放式用户通信”下调用 “TCON” 指令，配置连接参数，如图7所示。

图7. 调用TCON指令并配置连接参数

6.创建用于交换数据的全局DB块及定义变量

通过“项目树”>“PLC_2”>“程序块”>“添加新块”，选择“数据块” 创建全局 DB 块，点击“确定” 生成数据块。如图8所示。S7-300 生成的数据块都是非优化的数据块，不用单独设置。

图8.添加新块

双击生成的 “数据块_1” ( DB5 ) ，定义数组，10 个字节用于发送，10个字节用于接收，然后编译数据块。结果如图9所示。

图9. 定义交换数据区

7.在OB1中调用 TSEND 和 TRCV

指令块位置及调用方法参考 TCON 指令的调用，调用结果如图10所示。

CALL TSEND
, DB3
//调用TSEND，使用背景DB块:DB3
REQ
：M0.7
//使用0.5Hz的时钟脉冲，上升沿激活发送任务
ID
：1
//连接号，要与连接配置中一致
DATA
：P#DB5.DBX0.0 BYTE 10
// 发送数据区的数据，需要注意DB块要选用绝对寻址
DONE
：M20.0
// 任务执行完成并且没有错误，该位置1
BUSY
：M20.1
// 该位为1，代表任务未完成，不能激活新任务
ERROR
：M20.2
// 通信过程中有错误发生，该位置1
STATUS
：MW22
// 有错误发生时，会显示错误信息号

CALL TRCV
, DB4
//调用TRCV，使用背景DB块:DB4
EN_R
：M10.0
//准备好接受数据
ID
：1
//连接号，要与连接配置中一致
DATA
：P#DB5.DBX10.0 BYTE 10
// 接受数据区的数据，需要注意DB块要选用绝对寻址
DONE
：M30.0
// 任务执行完成并且没有错误，该位置1
BUSY
：M30.1
// 该位为1，代表任务未完成，不能激活新任务
ERROR
：M30.2
// 通信过程中有错误发生，该位置1
STATUS
：MW32
// 有错误发生时，会显示错误信息号
RCVD_LEN
：MW34
// 实际接受数据的字节数

图10. 调用发送和接收指令

接收和发送指令调用需要注意：

程序块的 ID 要与指令 TCON 中的 ID 保持一致

DATA 参数的填写方法 ( 以 TRCV 程序块为例 )：

1、直接输入 : P#DB5.DBX10.0 BYTE 10

2、打开数据块，点击数据块右上角浮动按钮 [image] ，移动数据块与OB1并排显示，选中数据块变量名称 “ TCP_RCV ” 拖拽到 TRCV 指令 DATA 参数处，该区域显示为绿色，释放鼠标即可。

通信结果

将 S7-300 和 S7-200 SMART程序编译，下载 ；

S7-300 侧触发 TCON 指令的REQ （M10.0 置位为1），S7-200 SMART 侧触发 TCP_CONNECT 指令的Req （V6010.0 置位为1 ）以建立连接 ；

通信结果如下：


S7-200 SMART 与 S7-300 CP 卡之间 TCP 通信— S7-200 SMART 作为服务器

TCP 协议通信

TCP 通信为面向连接的通信，需要双方都调用指令以建立连接及交换数据。S7-200 SMART 与 S7-300 CP 卡通过 TCP 通信，CP343-1 侧在网络视图中组态 TCP 连接，调用 AG_SEND 和 AG_RECV 指令 ，在 S7-200 SMART 调用 Open User Communication 库指令( TCP_CONNECT,DISCONNECT,TCP_SEND,TCP_RECV) 。双方的发送和接收指令必须成对出现。

客户端：主动建立连接，可以理解为主站 ； 服务器：被动建立连接，可以理解为从站。

注意：

S7-200 SMART 在 CPU 硬件固件及编程软件版本均升级到 V2.2 之后才开始支持开放式通信。编程软件版本低于V2.2，无 Open User Communication 库指令；硬件固件低于 V2.2，硬件不支持开放式通信协议。

S7-200 SMART TCP 连接资源：8个主动连接资源，8个被动连接资源

S7-200 SMART TCP 通信数据量：1024 字节

硬件和软件需求及所完成的通信任务

硬件：
① S7-300 CPU
② CP343-1 ( IP 地址 192.168.0.102 ；子网掩码 255.255.255.0）
③S7-200 SMART CPU (固件版本V2.2) ( IP 地址 192.168.0.20 ；子网掩码 255.255.255.0）
④ PC （带以太网卡）
⑤ TP 以太网电缆
软件：
① STEP7 V13 SP1 Upd 9
② STEP 7 Micro/WIN SMART （ 软件版本 V2.2 ）
所完成的通信任务：
① S7-300 CP卡发送 10 个字节数据：（ S7-300 侧 ） DB5.DBB0~DB5.DBB9 --> ( S7-200 SMART 侧 ） VB2000~VB2009
② S7-300 CP卡接收 10 个字节数据： （ S7-300 侧 ） DB5.DBB10~DB5.DBB19 <-- ( S7- 200 SMART 侧 ) VB0~VB9

S7-300 侧硬件组态和编程 ( 客户机侧组态编程 )

1. 使用 TIA V13 SP1 Upd 9 软件 Portal 视图中，创建新项目

2. 添加硬件并命名PLC

进入 “项目视图”，在“项目树” 下双击 “添加新设备”，在对话框中选择所使用的 S7-300 CPU 添加到机架上，命名为 PLC_2 如图1 所示

图1. 添加新设备

3. 启用时钟位

为了编程方便，使用 CPU 属性中定义的时钟位，定义方法如下：
在 “项目树” > “PLC_2” > “设备组态” 中，选中 CPU ，然后在下面的属性窗口中，“属性” > “时钟存储器” 下，将时钟位定义在 MB0，如图2所示。
时钟位我们使用 M0.7 ，它是频率为 0.5 Hz 的脉冲，可以使用它去自动激活发送任务。

图2.启用时钟位

4. 组态 CP 343-1 并为通信口分配以太网地址

在“项目树” > “ PLC_2” >设备视图>硬件目录>通信模块>PROFINET/以太网>CP 343-1，选中并拖拽 6GK7 343-1EX30-0XE0 到相应插槽，点击 CP 343-1上代表 PROFINET 通信口的绿色小方块，在下方会出现 PROFINET 接口的属性，在 “以太网地址” 下分配 CP 343-1 的 IP 地址为 192.168.0.102 ，子网掩码为255.255.255.0，如图3 所示

图3.为 CP 343-1 分配 IP 地址

5.网络组态TCP连接及配置通信参数

打开网络视图，检查连接类型为 TCP 连接，鼠标点中 PLC_2 上 CP343-1的 PROFINET 通信口的绿色小方框，拖拽出一条浅绿色的虚线 [image] ，松开鼠标；再次回到 CP343-1 的通信口上出现可建立连接图标 [image] ，双击通信口，连接已创建，高亮显示连接图标 [image] ，如图4所示

图4. 配置TCP连接及参数填写

6.创建用于交换数据的全局DB块及定义变量

通过“项目树”>“PLC_2”>“程序块”>“添加新块”，选择“数据块” 创建全局 DB 块，点击“确定” 生成数据块。如图5所示。S7-300 生成的数据块都是非优化的数据块，不用单独设置。

图5.添加新块

双击生成的 “数据块_1” ( DB5 ) ，定义数组，10 个字节用于发送，10个字节用于接收，然后编译数据块。结果如图6所示。

图6. 定义交换数据区

7.在OB1中调用 AG_SEND 和AG_RECV

进入 “项目树” > “ PLC_2” > “程序块” > “OB1” 主程序中，从右侧窗口 “指令”> “通信”> “通信处理器”> “Simatic NET CP”下调用 AG_SEND 和 AG_RECV 指令，调用结果如图7所示。

图7. 调用发送和接收指令

接收和发送指令调用需要注意：

程序块的 ID 要与网络视图建立TCP连接中设置的 ID 保持一致

SEND 和 RECV 为交换数据缓冲区 参数的填写方法 ( 以 AG_RECV 程序块为例 )：

1、直接输入 : P#DB5.DBX10.0 BYTE 10

2、打开数据块，点击数据块右上角浮动按钮 [image] ，移动数据块与OB1并排显示，选中数据块变量名称 “ TCP_RCV ” 拖拽到 AG_RECV 指令 RECV 参数处，该区域显示为绿色，释放鼠标即可。

S7-200 SMART侧编程 ( 服务器侧组态编程 )

1.打开STEP 7 Micro/WIN SMART>项目树>指令树>库>Open User Communication ,调用TCP_CONNECT ，如图8所示。

TCP_CONNECT
//调用TCP_CONNECT
EN
：SM0.0
//使能输入
Req
：V6010.0
//如果 Req = TRUE，CPU 启动连接操作。如果 Req = FALSE，则输出显示连接的当前状态。使用上升沿触发
Active
：SM0.0闭点
//TRUE = 主动连接 ;FALSE = 被动连接
ConnID
：1
// CPU 使用连接 ID (ConnID) 为其它指令标识该连接。可能的 ConnID 范围为 0 到 65534。
IPaddr1~4
：0~0
//IPaddr1 是 IP 地址的最高有效字节，IPaddr4 是 IP 地址的最低有效字节。服务器侧IP地址写0，表示接收所有请求
RemPort
：0
//RemPort 是远程设备上的端口号。远程端口号范围为 1 到 49151。对于被动连接，使用零。
LocPort
：2000
// LocPort 是本地设备上的端口号。本地端口号范围为 1 到 49151，但存在一些限制。
DONE
：V6000.0
// 当连接操作完成且没有错误时，指令置位 Done 输出。
BUSY
：V6000.1
// 当连接操作正在进行时，指令置位 Busy 输出。
ERROR
：V6000.2
// 当连接操作完成但发生错误时，指令置位 Error 输出
STATUS
：VB6002
// 如果指令置位 Error 输出，Status 输出会显示错误代码。如果指令置位 Busy 或 Done 输出，Status 为零（无错误）

图8. 指令位置及调用连接指令

2.调用TCP_SEND 和 TCP_RCV 指令，如图9 所示。

CALL TCP_SEND
//调用TCP_SEND
EN
：SM0.5
//使能输入
Req
：SM0.5
//如果 Req = TRUE，CPU 启动发送操作。如果 Req = FALSE，则输出显示发送操作的当前状态。
ConnID
:1
//连接 ID (ConnID) 是此发送操作所用连接的编号。使用您为 TCP_CONNECT 操作选择的 ConnID。
DataLen
:10
//DataLen 是要发送的字节数（1 到 1024）。
DataPtr
：&VB0
//DataPtr 是指向待发送数据的指针。这是指向 I、Q、M 或 V 存储器的 S7-200 SMART 指针（例如，＆VB100）。
Done
：V6000.6
// 当连接操作完成且没有错误时，指令置位 Done 输出。
Busy
：V6000.7
// 当连接操作正在进行时，指令置位 Busy 输出。
Error
：V6001.0
// 当连接操作完成但发生错误时，指令置位 Error 输出。
Status
：VB6004
// 如果指令置位 Error 输出，Status 输出会显示错误代码。如果指令置位 Busy 或 Done 输出，Status 为零（无错误）

CALL TCP_RECV |  | //调用TCP_RECV
EN | ：SM0.0 | //使能输入，常1接收
ConnID | ：1 | //CPU 将连接 ID (ConnID) 用于此接收操作（连接过程中定义）。
MaxLen | ：10 | // MaxLen 是要接收的最大字节数（例如，DataPt 中缓冲区的大小（1 到 1024））。
DataPtr | ：&VB2000 | // DataPtr 是指向接收数据存储位置的指针。这是指向 I、Q、M 或 V 存储器的 S7-200 SMART 指针（例如，＆VB100）
Done | ：V6001.1 | //当接收操作完成且没有错误时，指令置位 Done 输出。当指令置位 Done 输出时，Length 输出有效。
Busy | ：V6001.2 | // 当接收操作正在进行时，指令置位 Busy 输出。
Error | ：V6001.3 | // 当接收操作完成但发生错误时，指令置位 Error 输出
Status | ：VB6005 | // 如果指令置位 Error 输出，Status 输出会显示错误代码。如果指令置位 Busy 或 Done 输出，Status 为零（无错误）。
Length | ：VW6006 | //Length 是实际接收的字节数。

图9. 调用发送和接收指令

3.分配库存储区，如图10 所示。

图10. 分配库存储区

注意：为保证指令库可以正常工作，分配库存储区的时候，一定不能与程序中使用的其他 V 区地址重叠！！

通信结果

将 S7-300 和 S7-200 SMART程序编译，下载 ；

S7-200 SMART 侧触发 TCP_CONNECT 指令的Req （V6010.0 置位为1 ）以建立连接 ；

通信结果如下：


S7-200 SMART 与 S7-300 CP 卡之间 TCP 通信— S7-200 SMART 作为客户端

TCP 协议通信

TCP 通信为面向连接的通信，需要双方都调用指令以建立连接及交换数据。S7-200 SMART 与 S7-300 CP 卡通过 TCP 通信，CP343-1 侧在网络视图中组态 TCP 连接，调用 AG_SEND 和 AG_RECV 指令 ，在 S7-200 SMART 调用 Open User Communication 库指令( TCP_CONNECT,DISCONNECT,TCP_SEND,TCP_RECV) 。双方的发送和接收指令必须成对出现。

客户端：主动建立连接，可以理解为主站 ； 服务器：被动建立连接，可以理解为从站。

注意：

S7-200 SMART 在 CPU 硬件固件及编程软件版本均升级到 V2.2 之后才开始支持开放式通信。编程软件版本低于V2.2，无 Open User Communication 库指令；硬件固件低于 V2.2，硬件不支持开放式通信协议。

S7-200 SMART TCP 连接资源：8个主动连接资源，8个被动连接资源

S7-200 SMART TCP 通信数据量：1024 字节

硬件和软件需求及所完成的通信任务

硬件：
① S7-300 CPU
② CP343-1 ( IP 地址 192.168.0.102 ；子网掩码 255.255.255.0）
③S7-200 SMART CPU (固件版本V2.2) ( IP 地址 192.168.0.20 ；子网掩码 255.255.255.0）
④ PC （带以太网卡）
⑤ TP 以太网电缆
软件：
① STEP7 V13 SP1 Upd 9
② STEP 7 Micro/WIN SMART （ 软件版本 V2.2 ）
所完成的通信任务：
① S7-200 SMART 发送 10 个字节数据：（ S7- 200 SMART 侧 ） VB0~VB9 --> （ S7-300 侧 ） DB5.DBB10~DB5.DBB19
② S7-200 SMART 接收 10 个字节数据： ( S7-200 SMART 侧 ） VB2000~VB2009 <--（ S7-300 侧 ） DB5.DBB0~DB5.DBB9

S7-200 SMART侧编程 ( 客户机侧组态编程 )

1.打开STEP 7 Micro/WIN SMART>项目树>指令树>库>Open User Communication ,调用TCP_CONNECT，如图1所示。

TCP_CONNECT
//调用TCP_CONNECT
EN
：SM0.0
//使能输入
Req
：V6010.0
//如果 Req = TRUE，CPU 启动连接操作。如果 Req = FALSE，则输出显示连接的当前状态。使用上升沿触发
Active
：SM0.0
//TRUE = 主动连接 ;FALSE = 被动连接
ConnID
：1
// CPU 使用连接 ID (ConnID) 为其它指令标识该连接。可能的 ConnID 范围为 0 到 65534。
IPaddr1~4
：192.168.0.102
//IPaddr1 是 IP 地址的最高有效字节，IPaddr4 是 IP 地址的最低有效字节。192.168.0.102为伙伴的IP地址
RemPort
：2000
//RemPort 是远程设备上的端口号。远程端口号范围为 1 到 49151。
LocPort
：2000
// LocPort 是本地设备上的端口号。本地端口号范围为 1 到 49151，但存在一些限制。
DONE
：V6000.0
// 当连接操作完成且没有错误时，指令置位 Done 输出。
BUSY
：V6000.1
// 当连接操作正在进行时，指令置位 Busy 输出。
ERROR
：V6000.2
// 当连接操作完成但发生错误时，指令置位 Error 输出
STATUS
：VB6002
// 如果指令置位 Error 输出，Status 输出会显示错误代码。如果指令置位 Busy 或 Done 输出，Status 为零（无错误）

图1. 指令位置及调用连接指令

2.调用TCP_SEND 和 TCP_RCV 指令，如图2 所示。

CALL TCP_SEND
//调用TCP_SEND
EN
：SM0.5
//使能输入
Req
：SM0.5
//如果 Req = TRUE，CPU 启动发送操作。如果 Req = FALSE，则输出显示发送操作的当前状态。
ConnID
:1
//连接 ID (ConnID) 是此发送操作所用连接的编号。使用您为 TCP_CONNECT 操作选择的 ConnID。
DataLen
:10
//DataLen 是要发送的字节数（1 到 1024）。
DataPtr
：&VB0
//DataPtr 是指向待发送数据的指针。这是指向 I、Q、M 或 V 存储器的 S7-200 SMART 指针（例如，＆VB100）。
Done
：V6000.6
// 当连接操作完成且没有错误时，指令置位 Done 输出。
Busy
：V6000.7
// 当连接操作正在进行时，指令置位 Busy 输出。
Error
：V6001.0
// 当连接操作完成但发生错误时，指令置位 Error 输出。
Status
：VB6004
// 如果指令置位 Error 输出，Status 输出会显示错误代码。如果指令置位 Busy 或 Done 输出，Status 为零（无错误）

CALL TCP_RECV |  | //调用TCP_RECV
EN | ：SM0.0 | //使能输入,常1接收
ConnID | ：1 | //CPU 将连接 ID (ConnID) 用于此接收操作（连接过程中定义）
MaxLen | ：10 | // MaxLen 是要接收的最大字节数（例如，DataPt 中缓冲区的大小（1 到 1024））。
DataPtr | ：&VB2000 | // DataPtr 是指向接收数据存储位置的指针。这是指向 I、Q、M 或 V 存储器的 S7-200 SMART 指针（例如，＆VB100）
Done | ：V6001.1 | //当接收操作完成且没有错误时，指令置位 Done 输出。当指令置位 Done 输出时，Length 输出有效。
Busy | ：V6001.2 | // 当接收操作正在进行时，指令置位 Busy 输出。
Error | ：V6001.3 | // 当接收操作完成但发生错误时，指令置位 Error 输出
Status | ：VB6005 | // 如果指令置位 Error 输出，Status 输出会显示错误代码。如果指令置位 Busy 或 Done 输出，Status 为零（无错误）。
Length | ：VW6006 | //Length 是实际接收的字节数。

图2. 调用发送和接收指令

3.分配库存储区，如图3 所示。

图3. 分配库存储区

注意：为保证指令库可以正常工作，分配库存储区的时候，一定不能与程序中使用的其他 V 区地址重叠！！

S7-300 侧硬件组态和编程 ( 服务器侧组态编程 )

1. 使用 TIA V13 SP1 Upd 9 软件 Portal 视图中，创建新项目

2. 添加硬件并命名PLC

进入 “项目视图”，在“项目树” 下双击 “添加新设备”，在对话框中选择所使用的 S7-300 CPU 添加到机架上，命名为 PLC_2 如图4 所示

图4. 添加新设备

3. 启用时钟位

为了编程方便，使用 CPU 属性中定义的时钟位，定义方法如下：
在 “项目树” > “PLC_2” > “设备组态” 中，选中 CPU ，然后在下面的属性窗口中，“属性” > “时钟存储器” 下，将时钟位定义在 MB0，如图5所示。
时钟位我们使用 M0.7 ，它是频率为 0.5 Hz 的脉冲，可以使用它去自动激活发送任务。

图5.启用时钟位

4. 组态 CP 343-1 并为通信口分配以太网地址

在“项目树” > “ PLC_2” >设备视图>硬件目录>通信模块>PROFINET/以太网>CP 343-1，选中并拖拽 6GK7 343-1EX30-0XE0 到相应插槽，点击 CP 343-1上代表 PROFINET 通信口的绿色小方块，在下方会出现 PROFINET 接口的属性，在 “以太网地址” 下分配 CP 343-1 的 IP 地址为 192.168.0.102 ，子网掩码为255.255.255.0，如图6 所示

图6.为 CP 343-1 分配 IP 地址

5.网络组态TCP连接及配置通信参数

打开网络视图，检查连接类型为 TCP 连接，鼠标点中 PLC_2 上 CP343-1的 PROFINET 通信口的绿色小方框，拖拽出一条浅绿色的虚线 [image] ，松开鼠标；再次回到 CP343-1 的通信口上出现可建立连接图标 [image] ，双击通信口，连接已创建，高亮显示连接图标 [image] ，如图7所示

图7. 配置TCP连接及参数填写

6.创建用于交换数据的全局DB块及定义变量

通过“项目树”>“PLC_2”>“程序块”>“添加新块”，选择“数据块” 创建全局 DB 块，点击“确定” 生成数据块。如图8所示。S7-300 生成的数据块都是非优化的数据块，不用单独设置。

图8.添加新块

双击生成的 “数据块_1” ( DB5 ) ，定义数组，10 个字节用于发送，10个字节用于接收，然后编译数据块。结果如图9所示。

图9. 定义交换数据区

7.在OB1中调用 AG_SEND 和AG_RECV

进入 “项目树” > “ PLC_2” > “程序块” > “OB1” 主程序中，从右侧窗口 “指令”> “通信”> “通信处理器”> “Simatic NET CP”下调用 AG_SEND 和 AG_RECV 指令，调用结果如图10所示。

图10. 调用发送和接收指令

接收和发送指令调用需要注意：

程序块的 ID 要与网络视图建立TCP连接中设置的 ID 保持一致。

SEND 和 RECV 为交换数据缓冲区 参数的填写方法 ( 以 AG_RECV 程序块为例 )：

1、直接输入 : P#DB5.DBX10.0 BYTE 10

2、打开数据块，点击数据块右上角浮动按钮 [image] ，移动数据块与OB1并排显示，选中数据块变量名称 “ TCP_RCV ” 拖拽到 AG_RECV 指令 RECV 参数处，该区域显示为绿色，释放鼠标即可。

通信结果

将 S7-300 和 S7-200 SMART程序编译，下载 ；

S7-200 SMART 侧触发 TCP_CONNECT 指令的Req （V6010.0 置位为1 ）以建立连接 ；

通信结果如下：


S7-200 SMART 与调试助手之间 TCP 通信

TCP 协议通信

TCP 通信为面向连接的通信，需要双方都调用指令以建立连接及交换数据。S7-200 SMART 与 TCP&UDP Debug通过 TCP 通信，在 TCP&UDP Debug建立客户端或服务器，在 S7-200 SMART 调用 Open User Communication 库指令( TCP_CONNECT,DISCONNECT,TCP_SEND,TCP_RECV) 。

客户端：主动建立连接，可以理解为主站 ； 服务器：被动建立连接，可以理解为从站。

注意：

S7-200 SMART 在 CPU 硬件固件及编程软件版本均升级到 V2.2 之后才开始支持开放式通信。编程软件版本低于V2.2，无 Open User Communication 库指令；硬件固件低于 V2.2，硬件不支持开放式通信协议。

S7-200 SMART TCP 连接资源：8个主动连接资源，8个被动连接资源

S7-200 SMART TCP 通信数据量：1024 字节

硬件和软件需求及所完成的通信任务

硬件：
① PC （带以太网卡）（IP 地址 192.168.0.254 ；子网掩码 255.255.255.0）
② S7-200 SMART CPU (固件版本V2.2) ( IP 地址 192.168.0.20 ；子网掩码 255.255.255.0）
③ TP 以太网电缆
软件：
① TCP&UDP Debug
② STEP 7 Micro/WIN SMART （ 软件版本 V2.2 ）
所完成的通信任务：
① TCP&UDP Debug 发送 10 个字节数据： -->（ S7- 200 SMART 侧 ） VB2000~VB2009
② TCP&UDP Debug 接收 10 个字节数据： <-- ( S7-200 SMART 侧 ） VB0~VB9

TCP&UDP Debug设置（客户端设置）

1. 打开TCP&UDP Debug软件

2. 右键“客户端模式”---“创建连接”

如图1所示，创建连接

图1.创建连接

① 选择连接类型：TCP
② 填写S7-200 SMART的IP地址及端口号
③ 设置PC的端口号
④ 单击创建

3. 右键“客户端模式”----“连接”

图2. 建立连接

① 蓝色圆点：未建立连接；黄色三角箭头：正在建立连接；绿色三角箭头：连接建立成功；
② 勾选“自动连接”后，点击连接按钮。

TCP&UDP Debug设置（服务器设置）

1. 打开TCP&UDP Debug软件

2. 右键“服务器模式”---“创建服务器”

图3. 创建服务器

① 选择PC的端口号后，点击确定

3. 右键“服务器模式”----“启动服务器”

图4. 启动服务器

S7-200 SMART侧编程

1.打开STEP 7 Micro/WIN SMART>项目树>指令树>库>Open User Communication ,调用TCP_CONNECT，如图5、图6所示。

图5. 开放式以太网通讯指令库

图6. TCP连接块

表1. 引脚说明

TCP_CONNECT
//调用TCP_CONNECT
EN
：SM0.0
//使能输入
Req
：V6010.0
//如果 Req = TRUE，CPU 启动连接操作。如果 Req = FALSE，则输出显示连接的当前状态。使用上升沿触发
Active
：SM0.0闭点
//TRUE = 主动连接 ;FALSE = 被动连接
ConnID
：1
// CPU 使用连接 ID (ConnID) 为其它指令标识该连接。可能的 ConnID 范围为 0 到 65534。
IPaddr1~4
：0~0
//IPaddr1 是 IP 地址的最高有效字节，IPaddr4 是 IP 地址的最低有效字节。服务器侧IP地址写0，表示接收所有请求
RemPort
：0
//RemPort 是远程设备上的端口号。远程端口号范围为 1 到 49151。对于被动连接，使用零。
LocPort
：2000
// LocPort 是本地设备上的端口号。本地端口号范围为 1 到 49151，但存在一些限制。
DONE
：V6000.0
// 当连接操作完成且没有错误时，指令置位 Done 输出。
BUSY
：V6000.1
// 当连接操作正在进行时，指令置位 Busy 输出。
ERROR
：V6000.2
// 当连接操作完成但发生错误时，指令置位 Error 输出
STATUS
：VB6002
// 如果指令置位 Error 输出，Status 输出会显示错误代码。如果指令置位 Busy 或 Done 输出，Status 为零（无错误）

2.调用TCP_SEND 和 TCP_RCV 指令，如图7、图8所示。

图7. TCP发送块

表2.引脚说明

CALL TCP_SEND
//调用TCP_SEND
EN
：SM0.5
//使能输入
Req
：SM0.5
//如果 Req = TRUE，CPU 启动发送操作。如果 Req = FALSE，则输出显示发送操作的当前状态。
ConnID
:1
//连接 ID (ConnID) 是此发送操作所用连接的编号。使用您为 TCP_CONNECT 操作选择的 ConnID。
DataLen
:10
//DataLen 是要发送的字节数（1 到 1024）。
DataPtr
：&VB0
//DataPtr 是指向待发送数据的指针。这是指向 I、Q、M 或 V 存储器的 S7-200 SMART 指针（例如，＆VB100）。
Done
：V6000.6
// 当连接操作完成且没有错误时，指令置位 Done 输出。
Busy
：V6000.7
// 当连接操作正在进行时，指令置位 Busy 输出。
Error
：V6001.0
// 当连接操作完成但发生错误时，指令置位 Error 输出。
Status
：VB6004
// 如果指令置位 Error 输出，Status 输出会显示错误代码。如果指令置位 Busy 或 Done 输出，Status 为零（无错误）

图8. 发TCP接收块

表3. 引脚说明

CALL TCP_RECV |  | //调用TCP_RECV
EN | ：SM0.0 | //使能输入，常1接收
ConnID | ：1 | //CPU 将连接 ID (ConnID) 用于此接收操作（连接过程中定义）。
MaxLen | ：10 | // MaxLen 是要接收的最大字节数（例如，DataPt 中缓冲区的大小（1 到 1024））。
DataPtr | ：&VB2000 | // DataPtr 是指向接收数据存储位置的指针。这是指向 I、Q、M 或 V 存储器的 S7-200 SMART 指针（例如，＆VB100）
Done | ：V6001.1 | //当接收操作完成且没有错误时，指令置位 Done 输出。当指令置位 Done 输出时，Length 输出有效。
Busy | ：V6001.2 | // 当接收操作正在进行时，指令置位 Busy 输出。
Error | ：V6001.3 | // 当接收操作完成但发生错误时，指令置位 Error 输出
Status | ：VB6005 | // 如果指令置位 Error 输出，Status 输出会显示错误代码。如果指令置位 Busy 或 Done 输出，Status 为零（无错误）。
Length | ：VW6006 | //Length 是实际接收的字节数。

3.分配库存储区，如图9 所示。

图9. 分配库存储区

注意：为保证指令库可以正常工作，分配库存储区的时候，一定不能与程序中使用的其他 V 区地址重叠！！

通信结果

以S7-200 SMART做服务器为例。将 S7-200 SMART 项目编译，下载并触发建立连接；在TCP&UDP Debug中点击连接。

通信结果如下：

图10. 测试结果


开放式以太网常见问题

常见问题

1、IP地址是否可以设置为0.0.0.0？

答：只可在服务器端将IP地址设置为0.0.0.0，此时S7-200 SMART CPU 接受来自任何远程 IP 地址的连接。

如果设置为非零地址，则CPU只接受指定IP地址的连接。客户端不可设置为0.0.0.0。

另，IP地址不能设置为：

(1)任何广播 IP 地址（例如，255.255.255.255）
(2)任何多播地址
(3)本地 CPU 的 IP 地址

2、客户端建立连接需要多长时间？

答：最多30s，客户端可能最多需要 30 秒的时间来确定远程设备是否允许连接。

此时服务器端显示 Busy 置位，直到连接建立。

3、连接断开之后会自动恢复连接么？

答：连接关闭后，S7-200 SMART 不会自动尝试重新连接到设备。如果远程设备断开设备连接，您的程序必须执行另一个 TCP_CONNECT 指令以重新连接设备。主动连接和被动连接皆如此。

4、为什么ERROR显示24号错误？

答：24号表示目前没有操作正在进行。表示空闲状态。


SMART之间的ISO通讯

ISO-on-TCP 协议

ISO-on-TCP 是一种使用 RFC 1006 的协议扩展。ISO-on-TCP 的主要优点是数据有一个明确的结束标志，可以知道何时接收到了整条消息。S7 协议 (Put/Get) 使用了ISO-on-TCP 协议。ISO-on-TCP 仅使用 102 端口，并利用 TSAP（传输服务访问点）将消息路由至适当接收方（而非 TCP 中的某个端口）。

S7-200 SMART与之间的ISO-on-TCP通讯可以通过两边调用OUC(开放式用户通讯)指令库中的ISO_CONNECT、TCP_SEND、TCP_RECV、DISCONNECT指令来实现。

图1.开放式用户通讯库

开放式用户通信库需要使用 50 个字节的 V 存储器。

开放式的用户通讯连接资源包括8个主动连接和8个被动连接。

只可从主程序或中断例程中调用库函数，但不可同时从这两个程序中调用。

所需条件：

1、软件版本：STEP 7-Micro/WIN SMART V2.2

2、SMART CPU 固件版本:V2.2

3、通讯硬件：TP电缆（以太网电缆）

4、PC(带以太网卡)

所完成的通讯任务：

将作为服务器端（192.168.0.102）的V3000-VB3003的数据传送到客户端（192.168.0.101）的VB3000-VB3003内。

S7-200 SMART 客户端编程

1、设置客户端的IP地址

设置IP地址为192.168.0.101

图2.设置IP地址

2、建立ISO-on-TCP 连接

调用ISO_CONNECT指令建立ISO连接。设置连接伙伴地址为192.168.0.102，连接标识ID为1，本地和远端的TSAP要交叉对应。TSAP不能少于三个字符。

利用SM0.0使能Active，设置为主动连接。

图3.建立ISO-on-TCP 连接

指令的参数

输入参数：

EN ：使能输入

Req：沿触发

Active :TURE=主动连接（客户端） FALSE=被动连接（服务器）

ConnID：连接ID为连接标识符，可能范围为0-65534

IPaddr1 ... IPaddr4 ：IP 地址的四个八位字节。IPaddr1 是 IP 地址的最高有效字节，IPaddr4 是 IP 地址的最低有效字节。

RemTsap：RemPort 是远程 TSAP 字符串。

LocTsap ：LocPort 是本地 TSAP 字符串。

输出参数：

Done：当连接操作完成且没有错误时，指令置位 Done 输出。

Busy： 当连接操作正在进行时，指令置位 Busy 输出。

Error：当连接操作完成但发生错误时，指令置位 Error 输出。

Status：如果指令置位 Error 输出，Status 输出会显示错误代码。具体错误代码对应详见手册 。如果指令置位 Busy 或 Done 输出，Status 为零（无错误）。

3、接收数据

将数据接收缓冲区设为4个字节，接收数据缓冲区以VB3000起始。

图4.调用TCP_RECV指令

指令的参数

输入参数：

EN ：使能输入

ConnID：连接 ID (ConnID) 是此发送操作的连接ID号。

MaxLen ：接收的最大字节数（1 到 1024）。

DataPtr ：指向接收数据存储位置的指针。

输出参数：

Length ：实际接收的字节数。仅当指令置位 Done 或 Error 输出时，Length 才有效。如果指令置位 Done 输出，则指令接收整条消息。如果指令置位 Error 输出，则消息超出缓冲区大小 (MaxLen) 并被截短。

4、终止通讯连接

用户可通过DISCONNECT指令终止指定ID的连接。

图5.调用DISCONNECT指令

参数说明：

输入参数：

EN :使能

Req：沿触发。

输出参数：

Done：当连接操作完成且没有错误时，指令置位 Done 输出。

Busy： 当连接操作正在进行时，指令置位 Busy 输出。

Error：当连接操作完成但发生错误时，指令置位 Error 输出。

Status：如果指令置位 Error 输出，Status 输出会显示错误代码。具体错误代码对应详见手册。如果指令置位 Busy 或 Done 输出，Status 为零（无错误）。

5、分配库存储区

开放式用户通信库需要使用 50 个字节的 V 存储器，用户需手动分配 。在指令树的程序中，以鼠标右键单击程序块，在弹出的快捷菜单中选择库存储器。如图所示：

图6.库存储器

在弹出的选项卡中设置库指令数据区：

图7.分配地址

S7-200 SMART 服务器端编程

1、设置服务器的IP地址

设置IP地址为192.168.0.102

图8.设置IP地址

2、建立ISO-on-TCP 连接

调用ISO_CONNECT指令建立ISO连接。设置连接伙伴地址为192.168.0.101，连接标识ID为1，本地和远端的TSAP要交叉对应。TSAP不能少于三个字符。

利用SM0.0常闭点使能Active，设置为被动连接。

图9.建立连接

3、发送数据

调用TCP_SEND指令将以VB3000为起始，数据长度为4字节的数据发送到连接ID为1指定的远程设备。

利用1HZ的时钟上升沿触发发送请求。

图10.调用TCP_SEND指令

指令的参数

输入参数：

EN ：使能输入

Req：沿触发

ConnID：连接 ID (ConnID) 是此发送操作的连接ID号。

DataLen ：DataLen 是要发送的字节数（1 到 1024）。

DataPtr：DataPtr 是指向待发送数据的指针。

输出参数：

Done：当连接操作完成且没有错误时，指令置位 Done 输出。

Busy： 当连接操作正在进行时，指令置位 Busy 输出。

Error：当连接操作完成但发生错误时，指令置位 Error 输出。

Status：如果指令置位 Error 输出，Status 输出会显示错误代码。具体的错误代码详见手册 。如果指令置位 Busy 或 Done 输出，Status 为零（无错误）。

监控结果

图11.监控结果

ISO-on-TCP 通信例程

为了更好地理解 ISO-on-TCP的编程，可参考下面的例程。

注意：

1. 该例程使用 STEP 7-Micro/WIN SMART 编写。

2.在建立连接时需先触发服务器端的建立连接指令，再触发客户端。

ISO-on-TCP_Clent 客户端程序

ISO-on-TCP_Server 服务器端程序

注意：

此指令库/程序的作者和拥有者对于该软件的功能性和兼容性不负任何责任。使用该软件的风险完全由用户自行承担。由于它是免费的，所以不提供任何担保，错误纠正和热线支持，用户不必为 此联系西门子技术支持与服务部门。


S7-200 SMART ISO-on-TCP 通信例程

S7-200 SMART 之间 ISO-on-TCP 通信例程

所需条件：

1、软件版本：STEP 7-Micro/WIN SMART V2.2

2、SMART CPU 固件版本:V2.2

3、通讯硬件：TP电缆（以太网电缆）

4、PC(带以太网卡)

所完成的通讯任务：

将作为服务器端（192.168.0.102）的V3000-VB3003的数据传送到客户端（192.168.0.101）的VB3000-VB3003内。

注意：

在建立连接时需先触发服务器端的建立连接指令，再触发客户端。

ISO-on-TCP_Clent 客户端程序

ISO-on-TCP_server 服务器端程序

以上例程的详细描述可以参考：S7-200 SMART 之间 ISO-on-TCP 通信

免责声明

本例程仅供参考，程序中的CPU版本、类型可能与用户实际使用不同，用户可能需要先对例子程序做修改和调整，才能将其用于测试。本例程的作者和拥有者对于该例程的功能性和兼容性不负任何责任，使用该例程的风险完全由用户自行承担。由于它是免费的，所以不提供任何担保，错误纠正和热线支持，用户不必为此联系西门子技术支持与服务部门。


S7-200 SMART Communicate with S7-1200

S7-200 SMART CPU与S7-1200 CPU集成PN口的ISO on TCP通信

S7-200 SMART CPU与S7-1200 CPU 通过ISO on TCP 通信，需要在双方都建立连接。在S7-1200调用 T-block 指令(TCON, TDISCON, TSEND, TRCV) 、在S7-200SMART调用Open User Communication库指令(ISO_CONNECT,DISCONNECT,TCP_SEND,TCP_RECV)来实现。通信方式为双边通信，因此双方的发送和接收指令必须成对出现。
注意：
S7-200 SMARTPLC V2.2 版本才开始支持ISO on TCP通信，早期版本的CPU需要升级固件后方可支持ISO on TCP。

硬件和软件需求及所完成的通信任务

硬件：
① S7-1200 CPU (IP地址:192.168.0.3 子网掩码:255.255.255.0)
② S7-200 SMART CPU (固件V2.2)(IP地址:192.168.0.2 子网掩码:255.255.255.0)
③ PC（带以太网卡）
④ TP以太网电缆
软件：
① STEP7 V13 SP1
② STEP 7 Micro/WIN SMART V2.2
所完成的通信任务：
① S7-1200 将通信数据区 DB11 中的200 个字节发送到 S7-200 SMART的VB 数据区。
② S7-1200 读取 S7-200 SMART中的VB数据区存储到S7-1200 的数据区DB12

S7-1200侧硬件组态和编程

1. 使用TIA V13 软件新建一个项目，添加1个S7-1200站点并为其分配网络和IP地址 ，如图1.所示

图1.组态S7-1200并分配IP地址

为编程方便，使用CPU属性中定义的时钟位，在设备视图双击CPU设置"系统和时钟存储器"，如图2所示。

图2. 启用时钟位

2.在S7-1200 中调用建立连接指令，进入 "项目树" > " PLC_1" > "程序块" > "OB1" 主程序中，从右侧窗口 "指令"> "通信">"开放式用户通信"下调用 "TCON" 指令，配置连接参数，如图3.所示。

图3.调用"TCON"指令并配置连接参数

表1.TCON 指令参数说明

REQ | // 为1时，开始建立连接
ID | // 连接号，在组态窗口配置后自动生成
CONNECT | // 连接数据，在组态窗口配置后自动生成
DONE | // 为1时，表示已成功建立连接
BUSY | // 为1时，正在建立连接
ERROR | // 为1时，有故障发生
STATUS | // 状态代码

3.创建发送数据块DB11（接收区数据块DB12类似），数据块中定义200个字节的数组，数据块的属性中需要取消"优化的块访问"选项。如图4. 所示。

图4.创建发送数据块DB11

4.在OB1中调用TSEND指令来发送数据，如图5.所示

图5： 调用TEND发送指令

表2.TSEND 指令参数说明

REQ | // 在检测到上升沿时启动发送作业
ID | // 连接号，要与TCON连接参数中的连接ID一致
LEN | // 发送的字节数
DATA | // 发送区，包含地址和长度
DONE | // 为1时，发送完成
BUSY | // 为1时，发送作业仍未完成，此时无法启动新作业
ERROR | // 为1时，有故障发生
STATUS | // 状态代码

5.在OB1中调用TRCV指令来接收数据，如图6.所示

图6： 调用TRCV接收指令

表3.TRCV 指令参数说明

EN_R | // 为1时，开始接收
ID | // 连接号，要与TCON连接参数中的连接ID一致
LEN | // 接收长度
DATA | // 接收区，包含地址和长度
NDR | // 为1时，接收完成
BUSY | // 为1时，正在进行接收作业
ERROR | // 为1时，有故障发生
STATUS | // 状态代码
RCVD_LEN | // 实际接收到的数据量（以字节为单位）

S7-200 SMART侧编程

1.调用ISO_CONNECT指令建立连接,伙伴TSAP(RemTsap)与本地TSAP(LocTsap)必须与S7-300中的连接配置交叉对应。如图7.所示

图7： 调用ISO_CONNECT建立连接指令

表4.ISO_CONNECT指令参数说明

Req | // 为1时，开始建立连接
Active | // 是否主动建立连接，必须与S7-300中的连接配置相反。
ConnID | // 连接ID
RemTsap | // 伙伴TASP
LocTsap | // 本地TSAP
DONE | // 为1时，表示已成功建立连接
BUSY | // 为1时，正在建立连接
ERROR | // 为1时，有故障发生
STATUS | // 状态代码

2.调用TCP_RECV指令接收数据。如图8.所示

图8： 调用TCP_RECV接收指令

表5. TCP_RECV 指令参数说明

ConnID | //连接号，要与ISO_CONNECT指令中填写的的连接ID一致
MaxLen | // 接收长度(超出此长度的消息无法接收)
DataPtr | // 接收区，包含地址和长度
Done | // 为1时，接收完成
Busy | // 为1时，正在进行接收作业
Error | // 为1时，有故障发生
Status | // 状态代码
Length | // 接收到的数据长度(字节)

3.调用TCP_SEND指令发送数据。如图9.所示

图9： 调用TCP_SEND发送指令

表6. TCP_SEND 指令参数说明

Req | // 在检测到上升沿时启动发送作业
ConnID | // 连接号，要与ISO_CONNECT指令中填写的的连接ID一致
Datalen | // 作业要发送的最大字节数
DataPtr | // 发送区，包含地址和长度
Done | // 为1时，接收完成
Busy | // 为1时，发送作业仍未完成，此时无法启动新作业
Error | // 为1时，有故障发生
Status | // 状态代码

4.为通信指令分配库存储器。如图10所示

监控通信结果

图11 监控结果


S7-200 SMART Communicate with S7-300PN

S7-200 SMART CPU与S7-300 CPU集成PN口的ISO on TCP通信

S7-200 SMART CPU与S7-300 CPU 集成 PN 口通过ISO on TCP 通信，需要在双方都建立连接。在S7-300调用 T-block 指令(TCON, TDISCON, TSEND, TRCV) 、在S7-200SMART调用Open User Communication库指令(ISO_CONNECT,DISCONNECT,TCP_SEND,TCP_RECV)来实现。通信方式为双边通信，因此双方的发送和接收指令必须成对出现。
注意：
S7-200 SMARTPLC V2.2 版本才开始支持ISO on TCP通信，早期版本的CPU需要升级固件后方可支持ISO on TCP。

硬件和软件需求及所完成的通信任务

本文采用1个S7-300PN CPU，1个S7-200SMART CPU为例，介绍它们之间的ISO on TCP通信。
硬件：
① S7-300PN CPU (IP地址:192.168.0.4 子网掩码:255.255.255.0)
② S7-200 SMART CPU (固件V2.2)(IP地址:192.168.0.2 子网掩码:255.255.255.0)
③ PC （带以太网卡）
④ TP以太网电缆
软件：
① STEP7 V13 SP1
② STEP 7 Micro/WIN SMART V2.2
所完成的通信任务：
① S7-300 将通信数据区 DB11 中的200 个字节发送到 S7-200 SMART的VB 数据区。
② S7-300 读取 S7-200 SMART中的VB数据区存储到S7-1200 的数据区DB12。

S7-300侧硬件组态和编程

1. 使用TIA V13 软件新建一个项目，添加1个S7-300站点并为其分配网络和IP地址 ，如图1.所示

图1.组态S7-300并分配IP地址

为编程方便，使用CPU属性中定义的时钟位，在设备视图双击CPU设置时钟存储器，如图2所示。

图2. 启用时钟位
2.在PLC_1的OB1中调用建立连接指令，进入 "项目树" > " PLC_1" > "程序块" > "OB1" 主程序中，从右侧窗口 "指令"> "通信">"开放式用户通信"下调用 "TCON" 指令，配置连接参数，如图3.所示。

图3.调用"TCON"指令并配置连接参数

表1.TCON 指令参数说明

REQ | // 为1时，开始建立连接
ID | // 连接号，在组态窗口配置后自动生成
CONNECT | // 连接数据，在组态窗口配置后自动生成
DONE | // 为1时，表示已成功建立连接
BUSY | // 为1时，正在建立连接
ERROR | // 为1时，有故障发生
STATUS | // 状态代码

3.在PLC_1中创建发送数据块DB11（接收区数据块DB12类似），数据块中定义200个字节的数组，如图4. 所示。

图4.创建发送数据块DB11

4.在PLC_1的OB1中调用"TSEND"指令来发送数据，如图5.所示

图5： 调用TEND发送指令

表2.TSEND 指令参数说明

REQ | // 在检测到上升沿时启动发送作业
ID | // 连接号，要与TCON连接参数中的连接ID一致
LEN | // 发送的字节数
DATA | // 发送区，包含地址和长度
DONE | // 为1时，发送完成
BUSY | // 为1时，发送作业仍未完成，此时无法启动新作业
ERROR | // 为1时，有故障发生
STATUS | // 状态代码

5.在PLC_1的OB1中调用TRCV指令来接收数据，如图6.所示

图6： 调用TRCV接收指令

表3.TRCV 指令参数说明

EN_R | // 为1时，开始接收
ID | // 连接号，要与TCON连接参数中的连接ID一致
LEN | // 接收长度
DATA | // 接收区，包含地址和长度
NDR | // 为1时，接收完成
BUSY | // 为1时，正在进行接收作业
ERROR | // 为1时，有故障发生
STATUS | // 状态代码
RCVD_LEN | // 实际接收到的数据量（以字节为单位）

S7-200 SMART侧编程

1.调用ISO_CONNECT指令建立连接,伙伴TSAP(RemTsap)与本地TSAP(LocTsap)必须与S7-300中的连接配置交叉对应。如图7.所示

图7： 调用ISO_CONNECT建立连接指令

表4.ISO_CONNECT指令参数说明

Req | // 为1时，开始建立连接
Active | // 是否主动建立连接，必须与S7-300中的连接配置相反。
ConnID | // 连接ID
RemTsap | // 伙伴TASP
LocTsap | // 本地TSAP
DONE | // 为1时，表示已成功建立连接
BUSY | // 为1时，正在建立连接
ERROR | // 为1时，有故障发生
STATUS | // 状态代码

2.调用TCP_RECV指令接收数据。如图8.所示

图8： 调用TCP_RECV接收指令

表5. TCP_RECV 指令参数说明

ConnID | //连接号，要与ISO_CONNECT指令中填写的的连接ID一致
MaxLen | // 接收长度(超出此长度的消息无法接收)
DataPtr | // 接收区，包含地址和长度
Done | // 为1时，接收完成
Busy | // 为1时，正在进行接收作业
Error | // 为1时，有故障发生
Status | // 状态代码
Length | // 接收到的数据长度(字节)

3.调用TCP_SEND指令发送数据。如图9.所示

图9： 调用TCP_SEND发送指令

表6. TCP_SEND 指令参数说明

Req | // 在检测到上升沿时启动发送作业
ConnID | // 连接号，要与ISO_CONNECT指令中填写的的连接ID一致
Datalen | // 作业要发送的最大字节数
DataPtr | // 发送区，包含地址和长度
Done | // 为1时，接收完成
Busy | // 为1时，发送作业仍未完成，此时无法启动新作业
Error | // 为1时，有故障发生
Status | // 状态代码

4.为通信指令分配库存储器。如图10所示

监控通信结果

图11 监控结果


S7-200 SMART Communicate with CP343

S7-200 SMART CPU与S7-300 CP343进行ISO on TCP通信

S7-200 SMART CPU与S7-300 CP343通过ISO on TCP 通信，需要在双方都建立连接。在S7-300通过网络组态创建连接并调用 AG_SEND和AG_RECV指令、在S7-200SMART调用Open User Communication库指令(ISO_CONNECT,DISCONNECT,TCP_SEND,TCP_RECV)来实现。通信方式为双边通信，因此双方的发送和接收指令必须成对出现。
注意：
S7-200 SMARTPLC V2.2 版本才开始支持ISO on TCP通信，早期版本的CPU需要升级固件后方可支持ISO on TCP。

硬件和软件需求及所完成的通信任务

硬件：
① S7-300 CPU 和 CP343(IP地址:192.168.0.5 子网掩码:255.255.255.0)
② S7-200 SMART CPU (固件V2.2)(IP地址:192.168.0.2 子网掩码:255.255.255.0)
③ PC （带以太网卡）
④ TP以太网电缆
软件：
① STEP7 V13 SP1
② STEP 7 Micro/WIN SMART V2.2
所完成的通信任务：
① S7-300 将通信数据区 DB11 中的200 个字节发送到 S7-200 SMART的VB 数据区。
② S7-300 读取 S7-200 SMART中的VB数据区存储到S7-1200 的数据区DB12。

S7-300侧硬件组态和编程

1. 使用TIA V13 软件新建一个项目，添加1个S7-300CPU以及CP343 ，并为CP343分配网络和IP地址 ，如图1.所示

图1.组态S7-300和CP343并分配IP地址

为编程方便，使用CPU属性中定义的时钟位，在设备视图双击CPU设置时钟存储器，如图2所示。

图2. 启用时钟位

2.在S7-300中添加ISO on TCP连接，打开 "设备组态" > "网络视图" ，在窗口左上角选中"连接"，然后右键点击CPU建立新连接,类型选择"ISO-on-TCP".如图3所示。

图3.在网络视图建立新连接

3.在"常规"和"地址详细信息"页面配置详细连接参数如IP地址、TSAP等，如图4. 所示。

图4.配置连接参数

4.创建发送数据块DB11（接收区数据块DB12类似），数据块中定义200个字节的数组，如图5.所示。

图5.创建发送数据块DB11

5.在OB1中，在 "指令树" > "通信" > "通信处理器"> "Simatic NET CP"下，调用AG_SEND指令发送数据，如图6.所示

图6： 调用AG_SEND发送指令

表1.AG_SEND 指令参数说明

ACT | // 为1时,启动发送作业
ID | // 连接号，要与图3 中的连接ID一致
LADDR | // CP卡硬件地址，必须填写16进制数据
SEND | // 发送区，包含地址和长度
LEN | // 发送的字节数
DONE | // 为1时，发送完成
ERROR | // 为1时，有故障发生
STATUS | // 状态代码

6.在OB1中，在 "指令树" > "通信" > "通信处理器"> "Simatic NET CP"下，调用AG_RECV指令接收数据，如图7.所示

图7： 调用AG_RECV接收指令

表2. AG_RECV 指令参数说明

ID | // 连接号，要与TCON连接参数中的连接ID一致
LADDR | // CP卡硬件地址，必须填写16进制数据
RECV | // 接收区，包含地址和长度
NDR | // 为1时，接收完成
ERROR | // 为1时，有故障发生
STATUS | // 状态代码
LEN | // 实际接收到的数据量（以字节为单位）

S7-200 SMART侧编程

1.调用ISO_CONNECT指令建立连接,伙伴TSAP(RemTsap)与本地TSAP(LocTsap)必须与S7-300中的连接配置交叉对应。如图8.所示

图8： 调用ISO_CONNECT建立连接指令

表3.ISO_CONNECT指令参数说明

Req | // 为1时，开始建立连接
Active | // 是否主动建立连接，必须与S7-300中的连接配置匹配。
ConnID | // 连接ID
RemTsap | // 伙伴TASP
LocTsap | // 本地TSAP
DONE | // 为1时，表示已成功建立连接
BUSY | // 为1时，正在建立连接
ERROR | // 为1时，有故障发生
STATUS | // 状态代码

2.调用TCP_RECV指令接收数据。如图9.所示

图9： 调用TCP_RECV接收指令

表4. TCP_RECV 指令参数说明

ConnID | //连接号，要与ISO_CONNECT指令中填写的的连接ID一致
MaxLen | // 接收长度(超出此长度的消息无法接收)
DataPtr | // 接收区，包含地址和长度
Done | // 为1时，接收完成
Busy | // 为1时，正在进行接收作业
Error | // 为1时，有故障发生
Status | // 状态代码
Length | // 接收到的数据长度(字节)

3.调用TCP_SEND指令发送数据。如图10.所示

图10： 调用TCP_SEND发送指令

表5. TCP_SEND 指令参数说明

Req | // 在检测到上升沿时启动发送作业
ConnID | // 连接号，要与ISO_CONNECT指令中填写的的连接ID一致
Datalen | // 作业要发送的最大字节数
DataPtr | // 发送区，包含地址和长度
Done | // 为1时，接收完成
Busy | // 为1时，发送作业仍未完成，此时无法启动新作业
Error | // 为1时，有故障发生
Status | // 状态代码

4.为通信指令分配库存储器。如图11所示

监控通信结果

图12 监控结果


SMART之间的UDP通信

UDP通信

UDP（用户数据报协议）

用户数据报协议 (UDP) 使用一种协议开销最小的简单无连接传输模型。UDP 协议中没有握手机制，因此协议的可靠性仅取决于底层网络。无法确保对发送、定序或重复消息提供保护。对于数据的完整性，UDP 还提供了校验和，并且通常用不同的端口号来寻址不同连接伙伴。

S7 200 SMART与之间的UDP通讯可以通过两边调用OUC(开放式用户通讯)指令库中的UDP_CONNECT、UDP_SEND、UDP_RECV、DISCONNECT指令来实现。

图1.开放式用户通讯库

开放式用户通信库需要使用 50 个字节的 V 存储器。

开放式的用户通讯连接资源包括8个主动连接和8个被动连接。由于UDP通讯只能算作被动连接，所以UDP连接只有8个被动连接。

只可从主程序或中断例程中调用库函数，但不可同时从这两个程序中调用。

所需条件：

1、软件版本：STEP 7-Micro/WIN SMART V2.2

2、SMART CPU固件版本:V2.2

3、通讯硬件：TP电缆（以太网电缆）

4、PC(带以太网卡)

所完成的通讯任务：

将PLC_1（IP地址为192.168.0.101）中VB1000的数据传送到PLC_2（IP地址为192.168.0.102）的VB2000中

S7-200 SMART PLC 1侧编程

1、 设置本机IP地址

在系统块中设置PLC_1的IP地址为192.168.0.101

图2. 设置IP地址

2、调用UDP_CONNECT指令。

本地注册连接ID为15，本地端口为2000的UDP连接。

图3.调用UDP_CONNECT

参数说明：

输入参数：

EN： 使能

Req :请求操作，沿触发。

ConnID: 连接ID是连接的标识符。范围为0-65534。

LocPort:本地 CPU 上的端口号，对于所有被动连接，本地端口号必须唯一。

本地端口号的规则如下：

  • 有效端口号范围为 1 到 49151。
  • 不能使用端口号 20、21、25、80、102、135、161、162、443以及34962至34964。这些端口具有特定用途。
  • 建议采用的端口号范围为 2000 到 5000。
  • 对于被动连接，本地端口号必须唯一（不重复）。

输出参数：

Done：当连接操作完成且没有错误时，指令置位 Done 输出。

Busy： 当连接操作正在进行时，指令置位 Busy 输出。

Error：当连接操作完成但发生错误时，指令置位 Error 输出。

Status：如果指令置位 Error 输出，Status 输出会显示错误代码。具体错误代码对应详见手册。如果指令置位 Busy 或 Done 输出，Status 为零（无错误）。

3、调用发送数据指令UDP_SEND

UDP_SEND 指令将从VB1000开始的100个字节， 传输到通过 IP 地址192.168.0.102和端口 2001指定的远程设备。

利用1HZ的时钟上升沿触发发送请求。如果远程设备未接收到发送的信息，不会报错。

图4. 调用发送指令

参数说明：

输入参数：

EN： 使能

Req ：发送请求，沿触发。

ConnID： 连接ID是连接的标识符。范围为0-65534。

DataLen： 要发送的字节数（1 到 1024）。

DataPtr：指向待发送数据的指针。

IPaddr1 ... IPaddr4 ：这些是 IP 地址的四个八位字节。IPaddr1 是 IP 地址的最高有效字节，IPaddr4 是 IP 地址的最低有效字节。

RemPort：远程设备上的端口号。远程端口号范围为 1 到 49151。

输出参数：

Done：当连接操作完成且没有错误时，指令置位 Done 输出。

Busy： 当连接操作正在进行时，指令置位 Busy 输出。

Error：当连接操作完成但发生错误时，指令置位 Error 输出。

Status：如果指令置位 Error 输出，Status 输出会显示错误代码。具体错误代码对应详见手册。如果指令置位 Busy 或 Done 输出，Status 为零（无错误）。

4、终止通讯连接

用户可通过DISCONNECT指令终止指定ID的连接。

图5.调用DISCONNECT指令

参数说明：

输入参数：

EN :使能

Req：沿触发指令。

输出参数：

Done：当连接操作完成且没有错误时，指令置位 Done 输出。

Busy： 当连接操作正在进行时，指令置位 Busy 输出。

Error：当连接操作完成但发生错误时，指令置位 Error 输出。

Status：如果指令置位 Error 输出，Status 输出会显示错误代码。具体错误代码对应详见手册。如果指令置位 Busy 或 Done 输出，Status 为零（无错误）。

5、分配库存储区

开放式用户通信库需要使用 50 个字节的 V 存储器，用户需手动分配 。在指令树的程序中，以鼠标右键单击程序块，在弹出的快捷菜单中选择库存储器。如图所示：

图6.库存储器

在弹出的选项卡中设置库指令数据区：

图7.分配地址

S7-200 SMART PLC 2侧编程

1、在系统块中设置PLC_2的IP地址为192.168.0.102

图8. 设置IP地址

2、注册UDP连接

注册连接ID为1，本地端口号为2001的连接。

图9.调用UDP_CONNECT

3、调用接收数据指令UDP_RECV

UDP_RECV 指令通过现有连接接收数据。该指令仅用于 UDP 协议以及通过 UDP_CONNECT 创建的连接。

该指令将远程设备传送来的数据传送到VB2000中。

图10. 调用UDP_RECV指令

4、监控结果

图11.监控结果

UDP 通信例程

为了更好地理解 UDP的编程，可参考下面的例程。

注意：

该例程使用 STEP 7-Micro/WIN SMART 编写。

UDP PLC1程序

UDP PLC2程序

注意：

此指令库/程序的作者和拥有者对于该软件的功能性和兼容性不负任何责任。使用该软件的风险完全由用户自行承担。由于它是免费的，所以不提供任何担保，错误纠正和热线支持，用户不必为 此联系西门子技术支持与服务部门。


S7-200 SMART 之间UDP通信例程

所需条件：

1、软件版本：STEP 7-Micro/WIN SMART V2.2

2、SMART CPU固件版本:V2.2

3、通讯硬件：TP电缆（以太网电缆）

4、PC(带以太网卡)

所完成的通讯任务：

将PLC_1（IP地址为192.168.0.101）中VB1000的数据传送到PLC_2（IP地址为192.168.0.102）的VB2000中

注意：

该例程使用 STEP 7-Micro/WIN SMART 编写。

UDP PLC1例程

UDP PLC2例程

以上例程的详细描述可以参考：S7-200 SMART 之间 UDP 通信

免责声明

本例程仅供参考，程序中的CPU版本、类型可能与用户实际使用不同，用户可能需要先对例子程序做修改和调整，才能将其用于测试。本例程的作者和拥有者对于该例程的功能性和兼容性不负任何责任，使用该例程的风险完全由用户自行承担。由于它是免费的，所以不提供任何担保，错误纠正和热线支持，用户不必为此联系西门子技术支持与服务部门。


S7-200 SMART Communicate with S7-1200

S7-200 SMART CPU与S7-1200进行UDP通信

S7-200 SMART CPU与S7-1200 CPU 通过UDP通信，需要在双方都注册服务。S7-1200侧调用 T-block 指令(TCON、TDISCON、TUSEND、TURCV)，S7-200 SMART侧调用Open User Communication库指令(UDP_CONNECT、DISCONNECT、UDP_SEND、UDP_RECV)来实现。通信方式为双边通信，因此双方的发送和接收指令必须成对出现。

注意： S7-200 SMARTPLC V2.2 版本才开始支持UDP通信，早期版本的CPU需要升级固件到V2.2。

硬件和软件需求及所完成的通信任务

本文采用1个CPU1211C(6ES7 211-1AE40-0XB0)，1个S7-200 SMART PLC为例，介绍它们之间的UDP通信。
硬件：
① S7-1200 CPU (固件V4.1)
② S7-200 SMART CPU (固件V2.2)
③ PC （带以太网卡）
④ TP以太网电缆
软件：
① STEP7 V13 SP1
② STEP 7 Micro/WIN SMART V2.2
所完成的通信任务：
① S7-1200 将通信数据区MB100开始的10 个字节发送到 S7-200 SMART的VB数据区。
② S7-1200 读取 S7-200 SMART中的VB数据区存储到MB200开始的10个字节 。

S7-1200侧硬件组态

1. 使用TIA V13 软件新建一个项目，添加硬件并命名为PLC_1，如图1所示。

图1. 添加新设备

为编程方便，使用CPU属性中定义的时钟位，在设备视图双击CPU设置系统和时钟存储器，如图2所示。

图2. 启用时钟位

2 为PROFINET通信口分配以太网地址，如图3所示。

图3 分配以太网地址

1200侧调用并配置"TCON"、“TUSEND”、“TURCV”通信指令

1 .在PLC_1的OB1中调用"TCON"通信指令，如图4 所示。

图4. 定义TCON连接参数（选择UDP连接）

2 .在PLC_1的OB1中调用"TUSEND"发送通信块接口参数，如图5 所示。

图5 调用TUSEND
定义UDP连接参数数据块，新建DB块，如图6所示。

图6 创建UDP连接参数数据块

定义PLC_1的“TUSEND”发送通信块接口参数，如图7所示。

图7 定义TUSEND接口参数

在UDP_CON DB块内设置连接设备的IP地址与端口号，如图8所示

图8 UDP连接详细参数

TUSEND接口参数说明如表1所示。

表1

CALL TUSEND

, %DB3

//调用TUSEND，使用背景DB块:DB3

REQ

：=%M0.3

//使用2Hz的时钟脉冲，上升沿激活发送任务

ID

：=1

//连接号，要与连接配置中一致，见图4的连接ID

LEN

：=10

// 发送数据长度

DATA

：=P#M100.0 BYTE 10

// 发送数据区的数据，M区或者DB块，需要注意DB块要选用绝对寻址

ADDR

：=%DB5

//UDP对方连接参数，包括对方IP地址及端口

DONE

：=%M11.0

// 任务执行完成并且没有错误，该位置1

BUSY

：=%M11.1

// 该位为1，代表任务未完成，不能激活新任务

ERROR

：=%M11.2

// 通信过程中有错误发生，该位置1

STATUS

：=%MW22

// 有错误发生时，会显示错误信息号

3 在PLC_1的OB1中调用接受指令TURCV并配置基本参数，如图9所示。

图9 调用TURCV

定义PLC_1的“TURCV”发送通信块接口参数，如图10所示。

图10 定义TURCV接口参数

TURCV接口参数说明如表2所示。

表2 TURCV各参数意义

CALL TURCV

, %DB4

//调用TURCV，使用背景DB块:DB4

REQ

：=%14.0

//准备好接受数据

ID

：=1

//连接号，要与连接配置中一致，见图4的连接ID

LEN

：=10

// 接受数据长度

DATA

：=P#M200.0 BYTE 10

// 接受数据区的数据，M区或者DB块，需要注意DB块要选用绝对寻址

ADDR

：=%DB5

//UDP对方连接参数，包括对方IP地址及端口

DONE

：=%M12.0

// 任务执行完成并且没有错误，该位置1

BUSY

：=%M12.1

// 该位为1，代表任务未完成，不能激活新任务

ERROR

：=%M12.2

// 通信过程中有错误发生，该位置1

STATUS

：=%MW24

// 有错误发生时，会显示错误信息号

RCVD_LEN

：=%MW26

// 实际接受数据的字节数

S7-200 SMART编程

1 打开库如图11所示。

图11 开放式库指令

2 调用UDP_CONNECT如图12所示，各参数意义如图表3所示。

图12 定义UDP_CONNECT接口参数

表3 UDP_CONNECT各参数意义

UDP_CONNECT

//调用UDP_CONNECT

EN

=M6.0

//使能输入

Req

=M6.1

//如果 Req = TRUE，CPU 启动连接操作。如果 Req = FALSE，则输出显示连接的当前状态。

ConnID

=15

// CPU 使用连接 ID (ConnID) 为其它指令标识该连接。可能的 ConnID 范围为 0 到 65534。

LocPort

=2000

// LocPort 是本地设备上的端口号。本地端口号范围为 1 到 49151。

DONE

=M0.0

// 当连接操作完成且没有错误时，指令置位 Done 输出。

BUSY

=M0.1

// 当连接操作正在进行时，指令置位 Busy 输出。

ERROR

=M0.2

// 当连接操作完成但发生错误时，指令置位 Error 输出

STATUS

=MB1

// 如果指令置位 Error 输出，Status 输出会显示错误代码。如果指令置位 Busy 或 Done 输出，Status 为零（无错误）。

4 分配库存储区如图13所示。

图13 分配库存储区

注意：为保证指令库可以正常工作，分配库存储区的时候，一定不能与程序中使用的其他 V 区地址重叠！！

3 调用UDP_SEND如图14所示，各参数的意义如表4所示。

图14 定义UDP_SEND接口参数

表4 UDP_SEND各参数意义

CALL UDP_SEND

//调用UDP_SEND
EN
=M6.2

//使能输入
Req
=SM0.5

//如果 Req = TRUE，CPU 启动发送操作。如果 Req = FALSE，则输出显示发送操作的当前状态。
ConnID
15

//连接 ID (ConnID) 是此发送操作所用连接的编号（连接过程中通过 UDP_CONNECT 定义）。
DataLen
10

//DataLen 是要发送的字节数（1 到 1024）。
DataPtr
=&VB1000

//DataPtr 是指向待发送数据的指针。这是指向 I、Q、M 或 V 存储器的 S7-200 SMART 指针（例如，＆VB100）。

IPaddr1

192

//IPaddr1 是 IP 地址的最高有效字节

IPaddr2

168

//IPaddr2 是 IP 地址的次高有效字节

IPaddr3

0

//IPaddr3 是 IP 地址的次低有效字节。

IPaddr4

103

//IPaddr4 是 IP 地址的最低有效字节。

RemPort

2000

//RemPort 是远程设备上的端口号。远程端口号范围为 1 到 49151。

Done

=M2.0

// 当连接操作完成且没有错误时，指令置位 Done 输出。

Busy

=M2.1

// 当连接操作正在进行时，指令置位 Busy 输出。

Error

=M2.2

// 当连接操作完成但发生错误时，指令置位 Error 输出。

Status

=MB3

// 如果指令置位 Error 输出，Status 输出会显示错误代码。如果指令置位 Busy 或 Done 输出，Status 为零（无错误）。

4 调用UDP_RCV如图15所示，各参数的意义如表5所示。

图15 定义UDP_RCV接口参数

表5 UDP_SEND各参数意义

CALL UDP_RECV

//调用UDP_RECV

EN

=M6.4

//使能输入

ConnID

=15

//CPU 将连接 ID (ConnID) 用于此接收操作（连接过程中定义）。

MaxLen

=10

// MaxLen 是要接收的最大字节数（例如，DataPt 中缓冲区的大小（1 到 1024））。

DataPtr

=&VB2000

// DataPtr 是指向接收数据存储位置的指针。这是指向 I、Q、M 或 V 存储器的 S7-200 SMART 指针（例如，＆VB100）。

Done

=M10.0

//当接收操作完成且没有错误时，指令置位 Done 输出。当指令置位 Done 输出时，Length 输出有效。

Busy

=M10.1

// 当接收操作正在进行时，指令置位 Busy 输出。

Error

=M10.2

// 当接收操作完成但发生错误时，指令置位 Error 输出

Status

=MB11

// 如果指令置位 Error 输出，Status 输出会显示错误代码。如果指令置位 Busy 或 Done 输出，Status 为零（无错误）。

Length

=MW12

//Length 是实际接收的字节数。

IPaddr1

=MB14

//IPaddr1 是 IP 地址的最高有效字节

IPaddr2

=MB15

//IPaddr2是 IP 地址的次高有效字节

IPaddr3

=MB16

//IPaddr3是 IP 地址的次低有效字节。

IPaddr4

=MB17

//IPaddr4 是 IP 地址的最低有效字节。

RemPort

=MW18

//RemPort 是发送消息的远程设备的端口号。

5 调用DISCONNECT如图16所示，各参数的意义如表6所示。

图16 定义DISCONNECT接口参数

表6 DISCONNECT各参数意义

CALL DISCONNECT

//调用DISCONNECT

EN

=M6.5

//使能输入

Req

=M6.6

//如果 Req = TRUE，CPU 启动断开连接操作。

ConnID

=15

// CPU 使用连接 ID (ConnID) 标识要终止的连接（连接过程中定义）。

Done

=M30.0

// 当断开连接操作完成且没有错误时，指令置位 Done 输出

Busy

=M30.1

// 当断开连接操作正在进行时，指令置位 Busy 输出。

Error

=M30.2

// 当断开连接操作完成但发生错误时，指令置位 Error 输出。

Status

=MB31

// 如果指令置位 Error 输出，Status 输出会显示错误代码。如果指令置位 Busy 或 Done 输出，Status 为零（无错误）。

下载程序并监控通信结果

下载两个CPU中的所有硬件组态及程序如图17所示。

图17 监控表


S7-200 SMART Communicate with S7-1200

S7-200 SMART CPU与S7-300进行UDP通信

S7-200 SMART CPU与S7-300 CPU 通过UDP通信，需要在双方都注册服务。S7-300侧调用 T-block 指令(TCON、TDISCON、TUSEND、TURCV)，S7-200 SMART侧调用Open User Communication库指令(UDP_CONNECT、DISCONNECT、UDP_SEND、UDP_RECV)来实现。通信方式为双边通信，因此双方的发送和接收指令必须成对出现。

注意： S7-200 SMARTPLC V2.2 版本才开始支持UDP通信，早期版本的CPU需要升级固件到V2.2。

硬件和软件需求及所完成的通信任务

本文采用1个CPU317(6ES7 317-2EK14-0AB0)，1个S7-200 SMART PLC为例，介绍它们之间的UDP通信。
硬件：
① S7-300 CPU (固件V3.1)
② S7-200 SMART CPU (固件V2.2)
③ PC （带以太网卡）
④ TP以太网电缆
软件：
① STEP7 V13 SP1
② STEP 7 Micro/WIN SMART V2.2
所完成的通信任务：
① S7-300 将MB1000开始的10 个字节的数据发送到 S7-200 SMART的VB数据区。
② S7-300 读取 S7-200 SMART中的VB数据区到MB2000开始的10个字节 。

300侧硬件组态

1. 使用TIA V13 SP1软件新建一个项目，添加硬件并命名为PLC_3，如图1所示。

图1. 添加新设备

为编程方便，使用CPU属性中定义的时钟位，在设备视图双击CPU设置系统和时钟存储器，如图2所示。

图2. 启用时钟位

2 为PROFINET通信口分配以太网地址，如图3所示。

图3 分配以太网地址

300侧调用并配置"TCON"、“TUSEND”、“TURCV”通信指令

1 .在PLC_3的OB1中调用"TCON"通信指令，如图4 所示。

图4. 定义TCON连接参数（选择UDP连接）

2 .在PLC_3的OB1中调用"TUSEND"发送通信块接口参数，如图5 所示。

图5 调用TUSEND
定义UDP连接参数数据块，新建DB块,创建DB5，命名为UDP_CON，如图6所示。

图6 创建UDP连接参数数据块

定义PLC_3的“TUSEND”发送通信块接口参数，如图7所示。

图7 定义TUSEND接口参数

在UDP_CON DB块内设置连接设备的IP地址与端口号，如图8所示

图8 UDP连接详细参数

TUSEND接口参数说明如表1所示。

表1

CALL TUSEND

, %DB3

//调用TUSEND，使用背景DB块:DB3

REQ

：=%M0.3

//使用2Hz的时钟脉冲，上升沿激活发送任务

ID

：=1

//连接号，要与连接配置中一致，见图4的连接ID

LEN

：=10

// 发送数据长度

DATA

：=P#M1000.0 BYTE 10

// 发送数据区的数据，M区或者DB块，需要注意DB块要选用绝对寻址

ADDR

：=%DB5

//UDP对方连接参数，包括对方IP地址及端口

DONE

：=%M113.0

// 任务执行完成并且没有错误，该位置1

BUSY

：=%M113.1

// 该位为1，代表任务未完成，不能激活新任务

ERROR

：=%M113.2

// 通信过程中有错误发生，该位置1

STATUS

：=%MW222

// 有错误发生时，会显示错误信息号

3 在PLC_3的OB1中调用接受指令TURCV并配置基本参数，如图9所示。

图9 调用TURCV

定义PLC_3的“TURCV”发送通信块接口参数，如图10所示。

图10 定义TURCV接口参数

TURCV接口参数说明如表2所示。

表2 TURCV各参数意义

CALL TURCV

, %DB4

//调用TURCV，使用背景DB块:DB4

REQ

：=%114.0

//准备好接受数据

ID

：=1

//连接号，要与连接配置中一致，见图4的连接ID

LEN

：=10

// 接受数据长度

DATA

：=P#M2000.0 BYTE 10

// 接受数据区的数据，M区或者DB块，需要注意DB块要选用绝对寻址

ADDR

：=%DB5

//UDP对方连接参数，包括对方IP地址及端口

DONE

：=%M112.0

// 任务执行完成并且没有错误，该位置1

BUSY

：=%M112.1

// 该位为1，代表任务未完成，不能激活新任务

ERROR

：=%M112.2

// 通信过程中有错误发生，该位置1

STATUS

：=%MW226

// 有错误发生时，会显示错误信息号

RCVD_LEN

：=%MW228

// 实际接受数据的字节数

S7-200 SMART编程

1 打开库如图11所示。

图11 开放式库指令

2 调用UDP_CONNECT如图12所示，各参数意义如图表3所示。

图12 定义UDP_CONNECT接口参数

表3 UDP_CONNECT各参数意义

UDP_CONNECT

//调用UDP_CONNECT

EN

：=M6.0

//使能输入

Req

：=M6.1

//如果 Req = TRUE，CPU 启动连接操作。如果 Req = FALSE，则输出显示连接的当前状态。

ConnID

：=15

// CPU 使用连接 ID (ConnID) 为其它指令标识该连接。可能的 ConnID 范围为 0 到 65534。

LocPort

：=2000

// LocPort 是本地设备上的端口号。本地端口号范围为 1 到 49151。

DONE

：=M0.0

// 当连接操作完成且没有错误时，指令置位 Done 输出。

BUSY

：=M0.1

// 当连接操作正在进行时，指令置位 Busy 输出。

ERROR

：=M0.2

// 当连接操作完成但发生错误时，指令置位 Error 输出

STATUS

：=MB1

// 如果指令置位 Error 输出，Status 输出会显示错误代码。如果指令置位 Busy 或 Done 输出，Status 为零（无错误）。

4 分配库存储区如图13所示。

图13 分配库存储区

注意：为保证指令库可以正常工作，分配库存储区的时候，一定不能与程序中使用的其他 V 区地址重叠！！

3 调用UDP_SEND如图14所示，各参数的意义如表4所示。

图14 定义UDP_SEND接口参数

表4 UDP_SEND各参数意义

CALL UDP_SEND

//调用UDP_SEND
EN
=M6.2

//使能输入
Req
=SM0.5

//如果 Req = TRUE，CPU 启动发送操作。如果 Req = FALSE，则输出显示发送操作的当前状态。
ConnID
15

//连接 ID (ConnID) 是此发送操作所用连接的编号（连接过程中通过 UDP_CONNECT 定义）。
DataLen
10

//DataLen 是要发送的字节数（1 到 1024）。
DataPtr
=&VB1000

//DataPtr 是指向待发送数据的指针。这是指向 I、Q、M 或 V 存储器的 S7-200 SMART 指针（例如，＆VB100）。

IPaddr1

192

//IPaddr1 是 IP 地址的最高有效字节

IPaddr2

168

//IPaddr2 是 IP 地址的次高有效字节

IPaddr3

0

//IPaddr3 是 IP 地址的次低有效字节。

IPaddr4

103

//IPaddr4 是 IP 地址的最低有效字节。

RemPort

2000

//RemPort 是远程设备上的端口号。远程端口号范围为 1 到 49151。

Done

=M2.0

// 当连接操作完成且没有错误时，指令置位 Done 输出。

Busy

=M2.1

// 当连接操作正在进行时，指令置位 Busy 输出。

Error

=M2.2

// 当连接操作完成但发生错误时，指令置位 Error 输出。

Status

=MB3

// 如果指令置位 Error 输出，Status 输出会显示错误代码。如果指令置位 Busy 或 Done 输出，Status 为零（无错误）。

4 调用UDP_RCV如图15所示，各参数的意义如表5所示。

图15 定义UDP_RCV接口参数

表5 UDP_SEND各参数意义

CALL UDP_RECV

//调用UDP_RECV

EN

=M6.4

//使能输入

ConnID

15

//CPU 将连接 ID (ConnID) 用于此接收操作（连接过程中定义）。

MaxLen

10

// MaxLen 是要接收的最大字节数（例如，DataPt 中缓冲区的大小（1 到 1024））。

DataPtr

=&VB2000

// DataPtr 是指向接收数据存储位置的指针。这是指向 I、Q、M 或 V 存储器的 S7-200 SMART 指针（例如，＆VB100）。

Done

=M10.0

//当接收操作完成且没有错误时，指令置位 Done 输出。当指令置位 Done 输出时，Length 输出有效。

Busy

=M10.1

// 当接收操作正在进行时，指令置位 Busy 输出。

Error

=M10.2

// 当接收操作完成但发生错误时，指令置位 Error 输出

Status

=MB11

// 如果指令置位 Error 输出，Status 输出会显示错误代码。如果指令置位 Busy 或 Done 输出，Status 为零（无错误）。

Length

=MW12

//Length 是实际接收的字节数。

IPaddr1

=MB14

//IPaddr1 是 IP 地址的最高有效字节

IPaddr2

=MB15

//IPaddr2是 IP 地址的次高有效字节

IPaddr3

=MB16

//IPaddr3是 IP 地址的次低有效字节。

IPaddr4

=MB17

//IPaddr4 是 IP 地址的最低有效字节。

RemPort

=MW18

//RemPort 是发送消息的远程设备的端口号。

5 调用DISCONNECT如图16所示，各参数的意义如表6所示。

图16 定义DISCONNECT接口参数

表6 DISCONNECT各参数意义

CALL DISCONNECT

//调用DISCONNECT

EN

=M6.5

//使能输入

Req

=M6.6

//如果 Req = TRUE，CPU 启动断开连接操作。

ConnID

=15

// CPU 使用连接 ID (ConnID) 标识要终止的连接（连接过程中定义）。

Done

=M30.0

// 当断开连接操作完成且没有错误时，指令置位 Done 输出

Busy

=M30.1

// 当断开连接操作正在进行时，指令置位 Busy 输出。

Error

=M30.2

// 当断开连接操作完成但发生错误时，指令置位 Error 输出。

Status

=MB31

// 如果指令置位 Error 输出，Status 输出会显示错误代码。如果指令置位 Busy 或 Done 输出，Status 为零（无错误）。

下载程序并监控通信结果

下载两个CPU中的所有硬件组态及程序如图17所示。

图17 监控表


S7-200 SMART Communicate with S7-1200

S7-200 SMART CPU与S7-300 CP343进行UDP通信

S7-200 SMART CPU与S7-300 CP343 通过UDP通信，需要在双方都编写通讯程序。S7-300通过网络组态创建连接并调用AG_SEND和AG_RECV指令，S7-200 SMART侧调用Open User Communication库指令(UDP_CONNECT、DISCONNECT、UDP_SEND、UDP_RECV)来实现。通信方式为双边通信，因此双方的发送和接收指令必须成对出现。

注意： S7-200 SMARTPLC V2.2 版本才开始支持UDP通信，早期版本的CPU需要升级固件到V2.2。

硬件和软件需求及所完成的通信任务

本文采用1个CPU317(6ES7 317-2EK14-0AB0)、1个CP 343-1（6GK7 343-1EX30-0XE0）、1个S7-200 SMART PLC，介绍它们之间的UDP通信。
硬件：
① S7-300 CPU（固件V3.1）和CP343（固件V2.0）
② S7-200 SMART CPU (固件V2.2)
③ PC （带以太网卡）
④ TP以太网电缆
软件：
① STEP7 V13 SP1
② STEP 7 Micro/WIN SMART V2.2
所完成的通信任务：
① S7-300 将MB1100开始的10 个字节的数据发送到 S7-200 SMART的VB数据区。
② S7-300 读取 S7-200 SMART中的VB数据区到MB1200开始的10个字节 。

S7-300侧硬件及网络组态

1. 使用TIA V13 SP1软件新建一个项目，添加硬件并命名为PLC_3，并为CP343-1分配网络和IP地址，如图1所示。

图1. 添加新设备

为编程方便，使用CPU属性中定义的时钟位，在设备视图双击CPU设置系统和时钟存储器，如图2所示。

图2. 启用时钟位

2 在S7-300中添加UDP连接，打开 "设备组态" > "网络视图" ，在窗口左上角选中"连接"，类型选择"UDP"， 鼠标点中CP343-1的 PROFINET通信口的绿色小方框，拖拽出一条线，然后再回到CP343-1的 PROFINET通信口的绿色小方框，双击鼠标，连接建立并高亮显示，如图3所示。

图3 建立UDP连接

配置UDP连接，如图4所示。

图4 连接配置

300侧调用并配置"TCON"、“TUSEND”、“TURCV”通信指令

1 .在PLC_3的OB1中调用“AG_SEND”通信指令，如图5 所示，AG_SEND各参数意义如表1所示。

图5 调用AG_SEND

表1 AG_SEND各参数意义

CALL AG_SEND

//调用AG_SEND
ACT
:=M0.3
 //使用2HZ的时钟脉冲，上升沿激活发送任务

ID

：=1

//连接号，要与连接配置中一致，见图4的连接ID

LADDR

：=W#16#100

// CP卡硬件地址，必须填写16进制数据

SEND

：=P#M1100.0 BYTE 10

// 发送数据区的数据，M区或者DB块，需要注意DB块要选用绝对寻址

LEN

：=10

//发送的字节数

DONE

：=%M20.1

// 任务执行完成并且没有错误，该位置1

ERROR

：=%M20.2

// 该位为1，有故障发生

STATUS

：=%MW22

// 有错误发生时，会显示错误信息号

2 在PLC_3的OB1中调用接受指令AG_RECV并配置基本参数，如图6所示，AG_RECV接口参数说明如表2所示。

图6 调用AG_RECV

表2 AG_RCV各参数意义

CALL AG_RECV |  | //调用AG_RECV
ID | ：=1 | //连接号，要与连接配置中一致，见图4的连接ID
LADDR | ：=W#16#100 | // CP卡硬件地址，必须填写16进制数据
RECV | ：=P#M1200.0 BYTE 10 | // 接受数据区的数据，M区或者DB块，需要注意DB块要选用绝对寻址
DONE | ：=%M10.0 | //任务执行完成并且没有错误，该位置1
ERROR | ：=%M10.1 | // 该位为1，有故障发生
STATUS | ：=%MW12 | // 有错误发生时，会显示错误信息号
LEN | ：=%MW14 | // 接收到的实际数据长度

S7-200 SMART编程

1 打开库如图7所示。

图7 开放式库指令

2 调用UDP_CONNECT如图8所示，各参数意义如图表3所示。

图8 定义UDP_CONNECT接口参数

表3 UDP_CONNECT各参数意义

UDP_CONNECT

//调用UDP_CONNECT

EN

=M6.0

//使能输入

Req

=M6.1

//如果 Req = TRUE，CPU 启动连接操作。如果 Req = FALSE，则输出显示连接的当前状态。

ConnID

15

// CPU 使用连接 ID (ConnID) 为其它指令标识该连接。可能的 ConnID 范围为 0 到 65534。

LocPort

=2000

// LocPort 是本地设备上的端口号。本地端口号范围为 1 到 49151。

DONE

=M0.0

// 当连接操作完成且没有错误时，指令置位 Done 输出。

BUSY

=M0.1

// 当连接操作正在进行时，指令置位 Busy 输出。

ERROR

=M0.2

// 当连接操作完成但发生错误时，指令置位 Error 输出

STATUS

=MB1

// 如果指令置位 Error 输出，Status 输出会显示错误代码。如果指令置位 Busy 或 Done 输出，Status 为零（无错误）。

4 分配库存储区如图9所示。

图9 分配库存储区

注意：为保证指令库可以正常工作，分配库存储区的时候，一定不能与程序中使用的其他 V 区地址重叠！！

3 调用UDP_SEND如图10所示，各参数的意义如表4所示。

图10 定义UDP_SEND接口参数

表4 UDP_SEND各参数意义

CALL UDP_SEND

//调用UDP_SEND
EN
=M6.2

//使能输入
Req
=SM0.5

//如果 Req = TRUE，CPU 启动发送操作。如果 Req = FALSE，则输出显示发送操作的当前状态。
ConnID
15

//连接 ID (ConnID) 是此发送操作所用连接的编号（连接过程中通过 UDP_CONNECT 定义）。
DataLen
10

//DataLen 是要发送的字节数（1 到 1024）。
DataPtr
=&VB1000

//DataPtr 是指向待发送数据的指针。这是指向 I、Q、M 或 V 存储器的 S7-200 SMART 指针（例如，＆VB100）。

IPaddr1

192

//IPaddr1 是 IP 地址的最高有效字节

IPaddr2

168

//IPaddr2 是 IP 地址的次高有效字节

IPaddr3

0

//IPaddr3 是 IP 地址的次低有效字节。

IPaddr4

103

//IPaddr4 是 IP 地址的最低有效字节。

RemPort

2000

//RemPort 是远程设备上的端口号。远程端口号范围为 1 到 49151。

Done

=M2.0

// 当连接操作完成且没有错误时，指令置位 Done 输出。

Busy

=M2.1

// 当连接操作正在进行时，指令置位 Busy 输出。

Error

=M2.2

// 当连接操作完成但发生错误时，指令置位 Error 输出。

Status

=MB3

// 如果指令置位 Error 输出，Status 输出会显示错误代码。如果指令置位 Busy 或 Done 输出，Status 为零（无错误）。

4 调用UDP_RCV如图11所示，各参数的意义如表5所示。

图11 定义UDP_RCV接口参数

表5 UDP_SEND各参数意义

CALL UDP_RECV

//调用UDP_RECV

EN

=M6.4

//使能输入

ConnID

15

//CPU 将连接 ID (ConnID) 用于此接收操作（连接过程中定义）。

MaxLen

10

// MaxLen 是要接收的最大字节数（例如，DataPt 中缓冲区的大小（1 到 1024））。

DataPtr

=&VB2000

// DataPtr 是指向接收数据存储位置的指针。这是指向 I、Q、M 或 V 存储器的 S7-200 SMART 指针（例如，＆VB100）。

Done

=M10.0

//当接收操作完成且没有错误时，指令置位 Done 输出。当指令置位 Done 输出时，Length 输出有效。

Busy

=M10.1

// 当接收操作正在进行时，指令置位 Busy 输出。

Error

=M10.2

// 当接收操作完成但发生错误时，指令置位 Error 输出

Status

=MB11

// 如果指令置位 Error 输出，Status 输出会显示错误代码。如果指令置位 Busy 或 Done 输出，Status 为零（无错误）。

Length

=MW12

//Length 是实际接收的字节数。

IPaddr1

=MB14

//IPaddr1 是 IP 地址的最高有效字节

IPaddr2

=MB15

//IPaddr2是 IP 地址的次高有效字节

IPaddr3

=MB16

//IPaddr3是 IP 地址的次低有效字节。

IPaddr4

=MB17

//IPaddr4 是 IP 地址的最低有效字节。

RemPort

=MW18

//RemPort 是发送消息的远程设备的端口号。

5 调用DISCONNECT如图12所示，各参数的意义如表6所示。

图12 定义DISCONNECT接口参数

表6 DISCONNECT各参数意义

CALL DISCONNECT

//调用DISCONNECT

EN

=M6.5

//使能输入

Req

=M6.6

//如果 Req = TRUE，CPU 启动断开连接操作。

ConnID

=15

// CPU 使用连接 ID (ConnID) 标识要终止的连接（连接过程中定义）。

Done

=M30.0

// 当断开连接操作完成且没有错误时，指令置位 Done 输出

Busy

=M30.1

// 当断开连接操作正在进行时，指令置位 Busy 输出。

Error

=M30.2

// 当断开连接操作完成但发生错误时，指令置位 Error 输出。

Status

=MB31

// 如果指令置位 Error 输出，Status 输出会显示错误代码。如果指令置位 Busy 或 Done 输出，Status 为零（无错误）。

下载程序并监控通信结果

下载两个CPU中的所有硬件组态及程序如图13所示。

图13 监控表


S7-200_SMART_MODBUS_TCP

S7-200SMART Modbus TCP 通信

Modbus TCP 是通过工业以太网 TCP/IP 网络传输的 Modbus 通信。S7-200 SMART 采用客户端-服务器方法，Modbus 客户端设备通过该方法发起与 Modbus 服务器设备的 TCP/IP 连接。

建立连接后，客户端向服务器发出请求，服务器将响应客户端的请求。客户端可请求从服务器设备读取部分存储器，或将一定数量的数据写入服务器设备的存储器。如果请求有效，则服务器将响应该请求；如果请求无效，则会回复错误消息。

S7-200 SMART 支持做 Modbus TCP 的客户端或者服务器，可以实现 PLC 之间通信，也可以实现与支持此通信协议的第三方设备通信。通信伙伴数量比较多的时候，可以使用交换机，扩展以太网接口，如图1.通信功能

图1.通信功能

STEP7-Micro/WIN SMART 从V2.4 版本开始，软件中直接集成 Modbus TCP 库指令。

安装软件后，Modbus TCP 指令位于 STEP7-Micro/WIN SMART 项目树中“指令”文件夹的“库”文件夹中。如图2.Modbus TCP库指令所示。

指令分为客户端和服务器两种，目前指令版本为 V1.0。

图2.Modbus TCP库指令

Modbus TCP 客户端：

Modbus 客户端指令MBUS_CLIENT使用 CPU 的以下资源：

占用主动连接资源。最多有8个主动连接资源

连接多个服务器伙伴时，自动生成连接 ID。

Modbus TCP 客户端使用以下程序实体：

1 个子程序

2849 个字节的程序空间

V 存储器的 638 字节模块，用于指令符号

Modbus TCP 服务器：

Modbus 服务器指令 MBUS_SERVER 使用 CPU 的以下资源

占用被动连接资源。最多有8个被动连接资源

连接多个客户端伙伴时，自动生成连接 ID。

Modbus TCP 服务器使用下列程序实体：

1 个子程序

2969 个字节的程序空间

V 存储器的 445 字节模块，用于指令符号

指令库编程后，必须从 STEP 7-Micro/WIN SMART 的为使用的指令分配库存储区地址。


S7-200_SMART_MODBUS_TCP_client

S7-200 SMART Modbus TCP 客户端指令

STEP7-Micro/WIN SMART 从V2.4 版本开始，软件中直接集成 Modbus TCP 库指令，无需单独安装或者购买。安装软件后，Modbus TCP 指令位于 STEP7-Micro/WIN SMART 项目树中“指令”文件夹的“库”文件夹中。如图1.Modbus TCP库指令所示。

指令分为客户端和服务器两种，目前指令版本为 V1.0。客户端指令会占用开放式用户通信资源主动连接，最多8个；服务器指令会占用开放式用户通信资源的被动连接资源，最多也是8个。

图1.Modbus TCP库指令

实验环境及通信任务

下面以两台S7-200 SMART 之间进行Modbus TCP 通信为例，详细阐述客户端与服务器侧如何编程及通信的过程。具体的实验环境见表1.；通信任务见表2：

表1.实验环境

操作系统 | WIN7 SP1 专业版 64位
编程软件 | STEP7-Micro/WIN SMART V2.4版本
硬件 | SR60:6ES7288-1SR60-0AA0 固件：V2.4 版本 ST20：6ES7288-1ST20-0AA0 固件：V2.4版本 交换机：CSM 127 6GK7 277-1AA10-0AA0

表2.通信任务

硬件 | 通信角色 | IP地址 | 端口号 | 读/写 | 数据区域
SR60 | 客户端 | 192.168.0.60 | 0 | 读 | VB20-VB31
ST20 | 服务器 | 192.168.0.20 | 502 | 响应 | VB0-VB11

客户端侧指令编程

1、系统块中设置客户端的IP地址，以确保IP地址设置无误。此步骤为可选，如果确定IP地址设置无误，可忽略此步骤。设置方法如图2.所示。

图2.系统块设置IP地址

2、鼠标点击 MAIN 主程序的程序段1的编程区域，从库文件夹下找到 Modbus TCP 客户端指令 MBUS_CLIENT，鼠标双击，指令出现在程序段1中，操作如图3.所示。

图3.添加客户端指令

3、填写客户端指令参数，如图4.所示。

图4.填写客户端参数

程序块具体参数详细解释介绍见表3.

参数及类型 |  | 数据类型 | 说明
Req | IN | BOOL | =1：表示向服务器发送Modbus 请求
Connect | IN | BOOL | =1：尝试与分配的IP地址及端口号建立连接； =0：尝试断开已经建立的连接，忽略Req的任何请求
IPAddr1-4 | IN | BYTE | 填写 Modbus TCP 服务器的IP地址IPAddr1-4为高到低字节
IP_Port | IN | BYTE | 填写Modbus TCP 服务器的端口号
RW | IN | BYTE | 指定操作模式 =0：读；=1写
Addr | IN | DWORD | 要进行读写的参数的 Modbus 起始地址
Count | IN | INT | 要进行读写的参数数据长度； 数字量输入/输出Count=1表示1 bit，最大1920位 对于模拟量输入和保持寄存器，最大 Count 值为 120 字。
DataPtr | IN_OUT | DWORD | 数据寄存器地址指针，指向本地用于读/写操作的数据地址区域的首地址
Done | OUT | BOOL | TRUE：以下任一条件时为真：客户端已与服务器建立连接；客户端已与服务器断开连接；客户端已接收 Modbus 响应；发生错误 FALSE：客户端正忙于建立连接或等待来自服务器的 Modbus 响应。
Error | OUT | BOOL | 出现错误，仅一个周期有效

4、鼠标选中程序块文件夹，单击右键，下拉菜单中选择库存储器，如图5.所示。

图5.点击库存储器

5、在库存储区分配对话框中手动输入存储区的起始地址。此实例为VB5000开始，以使指令库可以正常工作。确保库存储区与程序中其他已使用的地址不冲突。使用建议地址无法确定是否有地址重叠，所以推荐手动输入正确的库存储区首地址。如图6.所示。

图6.库存储区地址分配

6、编译项目，下载程序。

通信测试结果

将M0.0置位为1，然后在状态图表中创建变量，VW20-VW30 共6个字，监视值如图7.所示。

图7.读取服务器数据

关于Modbus地址与CPU中数据区域地址对应关系说明

S7-200 SMART 做 Modbus TCP 通信，可以支持的功能码及功能描述及所占用的地址区，如表4.所示。客户端会主动的发送请求，服务器响应。在通信指令填写参数中没有直接填写功能码，而是通过多个参数填写共同确定功能码的。

表4.功能码概况说明

功能码（十进制） | 功能描述 | RW | Addr | Count | CPU地址
01 | 读数字量输出 位 | 0 | 00001-09999 | 1-1920 位 | Q0.0-1151.7
02 | 读数字量输入 位 | 0 | 10001-19999 | 1-1920 位 | I0.0-1151.7
03 | 读寄存器 字 | 0 | 40001-49999 400001-465535 | 1-120 字 | V区
04 | 读模拟量输入 字 | 0 | 30001-39999 | 1-120 字 | AIW0-AIW110
05 | 写数字量输出 单个位 | 1 | 00001-09999 | 1位 | Q0.0-Q1151.7
06 | 写寄存器 单个字 | 1 | 40001-49999 400001-465535 | 1个字 | V区
15 | 写数字量输出 多个位 | 1 | 00001-09999 | 1-1920 位 | Q0.0-1151.7
16 | 写寄存器 多个字 | 1 | 40001-49999 400001-465535 | 1-120 字 | V区

举例：

和Modbus TCP服务器交换数据参数支持功能码：03，在客户端指令中设置两个参数确定03功能码：

RW=0：确定读取数据，（筛选出可能会使用的功能码:01,02,03,04），

Addr：40001-49999/400001-465535，表示交换数据为寄存器类型的数据。


S7-200_SMART_MODBUS_TCP_server

S7-200 SMART Modbus TCP 服务器指令

STEP7-Micro/WIN SMART 从V2.4 版本开始，软件中直接集成 Modbus TCP 库指令，无需单独安装或者购买。安装软件后，Modbus TCP 指令位于 STEP7-Micro/WIN SMART 项目树中“指令”文件夹的“库”文件夹中。如图1.Modbus TCP库指令所示。

指令分为客户端和服务器两种，目前指令版本为 V1.0。客户端指令会占用开放式用户通信资源主动连接，最多8个；服务器指令会占用开放式用户通信资源的被动连接资源，最多也是8个。

图1.Modbus TCP库指令

实验环境及通信任务

下面以两台S7-200 SMART 之间进行Modbus TCP 通信为例，详细阐述客户端与服务器侧如何编程及通信的过程。具体的实验环境见表1.；通信任务见表2：

表1.实验环境

操作系统 | WIN7 SP1 专业版 64位
编程软件 | STEP7-Micro/WIN SMART V2.4版本
硬件 | SR60:6ES7288-1SR60-0AA0 固件：V2.4 版本 ST20：6ES7288-1ST20-0AA0 固件：V2.4版本 交换机：CSM 127 6GK7 277-1AA10-0AA0

表2.通信任务

硬件 | 通信角色 | IP地址 | 端口号 | 读/写 | 数据区域
SR60 | 客户端 | 192.168.0.60 | 0 | 读 | VB20-VB31
ST20 | 服务器 | 192.168.0.20 | 502 | 响应 | VB0-VB11

服务器侧指令编程

1、系统块中设置服务器的IP地址，以确保IP地址设置无误。此步骤为可选，如果确定IP地址设置无误，可忽略此步骤。设置方法如图2.所示。

图2.系统块设置IP地址

2、鼠标点击 MAIN 主程序的程序段1的编程区域，从库文件夹下找到 Modbus TCP 服务器指令 MBUS_SERVER，鼠标双击，指令出现在程序段1中，操作如图3.所示。

图3.添加服务器指令

3、填写服务器指令参数，如图4.所示。

图4.填写服务器参数

参数及类型 | 数据类型 | 说明
Connect IN BOOL
=1：服务器接受来自客户端的请求；=0：服务器可以断开已经建立的连接
IP_Port IN WORD
服务器本地端口号
MaxIQ IN WORD

对应数字量输入/输出点（对应Modbus 地址参数0xxxx或者1xxxx）

可设置范围：0-256,

=0表示禁用对输入和输出的所有读取和写入。

建议将 MaxIQ 值设置为 256。
MaxAI IN WORD

对应模拟量输入参数（对应Modbus 地址参数 3xxxx）

可设置范围：0-56。

= 0表示禁用对模拟量输入的读取。

要允许访问所有 CPU 模拟量输入，MaxAI 的建议值如下：

对于 CPU CR40 和 CR60，为 0

对于所有其它 CPU 型号，为 56

MaxHold | IN | WORD | 用于 Modbus 地址 4xxxx 或 4yyyyy 的 V 存储器中的字保持寄存器数。
HoldStart IN Dword
指向 V 存储器中保持寄存器起始位置的指针
Done OUT BOOL

TRUE：以下任一条件时为真：客户端已与服务器建立连接；客户端已与服务器断开连接；客户端已接收 Modbus 响应；发生错误

FALSE：客户端正忙于建立连接或等待来自服务器的 Modbus 响应。
Error OUT BOOL
出现错误，仅一个周期有效

4、鼠标选中程序块文件夹，单击右键，下拉菜单中选择库存储器，如图5.所示。

图5.点击库存储器

5、在库存储区分配对话框中手动输入存储区的起始地址。此实例为VB5000开始，以使指令库可以正常工作。确保库存储区与程序中其他已使用的地址不冲突。使用建议地址无法确定是否有地址重叠，所以推荐手动输入正确的库存储区首地址。如图6.所示。

图6.库存储区地址分配

6、编译项目，下载程序。

通信测试结果

由于客户端要读取服务器的数据，在状态图表中修改当前值，如图7.所示

图7.状态图表赋值


Modbus_TCP_通信例程

Modbus RTU 主站例程

为了更好地理解 Modbus TCP 客户端的编程，可参考下面的例程。

注意：

1. 该例程使用 STEP 7-Micro/WIN SMART V2.4 编写，使用硬件是SR60:6ES7288-1SR60-0AA0 固件：V2.4 版本，IP地址：192.168.0.60
2. 该例程仅访问一个服务器，读取服务器寄存器类型地址，40001-40006共6个字，读取数据存储在本地的VB20-VB31区域中。

Modbus TCP 客户端指令库应用例程

Modbus RTU 从站例程

为了更好地理解 Modbus TCP 服务器的编程，可参考下面的例程。

注意：

1. 该例程使用 STEP 7-Micro/WIN SMART V2.4 编写，使用硬件是ST20：6ES7288-1ST20-0AA0 固件：V2.4 版本，IP地址：192.168.0.20
2. 该例程 Modbus TCP 服务器，响应客户端请求，将数据存储在VB0-VB11的区域中，等待客户端读取。

Modbus TCP 服务器指令库应用例程

免责声明

本例程仅供参考，程序中的CPU版本、类型可能与用户实际使用不同，用户可能需要先对例子程序做修改和调整，才能将其用于测试。本例程的作者和拥有者对于该例程的功能性和兼容性不负任何责任，使用该例程的风险完全由用户自行承担。由于它是免费的，所以不提供任何担保，错误纠正和热线支持，用户不必为此联系西门子技术支持与服务部门。


S7-200_SMART_MODBUS_TCP_FAQt

常见问题

1、如何判断Modbus TCP连接是否建立？

答：进行Modbus TCP通信，需要建立连接，

S7-200 SMART CPU作为Modbus TCP客户端时：通过Modbus TCP Client指令 MBUS_CLIENT 的符号表中的 mConnected 参数来判断，如图1.所示

mConnected=1 表示已经建立连接，mConnected=0 表示尚未建立连接

图1.mConnected判断连接状态

S7-200 SMART CPU作为Modbus TCP服务器时：通过Modbus TCP Server指令 MBUS_SERVER 的符号表中的 mConnected 参数来判断，如图2.所示

mConnected=1 表示已经建立连接，mConnected=0 表示尚未建立连接.

图2.mConnected判断连接状态

2、如何查看错误代码？

答：出现错误时，MBUS_CLIENT 指令输出参数Done 会为1，但是，Done在连接建立完成，连接断开，响应完成时都会出现置位为1的情况。

出现错误时，还有Error字节会显现出错误代码，仅保留一个周期时间。

综上所述，查看错误代码，可以按照图3.所示的方法进行。

图3.查看错误代码

3、进行 Modbus TCP 通信寄存器类型数据，数据量大超过120个字如何处理？

答：如果数据量超过120个字，可以进行如下两种方法操作：

A、建立多个连接，不同连接之间，可以并行操作，因为占用的通信资源不同；

B、建立一个连接，进行多个操作，不同操作之间需要进行轮询，同一时刻只有一个操作在进行。

4、Modbus TCP通信时，如何访问地址范围大于49999 的保持寄存器？

Modbus 保持寄存器地址在 40001 到 49999 这一范围内。该范围足以满足大多数应用的要求，但有些 Modbus 从站设备将数据映射到地址范围更大的保持寄存器中。 MBUS_CLIENT 指令允许参数 Addr 的附加范围，以支持 400001 至 465536 的保持寄存器地址的扩

展范围。例如，要访问保持寄存器 16768，请将 MBUS_CLIENT 的 Addr 参数设置为 416768。 扩展寻址允许访问 Modbus 协议支持的全部 65536 个可能地址。此扩展寻址仅适用于保持寄存器。

5、S7-200 SMART作为 Modbus TCP客户端， 服务器为网关模块，连接多个 Modbus RUT 设备时如何区分 Modbus RTU 从站地址能？

答：S7-200 SMART CPU 作为 Modbus TCP 客户端与 Modbus TCP 服务器通信，当尝试访问比 Modbus TCP 服务器更低端的串行子网中的设备，会有报错 "无法建立连接"。如果 Modbus TCP 服务器用于 Modbus RTU 协议的网关，则 MB_UNIT_ID 可用于识别串行网

络上连接的从站设备。MB_UNIT_ID 用于将请求转发到正确的 Modbus RTU 从站地址。一些 Modbus TCP 设备可能要求 MB_UNIT_ID 参数在限制范围内。该参数所在位置，如图4.所示

mModbusUnitID默认值为255（16#FF）,如果从站设备有多个，可以S7-200 SMART 和网关模块建立一个连接，在这个连接上通过修改UnitID的值进行UnitID的轮询。

图4.mModbusUnitID

6、对于一些服务器不支持写单个数字量输出位（功能码 5）/单个保持寄存器（功能码 6），S7-200 SMART 如何实现写单个位/字。

答：一些 Modbus 服务器设备不支持 Modbus 功能写入单个离散输出位（Modbus 功能 5）或写入单个保持寄存器（Modbus 功能 6）。相反，这些设备只支持多位写入（Modbus 功能 15）或多寄存器写入（Modbus 功能 16）。如果服务器设备不支持单个位/字 Modbus

功能，则 MBUS_CLIENT 指令将返回错误代码 1。Modbus 客户端协议允许强制 MBUS_CLIENT 指令使用多个位/字 Modbus 功能，而非使用单个位/字 Modbus 功能。可通过在 Modbus 客户端符号表中查找符号 mModbusForceMulti，并在程序执行 MBUS_CLIENT 之前

更改此值，来强制多个位/字指令。将 mModbusForceMulti 设置为 TRUE，可在写入单个位或寄存器时强制使用多个位/字功能。如图5.所示。

图5. mModbusForceMulti


S7-200_SMART_PROINET通信

S7-200 SMART的PROFINET通信概述

PROFINET IO 是 PROFIBUS International基于以太网的自动化标准。它定义了跨供应商通信、自动化和工程组态模型。借助 PROFINETIO，可采用一种交换技术使所有站随时访问网络。因此，多个节点可同时传输数据，

进而可更高效地使用网络。数据的同时发送和接收功能可通过交换式以太网的全双工操作来实现（带宽为 100 Mbps）。

PROFINET IO 系统由下列设备组成：

PROFINET 控制器，控制自动化任务。

PROFINET 设备，是现场设备，由 PROFINET 控制器进行监视和控制。PROFINET设备可包含多个模块和子模块。

软件，通常基于 PC，用于设置参数和诊断各个 PROFINET 设备。

PROFINET 的目标如下：

实现工业联网，基于工业以太网（开放式以太网标准）

实现工业以太网与标准以太网组件的兼容性

凭借工业以太网设备实现高稳健性。工业以太网设备适用于工业环境（例如温度和抗干扰性）。

实现实时功能

其他现场总线系统的无缝集成

STEP 7-Micro/WIN SMART V2.4 和 S7-200 SMART V2.4 CPU 固件增加了 PROFINET通信的功能。

仅标准型(ST/SR)CPU 支持 PROFINET IO 通信

仅支持做 PROFINET IO 控制器

不支持做智能设备，不支持介质冗余（MRP），不支持不带可更换介质时支持设备更换。

图1.S7-200SMART PROFINET通信概述

S7-200 SMART 做PROFINET IO控制器的具体参数如表1.所示。

表1.参数

说 明 | ST20/SR20 | ST30/SR30 | ST40/SR40 | ST60/SR60
设备编号范围 | 1-8 （不可修改）
最大模块数量 | 64
每个设备最大输入区域 | 128字节
过程映像输入区地址范围 | I128.0 至 I1151.7，共8个设备，1024字节 （每个设备占用128字节，顺序递增，例如2号PROFINET设备的过程输入寄存器地址从I256.0~I383.7）
每个设备最大输出区域 | 128字节
过程映像输出区地址范围 | Q128.0 至 Q1151.7， 共8个设备，1024字节 （每个设备占用128字节，顺序递增，例如2号PROFINET设备的过程输出寄存器地址从Q256.0~Q383.7）
更新时间 | 最小值还取决于为 PROFINET设置的通信组件、PROFINET设备的数量以及已组态的用户数据量。

S7-200 SMART从组态到启动的过程如图2.所示

图2.PROFINET通信组态至启动过程

S7-200 SMART做PROFINET通信配置一般可以分为如下几部分：

在STEP 7-Micro/WIN SMART中添加PROFINET IO设备的GSD文件

配置 PROFINET 向导

为PROFINET IO设备分配设备名称

PROFINET诊断（如需要）方法：

查看CPU指示灯状态

通过PLC信息

使用特殊存储器


添加/删除GSD文件

添加GSD文件

在进行 PROFINET 通信配置之前，需要将 PROFINET IO 设备的 GSD 文件导入到 STEP 7-Micro/WIN SMART 中。

什么是GSD文件？

GSD（ General Station Description ）文件即通用站描述文件，用于存储设备属性，使用GSDML（通用站描述标记语言）确定其结构和规则；通常GSD文件的后缀名为.XML。

从何处获取GSD文件？

可从所使用的 PROFINET IO 设备的制造商处获取到该设备的 GSD 文件，然后将其导入到 STEP 7-Micro/WIN SMART 中

例如：S7-200 SMART 要和 V90PN 通信，可以从以下链接地址获取到 V90PN 的 GSD 文件

https://support.industry.siemens.com/cs/cn/en/view/109737269

使用 STEP 7-Micro/WIN SMART 导入 GSD 文件，对 GSD 版本的要求？

支持GSD V2.33 或更早版本，软件会根据 GSDML 模式 V2.33 对 GSDML文件进行验证。如果对象通过验证，STEP 7-Micro/WIN SMART 会将其置于目录中。

对于高于V2.33的GSD文件，也可以进行导入，但STEP 7-Micro/WIN SMART不会验证 GSDXML 模式。属性"RequiredSchemaVersion"指定版本高于 V2.33 的所有对象（包括DAP（设备访问点）、模块和子模块）均会被忽略。

STEP 7-Micro/WIN SMART 不会对其描述进行检查，也不会将其置于设备目录中。

添加GSD文件步骤

1、从设备制造商处获取GSD文件，并且将该文件（如是压缩包，需提前解压缩）存储在某个路径下，本示例GSD文件存储路径为D:\PROFINET_test。

2、打开STEP 7-Micro/WIN SMART，点击菜单栏的文件菜单>GSDML管理。如图1.点击GSDML管理 所示。

图1.点击GSDML管理

3、在弹出的对话框中选择浏览，如图2.GSDML管理中点击浏览 所示。

图2.GSDML管理中点击浏览

4、找到存储GSD文件的路径，选择文件并打开，如图3.路径中选择文件并打开 所示。

图3.路径中选择文件并打开

5、如图4.GSD文件导入完毕所示，已经将 V90PN 导入至 STEP 7-Micro/WIN SMART 中。

图4.GSD文件导入完毕

如何删除GSD文件？

紧接步骤5所示界面，对于长期不使用的GSD文件，在“导入的GSDML文件”列表中，勾选想要删除的文件的复选框，点击删除。

图5.删除GSD文件

在弹出的对话框中点击Yes，即可删除GSD文件，如图6.确认删除所示。

图6.确认删除


profinet_wizard

PROFINET向导配置

1、打开 PROFINET 向导，有两种方法，可以使用其中之一。如图1.打开PROFINET 向导方法所示。

图1.打开PROFINET向导方法

2、在打开的PROFIENT配置向导对话框中的PLC角色处，选择PLC角色为“PROFINET控制器”，然后单击下一步。如图2.选择PLC角色所示。

图2.选择PLC的角色

3、从右侧设备目录①处选择已添加的 V90PN 的 GSD,在②处单击“添加”然后单击下一步。如图3.添加设备所示。

图3.添加设备

4、设置S7-200 SMART IP 地址及站名称（可选）、设置 V90PN 的设备名称及 IP 地址，然后单击下一步。如图4.设置IP地址及设备名称所示。

图4.设置IP地址及设备名称

①处设置S7-200 SMART IP地址需要和PROFINET IO 设备在同一网段。

②设置v90pn设备名称。

③指定要给v90pn分配的IP地址。

需要注意配置要点：

关于S7-200 SMART 的 IP 地址设置有两种设置方法如图5.所示：

方法一：系统块>以太网端口处设置固定 IP，此时在 PROFINET 配置向导里，控制器参数的IP地址自动跟随变化，可无需更改；

方法二：系统块中不做设置，直接在PROFINET配置向导中设置控制器IP地址，此时系统块中以太网端口的 IP 地址参数自动设置，且系统块里以太网端口下发的复选框变为勾选状态且为灰色，不可修改。

只要有任何一个地方配置过，另外一个地方自动跟随变化。

图5.S7-200 SMART设置IP地址

关于V90PN 设备名称设置有两种方法,如图6.所示：

方法一：在 PROFINET 配置向导中指定 V90PN 的IP地址和设备名称，然后使用工具菜单栏>查找PROFINET设备给 V90PN 分配设备名称。

方法二：使用 V90PN 的调试软件 V-ASSISTANT 设置（指定） V90PN 的设备名称和IP地址，然后在 PROFIENT 配置向导里按照 V90PN 实际的设备名称和IP地址进行分配。

图6.V90PN分配设备名称

关于V90PN的IP地址：在PROFINET向导中进行组态，组态信息随着程序一起下载至S7-200 SMART中，当S7-200 SMART 根据设备名称找到V90 PN后，将IP地址分配给V90。

5、添加报文，设置更新时间及数据保持，然后单击下一步。如图7.添加报文设置更新时间及数据保持所示。

图7.添加报文设置更新时间及数据保持

①选择报文，如何选择，可以参考表1.指令及可以使用的报文。组态中选择的报文要和V-ASSISTANT软件中选择的报文保持一致。

表1.指令及可以使用的报文

指令 | 允许使用的报文
SINA_POS | 仅支持 SIEMENS 报文 111
SINA_SPEED | 指令仅支持标准报文 1
SINA_PARA_S | 仅支持 SIEMENS 报文 111 或标准报文 1

②单击添加，将选择的报文添加

③传输区，S7-200 SMART 为每个IO设备分配各自可以使用的地址区，组态分配的默认首地址可以进行修改，但仅可在各自的地址区域之中修改，各个IO设备可以使用的地址区域见表2.IO设备传输区

表2. IO设备传输区

PROFINET IO设备编号 | 输入区域 | 输出区域
1 | IB128-255 | QB128-255
2 | IB256-383 | QB256-383
3 | IB384-511 | QB384-511
4 | IB512-639 | QB512-639
5 | IB640-767 | QB640-767
6 | IB768-895 | QB768-895
7 | IB896-1023 | QB896-1023
8 | IB1024- IB1151 | QB1024- IB1151

举例说明：

此例程中输入区域默认起始地址为 IB128,输入区域长度为 24 字节，如果有需要修改起始地址，比如修改为 200，那么实际输入区域占用 IB200 开始的 24 个字节，在 IB128-255 之间，修改可以生效。

④设置更新时间及数据保持

更新时间：决定IO控制器与设备间周期性交换数据的时间间隔。默认4ms，可以设置的范围是：4、8、16、32、64、128、256、512 ms；设置此参数大小与所带IO设备数量，组态的通信数据量等相关。

数据保持：当 IO 数据丢失时可接受的更新周期次数，可以设置的范围是：3-255 ；更新时间*数据保持=看门狗时间，看门狗时间≤ 1.92 秒。否则报错，如图8.所示.

图8.看门狗时间设置报错

如果已经选择的报文发现是错误的，如图9.删除添加错误的报文所示。

图9.删除添加错误的报文

6、查看相关的模块参数信息，如图10.查看模块参数信息所示。

图10.查看模块参数信息

7、检查配置参数没有问题，单击“生成”结束PROFINET 配置向导。向导配置界面自动关闭。如图11.单击生成完成配置所示。

图11.单击生成完成配置

8、弹出对话框，将通信背景时间默认被修改为20%，点击"OK"进行确认即可。如图12.通信背景时间被修改所示。

图12.通信背景时间被修改

注意：以上仅为S7-200 SMART CPU与V90之见PROFINET向导部分的组态，至于具体通过指令实现运动控制功能需要参考文档：

S7-200 SMART通过PROFINET连接V90 PN实现基本定位控制


PROFINET 分配设备名称

查找PROFINET设备

使用软件菜单“查找 PROFINET 设备”功能仅可以实现给PROFINET IO设备分配设备名称的功能。设置步骤如下所示：

1、打开查找PROFINET设备的方法有两种，如图1.查找查找PROFINET设备所示。

图1.查找查找PROFINET设备

2、在弹出的查找设备对话框中选择通信接口为本机网卡驱动，点击查找设备，找到所连接的V90PN,选中已经查找到的设备，点击右侧编辑按钮。如图2.查找设备所示。

图2.查找设备

注意！

所有 PROFINET 设备都必须具有设备名称。使用 STEP 7-Micro/WIN SMART 来定义设备名称。通过 PROFINET DCP（发现和组态协议）为设备分配设备名称。

确保 PROFINET 设备和 PC 位于同一子网中。

3、填写要修改的设备名称，点击设置后名称修改生效。如图3.设置名称所示。

图3.设置名称

注意！

查找PROFINET设备仅能修改IO设备的设备明称，无法修改IP地址及子网掩码，IO设备的IP地址及子网掩码需要在PROFINET 向导配置中修改。

要修改的设备名称需遵守标准 DNS（域名系统）命名规范。命名规则如下：

  • 最多支持 63 个字符。

  • 设备名称可以包括小写字母 a 至 z、数字 0 至 9、连字符“-”和句点“.”。

  • 设备名称可以包括中文字符（简体或繁体）。

  • 设备名称不可使用 n.n.n.n 格式，其中 n 取 0 到 999 之间的值。

  • 设备名称不能以字符串 port-nnn 或字符串 port-nnn-nnnnn 开始，其中 n 是 0 到 9 的数字。例如，port-123 和 port-123-45678 为无效设备名称。

  • 设备名称不能以连字符“-”或句点“.”开始或结束。


PROFINET通信诊断

在进行PROFINET通信过程中，有可能会出现错误，对于PROFIENT通信诊断，有如下三种方法：

通过CPU指示灯状态诊断

通过PLC信息诊断

通过特殊存储器诊断

方法一：通过CPU指示灯状态诊断

如果 S7-200 SMART CPU 作为PROFIENT 控制器和 PROFINET IO设备进行通信。可以查看如下表中LED状态查看CPU所处的状态，进行简单的诊断。见表1.所示。

表1.LED指示灯状态诊断CPU状态

工作状态 | LED 指示灯 |  |  | 说明
 | RUN | STOP | ERROR
STOP | 灭 | 开 | 灭 | 当 CPU 处于 STOP模式时适用
STOP 带有强制值 | 灭 | 1 Hz闪烁 | 灭 | 当 CPU 处于 STOP模式且值被强制时适用
作PROFINET控制器工作时 STOP | 灭 | 开 | 1 Hz闪烁 | CPU 处于 STOP模式且任何已组态的PROFINET设备失去连接或收到警告时适用。
RUN | 开 | 灭 | 灭 | 当 CPU 处于 RUN模式时适用
RUN 带有强制值 | 开 | 1 Hz闪烁 | 灭 | 当 CPU 处于 RUN模式且值被强制时适用
作 PROFINET控制器工作时 RUN | 开 | 灭 | 1 Hz闪烁 | CPU 处于RUN模式且任何已组态的PROFINET设备失去连接或收到警告时适用
Busy | 2 Hz闪烁 | 2 Hz闪烁 | 灭 | 当接电或重启过程中完成卡评估后，正在处理存储卡或正在重启时适用
已插入存储卡 | 灭 | 2 Hz闪烁 | 灭 | 将存储卡插入接电的CPU时适用

从表1.中可以看出：

当 S7-200 SMART 组态为 PROFINET 控制器后，无论CPU出于停止还是运行，失去连接或者出现警告时，ERROR指示灯会以1Hz闪烁。

方法二：通过PLC信息诊断

通过PLC信息可以查看相关PROFINET通信故障的诊断信息。

1、通信搜索到CPU

2、菜单栏选择PLC，然后在菜单栏功能区选择PLC,如图1.所示

图1.打开PLC信息

3、打开的PLC信息对话框，如图2所示。

图2.PLC信息

①为系统页面系统对话框显示的：已组态的 PROFINET 设备 (Configured PROFINET device)：PROFINET 设备的状态

状态如下：

不可用 (Not available)：CPU 无法找到设备

正常 (OK)

诊断 (Diagnosis)：报告警告。

②为已经组态的IO设备，点击②可以查看具体某个设备的信息

③为事件日志

④为PROFINET报警

4、点击已经组态的IO设备，查看有关设备的详细信息，如图3.所示

图3.PROFINET设备详细信息

①处显示设备信息，包含、设备名称、设备类型、设备编号、转换后的名称以及IP 地址

②显示设备状态：

不可用 (Not avaliable)：CPU 无法找到设备，设备名称与实际设备不符

正常 (OK)

诊断 (Diagnosis)：报告警告。

③模块状态

该对话框显示插槽中每个模块的状态。模块状态分类如下：

正常 (OK)

错误 (Error)：如果单击"状态"列中的"错误"按钮，则会在右侧显示相应的详细错误信息。

图3中所示错误为，ET200SP插槽1所使用的底座为白色底座，在组态中没有组态启用新的电位组，所以报错

5、通过事件日志查看CPU存储的事件历史记录，包括上电、掉电、错误以及模式跳转等事件。还列出了事件发生时间。显示的事件日志的最大数量为 50。如图4.所示

图4.事件日志

6、查看PROFIENT报警，显示 PROFINET相关的警告信息：设备编号、设备名称、插槽编号、子插槽编号以及警告描述。如图5.所示

图5.PROFINET报警

方法三：通过特殊存储器诊断

从V2.4版本开始，S7-200 SMART 预留特殊存储器SMB1807-SMB1935用于PROFINET通信诊断。

注意！如果程序使用的范围为 SMB1800 至 SMB1999 且是在 STEP 7-Micro/WIN SMART V2.3或更早版本中创建的，则程序在 V2.4 将被清除，必须重新编辑程序以使用其它读/写 SM地址。

具体存储区分配表2.所示

表2.特殊存储器使用分配

SM 地址 |  | 设备编号 | 诊断内容 |  | 含义说明
SMB1800-SMB1807 | SMB1800 | 1 | 诊断站点状态 | 每字节的数值 对应每个设备的状态。 | 00H：不提供。 80H：正常。 81H：诊断。（设备已断开连接。） 82H：有错。（设备已连接，但有些模块存在报警。）
 | SMB1801 | 2
 | SMB1802 | 3
 | SMB1803 | 4
 | SMB1804 | 5
 | SMB1805 | 6
 | SMB1806 | 7
 | SMB1807 | 8
SMB1808-SMB1871 | SM 1808.0-1815.7 | 1 | 诊断模块报警状态 | 每个设备8个字节（64位) 每位对应每个模块的报警状态 | 0为正常；1为故障
 | SM 1816.0-1823.7 | 2
 | SM 1824.0-1831.7 | 3
 | SM 1832.0-1839.7 | 4
 | SM 1840.0-1847.7 | 5
 | SM 1848.0-1855.7 | 6
 | SM 1856.0-1863.7 | 7
 | SM 1864.0-1871.7 | 8
SMB1872-SMB1935 | SM 1872.0-1879.7 | 1 | 诊断模块数据状态 | 每个设备8个字节（64位) 每位对应每个模块的数据状态 | 0为正常；1为错误
 | SM 1880.0-1887.7 | 2
 | SM 1888.0-1895.7 | 3
 | SM 1896.0-1903.7 | 4
 | SM 1904.0-1911.7 | 5
 | SM 1912.0-1919.7 | 6
 | SM 1920.0-1927.7 | 7
 | SM 1928.0-1935.7 | 8


S7-200_SMART_PROINET通信_常见问题

1、S7-200 SMART 可以和什么设备通信？

答：S7-200 SMART 只可以作为 PROFINET IO 通信的控制器；

可以和 V90PN,G120 及第三方伺服设备通信(官方公布)；可以和 S7-1200/1500等智能设备通信(自行测试)；可以和 ET200SP 等分布式 IO 设备通信(自行测试)。

2、紧凑型CPU是否支持PROFINET通信？

答：目前只有标准型SR/ST CPU支持V2.4的固件。

紧凑型CPU CRs没有V2.4的固件，所以不支持PROFINET通信相关的功能。

3、做PROFINET通信，是否可以使用第三方交换机？

答：可以。但是，Profinet IO 通信中如果使用了不能识别 RT 实时数据优先级的第三方交换机时，实时数据不会被交换机优先转发。使用这类交换机时，为了避免因达到看门狗时间数据未更新而造成通信故障误报，需要调整 IO 设备的更新时间和看门狗时间。

Profinet RT 性能等级的通信，需使用符合“PROFINET 一致性等级 A”或更高等级的交换机。所有西门子 SCALANCE 系列交换机都满足这些要求。

如果还需要使用其它 PROFINET 功能（例如，拓扑识别、诊断、不带可更换介质时支持设备更换），必须使用符合“PROFINET 一致性等级 B”或更高等级的交换机。

4、最大模块数量64如何理解？

答：最大模块数为所有设备的模块加在一起的数量。

举例如图1.所示：

组态8个ET200SP IM155-6 PN HF接口模块，在其中一个接口模块下面进行组态 DI16 ST数字量输入模块，组态到56个DI模块以后，再添加模块时，会弹出对话框，如图2.示。

图1.组态举例

图2.设备模块总数

5、设备编号是否可以修改？

答：不可以修改，S7-200 SMART最多可以带8个IO设备，设备编号从1-8是固定的，如图3.所示。

图3.设备编号不可修改

6、如何导入S7-1200/1500/300/400通过TIA Portal导出的GSD文件？

答：在自行测试时，S7-200 SMART可以和例如S7-1200智能设备通信。 TIA Portal导出GSD文件，添加到S7-200 SMART后，组态PROFINET向导，点击生成后报错如图4.所示

图4.报错

需要在导出GSD文件之前，需要进行勾选，如图5.所示

图5.勾选参数

7、为什么和V90PN通信有错误出现时，PLC信息无诊断信息显示？

答： 查看PROFINET 向导配置时的组态

激活诊断选项，默认是：当前无效，需要选择：标准报警，否则有错误不会在PLC信息中显示出来，如图5.所示

图6.激活诊断

8、使用查找PROFINET设备功能是否可以找到S7-200 SMART 或者S7-1200/1500?

答：不可以，使用此功能可以搜索到 PROFINET IO设备，并且可以为其分配设备名称。

S7-200 SMART只支持作为IO控制器，不支持作为智能设备，S7-1200/1500可以作为智能设备，可以单独再TIA Portal中编程下载，分配设备名称和IP地址，无需使用S7-200 SMART查找PROFINET功能。

9、PROFINET通信控制器和IO设备是否可以跨网段通信？

答：基于网络结构模型，做PROFINET通信时，不可以跨网段通信，IO设备和控制器必须处于同一子网中！


DP01模块简介

使用 EM DP01 扩展模块可以将 S7-200 SMART CPU 做为 PROFIBUS-DP 从站连接到PROFIBUS 通信网络，EM DP01 可作为 DP V0/V1 主站的通信伙伴。通过模块上的旋转开关可以设置 PROFIBUS-DP 从站地址。该模块支持 9600 波特到 12M 波特之间的任一 PROFIBUS 波特率， 最大允许 244 输入字节和 244 输出字节。 每个 S7-200 SMART CPU（仅限 ST 与 SR 型号）可扩展两个 PROFIBUS EM DP01。

西门子热线工程师内部学习讲座-EM DP01模块部分：

  • S7-200 SMART DP01功能
  • S7-200 SMART DP01 Profibus-DP通讯实例

支持协议

DP01 模块同时支持PROFIBUS-DP 和 MPI 两种协议。EM DP01 PROFIBUS DP 模块的 DP 端口可以连接到网络中的 DP 主站，并且依然能够作为 MPI 设备与其它主站设备（例如，同一网络中的 SIMATIC HMI 设备或 S7-300/S7-400 CPU）通信。因 DP01 只能作为从站，所以两个DP01之间不能通信。作为MPI从站时， 连接资源共6个，1个预留给OP，其余5个为自由资源，可以与MPI主站以及HMI设备通讯。

DP01 模块使用前提条件

  • 编程软件版本：STEP 7-MicroWIN SMART V2.1及以上版本。
  • CPU 固件：V2.1及以上版本

数据一致性

定义

同步运行中无法修改的数据区称为一致性数据区,即在超出一致性数据区所允许最大空间的连续数据区中，可同时包含新数据和旧数据。

示例

如果中断通信块的执行过程（例如，由优先级更高的硬件中断程序中断），可能会出现不一致性现象。 如果该中断程序中的用户程序对已由该通信块局部处理的数据进行更改，则传送数据开始于：

部分开始于处理硬件中断之前,部分开始于处理硬件中断之后,这意味着，这些数据是不一致的（不连续）。

PROFIBUS 支持三种类型的数据一致性：

  • 字节：确保字节作为整体传送。
  • 字：确保字的传送过程不会被 CPU 中的其它进程所中断。
  • 缓冲区：确保整个数据缓冲区作为一个单位传送，不会被 CPU 中的其它进程所中断。

EM DP01 在数据处理过程中始终利用缓冲区一致性。

EM DP01 和 S7-200 SMART CPU 可确保整个传送的缓冲区一致性
  • EM DP01 以一条消息的形式接收 DP 主站的输出。
  • EM DP01 将所有输出以一条消息形式传送到 S7-200 SMART CPU，并且传送过程不可中断。
  • S7-200 SMART CPU 一次性将所有输出传送到 V 存储器。传送不可受用户干扰而中断。
输入到 DP 主站时也会确保这种一致性
  • S7-200 SMART CPU 一次性将所有输入从 V 存储器传出。传送不可受用户干扰而中断。
  • S7-200 SMART CPU 将所有输入以一条消息形式传送到 EM DP01。该传送不可被中断。
  • EM DP01 将输入以一条消息形式发送到 DP 主站。

DP主站的一致性

DP 主站 CPU 的一致性并非总是缓冲区一致。除非 DP 消息非常小，否则 DP 主站 CPU 不会将整个 DP 消息作为一个不可分割的对象进行处理。DP 主站 CPU 通常会以较小的单位移动 PROFIBUS 数据。既可以通过它们将数据移动到 I/O 区，也可以由用户使用 DPRD_DAT（读取 DP 设备的一致性数据）与 DPWR_DAT（写入 DP 设备的一致性数据）指令来控制移动。使用 DPRD_DAT 和 DPWR_DAT 指令，一次可获取一个组态"插槽"的信息。因为允许有两个组态插槽，这样就可以使用两条 DPRD_DAT 指令来获取所有数据。仅对每条 DPRD_DAT 指令保证一致性。

支持的组态

在 EM DP01 组态中，可以支持2个插槽，混用并匹配以上组态中的任意两种。EM DP01 最大允许 244 输入字节和 244 输出字节,如果对 EM DP01 使用两种组态，则所有的输入数据和所有的输出数据都是连续的。以下是两个示例：

  • 一个 32 字节输入输出的组态加上一个 8 字节输入输出的组态得到总计 40 输入字节以及 40 输出字节。
  • 一个 122 字节输入输出的组态加上一个 122 字节输入输出的组态得到总计 244 输入字节以及 244 输出字节。

主站中与从站的通信数据区对应关系

假设 DP 主站已定义一个 I/O 组态，其包含两个插槽且 V 存储器偏移量为 1000。将第一个插槽组态为 32 字节的输入输出，第二个插槽组态为 8 字节的输入输出。S7-200 SMART CPU 的输出与输入缓冲区均为 40 字节 (32 + 8)。输出数据（来自 DP 主站）缓冲区起始于 VB1000；输入数据（送入 DP 主站）缓冲区紧随输出缓冲区并起始于 VB1040。

GSD文件

不同的 PROFIBUS 设备具有不同的性能特征。这些特点会因功能（例如 I/O 信号和诊断消息的数量）或总线参数（例如传送速度与时间监视）而不同。这些参数因设备类型和供应商不同而不同，通常记录在技术手册中。为帮助用户简化 PROFIBUS 的组态，可在一个称为设备数据库文件或 GSD 文件的电子数据表中指定具体设备的性能特征。基于 GSD 文件的组态工具可以将不同供应商的设备方便地集成在同一个网络中。GSD 设备数据库文件以精确定义的格式全面地描述设备的各项特征。供应商负责为每种设备都准备 GSD 文件并提供给 PROFIBUS 用户使用。组态系统使用 GSD 文件可读取PROFIBUS 设备的特征并在组态网络时使用这些信息。

DP01 作为一个特殊的PROFIBUS-DP从站模块，其相关参数（包括上述的数据一致性）是以GSD（或GSE）文件的形式保存的。在主站中配置DP01，需要安装相关的GSD文件。

EM DP 01 GSD文件

Step7 平台下安装GSD文件

首先，在STEP 7项目里插入一个S7-300的站：

STEP7的硬件组态窗口中的"Options"菜单中点击“Install GSD File..”，导入EM DP 01 GSD文件，安装DP01配置文件，如下图：

选择DP01 GSD文件所在路径：

导入GSD文件后，在右侧的设备选择列表中找到从站EM DP01，(添加的GSD文件一般位于PROFIBUS DP->Additional Field Device->PLC->SIMATIC->EM DP 01 PROFIBUS-DP)并且根据通讯字节数，选择相应的配置：

TIA 平台下安装GSD文件

1. 启动 TIA Portal 软件。
2. 新建项目。
3. 在项目视图中，找到菜单栏并选择："选项 > 管理通用站描述文件(GSD)"（Options > Manage general station description files (GSD)）

4. 在"源"(Source) 路径中，找到之前加载到计算机中的 EM DP01 GSD 文件。
5. 选中相应 GSD 文件行的复选框。
6. 单击"安装"(Install) 按钮。

7. 执行上述操作后，将在硬件目录中安装 EM DP01 GSD 文件，如下图所示：

DP01 LED 指示灯

EM DP01 PROFIBUS DP 模块的前面板上有四个状态 LED 用于指示 DP 端口的工作状态：
DIAG LED：
– 双色（绿色/红色）LED 指示 EM DP01 的工作状态和故障状态
– 红色闪烁：自启动时开始闪烁，直到 CPU 完成 EM DP01 登录后停止闪烁，或在 EM DP01 出现故障时闪烁
– 绿色闪烁：EM DP01 等待 S7-200 SMART CPU 传输组态和参数（登录后绿灯立即闪烁）期间或固件升级期间
– 绿色常亮：无任何故障且 EM DP01 已组态
POWER LED：
– 绿色常亮：有用户 24 V DC
– 灭：无用户 24 V DC
DP ERROR LED：
– 红色闪烁：DP 主站写入 EM DP01 的 I/O 组态或参数信息存在错误
– 红色常亮：DP 通信被中断
– 灭：无错误或从未建立数据交换
DX MODE LED：
– 灭：S7-200 SMART CPU 通电后，未尝试进行 DP 通信或 DP 通信被中断
– 绿色常亮：成功发起 DP 通信后（EM DP01 已进入与 DP 主站交换数据的模式），该指示灯保持常亮，直至 EM DP01 退出数据交换模式

下表总结了 EM DP01 状态 LED 指示的状态：

LED | 灭 | 红色 | 红色闪烁 | 绿色闪烁 | 绿色
DIAG | - | 模块内部故障 | 自启动时开始闪烁，直到CPU 完成 EM DP01 登录后停止闪烁，或在 EM DP01出现故障时闪烁 | EM DP01 等待 S7- 200 SMART CPU 传输组态和参数期间或 固件升级期间 | 无任何故障； EM DP01 已组态
POWER | 无 24 V DC 用户电源 | - | - | - | 24 V DC 用户电源正常
DP ERROR | 无错误 | DP 通信中断；数据交换模式停止 | 参数设置/组态错误（来自 DP 主站） | - | -
DX MODE | 数据交换模式未激活或数据通信中断 | - | - | - | 数据交换模式激活

常问问题

是否可以通过DP01模块控制变频器？

不可以。DP01是PROFIBUS-DP从站模块，不能做主站；而变频器需要接受主站的控制。

为什么重新设置DP01地址后不起作用？

对DP01重新设置地址后，需断电后重新上电才起作用。或者检查DP01址拨码是否到位。

主站中对DP01的I/O配置的数据通信区已经到了最大，而仍不能满足需通信的数据量怎么办？

可以在传送的数据区中设置标志位，分时分批传送。

DP01所支持的通信速率和距离是多少？

电缆长度 | 所支持的通信速率
1200m | 93.75k
1000m | 187.5k
400m | 500k
200m | 1M到1.5M
100m | 3M到12M

DP01的联网能力如何?

联网能力 | 数据
站地址设置 | 0-99(由旋钮开关设定)
每段最大站数 | 32
每个网络最大站数 | 126，最多99个DP01站
MPI连接 | 一共6个，1个保留给OP

一个网络上只能有最多99个DP01站，是因为其地址设置开关的限制。

S7-300或S7-400的PROFIBUS_DP主站最多可以有多少个DP01从站？

这与S7-300或S7-400的DP口或DP模板的能力有关，要根据它所支持的DP从站数而定。一个网上最多可以有99个DP01。


与S7-300的Profibus-DP通讯

S7-200 SMART CPU 与 S7-300 CPU 进行 DP 通讯

S7-300与S7-200 SMART 通过 DP01 进行 PROFIBUS DP 通讯，需要进行S7-300站组态，在S7-200 SMART系统中不需要对通讯进行组态和编程，只需要将要进行通讯的数据整理存放到相应的 V 存储区，并且S7-300组态DP01从站时设置正确的地址即可。DP01的地址，在模块本身上的拨码设置分为X0（地址个位）和X10（地址十位）；DP01是波特率自适应的，取决于S7-300的组态。

注意：S7-200 SMART系统虽然中不需要对通讯进行组态和编程，但是需要在STEP 7-Micro/WIN SMART 系统块中组态EM DP 01 模块。

西门子热线工程师内部学习讲座-EM DP01模块部分：

  • S7-200 SMART DP01功能
  • S7-200 SMART DP01 Profibus-DP通讯实例

S7-300 站组态

首先，在STEP 7项目里插入一个S7-300的站并建立PROFIBUS DP 主站网络：

导入EM DP 01 GSD文件后，在右侧的设备选择列表中找到DP01从站，PROFIBUS DP-Additional Field Device-PLC-SIMATIC-EM DP 01 PROFIBUS-DP，并且根据通讯字节数，选择相应的配置。本例中的插槽一包含"4Bytes In/Out"预组态 I/O 选项，插槽二包含"8 Bytes In/Out"预组态 I/O 选项。如下图：

确定S7-300硬件组态中所设置DP01的DP 从站地址，如下图红框标注，为DP从站DP01的站地址。

如果使用的S7-200 SMART通信区域不从VB0开始，则还需要在“Parameter Assignment”选项卡中设置"I/O Offset in the V-memory"参数，
该参数的设置如下图所示（本例中S7-200 SMART通信区域是从VB0开始，所以此参数设置为0）：

组态完系统的硬件配置后，将编译下载到S7-300的PLC当中。 在S7-200 SMART 侧断电的情况下，将DP01的拨位开关拨到与S7-300侧硬件组态的设定值一致。
打开 STEP7中的变量表和STEP 7-MicroWIN SMART状态表进行监控，它们的数据交换结果如下图：

VB0－VB11是S7－300写到S7－200 SMART 的数据，VB12－VB23是S7－300从S7－200 SMART读取的值。

注：可以在固件版本 V2.5以上的 S7-300 CPU Properties的 “Cycle/Clock Memory”标签下修改过程映像区的大小，使DP通讯的数据区在过程映像区之内，这样设置的话就可以直接对过程映像区进行操作。在过程映像区中的数据是始终一致的，由操作系统对过程映像区进行自动更新。无需再通过 DPRD_DAT（读取 DP 设备的一致性数据）与 DPWR_DAT（写入 DP 设备的一致性数据）保证数据一致性。

DP01上拨位开关的位置一定要和S7－300中组态的地址值一致。

TIA 中配置

插入 CPU 315-2 DP 作为 DP 主站。

插入 EM DP01 PROFIBUS DP 模块。如下图所示，在 DP 主站和设备之间创建 PROFIBUS 网络。

设备视图中组态DP01的通讯区，本例中的插槽一包含"4 Bytes In/Out"预组态 I/O 选项，插槽二包含"8 Bytes In/Out"预组态 I/O 选项。在"Properties"、"General"选项卡区域，单击"Device-specific parameters"以显示"I/O Offset in the V memory"字段。在此处可分配为该操作预留的那部分 V 存储器的启动地址。

注意：VB0－VB11是S7－300写到S7－200 SMART 的数据，VB12－VB23是S7－300从S7－200 SMART读取的值。

打开博图软件中的监控表和STEP 7-MicroWIN SMART状态表进行监控，它们的数据交换结果如下图：


与S7-300的MPI通讯

S7-200 SMART CPU 与 S7-300 CPU 进行 MPI 通讯

S7-200 SMART PLC 通过EM DP01 模块与 S7-300 PLC之间采用 MPI 通讯方式时，S7-200 SMART PLC 中不需要编写任何与通讯有关的程序，只需要将要交换的数据整理到一个连续的V 存储区当中即可，而S7-300 PLC中需要在组织块OB1（或是定时中断组织块OB35）当中调用系统功能X_GET（SFC67）和X_PUT(SFC68)，以实现S7-200 SMART PLC 与 S7-300 PLC之间的通讯。

S7-300 PLC调用 SFC67 和 SFC68 时,该系统功能的"VAR_ADDR" 参数需要填写S7-200 SMART PLC侧数据地址区。由于S7-200 SMART PLC 的数据区为 V 区，如果这个参数填写为 P#DB1.DBX×× BYTE n 则对应的就是S7-200 SMART PLC侧VB×× ~ VB（××＋n -1）的数据区。 例如交换的数据存在S7-200 SMART PLC 中 VB50 到 VB59 这10个字节当中，则“VAR_ADDR”参数应为 P#DB1.DBX50.0 BYTE 10。首先根据S7-300的硬件配置，在STEP7当中组态S7-300站并且下载，注意S7-300出厂默认的MPI地址是2，需要保证DP 01模块站地址与S7-300 地址不冲突。例子程序当中将S7-300 MPI地址设定为2，DP01 地址通过外部拨码设定3，另外DP01 模块自支持自适应波特率，S7-300侧可以根据实际需要设置波特率。

西门子热线工程师内部学习讲座-EM DP01模块部分：

  • S7-200 SMART DP01功能
  • S7-200 SMART DP01 Profibus-DP通讯实例

S7-200 SMART 组态

S7-200 SMART系统中需根据 EM DP 01模块所在的实际位置在系统块中添加EM DP01模块，但添加的DP01 模块无需再进行其他设置，本例中DP01模块紧邻CPU，MPI地址通过DP01模块外部拨码开关进行调节。系统块设置如下图：

S7-300 CPU 在 Step7 平台下组态

S7-300 PLC修改MPI地址可以参考下图：

例子程序在OB1当中调用数据读写功能块：SFC67和SFC68，如下图所示：

分别在 STEP 7-MicroWIN SMART 和STEP7当中监视S7-300 PLC和 S7-200 SMART PLC当中的数据，数据监视界面如下：

S7-300 CPU 在 TIA 平台下组态

S7-300 PLC修改MPI地址可以参考下图：

例子程序在OB1当中调用数据读写功能块：X_PUT和X_GET。

分别在 STEP 7-MicroWIN SMART 和STEP7当中监视S7-300 PLC和 S7-200 SMART PLC当中的数据，数据监视界面如下：


无标题文档

EM DP01 与 SIMATIC NET 进行 S7 通信

硬件：
①S7-200 SMART 以及 EM DP01 模块（CPU固件版本V 2.1以上才可以使用 EM DP01）
②PC 机 ( PCI-E插槽)
③CP 5624卡
软件：
① STEP 7-Micro/WIN SMART V2.1
② STEP 7 Professional（TIA Portal V13 SP1 Upd 9）
③ SIMATIC NET V13 SP2
④ 操作系统 Windows 7 Professional 64位 SP1

在 TIA Portal 平台中配置 PC station

1. 使用 TIA V13 SP1 Upd 9 软件 Portal 视图中，创建新项目

2. 添加 PC 系统并命名设备名称

进入 “项目视图”，在“项目树” 下双击 “添加新设备”，在对话框中选择 PC 系统>常规 PC，命名为 PC station 如图1 所示

图1. 添加新设备

3. 添加 OPC服务器及 CP 5624 卡

进入设备视图>硬件目录>用户应用程序> OPC 服务器，双击，添加 OPC服务器；

进入设备视图>硬件目录>通信模块> PROFIBUS> CP5624，找到相应的 CP 卡双击，添加 CP 5624 卡 ，结果如图2 所示

图2.添加OPC服务器及CP5624

4. 为 CP 5624 卡通信口分配 DP 地址

在 “设备视图”中点击 CP5624 上代表 PRIBUS 通信口的紫色方块，在下方会出现 PROFIBUS 接口的属性，在 “PROFIBUS 地址” 下，点击“添加新子网”，建立 PRFIBUS_1 网络；分配 CP5624 的接口类型为 PROFIBUS ；地址设置为 3 ，如图3 所示

图3. 添加子网并分配 DP 地址

5.在网络视图中，点击代表 PROFIUBS_1 网络的紫色实线，属性>常规>网络设置，可以设置传输率，此处设定传输率为 1.5 Mbps，如图4所示。

图4. 设置传输率

6.建立 S7 连接并且设置连接参数

打开网络视图，点击连接，选择S7 连接，默认连接为HMI连接，需要修改；点击 OPC server ,右键添加新连接；创建新连接对话框选择未指定，本地接口选择 CP5624，点击添加；

属性>常规>常规，伙伴站点及接口设置为未知；伙伴地址设置为 4（为 EM DP01 的地址）；

属性>常规>地址详细信息，伙伴 TSAP 设置为 03.00 。

设置步骤如图5 所示。

图5. 建立 S7连接及参数配置

7.生成 XDB 组态文件

网络视图中，点击 PC station 站点，属性> XDB 组态，勾选 “生成 XDB 文件” 然后将项目进行编译。如图6所示。

图6.生成XDB文件

STATION CONFIGURATOR 中导入 XDB 组态文件

在计算机“开始”菜单中 ，搜索，输入关键字 STATION CONFIGURATOR ,双击找到的软件，打开;

在打开的 Station Configuration Editor 中点击 “Import Station”，选择XDB存储路径导入

导入过程及结果如图7所示。

图7.导入XDB文件

S7-200 SMART 侧设置 DP01 的地址

使用EM DP01要保证 CPU 的硬件固件在 V2.1及其以上；编程软件的版本在V2.1以上

1、打开STEP 7-MicroWIN SMART > 项目树 > 系统快，组态 EM DP01模块，如图8 所示，然后编译，下载。

图8.系统块组态 EM DP01

2、设置 EM DP01模块地址为4，设置完需要断电重启，如图9 所示。

图9.设置 EM DP01 地址

3、使用 DP总线和 DP 总线连接器连接 EM DP01 的 RS485口 和电脑上安装的 CP5624的 RS 485 口， EM DP01 模块波特率自适应，不用单独设定。

使用 OPC SCOUT 测试

在计算机“开始”菜单中，搜索 SIMATIC NET 的 OPC Scout V10 ，双击打开，建立变量：MB10，MB11 ，MD20， MD24 ，MD28。

打开STEP 7-MicroWIN SMART，在状态图表中赋值。

如图10 所示

图10.通信结果

常见问题

如何理解建立的变量的起始地址，数据类型及个数

以建立M区变量为例说明，如下图所示

S7-200 SMART 要交换V区数据，OPC scout 中无法添加 DB 块的变量怎么办？

S7-200 SMART 要通信 V 区数据，需要在 OPC SCOUT 中建立 DB1 的数据

如果在OPC Scout 中无法建立 DB 块数据，可以先插入M变量，然后进行修改，修改方法如下：

注意！OPC scout 如果无法建立DB块变量，在M区修改以后也只能用于测试 S7 通信是否成功，在客户端需要单独建立变量


Modbus 通信

S7-200 SMART PLC 通过以下方式支持 Modbus 通信协议：

  • S7-200 SMART CPU 上的通信口 0 和 1 （Port 0 和 Port 1）通过指令库支持 Modbus RTU 从站模式
  • S7-200 SMART CPU 上的通讯口 0 和 1 （Port 0 和 Port 1）通过指令库支持 Modbus RTU 主站模式

通过 S7-200 SMART CPU 通信口的自由口模式实现 Modbus 通信协议，可以通过无线数据电台等慢速通信设备传输。 这为组成 S7-200 SMART 之间的简单无线通信网络提供了便利。

详细情况请参考《S7-200 SMART 系统手册》。

Modbus 是公开通信协议，其最简单的串行通信部分仅规定了在串行线路的基本数据传输格式，在 OSI 七层协议模型中只到 1，2 层。

Modbus 具有两种串行传输模式，ASCII 和 RTU。它们定义了数据如何打包、解码的不同方式。支持 Modbus 协议的设备一般都支持 RTU 格式。

通信双方必须同时支持上述模式中的一种。

Modbus 是一种单主站的主/从通信模式。Modbus 网络上只能有一个主站存在，主站在 Modbus 网络上没有地址，从站的地址范围为 0 - 247，其中 0 为广播地址，从站的实际地址范围为 1 - 247。

Modbus 通信标准协议可以通过各种传输方式传播，如 RS232C、RS485、光纤、无线电等。 在 S7-200 CPU 通信口上实现的是 RS485 半双工通信，使用的是 S7-200 SMART 的自由口功能。

详细的协议和规范，请访问 Modbus 组织的网站：

http://www.modbus.org

Modbus RTU通信相关指令使用的视频教程链接如下：

Modbus RTU通信 | 从站编程 | S7-200 SMART Modbus RTU通信(1):概述及从站编程——跟我学 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1078
 |  | S7-200 SMART Modbus RTU通信(1):概述及从站编程——跟我做 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1079
 | 主站编程 | S7-200 SMART Modbus RTU通信(2):主站编程——跟我学 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1080
 |  | S7-200 SMART Modbus RTU通信(2):主站编程——跟我做 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1081
 | 下载测试 | S7-200 SMART Modbus RTU通信(3):下载测试——跟我学 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1082
 |  | S7-200 SMART Modbus RTU通信(3):下载测试——跟我做 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1083

西门子热线工程师内部学习讲座-Modbus RTU部分：

  • S7-200 SMART PLC Modbus RTU（西门子热线工程师内部学习讲座）

常问问题

S7-200 SMART 是否支持 Modbus ASCII 通信模式？

西门子不提供支持上述模式的的现成指令库，需要用户自己用自由口模式编程。


Modbus RTU 主站（Port0 Port1）

Modbus RTU 主站指令库

西门子在 STEP 7-Micro/WIN SMART 中正式推出 Modbus RTU 主站协议库（西门子标准库指令）。

图 1. 西门子标准指令库（STEP 7-Micro/WIN SMART）

注意：

1. Modbus RTU 主站指令库的功能是通过在用户程序中调用预先编好的程序功能块实现的，该库对 CPU 集成的 RS 485 通讯口 和 CM 01 信号板有效。该指令库将设置通信口工作在自由口模式下。
2. Modbus RTU 主站指令库使用了一些用户中断功能，编其他程序时不能在用户程序中禁止中断。
3. Modbus RTU 主站指令库不能同时应用于CPU 集成的 RS 485 通讯口 和 CM 01 信号板。

使用 Modbus RTU 主站指令库，可以读写 Modbus RTU 从站的数字量、模拟量 I/O 以及保持寄存器。

Modbus RTU 主站功能编程

1. 调用 Modbus RTU 主站初始化和控制子程序

使用 SM0.0 调用 MBUS_CTRL 完成主站的初始化，并启动其功能控制：

图 2. 用 SM0.0 调用 Modbus RTU 主站初始化与控制子程序

各参数意义如下:

a. | EN | 使能： | 必须保证每一扫描周期都被使能（使用 SM0.0）
b. | Mode | 模式： | 为 1 时，使能 Modbus 协议功能；为 0 时恢复为系统 PPI 协议
c. | Baud | 波特率： | 支持的通讯波特率为1200，2400，4800，9600，19200，38400，57600，115200。
d. | Parity | 校验： | 校验方式选择
 |  |  | 0＝无校验
 |  |  | 1＝奇较验
 |  |  | 2＝偶较验
e. | Port | 端口号： | 0 = CPU 集成的 RS 485 通讯口 ； 1 = 可选 CM 01 信号板 。
f. | Timeout | 超时： | 主站等待从站响应的时间，以毫秒为单位，典型的设置值为 1000 毫秒（1 秒），允许设置的范围为 1 - 32767。
 |  |  | 注意： 这个值必须设置足够大以保证从站有时间响应。
g. | Done | 完成位： | 初始化完成，此位会自动置1。可以用该位启动 MBUS_MSG 读写操作（见例程）
h. | Error |  | 初始化错误代码（只有在 Done 位为1时有效）：
 |  |  | 0＝ 无错误
 |  |  | 1＝ 校验选择非法
 |  |  | 2＝ 波特率选择非法
 |  |  | 3＝ 超时无效
 |  |  | 4＝ 模式选择非法
 |  |  | 9＝ 端口无效
 |  |  | 10＝ 信号板端口 1 缺失或未组态

2. 调用 Modbus RTU 主站读写子程序MBUS_MSG，发送一个Modbus 请求；

图 3. 调用Modbus RTU 主站读写子程序

各参数意义如下:

a. | EN | 使能： | 同一时刻只能有一个读写功能（即 MBUS_MSG）使能
 |  |  | 注意：建议每一个读写功能（即 MBUS_MSG）都用上一个 MBUS_MSG 指令的 Done 完成位来激活，以保证所有读写指令循环进行（见例程）。
b. | First | 读写请求位： | 每一个新的读写请求必须使用脉冲触发
c. | Slave | 从站地址： | 可选择的范围 1 - 247
d. | RW | 读写请求： | 0 ＝ 读， 1 ＝ 写
 |  |  | 注意：
 |  |  | 1. 开关量输出和保持寄存器支持读和写功能
 |  |  | 2. 开关量输入和模拟量输入只支持读功能
e. | Addr | 读写从站的 | 选择读写的数据类型
 |  | 数据地址： | 00001 至 0xxxx - 开关量输出
 |  |  | 10001 至 1xxxx - 开关量输入
 |  |  | 30001 至 3xxxx - 模拟量输入
 |  |  | 40001 至 4xxxx - 保持寄存器
f. | Count | 数据个数 | 通讯的数据个数（位或字的个数）
 |  |  | 注意： Modbus主站可读/写的最大数据量为120个字（是指每一个 MBUS_MSG 指令）
g. | DataPtr | 数据指针： | 1. 如果是读指令，读回的数据放到这个数据区中
 |  |  | 2. 如果是写指令，要写出的数据放到这个数据区中
h. | Done | 完成位 | 读写功能完成位
i. | Error | 错误代码： | 只有在 Done 位为1时，错误代码才有效
 |  |  | 0 ＝ 无错误
 |  |  | 1 ＝ 响应校验错误
 |  |  | 2 ＝ 未用
 |  |  | 3 ＝ 接收超时（从站无响应）
 |  |  | 4 ＝ 请求参数错误（slave address, Modbus address, count, RW）
 |  |  | 5 ＝ Modbus/自由口未使能
 |  |  | 6 ＝ Modbus正在忙于其它请求
 |  |  | 7 ＝ 响应错误（响应不是请求的操作）
 |  |  | 8 ＝ 响应CRC校验和错误
 |  |  | -
 |  |  | 101 ＝ 从站不支持请求的功能
 |  |  | 102 ＝ 从站不支持数据地址
 |  |  | 103 ＝ 从站不支持此种数据类型
 |  |  | 104 ＝ 从站设备故障
 |  |  | 105 ＝ 从站接受了信息，但是响应被延迟
 |  |  | 106 ＝ 从站忙，拒绝了该信息
 |  |  | 107 ＝ 从站拒绝了信息
 |  |  | 108 ＝ 从站存储器奇偶错误

常见的错误：

  • 如果多个 MBUS_MSG 指令同时使能会造成 6 号错误
  • 从站 delay 参数设的时间过长会造成主站 3 号错误
  • 从站掉电或不运行，网络故障都会造成主站 3 号错误

3. 在 CPU 的 V 数据区中为库指令分配存储区（Library Memory）

Modbus Master 指令库需要一个286个字节的全局 V 存储区。

调用STEP 7 - Mciro/WIN SMART Instruction Library（指令库）需要分配库指令数据区（Library Memory）。库指令数据区是相应库的子程序和中断程序所要用到的变量存储空间。

如果在编程时不分配库指令数据区，编译时会产生许多相同的错误。

操作步骤：

1）在指令树的Project（项目）中，以鼠标右键单击Program Block（程序块），在弹出的快捷菜单中选择Library Memory。如图4所示：

图4. “库存储器”按钮

2）在弹出的选项卡中设置库指令数据区，如图5所示：

图5. 缺省情况下是从VB0开始，但要保证该存储器使用地址范围与其他程序使用的地址不能有重叠。按“建议地址”按钮也可以自动分配。

可以使用 “建议地址” 设置数据区，但要注意编程软件设置的数据区地址，只考虑到了其他一般寻址，而未考虑到诸如Modbus数据保持寄存器区等的设置。应当确保不与其他任何已使用的数据区重叠、冲突。不应重复按 “建议地址” 按钮，否则也会造成混乱。

关于 Modbus RTU 主站协议库的补充说明

Modbus 地址

通常 Modbus 地址由 5 位数字组成，包括起始的数据类型代号，以及后面的偏移地址。Modbus Master 协议库把标准的 Modbus 地址映射为所谓 Modbus 功能号，读写从站的数据。Modbus Master 协议库支持如下地址：

  • 00001 - 09999：数字量输出（ 线圈）
  • 10001 - 19999：数字量输入（触点）
  • 30001 - 39999：输入数据寄存器（通常为模拟量输入）
  • 40001 - 49999：数据保持寄存器

Modbus Master 协议库支持的功能

为了支持上述 Modbus 地址的读写，Modbus Master 协议库需要从站支持下列功能：

表 1. 需要从站支持的功能

Modbus 地址 | 读/写 | Modbus 从站须支持的功能
00001 - 09999 数字量输出 | 读 | 功能 1
 | 写 | 功能 5：写单输出点 功能 15：写多输出点
10001 - 19999 数字量输入 | 读 | 功能 2
 | 写 | －
30001 - 39999 输入寄存器 | 读 | 功能 4
 | 写 | －
40001 - 49999 保持寄存器 | 读 | 功能 3
 | 写 | 功能 6：写单寄存器单元 功能 16：写多寄存器单元

Modbus 地址和 S7-200 SMART 存储区地址的映射

S7-200 SMART 通过 Modbus Master 和 Slave 协议库通信时，Modbus 地址和 S7-200 SMART CPU内存储区地址的 映射关系都类似。

Modbus 保持寄存器地址映射举例：

Modbus 保持寄存器地址

40001 | 12 34
40002 | 56 78
40003 | 9A BC

S7-200 SMART 存储区字寻址

VW200 | 12 34
VW202 | 56 78
VW204 | 9A BC

S7-200 SMART 存储区字节寻址

VB200 | 12
VB201 | 34
VB202 | 56
VB203 | 78
VB204 | 9A
VB205 | BC

Modbus 数字量地址映射举例：

位地址（0xxxx 和 1xxxx）数据总是以字节为单位打包读写。第一个字节中的最低有效位对应 Modbus 地址的起始地址。如下图所示：

图6 . 数字量地址映射举例

Modbus RTU 主站例程

为了更好地理解 Modbus 主站的编程，可参考下面的轮询例程。

注意：

1. 该例程使用 STEP 7-Micro/WIN SMART 编写，针对端口0。
2. 该例程仅访问一个从站，多个MBUS_MSG指令轮询执行，若访问不同的从站，可通过改变从站地址来实现。

Modbus RTU 主站指令库应用例程

注意：此指令库/程序的作者和拥有者对于该软件的功能性和兼容性不负任何责任。使用该软件的风险完全由用户自行承担。由于它是免费的，所以不提供任何担保，错误纠正和热线支持，用户不必为此联系西门子技术支持与服务部门。


Modbus RTU 从站（Port0）

CPU 本体集成通信口（Port 0）、可选信号板 （Port 1）支持 Modbus RTU 从站通信协议

S7-200 SMART CPU 本体集成通信口（Port 0）、可选信号板（Port 1）可以支持Modbus RTU协议，成为Modbus RTU从站。此功能是通过 S7-200 SMART的自由口通信模式实现，因此可以通过无线数据电台等慢速通信设备传输。

详情请参考《 S7-200 SMART PLC系统手册》之相关章节。

要实现Modbus RTU通信，需要使用STEP 7-Micro/WIN SMART Instruction Library（指令库）。Modbus RTU功能是通过指令库中预先编好的程序功能块实现的。

Modbus RTU从站指令不能同时用于 CPU 集成的 RS 485 通讯口 和 可选 CM 01 信号板。

基本步骤：

  1. 检查Micro/WIN SMART Modbus RTU从站指令库（图1），库中应当包括MBUS_INIT和MBUS_SLAVE两个子程序。

    图1. 指令树中的库指令

  2. 编程时使用SM0.1调用子程序MBUS_INIT进行初始化，使用SM0.0调用MBUS_SLAVE，并指定相应参数。关于参数的详细说明，可在子程序的局部变量表中找到；

    图2. 调用Modbus RTU通信指令库

    图中参数意义如下：

    1. 模式选择：启动/停止Modbus，1=启动；0=停止
    2. 从站地址：Modbus从站地址，取值1~247
    3. 波特率：可选1200，2400，4800，9600，19200，38400，57600，115200
    4. 奇偶校验：0=无校验；1=奇校验；2=偶校验
    5. 端口：0=CPU中集成的 RS-485,1=可选信号板上的RS-485 或 RS-232。
    6. 延时：附加字符间延时，缺省值为0
    7. 最大I/Q位：参与通信的最大I/O点数，S7-200 SMART 的I/O映像区为256/256(但目前只能最多连接4个扩展模块，因此目前最多I/O点数为188/188)
    8. 最大AI字数：参与通信的最大AI通道数，最多56个
    9. 最大保持寄存器区：参与通信的V存储区字（VW）
    10. 保持寄存器区起始地址：以&VBx指定（间接寻址方式）
    11. 初始化完成标志：成功初始化后置1
    12. 初始化错误代码
    13. Modbus执行：通信中时置1，无 Modbus 通信活动时为 0。
    14. 错误代码：0=无错误

  3. 在CPU的V数据区中分配库指令数据区（Library Memory）

    Modbus Slave 指令库需要一个781个字节的全局 V 存储区。

    调用STEP 7 - Mciro/WIN SMART Instruction Library（指令库）需要分配库指令数据区（Library Memory）。库指令数据区是相应库的子程序和中断程序所要用到的变量存储空间。

    如果在编程时不分配库指令数据区，编译时会产生许多相同的错误。

    操作步骤：

    1）在指令树的Project（项目）中，以鼠标右键单击Program Block（程序块），在弹出的快捷菜单中选择Library Memory。如图3所示：

    图3. “库存储器” 按钮

    2）在弹出的选项卡中设置库指令数据区，如图4所示：

    图4. 缺省情况下是从VB0开始，但要保证该存储器使用地址范围与其他程序使用的地址不能有重叠。按“建议地址”按钮也可以自动分配。

  4. 如有必要，使用主站软件测试。

注意：由子程序参数HoldStart和MaxHold指定的保持寄存器区，是在S7-200 SMART CPU的V数据存储区中分配，此数据区不能和库指令数据区有任何重叠，否则在运行时会产生错误，不能正常通信。注意Modbus 中的保持寄存器区按“字”寻址，即MaxHold规定的是VW而不是VB的个数。

在图2的例子中，规定了 Modbus 保持寄存器区从 VB1000 开始（HoldStart ＝ VB1000），并且保持寄存器为1000个字（MaxHold＝1000），因保持寄存器以字（两个字节）为单位，实际上这个通信缓冲区占用了VB1000～VB2999共2000个字节。因此分配库指令保留数据区时至少要避开 VB1000～VB2999 区间。

注意：你选用的CPU的V存储区大小！CPU型号不同V数据存储区大小不同。应根据需要选择Modbus保持寄存器区域的大小。

包含 Modbus RTU 从站指令库的项目编译、下载到CPU中后，在编程计算机（PG/PC）上运行一些 Modbus 测试软件可以检验S7-200 SMART CPU的Modbus RTU通信是否正常，这对查找故障点很有用。测试软件通过计算机串口（RS-232）和PC/PPI电缆连接CPU。如果必要，须将PC/PPI电缆设置在自由口通信方式。

可到一些软件下载网站寻找类似软件，如 ModScan32 等。

Modbus RTU 从站地址与S7-200 SMART 的地址对应

Modbus地址总是以00001、30004之类的形式出现。S7-200 SMART CPU内部的数据存储区与Modbus的0、1、3、4共4类地址的对应关系如下：

表1. Modbus地址对应表
Modbus地址 | S7-200 SMART 数据区
00001 ~ 00256 | Q0.0 ~ Q31.7
10001 ~ 10256 | I0.0 ~ I31.7
30001 ~ 30056 | AIW0 ~ AIW110
40001 ~ 4xxxx | T ~ T + 2 * (xxxx -1)

其中T为S7-200 SMART CPU中的缓冲区起始地址，即 HoldStart。

如果已知S7-200 SMART CPU中的V存储区地址，推算Modbus地址的公式如下：

Modbus地址 = 40000 + (T/2+1) ; T为偶数

Modbus RTU 从站指令库支持的 Modbus 功能码

Modbus RTU 从站指令库支持特定的 Modbus 功能。访问使用此指令库的主站必须遵循这个指令库的要求。

表 2. Modbus RTU 从站功能码
功能码 | 主站使用相应功能码作用于此从站的效用
1 | 读取单个/多个线圈（离散量输出点）状态。 功能 1 返回任意个数输出点（Q）的 ON/OFF 状态。
2 | 读取单个/多个触点（离散量输入点）状态。 功能 2 返回任意个数输入点（I）的 ON/OFF 状态。
3 | 读取单个/多个保持寄存器。功能 3 返回 V 存储区的内容。在 Modbus 协议下保持寄存器都是“字”值，在一次请求中可以读取最多 120 个字的数据。
4 | 读取单个/多个输入寄存器。功能 4 返回 S7-200 SMART CPU 的模拟量数据值。
5 | 写单个线圈（离散量输出点）。功能 5 用于将离散量输出点设置为指定的值。这个点不是被强制的，用户程序可以覆盖 Modbus 通信请求写入的值。
6 | 写单个保持寄存器。功能 6 写一个值到 S7-200 SMART 的 V 存储区的保持寄存器中。
15 | 写多个线圈（离散量输出点）。功能 15 把多个离散量输出点的值写到 S7-200 SMART CPU 的输出映像寄存器（Q 区）。输出点的地址必须以字节边界起始（如 Q0.0 或 Q2.0），并且输出点的数目必须是 8 的整数倍。这是此 Modbus RTU 从站指令库的限制。些点不是被强制的，用户程序可以覆盖 Modbus 通信请求写入的值。
16 | 些多个保持寄存器。功能 16 写多个值到 S7-200 SMART CPU 的 V 存储区的保持寄存器中。在一次请求中可以写最多 120 个字的数据。

Modbus RTU 从站例程

为了更好地理解 Modbus 从站的编程，可参考下面的例程。

注意：

1. 该例程使用 STEP 7-Micro/WIN SMART 编写。
2. 该例程 Modbus 从站站地址设置为 3，不同的站地址可通过修改程序中 MBUS_INIT 指令的 “Addr” 引脚来实现。

Modbus RTU 从站指令库应用例程

注意：此指令库/程序的作者和拥有者对于该软件的功能性和兼容性不负任何责任。使用该软件的风险完全由用户自行承担。由于它是免费的，所以不提供任何担保，错误纠正和热线支持，用户不必为此联系西门子技术支持与服务部门。


Modbus 通信

常见问题

1.S7-200 SMART 是否支持 Modbus ASCII 通信模式？

STEP 7-Micro/WIN SMART 软件未提供Modbus ASCII 通信模式指令库。S7-200 SMART CPU若用于Modbus ASCII 通信时，则需要用户使用自由口通信模式进行编程。

2.S7-200 SMART CPU 集成的RS485 端口（端口 0 ）以及SB CM01 信号板（端口 1 ）两个通信端口能否同时作为 Modbus RTU 主站或者同时作为 Modbus RTU从站？

S7-200 SMART V2.2版本支持两个通信端口同时做MODBUS RTU主站，不支持同时做MODBUS RTU从站。

3.S7-200 SMART CPU作为 Modbus RTU 主站如何访问 Modbus 地址范围大于49999 的保持寄存器？

通常 Modbus 协议的保持寄存器范围在 40001 到 49999 之间，这个范围对于多数应用来说已经足够了，但有些 Modbus 从站保持寄存器区的地址会超出该范围。Modbus RTU 主站协议库支持保持寄存器地址范围为（40001 到 49999） 或者（400001 到 465536）。如果 Modbus 从站地址范围为 400001 – 465536，只需在调用 MBUS_MSG 子程序时给 Addr 参数赋相应的值即可，如 416768。

4.S7-200 SMART CPU作为 Modbus RTU 主站，多次调用 MBUS_MSG 指令时，为什么该指令会出现 6# 错误代码？

1.同一时间只能有一条 MBUS_MSG 指令处于激活状态，如果激活多条 MBUS_MSG 指令，将执行第一条 MBUS_MSG 指令，所有后续 MBUS_MSG 指令将中止执行并出现 6# 错误代码。多条 MBUS_MSG 指令的执行需要采用轮询方式 。

2. Modbus库存储区中分配的建议地址区与编程中已使用的V存储区有重叠。

5.S7-200 SMART CPU作为 Modbus RTU 主站，从站故障或者通信线路断开时，主站会尝试发送多次请求报文，从而导致通信时间过长。如何减少主站的重发次数，以提高通信效率？

MBUS_MSG 指令被激活时将发送 Modbus 请求报文帧，如果在Timeout 参数定义的时间间隔内主站未接收到从站应答，Modbus RTU 主站协议库默认的情况下还会再发送 2 次 Modbus 请求报文帧；在最后一次请求报文帧发送后，经过 Timeout 参数定义的时间间隔后还未收到应答时， MBUS_MSG 指令的 Done 完成位才被设置为 1 。将 mModbusRetries 变量的数值由 2 改为 0 ，即可取消 Modbus 请求报文帧的重试次数。mModbusRetries 变量的绝对地址可通过查询Modbus RTU 主站协议库的符号表获取，如图 1. Modbus RTU 主站指令符号表所示。

图 1. Modbus RTU 主站指令符号表

6.为什么有的 HMI 软件使用 Modbus RTU 协议可以读取作为 Modbus RTU 从站 S7-200 SMART CPU 的数据，但是不能写入数据？

可能此软件使用Modbus功能15写多个开关量输出功能到S7-200 SMART CPU时，没有遵守从站协议中“以整字节地址边界（如Q0.0、Q2.0）开始、以8的整数倍为位个数”的规约。定义HMI 软件严格执行此规律可以避免发生写入错误的情况

7.为什么有的 HMI 软件使用 Modbus RTU 协议读取作为 Modbus RTU 从站 S7-200 SMART CPU 的浮点型数据时会出现错误？

可能此HMI软件使用Modbus RTU通信协议时，处理保持寄存器中浮点数的存储格式与西门子的浮点数存储格式不同。西门子的PLC遵循“高字节低地址、低字节高地址”的规约。
Modbus RTU的保持寄存器以“字”为单位，1个浮点型数据则由2个“字”构成。HMI软件在处理时可能会将保持寄存器的两个“字”互换位置，造成不能识别以西门子格式表示的浮点数。如果HMI软件一方无法处理这种浮点数，则可在S7-200 SMART CPU中编程将存入保持寄存器区的浮点数的高“字”和低“字”互换。

8.S7-200 SMART紧凑型CPU作为 Modbus RTU 从站时，已经将 MBUS_INIT 指令的Mode 输入参数设置为“1”了，但是 MBUS_SLAVE 指令还是会出现 10 号错误（从站功能未启用）？

S7-200 SMART紧凑型CPU 不能扩展信号模块，不具有模拟量输入通道，如果MBUS_INIT 指令的MaxAI 输入参数设置不为“0”，则MBUS_SLAVE 指令会出现 10 号错误。

9.S7-200 SMART 使用S7-200的Modbus slave库无法初始化成功？

如下图所示，使用STEP 7-Micro/WIN SMART 直接打开S7-200 MODBUS 通信程序并做相关设置后测试，

首先，图中的MBUS_INIT的相关参数针对200smart来说，设置均正常，但是从测试结果可以看出，初始化MBUS_INIT报错1：存储器范围出错，而且MBUS_SLAVE报错10：从站功能未启用

图2. MODBUS Slave报错

这是因为200的库程序里针对过程映像区MaxIQ(0-128)，AaxAI(0-32)做的报警判断，如下图Modbus Slave程序所示，S7-200的过程映像区最大0-31，所以超过31会报错，【但S7-200smart的AI过程映像区最大255】

图3. MODBUS Slave报警判断

所以当S7-200 SMART需要设计AI大于31的地址时，考虑还是使用STEP 7-Micro/WIN SMART自己的库。

10.S7-200 SMART CPU作为 Modbus RTU 从站时，是否支持 Modbus RTU 主站发送的广播命令？

S7-200 SMART CPU 作为 Modbus RTU 从站时，不支持广播命令。


自由口通讯

自由口通信

S7-200 SMART CPU 本体集成的RS485通信口和扩展信号板（RS485/RS232）可以设置为自由口模式。选择自由口模式后，用户程序就可以完全控制通信端口的操作，通信协议也完全受用户程序控制。

S7-200 SMART CPU 本体集成的通信口在电气上是标准的RS-485半双工串行通信口。此串行字符通信的格式可以包括：

  • 一个起始位
  • 7或8位字符（数据字节）
  • 一个奇/偶校验位，或者没有校验位
  • 一个停止位

自由口通信速波特率可以设置为1200、2400、4800、9600、19200、38400、57600或115200。

凡是符合这些格式的串行通信设备，理论上都可以和S7-200 SMART CPU通信。

自由口模式可以灵活应用。Micro/WIN SMART的两个指令库（USS和Modbus RTU）就是使用自由口模式编程实现的。

在进行自由口通信程序调试时，可以使用 RS232/PPI 电缆（设置到自由口通信模式）连接PC和CPU，在PC上运行串口调试软件（或者Windows的Hyper Terminal－超级终端）调试自由口程序。

自由口通讯相关指令使用的视频教程链接如下：

自由口通讯 | 设置参数 | S7-200 SMART自由口通信(1):设置参数——跟我学 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1110
 |  | S7-200 SMART自由口通信(1):设置参数——跟我做 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1111
 | 发送程序 | S7-200 SMART自由口通信(2):编写发送程序——跟我学 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1112
 |  | S7-200 SMART自由口通信(2):编写发送程序——跟我做 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1113
 | 接收程序 | S7-200 SMART自由口通信(3):编写接收程序——跟我学 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1114
 |  | S7-200 SMART自由口通信(3):编写接收程序——跟我做 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1115

西门子热线工程师内部学习讲座-自由口通信部分：

  • S7-200 SMART PLC串口通信概述（西门子热线工程师内部学习讲座）
  • S7-200 SMART PLC ASCII协议（西门子热线工程师内部学习讲座）

自由口通信要点

应用自由口通信首先要把通信口定义为自由口模式，同时设置相应的通信波特率和上述通信格式。用户程序通过特殊存储器SMB30（对端口0 即 CPU 本体集成 RS485 口）、SMB130（对端口1 即通信信号板）控制通信口的工作模式。

CPU通信口工作在自由口模式时，通信口就不支持其他通信协议（比如PPI）。

通信口的工作模式，是可以在运行过程中由用户程序重复定义的。

自由口通信的核心指令是发送（XMT）和接收（RCV）指令。自由口通信常用的中断有“接收指令结束中断”、“发送指令结束中断”，以及字符接收中断。用户程序不能直接控制通信芯片而必须通过操作系统。用户程序使用通信数据缓冲区和特殊存储器与操作系统交换相关的信息。

XMT和RCV指令的数据缓冲区类似，起始字节为需要发送的或接收的字符个数，随后是数据字节本身。如果接收的消息中包括了起始或结束字符，则它们也算数据字节。

调用XMT和RCV指令时只需要指定通信口和数据缓冲区的起始字节地址。

XMT和RCV指令与网络上通信对象的“地址”无关，而仅对本地的通信端口操作。如果网络上有多个设备，消息中必然包含地址信息；这些包含地址信息的消息才是XMT和RCV指令的处理对象。

由于S7-200 SMART的通信端口是半双工RS-485芯片，XMT指令和RCV指令不能同时有效。

XMT和RCV指令

XMT（发送）指令的使用比较简单。RCV（接收）指令所需要的控制稍多一些。

RCV指令的基本工作过程为：

  1. 在逻辑条件满足时，启动（一次）RCV指令，进入接收等待状态
  2. 监视通信端口，等待设置的消息起始条件满足，然后进入消息接收状态
  3. 如果满足了设置的消息结束条件，则结束消息，然后退出接收状态

所以，RCV指令启动后并不一定就接收消息，如果没有让它开始消息接收的条件，就一直处于等待接收的状态；如果消息始终没有开始或者结束，通信口就一直处于接收状态。这时如果尝试执行XMT指令，就不会发送任何消息。

所以确保不同时执行XMT和RCV非常重要，可以使用发送完成中断和接收完成中断功能，在中断程序中启动另一个指令。

在《S7-200 SMART 系统手册》中关于XMT和RCV指令的使用有一个例子。这个例子非常经典，强烈建议学习自由口通信时先做通这个例子。

字符接收中断

S7-200 SMART CPU提供了通信口字符接收中断功能，通信口接收到字符时会产生一个中断，接收到的字符暂存在特殊存储器SMB2中。通信口Port0和Port1共用SMB2，但两个口的字符接收中断号不同。

每接收到一个字符，就会产生一次中断。对于连续发送消息，需要在中断服务程序中将单个的字符排列到用户规定的消息保存区域中。实现这个功能可能使用间接寻址比较好。

对于高通信速率来说，字符中断接受方式需要中断程序的执行速度足够快。

一般情况下，使用结束字符作为RCV指令的结束条件比较可靠。如果通信对象的消息帧中以一个不定的字符（字节）结束（如校验码等），就应当规定消息或字符超时作为结束RCV指令的条件。但是往往通信对象未必具有严格的协议规定、工作也未必可靠，这就可能造成RCV指令不能正常结束。这种情况下可以使用字符接收中断功能。


自由口通讯

自由口通信端口定义

SMB30（端口 0 ） 和 SMB130（端口 1 ）用于定义通信端口的工作模式。S7-200 SMART CPU 处于 RUN 模式时，才能进行 PPI 通信或自由口通信模式的选择；
CPU 处于STOP 模式时，自由口通信模式被禁用，自动进入 PPI 通信模式。
通信端口工作模式的定义如图1. 所示。

图1. 通信端口工作模式

端口定义示例

定义S7-200 SMART CPU 通信端口 0 为自由口通信模式，8位数据位，偶校验，9600波特率，程序如下图2.所示。

图2. 定义通信端口工作模式


自由口通讯

XMT 发送指令

发送指令（XMT 指令）用于在自由口通信模式下将发送缓冲区（TBL）的数据通过指定的通信端口（PORT）发送出去。
XMT 指令一次最多可以发送 255个字符。XMT 指令发送缓冲区格式如表1.所示。

字节偏移量 | 描述
0 | 发送字符的个数（N）
1 | 发送的第1个字符
2 | 发送的第2个字符
┇ | ┇
N | 发送的第N个字符

表1. XMT 指令发送缓存区格式

XMT 发送指令示例

S7-200 SMART CPU每秒钟读取一次CPU实时时钟，并将年月日时分秒数据转换成 ASCII 字符，从 CPU 集成RS485 通信端口 0 发送出去。例子如图1. 所示。

图1. XMT 指令使用例程

上图程序解释如下：
1.设置S7-200 SMART CPU 端口 0 为自由口通信模式，波特率为9600 bps，8位数据位，偶校验。
2.读取CPU系统时钟，存储到VB100~VB107。
3.调用 HTA 指令，将BCD码存储格式的CPU系统时钟转化成ASCII码格式，存储到VB201~VB212。
4.将“回车”字符添加到VB213~VB214。
5.定义发送缓冲区长度为 14 个字符。
6.将发送缓冲区数据发送出去。

以上描述步骤参考下面的通信例程，例程中的 CPU 类型可能与用户实际使用的类型不同，用户可能需要先对例子程序做修改和调整，才能将其用于测试。

S7-200 SMART XMT 通信例程

注意：此指令库/程序的作者和拥有者对于该软件的功能性和兼容性不负任何责任。使用该软件的风险完全由用户自行承担。由于它是免费的，所以不提供任何担保，错误纠正和热线支持，用户不必为此联系西门子技术支持与服务部门。

发送完成判断

如果将中断子程序连接到发送完成事件，CPU 将在发送完缓冲区的最后一个字符后产生一个中断事件（对于端口 0 为中断事件 9，对于端口 1 为中断事件 26）。
如果不使用中断，也可以通过监视 SM4.5（端口 0 ）或 SM4.6（端口 1 ）的上升沿信号来判断发送是否完成。

注意：
使用 S7-200 SMART CPU 通信端口1（SB CM01）时，必须在系统块中组态后，方可使用。


自由口通讯

RCV 接收指令

接收指令（RCV 指令）用于在自由口通信模式下通过指定的通信端口（PORT）接收数据，接收的数据存储到接收缓冲区（TBL），数据长度最多为 255个字符。
RCV 指令接收缓冲区格式如表 1. RCV 指令接收缓存区格式所示。

字节偏移量 | 描述
0 | 接收到字符的个数（N）
1 | 接收的第1个字符
2 | 接收的第2个字符
┇ | ┇
N | 接收的第N个字符

表1. RCV 指令接收缓存区格式

如果中断子程序连接到接收完成事件，CPU 将在接收到最后一个字符后产生一个中断事件（对于端口 0 为中断事件 23，对于端口 1 为中断事件 24）。
如果不使用中断，也可以通过监视接收信息状态字节 SMB86（端口 0 ）或 SMB186（端口 1 ）来判断接收是否完成。SMB86 /SMB186 等于0时表示相应的通信端口正在处于接收状态中。
接收信息状态字节 SMB86 /SMB186 的说明见下表2.所示。

端口 0 | 端口 1 | 接收信息状态字节
SMB86 | SMB186 | n：1= 接收消息功能被终止：用户发送禁止命令。 r：1= 接收消息功能被终止：输入参数错误或丢失启动或结束条件。 e：1= 接收到结束字符。 t：1= 接收消息功能被终止：定时器时间已用完。 c：1= 接收消息功能被终止：实现最大字符计数。 P: 1 = 接收消息功能被终止：奇偶校验错误。

表2. 接收信息状态字节 SMB86/SMB186

RCV 指令的控制字节

执行 RCV 指令时，必须预先使用接收信息控制字节 SMB87 （端口 0 ） 或 SMB187 （端口 1 ）来定义接收消息的起始和结束条件。
接收消息的起始条件可以同时包含多个条件，只有所有条件都满足才开始接收消息；接收消息的结束条件也可以同时包含多个条件，只要有一个条件满足就会结束消息的接收。
接收信息控制字节 SMB87/SMB187 的说明见下表 3. 所示。

端口 0 | 端口 1 | 接收信息控制字节
SMB87 | SMB187 | en：0=禁用接收消息功能。 1=允许接收消息功能。 sc：0=忽略SMB88或SMB188。 1=使用SMB88或SMB188的值检测起始消息。 ec：0=忽略SMB89或SMB189。 1=使用SMB89或SMB189的值检测结束消息。 il： 0=忽略SMW90或SMW190。 1=使用SMW90或SMW190的值检测空闲状态。 c/m：0=定时器是字符间定时器。 1=定时器是消息定时器。 tmr：0=忽略SMW92或SMW192。 1=当SMW92或SMW192中的定时时间超出时终止接收。 bk：0=忽略BREAK状态。 1=使用BREAK状态作为消息检测的开始。
SMB88 | SMB188 | 消息字符的开始
SMB89 | SMB189 | 消息字符的结束
SMW90 | SMW190 | 空闲线时间,以毫秒为单位
SMW92 | SMW192 | 字符间/消息定时器,以毫秒为单位
SMB94 | SMB194 | 允许接收的最大字符数（1 ~ 255）

表3. 接收信息控制字节 SMB87/SMB187

RCV 指令的起始条件

RCV 指令的起始条件可以同时包含多个条件，只有所有条件都满足才开始接收消息，RCV 指令接收消息支持如下多种起始条件：

1、 空闲线检测：il = 1，sc = 0，bk = 0，SMW90/SMW190 = 空闲线超时（毫秒）。

在该起始条件下，执行 RCV 指令时将开始检测空闲线条件，当通信总线上空闲线时间达到 SMW90/SMW190 中指定的毫秒数时，便会开始消息接收。
空闲线时间之前接收到的任何字符都被忽略，并按照SMW90/SMW190 指定的时间重新启动空闲线定时器；空闲线时间到达后，接收消息功能会将接收到的所有后续字符存入接收缓冲区。
如图 1. 使用空闲线检测启动信息接收所示。

图 1. 使用空闲线检测启动信息接收
1：执行 RCV 指令。
2：重新启动空闲时间定时器，空闲线条件之前接收的字符被忽略。
3：空闲线条件已满足，空闲线条件之后接收到的字符16#EE、16#55 将会被存储到接收缓冲区。

2、 起始字符检测： il = 0，sc = 1，bk = 0，忽略SMW90/SMW190，SMB88/SMB188 = 起始字符。

在该起始条件下，执行 RCV 指令时当收到 SMB88/SMB188 中指定的起始字符时，便会开始消息接收。
接收消息功能会将起始字符作为消息的第一个字符存入接收缓冲区，接收消息功能忽略在起始字符之前收到的任何字符，起始字符以及在起始字符之后收到的字符被存储到接收缓冲区。
如图 2. 使用起始字符检测启动信息接收所示。

图2. 使用起始字符检测启动信息接收
1：执行 RCV 指令。
2：起始字符 16#55 之前接收到的字符16#01、16#02、16#03 都被忽略。
3：起始字符 16#55 之后接收到的字符都被存储到接收缓冲区，包括起始字符。

3、空闲线和起始字符检测：il = 1，sc = 1，bk = 0，SMW90/SMW190 > 0，SMB88/SMB188 = 起始字符。

在该组合起始条件下，执行 RCV 指令时，接收消息功能将检测空闲线条件，空闲线条件满足后，接收消息功能将查找指定的起始字符，如果接收到的字符不是起始字符，接收消息功能将重新检测空闲线条件。
所有在满足空闲线条件之前以及起始字符之前接收到的字符都将被忽略，满足起始条件后接收到的起始字符与所有后续字符被一起存入接收缓冲区。
如图 3. 使用空闲线和起始字符检测启动信息接收所示。

图3. 使用空闲线和起始字符检测启动信息接收
1：执行 RCV 指令。
2：重新启动空闲时间定时器，空闲线条件之前接收的字符被忽略。
3：满足空闲线条件后接收的第一个字符非起始字符 16#55 ，收到的字符 16#EE、16#55 将被忽略，需要重新启动空闲时间定时器。
4：满足空闲线和起始字符条件，接收到的字符16#55、16#EE 被存储到接收缓冲区。

4、断开检测：il = 0，sc = 0，bk = 1，忽略 SMW90/SMW190，忽略 SMB88/SMB188。

当通信总线上的数据维持“0”状态的时间大于一个完整字符传输的时间时，通信接收方会指示断开状态。完整字符传输时间定义为传输起始位、数据位、奇偶校验位和停止位的时间总和。
在断开检测条件下，执行 RCV 指令时，断开条件之前接收到的任何字符都会被忽略，断开条件之后接收到的字符会被存储到接收缓冲区中。如图 4. 使用断开检测启动信息接收所示。
断开检测一般很少使用，通常需要与发送方产生 BREAK 状态配合使用。

图 4. 使用断开检测启动信息接收
1：执行 RCV 指令。
2：字符 16#00 的停止位为“1”，传送字符 16#00 时通信总线上数据维持“0”状态时间小于一个完整字符传输的时间，不符合断开条件，此时接收到的字符都会被忽略。
3：BREAK 状态时通信总线上数据维持“0”状态时间为传送 16 位数据所需要的时间，大于一个完整字符传输的时间，符合断开条件，断开条件之后接收到的字符 16#55 被存储到接收缓冲区中。

5、断开检测和起始字符：il = 0，sc = 1，bk = 1，SMB88/SMB188 = 起始字符，忽略 SMW90/SMW190。

在该组合起始条件下，执行 RCV 指令时，接收消息功能将检测断开条件，断开条件满足后，接收消息功能将查找指定的起始字符。
如果接收到的字符不是起始字符，接收消息功能将开始重新检测断开条件；
所有在满足断开条件之前以及起始字符之前接收到的字符都将被忽略，满足起始条件后接收到的起始字符与所有后续字符被一起存入接收缓冲区。
如图 5. 使用断开和起始字符检测启动信息接收所示。

图 5. 使用断开和起始字符检测启动信息接收
1：执行 RCV 指令。
2：断开条件之前接收的字符 16#55 被忽略。
3：满足断开条件后接收的第一个字符非起始字符 16#55 ，收到的字符 16#EE、16#55 将被忽略，需要重新检测断开条件。
4：满足断开和起始字符条件，接收到的字符16#55、16#EE 被存储到接收缓冲区。

6、任意字符：il = 1，sc = 0，bk = 0，SMW90/SMW190 = 0，忽略SMB88/SMB188。

任意字符起始条件是空闲线检测的特例。在该起始条件下，执行 RCV 指令时便会立即开始消息接收并将接收到的所有字符存入接收缓冲区。

注意：
使用任意字符检测为接收消息的起始条件时，可以选择消息定时器为接收消息的结束条件。
使用任意字符检测时空闲线时间 SMW90/SMW190设置为零， RCV 指令执行时，消息定时器将立即启动，如果未满足其它结束条件，则当消息定时器经过 SMW92/SMW192 中指定的毫秒数后终止消息的接收

RCV 指令的结束条件

RCV 指令接收消息支持多种结束消息接收的条件，结束消息接收的条件可以是一种条件或者几种条件的组合。结束字符检测、字符间定时器、消息定时器或最大字符计数等结束条件可以组合使用，当采用组合条件时只要有一个条件满足就将终止消息接收。各种 RCV 指令的结束条件如下：

1、结束字符检测：ec = 1，SMB89/SMB189 = 结束字符。

执行 RCV 指令并找到起始条件之后，接收消息功能将检查接收到的每一个字符，并判断其是否与结束字符匹配。
接收到结束字符时，会将其存入接收缓冲区并终止信息接收，如图 6. 使用结束字符检测终止信息接收所示。

图 6. 使用结束字符检测终止信息接收
1：执行 RCV 指令。
2：起始字符 16#55 之前接收到的字符16#01、16#02、16#03 都被忽略。
3：检测到起始字符 16#55 ，开始消息接收。
4：检测到结束字符 16#CC ，终止消息的接收，结束字符之后接收到的字符 16#01 被忽略。

2、字符间定时器：c/m = 0，tmr = 1，SMW92/SMW192 = 超时（毫秒）。

执行 RCV 指令并找到起始条件之后，接收消息功能接收到每个字符后，重新启动字符间定时器，
如果字符间的时间超出 SMW92/SMW192中指定的毫秒数，则接收消息功能将终止。如图 7. 使用字符间定时器终止消息接收所示

图 7. 使用字符间定时器终止消息接收
1：执行 RCV 指令。
2：空闲线时间到，开始信息接收。
3：满足空闲线条件后接收到字符将被存储到接收缓冲区，接收到每个字符的停止位时重新启动字符间定时器。
4：字符间的时间超出 SMW92/SMW192中指定的毫秒数，接收消息功能将终止，之后接收到的字符被忽略。

3、消息定时器：c/m = 1，tmr = 1，SMW92/SMW192 = 超时（毫秒）。

执行 RCV 指令并且接收消息功能的起始条件得到满足后，消息定时器立即启动，消息定时器经过 SMW92/SMW192 中指定的毫秒数后终止消息的接收。
如图 8. 使用消息定时器终止消息接收所示。

图 8. 使用消息定时器终止消息接收
1：执行 RCV 指令。
2：空闲线时间到，开始消息接收。
3：满足空闲线条件后接收到字符将被存储到接收缓冲区，接收到第一个字符的停止位时启动消息定时器。
4：消息定时器时间超出 SMW92/SMW192中指定的毫秒数，接收消息功能将终止，之后接收到的字符被忽略。

使用任意字符检测为接收消息的起始条件时，可以选择消息定时器为接收消息的结束条件。

使用任意字符检测时空闲线时间 SMW90/SMW190设置为零，RCV 指令执行时，消息定时器将立即启动，
如果未满足其它结束条件，则当消息定时器经过 SMW92/SMW192 中指定的毫秒数后终止消息的接收，如图 9. 使用任意字符开始消息接收和消息定时器终止消息接收所示。

图9. 使用任意字符开始消息接收和消息定时器终止消息接收
1：执行 RCV 指令，同时消息定时器被立即启动。
2：消息定时器时间超出 SMW92/SMW192中指定的毫秒数，接收消息功能将终止，之后接收到的字符被忽略。
注意：
在主从通信中主站发送请求报文，从站需要回复应答报文。主站在指定时间段内对从站未发出任何应答的超时处理，可以采用任意字符检测为接收消息的起始条件、消息定时器为接收消息的结束条件这种方法。

4、最大字符个数：SMB94/SMB194 = 最大字符个数。

执行 RCV 指令时当接收字符个数达到或超过最大字符个数(SMB94/SMB194)时接收消息功能将终止。
由于接收指令需要知道接收信息的最大长度，以保证信息缓冲区之后的数据不被覆盖，所以即使最大字符计数不被专门用作接收结束条件，也必须指定最大字符个数。

5、奇偶校验错误

执行 RCV 指令时，当通信端口检测出奇偶校验错误、组帧错误或超限错误时，消息接收功能自动被终止。

6、用户终止：en = 0

设置 SM87.7/SM187.7 = 0 ，同时再调用 RCV 指令，将立即终止消息接收功能。


RCV 接收指令例程

例程 1 ：S7-200 SMART CPU集成的RS485 端口(端口0)实现与条码扫描枪通信

例程 2 ：2台S7-200 SMART CPU(端口0)采用自由口通信方式实现相互通信

例程 3：使用任意字符检测为接收消息的起始条件时，选择消息定时器和其它结束条件组合为接收消息的结束条件

例程 4：信息接收超时，需要人为终止信息的接收

例程 1 ：S7-200 SMART CPU集成的RS485 端口(端口0)实现与条码扫描枪通信

条码扫描枪通常为 RS232 端口，其与 S7-200 SMART CPU 集成的 RS485 端口连接时需要使用 RS232/485 转换设备或 RS-232/PPI 多主站电缆。
条码扫描枪接收到条码后会自动通过 RS232 端口发送报文，S7-200 SMART CPU 需要调用 RCV 指令接收报文，并在接收完成中断中再次使能 RCV 指令循环接收报文。

CPU 主程序见图1.所示：

图1.CPU 主程序
1.设置 SMB30 = 2#00001001 （自由口通信，波特率 9600，8 位数据位，无校验）；
2.设置 SMB87 = 2#10010100，使用空闲线检测为信息接收的起始条件，使用字符间定时器为信息接收的结束条件 ；
3.设置空闲线定时器 SMW90 = 5 ms，字符间定时器 SMW92 = 5 ms，允许最大接收字符个数 SMB94 = 50；
4.连接中断子程序 INT_0 到通信端口 0 接收完成事件，并使能中断；
5. 使用 SM0.1 触发 RCV 指令地执行。

CPU 中断程序见图2.所示：

图2.CPU 中断程序
1.判断信息接收结束是否为字符间超时结束（SM86.2 = 1），若是，则认为接收成功，接收成功计算器 VB200 自加一；
2.消息接收成功时接收的信息拷贝到 VB300 为起始地址的存储区；
3.开始下一次 RCV 指令地执行。

以上描述步骤参考下面的通信例程，例程中的 CPU 类型可能与用户实际使用的类型不同，用户可能需要先对例子程序做修改和调整，才能将其用于测试。

S7-200 SMART与条码扫描枪通信例程

注意：此指令库/程序的作者和拥有者对于该软件的功能性和兼容性不负任何责任。使用该软件的风险完全由用户自行承担。由于它是免费的，所以不提供任何担保，错误纠正和热线支持，用户不必为此联系西门子技术支持与服务部门。

例程 2 ：2台S7-200 SMART CPU(端口0)采用自由口通信方式实现相互通信

通信任务：CPU1 每秒触发一次 XMT 指令将 CPU 的实时时钟发送到 CPU2；CPU2 接收到 CPU1 发送的信息后立即将 CPU2 的实时时钟回复到 CPU1。

1、CPU1 编程

1.1、CPU1 主程序编程如图3. 所示：

图3. CPU1主程序
1. 设置 SMB30 = 2#00001001 （自由口通信，波特率 9600 bps，8 位数据位，无校验）。
2. 设置 SMB87 = 2#10010100，使用空闲线检测为信息接收的起始条件，使用字符间定时器为信息接收的结束条件。
3. 设置空闲线定时器 SMW90 = 5 ms，字符间定时器 SMW92 = 5 ms，允许最大接收字符个数 SMB94 = 10。
4. 连接中断子程序 INT_0 到通信端口 0 发送完成事件，并启用中断。
5. 每秒钟读取一次 CPU 的实时时钟，并将发送缓冲区长度设置为 8 个字符。
6. 执行 XMT 指令之前设置 SM87.7 = 0，同时执行 RCV 指令，终止消息接收。
7. 每秒钟执行一次 XMT 指令将 CPU 的实时时钟发送出去。

1.2、 CPU1 发送完成中断子程序 INT_0 编程

中断子程序INT_0用于恢复 SMB87 的设置（SM87.7 = 1），并执行 RCV 指令开始接收 CPU2的应答信息。程序如图4. 所示：

图4. CPU1 中断子程序 INT_0

2、CPU2 编程

2.1、CPU2 主程序编程如图5. 所示：

图5. CPU2主程序
1. 设置 SMB30 = 2#00001001 （自由口通信，波特率 9600 bps，8 位数据位，无校验）。
2. 设置 SMB87 = 2#10010100，使用空闲线检测为信息接收的起始条件，使用字符间定时器为信息接收的结束条件。
3. 设置空闲线定时器 SMW90 = 5 ms，字符间定时器 SMW92 = 5 ms，允许最大接收字符个数 SMB94 = 10。
4. 连接中断子程序 INT_0 到通信端口 0 接收完成事件，中断子程序 INT_1 到通信端口 0 发送完成事件，并启用中断。
5. 使用 SM0.1 调用 RCV 指令地执行。

2.2、 CPU2 接收完成中断子程序 INT_0 编程

中断子程序INT_0用于读取 CPU 实时时钟，并调用 XMT 指令将实时时钟信息发送出去。程序如图如图 6.所示。

6. CPU2 接收完成中断子程序 INT_0

2.3、 CPU2 发送完成中断子程序 INT_1 编程

中断子程序 INT_1 用于执行 RCV 指令，并开始新的信息接收任务。程序如图 7.所示。

图7. CPU2 发送完成中断子程序 INT_0

以上描述步骤参考下面的通信例程，例程中的 CPU 类型可能与用户实际使用的类型不同，用户可能需要先对例子程序做修改和调整，才能将其用于测试。

CPU1通信例程

CPU2通信例程

注意：此指令库/程序的作者和拥有者对于该软件的功能性和兼容性不负任何责任。使用该软件的风险完全由用户自行承担。由于它是免费的，所以不提供任何担保，错误纠正和热线支持，用户不必为此联系西门子技术支持与服务部门。

例程 3：使用任意字符检测为接收消息的起始条件时，选择消息定时器和其它结束条件组合为接收消息的结束条件

示例说明如下：
步骤一、使用任意字符检测和消息定时器处理信息接收超时主程序编程，程序如图1. 所示：

图 1. 使用任意字符检测和消息定时器处理信息接收超时主程序
1. 设置 SMB30 = 2#00001001 （自由口通信，波特率 9600 bps，8 位数据位，无校验）。
2. 设置 SMB87 = 2#10111100，使用任意字符检测为信息接收的起始条件，使用消息定时器和结束字符为信息接收的结束条件。
3. 设置结束字符 SMB89 = 16#0A。
4. 设置空闲线定时器 SMW90 = 0 ms，消息定时器 SMW92 = 100 ms，允许最大接收字符个数 SMB94 = 10。
5. 连接中断子程序 INT_0 到通信端口 0 发送完成事件9，并启用中断。
6. 每秒钟调用一次 XMT 指令，将字符串"TEST"发送出去。

步骤二、使用任意字符检测和消息定时器处理信息接收中断子程序编程：

发送完成中断子程序用于执行 RCV 指令，并开始新的信息接收任务。中断子程序如图 2. 所示。

图2. 使用任意字符检测和消息定时器处理信息接收超时中断子程序

以上描述步骤参考下面的通信例程，例程中的 CPU 类型可能与用户实际使用的类型不同，用户可能需要先对例子程序做修改和调整，才能将其用于测试。

超时处理1 通信例程

注意：此指令库/程序的作者和拥有者对于该软件的功能性和兼容性不负任何责任。使用该软件的风险完全由用户自行承担。由于它是免费的，所以不提供任何担保，错误纠正和热线支持，用户不必为此联系西门子技术支持与服务部门。

例程 4：信息接收超时，需要人为终止信息的接收

S7-200 SMART CPU 在发送完成中断中执行 RCV 指令并捕捉信息接收开始时间，如果捕捉间隔时间超出一定时间依然未接收到信息，则认为信息接收超时，需要人为终止信息的接收。

示例说明如下：
步骤一：CPU 主程序编程
CPU 主程序实现功能如下（程序见如图3. 所示）：
a)设置 SMB30 = 2#00001001 （自由口通信，波特率 9600 bps，8 位数据位，无校验）。
b)设置 SMB87 = 2#10010100，使用空闲线检测为信息接收的起始条件，使用字符间定时器为信息接收的结束条件。
c)设置空闲线定时器 SMW90 = 5 ms，消息定时器 SMW92 = 5 ms，允许最大接收字符个数 SMB94 = 10。
d)连接中断子程序 INT_0 到通信端口 0 发送完成事件 9，并启用中断。
e)使用M0.0 上升沿调用 XMT 指令，并设置通信状态字节 VB300 =1。
f)当通信状态字节 VB300 = 2 时，信息接收完成或者信息接收的捕捉间隔时间 VD306 大于 100 ms，则设置通信状态字节 VB300 = 3并人为终止 RCV 指令的执行。
g)通信状态字节VB300 = 3时，复位RCV指令的执行，并复位VB300。

图3. 使用捕捉时间间隔处理信息接收超时主程序

步骤二：CPU 中断子程序编程

在发送完成中断子程序中设置通信状态字节 VB300 = 2，执行 RCV 指令开始新的信息接收任务，并捕捉信息接收开始时间 VD302。程序图如图4. 所示。

图4. 使用捕捉时间间隔处理信息接收超时中断子程序

以上描述步骤参考下面的通信例程，例程中的 CPU 类型可能与用户实际使用的类型不同，用户可能需要先对例子程序做修改和调整，才能将其用于测试。

超时处理2 通信例程

注意：此指令库/程序的作者和拥有者对于该软件的功能性和兼容性不负任何责任。使用该软件的风险完全由用户自行承担。由于它是免费的，所以不提供任何担保，错误纠正和热线支持，用户不必为此联系西门子技术支持与服务部门。


自由口通讯

XMT/RCV 常见问题

1、S7-200 SMART CPU RS485 通信端口具有4 个连接资源用于 CPU 与 HMI 之间的通信，自由口通信时是否也只能连接 4 个设备？

S7-200 SMART CPU RS485 通信端口采用 PPI 协议时具有4 个连接资源用于 CPU 与 HMI 之间的通信，自由口通信时则不受该连接资源限制。

2、S7-200 SMART CPU 与第三方设备自由口通信时，第三方设备接收到的消息内容与 CPU 发送的不同，造成该故障现象的可能原因有哪些？

该故障现象需要从通信电缆接线和通信端口设置等两个方面进行排查，可能的故障原因有以下几点：
1. 通信电缆的正、负信号线是否接反；通信电缆周围是否存在干扰源以及通信双方是否做好等电位连接。
2. S7-200 SMART CPU 通信端口模式设置是否与第三方设备一致。通信双方的通信波特率、奇偶校验和数据位个数需要相同。
3. 通信双方的停止位个数是否相同。S7-200 SMART CPU只支持1位停止位，不能与含有2位停止位的第三方设备进行通信。

3、执行 RCV 指令或 XMT 指令时，为什么有时指令会出现红色错误？

针对同一通信端口，同一时刻执行多个RCV 指令或 XMT 指令时会报错。S7-200 SMART CPU 集成的RS485 端口以及信号板 SB CM01 工作模式都为半双工，信息的发送与接收不能同时执行。
出现以下几种情况时通信指令都会出现红色错误 ：
1. XMT 指令还未发送完成时又触发了新的 XMT 指令。
2. XMT 指令还未发送完成时又触发了新的 RCV 指令。
3. RCV 指令还未接收完成时又触发了新的 XMT 指令。
4. RCV 指令还未接收完成时又触发了新的 RCV 指令。

4、S7-200 SMART CPU通信端口当前正处于信息接收状态时，如何手动终止信息的接收？

应用场合：S7-200 SMART CPU 为通信主站，对通信从站发送查询报文后需要调用 RCV 指令接收从站的应答报文，如果从站故障或者通信电缆损坏时，S7-200 SMART CPU 的通信端口将始终处于接收状态，无法亦发送数据。

介绍两种方法：

方法一： 使用任意字符检测为接收消息的起始条件时，选择消息定时器和其它结束条件组合为接收消息的结束条件。

方法二：S7-200 SMART CPU 在发送完成中断中执行 RCV 指令并捕捉信息接收开始时间，如果捕捉间隔时间超出一定时间依然未接收到信息，则认为信息接收超时，需要人为终止信息的接收。

人为终止信息接收简单来说就是设置 SM87.7/SM187.7 = 0 ，同时执行 RCV 指令可以禁用 RCV 指令的执行，将立即终止消息接收功能。

以上方法相关例程参考链接：RCV 接收指令例程


USS - Protocol

S7-200 SMART与西门子驱动装置通过 USS 通信

S7-200 SMART CPU 上的通信口在自由口模式下，可以支持 USS 通信协议。这是因为 S7-200 SMART的自由口模式的（硬件）字符传输格式，可以定义为 USS 通信对象所需要的模式；S7-200 SMART的自由口通信功能又非常灵活。因而可以实现 S7-200 SMART和驱动装置之间的 USS 通信控制。西门子驱动装置支持多种通信方式（有些可能需要加装通信卡）。

S7-200 SMART CPU 将在 USS 通信中作为主站。

USS通信相关指令使用的视频教程链接如下：

USS通信 | 变频器参数设置 | S7-200 SMART USS通信(1):变频器参数设置——跟我学 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1098
 |  | S7-200 SMART USS通信(1):变频器参数设置——跟我做 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1099
 | 程序编写 | S7-200 SMART USS通信(2):PLC程序编写——跟我学 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1100
 |  | S7-200 SMART USS通信(2):PLC程序编写——跟我做 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1101
 | 下载测试 | S7-200 SMART USS通信(3):下载测试——跟我学 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1102
 |  | S7-200 SMART USS通信(3):下载测试——跟我做 | http://www.ad.siemens.com.cn/service/elearning/cn/Course.aspx?CourseID=1103

西门子热线工程师内部学习讲座-USS部分：

  • S7-200 SMART PLC USS协议+常问问题（西门子热线工程师内部学习讲座）

USS 通信协议简介

USS (Universal Serial Interface, 即通用串行通信接口) 是西门子专为驱动装置开发的通信协议，多年来也经历了一个不断发展、完善的过程。最初 USS 用于对驱动装置进行参数化操作，即更多地面向参数设置。在驱动装置和操作面板、调试软件（如 DriveES/STARTER）的连接中得到广泛的应用。近来 USS 因其协议简单、硬件要求较低，也越来越多地用于和控制器（如 PLC）的通信，实现一般水平的通信控制。

注意： USS 提供了一种低成本的，比较简易的通信控制途径，由于其本身的设计，USS 不能用在对通信速率和数据传输量有较高要求的场合。在这些对通信要求高的场合，应当选择实时性更好的通信方式，如 PROFIBUS-DP 等。在进行系统设计时，必须考虑到 USS 的这一局限性。

例如，如果在一些速度同步要求比较高的应用场合（如造纸生产线），对十几甚至数十台变频器采用 USS 通信控制，其效果可想而知。

USS 协议的基本特点如下：

  • 支持多点通信（因而可以应用在 RS 485 等网络上）
  • 采用单主站的“主－从”访问机制
  • 一个网络上最多可以有 32 个节点（最多 31 个从站）
  • 简单可靠的报文格式，使数据传输灵活高效
  • 容易实现，成本较低

USS 的工作机制是，通信总是由主站发起，USS 主站不断循环轮询各个从站，从站根据收到的指令，决定是否、以及如何响应。从站永远不会主动发送数据。从站在以下条件满足时应答：

  • 接收到的主站报文没有错误，并且
  • 本从站在接收到主站报文中被寻址

上述条件不满足，或者主站发出的是广播报文，从站不会做任何响应。

对于主站来说，从站必须在接收到主站报文之后的一定时间内发回响应。否则主站将视为出错。

USS 字符帧格式

USS 的字符传输格式符合 UART 规范，即使用串行异步传输方式。USS 在串行数据总线上的字符传输帧为 11 位长度，包括：

起始位 | 数据位 |  |  |  |  |  |  |  | 校验位 | 停止位
1 | 0 LSB | 1 | 2 | 3 | 4 | 5 | 6 | 7 MSB | 偶 x 1 | 1

连续的字符帧组成 USS 报文。 在一条报文中，字符帧之间的间隔延时要小于两个字符帧的传输时间（当然这个时间取决于传输速率）。

S7-200 SMART CPU 的自由口通信模式正好能够支持上述字符帧格式。把 S7-200 SMART的自由口定义为以上字符传输模式，就能通过编程，实现 USS 协议报文的发送和接收。主站控制器的所支持的通信模式必须和所要控制的驱动装置所要求的一致，这是实现 S7-200 SMART和西门子驱动装置通信的基础。

USS 报文帧格式

USS 协议的报文简洁可靠，高效灵活。报文由一连串的字符组成，协议中定义了它们的特定功能：

STX | LGE | ADR | 净数据区 |  |  |  |  | BCC
 |  |  | 1. | 2. | 3. | ... | n

以上每小格代表一个字符（字节）。其中：

  • STX： 起始字符，总是 02 h
  • LGE： 报文长度
  • ADR：从站地址及报文类型
  • BCC： BCC 校验符

在 ADR 和 BCC 之间的数据字节，称为 USS 的净数据。主站和从站交换的数据都包括在每条报文的净数据区域内。

净数据区由 PKW 区和 PZD 区组成：

PKW 区 |  |  |  |  |  | PZD 区
PKE | IND | PWE1 | PWE2 | ... | PWEm | PZD1 | PZD2 | ... | PZDn

以上每小格代表一个字（两个字节）。

  • PKW： 此区域用于读写参数值、参数定义或参数描述文本，并可修改和报告参数的改变 。其中：

    • PKE： 参数 ID。包括代表主站指令和从站响应的信息，以及参数号等
    • IND： 参数索引，主要用于与 PKE 配合定位参数
    • PWEm：参数值数据

  • PZD： 此区域用于在主站和从站之间传递控制和过程数据。控制参数按设定好的固定格式在主、从站之间对应往返。如：

    • PZD1：主站发给从站的控制字/从站返回主站的状态字
    • PZD2： 主站发给从站的给定/从站返回主站的实际反馈
    • PZDn： ……

根据传输的数据类型和驱动装置的不同，PKW 和 PZD 区的数据长度都不是固定的，它们可以灵活改变以适应具体的需要。但是，在用于与控制器通信的自动控制任务时，网络上的所有节点都要按相同的设定工作，并且在整个工作过程中不能随意改变。

注意：

  • 对于不同的驱动装置和工作模式，PKW 和 PZD 的长度可以按一定规律定义。 一旦确定就不能在运行中随意改变
  • PKW 可以访问所有对 USS 通信开放的参数；而 PZD 仅能访问特定的控制和过程数据
  • PKW 在许多驱动装置中是作为后台任务处理，因此 PZD 的实时性要比 PKW 好

以上仅是对 USS 协议的简单介绍，以帮助读者更好地理解控制任务和选择对策。如需要了解详细的信息，请参考相应驱动产品的手册。


S7-200 SMART 和驱动装置的 USS 通信接线

支持 USS 通信的驱动装置可能有不止一个 USS 通信端口，以 MicroMaster 系列的 MM 440 为例，它在操作面板 BOP 接口上支持 USS 的 RS 232 连接，在端子上支持 USS 的 RS 485 连接。

S7-200 SMART 本体集成的通信端口就是 RS 485 规格的，因此将 S7-200 SMART的本体集成的通信端口与驱动装置的 RS 485 端口连接，在 RS 485 网络上实现 USS 通信无疑是最方便经济的。

S7-200 SMART 与 MM440、SINAMICS V20 组成的网络无疑需要满足 RS 485 网络的通用要求。但是仍然有一些需要特别注意的地方。

S7-200 CPU 和 MM 440、V20 通信端口都是非隔离型的，故西门子承诺的网络连接距离为 50 米。如果有必要，也可以外接通信端口的信号隔离、放大器件，注意西门子RS-485中继器不支持 USS通信。

S7-200 SMART 本体集成的RS485通信端口(Port0)

通信口引脚定义:

关于S7-200 SMART本体集成的通信端口和可选信号板通信端口引脚定义，详情请参考《S7-200 SMART系统手册》。

在这里只是列出了一些需要注意，或者用户感兴趣的要点。

表1. S7-200 SMART 本体集成的RS485通信端口引脚定义：

CPU插座(9针母头) | 引脚号 | 信号 | 集成的 RS485 端口 （端口 0）引脚定义
 | 1 | 屏蔽 | 机壳接地
 | 2 | 24V返回 | 逻辑公共端
 | 3 | RS-485信号 B | RS-485信号 B 或TxD/RxD +
 | 4 | 发送请求 | RTS （TTL）
 | 5 | 5V返回 | 逻辑公共端
 | 6 | + 5V | +5 V，100 Ω 串联电阻
 | 7 | +24V | +24 V
 | 8 | RS-485信号 A | RS-485信号 A 或TxD/RxD -
 | 9 | 不适用 | 10位协议选择（输入）
 | 连接器外壳 | 屏蔽 | 机壳接地

上表中，3和8为RS-485信号，它们的背景颜色与PROFIBUS电缆、PROFIBUS网络插头上的颜色标记一致。通信端口可以从2和7向外供24V直流电源。

注意：

  • CPU通信口上的2、5针在内部是连通的，并且它们和CPU上的传感器电源（＋24V）的M也是连通的
  • 通信口插座的金属外壳、1号针，与CPU接线端子上的电源部分的PE导通，而与上述的M不通

在规划网络时，S7-200 SMART 既可以放在整个总线型网络的一端，也可以放在网络的中间。

我们建议使用西门子的网络插头和 PROFIBUS 电缆。在 S7-200 SMART通信口上使用西门子网络插头，可以利用插头上的终端和偏置电阻。

PROFIBUS 电缆的红色导线连接到 S7-200 SMART 通信口的 3 针（B 即 RS 485 信号 +），此信号应当连接到 MM 440、V 20变频器通信端口的 P+；绿色导线连接到 S7-200 SMART 通信口的 8 针（A 即 RS 485 信号 -），此信号应当连接到 MM 440、V 20变频器通信端口的 N-。

MM 440 通信端口

图 1. MM 440 的端子

表 2. MM 440 的 USS 通信相关端子

端子号 | 名称 | 功能
1 | - | 电源输出 10 V
2 | - | 电源输出 0 V
29 | P+ | RS 485 信号 +
30 | N- | RS 485 信号 -

因 MM 440 通信口是端子连接，故 PROFIBUS 电缆不需要网络插头，而是剥出线头直接压在端子上。如果还要连接下一个驱动装置，则两条电缆的同色芯线可以压在同一个端子内。

PROFIBUS 电缆的红色芯线应当压入端子 29；绿色芯线应当连接到端子 30。

一个示例接线图如下：

图 2. S7-200 SMART与 MM 440 的 USS 通信接线

图中：

  1. 屏蔽/保护接地母排，或可靠的多点接地。此连接对抑制干扰有重要意义。
  2. PROFIBUS 网络插头，内置偏置和终端电阻。
  3. MM 440 端的偏置和终端电阻，随包装提供。
  4. 通信口的等电位连接。可以保护通信口不致因共模电压差损坏或通信中断。M 未必需要和 PE 连接。
  5. 双绞屏蔽电缆（PROFIBUS）电缆，因是高速通信，电缆的屏蔽层须双端接地（接 PE）。

注意：以下几点对网络的性能有极为重要的影响。几乎所有网络通信质量方面的问题都与未考虑到下列事项有关：

  • 偏置电阻用于在复杂的环境下确保通信线上的电平在总线未被驱动时保持稳定；终端电阻用于吸收网络上的反射信号。一个完善的总线型网络必须在两端接偏置和终端电阻。
  • 通信口 M 的等电位连接建议单独采用较粗的导线 ，而不要使用 PROFIBUS 的屏蔽层，因为此连接上可能有较大的电流，以致通信中断。
  • PROFIBUS 电缆的屏蔽层要尽量大面积接 PE。一个实用的做法是在靠近插头、接线端子处环剥外皮，用压箍将裸露的屏蔽层压紧在 PE 接地体上（如 PE 母排或良好接地的裸露金属安装板）。
  • 通信线与动力线分开布线；紧贴金属板安装也能改善抗干扰能力。驱动装置的输入/输出端要尽量采用滤波装置，并使用屏蔽电缆。

在 MM 440 的包装内提供了终端偏置电阻元件，接线时可按说明书直接压在端子上。如果可能，可采用热缩管将此元件包裹，并适当固定。

V 20 通信端口

图 3. V 20 的端子布局说明

因 V 20通信口是端子连接，故 PROFIBUS 电缆不需要网络插头，而是剥出线头直接压在端子上。如果还要连接下一个驱动装置，则两条电缆的同色芯线可以压在同一个端子内。

PROFIBUS 电缆的红色芯线应当压入端子 6；绿色芯线应当连接到端子 7。

一个示例接线图如下：

图 4. S7-200 SMART与 V 20 的 USS 通信接线

图中：

  1. 屏蔽/保护接地母排，或可靠的多点接地。此连接对抑制干扰有重要意义。
  2. PROFIBUS 网络插头，内置偏置和终端电阻。
  3. V 20变频器的偏置和终端电阻。
  4. 通信口的等电位连接。可以保护通信口不致因共模电压差损坏或通信中断。M 未必需要和 PE 连接。
  5. 双绞屏蔽电缆（PROFIBUS）电缆，因是高速通信，电缆的屏蔽层须双端接地（接 PE）。

注意：以下几点对网络的性能有极为重要的影响。几乎所有网络通信质量方面的问题都与未考虑到下列事项有关：

  • 偏置电阻用于在复杂的环境下确保通信线上的电平在总线未被驱动时保持稳定；终端电阻用于吸收网络上的反射信号。一个完善的总线型网络必须在两端接偏置和终端电阻。
  • 通信口 M 的等电位连接建议单独采用较粗的导线 ，而不要使用 PROFIBUS 的屏蔽层，因为此连接上可能有较大的电流，以致通信中断。
  • PROFIBUS 电缆的屏蔽层要尽量大面积接 PE。一个实用的做法是在靠近插头、接线端子处环剥外皮，用压箍将裸露的屏蔽层压紧在 PE 接地体上（如 PE 母排或良好接地的裸露金属安装板）。
  • 通信线与动力线分开布线；紧贴金属板安装也能改善抗干扰能力。驱动装置的输入/输出端要尽量采用滤波装置，并使用屏蔽电缆。


USS - 编程步骤

S7-200 SMART USS 编程步骤

S7-200 SMART本体集成的 RS 485 通信口可以工作在自由口模式下，支持 USS 通信协议。

S7-200 SMART 与驱动装置进行 USS 通信时可以：

  • 根据驱动装置的具体 USS 通信规范，用户自己编程实现 USS 通信。此方式可以保证该驱动装置的所有 USS 通信功能都能得到使用；
  • 使用西门子提供的 USS 通信指令库，实现与 MicroMaster 系列的 MM3/MM4 和 SINAMICS G110/V20 的USS 通信。此指令库只能有限地支持与其他驱动装置的 USS 连接。

使用西门子提供的 USS 指令库，用户就不必自己配置复杂的 PKW/PZD 数据，或者计算校验字节。但是能通信的驱动装置有局限性。

STEP 7-Micro/WIN SMART USS 指令库编程

S7-200 SMART的 USS 编程主要包括如下几个步骤：

  1. 调用 USS 初始化指令
  2. 调用驱动装置控制指令
  3. 调用驱动装置参数读写指令


USS - 初始化指令

S7-200 SMART USS 标准指令库包括 USS_INIT、USS_CTRL、USS_RPM_X、USS_WPM_X等指令。调用这些指令时会自动增加一些子程序和中断服务程序。

USS 库应用首先要进行 USS 通信的初始化。使用 USS_INIT 指令初始化 USS 通信功能。

图 1. 选择 USS_INIT 指令

打开 USS 指令库分支，像调用子程序一样调用 USS_INIT 指令。

图 2. 调用 USS_INIT 指令

图中：

  1. EN： 初始化程序 USS_INIT 只需在程序中执行一个周期就能改变通信口的功能，以及进行其他一些必要的初始设置，因此可以使用 SM0.1 或者沿触发的接点调用 USS_INIT 指令；
  2. Mode： 模式选择，执行 USS_INIT 时 ，Mode 的状态决定在通讯端口上是否使用 USS 通信功能；
    = 1
    设置为 USS 通信协议并进行相关初始化
    0
    恢复为 PPI 协议并禁用USS通信
  3. Baud： USS 通信波特率。此参数要和变频器的参数设置一致；
    =
    1200
    1200 bit/s
    2400
    2400 bit/s
    4800
    4800 bit/s
    9600
    9600 bit/s
    19200
    19200 bit/s
    38400
    38400 bit/s
    57600
    57600 bit/s
    115200
    115200 bit/s
  4. Port: 0 = CPU 集成的 RS485 通讯端口；1 = 可选CM 01 信号板。
  5. Active： 此参数决定网络上的哪些 USS 从站在通信中有效。详见下面的说明；
  6. Done： 初始化完成标志
  7. Error： 初始化错误代码

Active 参数

USS_INIT 子程序的 Active 参数用来表示网络上哪些 USS 从站要被主站访问，即在主站的轮询表中激活。网络上作为 USS 从站的驱动装置每个都有不同的 USS 协议地址，主站要访问的驱动装置，其地址必须在主站的轮询表中激活。USS_INIT 指令只用一个 32 位长的双字来映射 USS 从站有效地址表，Active 的无符号整数值就是它在指令输入端的取值。

表 1. 从站地址映射
位号 | MSB 31 | 30 | 29 | 28 | ... | 03 | 02 | 01 | LSB 00
对应从站地址 | 31 | 30 | 29 | 28 | ... | 3 | 2 | 1 | 0
从站激活标志 | 0 | 0 | 0 | 0 | ... | 1 | 0 | 0 | 0
取 16 进制无符号整数值 | 0 |  |  |  | ... | 8
Active = | 16#00000008

在这个 32 位的双字中，每一位的位号表示 USS 从站的地址号；要在网络中激活某地址号的驱动装置，则需要把相应位号的位置设为二进制“1"，不需要激活 USS 从站，相应的位设置为”0"。最后对此双字取无符号整数就可以得出 Active 参数的取值。

在表 1 的例子中，如果使用站地址为 3 的 MM 440 变频器，则须在位号为 03 的位单元格中填入二进制“1"。其他不需要激活的地址 对应的位设置为”0"。取整数，计算出的 Active 值为 00000008 h，即 16#00000008，也等于十进制数 8（如图 1.中的 e.）

建议使用 16 进制数，这样可以每 4 位一组进行加权计算出 16 进制数，并组合成一个整数。当然也可以表示为十进制或二进制数值，但有时会很麻烦，而且不直观。

如果一时难以计算出有多个 USS 从站配置情况下的 Active 值，可以使用 Windows 自带的计算器。将其设置为科学计算器模式，可以方便地转换数制。

分配库存储区地址

USS 指令库需要大概 402 个字节的 V 存储区用于支持其工作。调用 USS_INIT 指令后就可以为 USS 指令库分配库存储区。也可以在编程的稍后阶段分配存储区地址，但这一步是必不可少的，否则程序无法通过编译。

根据 S7-200 SMART中的数据存储区分配原则，分配给库指令的数据区绝对不能与其他程序使用的数据区有任何重叠。否则会造成出错。


USS - CTRL 指令

USS 驱动装置控制功能块

USS_CTRL 指令用于对单个驱动装置进行运行控制。这个功能块利用了 USS 协议中的 PZD 数据传输，控制和反馈信号更新较快。

网络上的每一个激活的 USS 驱动装置从站，都要在程序中调用一个独占的 USS_CTRL 指令，而且只能调用一次。需要控制的驱动装置必须在 USS 初始化指令运行时定义为“激活”。

图 1. USS_CTRL 指令

在 USS 通信指令库分支中选择 USS_CTRL 指令。

图 2. 调用 USS_CTRL 指令

图中：

  1. EN： 使用 SM0.0 使能 USS_CTRL 指令
  2. RUN： 驱动装置的启动/停止控制
    = 0 停止
    1 运行
    此停车是按照驱动装置中设置的斜坡减速指电机停止
  3. OFF2： 停车信号 2。此信号为“1"时，驱动装置将封锁主回路输出，电机自由停车
  4. OFF3： 停车信号 3。此信号为”1"时，驱动装置将快速停车
  5. F_ACK： 故障确认。当驱动装置发生故障后，将通过状态字向 USS 主站报告；如果造成故障的原因排除，可以使用此输入端清除驱动装置的报警状态，即复位。注意这是针对驱动装置的操作。
  6. DIR： 电机运转方向控制。其“0/1”状态决定运行方向
  7. Drive： 驱动装置在 USS 网络上的站号。从站必须先在初始化时激活才能进行控制
  8. Type： 向 USS_CTRL 功能块指示驱动装置类型
    =
    0
    MM 3 系列，或更早的产品
    1

    MM 4 系列，SINAMICS G 110，SINAMICS V 20

  9. Speed_SP： 速度设定值。该速度是全速的一个百分数；“Speed_SP”为负值将导致变频器反向运行。
  10. Resp_R： 从站应答确认信号。主站从 USS 从站收到有效的数据后，此位将为“1"一个程序扫描周期，表明以下的所有数据都是最新的
  11. Error： 错误代码。0 = 无出错。其他错误代码请参考
  12. Status： 驱动装置的状态字。此状态字直接来自驱动装置的状态字，表示了当时的实际运行状态

    详细的状态字信息意义请参考相应的驱动装置手册。

  13. Speed： 驱动装置返回的实际运转速度值，实数。
  14. Run_EN： 运行模式反馈，表示驱动装置是运行（为 1）还是停止（为 0）
  15. D_Dir： 指示驱动装置的运转方向，反馈信号
  16. Inhibit： 驱动装置禁止状态指示（0 - 未禁止，1 - 禁止状态）。禁止状态下驱动装置无法运行。要清除禁止状态，故障位必须复位，并且 RUN, OFF2 和 OFF3 都为 0
  17. Fault： 故障指示位（0 - 无故障，1 - 有故障）。表示驱动装置处于故障状态，驱动装置上会显示故障代码（如果有显示装置）。要复位故障报警状态，必须先消除引起故障的原因，然后用 F_ACK 或者驱动装置的端子、或操作面板复位故障状态。

此 USS_CTRL 功能块使用了 PZD 数据读写机制，传输速度比较快。但由于它还是串行通信，而且还可能有多个从站需要轮询，因此无法做到”实时“响应。要实现高要求的快速通信，应该使用 PROFIBUS-DP 等网络，同时更换主站为更高级的控制器。

USS_CTRL 已经能完成基本的驱动装置控制，如果需要有更多的参数控制选项，可以选用 USS 指令库中的参数读写指令实现。


USS - 参数读写指令

USS 指令库中共有 6 种参数读写功能块，分别用于读写驱动装置中不同规格的参数。

图 1. USS 参数读写指令

它们是：

USS_RPM_W | 读取无符号字参数 | U16 格式
USS_RPM_D | 读取无符号双字参数 | U32 格式
USS_RPM_R | 读取实数（浮点数）参数 | Float 格式
USS_WPM_W | 写入无符号字参数 | U16 格式
USS_WPM_D | 写入无符号双字参数 | U32 格式
USS_WPM_R | 写入实数（浮点数）参数 | Float 格式

USS 参数读写指令采用与 USS_CTRL 功能块不同的数据传输方式。由于许多驱动装置把参数读写指令用到的 PKW 数据处理作为后台任务，参数读写的速度要比控制功能块慢一些。因此使用这些指令时需要更多的等待时间，并且在编程时要考虑到，进行相应的处理。

读参数指令

以下的程序段读取SINAMICS V20 实际频率（参数 r0021）。由于此参数是一个实数，因此选用实型参数读功能块。

参数读写指令必须与参数的类型配合。

图 2. 调用 USS_RPM_R 指令读取 SINAMICS V20 的实际频率

图中：

  1. EN： 要使能读写指令此输入端必须为 1
  2. XMT_REQ： 发送请求。必须使用一个沿检测触点以触发读操作，它前面的触发条件必须与 EN 端输入一致
  3. Drive： 要读写参数的驱动装置在 USS 网络上的地址
  4. Param： 参数号（仅数字）。此处也可以是变量
  5. Index： 参数下标。有些参数由多个带下标的参数组成一个参数组，下标用来指出具体的某个参数。对于没有下标的参数，可设置为 0
  6. DB_Ptr： 读写指令需要一个 16 字节的数据缓冲区，用间接寻址形式给出一个起始地址。此数据缓冲区与“库存储区”不同，是每个指令（功能块）各自独立需要的。
    此数据缓冲区也不能与其他数据区重叠，各指令之间的数据缓冲区也不能冲突
  7. Done： 读写功能完成标志位，读写完成后置 1
  8. Error： 出错代码。0 = 无错误
  9. Value： 读出的数据值。该数据值在 “Done”位为1时有效。

EN 和 XMT_REQ 的触发条件必须同时有效，EN 必须持续到读写功能完成（Done 为 1），否则会出错。

写参数指令

写参数指令的用法与读参数指令类似。与读参数指令的区别是参数是功能块的输入。

读写多个参数

在任一时刻 USS 主站内只能有一个参数读写功能块有效，否则会出错。因此如果需要读写 多个参数（来自一个或多个驱动装置），必须在编程时进行读写指令之间的轮替处理。

轮询处理方式可以参考下面给出一个简单的例子，方法不是唯一的。

USS 控制及读参数测试例程


USS - 出错代码

USS 错误代码

表 1. USS 库指令错误代码
错误代码 | 错误描述
0 | 无错误
1 | 驱动装置无响应
2 | 来自驱动的响应中检测到校验和错误
3 | 来自驱动的响应中检测到奇偶校验错误
4 | 用户程序干扰引起错误
5 | 尝试执行非法命令
6 | 提供了无效的驱动装置地址
7 | 通信口未定义为 USS 协议
8 | 通信口忙于处理其他指令
9 | 驱动装置速度设定输入值超限
10 | 驱动装置返回的信息长度不正确
11 | 驱动装置返回报文的第一个字符不正确（不是 02 h）
12 | 驱动装置返回的长度信息不被 USS 指令支持
13 | 响应的驱动装置不正确
14 | 提供的 DB_Ptr 地址不正确
15 | 提供的参数号不正确
16 | 选择了错误的协议
17 | USS 已激活，不能改变
18 | 指定了非法的波特率
19 | 无通信活动：驱动装置未激活
20 | 驱动装置返回的参数值不正确或包括错误的代码
21 | 请求一个字长的数据时返回了一个双字数据
22 | 请求一个双字长的数据时返回了一个字数据
23 | 端口无效
24 | 信号板(SB) 端口1缺失或未组态

调试中的常见错误及原因

表 2. 常见错误
错误代码 | 可导致此错误的原因（未全列出）
1 | 通信线断线或者类似问题，驱动装置未供电
11 | 未正确接收到起始字符 02 h，硬件错误，RS 485 线对接反，或者通信口损坏
12 | 试图读取驱动装置中不存在的参数，或者参数类型不对
19 | 主站中的数据存储区重叠也能导致此错误


USS - MM 440 参数设置

MM 440 的参数设置

参数集是对驱动装置进行调试和控制的基础，几乎所有的功能都需要对驱动装置的内部参数进行访问、设定和修改。西门子驱动装置的参数功能更为突出，庞大繁多的参数选项，保证了西门子产品的高性能应用和极高的定制能力。

驱动装置的调试和控制都依赖于对参数的设置，与 S7-200 SMART配合使用时也不例外。一个实际的项目，往往把驱动装置和自动控制器（PLC）分为两个相对独立、又有联系的子系统，它们的调试也一般也可以分开进行。这样做不但可以提高效率，而且能够保证控制关系清晰明了。

对于 S7-200 SMART与西门子驱动装置配合的项目，我们建议分为三个阶段调试：

  1. 驱动装置和 PLC 相对独立，调试各自的基本功能；
  2. 调试出驱动装置和 PLC 之间相互控制、反馈功能；
  3. 进行整个系统的综合调试，达成一个完整的控制任务。
驱动装置的基本调试相对比较独立，最好能够在尝试与控制器连接之前完成。

具体驱动装置的调试请参考相关产品的操作手册等资料。

我们假定已经完成了驱动装置的基本参数设置和调试（如电机参数辨识等等），以下只涉及与 S7-200 SMART控制器通讯相关的参数。

MM 440 的参数分为几个访问级别，以便于过滤不需要查看的部分。 与 S7-200 SMART连接时，需要设置的主要有“控制源”和“设定源”两组参数。要设置此类参数，需要“专家”参数访问级别，即首先需要把 P0003 参数设置为 3。

控制源参数设置

控制命令控制驱动装置的启动、停止、正/反转等功能。控制源参数设置决定了驱动装置从何种途径接受控制信号。

控制源由参数 P0700 设置：

表 1. 控制源参数
取值 | 功能说明
0 | 工厂缺省设置
1 | BOP（操作键盘）控制
2 | 由端子排输入控制信号
4 | BOP Link 上的 USS 控制
5 | COM Link （端子 USS 接口）上的 USS 控制
6 | COM Link 上的 CB（通信接口板）控制

此参数有分组，在此仅设第一组，即 P0700[0]。

设定源控制参数

设定值控制驱动装置的转速/频率等功能。设定源参数决定了驱动装置从哪里接受设定值（即给定）。

设定源由参数 P1000 设置：

表 2. 设定源参数（部分）
取值 | 功能说明
0 | 无主设定
1 | MOP 设定值
2 | 模拟量输入设定值
3 | 固定频率
4 | BOP Link 上的 USS 设定
5 | COM Link 上的 USS 设定
6 | COM Link 上的 CB 设定
7 | 模拟量输入 2 设定值

此参数有分组，在此仅设第一组，即 P1000[0]。

USS 通信控制的参数设置

控制源和设定源之间可以自由组合，根据工艺要求可以灵活选用。我们以控制源和设定源都来自 COM Link 上的 USS 通信为例，简介 USS 通信的参数设置。

主要参数有：

  1. P0700： 设置 P0700[0] = 5，即控制源来自 COM Link 上的 USS 通信
  2. P1000： 设置 P1000[0] = 5，即设定源来自 COM Link 上的 USS 通信
  3. P2009： 设置P2009 = 5，即设定值为额定频率的百分比。
  4. P2010： 设置 COM Link 上的 USS 通信速率。根据 S7-200 通信口的限制，支持的通信波特率有：

    = 4 2400 bit/s
    5 | 4800 bit/s
    6 | 9600 bit/s
    7 | 19200 bit/s
    8 | 38400 bit/s
    9 | 57600 bit/s
    12 | 115200 bit/s

  5. P2011： 设置 P2011[0] = 0 至 31，即驱动装置 COM Link 上的 USS 通信口在网络上的从站地址。

    USS 网络上不能有任何两个从站的地址相同。

  6. P2012： 设置 P2012[0] = 2，即 USS PZD 区长度为 2 个字长。
  7. P2013： 设置 P2013[0] = 127，即 USS PKW 区的长度可变。
  8. P2014： 设置 P2014[0] = 0 至 65535，即 COM Link 上的 USS 通信控制信号中断超时时间，单位为 ms。如设置为 0，则不进行此端口上的超时检查。
    此通信控制信号中断，指的是接收到的对本装置有效通信报文之间的最大间隔。如果设定了超时时间，报文间隔超过此设定时间还没有接收到下一条信息，则会导致 F0072 错误，变频器将会停止运行。通信恢复后此故障才能被复位。
    根据 USS 网络通信速率和站数的不同，此超时值会不同。
  9. P0971： 设置 P0971 = 1，上述参数将保存入MM 440 的 EEPROM 中。

USS 通信是由 S7-200 SMART和驱动装置配合，因此相关参数一定要配合设置。如通信速率设置不一样，当然无法通信。


USS -V20 参数设置

SINAMICS V 20 的参数设置

参数集是对驱动装置进行调试和控制的基础，几乎所有的功能都需要对驱动装置的内部参数进行访问、设定和修改。西门子驱动装置的参数功能更为突出，庞大繁多的参数选项，保证了西门子产品的高性能应用和极高的定制能力。

驱动装置的调试和控制都依赖于对参数的设置，与 S7-200 SMART配合使用时也不例外。一个实际的项目，往往把驱动装置和自动控制器（PLC）分为两个相对独立、又有联系的子系统，它们的调试一般分开进行。这样做不但可以提高效率，而且能够保证控制关系清晰明了。

对于 S7-200 SMART与西门子驱动装置配合的项目，我们建议分为三个阶段调试：

  1. 驱动装置和 PLC 相对独立，调试各自的基本功能；
  2. 调试出驱动装置和 PLC 之间相互控制、反馈功能；
  3. 进行整个系统的综合调试，达成一个完整的控制任务。
驱动装置的基本调试相对比较独立，最好能够在尝试与控制器连接之前完成。

具体驱动装置的调试请参考相关产品的操作手册等资料。

我们假定已经完成了驱动装置的基本参数设置和调试（如电机参数辨识等等），以下只涉及与 S7-200 SMART控制器通讯相关的参数。

控制源参数设置

控制命令控制驱动装置的启动、停止、正/反转等功能。控制源参数设置决定了驱动装置从何种途径接受控制信号。

控制源由参数 P0700 设置：

表 1. 控制源参数
取值 | 功能说明
0 | 工厂缺省设置
1 | 操作面板（键盘）控制
2 | 由端子排输入控制
5 | RS 485 上的USS/Modbus 控制

设定源控制参数

设定值控制驱动装置的转速/频率等功能。设定源参数决定了驱动装置从哪里接受设定值（即给定）。

设定源由参数 P1000 设置：

表 2. 设定源参数（部分）
取值 | 功能说明
0 | 无主设定
1 | MOP 设定值
2 | 模拟量输入设定值
3 | 固定频率
5 | RS 485 上的 USS 设定值
7 | 模拟量输入 2 设定值

USS 通信控制的变频器基本参数设置

控制源和设定源之间可以自由组合，根据工艺要求可以灵活选用。我们以控制源和设定源都来自 RS 485 上的 USS 通信为例，简介 USS 通信的参数设置。

主要参数有：

  1. P0010： 用于对参数进行过滤，从而可以只选择与特定功能相关的部分参数；设置 P0010 = 30 ，恢复变频器出厂设置。
  2. P0970： 设置 P0970 = 21，所有参数以及用户默认设置复位至工厂复位状态。注意：参数P2010、P2011、P2023 的值不受工厂复位影响。
  3. P0003： 设置 P0003 = 3 ，用户访问等级为专家等级。
  4. P0700： 设置 P0700 = 5，即控制源来自 RS 485上的 USS 通信。
  5. P1000： 设置 P1000 = 5，即设定源来自 RS 485上的 USS 通信。
  6. P2023： 设置 P2023 = 1，RS 485 协议选择为 USS。
    注意： 在更改P2023 后，须对变频器重新上电。 在此过程中，请在变频器断电后等待数秒，确保 LED 灯熄灭或显示屏空白后方可再次接通电源。 如果通过PLC 更改P2023，须确保所做出的更改已通过P0971保存到EEPROM 中。
  7. P2010[0]： 设置 RS 485 上的 USS 通信速率。根据 S7-200 SMART通信口的限制，支持的通信波特率有：

    = 6 9600 bit/s
    7 | 19200 bit/s
    8 | 38400 bit/s
    9 | 57600 bit/s
    12 | 115200 bit/s

  8. P2011： 设置 P2011[0] = 0 至 31，即驱动装置 RS 485 上的 USS 通信口在网络上的从站地址。

    USS 网络上不能有任何两个从站的地址相同。

  9. P2012： 设置 P2012[0] = 2，即 USS PZD 区长度为 2 个字长。
  10. P2013： 设置 P2013[0] = 127，即 USS PKW 区的长度可变。
  11. P2014： 设置 P2014[0] = 0 至 65535，即RS 485上的 USS 通信控制信号中断超时时间，单位为 ms。如设置为 0，则不进行此端口上的超时检查。
    此通信控制信号中断，指的是接收到的对本装置有效通信报文之间的最大间隔。如果设定了超时时间，报文间隔超过此设定时间还没有接收到下一条信息，则变频器将会停止运行。通信恢复后此故障才能被复位。
    根据 USS 网络通信速率和站数的不同，此超时值会不同。

USS 通信是由 S7-200 SMART和驱动装置配合，因此相关参数一定要配合设置。如通信速率设置不一样，当然无法通信。


USS - Protocol

常见问题

S7-200 SMART CPU USS 协议库能否与第三方变频器进行通信，其支持与哪些变频器通信？

USS 协议（Universal Serial Interface Protocol，即通用串行接口协议）是西门子专为西门子驱动装置开发的通用通信协议，不能用于与第三方变频器通信。
S7-200 SMART USS 协议库可用与MicroMaster 3、MicroMaster 4、Sinamics G110、Sinamics G120、Sinamics S110以及Sinamics V20 系列变频器通信。

S7-200 SMART CPU 与西门子变频器 USS 通信不上的可能原因？

USS 通信需要从硬件接线和编程两个方面进行故障排查。硬件接线方面需要注意以下几点：
● S7-200 SMART CPU 的通信端口是非隔离型，通信距离最长 50m，超出 50m 距离需要增加 RS485 中继器。
● S7-200 SMART CPU 的通信端口是非隔离型，与变频器通信时需要做好等电位连接。通过将 CPU 模块右下角的传感器电源的 M 端与其它变频器通信端口的 0V 参考点连接起来做到等电位连接。
编程方面需要注意以下几点：
● 需要使用沿信号调用 USS_INIT 指令用于启用、初始化 USS 通信， USS 从站站地址需要在主站的轮询地址表中被激活。
● 需要使用 SM0.0 调用 USS_CTRL 指令，每一个 USS 从站只能使用一条 USS_CTRL 指令。

S7-200 SMART CPU 集成的RS485 端口（端口 0 ）以及 SB CM01 信号板（端口 1 ）两个通信端口能否同时进行 USS 通信？

S7-200 SMART CPU 两个通信端口不能同时进行 USS 通信，端口 0 与端口 1 在同一时刻只能有一个端口用于 USS 通信。

同一时刻触发多条 USS_RPM_x ?或 USS_WPM_x 指令，为什么只有一条参数读写指令被执行，其它参数读写指令报 8# 错误（通信端口忙于处理其它指令）？

USS_RPM_x 指令和USS_WPM_x 指令同一时刻只能激活一条指令，多条参数读写指令的执行可以采用轮询方式，具体编程可参考例程：

USS 控制及读参数测试例程

USS_RPM_R 指令数据读取变频器参数时，为什么读出的数值会出现跳变？

USS_RPM_R 指令输入参数 XMT_REQ 为 True 时将启动参数读取请求并清除输出参数 Value 数值，所以会造成读出的参数数值跳变的现象。可以使用 USS_RPM_R 指令的 Done 完成位的上升沿信号来保存读取的参数值，具体编程可参考例程：

USS 控制及读参数测试例程


PC Access SMART OPC（与上位机通讯）

PC Access SMART

1概述

1.1介绍

S7-200 PC Access SMART是西门子公司针对S7-200 SMART PLC与上位机通信推出的OPC（OLE for Process Control）服务器软件。其作用是跟其他标准的OPC客户端（Client）通信并提供数据信息。S7-200 PC Access SMART与S7-200 PLC的OPC 服务器软件 PC Access类似，也具有OPC客户端测试功能，使用者可以测试配置情况和通信质量。
S7-200 PC Access SMART在本文中都简称为PC Access SMART。
PC Access SMART可以支持西门子上位机软件比如WinCC，或是第三方上位机软件与 S7-200 SMART PLC建立OPC通信。
以下链接内可以获取该软件：PC Access SMART 下载链接

对操作系统和硬件的要求

1.2.1计算机和操作系统必须满足以下要求：

●操作系统：

PC Access SMART V2.0：Microsoft Windows XP SP3（仅 32 位）或 Windows 7（32 位和 64 位）
PC Access SMART V2.3：Microsoft Windows 7（32 位和 64 位） 或 Windows 10（32 位和 64 位）

●至少 350 MB 的空闲硬盘空间
●最小屏幕分辨率为 1024 x 768 像素，小字体设置
●以太网电缆连接到与 S7-200 SMART 进行通信的网卡或设备

1.2.2运行环境要求：

为了能在 Windows XP 下安装和使用 S7-200 PC Access SMART V2.0，必须至少以高级用户权限登录。
Windows 7 下安装和使用 S7-200 PC Access SMART V2.0，必须以管理员权限登录。

1.3 PC Access SMART注意事项
  • S7-200 PC Access SMART中没有打印工具
  • S7-200 PC Access SMART中通信数据条目的个数没有限制
  • S7-200 PC Access SMART专为S7-200 SMART PLC使用，不能应用于S7-200、S7-1200、S7-300或S7-400 PLC
  • 客户测试端不支持写功能测试

2 S7-200 PC Access SMART基本设置

2.1 S7-200 PC Access SMART软件界面介绍

S7-200 PC Access SMART软件界面如下图所示：

图2-1 S7-200 PC Access SMART软件界面

2.2 与S7-200 SMART PLC建立连接

S7-200 PC Access SMART软件只能通过以太网方式与S7-200 SMART PLC建立连接。

2.2.1设置PG的IP地址

需要给电脑设置一个固定的IP地址，在Win 7系统中点击工具栏的网络连接图标，出现下面的小窗口，选择“Open Network and Sharing Center”进入到网络设置窗口图2-2.

图2-2电脑工具栏网络连接属性

图2-3网络设置窗口
在网络设置窗口中选择本地连接“Local Area Connection”，在Win 7系统中，电脑需要连接网线才能出现“Local Area Connection”的选项。设置本地网络连接的属性。

图2-4本地网络连接状态
选择IPV4的选项，进入窗口给电脑设置固定IP地址和子网掩码。

图2-5选择网络协议

图2-6设置固定IP地址和子网掩码

2.2.2设置S7-200 SMART CPU的IP地址

第一步：选择连接方式；
选择客户电脑实际网卡的硬件名.TCPIP.1的方式进行通信。
第二步：点击“查找PLC”；

图2-7选择连接方式
点击“查找PLC”后会把网络上的所有S7-200 SMART都搜索出来。

图2-8搜索出S7-200 SMART PLC
根据需要选择是否修改S7-200 SMART PLC的IP地址，如果需要修改如下图所示：

图2-9设置S7-200 SMART PLC IP地址

图2-10 IP地址修改成功

2.2.3设置S7-200 PC Access SMART软件

第一次打开S7-200 PC Access SMART软件，会随软件同时出现一个提示窗口，其内容是告知使用者，在进行OPC通信之前，对S7-200 PC Access SMART项目进行保存。

图2-11保存项目
第一步：选择要通信的S7-200 SMART PLC，鼠标右键“MWSMART(TCO/IP)“，选择“新建PLC”。

图2-12新建PLC
第二步：在弹出的窗口中“查找CPU”，在网络中选择要做OPC通信的PLC，紧接着设置本地和远程的TSAP号。
其中“本地”指的是电脑上S7-200 PC Access SMART，“远程”指的是PLC。
TSAP是Transport Service Access Point的缩写，表示的是连接资源的地址。使用S7-200 SMART CPU时TSAP号只能设置下面的值：

  1. 02.00
  2. 02.01
  3. 03.00
  4. 03.01

使用者也不能设置其他的数值，因为设置的其他数值后，不能选择“确认”按钮完成配置。软件不支持其他数值。

图2-13设置TSAP
第三步：添加NewPLC后，给该PLC新建“文件夹”。。

图2-14添加文件夹
第四步：在文件夹下添加需要通信的变量。

图2-15添加变量

图2-16设置变量类型
A：该变量的符号名
B：变量ID
C：变量地址，可以设置S7-200 SMART支持的所有内存变量
D：设置上位机软件访问该数据的方式，有三种：读/写、写或读
E：数据类型
F：数据工程单位上下限
G：变量注释
第五步：在文件夹下添加需要通信的变量。可以通过点击下图的按钮，也可以直接用鼠标选择变量拖拽到测试区进行测试。

图2-17添加变量到测试区
第六步：点击测试按钮进行测试。可以从测试区监视到变量实时值、每次数据更新的时间戳，以及通信质量。
测试质量：良好，表示通信成功，相反如果为“差”，表示数据通信失败。
注意：客户端测试只能测试从PLC读取变量数值，不能测试向PLC写变量值。

图2-18客户端测试

2.3向S7-200 PC Access SMART导入PLC变量

首先需要使用者的S7-200 SMART 程序中变量有符号名，选择S7-200 PC Access SMART 软件--->文件--->导入符号，就可以找到S7-200 SMART程序，把S7-200 SMART PLC中有符号名的变量都导入到PC Access SMART中。

图2-19导入符号


PC Access SMART FAQ

PC Access SMART 常见问题

常问问题

1 S7-200PC Access SMART可以与S7-300，S7-400使用吗？

答：不能。

2 S7-200PC Access SMART最多可以连接几个S7-200 SMART PLC？

答：8个PLC。

3为什么数据条目设置成“写”，客户测试端的测试结果为“差”？

答：当条目的属性为“写”的时候，就取消了该条目的读取功能，所以客户端尝试读取的时候失败，质量显示“差”。在上位机软件上可以对该变量进行写操作。

4如何提高S7-200PC Access SMART数据通信性能？

答：调整更新速率，如下图：工具--->选项

图2-21工具选项

图2-22 更改更新速率
说明：在默认情况下，“状态”选项夹中的手动更新速率是没有激活的，使用者可以设置的最快更新速率是50ms。该值只能让OPC软件以这样的速率向PLC请求数据，实际数据的更新时间受到通信速率、通信距离、通信的数据量影响。

5有时 PC Access SMART 软件进行客户端测试时，系统会提示：服务器组态文件已写保护？该如何设置？

答：如下图所示，有些用户进行客户端测试时，系统出现提示信息：服务器组态文件已写保护。

遇到这个提示该如何设置以正常使用，步骤如下：

1. 进入电脑的控制面板，找到"操作中心"。

控制面板-操作中心

2. 设置“更改用户账户控制设置”

更改用户账户控制设置

3. 在打开的窗口中选择“从不通知”，然后重新启动电脑，再次测试PC ACCESS SMART 软件。

账户设置为从不通知

6 PC Access SMART V2.0软件为什么无法导入 STEP 7-Micro/WIN SMART V2.1 中的符号？

答：目前PC Access SMART V2.0版本软件与STEP 7-Micro/WIN SMART V2.1 版本软件不兼容，导致PC Access SMART V2.0软件无法导入 STEP 7-Micro/WIN SMART V2.1 中的符号。
但是，可以通过运行 Siemens 开发的 Update_SystemData.bat 文件来执行此导入操作。
本文档提供了该Update_SystemData.bat压缩文件Update_SystemData.zip 。

解压缩后将该Update_SystemData.bat 文件拷贝到PC Access SMART软件（例如：WIN7 系统下的PC Access SMART V2.0 默认安装路径为C:\Program Files (x86)\Siemens\S7-200 PC Access SMART）以及STEP 7-MicroWIN SMART的安装目录下（例如：WIN7 系统下的STEP 7-MicroWIN SMART默认安装路径为C:\Program Files (x86)\Siemens\STEP 7-MicroWIN SMART）。

双击该Update_SystemData.bat 后，再使用PC Access SMART V2.0软件就可以导入 STEP 7-Micro/WIN SMART V2.1 中的符号了。
附： 也可以自己创建该Update_SystemData.bat 文件，步骤如下：
1、新建一个文本文件，并文件名的后缀由.txt 修改为 .bat 。
2、此 .bat 文件的内容如下所示：
@echo off
::This batch file is for registering systemdata.dll file
::
::Clear the screen
cls
::Run RegSvr32
regsvr32 systemdata.dll

另外，如果STEP 7-MicroWIN SMART项目里配置AE01，DP01，AE08，AQ04,AM03，AR04等这些STEP 7-MicroWIN SMART V2.1起支持的模块，也会导致无法导入符号表；可以建议客户先从配置中删除相应的模块，然后导入符号表，最后再配置相应的模块。

7 PC Access SMART V2.0软件如何修改客户机连接等待时机？

答： 连接等待时间是客户机在尝试读取未连接变量或检测可能存在的通信超时之前读取已连接变量的时间。
可通过向以下注册表项中添加新的 DWORD 连接等待时间来修改连接等待时间：
HKEY_CURRENT_USER\Software\Siemens\MWSmart\S7-200 PC Access SMART\<Version>\Communications
该值的默认为 60000 毫秒或 60 秒。 <Version> 表示一个数字版本标识。 如下图所示

注意：如果您的客户机执行了许多异步读取，则该参数至少应设为 15 秒。 更短的超时时间将导致 OPC 服务器停止工作并且无法正常释放。
发生这种情况时，应终止 OPC 服务器并在设置更长的超时时间后重试。 要终止 OPC 服务器，请在任务栏中右键单击 OPC 服务器图标后选择"退出"(Exit)。
如果操作失败，请从任务管理器结束 OPC 服务器进程树。


SIMATIC NET与S7-200 SMART 集成以太网口OPC 通信（TIA平台）

硬件：
①S7-200 SMART
②PC 机 ( 集成以太网卡)
软件：
① STEP 7-Micro/WIN SMART V2.1
② STEP 7 Professional（TIA Portal V13 SP1 Upd 9）
③ SIMATIC NET V13 SP2
④ 操作系统 Windows 7 Professional 64位 SP1

在 TIA Portal 平台中配置 PC station

1. 使用 TIA V13 SP1 Upd 9 软件 Portal 视图中，创建新项目

2. 添加 PC 系统并命名设备名称

进入 “项目视图”，在“项目树” 下双击 “添加新设备”，在对话框中选择 PC 系统>常规 PC，命名为 PC station 如图1 所示

图1. 添加新设备

3. 添加 OPC服务器及常规 IE

进入设备视图>硬件目录>用户应用程序> OPC 服务器，双击，添加 OPC服务器；

进入设备视图>硬件目录>通信模块> PROFINET/Ethernet > 常规 IE，双击，添加 常规 IE 卡 ，添加子网，设置 IP 地址，结果如图2 所示

图2.添加OPC服务器及常规IE

4.建立 S7 连接并且设置连接参数

打开网络视图，点击连接，选择S7连接，默认连接为HMI连接，需要修改；点击 OPC server ,右键添加新连接；创建新连接对话框选择未指定，本地接口选择 IE general，点击添加；

属性>常规>常规，伙伴站点及接口设置为未知；伙伴 IP 地址设置为 192.168.0.22（为 S7-200 SMART 集成以太网口的 IP 地址）；

属性>常规>地址详细信息，伙伴 TSAP 设置为 03.00 。

设置步骤如图3 所示。

图3. 建立 S7连接及参数配置

5.生成 XDB 组态文件

网络视图中，点击 PC station 站点，属性> XDB 组态，勾选 “生成 XDB 文件” 然后将项目进行编译。如图4所示。

图4.生成XDB文件

STATION CONFIGURATOR 中导入 XDB 组态文件

在计算机“开始”菜单中 ，搜索，输入关键字 STATION CONFIGURATOR ,双击找到的软件，打开;

在打开的 Station Configuration Editor 中点击 “Import Station”，选择XDB存储路径导入

导入过程及结果如图5所示。

图5.导入XDB文件

S7-200 SMART 侧设置 IP 地址

设置 S7-200 SMART PLC 的 IP 地址为192.168.22，使用网线连接 PLC 的以太网口和电脑的以太网口

使用 OPC SCOUT 测试

在计算机“开始”菜单中，搜索 SIMATIC NET 的 OPC Scout V10 ，双击打开，建立变量：MB10，MB11 ，MD20， MD24 ，MD28。

打开STEP 7-MicroWIN SMART，在状态图表中赋值。

如图6 所示

图6.通信结果

常见问题

如何理解建立的变量的起始地址，数据类型及个数

以建立M区变量为例说明，如下图所示

S7-200 SMART 要交换V区数据，OPC scout 中无法添加 DB 块的变量怎么办？

S7-200 SMART 要通信 V 区数据，需要在 OPC SCOUT 中建立 DB1 的数据

如果在OPC Scout 中无法建立 DB 块数据，可以先插入M变量，然后进行修改，修改方法如下：

注意！OPC scout 如果无法建立DB块变量，在M区修改以后也只能用于测试 S7 通信是否成功，在客户端需要单独建立变量


Configurate PC_Station

STEP 7 软件组态 PC Station的组态步骤

硬件需求和软件需求

硬件：
① S7-200 SMART CPU(固件版本 V2.0及以上 )
② PC 机（带普通以太网卡）
③ 交换机、以太网线

软件：
① STEP 7-Micro/WIN SMART V2.0
② STEP 7 V5.5 SP4
③ SIMATIC NET V8.2
④ WINCC V7.2
⑤ 操作系统 WIN 7 64位 专业版

STEP7中组态 PC Station

１．在 STEP7 中新建项目，组态 PC Station。

打开 STEP7 并新建一个项目：“S7-200 SMART OPC”，通过“Insert”>“Station”>“SIMATIC PC Station”插入一个PC站，PC站的名字为：“SIMATIC PC Station(1)”。如图１．所示。

注意：STEP7 中 PC Station 的名字“SIMATIC PC Station(1)”要与 SIMATIC NET 中“站组态编辑器”的“站名”相同。

图1．插入并组态PC 站

２． 双击 Configuration 即可进入 PC Station 硬件组态界面。

在第一个槽中，从“SIMATIC PC Station”>“User Application”>“OPC Server”下，选择版本“SW V8.2”,添加一个 OPC Sever 的应用。如图２．所示。
注意：选择的 OPC Server 版本需要与 SIMATIC NET 软件版本一致。

图2．PC Station的硬件组态

在第二个槽中，从“SIMATIC PC Station” >“CP Industrial Ethernet”>“IE General”下，选择版本“SW V8.2”，添加一个 IE General。
并在弹出的“Ethernet interface IE General ”属性对话框中点击“New”，新建一个以太网络，并设置IP 地址。如图3．所示。
注意：IP address 的设置需要与 PC 机网卡的实际地址相同。

图3．添加 IE General 并设置以太网地址

完成 PC 站硬件组件设置后，按下“Save and Compile”按钮，保存并编译当前组态配置。

３． 配置网络连接
通过点击工具栏右上角网络配置的图标 [image] 进入网络配置，然后在 NetPro 网络配置中，鼠标右键 OPC Server，选择“Insert New Connection”。
在弹出的“Insert New Connection”对话框中选择通信伙伴为“Unspecified”，连接类型为“S7 connection”，如图4. 所示。

图4．插入一个新的网络连接

在“Insert New Connection”对话框中选择“Apply”按钮，在弹出的“Properties- S7 connection”对话框中设置通信伙伴方IP地址，即 S7-200 SMART CPU IP 地址。
点击“Address Detail”按钮，定义通信伙伴方得 TSAP:03.01。如图5. 所示。

图5． 设置 S7 连接属性及 TSAP

4． 编译并保存网络连接

确认完成所有配置后，已建好的S7连接会显示在连接列表中。点击编译存盘按钮或选择“Network”>“Save and Compile”，如得到 No error 的编译结果，则正确组态完成。如图6. 所示。

图6． 编译并保存网络连接

这里编译结果信息非常重要，如果有错误信息（error Message），说明组态不正确，是不能下载到 PC Station 中的。 成功编译完成后，在 STEP7 中的所有 PC Station 的硬件组态就完成了。


Set up PC Station

使用“Station Configuration Editor”创建 PC Station

通过“Station Configuration Editor”创建一个虚拟的 PC Station 硬件机架，以便在STEP7中组态的 PC Station 下载到这个虚拟的 PC Station 硬件机架中去。

1. 进入 PC Station 硬件机架组态界面

在 Windows 桌面中双击 [image] 图标，进入 PC Station 硬件机架组态界面。

2. 添加 OPC Server

选择第一号插槽，鼠标右键，选择"Add"，在弹出的添加组件窗口中选择 OPC Server，如图１．所示。

图1． 插入 OPC Server

3. 添加组件窗口中选择 IE General

选择第二号插槽，鼠标右键，选择"Add"，在添加组件窗口中选择 IE General，如图2．所示。

图2．插入 IE General

注意：STEP7 中的 PC Station 硬件组态与虚拟 PC Station 硬件机架的组件、“Index”必须完全一致。

4. 网卡参数配置

插入 IE General 后，随即会弹出组件属性对话框。如果需要修改网卡参数，则可以通过点击“Network Properties”按钮进行网卡参数配置，如图３．所示。

图3．进入PC 网卡参数设置

5. 命名 PC Station

PC Station 添加完 “OPC Server”和“IE General”组件后，需要命名 PC Station，该名字需要与 STEP 7 硬件组态中的“SIMATIC PC Station(1)”的名字一致，如图4．所示。

图4．命名 PC STATION Station name


Download PC Station

下载 PC Station硬件组态及网络连接

１．设置 PG/PC 接口

在 STEP7 软件中，通过“Options”>“Set PG/PC Interface”进入设置界面，如图１．所示。
注意：需要选择 PC 机的相应的以太网卡，选择协议TCPIP.Auto；如果需要下载 PC Station 与STEP 7 软件位于同一台 PC 上，则PG/PC接口也可以选择“PC internal.local”。

图1．设置PG/PC接口

２． 检查配置控制台

通过Windows “开始”>“所有程序”>“Siemens Automation>“SIMATIC”>“SIMATIC NET”>“Communication Setting”进入配置控制台检查，如图２．所示。
注意： “IE General”组件的操作模式需要为“Configured mode ”。
对于低版本的 Simatic Net 软件，有可能需要手动将模块模式（Mode of the module）从PG模式切换到组态模式（Configured mode），并设置 Index 号，然后再在 Station Configuration Editor 中添加硬件。

图2．配置控制台

３． 使用STEP7软件下载PC Station组态。

STEP 7 软件中，选择相应的 PC Station 站点，点击下载图标，下载 PC Station 项目组态，如图3．所示。

图3．下载 PC Station 项目组态

４．在网络配置中将配置好的连接下载到 PC Station 中。

下载完成后，再次打开“Station Configuration Editor”，PC Station运行以及连接状态将更新，如图4．所示。在编程过程中，可以根据这些状态显示进行判断组态是否正确。

图4．下载完成后的状态


Test OPC Scout

使用 OPC Scout 测试 S7 OPC Sever

SIMATIC NET自带 OPC Client 端软件 OPC Scout，可以使用这个软件测试所组态的 OPC Sever。
通过 Windows “开始”>“所有程序”>“Siemens Automation>“SIMATIC”>“SIMATIC NET”>“OPC Scout V10”，启动测试。

１．添加变量

双击OPC.SimaticNET，点击“S7:”>“S7 connection_1”>“objects”>“DB”>“DB1”>“New Definition”来添加一个变量，并为变量选择数据类型、起始地址、数据长度 。如图１．所示。
注意： DB1 数据类型对应与 S7-200 SMART CPU 的 V 区数据。

图1． 创建一个新的变量组

2． 观察通信结果及质量

将创建好的 Item 拖放到 DA view 中，进行变量监控，如图 2. 所示。

图2．检查通信结果

注意：如果通信质量为“bad”，则说明通信失败，需要检查软件组态及硬件连接是否正确。


WinCC 与 S7-200 SMART OPC

WinCC 与S7-200 SMART CPU 的 OPC 通信

WinCC 中没有与S7-200 SMART CPU 通信的驱动，所以 WinCC 与 S7-200 SMART CPU 之间通过以太网的通信，只能通过 OPC 的方式实现。S7-200 SMART CPU 作为 OPC 的 Sever 端，只需设置 IP 地址即可。
上位机作为 OPC 的 Client 端，通过 SIMATIC NET 软件建立 PC Station 来与 S7-200 SMART 通信。
建立好 PC Station 后，WinCC中的实现步骤如下：

1. 建立所有WinCC中要用到的变量

首先在 OPC Scout中建立好所有 WinCC 中要用到的变量，步骤见OPC Scout 测试。

2. 添加新的驱动

打开 WinCC 软件新建一个项目，用鼠标右键点击“变量管理”，快捷菜单中选择“打开”。
在打开的“WinCC Configuration Studio ”窗口中，鼠标右键“变量管理”，在快捷菜单中选择“添加新的驱动程序”，添加“OPC”驱动。如图1．所示。

图1． 添加一个新的驱动"OPC"

3. 在 WinCC 中搜索及添加 OPC Scout 中定义的变量

首先用鼠标右键“OPC Groups” ，在快捷菜单中点击“系统参数”。在弹出“OPC 条目管理器”窗口中，选择“OPC.SimaticNET.1”，然后点击“浏览服务器”按钮。
在弹出的“过滤标准”窗口中选择“下一步” 进行搜索。如图２．所示。

图２．选择服务器浏览

4. 建立新连接并添加所需变量

在变量列表中选择所需要的变量，点“添加条目”按钮添加所需变量，此时会自动要求你建立一个新连接，并将变量添加到这个连接中，如图3．所示。
如果需要添加多个变量，按上述步骤重复添加即可。

图3．添加变量并建立连接

成功添加完变量后，WinCC 中变量管理中将显示已经添加的 OPC 连接和变量，如图4．所示。

图4．从OPC Scout中成功添加变量

5. WINCC 创建画面并监控变量

WINCC 中新建画面，并添加“输入/输出 域”，并为其选择 OPC 变量，如图5．所示。

图5．创建 WINCC 画面

激活 WINCC ，即可测试 WINCC 与 S7-200 SMART OPC 通讯。


symbol_table

配置SIMATIC NET的OPC 服务器的符号访问

场景1：OPC客户端利用SIAMTIC NET作为OPC 服务器访问S7-200 SMART时，通常需要在客户端或者OPC SCOUT V10建立大量变量，地址的大部分都是诸如"S7:[S7_Connection_1]"重复字段。

场景2：不同项目使用相同或接近的变量表时，需要重新录入大量变量。

以上场景均可以利用SIAMTIC NET的符号表功能简化操作，并使用EXCEL来完成重复性的工作，使得配置变量事半功倍，此外符号表还可以将之前的符号表简单修改后用在新的项目。

本例程软件环境：

PC1：

操作系统：WIN7 SP1 64位英文版

SIMATIC NET 版本：V14

TIA博图 STEP7：V14 UPD2

WinCC：V7.4 SP1 UPD2

IP地址：192.168.1.130

子网掩码：255.255.255.0

PC2：

操作系统：WIN7 SP1 64位英文版

SIMATIC NET 版本：V8.1 SP1

NCM manager：V5.5 SP2

WinCC：V7.0 SP3

IP地址：192.168.1.1

子网掩码：255.255.255.0

之所以出现2个测试环境是因为从SIMATIC NET V8.2开始，"Configuration Console"（组态控制台）变为了"Communication Settings"（通信设置），设置页面发生了变化。

本例程硬件环境：

S7-200 SMART：ST30 V2.2

IP地址：192.168.1.26

子网掩码：255.255.255.0

组态OPC服务器

组态过程略。完成连接建立以及站组态编辑器的下载或导入。

PC1的TIA 博图 STEP7的PC站连接属性常规页面如图1所示，PC2的经典STEP7的PC站连接属性常规页面如图2所示。

图1 PC站连接属性常规

①连接名称，EXCEL使用

图2 PC站连接属性常规

①Local ID（连接名称），EXCEL使用

使用经典STEP7的默认名称是"S7 connection_1"的样式，这里将其修改和TIA博图STEP7建立的S7连接名称统一，便于后面EXCEL复用。

EXCEL中编辑符号表

1. 建立EXCEL表

建立好的EXCEL表如图3所示，文件下载链接。

标题行不可缺少，并且不可改变。

图3 EXCEL中的变量表

第1列：TagType（标签类型）

B：文件夹类型，L：变量类型

第2列：Level（级别），变量和文件夹所在的层级，图3表格的显示结果如图4所示（图中变量显示因字母先后顺序导致IO和V的文件夹颠倒）

图4 标签类型和级别的显示

可以每个变量都是TagType=L，Level=1，这样所有变量都是在一个文件夹下显示。

也可以按功能分级，例如车间Level=1，PLCLevel=2，功能Level=3，传感器、阀门、接触器等Level=4

第3列：ShortName（变量名），文件夹名或变量名

文件夹名或变量名不能包含中文。

第4列：RTName（变量地址），变量需要定义，格式如图5所示

图5 变量地址定义

第5列：DataType（数据类型），变量需要定义，见表1

表1 数据类型与值

数据类型 | 值（十六进制）
字节 | 11
字 | 12
双字 | 13
有符号短整数 | 10
有符号整数 | 2
有符号双整数 | 3
浮点数 | 4
位 | B
字符串 | 8
日期时间 | 7

第6列：AccessRights（访问权限），变量需要定义，R：只读、W：只写、RW：读写

第7、8列：102、103（变量值范围上限和下限，用于死区功能），变量需要定义，一般浮点数使用，用于降低客户端的负荷，此处均设置为0。

2. 修改分隔符

电脑控制面板进入"Region and Language"（区域和语言），如图6所示。

图6 区域语言设置

修改分隔符为";"，如图7所示。

图7 修改分隔符

①点击"Additional settings..."（自定义）

②在打开的页面，修改"List separator"（列表分隔符）为";"

3. 保存为CSV文件

保存EXCEL表格，选择保存类型为"CSV(逗号分隔)"，如图8所示。

图8 保存为CSV文件

在弹出对话框，先后点击“确定”按钮和“是(Y)”按钮，如图9所示，保存为smart.csv，文件下载链接。

图9 保存结束的确定按钮

符号表编辑器的使用

符号表编辑器的默认位置：

WIN XP："开始>所有程序>SIMATIC>SIMATIC NET"找到Symbol Editor。
WIN7："开始>所有程序>Siemens Automation>SIMATIC>SIMATIC NET"找到Symbol Editor。
WIN10："开始>Siemens Automation"找到Symbol Editor。

符号表编辑器打开后，如图10所示，点击"Import file"按钮后，浏览到制作的smart.csv文件后导入。

图10 符号表编辑器

导入CSV文件后，可以看到导入结果，通过点击不同文件夹，能看到之前EXCEL输入的不同变量，如图11图12图13所示。

当然，也可以直接在符号表编辑器中编辑，不过不如在EXCEL中更方便灵活。

图11 V区变量

图12 M区变量

图13 IO区变量

最后将该符号表，保存为".ati"格式的文件"smart.ati"，如图14所示。文件下载链接。

图14 符号表保存

PC1的符号访问

1. 打开电脑的控制面板，找到"Communication Settings"，如图15所示，并打开该软件。

图15 打开"Communication Settings"

2. 停止OPC服务器，如图16所示

图16 停止OPC服务器

点击“SIMATIC NET组态>OPC设置>关闭OPC服务器”，然后在右边页面点击“停止”按钮。

3. 导入符号表，如图17所示

图17 导入符号表1

①点击"SIMATIC NET组态>OPC设置>符号"

②在打开的页面，点击该按钮，浏览到图14准备的文件"smart.ati"，结果如图18所示

图18 导入符号表2

①确保两个单选框都已勾选

②点击“应用”按钮

4. 启动OPC服务器，如图19所示

图19 启动OPC服务器

点击“SIMATIC NET组态>OPC设置>关闭OPC服务器”，然后在右边页面点击“启动”按钮。

最后关闭"Communication Settings"。

4. 打开OPC SCOUT V10，如图20所示

图20 OPC SCOUT V10浏览

在“COM server>Local COM server>OPC.SimaticNET>\SYM:”能看到导入的符号表

5. WinCC V7.4导入符号表

过程略，结果如图21所示，添加所有条目到变量管理。

图21 添加条目

6. WinCC监控结果，如图22所示。

图22 WinCC监控结果

PC2的符号访问

1. 打开电脑开始菜单，从“所有程序>Siemens Automation>SIMATIC>SIMATIC NET”中找到"Configuration Console"，如图23所示，并打开。

图23 打开"Configuration Console"

2. 关闭OPC服务器，如图24所示

图24 关闭OPC服务器

点击“PC Station>SIMATIC NET组态>OPC设置>退出OPC服务器”，然后在右边页面点击“关闭(C)”按钮。

3. 导入符号表，如图25所示。

图25 导入符号表1

点击"PC Station>SIMATIC NET组态>OPC设置>符号"，再右边页面点击“编辑列表(E)...”按钮，打开页面如图26所示。

图26 导入符号表2

①点击“浏览(B)...”按钮，浏览到图14准备的文件"smart.ati"

②显示的是打开的"smart.ati"，确保前面的单选框已勾选

③点击“确定”按钮，关闭该页面，显示如图27所示

图27 导入符号表3

点击“应用(A)”按钮。

4. 启动OPC服务器，如图28所示。

图28 启动OPC服务器

点击“PC Station>SIMATIC NET组态>OPC设置>退出OPC服务器”，然后在右边页面点击“启动(S)”按钮。

最后关闭"Configuration Console"。

OPC SCOUT V10、WinCC等参考PC1。


通过MD720收发短消息

MD720简介

图1 MD720

订货号： 6NH9720-3AA01-0XX0
SIPLUS订货号：6AG1720-3AA01-7XX0

作为MD720-3（6NH9720-3AA00-0XX0）的替代型号，在国内主要是用来和S7-200连接，实现S7-200收发短消息或者S7-200的远程监视数据。

此外还可以连接S7-200 SMART，ET200 串口CP，S7-1200 串口CP，实现西门子全系列CPU的收发短消息的功能。

以及连接CP340/CP341、ET200S 1SI实现S7-300的远程监视修改数据。

本文档用于介绍S7-200 SMART通过MD720收发短消息。( 目前S7-200 smart无法通过MD720实现远程监视修改数据)

MD720在国内使用，需要配移动或联通的电话卡，不限2G、3G、4G。

MD720有2种模式：

1. 终端模式，出厂默认模式，主要用于发短消息，也是本文档涉及到的模式

2. OPC模式，主要用于远程监视数据

MD720手册链接：https://support.industry.siemens.com/cs/cn/zh/view/102401328

MD720的安装和连接

设备前面和后面图，如图2所示：

图2 MD720的前面和后面视图

1 X3：24 VDC 电源连接器（设备底部）
2 X2：用于连接天线的 SMA 插座
3 LED
4 SET 按钮
5 X1：用于连接本地站点或PC的串行接口 (RS-232)
6，9 用于DIN 导轨/配电柜固定支架
7 带有 SIM 卡卡托的 SIM 卡插槽
8 用于弹出 SIM 卡卡托的按钮

MD720安装：DIN35导轨水平或垂直安装。

SIM卡：联通或移动的SIM卡，插在MD720后面的卡托中。目前市售的SIM卡都是MICRO SIM卡或者NANO SIM卡，而MD720需要使用的原始的SIM卡，俗称的“大卡”，建议到运营商处获取原始的SIM卡。

S7-200 SMART的集成口和MD720之间的连接线可以是以下任意一种：

  • S7-200的编程电缆（订货号：6ES7901-3CB30-0XA0），长5m。
  • SINAUT PPI MODEM CABLE（订货号：6NH9701-0AD），长1.5m，和编程电缆相比只有长度不同。

电缆RS232端接在MD720 X1；而RS485端接在S7-200 SMART集成口。

电缆拨码见表1：

表1 PPI电缆拨码

开关编号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8
位置 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 0

S7-200 SMART 通过CM01信号板和MD720之间的连接线需要自制3芯屏蔽线，最长10米，接线如图3所示：

图3 CM01连接MD720接线

CM01如图4所示设置为RS232模式：

图4 CM01 RS232设置

MD720电源：DC24V

天线：可以使用以下天线：ANT794-4MR（订货号：6NH9860-1AA00，电缆长5m，支架安装，图5左边），或ANT794-3M（订货号：6NH9870-1AA00，电缆长1.2m，水平放置，图5右边）。

图5 天线

MD720的指示灯状态

终端模式
LED | 状态 | 含义
全部 | 按顺序闪烁和熄灭（快速） | 设备启动
所有LED同步缓慢闪烁 | 维护模式
按顺序闪烁和熄灭（缓慢） | 加载固件文件
所有LED同步快速闪烁 | 错误
STATUS | 缓慢闪烁 | 等待PIN输入
快速闪烁 | PIN错误/SIM错误
QUALITY | 缓慢闪烁（有规律） | 拨号到GSM网络
暂停后闪烁一次 | 场强不足
暂停后闪烁两次 | 场强适中
暂停后闪烁三次 | 场强良好
点亮 | 场强非常好
熄灭 | 等待PIN
CONNECT | 闪烁（有规律） | 终端模式已激活
  • 缓慢闪烁：1次/秒
  • 快速闪烁：4次/秒

S7-200 SMART通过MD720短消息说明

S7-200 SMART 通过集成口实现的短消息库如下：

set5_s7-200-library_port0

S7-200 SMART 通过CM01实现的短消息库如下：

set5_s7-200-library_port1

这两个库添加至STEP7-Micro/WIN SMART后如图6所示：

图6 S7-200 SMART 短消息库

该库需要占用227个字节的库存储区，该区域不能和其它区域有冲突。

对于发短消息，无需调用SMS_tele_handle（下面不做介绍）。库中的SMS_xmt_rcv_manage在其它程序块内部使用，在程序中专门无需调用，SMS_init，SMS_send，SMS_receive在程序中需全部调用。

程序在只调用SMS_init，SMS_send，SMS_receive后，大小在2.6Kbyte。

说明如下：

1. 初始化/SMS_init

引脚 | 类型 | 数据类型 | 说明
EN | INPUT | BOOL | 使能端，通常为SM0.0
SMS_init_start | INPUT | BOOL | 初始化，沿触发
SMS_init_pin | INPUT | DWORD | SIM卡PIN码，输入为字符串，国内SIM卡默认为1234
SMS_init_ssc | INPUT | DWORD | 短消息服务中心号码，输入为字符串，需要咨询SIM卡所在地的运营商
SMS_init_busy | OUTPUT | BOOL | 状态：忙
SMS_init_done | OUTPUT | BOOL | 状态：完成
SMS_init_aborted | OUTPUT | BOOL | 状态：放弃
SMS_init_ststus | OUTPUT | WORD | 状态代码

正常初始化完成后，状态代码SMS_init_ststus=15。如果SMS_init_aborted=True，则要根据SMS_init_status检查错误。

数值 | SMS_init_ststus
1 | 初始化端口
2 | 关闭回显
3 | 关闭回显成功
4 | 关闭回显失败
5 | 查询PIN码状态
6 | PIN码OK
7 | 需要设置PIN码
8 | 设置PIN码
9 | PIN码设置成功
10 | PIN码设置失败
11 | 设置短消息模式
12 | 短消息模式设置成功
13 | 短消息模式设置失败
14 | 输入短消息服务中心号码
15 | 短消息服务中心号码输入成功
16 | 短消息服务中心号码输入失败
17 | 关闭回显成功，但需将波特率设置成9600kbps
18 | 设置MD720波特率为9600kbps
19 | 设置MD720波特率为9600kbps成功
20 | 设置MD720波特率为9600kbps失败
21 | 初始化超时

2. 发送/SMS_send

引脚 | 类型 | 数据类型 | 说明
EN | INPUT | BOOL | 使能端，通常为SM0.0
SMS_send_start | INPUT | BOOL | 发送使能，沿触发
SMS_send_tn | INPUT | DWORD | TXT模式为目的手机号码，PDU模式为消息长度，输入为字符串
SMS_send_msg | INPUT | DWORD | 发送的内容，输入为字符串，不超过160个字符
SMS_send_busy | OUTPUT | BOOL | 发送中
SMS_send_done | OUTPUT | BOOL | 发送完成
SMS_send_aborted | OUTPUT | BOOL | 发送错误
SMS_send_status | OUTPUT | WORD | 发送状态

正常发送完成后，状态代码SMS_send_status=6。 如果SMS_send_aborted=True，则要根据SMS_send_status检查错误。

数值 | SMS_send_status
1 | 初始化
2 | 发送手机号码或长度中
3 | 发送手机号码或长度成功
4 | 发送手机号码或长度失败
5 | 发送消息中
6 | 发送消息成功
7 | 发送消息失败
8 | 发送超时

发短消息有两种模式，TXT模式和PDU模式：

1. TXT模式（默认）

SMS_send_tn为接收短消息的手机号码。
SMS_send_msg为短消息内容，只能发送有ASCII码的字符（英文字母、数字、部分标点符号），字符个数不超过160。

2. PDU模式

该模式可以发送中文短消息。

SMS_send_tn为短消息字节长度。
SMS_send_msg为短消息内容。可以发送任意有unicode码的字符，字符个数不超过35。

不过需要自行修改库文件，该库程序的密码是1234，打开库后，做如图7和图8的修改：

SMS_init:

图7 初始化块修改

SMS_send：

图8 发送块修改

例子：发送“温度：1.3℃”到指定手机号码“18912345678”，需要编辑SMS_send_msg为：
00 01 00 0D 91 688119325476F8 00 08 0E 6E295EA6FF1A0031002E00332103
00：SCA长度，不计入短消息长度
01：TPDU类型
00：消息基准值MR
0D：号码长度（8618912345678）
91：国际号码
688119325476F8：两两颠倒的8618912345678F，最后一位补F
00：协议标识PID
08：数据编码方案UCS-2
0E：信息长度（十六进制），即后面6E295EA6FF1A0031002E00332103所需字节数14的十六进制表示
6E295EA6FF1A0031002E00332103：“温度：1.3℃”的unicode码
SMS_send_tn：不算开始的SCA长度，一共56个字符，除以2即SMS_send_tn=28

3. 接收/SMS_receive

引脚 | 类型 | 数据类型 | 说明
EN | INPUT | BOOL | 使能端，通常为SM0.0
SMS_rcv_start | INPUT | BOOL | 接收使能，沿触发
SMS_rcv_msg | INPUT | DWORD | 接收缓冲区的地址，接收的短消息从起始地址+15开始，输入为指针
SMS_rcv_busy | OUTPUT | BOOL | 接收中
SMS_rcv_done | OUTPUT | BOOL | 接收完成
SMS_rcv_aborted | OUTPUT | BOOL | 接收错误
SMS_rcv_status | OUTPUT | WORD | 接收状态

正常接收完成后，状态代码SMS_rcv_status=4或者7。如果SMS_rcv_aborted =True，则要根据SMS_rcv_status检查错误。

注意：SMS_rcv_msg指向的区域最长可能需占用指针开始后的255个字节，所以为使短消息收发正常，请在编写其他程序时避开这段区域。

数值 | SMS_rcv_status
1 | 初始化
2 | 接收短消息中
3 | 接收短消息成功
4 | 没有短消息
5 | 提取SIM卡内最远短消息的编号
6 | 删除SIM卡内最远的短消息
7 | 删除SIM卡内最远的短消息成功即收到新的短消息
8 | 删除SIM卡内最远的短消息失败
9 | 接收短消息超时

短消息的接收过程是检查SIM卡中有没有短消息，如果有则从SIM卡中读取最远的消息到接收缓冲区，之后提取最远的消息编号，然后将该条消息删除，完成一次接收，如果SIM卡中没有短消息，则直接完成一次接收。也就是说即使不触发SMS_rcv_start，短消息照常接收到SIM卡中，只是不读取到接收缓冲区。
接收短消息通常用于查询S7-200 SMART的实时数据，或者对其进行远程控制，但一般不建议远程控制，毕竟无人值守的控制非常危险。
如果需要接收短消息，则通常定时触发SMS_rcv_start。建议即使不使用接收短消息功能，也间隔2、3分钟触发一次SMS_rcv_start，用以删除SIM卡接收到的垃圾短消息。

S7-200 SMART通过MD720收发短消息例程

如图9所示，需要以下配置可以实现S7-200 SMART通过MD720收发短消息。

图9 MD720接收短消息配置

远程：

1. S7-200 SMART CPU，型号不限（例子中使用ST30）

2. MD720+联通/移动 SIM卡（例子中使用天津移动SIM卡139XXXXXXXX）

3. 连接在MD720上的天线（例子中使用ANT794-4MR）

4. MD720与S7-200 SMART CPU之间的连接电缆（例子中使用S7-200的编程电缆）

手机端：没有限制。（例子中使用北京电信SIM卡189XXXXXXXX）

1.TXT模式，收发英文短消息

步骤如下：

（1）S7-200 SMART CPU编写程序（例子中使用Set5_S7-200-library_P0库），参见图10。

库存储区分配为VB0～VB227

图10 MD720程序

（2）数据块，参见图11

图11 数据块

（3）手机收到的短消息，参见图12

图12 手机接收到的短消息

（4）手机发送的短消息，参见图13

图13 手机端发送短消息

S7-200 SMART接收，参见图14：

图14 S7-200 SMART收到的短消息

从图中可知，虽然SMS_rcv_msg从VB800开始，但实际接收到的短消息从VB815开始，其中包含短消息来源电话号码，接收时间，以及内容等，如果需要使用短消息内容，需要使用S7-200 SMART的字符串处理的指令查找、提取。

2. PDU模式，发中文短消息

步骤如下：

（1）S7-200 SMART CPU编写程序（例子中使用Set5_S7-200-library_P0库）

库存储区分配为VB0～VB227，程序参见图10，需如前述修改库程序。

（2）数据块，参见图15

图15 数据块

（3）手机收到的短消息，参见图16

图16 手机接收到的短消息

常见问题

1. MD720如何恢复出厂设置？

答：使用曲别针、工字钉等按下SET按钮超过4s，3个指示灯开始循环闪烁，此时MD720正在恢复出厂设置。

2. 为什么使用MD720发送短消息总是初始化超时？

答：可以做以下检查工作：

（1） MD720指示灯是否正常（CONNECT灯有规律的闪烁，QUALITY灯最好常亮或者闪烁的频繁）

（2） 程序中PIN码是否设置正确

（3） 程序中短消息服务中心号码是否设置正确

（4） 程序中是否有地址冲突，库存储区、SMS_rcv_msg等容易出问题

（5） SMS_receive是否SM0.0调用

（6） MD720和S7-200 SMART电缆是否连接正常，拨码是否正确

（7） 短消息库与所接的集成口/CM01是否匹配

（8） 检查SIM卡的安装。

以上都无法解决的话，建议MD720恢复出厂设置，只使用收发短消息的程序重新下载测试。

3. 如何通过电脑RS232串口连接MD720，使用AT指令控制MD720？

答：可以使用西门子电缆6NH7701-4AL连接，也可以如图17所示自行制作。

图17 电缆连接

连接前建议将MD720恢复出厂设置。

电脑上的软件可以使用各类串口调试工具，波特率选择19200bps，无校验，数据位8位，停止位1位。

发送指令需要在最后附加CR（回车键）。AT指令需要使得输入为字符输入而不是十六进制输入。

4. MD720-3和MD720有什么区别？

答：MD720-3和MD720区别如下：

AT指令/功能 | MD720-3 | MD720
MSC/MSC SEC | 只支持MSC协议 | 支持MSC协议与MSC SEC协议
短消息中的"_" | 支持 | "_"将转化为水平制表符
AT+CMGD=1,4 | 删除所有短消息 | 该指令不支持
AT+CMGR=<index> | 如果SIM卡的<index>没有短消息，则响应为+CMGR:ERROR | 如果SIM卡的<index>没有短消息，则响应为+CMGR:0,,0
AT+CPMS="ME","ME","ME" | 可以这样分配 | 固件版本<V2.1：MD720返回错误消息。 固件版本=V2.1 AT+CPMS="ME","ME","ME"等价于AT+CPMS="ME","ME","MT"；接收到短消息保存在SIM卡，当卡存储器满了以后，接收到的短消息保存在设备中而不是删除。

5. 5米天线电缆不够长怎么办？

答：西门子没有专用的天线延长电缆，因此只能使用第三方带SMA接头的天线。但是西门子不建议这样去做，因为这样会显著抑制信号。


TD 400C

TD 400C 是一种能够与 S7-200 SMART CPU 进行通信的文本显示器。TD 400C 具有极高的性价比，价格极具竞争力。随机附赠通讯电缆（2.5m），无需单独购买通讯和电源电缆（TD 的电源可以通过通讯电缆从 S7-200 SMART PLC 通讯口取得）。 TD 400C 无需 HMI 专用组态软件，使用 STEP7 Micro/WIN SMART TD 文本显示器向导组态即可。

TD 400C 技术参数

表1. TD 400C 技术参数

 |  | TD 400 C
显示屏尺寸 |  | 4”
中文字符 |  | 小字体 4行 X 12列 大字体 2行 X 8 列
背光 |  | 蓝色
分辩率 |  | 192 X 64
背光亮度 |  | 350 cd/cm2
按键 |  | 15个，所有按键可自由定义功能
按键声音反溃 |  | 有
组态软件 |  | STEP7 Micro/WIN V4.0 SP4 以上版中文界面, STEP7 Micro/WIN SMART
通讯 |  | RS 485 PPI 通讯，最高 187.5kb/s
软件功能 |  | 屏幕保护
 |  | 密码保护
 |  | 位图库
 |  | 报警最多 80 条
 |  | 画面最多 64 个
PLC |  | S7-200，S7-200 CN，S7-200 SMART
电源 | 电压范围 | 15VDC－30VDC
 | 工作电流 | 120 mA
防护等级 |  | IP65前面板，IP20背板
外形尺寸 | 前面板尺寸 宽 X高 | 174 mm X 102 mm
 | 开口尺寸 宽X高X深 | 163.5 mm X 93.5 mm X 31mm
重量 |  | 0.33 kg
环境温度 | 工作 | 0 到 +50°C
 | 运输/储存 | -20 到 +60°C
最大相对湿度 | 工作 | 5％－85％（30 度），无凝露
 | 运输/储存 | 5％－85％（40 度），无凝露

TD 400C 包装内容

TD 400C 的完整包装中包括如下产品和附件

  • TD 400C 本体，无面板，粘胶膜由保护纸覆盖
  • 西门子 TD 400C 的标准面板胶膜
  • TD/CPU 通信电缆 x1 2.5m
  • 密封垫圈
  • 安装垫片
  • 硬件说明书，上有安装说明

自定义 TD 400C 的面板图形

TD 400C 可以更换操作面板的图形（包括背景和按钮等元素）。TD 400C 出厂时没有粘贴薄膜图形面板，其空白胶粘面用纸保护。用户可以选择使用随包装提供的 TD 400C 缺省图形，也可以自己制作自定义面板。自定义面板图形可以使用任何第三方的图形编辑软件。

TD400C配置步骤

根据不同的具体应用要求，TD 400C 的配置步骤也有所不同。一般地，TD 400C 的配置可能包括以下几个步骤：

  1. 进行 TD 400C 的基本配置
  2. 配置用户菜单（可选）
  3. 配置报警信息（可选）
  4. 完成 TD 400C 向导配置

常问问题

TD 400C 是否可以用在 S7-400/300 上？

TD 400C 是 S7-200，S7-200 SMART 专用的文本显示器，只能配合 S7-200 CN 和 SIMATIC S7-200 以及 S7-200 SMART 产品使用。TD 400C 不能用于其他任何控制器。

TD 400C 对面板透明胶膜的材料有无要求？

没有，但是应该注意材料透光度和厚度，厚度太薄则强度差，透光度太差则会影响整体亮度。

TD 400C 面板粘胶的储存时间多长？

常温下可以保存一年。

TD 400C 的粘胶强度如何？

TD 400C 采用美国 3M 高强度粘胶，粘贴标准胶膜后完全通过 IP65 测试。

在粘贴胶膜后严禁撕下胶膜，否则将损坏键盘电路。


TD 400C 向导配置

TD 400C 的所有配置信息都存储在 Data Block 中，下载到CPU中供文本显示器读取。用户可以通过从 CPU 中上载得到 TD 400C 完整的程序，并可直接应用到其它完全相同的项目中。

TD 400C 基本配置

  1. 在STEP 7 - Micro/WIN SMART 中点击 “工具”-> "文本显示"，或者在左侧树形目录中点击“向导”->“文本显示”，打开文本显示向导对话框，如图1所示。

    图1. 启动文本显示向导

  2. 选择需要组态的文本显示器号。向导提供5个文本显示器的组态。

    图2. 选择 TD

  3. 为 TD 命名，如图3所示：

    图3. 为文本显示器命名

  4. 选择文本显示器型号。

    图 4.选择文本显示器型号

  5. 设定语言及字符集。

    图 5.TD 400C 语言及字符集定义

    a. 设定菜单及提示语言
    这里设定的TD 400C 本身的系统菜单等界面显示语言。

    b.设定用户定义信息的字符集
    在这里设置用户菜单、报警消息的语言字符集。如果想显示汉语消息，必须在这里设置汉字字符集（也是缺省设置）

  6. 选择及定义TD的功能。

    图 6.TD 400C 功能定义

    a.使能密码保护功能，设置的密码为 4 个数字，不能设为字符。此密码用来防止未经许可的对 TD 400C 系统菜单的操作，以免随意改变地址、通信速率等设置。设置密码后对TD400C的操作和报警确认不受影响。
    b.使能 TD 400C 上对 PLC 中时间的设置功能。
    c.使能 TD 400C 上对 PLC 中 I/O 点强制功能。
    d.使能＂存储卡编程＂菜单，用户可使用此功能将 PLC 中程序拷贝到外插在 PLC 上的存储卡中。
    e.允许改变 PLC 模式，使能此功能后，用户可以利用 TD 400C 启动或停止 PLC。
    f. 使能编辑 PLC 存储区功能，使能此功能后，用户可以利用 TD 400C 修改 PLC 的 V 存储区的数据。

  7. 设置数据更新速率。

    图 7.设置数据更新速率

    选择 TD 400C 轮循 PLC 的数据及报警的更新时间。

  8. 配置键盘按键。

    图 8.配置键盘按键

    a. 加上SHIFT组合键功能，TD 400C 上可提供16个系统功能键直接控制PLC中的数据位。每一个键都可以设置成置位或瞬时接通功能。

    注意：TD 400C 不需要用户为功能键(F1-F8)分配地址，向导将自动为其分配V区的地址。如果用户重新修改了向导，可能会引起已分配的功能键地址的改变，用户在逻辑编程时需加以注意。

    TD 400C 上 的功能键的地址（及其符号名）可以在 Micro/WIN SMART 相关的符号表标签（如 TD_SYM_x ）中查看。

    b. 按下按键时在 TD 400C 显示屏上显示响应标志，便于用户确认按键操作。

    以下为向导生成的符号表TD_SYM_0。

下一步：配置用户菜单


TD 400C 配置用户菜单

配置用户菜单（可选）

  1. 定义用户菜单。

    图 1.定义用户菜单。

    通过点击 “添加” 按钮可以添加用户菜单，最多可定义 8 个菜单，每个菜单下可定义 8 个信息画面，总共 64 个信息画面。

    注意：

    • 使用菜单功能，并不需要 S7-200 SMART 中的程序逻辑，只需使用 TD 面板上的上下箭头即可访问不同的菜单及画面
    • S7-200 SMART 中的程序也无法控制某个菜单屏幕的显示
  2. 添加信息画面。

    图 2.添加信息画面

    通过点击 “添加” 按钮可以为每个菜单添加信息画面，每个菜单下最多可定义 8 个信息画面。

  3. 编辑信息画面。

    图 3.编辑信息画面

    a.选择字体。
    可以为显示屏幕选择 “大” 或 “小” 两种字体 ，根据选择的字体不同可以显示不同行数的字体：

    • 4 行 （全部选用小字体）
    • 2 行 （全部选用大字体）
    • 3 行 （1 行大字体和 2 行小字体）
    b.点击 “ 插入 CPU 数据 ” 按钮，嵌入并定义 PLC 数据

    c.选中此选项后，本屏幕可作为默认显示画面。默认画面将在 CPU 上电后，或者使用 ESC 键退回到初始画面时显示。

    如果 TD 使用菜单模式为默认显示模式，正常运行时画面将停留在操作人员选择的页面，而不会自动回到默认画面。

  4. 嵌入并定义数据。当在步骤3中点击 “插入 CPU 数据” 时，会出现如图 4所示的对话框。

    图 13. 定义嵌入数据

    a. 输入PLC数据单元地址

    • TD 400C 中只能嵌入V存储区的数据，嵌入的数据可以是VB、VW、VD
    • 此地址一旦设定不会因为其在信息中的位置的改变而改变

    b. 定义 TD 嵌入数据的类型
    • VB（数字字符串、字符串）
    • VW（有符号数、无符号数）
    • VD（有符号数、无符号数、实数即浮点数）

    c. 指定显示几位小数
    • 即便是实数，如果指定显示小数位数为 “0” 也无法显示小数部分。
    • 对于整数，如果指定小数位数，在显示时看起来就是小数，而PLC内部当作整数来处理，相当于输入数据的若干个 10 倍数。这实际上是定点数。

    d.使能数据编辑功能，即可以修改数据。

注：在TD 400C 上修改完数据必须按 “ENTER” 键确认后，改变的数值才能生效，并被写入 CPU 中。

e. 使能数据编辑的密码保护功能，即在编辑该数据前必须先输入正确的密码

  • 使用此功能必须在 TD400C 基本配置 中第6步a项：使能系统的密码保护功能
  • 编辑数据的密码与系统密码相同

f.当切换到该画面后，该数据自动激活编辑状态，用户可以立即修改

g.数据编辑通知位的符号名（可在符号表中找到其地址）

每一数据都有一个对应的数据编辑通知位，该位在用户对此数据进行编辑后（编辑用 ENTER 键结束），会自动置位为 1，且不会自动复位。用户可根据此位改变来编程实现一些动作，并且编程将其复位，以便以后继续识别该位的改变。

下一步：配置报警信息


TD 400C 配置报警信息

配置报警信息（可选）

TD 400C 可以配置成使用用户菜单形式，或者报警消息形式，或者同时使用这两种显示模式。TD 400C 最多支持 80 条报警信息。

报警信息模式可以由用户程序控制它的显示与否。

  • 定义报警信息。

    图 1.定义报警信息

    a. 选择报警信息的长度。TD 400C 支持三种长度的报警信息，用户可以自己定义：

    • 单行文本：根据使用的字体，最多可同时显示4条报警信息。
    • 双行文本：根据使用的字体，最多可同时显示2条报警信息。
    • 全屏文本：每次显示一条报警信息。

b. 选择 TD 400C 的默认显示模式。这是 TD 400C 上电后开始工作时进入的显示模式。

    • 用户屏幕：即用户菜单模式优先
    • 报警信息：报警显示信息优先

如果有多个报警消息同时触发，停留在一个报警画面中不进行任何操作，TD 会在 10 秒种后回到优先级最高的报警显示画面。如果TD 400C不在缺省显示状态，在用户没有任何操作后，延时一分钟，TD 400C 会自动回到缺省设置的显示模式。

如果 TD 400C 的配置中既有菜单，也有报警，用户也可以使用 TD 400C 的系统菜单，在默认显示模式和次要显示模式之间切换。在默认的菜单显示模式下，如果有报警信息需要显示，在菜单画面上会出现提示符号，而不会直接显示相关的报警信息；在默认的报警显示模式下，报警信息得到优先显示。因此如果由用户程序控制其显示的消息对于工艺操作很重要的话，建议把报警信息模式设置为缺省。

c. 通过点击“添加”按钮，添加新的报警画面。

  • 配置报警画面

    图 2.配置报警画面

    a.输入报警文本及嵌入数据。

    b.当前报警的名字。

    c.选择报警需要确认。

    如果报警需要确认，则显示的报警画面在报警使能条件清除后，按“ENTER”键确认后，此报警画面才能消失，用户才能接着翻看其它报警画面。需要确认的报警画面，如果报警条件未清除，报警是不能用“ENTER”键确认掉的，虽然此时报警确认位已经置1。

    d.此处定义了报警的确认位，当报警被确认后，此位被置位。如果报警未被确认，即使触发报警的条件已经复位，正在显示的报警画面还会继续闪烁。报警确认位一旦置1，不会自己复位，用户如果想用此位，必须自己在程序中根据条件复位。

    注：报警的确认：    需要确认的报警，必须在报警画面中按“ENTER”键确认；普通报警将在触发条件消失后自动清除。

    e.点击此按键嵌入数据，数据定义方法与菜单画面中嵌入数据相同，而且嵌入数据的地址一旦设定不会因为其在信息中的位置的改变而改变。

  • 编程，根据逻辑条件触发报警。

    使用文本显示向导生成的子程序来激活报警消息显示。调用子程序的方法如下图所示，用鼠标双击该子程序或将其拖到相应位置。

    图 3.子程序位置

    图 4.报警编程

    在上图中：

    1. 条件激活报警使TD 400C显示该报警画面

    2. 选择报警使能位，即决定了激活哪个报警。Micro/WIN SMART 缺省情况下使用符号寻址，报警控制位的符号地址可以手工输入，也可以点击鼠标右键，使用快捷菜单中的“符号表”命令，选择要激活的报警使能位。当然也可以直接输入绝对地址（绝对地址在Micro/WIN的“符号表”中可以查到）。

    3. 使用SM0.0调用TD_CTRL_x子程序。此子程序的主要功能是处理报警信息等的显示，只能在（主）程序中调用一次。

      应该注意此子程序调用与报警触发程序的相对位置。为保持报警功能正常运行，应在所有报警触发程序调用之前调用此子程序。如果希望“记忆”关键的报警信息，应把它配置为“需确认”的报警，则不会随触发条件的消失而自动不显示。

下一步：完成 TD 400C 向导配置


完成向导配置

  1. 分配存储区

    图 1.分配数据存储区

    a. 分配向导所使用的V存储区地址

    • 在画面上方会根据用户的配置显示所需的不同的 V 存储区的大小。用户的配置不同，所需的存储区大小也不同。
    • 用户可以自己分配一个程序中未用过的 V 存储区，也可以点击“建议地址”按钮让向导自动分配一个程序中未用过的 V 存储区地址。
    • 为不同的 TD 400C 设置不同的参数块地址，允许你将多个 TD 400C 连接到同一 CPU 上（它们显示和控制的内容不同）。

    注意：TD 400C 硬件设置中的参数块地址必须与此处起始地址设置一致，否侧 TD 400C 会报 “无参数块” 的错误。

  2. 结束配置。

    图 2.结束文本显示器配置

    点击 “生成” 按钮生成各项目元素（子程序、符号表、数据块分页等）。


TD 400C 基本设置和操作

TD 400C 的设置及操作

TD 400C 连接 S7-200 SMART 时，显示屏上可以显示：

  • 用户定义的菜单、报警消息
  • TD 400C 功能菜单

访问 TD 400C 中的菜单及功能菜单，主要应用“ESC” “ENTER” 及上下箭头按键来实现

ENTER 键：选择菜单，确认数据编辑，确认报警

ESC 键： 退出当前菜单或取消当前选项

上箭头键：向上翻看菜单或编辑数值时向上增加数值

下箭头键：向下翻看菜单或编辑数值时向下减少数值

TD 400C 的必要设置

在 STEP 7 - Micro/WIN 中使用 TD 向导完成 TD 400C 的组态后，将TD 400C 与 S7-200 SMART 连接，为使 TD 400C 能与 S7-200 SMART 正常通讯及工作，必须完成 TD 400C 设置：

通过进入 TD 400C 的 "诊断菜单 > TD400C 设置" 进入以下菜单进行参数设置

必要设置：

  • TD 400C ADDRESS（TD 400C地址）：用上下键为 TD 400C 设定地址，该地址在网上必须是唯一的，不能与网上其它CPU或 TD 设备地址重复。缺省地址为1。
  • CPU ADDRESS（CPU地址）：设定TD 400C 所连接CPU的地址。必须与所连CPU的地址一致，否则会造成 “CPU无响应” 。缺省地址为 2。
  • PARM BLOCK ADDRESS（参数块地址）：设定参数块起始地址，要与CPU向导中设定的参数块起始地址一致（文本显示向导配置中最后一步：分配存储区）。如果这里的地址设置不对，会引起无参数块错误或乱码及数据错误。缺省设置地址为VB0。

    图 1. Micro/WIN SMART 中文本显示向导配置之一步骤
  1. TD 中设置的参数块地址必须与上面向导中配置的存储区首地址对应。
  2. 如果上面的存储区首地址改为 VB512，则 TD 中的参数块地址也可以改为 512。

    为不同的 TD 400C 设置不同的参数块地址，允许你将多个不同的 TD 400C 连接到同一 CPU 上。
  • 波特率：设定通信波特率，必须与CPU的波特率一致，否则会通信不上，造成“CPU无响应” 。缺省波特率为9.6k。

需要时设置：

  • 最高站地址(HSA)：设定最高站地址，这个站地址告诉 TD 400C 在寻找其它主站时检查哪些地址。默认最高站地址为 31，即 TD 400C 会搜索 0－31 的地址。除非网路中的站数超过 31 个，否则不必改变

    波特率为 9600 波特或 19.2 K 波特时，可能需要提高最高站地址（即使网络包含的主站不超过 32 个）。 提高最高站地址将使主站有更多的时间发送消息。
  • 间隙系数(GUF)： 用于设定 TD 400C 查询其它网络主站的频率。缺省设置为 10，即每 10 个令牌检查一次其它主站。如果设置为 1，表示每一个令牌查询一次。
  • 键盘蜂鸣器 : 在按键时提供音频反馈。

  • 显示背光灯 : 允许用户选择背光灯开启的时间。缺省设置为 10 分钟。

TD 400C 上的显示背光灯

TD 400C 允许设置显示背光灯的开启时间

以下情况将开启背光灯：

  • 接通 TD400C 的电源。
  • S7-200 SMART CPU 通过 TD 参数块中的 TD_Reset 位强制复位 TD400C。
  • 每按一次按键，背光灯的开启时间都会延长。
  • 读到 S7-200 SMART CPU 中新的报警。

设置 TD 400C 的背光灯

可以按接通时间来设置 TD400C 的显示背光灯：

  • 至 59 分钟，每次增加 1 分钟（默认的接通时间为 10 分钟）
  • 1 小时、2 小时、4 小时和 8 小时
  • 总在开启状态

背光灯的操作注意事项：

  • 开启显示背光灯时，灯光会持续一段时间，该时间可以在 TD 设置菜单中进行组态。
  • 如果当前背光灯是关闭状态并按任一按键，则第一次按键动作将开启背光灯而不会执行该按键的功能。 要执行该按键的功能，必须再按一次按键。
  • 如果 TD400C 中有需要确认的报警（报警信息闪烁）同时该报警已激活，则仅在确认该报警时才开启显示背光灯。
  • 可以通过在不需要显示的时候关闭背光灯，来延长 TD400C 的使用寿命。


与RS485接口的西门子触摸屏的通信

SMART面板概述

SMART面板分为第一代产品SMART LINE和第二代产品SMART LINE IE，第一代产品无以太网口，包括Smart 700和Smart 1000；第二代产品集成了以太网口，包括Smart 700 IE和Smart 1000 IE，目前在售的为第二代SMART LINE IE系列，第一代产品已经停产。

SmartLine IE与第一代SmartLine相比较主要有以下优点：

  • 64K真彩显示，比较第一代的256色提升了多倍。
  • 增加了工业以太网接口（支持自交叉功能）。通过该以太网口可以连接S7-200 SMART和LOGO! 0BA7设备，并且可同时连接多台控制器（最多3台）。
  • 扩展了串口通信的功能。

连接数目

S7-200 SMART CPU既可以通过本体集成的RS485端口或信号板连接支持PPI协议的西门子HMI设备，还可以通过本体集成的以太网口来连接支持S7协议的西门子HMI设备。

当CPU的三个物理接口同时连接西门子HMI设备时（包含信号板），最多的连接资源数是16个。

表1. CPU的连接能力

通信口 | 连接TD400C个数 | 连接RS485接口的西门子触摸屏个数 | 连接以太网接口的西门子触摸屏个数
本体集成RS485接口 | 4 | 4 | 0
信号板RS232/RS485接口 | 4 | 4 | 0
以太网口 | 0 | 0 | 8

Smart Panels 支持的 PLC：

第一代产品 SmartLine（无以太网接口）:S7-200、OMRON CP1系列、三菱 FX 系列、Modbus RTU
注意：只能建一个通讯连接，否则Smart Panels 无法启动项目（白屏）。

第二代产品SmartLine-IE:
串口：S7-200、OMRON CP1系列、三菱 FX 系列、Modbus RTU、台达（DVP-SV/ES2 系列）
以太网：S7-200（CP243-1）、Smart200、LOGO!

Smart Panels 通过串口只能连接一个设备，通过以太网可以连接三个设备，但是串口和以太网不能同时使用（编译通不过）。

注意：串口和以太网口只能使用一个，否则编译通不过。

创建项目

用户需要使用WinCC Flexible 2008 SP2 China或以上版本来组态第一代产品SmartLine，如果是第二代产品SmartLine IE的话，只能使用WinCC Flexible 2008 SP4 China进行组态。

用户既可以在WinCC Flexible中直接创建项目，也可以使用向导创建。下文主要介绍如何直接创建项目。

双击PC桌面的SIMATIC WinCC flexible图标可以启动WinCC flexible，在启动画面中选择“创建一个空项目”，如图1 所示。鼠标左键单击“创建一个空项目”后，打开如图2所示的“设备选择”界面。在该界面选择所使用的设备，在此以Smart 1000 IE为例。

图1. 直接创建项目

图2. 设备选择

配置通信连接

用户通过以下步骤可配置Smart 1000 IE与S7-200 SMART CPU的PPI通信。

第一步：在WinCC flexible的主工作窗口中，展开左侧树形项目结构，选择“项目”>“通讯”>“连接”，双击“连接”图标以打开“连接设置”的属性窗口。如图3所示。

图3. 打开连接窗口

第二步：在“连接”窗口中双击名称下方的空白表格，或者右击鼠标选择快捷菜单中的“添加连接”可以添加与CPU的连接。如图4所示。

图4. 添加连接

第三步：添加连接后，根据项目需求用户可以修改默认的连接名称“连接_x”，并选择“通讯驱动程序”和是否在线。由于连接的设备是S7-200 SMART CPU，所以在“通讯驱动程序”下方的下拉菜单处选择“SIAMTIC S7 200 SMART”作为通讯驱动程序，同时激活在线连接。如图5所示。

图5. 配置连接

第四步：设置连接参数。首先选择Smart 1000 IE的接口为“IF1 B”，即触摸屏的RS422/485物理接口。选中该接口后，该接口的参数设置窗口将在其下方自动显示。设置触摸屏的通信波特率为187500，站地址为1。

接着在“网络”窗口选择“PPI”为通信双方的通信协议。

最后在“PLC设备”窗口设置CPU的站地址，此处设置CPU的站地址为2，如图5所示。

图6. 连接参数设置

注意：CPU的地址必须不同于HMI设备的地址，二者不能重复。

第五步：设置S7-200 SMART CPU的波特率和站地址。在STEP 7 Micro/WIN SMART软件的项目树中选择“系统块”，然后按“回车”键，即可打开如图7所示的“系统块”窗口。为CPU的RS485端口设置的站地址和波特率必须与图6的配置保持一致，CPU的站地址为2，通信波特率为187.5 kbps。

图7. S7-200 SMART通信口设置

至此已经配置完成了Smart 1000 IE与S7-200 SMART CPU的PPI通信。

启动操作画面

给Smart 1000 IE设备上电时屏幕会短暂出现启动画面，如图8所示。图中的三个按钮代表的含义如下。

  • Transfer：HMI设备设置为“传送”模式。
  • Start：启动装载在HMI设备上的项目。
  • Control Panel：点击该按钮后进入HMI设备的控制面板，用户在控制面板可以选择传输模式，添加密码等。

图8. 启动画面

下载项目文件

要将配置好的项目下载到Smart 1000 IE设备上，首先要保证HMI设备的通信口处于激活状态，可通过HMI设备的“Control Panel”>“Transfer”进行设置，如图9所示。如果选择串口方式下载项目，首先需要勾选“Serial”右侧的“Enable Channel”。

图9. 通信口使能

其次，要使用Siemens原装的PPI编程电缆下载项目，RS-232/PPI电缆（订货号6ES7 901-3CB30-0XA0）和USB/PPI电缆（订货号6ES7 901-3DB30-0XA0）都可以。当使用的电缆是USB/PPI时，要求其E-STAND版本是05或更高版本。

接着在WinCC flexible 软件的菜单栏选择“项目”>“传送”>“传输”，如图10 所示。单击“传输”即可打开“选择设备进行传送”窗口，如图11所示。在“选择设备进行传送”窗口，用户可以选择传输模式为“串行”或“串口（通过USB-PPI电缆）”，在此选择后者进行传输。

图10. 打开传输设置

图11. 传输设置

给Smart 1000 IE设备断电再上电后，HMI设备将会出现启动画面，单击Transfer按钮，使HMI设备处于“传送”模式。

接着在WinCC flexible软件中选择“项目”>“传送”>“传输”，单击图11中的“传送”按钮，待HMI设备中的传送状态显示为“传输完成”时，至此已成功通过串口模式将项目传送到HMI设备。


与RJ45接口的西门子触摸屏的通信

与以太网接口的西门子触摸屏的通信

配置通信连接

用户通过以下步骤可创建以太网接口的西门子触摸屏与S7-200 SMART CPU的以太网通信，在此以设备Smart 1000 IE为例。

在WinCC flexible的主工作窗口中添加与CPU的连接与上文中RS485接口的西门子触摸屏类似，在此不再赘述。下面主要介绍连接参数设置及下载项目等。

设置连接参数，首先选择Smart 1000 IE的接口为“以太网”，即触摸屏的以太网接口。选中该接口后，该接口的参数设置窗口将在其下方自动显示。设置触摸屏的IP地址为192.168.2.5，该IP地址必须与Smart 1000 IE设备的IP地址相同。 在“PLC设备”窗口设置CPU的IP地址，此处设置CPU的 IP地址为192.168.2.1，如图1所示。

注意：为Smart 1000 IE设置的IP地址必须不同于CPU的IP地址，二者不能重复。

图1. 设置通信参数

连接参数设置完成之后还需设置Smart 1000 IE设备的IP地址。在触摸屏的“Transfer Settings”界面单击左下角的“Advanced”按钮，在“Ethernet Settings”对话框中输入Smart 1000 IE的IP地址192.168.2.5及子网掩码。输入完成后单击对话框右上角的“OK”按钮保存设置，如图2所示。

图2. Smart 1000 IE的IP地址

下载项目文件

要将配置好的项目下载到Smart 1000 IE设备上，需要保证HMI设备的通信口处于激活状态，可通过HMI设备的“Control Panel”>“Transfer”进行设置。选择以太网方式下载项目时，需要勾选“Ethernet”右侧的“Enable Channel”，如图3所示。

图3. 通信口使能

在WinCC flexible 软件的菜单栏选择“项目”>“传送”>“传输”，单击“传输”即可打开“选择设备进行传送”窗口，如图4所示。在“选择设备进行传送”窗口，选择传输模式为“以太网”，“计算机名或IP地址”处输入HMI设备的IP地址，参考上文在此设置IP地址为192.168.2.5。

图4. 传输设置

IP地址设置完成后，点击图4中的“传送”按钮，待传送状态显示为“传输完成”时，至此已成功通过以太网模式将项目传送到HMI设备。


PID常见问题

PID常见问题列表

1. PID向导生成的程序为何不执行？
2. 如何实现PID反作用调节？
3. 如何根据工艺要求有选择地投入PID功能？
4. 做完PID向导后，如何知道向导中设定值，过程值及PID等参数所用的地址？
5. PID已经调整合适，如何正式确定参数？
6. 对于某个具体的PID控制项目，是否可能事先得知比较合适的参数？有没有相关的经验数据？
7. PID控制不稳定怎么办？如何调试PID？
8. 没有采用积分控制时，为何反馈达不到给定？
9. S7-200 SMART控制变频器，在变频器也有PID控制功能时，应当使用谁的PID功能？
10. 做完PID向导后，能否查看PID生成的子程序，中断程序？
11. 指令块与向导使用的PID回路号是否可以重复？
12. 同一个程序里既使用PID指令块又使用向导，PID数目怎样计算？
13. PID指令块可以在主程序/子程序里调用吗？（PID指令块常见问题）
14. SMB34定时最大255ms，如果采样时间是1S怎样实现?（PID指令块常见问题）
15. PID指令块怎样实现手动调节？（PID指令块常见问题）
16. PID指令块实现数字量输出？（PID指令块常见问题）

PID常见问题

1. PID向导生成的程序为何不执行？

  • 必须保证用SM0.0无条件调用PID0_CTRL程序
  • 在程序的其它部分不要再使用SMB34定时中断，也不要对SMB34赋值
  • 确认当前工作状态：手动还是自动

    • 2. 如何实现PID反作用调节？

    在有些控制中需要PID反作用调节。例如：在夏天控制空调制冷时，若反馈温度（过程值）低于设定温度，需要关阀，减小输出控制（减少冷水流量等），这就是PID反作用调节（在PID正作用中若过程值小于设定值，则需要增大输出控制）。
    若想实现PID反作用调节，需要把PID回路的增益设为负数。对于增益为0的积分或微分控制来说，如果指定积分时间、微分时间为负值，则是反作用回路。

    3. 如何根据工艺要求有选择地投入PID功能？

    可使用"手动/自动"切换的功能。PID向导生成的PID功能块需要保证每个扫描周期都调用，所以建议在主程序内使用SM0.0调用。

    4. 做完PID向导后，如何知道向导中设定值，过程值及PID等参数所用的地址？

    • 做完PID向导后可在符号表 [image] 中，查看PID向导所生成的符号表(上例中为PID0_SYM)，可看到各参数所用的详细地址，及数值范围。
    • 在数据块 [image] 中，查看PID指令回路表的相关参数。如图所示：

    图15. PID数据块
    用户可以在状态表 [image] 中， 输入相应的参数地址，然后在线写入需要的PID参数数值，这样用户就可根据工艺需要随时对PID参数、设定值等进行调整。

    5. PID已经调整合适，如何正式确定参数？

    可以在数据块中直接写入参数，作为初始值使用。

    6. 对于某个具体的PID控制项目，是否可能事先得知比较合适的参数？有没有相关的经验数据？

    虽然有理论上计算PID参数的方法，但由于闭环调节的影响因素很多而不能全部在数学上精确地描述，计算出的数值往往没有什么实际意义。因此，除了实际调试获得参数外，没有什么可用的经验参数值存在。甚至对于两套看似一样的系统，都可能通过实际调试得到完全不同的参数值。

    7. PID控制不稳定怎么办？如何调试PID？

    闭环系统的调试，首先应当做开环测试。所谓开环，就是在PID调节器不投入工作的时候，观察：

    • 反馈通道的信号是否稳定
    • 输出通道是否动作正常
    可以试着给出一些比较保守的PID参数，比如放大倍数（增益）不要太大，可以小于1，积分时间不要太短，以免引起振荡。在这个基础上，可以直接投入运行观察反馈的波形变化。给出一个阶跃给定，观察系统的响应是最好的方法。
    如果反馈达到给定值之后，历经多次振荡才能稳定或者根本不稳定，应该考虑是否增益过大、积分时间过短；如果反馈迟迟不能跟随给定，上升速度很慢，应该考虑是否增益过小、积分时间过长……
    总之，PID参数的调试是一个综合的、互相影响的过程，实际调试过程中的多次尝试是非常重要的步骤，也是必须的。

    S7-200 SMART的新一代产品提供了自整定的PID细调功能。

    8. 没有采用积分控制时，为何反馈达不到给定？

    这是必然的。因为积分控制的作用在于消除纯比例调节系统固有的“静差”。没有积分控制的比例控制系统中，没有偏差就没有输出量，没有输出就不能维持反馈值与给定值相等。所以永远不能做到没有偏差。

    9. S7-200 SMART控制变频器，在变频器也有PID控制功能时，应当使用谁的PID功能？

    可以根据具体情况使用。一般来说，如果需要控制的变量直接与变频器直接有关，比如变频水泵控制水压等，可以优先考虑使用变频器的PID功能。

    10. 做完PID向导后，能否查看PID生成的子程序，中断程序？

    PID向导生成的子程序，中断程序用户是无法看到的，也不能对其进行修改。没有密码能够打开这些子程序，一般的应用也没有必要打开查看。

    11. 指令块与向导使用的PID回路号是否可以重复？

    不可以重复，使用PID向导时，对应回路的指令块也会调用，所以指令块与向导使用的PID回路号不能重复，否则会产生预想不到的结果。

    12. 同一个程序里既使用PID指令块又使用向导，PID数目怎样计算？

    使用PID向导时，对应回路的指令块也会调用，所以PID指令块与向导一共支持8个。

    13. PID指令块可以在主程序/子程序里调用吗？（PID指令块常见问题）

    可以，但是不推荐，主程序/子程序的循环时间每个周期都可能不同，不能保证精确的采样，建议用定时中断，例如SMB34/SMB35。

    14.SMB34定时最大255ms，如果采样时间是1S怎样实现?（PID指令块常见问题）

    采样时间是1S，要求PID指令块每隔1S调用一次。可以先做一个250ms的定时中断，然后编程累加判断每4次中断执行一次PID指令即可。

    15. PID指令块怎样实现手动调节？（PID指令块常见问题）

    可以简单地使用"调用/不调用"指令的方式控制自动/手动模式。不调用PID指令时，可以手动给输出地址0.0-1.0之间的实数。

    16. PID指令块实现数字量输出？（PID指令块常见问题）

    1.通过PWM指令，将PID输出值转换为所需时间基准的整数，送到PWM的Pulse，控制脉宽（该法简单易用，但是要求输出点只能是Q0.0或Q0.1）。
    2.自己编程实现类似于PWM的输出。（虽然不限制Q点，但编程较复杂，不建议使用，可以直接考虑用PID向导）。

    参考链接

    用PID指令向导进行PID编程
    PID自整定与PID调试面板
    PID 的自动/手动切换


电源需求与计算

S7-200 SMART 电源需求与计算

S7-200 SMART CPU模块提供5VDC和24VDC电源：

CPU有一个内部电源，用于为CPU、扩展模块、信号板提供电源和满足其他24 VDC用户电源需求。请使用以下信息作为指导，确定CPU可以为组态提供多少电能（或电流）。

请参见特定CPU的技术规范，确定24 VDC传感器电源功率预算，CPU提供的5 VDC 逻辑预算，以及扩展模块和信号板5 VDC功率要求。请参考计算功率预算来确定CPU可以为您的组态提供多少电能（或电流）。

CPU为系统中的所有扩展模块提供5 VDC逻辑电源。请特别注意系统配置，确保CPU可提供所选扩展模块要求的5 VDC电源。如果组态要求的电源超出CPU提供的电源范围，则必须拆下一些模块。

如果超出CPU功率预算，则可能无法连接CPU允许的最大数量模块。

CPU还提供了 24V传感器电源，该电源可以为输入点、扩展模块上的继电器线圈电源或其他需求提供24V电源。必须手动将不同电源的公共端（M）连接在一起。

如果需要外部24 VDC电源，则确保该电源未与CPU的传感器电源并联。为提高电气噪声保护能力，建议将不同电源的公共端（M）连接在一起。

将外部24 VDC电源与CPU的24 VDC传感器的电源并联会导致这两个电源之间有冲突，因为每个电源都试图建立自己首选的输出电压电平。该冲突可能导致一个电源或两个电源的寿命缩短或立即发生故障，从而导致PLC系统意外运行。意外运行可能导致人员 死亡、重伤或设备损坏。CPU的直流传感器电源和任何外部电源应给不同点供电。允许将多个公共端连接到一起。

S7-200 SMART 系统中的一些24 VDC电源输入端口是互连的，并且通过一个公共逻辑电路连接多个M端子。例如，在数据表中指定为“非隔离”时，以下电路是互连的：CPU的24 VDC、EM的继电器线圈的电源输入或非隔离模拟输入的电源。所有非隔离的M端必须连接到同一个外部参考电位。

将非隔离的M端子连接到不同参考电位将导致意外的电流，该电流可能导致PLC和任何连接设备损坏或允许不确定。不遵守这些准则可能会导致设备损坏或运行不确定，而后者可能导致死亡、人员重伤和财产损失。务必确保S7-200 SMART系统中的所有非隔离M端子都连接到同一个参考电位。

表1. S7-200 SMART CPU V1.0 版本供电能力

CPU型号 | 电流供应
 | +5 VDC | +24 VDC(传感器电源)
CPU SR20 | 740mA | 300mA
CPU ST40 | 740mA | 300mA
CPU SR40 | 740mA | 300mA
CPU CR40 | -- | 300mA
CPU ST60 | 740mA | 300mA
CPU SR60 | 740mA | 300mA

表2. S7-200 SMART CPU V2.0及以上版本供电能力

CPU型号 | 电流供应
 | +5 VDC | +24 VDC(传感器电源)
CPU SR20/ST20 | 1400mA | 300mA
CPU SR30/ST40 | 1400mA | 300mA
CPU SR60/ST60 | 1400mA | 300mA
CPU CR40/CR60 | -- | 300mA
CPU CR20/30/40/60 s | -- | --

表3. CPU上的数字量输入所消耗的电流

CPU上的数字量 | 电流需求
 | ＋5VDC | +24VDC
每点输入 | - | 4mA/每输入

表4. 数字扩展模块所消耗的电流

数字扩展模块型号 | 电流供应
 | +5 VDC | +24 VDC
EM DE08 | 105mA | 8*4mA
EM DT08 | 120mA | --
EM DR08 | 120mA | 8*11mA
EM DT16 | 145mA | 输入：8*4mA 输出：---------
EM DR16 | 145mA | 输入：8*4mA 输出：8*11mA
EM DT32 | 185mA | 输入：16*4mA 输出：---------
EM DR32 | 180mA | 输入：16*4mA 输出：16*11mA

表5.模拟扩展模块所消耗的电流

模拟扩展模块型号 | 电流供应
 | +5 VDC | +24 VDC
EM AE04 | 80mA | 40mA（无负载）
EM AE08 | 80mA | 70mA（无负载）
EM AQ02 | 60mA | 50mA（无负载）
EM AQ04 | 60mA | 75mA（无负载）
EM AM03 | 60mA | 30mA（无负载）
EM AM06 | 80mA | 60mA（无负载）

表6. RTD、TC扩展模块所消耗的电流

RTD/TC扩展模块型号 | 电流供应
 | +5 VDC | +24 VDC
EM AR02 | 80mA | 40mA
EM AR04 | 80mA | 40mA
EM AT04 | 80mA | 40mA

表7. 信号板和DP扩展模块所消耗的电流

模拟扩展模块型号 | 电流供应
 | +5 VDC | +24 VDC
SB AQ01 | 15mA | 40mA（无负载）
SB DT04 | 50mA | 2*4mA
SB RS485/RS232 | 50mA | 不适用
SB AE01 | 50mA | 不适用
EM DP01 | 150mA | 30 mA；通信端口激活时 60 mA；通信端口加90mA/5V负载时 180 mA；通信端口加120mA/24V负载时

功率要求计算示例

下表给出了包括以下模块的CPU系统的功率要求计算例子：

• CPU SR40 AC/DC/ 继电器 (固件版本V1.0)

• 3个 EM 8 点继电器型数字量输出（EMDR08）

• 一个 EM 8 点数字量输入（EM DE08）

该安装共有32点输入40点输出

该CPU已分配驱动CPU内部继电器线圈所需的功率。功率计算中无需包括内部继电器线圈功率要求。

本例中的CPU提供了足够5VDC电流，但没有通过传感器电源为所有输入和扩展继电器线圈提供足够的24VC电流。I/O需要392mA，但CPU提供了300mA。该安装额外需要一个至少为92mA的24VDC电源以运行所有包括的24 VDC输入和输出。

表8.电源计算示例

CPU功率预算 | 5 VDC | 24 VDC
CPU SR40 AC/DC/继电器 | 740mA | 300mA
减去
系统要求 | 5 VDC | 24 VDC
CPU SR40 ，24点输入 | -- | 24*4mA=96mA
插槽0：EM DR08 | 120mA | 8*11mA=88mA
插槽1：EM DR08 | 120mA | 8*11mA=88mA
插槽2：EM DR08 | 120mA | 8*11mA=88mA
插槽3：EM DE08 | 105mA | 8*4mA=32mA
总要求 | 465mA | 392mA
等于
电流差额 | 5 VDC | 24 VDC
总电流差额 | 275mA | （92mA）