故事作者:自动化so酷

最近创作

看看TA的故事

20210224百宝箱 | 通过S7-1200与第三方设备实现自由口通信

已锁定

自动化so酷

总坛主

  • 帖子

    25
  • 精华

    0
  • 被关注

    6

论坛等级:侠客

注册时间:2020-03-02

普通 普通 如何晋级?

20210224百宝箱 | 通过S7-1200与第三方设备实现自由口通信

2096

0

2021-02-24 13:42:27

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

 

01

控制系统原理



02

硬件需求


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)


03

软件需求


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


04

布局


我们通过按照惯例的实际操作来介绍如何在Step7 Basic V10.5中配置S7-1214C和超级终端通信。

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


 首先需要选择“创建新项目”选项,然后在“项目名称:”里输入PTP;在“路径:”中,将项目的存储路径设置为“ C:\”;单击“创建”,这样就创建了一个文件PTP的新项目。创建后的窗口如下图所示:


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


 切换到项目后,在“设备”标签下,单击“添加新设备”,在弹出的菜单中输入设备名称“ PLC_1”,并在设备列表中选择CPU的类型。选择后如下图:


 插入CPU后,单击CPU左边的空槽,在右边的“ Catalog”里找到“ Communication”下一个的RS232模块,拖拽或双击此模块,这样就把把串行器插入到硬件配置里,然后就需要配置此后RS232模块硬件接口参数,选择RS232模块,在其下面的会出现该模块的硬件配置窗口,在属性窗口中就有两个选项,一个是“通用”;一个是“ RS232接口”。在“常规”里包括了此模块的“项目信息”和“命令信息”;而在“ RS232接口”里包括“项目信息”,“端口的配置”,“发送信息的配置”,“接收信息的配置”和“在这里我们选择“ RS232 interface”,在“端口”配置的选项里,进行的参数配置,波特率为:9600;校准方式:无;数据位为:8;停止位:1;硬件流控制:无;等待时间:1ms。

设置参数如下图:


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

然后,完成了硬件的配置,接下来需要编写串行通讯程序,在这里我们实现两个功能:一,S7-1200发送数据给超级终端;二,超级终端发送数据给S7-1200
对于第一个功能:S7-1200发送数据给超级终端,则是S7-1200是数据的发送方,超级终端是数据的接收方,对于S7-1200需要编写发送程序;而对于超级终端则意味着,只要:超级终端程序,配置硬件接口参数与前面S7-1200的扩展参数即可。
下面的步骤将具体介绍此功能实现的步骤:

①,在PLC中编写程序,然后在主菜单(OB1)上,在OB1,在主程序中调用SEND_PTP功能块,如图所示:(SEND_PTP)在指令库下一个的扩展指令中通讯指令下一个)


 要对SEND_PTP赋值参数,首先需要创建SEND_PTP的背景数据块和发送缓冲数据块,双击“设备”->“ PLC_1” ————>“程序块” ————“添加新块”, DB_Send_PTP,选择DB块,在类型后选择“ SEND_PTP(SFB113)”


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


 定义完发送上下文之后,接下来就可以对SEND_PTP赋值参数,赋值参数后如下图:


 字符的开始地址是从第二个字节,而不是零字节开始,即是P#DB2.DBX2.0 Byte10而不是P#DB2.DBX0.0 Byte10,原因是由于S7-1200对串行的放置的格式造成的,S7-1200对串行的前两个字节的定义的第一字节是最大的字符长度,第二个字节是实际的字符长度接下来才是存放实际字符如下图:


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


 编译且没有错误后就可以下载程序到PLC中,同样右击PLC_1项目,在弹出的菜单选择“下载到设备”。

②,用串**叉线连接S7-1200的串口与计算机的串口,打开计算机的超级终端程序,并设置硬件扩展参数如下图:


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


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

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

①,在PLC中编写程序,然后在主菜单(OB1)上,在OB1,在主程序中称其为RCV_PTP功能块,如下图所示:(注:RCV_PTP在指令库下一个的扩展指令中通讯指令下一个)


 要对RCV_PTP赋值参数,首先需要创建RCV_PTP的背景数据块和发送缓冲数据块,双击“设备”->“ PLC_1” ————>“程序块”-“添加新块”, DB_RCV_PTP,选择DB块,在类型后选择“ RCV_PTP(SFB114)”


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


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


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


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

编译且没有错误后就可以下载程序到PLC中,同样右击PLC_1项目,在弹出的菜单选择“下载到设备”。

②,用串**叉线连接S7-1200的串口与计算机的串口,打开计算机的超级终端程序,并设置硬件扩展参数如下图


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


 ③:变量监控表,强制M0.0,使能接收。然后,在超级终端里,选择菜单“传输”下一个的“发送文本文件”,在桌面上找到一个文本文件。


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


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

20210224百宝箱 | 通过S7-1200与第三方设备实现自由口通信 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

网友专栏

共有3364条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。