欢迎光临散文网 会员登陆 & 注册

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

2023-05-23 21:18 作者:工控小周  | 我要投稿

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

博途工控人微信群:15961872327

博途工控人微信群:15961872327

01

控制系统原理


(图1:控制系统原理)


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”图标,如下图:

(图2:新建S7 -1200项目)


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

(图3:新建项目后)


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

(图4:切换到项目)


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

(图5:PLC硬件配置)


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

(图6:RS232接口配置)


此时确认一下“硬件识别号”为11。然后,完成了硬件的配置,接下来需要编写串行通讯程序,在这里我们实现两个功能:一,S7-1200发送数据给超级终端;二,超级终端发送数据给S7-1200对于第一个功能:S7-1200发送数据给超级终端,则是S7-1200是数据的发送方,超级终端是数据的接收方,对于S7-1200需要编写发送程序;而对于超级终端则意味着,只要:超级终端程序,配置硬件接口参数与前面S7-1200的扩展参数即可。下面的步骤将具体介绍此功能实现的步骤:①,在PLC中编写程序,然后在主菜单(OB1)上,在OB1,在主程序中调用SEND_PTP功能块,如图所示:(SEND_PTP)在指令库下一个的扩展指令中通讯指令下一个)

(图7:调用发送功能块)


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

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


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

(图9:在接收范围内中接收到的数据)


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

(图10:发送编程)


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

(图11:字符串存储格式)


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

(图12:编译项目)


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

(图13:超级终端的扩展设置)


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

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


对于第二个功能:超级终端发送数据给S7-1200,即是S7-1200是数据的接收方,超级终端是数据的发送方,对于S7-1200需要编写接收程序;而对于超级终端则意味着,,只要:超级终端程序,配置硬件接口参数与前面S7-1200的扩展参数一致,在界面上输入发送内容即可。下面的步骤将具体介绍此功能实现的步骤:①,在PLC中编写程序,然后在主菜单(OB1)上,在OB1,在主程序中称其为RCV_PTP功能块,如下图所示:(注:RCV_PTP在指令库下一个的扩展指令中通讯指令下一个)

(图15:调用发送功能块)


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

(图16:创建接收功能块的背景数据块)


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

(图17:定义接收范围)


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

(图18:接收编程)


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


(图19:字符串存储格式)


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

(图20:编译项目)


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

(图21:超级终端的扩展设置)


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

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


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

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


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

(图24:接收接收机中接收到的数据)

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


通过S7-1200与第三方设备实现自由口通信的评论 (共 条)

分享到微博请遵守国家法律