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

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

3天内不再提示

如何通过S7-1200与第三方设备实现自由口通信

机器人及PLC自动化应用 来源:机器人及PLC自动化应用 2023-02-14 15:11 次阅读

-西门子S7-1200 紧凑型PLC在当前的市场中有着广泛的应用,由于其性价比高,所以常被用作小型自动化控制设备的控制器,这也使得它经常与第三方的设备(扫描枪、打印机等设备进行通讯。因为没有第三方的设备,这里就以超级终端为例介绍自由口通讯。

1.控制系统原理

78f7dc1e-ac35-11ed-bfe3-dac502259ad0.png

图1:控制系统原理

2.硬件需求
S7-1200 PLC目前有3种类型的CPU
1)S7-1211C CPU。
2)S7-1212C CPU。
3)S7-1214C CPU。
这三种类型的CPU都可以连接三个串口通信模版。
本例中使用的PLC硬件为:
1)PM1207电源 ( 6EP1 332-1SH71 )
2) S7-1214C ( 6ES7 214 -1BE30 -0XB0 )
3) CM1241 RS232 ( 6ES7 241 -1AH30 -0XB0 )

3.软件需求

1) 编程软件 Step7 Basic V10.5 ( 6ES7 822-0AA0-0YA0)

4.组态

我们通过下述的实际操作来介绍如何在Step7 Basic V10.5 中组态S7-1214C 和超级终端通信。

点击桌面上的“Totally Integrated Automation Portal V10”图标,打开如下图:

79544e54-ac35-11ed-bfe3-dac502259ad0.png

图2:新建S7 -1200项目

首先需要选择“Create new project”选项,然后在“Project name:”里输入PTP;在“Path:”修改项目的存储路径为“C:”;点击“Create”,这样就创建了一个文件PTP的新项目。创建后的窗口如下图所示:

7986f034-ac35-11ed-bfe3-dac502259ad0.png

图3:新建项目后

点击门户视图左下角的“Project View”切换到项目视图下,如下图:

79b9a31c-ac35-11ed-bfe3-dac502259ad0.png

图4:切换到项目视图

打开后,在“Devices”标签下,点击“Add new device”,在弹出的菜单中输入设备名“PLC_1”并在设备列表里选择CPU的类型。选择后如下图:

79f65c3a-ac35-11ed-bfe3-dac502259ad0.png

图5:PLC硬件组态

插入CPU后,点击CPU左边的空槽,在右边的“Catalog ”里找到“Communication”下的RS232模块,拖拽或双击此模块,这样就把串口模块插入到硬件配置里,接下来就需要配置此RS232模块硬件接口参数,选择RS232模块,在其下方会出现该模块的硬件属性配置窗口, 在属性窗口里有两个选项,一个是“general”;一个是“RS232 interface”。在“General”里包括了此模块的“项目信息”和“订货信息”;而在“RS232 interface”里包括“项目信息”、“端口的配置”、“发送信息的配置”、“接收信息的配置”和“硬件识别号”。在这里我们选择“RS232 interface”,在“端口”配置的选项里,进行端口的参数配置,
波特率为:9600 ;
校验方式:无 ;
数据位为:8 ;
停止位:1;
硬件流控制:无;
等待时间:1ms
设置参数如下图:

7a246a80-ac35-11ed-bfe3-dac502259ad0.png

图6:RS232接口配置

此时确认一下“硬件识别号”为11。

此时,完成了硬件的组态,接下来需要编写串口通讯程序,在这里我们实现两个功能:
一、 S7-1200 发送数据给超级终端;
二、 超级终端发送数据给S7-1200

对于第一个功能:S7-1200发送数据给超级终端,实际上是S7-1200是数据的发送方,超级终端是数据的接收方,对于S7-1200需要编写发送程序;而对于超级终端来说,只要打开超级终端程序,配置硬件接口参数与前面S7-1200的端口参数一只即可。

下面的步骤将具体介绍此功能实现的步骤:

①、在PLC中编写发送程序。在项目管理视图下双击“Device”下的程序块下的Main(OB1),打开OB1,在主程序中调用SEND_PTP功能块如下图所示:(注:SEND_PTP在指令库下的扩展指令中通讯指令下)

7a5246ee-ac35-11ed-bfe3-dac502259ad0.png

图7:调用发送功能块

要对SEND_PTP赋值参数,首先需要创建SEND_PTP的背景数据块和发送缓冲数据块 ,双击“Devices”——> “PLC_1”——>“Program Block ”——“Add new block”,在弹出的串口命名DB_Send_PTP,选择DB块,在Type后选择“SEND_PTP(SFB113)”

7a84aa76-ac35-11ed-bfe3-dac502259ad0.png

图8:创建发送功能块的背景数据块

插入背景DB后,再插入发送缓冲DB块,重复上面的步骤,只是在选择DB类型为“Global DB”,并去掉“Symbolic access only”选项勾(这样可以对该DB块进行直接地址访问),并取名该DB块为DB_SEND_BUFF。建好这两个DB块后,双击打开DB_SEND_BUFF预先定义好要发送的数据,如下图所示:

7aafac76-ac35-11ed-bfe3-dac502259ad0.png

图9:在接收缓冲区中接收到的数据

定义完发送缓冲区后,接下来就可以对SEND_PTP赋值参数,赋值参数后如下图:

7ad96d9a-ac35-11ed-bfe3-dac502259ad0.png


图10:发送编程

在上面的编程块里需要注意的是,在指定发送缓冲区时。字符的开始地址是从第二个字节,而不是零字节开始,即是P#DB2.DBX2.0 Byte10 而不是P#DB2.DBX0.0 Byte10,原因是由于S7-1200对字符串的存放的格式造成的,S7-1200对字符串的前两个字节的定义第一字节是最大的字符长度,第二个字节是实际的字符长度。接下来才是存放实际字符。

上面就完成了程序的编写,对项目进行编译;右击PLC_1项目在弹出的菜单里选择“Complies ALL”选项,这样就对硬件与软件进行编译,如下图:

7b02bfba-ac35-11ed-bfe3-dac502259ad0.png

图12:编译项目

编译且没有错误后就可以下载程序到PLC中,同样右击PLC_1项目,在弹出的菜单选择“Download to Device”。
②、用串口交叉线连接S7-1200的串口与计算机的串口,打开计算机的超级终端程序,并设置硬件端口参数如下图:

7b2ce54c-ac35-11ed-bfe3-dac502259ad0.png

图13:超级终端的端口设置

③、打开OB1功能块在线监控程序,在变量监控表里强制M0.0为1,触发数据的发送,此时在超级终端就会接收到发送的数据,如下图:

7b7a84fa-ac35-11ed-bfe3-dac502259ad0.png

图14:在超级终端监控发送来的数据

对于第二个功能:超级终端发送数据给S7-1200,实际上是S7-1200是数据的接收方,超级终端是数据的发送方,对于S7-1200需要编写接收程序;而对于超级终端来说,只要打开超级终端程序,配置硬件接口参数与前面S7-1200的端口参数一致,在界面上输入发送内容即可。

下面的步骤将具体介绍此功能实现的步骤:

①、在PLC中编写发送程序。在项目管理视图下双击“Device”下的程序块下的Main(OB1),打开OB1,在主程序中调用RCV_PTP功能块如下图所示:(注:RCV_PTP在指令库下的扩展指令中通讯指令下)

7bae373c-ac35-11ed-bfe3-dac502259ad0.png

图15:调用发送功能块

要对RCV_PTP赋值参数,首先需要创建RCV_PTP的背景数据块和发送缓冲数据块 ,双击“Devices”——> “PLC_1”——>“Program Block ”——“Add new block”,在弹出的串口命名DB_RCV_PTP,选择DB块,在Type后选择“RCV_PTP(SFB114)”

插入背景DB后,再插入接收缓冲DB块,重复上面的步骤,只是在选择DB类型为“Global DB”,并去掉“Symbolic access only”选项勾(这样可以对该DB块进行直接地址访问),并取名该DB块为DB_RCV_BUFF。建好这两个DB块后,双击打开DB_RCV_BUFF定义接收缓冲区数据的类型,如下图所示:

7bf309ac-ac35-11ed-bfe3-dac502259ad0.png


图17:定义接收缓冲区

定义完接收缓冲区后,接下来就可以对RCV_PTP赋值参数,赋值参数后如下图:

7c25cbe4-ac35-11ed-bfe3-dac502259ad0.png



图18:接收编程

在上面的编程块里需要注意的是,在指定接收缓冲区时。字符的开始地址是从第二个字节,而不是零字节开始,即是P#DB2.DBX2.0 Byte10 而不是P#DB2.DBX0.0 Byte10,原因是由于S7-1200对字符串的存放的格式造成的,S7-1200对字符串的前两个字节的定义第一字节是最大的字符长度,第二个字节是实际的字符长度。接下来才是存放实际字符。

上面就完成了程序的编写,对项目进行编译;右击PLC_1项目在弹出的菜单里选择“Complies ALL”选项,这样就对硬件与软件进行编译,如下图:

7c58ca08-ac35-11ed-bfe3-dac502259ad0.png

图20:编译项目

编译且没有错误后就可以下载程序到PLC中,同样右击PLC_1项目,在弹出的菜单选择“Download to Device”。
②、用串口交叉线连接S7-1200的串口与计算机的串口,打开计算机的超级终端程序,并设置硬件端口参数如下图:

7cab3a0e-ac35-11ed-bfe3-dac502259ad0.png

图21:超级终端的端口设置

在桌面上新建文本文件,打开此文本文件在里面输入“gfdcba”,如下图:

7cecb646-ac35-11ed-bfe3-dac502259ad0.png


图22:在文本文件下输入要发送的字符串

③、打开变量监控表,强制M0.0,使能接收。然后, 在超级终端里,选择菜单“Transfer”下的“Send Text file”,在打开的窗口里找到桌面 上的文本文件。

7d28de00-ac35-11ed-bfe3-dac502259ad0.png


图23:通过超级终端发送数据

打开DB_RCV_BUFF数据块,在线查看接收到的数据,如下图:

7d659156-ac35-11ed-bfe3-dac502259ad0.png


图23:接收缓冲区中接收到的数据

通过上面的例子实现了简单的应用,在实际的应用过程中,需要按第三方设备的协议进行编写S7-1200的程序。

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

    关注

    112

    文章

    16185

    浏览量

    177333
  • plc
    plc
    +关注

    关注

    5008

    文章

    13146

    浏览量

    461943
  • 通信
    +关注

    关注

    18

    文章

    5968

    浏览量

    135829
  • 西门子
    +关注

    关注

    93

    文章

    3007

    浏览量

    115611
  • S7-1200
    +关注

    关注

    11

    文章

    331

    浏览量

    17904

原文标题:如何通过S7-1200与第三方设备实现自由口通信

文章出处:【微信号:gh_a8b121171b08,微信公众号:机器人及PLC自动化应用】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何通过西门子S7-1200紧凑型PLC实现自由通讯

    西门子S7-1200 紧凑型PLC在当前的市场中有着广泛的应用,由于其性价比高,所以常被用作小型自动化控制设备的控制器,这也使得它经常与第三方设备(扫描枪、打印机等
    发表于 07-06 11:29 3070次阅读

    在计算机与第三方设备通信时,常用的计算机编码

    在计算机与第三方设备通信时,常用的计算机编码
    发表于 07-10 13:06

    第三方dll调用问题!!!

    第三方dll,没有.h,labview怎么实现调用,dll可以用VS打开,类库说明也有
    发表于 05-11 09:14

    LabVIEW与第三方软件交互问题

    现在做一个软件,就是通过LabVIEW去与第三方软件进行交互操作!已经通过百度找到了利用user32.dll调用FindWindowA与PostMessage去实现对计算器,找了多方资
    发表于 12-26 17:13

    请问第三方平台授权如何实现

    第三方平台授权如何实现
    发表于 11-10 07:27

    基于S7-1200设备与网络组态

    本文档内容介绍了基于S7-1200设备与网络组态,以及S7-1200的概要及功能。
    发表于 09-25 18:14 28次下载
    基于<b class='flag-5'>S7-1200</b>的<b class='flag-5'>设备</b>与网络组态

    S7-1200与PROFINET的通信

    S7-1200 CPU 本体上集成了一个PROFINET 通信口,支持以太网和基于TCP/IP 的通信标准。使用这个通信口可以实现
    发表于 09-29 18:58 38次下载
    <b class='flag-5'>S7-1200</b>与PROFINET的<b class='flag-5'>通信</b>

    怎样才能实现S7-1500与第三方自动化系统的数据交换?

    要将S7-1500自动化系统作为PROFIBUS DP从站接入到第三方自动化系统的DP主站系统中,必须使用CM 1542-5或CP 1542-5并设置PROFIBUS 相关参数,才能实现S7
    的头像 发表于 07-27 09:16 5435次阅读
    怎样才能<b class='flag-5'>实现</b><b class='flag-5'>S7</b>-1500与<b class='flag-5'>第三方</b>自动化系统的数据交换?

    第三方脚本成为网络攻击“重灾区”,多管齐下防范第三方脚本安全隐患

      第三方脚本攻击利用的是第一网站对第三方脚本的控制力不足和难以实现的全面监测,造成较为严重的攻击后果。除此之外,第三方脚本还会带来一些其
    的头像 发表于 09-04 14:51 3548次阅读

    关于S7-1200S7-1200之间UDP的通信与仿真

    S7-1200S7-1200 之间的以太网通信可以通过 UDP 协议来实现,使用的通信指令
    的头像 发表于 04-22 09:14 5476次阅读
    关于<b class='flag-5'>S7-1200</b>和<b class='flag-5'>S7-1200</b>之间UDP的<b class='flag-5'>通信</b>与仿真

    如何通过S7-1200第三方设备实现自由通信

    如何通过S7-1200第三方设备实现自由
    发表于 04-25 11:18 16次下载

    S7-1200S7-300 PN之间的以太网通信方法

    S7-1200S7-300 PN 之间的以太网通信可以通过 UDP 协议来实现,使用的
    的头像 发表于 04-11 09:44 6947次阅读

    如何通过S7-1200第三方设备实现自由通信

    首先需要选择“Create new project”选项,然后在“Project name:”里输入PTP;在“Path:”修改项目的存储路径为“C:”;点击“Create”,这样就创建了一个文件PTP的新项目。创建后的窗口如下图所示:
    的头像 发表于 08-02 11:34 1597次阅读

    S7-1200S7-300 CP342-5的DP的主从通信

    使用 S7-1200S7-300 用 CP342-5 进行主从通信,这里S7-1200 的 CM1243-5 做为主站,将 CP342-5 做从站。
    的头像 发表于 02-13 09:32 1569次阅读

    西门子S7-1200第三方设备自由通信详解

    西门子S7-1200 紧凑型PLC在当前的市场中有着广泛的应用,由于其性价比高,所以常被用作小型自动化控制设备的控制器,这也使得它经常与第三方设备扫描枪、打印机等
    的头像 发表于 07-24 15:39 7571次阅读
    西门子<b class='flag-5'>S7-1200</b>与<b class='flag-5'>第三方</b><b class='flag-5'>设备</b><b class='flag-5'>自由</b><b class='flag-5'>口</b><b class='flag-5'>通信</b>详解