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
    +关注

    关注

    5011

    文章

    13290

    浏览量

    463265
  • 西门子
    +关注

    关注

    94

    文章

    3039

    浏览量

    115855
  • TCP
    TCP
    +关注

    关注

    8

    文章

    1353

    浏览量

    79068

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

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

收藏 人收藏

    评论

    相关推荐

    串口服务器TCP/IP协议栈是什么关系

    串口服务器TCP/IP协议栈之间存在着紧密而复杂的关系。这种关系主要体现在串口服务器如何利用TCP/IP协议栈来实现串口设备与网络之间的数据通信。以下是对这种关系的详细解析。
    的头像 发表于 08-25 17:35 1562次阅读

    ESP8266与IE相比,Chrome/Mozilla中的TCP服务器速度较慢是什么原因?

    我正在尝试将 ESP8266-01 模块用于一个项目。我将其用作TCP服务器。我注意到浏览 Chrome 和 Mozilla 的服务器响应速度非常慢。但是,当我使用IE浏览
    发表于 07-22 06:44

    请问ESP32 C3支不支持在STA模式且不作为TCP服务器时,与多个IP地址建立TCP通讯?

    请问ESP32 C3支不支持在STA模式且不作为TCP服务器时,与多个IP地址建立TCP通讯? 或者支不支持在AP+STA共存模式时,与多个IP地址建立
    发表于 07-22 06:25

    TCP服务器发送数据丢失的原因?

    当UART有数据后,Tcp服务器会获取发送到TCP客户端的数据。我们无法知道 UART 数据的数量,in.so porj Tcp 发送的数据将被发送到 erverone 数据。 1
    发表于 07-19 16:51

    如果ESP上的TCP客户端与服务器断开连接,如何启用自动重连?

    ESP - TCP 客户端 嵌入式 Linux 服务器 - TCP 服务器 如果ESP上的TCP客户端与
    发表于 07-17 06:25

    基于esp8266创建一个TCP服务器TCP服务器每秒自动断开连接是为什么?

    我基于 esp8266 创建一个 TCP 服务器。它总是每秒断开一次。我不知道为什么。我已将espconn_register_time设置为最大 7200。
    发表于 07-15 08:26

    tcp方式连接不了服务器了,服务器代码还能开源吗?

    是在维护服务器吗?已经两天了。http方式还可以连接上,就tcp的方式不行了.服务器代码能开源吗?让我们自己搭建服务器用。
    发表于 07-15 06:53

    ESP826如何运行AP TCP服务器

    我正在开发一个室外远程控制系统,带有来自ESP8266 AP的专用WLAN。带有 TCP 客户端的平板电脑应连接到它,以便在 ESP 上设置一些 GPIO。根据我的理解,ESP 上的 TCP 服务器
    发表于 07-09 06:27

    如何同时在ESP8266上运行TCP客户端和TCP服务

    到我们的云服务器)和 TCP 服务器(某些 TCP 客户端可以连接到 ESP)。 限制:虽然我们在同时设置TCP客户端和
    发表于 07-08 08:26

    为什么在一些路由中使用ESP32的Active mode无法接收服务器TCP数据呢?

    在“ARRIS”和其他一些路由中,我们面临这个问题。 ① 在设置 AT+CIPRECVMODE=0 (Active mode)中,我们无法从服务器接收 TCP 数据。 ② 在同一个服务器
    发表于 06-27 07:34

    安徽京准 | PLC时钟同步(NTP网络时间服务器)的重要性

    安徽京准、PLC时钟同步-ntp网络时间服务器的重要性
    的头像 发表于 06-19 10:38 477次阅读
    安徽京准 | <b class='flag-5'>PLC</b>时钟同步(NTP网络时间<b class='flag-5'>服务器</b>)的重要性

    请问usb_cdc_4g_module如何向指定的TCP服务器发送数据?

    4G模块,运行usb_cdc_4g_module例程, wifi上网功能正常。 向指定的TCP服务器发送数据,修改如下: 1、正常连网后,使用_ppp_network_stop(dte)函数,将模式
    发表于 06-06 07:52

    linux服务器和windows服务器

    Linux服务器和Windows服务器是目前应用最广泛的两种服务器操作系统。两者各有优劣,也适用于不同的应用场景。本文将 对Linux服务器和Windows
    发表于 02-22 15:46

    独立服务器和云服务器的区别

    独立服务器和云服务器的区别是很多用户在选择服务器时要做的课程,那么独立服务器和云服务器的区别有哪些呢?
    的头像 发表于 01-17 10:58 856次阅读

    【北亚服务器数据恢复】ZFS文件系统服务器RAIDZ数据恢复案例

    服务器数据恢复环境: 服务器中有32块硬盘,组建了3组RAIDZ,部分磁盘作为热备盘。zfs文件系统。 服务器故障: 服务器运行中
    的头像 发表于 12-28 15:17 565次阅读
    【北亚<b class='flag-5'>服务器</b>数据恢复】ZFS文件系统<b class='flag-5'>服务器</b>RAIDZ数据恢复案例