S7-1200与第三方设备(超级终端)自由口通信详解

B站影视 2025-01-15 15:38 3

摘要:西门子 S7-1200 这种紧凑型 PLC 呀,在当下的市场里到处都能见到它的身影。为啥呢?就因为它性价比不错,所以常常被拿来当小型自动化控制设备的控制器。而且呀,它还老是要跟第三方的设备,像扫描枪、打印机之类的进行通讯。不过呢,这会儿没有第三方设备,那咱就拿

西门子 S7-1200 这种紧凑型 PLC 呀,在当下的市场里到处都能见到它的身影。为啥呢?就因为它性价比不错,所以常常被拿来当小型自动化控制设备的控制器。而且呀,它还老是要跟第三方的设备,像扫描枪、打印机之类的进行通讯。不过呢,这会儿没有第三方设备,那咱就拿超级终端当例子,给您讲讲自由口通讯。

1.控制系统原理

图1:控制系统原理

硬件需求

现在的 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”这个图标,然后打开的界面就像下面这样:

图2: 新建S7 -1200项目

首先得选“Create new project”这个选项,接着在“Project name:”这里输入 PTP ;在“Path:”那里把项目的存储路径改成“C:\” ;再点“Create”,这样就能创建出一个叫 PTP 的新文件项目啦。创建完以后的窗口就像下面图里显示的这样:

图3: 新建项目后

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

图4: 切换到项目视图

打开之后呢,在“Devices”这个标签下面,您点一下“Add new device”,然后在弹出来的菜单里输入设备名“PLC_1”,并且在设备列表当中选好 CPU 的类型。选完以后就像下面这样:

图5:PLC硬件组态

插入 CPU 之后,您点一下 CPU 左边的空槽,在右边的“Catalog ”里头找到“Communication”下面的 RS232 模块,把这个模块拖过去或者双击它,这样串口模块就插进硬件配置里啦。接下来就得配置这个 RS232 模块硬件接口的参数,您选一下 RS232 模块,在它下面就会出现这个模块的硬件属性配置窗口。在这个属性窗口里有两个选项,一个是“general”,另一个是“RS232 interface”。在“General”里有这个模块的“项目信息”和“订货信息”。在“RS232 interface”里呢,包含“项目信息”、“端口的配置”、“发送信息的配置”、“接收信息的配置”还有“硬件识别号”。在这儿咱们选“RS232 interface”,在“端口”配置的选项当中,来进行端口的参数配置:


波特率为:9600 ;
校验方式:无 ;
数据位为:8 ;
停止位:1;
硬件流控制:无;
等待时间:1ms
设置参数如下图:

图6:RS232接口配置

这时候您确认一下“硬件识别号”是不是 11 。到这会儿,硬件的组态就完成啦,接下来得编写串口通讯程序。

在这儿咱们要实现两个功能:

A、S7 - 1200 给超级终端发送数据;

B、超级终端给 S7 - 1200 发送数据。对于第一个功能,就是 S7 - 1200 给超级终端发送数据,实际上呢,S7 - 1200 是数据的发送方,超级终端是数据的接收方。对于 S7 - 1200 来说,得编写发送程序;而对于超级终端来讲,只要把超级终端程序打开,把硬件接口参数配置成跟前面 S7 - 1200 的端口参数一样就行啦。

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

①、在PLC中编写发送程序。

在项目管理视图里,您双击“Device”下面程序块里的 Main(OB1),把 OB1 打开,在主程序里调用 SEND_PTP 功能块,就像下面图里显示的这样:(注意啦:SEND_PTP 在指令库下面的扩展指令里的通讯指令下面)

图7: 调用发送功能块

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

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

插入背景 DB 之后,再插入发送缓冲 DB 块。重复上面的步骤,只是在选择 DB 类型的时候选“Global DB”,并且把“Symbolic access only”这个选项的勾去掉(这样就能对这个 DB 块进行直接地址访问啦),给这个 DB 块取名叫 DB_SEND_BUFF 。把这两个 DB 块建好以后,您双击打开 DB_SEND_BUFF,预先定义好要发送的数据,就像下面图里显示的这样:

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

把发送缓冲区定义完以后,接下来就能给 SEND_PTP 赋值参数啦,赋值完参数以后就像下面图里这样:

图10:发送编程

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

图11:String存储格式

上面就把程序编写完成啦,接下来要对项目进行编译。您右键点击 PLC_1 项目,在弹出来的菜单里选择“Complies ALL”这个选项,这样就能对硬件和软件进行编译了,就像下面图里显示的这样:

图12:编译项目

编译完并且没有错误之后,就能够把程序下载到 PLC 里啦。还是右键点击 PLC_1 项目,在弹出来的菜单里选择“Download to Device”。


②、超级终端测试

用串口交叉线把 S7 - 1200 的串口和计算机的串口连接起来,然后打开计算机的超级终端程序,并且按照下面图里的样子设置硬件端口参数:

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

③、在线监控程序

打开 OB1 功能块来在线监控程序,在变量监控表里面强制把 M0.0 设为 1 ,这样就能触发数据的发送。这时候在超级终端就能接收到发送的数据啦,就像下面图里这样:

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

关于第二个功能:超级终端给 S7 - 1200 发送数据,其实 S7 - 1200 是接收数据的一方,超级终端是发送数据的一方。对于 S7 - 1200 得编写接收程序;而对于超级终端来说,只要打开超级终端程序,把硬件接口参数配置得和前面 S7 - 1200 的端口参数一样,在界面上输入要发送的内容就行了。

①、在PLC中编写发送程序。

在项目管理视图里,双击“Device”下面程序块里的 Main(OB1),就能打开 OB1 啦。在主程序里调用 RCV_PTP 功能块,就像下面图里显示的这样:(注意哦:RCV_PTP 在指令库下面的扩展指令中的通讯指令里)

图15: 调用发送功能块

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

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

插入背景 DB 之后,再插入接收缓冲 DB 块。重复上面的步骤,只不过在选择 DB 类型的时候选“Global DB”,还要把“Symbolic access only”这个选项的勾去掉(这样就能对这个 DB 块进行直接地址访问啦),然后给这个 DB 块取名叫 DB_RCV_BUFF 。把这两个 DB 块建好以后,双击打开 DB_RCV_BUFF ,定义接收缓冲区数据的类型,就像下面图里显示的那样:

图17:定义接收缓冲区

定义完接收缓冲区之后,接下来就能给 RCV_PTP 赋值参数啦,赋值参数之后就像下面图里这样:

图18:接收编程

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

图19:String存储格式

上面就把程序编写完成啦,接下来要对项目进行编译。用鼠标右键点击 PLC_1 项目,在弹出来的菜单里选择“Complies ALL”这个选项,这样就能对硬件和软件进行编译了,就像下面图里显示的那样:

图20:编译项目

编译完并且没有错误之后,就能够把程序下载到 PLC 里了。还是用鼠标右键点击 PLC_1 项目,在弹出来的菜单里选择“Download to Device”。


②、超级终端测试

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

在桌面上新建一个文本文件,把这个文本文件打开,在里面输入“gfdcba”,就像下面图里这样:

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

③、发送文本文件

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

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

打开 DB_RCV_BUFF 数据块,在线查看一下接收到的数据,就像下面图里显示的那样:

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

通过上面的例子,实现了一个简单的应用。在实际的应用当中,得按照第三方设备的协议来编写 S7 - 1200 的程序。

西门子S7-1200与第三方设备自由口通信详解 PLC论坛-全力打造可编程控制器专业技术论坛 -

来源:PLC技术玩

相关推荐