0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

PLC作为TCP服务器的实战应用

PLC技术圈 来源:PLC技术圈 作者:PLC技术圈 2020-09-25 11:44 次阅读

对于自控或电气工程师来说,西门子PLC是每个人都非常熟悉的一款PLC品牌;而对于上位机开发工程师来说,Socket通信或TCP/IP协议也是必须要掌握的一种通信方式。

相比较而言,西门子PLC对Socket通信的支持性是很不错的。如果你在使用西门子软件时,发现一个词叫做Open User Communication或开放式通信,没错,那其实就是我们说的Socket通信方式。关于这一点,我们可以从以下两张图中看出,分别为S7-200Smart编程软件Micro/Win Smart V2.5及博途TIA V15.1编程软件中关于通信库的部分截图:

我们可以看到无论是西门子的中高端PLC还是低端PLC,都是支持开放式TCP/UDP通信的,既然都支持,我们来看下如何实现。

众所周知,对于Socket通信来说,是可以支持TCP、UDP等多种通信方式,但是今天在这里,我们主要针对TCP这种通信方式。除此以外,大家都知道,Socket会存在服务器和客户端的说法,也就意味着,同样是使用Socket通信,我们仍然需要确定到底PLC是作为服务器还是作为客户端,因为不管对于PLC编程或者上位机开发来说,这两种方式都是完全不同的,下面做具体介绍。

一、PLC作为TCP服务器的实战应用

(1)PLC编程

1.1 创建一个TCPServer的子程序,拖拽一个TCP_CONNECT的库指令,对于该指令的每个引脚对应的含义,大家可以按下F1直接获取在线帮助,程序段1编写如下图所示:

1.2 拖拽一个TCP_SEND的库指令,对于该指令的每个引脚填写,ConnID为1,Req为触发条件,必须为沿信号,这里为了方便,直接使用1秒的脉冲信号,DataLen及DataPtr为发送的起始字节指针及发送的字节长度,程序段2如下图所示:

1.3拖拽一个TCP_RECV的库指令,对于该指令的每个引脚填写,ConnID统一为1,MaxLen为接收的最大程度,DataPtr表示接收字节存放的起始位置,程序段3如下图所示:

1.4最后需要编译,编译会提示需要给库分配地址,点击文件下的存储器,给该库分配地址即可,然后在MAIN主程序中调用TCPServer这个子程序,并下载到PLC中,PLC编程部分结束。

(2)TCP调试助手测试

如果PLC程序编写没问题,打开一个网络调试助手,输入对应的IP地址及端口号,即可连接上服务器。连接服务器后,PLC端会自动每隔一秒发送200个字节数据过来,这200个字节即对应VB100-VB299的值。

(3)上位机客户端软件开发

通过与编程软件的状态图表进行对照,可以实时读取PLC数据,并随时设置相应的数值

二、PLC作为TCP客户端的实战应用

(1)PLC编程

1.1创建一个TCPClient的子程序,拖拽一个TCP_CONNECT的库指令,与服务器程序不同的是,这里需要把Active设置为ON,同时IP地址和端口号需要根据上位机实际情况填写,程序段1编写如下图所示:

1.2 拖拽一个TCP_SEND的库指令,对于该指令的每个引脚填写,ConnID为2,Req为触发条件,必须为沿信号,这里为了方便,直接使用1秒的脉冲信号,DataLen及DataPtr为发送的起始字节指针及发送的字节长度,程序段2如下图所示

1.3拖拽一个TCP_RECV的库指令,对于该指令的每个引脚填写,ConnID统一为2,MaxLen为接收的最大程度,DataPtr表示接收字节存放的起始位置,程序段3如下图所示

1.4 最后需要编译,如果已经编写过服务器程序,这里就不需要分配地址了,直接在MAIN主程序中调用TCPClient这个子程序,并下载到PLC中,PLC编程部分结束

(2)TCP调试助手测试

如果PLC程序编写没问题,打开一个网络调试助手,设置模式为TCP Server,输入端口号为2000,即可开启服务器。

服务器开启后,PLC端会自动连接服务器,并且每隔一秒发送100个字节数据过来,这100个字节即对应VB500-VB599的值。

(3)上位机服务器软件开发

通过与状态图表进行对比,验证可以正常读取和写入PLC数据。

原文标题:深度剖析西门子PLC的开放式TCP通信

文章出处:【微信公众号:PLC技术圈】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • plc
    plc
    +关注

    关注

    4974

    文章

    12254

    浏览量

    454873
  • 西门子
    +关注

    关注

    91

    文章

    2849

    浏览量

    113764
  • TCP
    TCP
    +关注

    关注

    8

    文章

    1271

    浏览量

    78289

原文标题:深度剖析西门子PLC的开放式TCP通信

文章出处:【微信号:xue_PLC,微信公众号:PLC技术圈】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    服务器怎么连接到设备,MQTT和TCP的通讯方式有什么不同?

    采用ESP8266进行开发,服务器怎么连接到设备的,MQTT 和TCP的通讯方式有什么不用呢
    发表于 11-02 08:34

    ESP8266可作为Web服务器吗?怎么实现?

    ESP8266可作为Web服务器吗怎么实现
    发表于 10-24 08:17

    8266STA模式连接不上TCP服务器怎么解决?

    8266STA模式连接不上TCP服务器
    发表于 10-17 07:25

    EasyWeb:微小的TCP/IP协议栈和Web服务器

    。如果局域网通过路由连接到互联网,数据可以在全世界范围内交换。处理以太网接口的软件比处理序列接口复杂得多。在多数情况下,TCP/IP协议用于数据传输,因为它向局域网其他成员提供了快速可靠的连接。这个小的TCP/IP堆和网络
    发表于 09-04 07:39

    使用M480 UART驱动ESP8266用于TCP服务器功能

    应用程序: 本示例使用 M480 UART 驱动 ESP8266 用于 TCP 服务器功能。 BSP 版本: M480系列 BSP CMSIS V3.04.000 硬件
    发表于 08-30 08:09

    如何使用M480 UART驱动ESP8266用于TCP服务器功能

    应用程序: 本示例使用 M480 UART 驱动 ESP8266 用于 TCP 服务器功能。 BSP 版本: M480系列 BSP CMSIS V3.04.000 硬件
    发表于 08-22 07:30

    HTTP服务器使用uIP TCP/ IP堆栈的示例

    应用程序: HTTP 服务器使用 uIP TCP/ IP 堆栈的示例 BSP 版本:M480系列BSP CMSIS V3.03.001 硬件: NuMaker-PFM-M487 VER 3.0
    发表于 08-22 07:07

    串口服务器——TCP Server

    如何让自动化领域的串口设备具备联网能力?本文将基于EsDA平台,带你开发一个串口服务器TCP服务器的业务,快速实现串口联网功能。简介随着物联网技术的发展,串口通信和TCP/IP通信业
    的头像 发表于 07-31 17:58 1067次阅读
    串口<b class='flag-5'>服务器</b>——<b class='flag-5'>TCP</b> Server

    S7-1500做服务器端与三方设备的TCP通信

    专用功能块与其它设备建立 TCP 连接以实现通信。介绍 S7-1500 CPU 作为 TCP 服务器与 PC 进行 TCP 通信的配置过程。
    的头像 发表于 07-24 15:40 1426次阅读
    S7-1500做<b class='flag-5'>服务器</b>端与三方设备的<b class='flag-5'>TCP</b>通信

    【EsDA应用】串口服务器——TCP Server

    如何让自动化领域的串口设备具备联网能力?本文将基于EsDA平台,带你开发一个串口服务器TCP服务器的业务,快速实现串口联网功能。    简介 随着物联网技术的发展,串口通信和TCP/
    的头像 发表于 06-14 11:40 557次阅读
    【EsDA应用】串口<b class='flag-5'>服务器</b>——<b class='flag-5'>TCP</b> Server

    如何使ESP运行TCP服务器能够实现低功耗/睡眠模式?

    在搜索任何相关信息失败后,我需要寻求一些提示如何使 ESP 运行 TCP 服务器(从 espconn_regist_connectcb 开始)能够实现低功耗/睡眠模式。 如果我有一个无限循环,我知道
    发表于 06-12 07:49

    【米尔瑞萨RZ/G2L开发板-试用体验】创建TCP服务器

    在米尔RZ/G2L开发板上用C 创建TCP服务器
    的头像 发表于 05-27 08:59 7493次阅读
    【米尔瑞萨RZ/G2L开发板-试用体验】创建<b class='flag-5'>TCP</b><b class='flag-5'>服务器</b>

    无法在双mde中连接到TCP服务器(Station + SoftAP)?

    当我通过AT+CIPSERVER启动TCP服务器时,芯片运行在AP+Station双模时,如何知道它监听的是哪个接口?在 SoftAP 模式下,我可以连接到 192.168.4.1。但是当我还启用站
    发表于 05-15 08:33

    用AT+CIPSERVER=1,80启动服务器时,可以启动UDP服务器吗?

    :0.9.5 当我用 AT+CIPSERVER=1,80 启动服务器时, 我只有一个 TCP 服务器, 有人知道吗? 正常吗?我可以启动 UDP 服务器吗?
    发表于 05-15 07:27

    基于SOCKET实现与PLC服务器TCP通信(一)

    C#上位机基础学习_基于SOCKET实现与PLC服务器TCP通信(一)测试软件: TIA PORTAL V15.1S7-PLCSIM ADVANCED V3.0Visual Studio 2019
    发表于 05-10 11:16 0次下载
    基于SOCKET实现与<b class='flag-5'>PLC</b><b class='flag-5'>服务器</b>的<b class='flag-5'>TCP</b>通信(一)