西门子 S7 系列 PLC 的通信功能块(Function Block, FB)是实现不同设备间数据交互的核心工具,常用于 S7-1200/1500 与其他西门子 PLC(如 S7-300/400/1200/1500)或第三方设备的通信。以下是常用 S7 通信功能块的具体使用方法:
一、常用 S7 通信功能块分类
S7 通信主要包括两种方式:
S7 基本通信(S7 Basic Communication)
适用于简单数据交换,常用功能块:S7Client(客户端)和S7Server(服务器)。
S7 通信(S7 Communication)
适用于更复杂的通信需求,常用功能块:PUT/GET(单边通信)、USEND/URECV(非同步发送 / 接收)等。
二、S7Client/S7Server(基本通信)使用步骤
以 S7-1200/1500 作为客户端,与另一台 S7 PLC 通信为例:
-
硬件配置(TIA Portal)
在项目中添加客户端 PLC(如 S7-1214C)和服务器 PLC(如 S7-1511)。
配置两者的以太网地址(如客户端192.168.0.1,服务器192.168.0.2),确保在同一网段。 -
调用 S7Client 功能块(客户端)
功能:客户端主动读取 / 写入服务器的数据。
步骤:
在 OB1(主循环组织块)中拖入S7Client功能块(位于库Libraries > SIMATIC_NET > S7 Basic Communication)。
定义输入参数:
Mode:通信模式(1= 读服务器数据,2= 写服务器数据)。
RemoteAddress:服务器 IP 地址(如"192.168.0.2")。
LocalPort/RemotePort:本地 / 远程端口(默认102)。
DataLength:数据长度(字节数)。
pData:指向本地数据区的指针(如P#DB1.DBX0.0 BYTE 10,表示读取 10 字节数据到 DB1)。
输出参数:
Done:通信完成(TRUE表示成功)。
Error:错误标识(TRUE表示失败)。
Status:状态码(0表示正常,其他值对应具体错误)。
-
调用 S7Server 功能块(服务器)
功能:服务器被动响应客户端的读写请求。
步骤:
在服务器 PLC 的 OB1 中拖入S7Server功能块。
定义输入参数:
LocalPort:本地端口(默认102)。
pData:指向服务器数据区的指针(如P#DB2.DBX0.0 BYTE 10,允许客户端访问的数据区)。
输出参数同S7Client,用于监控通信状态。
三、PUT/GET(单边通信)使用步骤
PUT/GET 是西门子 PLC 间常用的单边通信方式(仅需在客户端编程,服务器无需额外配置)。 -
硬件配置
确保客户端与服务器 IP 在同一网段,服务器需开启 “允许 PUT/GET 访问”(在 TIA Portal 中,右键服务器 PLC→“属性”→“防护与安全”→“连接机制”→勾选 “允许通过 PUT/GET 进行通信访问”)。 -
调用 PUT 功能块(客户端写入服务器)
功能:客户端将本地数据写入服务器指定地址。
参数配置:
REQ:触发信号(上升沿有效)。
ID:连接 ID(需在 “网络视图” 中手动创建 S7 连接,自动分配 ID)。
DONE/ERROR/STATUS:状态标识。
ADR_1:服务器数据地址(如"DB3.DBX0.0")。
LEN_1:写入长度(字节)。
DB_NO/DBX_ADR:本地数据块号和起始地址。
- 调用 GET 功能块(客户端读取服务器)
功能:客户端从服务器读取数据到本地。
参数与PUT类似,ADR_1为服务器源地址,DB_NO/DBX_ADR为本地存储地址。
四、注意事项
通信地址格式:
服务器地址需使用绝对地址(如"DB1.DBX0.0"、"M0.0"),避免使用符号地址。
错误排查:
若Status返回非 0 值,可通过 TIA Portal 的 “在线诊断” 或Status码查询具体原因(如 IP 不可达、端口被占用、权限未开启等)。
数据一致性:
读写数据时需确保客户端与服务器的数据类型和长度一致(如均为INT型占 2 字节)。
连接数量限制:
不同型号 PLC 支持的最大 S7 连接数不同(如 S7-1200 最多支持 8 个客户端连接),需参考硬件手册。
通过上述功能块,可实现西门子 PLC 间高效、稳定的数据通信。实际应用中需根据通信场景(如数据量、实时性要求)选择合适的功能块。