返回主站|会员中心|保存桌面

西门子(SIEMENS)服务商    

框架断路器、塑壳断路器、隔离开关、软启动、变频器、电机 、PLC、触摸屏

联系方式
  • 联系人:吴经理
  • 电话:18576370666
新闻分类
  • 暂无分类
站内搜索
 
首页 > 新闻中心 > 西门子1200通过以太网发数据到指定的IP地址!
新闻中心
西门子1200通过以太网发数据到指定的IP地址!
发布时间:2025-10-10        浏览次数:1        返回列表

西门子 S7-1200 PLC 通过以太网向指定 IP 地址发送数据(如与第三方设备、上位机或其他 PLC 通讯),可通过TCP 客户端UDP 协议实现,具体步骤如下(以 TIA Portal V16 为例):

一、硬件与软件准备

  1. 硬件

    • S7-1200 PLC(如 1214C DC/DC/DC,需带 PROFINET 以太网接口)

    • 以太网交换机 / 网线(连接 PLC 与目标设备,确保网络互通)

    • 目标设备(如 PC、HMI、其他 PLC,需配置固定 IP,且与 PLC 同网段)

  2. 软件

    • TIA Portal V15 及以上版本

    • 目标设备的通讯测试工具(如 PC 端用 “网络调试助手” 验证)

二、网络参数配置

  1. 设置 S7-1200 的 IP 地址

    • 在 TIA Portal 中打开项目,双击 PLC 设备→“设备配置”→“PROFINET 接口 [X1]”。

    • 配置 IP 地址(如192.168.0.1)和子网掩码(255.255.255.0),确保与目标设备 IP(如192.168.0.100)同网段。

  2. 验证网络连通性

    • PLC 上电后,用网线连接至交换机,目标设备也接入同一网络。

    • 在 PC 上通过ping 192.168.0.1(PLC 的 IP)测试是否连通,确保无丢包。

三、通过 TCP 协议发送数据(推荐,可靠传输)

S7-1200 作为 TCP 客户端,主动连接目标 IP 的指定端口,发送数据。

Step 1:组态 TCP 通讯功能

  1. 在 TIA Portal 的 PLC 程序中,添加 “指令库”→“通讯”→“TCP” 相关指令(如TSEND_C用于持续发送)。

  2. 定义通讯相关变量(在 “PLC 数据类型” 或 “全局 DB” 中创建):

    plaintext

  3. // 全局DB1:TCP通讯变量
    DB1.DBX0.0:连接使能(CONNECT_EN,BOOL)
    DB1.DBX0.1:连接状态(CONNECTED,BOOL)
    DB1.DBX0.2:发送请求(SEND_REQ,BOOL)
    DB1.DBX0.3:发送完成(SEND_DONE,BOOL)
    DB1.DBX0.4:发送错误(SEND_ERROR,BOOL)
    DB1.DBW2:错误代码(ERROR_CODE,INT)
    DB1.DBB4:发送数据长度(DATA_LEN,BYTE)
    DB1.DBB5 至 DB1.DBB204:发送数据缓冲区(DATA,ARRAY[1..200] OF BYTE)

Step 2:编写 TCP 发送程序

  1. 建立 TCP 连接:使用TCON指令连接目标 IP 和端口(如目标 IP192.168.0.100,端口1024):

    ladder

  2. // TCON指令参数
    REQ:DB1.CONNECT_EN(上升沿触发)
    ACTIVE:TRUE(客户端模式)
    REM_ADDR:"192.168.0.100"(目标IP)
    REM_PORT:1024(目标端口)
    LOCAL_PORT:2000(PLC本地端口,可自定义)
    ID:1(连接ID,唯一标识)
    DONE:DB1.CONNECTED(连接成功标志)
    ERROR:DB1.CONNECT_ERROR(连接错误标志)
  3. 发送数据:连接成功后,用TSEND_C指令循环发送数据(如发送字符串 “Hello from S7-1200”):

    ladder

  4. // 当连接成功(DB1.ConNECTED=TRUE)时,触发发送
    A     DB1.ConNECTED
    FP    M0.0
    =     DB1.SEND_REQ(发送请求,上升沿)
    
    // TSEND_C指令参数
    REQ:DB1.SEND_REQ
    ID:1(与TCON的ID一致)
    DATA:DB1.DATA(发送缓冲区起始地址)
    LEN:DB1.DATA_LEN(发送数据长度,如16字节)
    DONE:DB1.SEND_DONE(发送完成)
    ERROR:DB1.SEND_ERROR(发送错误)
    STATUS:DB1.ERROR_CODE(错误代码)
  5. 填充发送数据:在发送前,将数据写入缓冲区(如字符串转字节):

    ladder

  6. // 示例:发送字符串“Hello”(ASCII码:48 65 6C 6C 6F)
    L     16#48
    T     DB1.DBB5
    L     16#65
    T     DB1.DBB6
    L     16#6C
    T     DB1.DBB7
    L     16#6C
    T     DB1.DBB8
    L     16#6F
    T     DB1.DBB9
    L     5
    T     DB1.DATA_LEN(长度=5)

Step 3:目标设备接收验证

  • 在 PC 上打开 “网络调试助手”,选择 “TCP 服务器” 模式,设置本地 IP192.168.0.100和端口1024,点击 “启动”。

  • PLC 运行程序后,调试助手会收到 “S7-1200” 发送的数据,验证通讯正常。

四、通过 UDP 协议发送数据(无连接,快速传输)

若无需建立连接(如广播数据),可使用 UDP 协议,步骤类似:

  1. 使用UDPSEND指令,无需TCON连接,直接指定目标 IP 和端口。

  2. 变量定义与 TCP 类似,需指定目标 IP、端口和发送数据。

  3. 示例程序:

    ladder

  4. // UDPSEND指令参数
    REQ:M0.0(发送请求)
    DEST_IP:"192.168.0.100"(目标IP)
    DEST_PORT:1025(目标端口)
    DATA:DB2.DATA(发送缓冲区)
    LEN:DB2.DATA_LEN(数据长度)
    DONE:M0.1(发送完成)
    ERROR:M0.2(发送错误)

五、常见问题及解决

  1. 连接失败(TCON 错误)

    • 检查目标 IP 和端口是否正确(目标设备需监听对应端口)。

    • 确认 PLC 与目标设备是否同网段,防火墙是否阻断端口(如关闭 PC 防火墙)。

    • 错误代码8070表示目标不可达,8090表示端口未开放。

  2. 发送无响应(TSEND_C 无 DONE)

    • 检查SEND_REQ是否为上升沿触发(需用FP指令)。

    • 确认发送数据长度(LEN)是否与实际数据一致(避免超长或为 0)。

  3. 数据乱码

    • 确保发送数据的编码格式与目标设备一致(如 ASCII、UTF-8)。

    • 检查缓冲区地址是否正确(避免覆盖其他数据)。

总结

S7-1200 通过以太网发送数据的核心是:配置网络参数→用 TCP/UDP 指令建立通讯→填充数据并触发发送。TCP 适用于可靠传输(如控制指令),UDP 适用于高速、无连接场景(如实时数据)。调试时建议先用网络助手验证,再逐步整合到实际设备中。

收缩
  • QQ咨询

  • 电话咨询

  • 18576370666
  • 添加微信客服