• 官方微信

    CA800二维码微平台 大视野

  • 工控头条

    CA800二维码工控头条App

当前位置:自动化网>自动化文库>应用案例>西门子S7-200与安控Super E40系列RTU模块系统自由端口通讯的实现

西门子S7-200与安控Super E40系列RTU模块系统自由端口通讯的实现

发布时间:2010-10-19 来源:中国自动化网 类型:应用案例 人浏览
分享到:
关键字:

RTU

导读:

摘要:介绍了西门子S7-200PLC与安控Super E40系列RTU模块系统进行自由端口模式的通讯,解决了安控RTU模块在缺少AO模块的情况下,如何通过与西门子PLC自由端口通讯,通过西门子的模拟量I/O输出模拟量,从而达到控制...

摘要:介绍了西门子S7-200PLC与安控Super E40系列RTU模块系统进行自由端口模式的通讯,解决了安控RTU模块在缺少AO模块的情况下,如何通过与西门子PLC自由端口通讯,通过西门子的模拟量I/O输出模拟量,从而达到控制电动球阀的目的。给出了西门子S7-200的完整编程程序,以及编程过程中应该注意的问题,具有一定的实用性。

      0 引言

    西门子S7-200系列PLC是西门子家族中最小型的PLC ,除具有的一般功能外,以其强大的通信能力区别于一般的小型PLC ,可通过网络,分布系统轻易的完成复杂的控制要求。S7-200系列PLCCPU在内部都集成了一个或几个通信口,通信口标准为RS485口,利用相应的电缆就能构成具有多种通信功能的复杂通信网络[1]。Super E40系列RTU是安控公司集多年的开发、工程经验设计的新型RTU产品,它可实现对工业现场信号的采集和对现场设备的控制。与常用的可编程控制器PLC相比,具有更优良的通讯能力[2]

      本项目应用到Super E40的A32-M1 CPU模块、A32-L3通信模块、AC101模拟量输入模块、AC133数字量输出模块、AC141脉冲量输入模块。由于缺少模拟量输出模块,而单独购买AO模块价格昂贵,所以本文利用西门子S7-200特有的自由端口通讯模式与安控RTU通讯,安控将采集到的模拟量经过数据转换发送到西门子 S7-200PLC中,西门子通过模拟量输出端口输出电流,驱动球阀达到相应的球阀开度,具有一定的实用性。

 1 系统概述

     本课题来源于本校SRTP项目(大学生科研训练计划项目)和学校实验技术项目,题目为“基于GPRS和RTU的过程控制系统”,该系统是基于PLC模块技术构造的过程控制系统,可用于天然气和流体调压站及管道的安全监控等。

     该平台由一路管道组成,配有压力变送器,电动球阀,差压计,流量计,温度变送器,吸水泵及水箱。控制柜单独放置,控制柜里安装安控Super E40系列RTU模块系统。通过变送器将压力、温度等传感器的信号转换为标准电信号,经由RTU进行信号处理后以有线或无线方式将数据传输到前置机进行数据处理,处理后的控制信号又送至电动球阀并进行实时动作。本项目应用到Super E40的A32-M1 CPU模块、A32-L3通信模块、AC101模拟量输入模块、AC133数字量输出模块、AC141脉冲量输入模块,西门子S7-200,系统总体框图如图1所示。

2 西门子通讯自由端口模式

    CPU的串行通信接口可以由用户程序控制,这种操作模式称为自由端口模式。通过使用接收中断、发送中断、字符中断、发送指令(XMT)和接收指令(RCV),自由端口通信可以控制S7-200CPU通信口的操作模式。利用自由端口模式,可以实现用户定义的通信协议,连接多种智能设备[3]。通过SMB30,允许在CPU处于RUN模式时通信口0使用自由端口模式。CPU处于STOP模式时,停止自由端口通信,通信口强制转换成PPT协议模式,从而保证了编程软件对PLC编程和控制的功能。

     SMB30用于设置端口0通信的波特率和奇偶校验等参数。本文给西门子设定的自由口通信,波特率为9600,数据位8,停止位1,无校验,结束符为 A,其主程序如下所示:

主程序:

网络1:// 设置控制方式为自由口通信方式,启动接收字符中断 //
LD     SM0.1                   //PLC首次扫描

MOVB   16#09, SMB30            //自由口通信,波特率为9600,数据位8,停止位1,无校验

MOVB   16#B0, SMB87            //初始化RCV,允许RCV,有结束符,检查空闲时间

MOVB   16#0A, SMB89            //结束符为 A

MOVB   6, SMB94                //一次接收的最大字符6个

ATCH   INT_0:INT0, 23          //接收完成中断0

ATCH   INT_1:INT1, 9           //接收完成中断1

ENI                            //允许用户中断

RCV    VB199, 0                //端口0的接受缓冲区指针指向VB199

网络2:

LD     SM0.1

CALL   初始化:SBR1             //调用初始化子程序

网络3:

LD     SM0.0

MOVB   1, VB99

MOVW   +1, VW100              //接收到数据后将0送到发送区

网络4:

LD     SM0.5

XMT    VB99, 0                //将数据0从端口0发送出去

 

     西门子模拟量输出端口输出模拟量信号并送入电动球阀,电动球阀做出实时动作。如何控制球阀的开度成为关键问题。PID控制器是应用最广的闭环控制器,但是 PID控制方式主要应用于控制对象的惯性滞后较大时。鉴于本课题对滞后性要求不高,以及模拟量输入输出较少,所以本文给出了一种较为简单的控制方法。

    将球阀开度以10°为单位分为9个区域,9个区域分别对应相应的驱动电流,安控RTU数据字为10000~50000,西门子S7-200数据字为 0~+32000,所分的区域如表1所示。它们之间数据的传送是通过十六进制传输的,西门子接收到的数据为十六进制,并存入指定的单元中。拿安控RTU数据字50000说,将其转换成十六进制数为C350,将两个字节分别存于西门子指定的单元中,最后经过数据转换为十进制数过程中超过范围。所以在处理的过程中运用到一些方法,就是只将第一个字节送到西门子,拿50000来说,只将C3传送到西门子中,转换成相应的十进制数为195,这样就比较好处理。

 

球阀开度

所需的电流

安控RTU数据字

西门子数据字

安控RTU数据字对应的十六进制数

送到西门子中的第一字节对应的十进制数

区域x

4mA

10000

6400

16#2710

39

0≤x≤39

10°

6mA

15000

9600

16#3A98

58

39<x<58

20°

8mA

20000

12800

16#4E20

78

58≤x<78

30°

10mA

25000

16000

16#61A8

97

78≤x<97

40°

12mA

30000

19200

16#7530

117

97≤x<117

50°

14mA

35000

22400

16#88B8

136

117≤x<136

60°

16mA

40000

25600

16#9C40

156

136≤x<156

70°

18mA

45000

28800

16#AFC8

175

156≤x<175

90°

20mA

50000

32000

16#C350

195

175≤x≤195

表1 球阀开度区域

调节球阀开度子程序和初始化子程序如下所示。

 

调整球阀开度子程序:

网络1:

LD     SM0.0

BTI    VB200, VW200      //将接收到的字节数据转换成字 

网络2:                 //分区//

LD     SM0.0

MOVW   +39, VW0

MOVW   +58, VW2

MOVW   +78, VW4

MOVW   +97, VW6

MOVW   +117, VW8

MOVW   +136, VW10

MOVW   +156, VW12

MOVW   +175, VW14

MOVW   +195, VW16

网络3:             //判断是否在175≤x≤195区域,如在输出相应电流,不在执行下面程

序//

LD     SM0.0

LDW>=  VW200, VW14

AW<=   VW200, VW16

MOVW   +32000, AQW0

ENI

网络4—网络11 :判断是否在156≤x<175,136≤x<156,117≤x<136,97≤x<117,78≤x<97,58≤x<78,39<x<58,0≤x≤39区域,其程序与网络3一样。

初始化子程序:

网络1://西门子处于RUN时VW200为0,输出电流4mA //

LD     SM0.1

MOVW   +0, VW200

MOVW   +6400, AQW0

ENI


接收完成中断0和接收完成中断1程序如下:


接收完成中断0INT0

网络1:

LDB=   SMB86, 16#20   //SMB86 等于16#20,表示PLC收到结速符

S      Q1.0, 1        //收到后将Q1.0置1,灯亮

CALL   调整球阀开度子程序:SBR0

CRETI

NOT                   //否则将Q1.0置0,灯灭 

R      Q1.0, 1

RCV    VB199, 0

接收完成中断1INT1

INT1:

网络1:

LD     SM0.0

RCV    VB199, 0          //接收数据

 

3 程序调试

     在编程过程中用到了PLC串口通讯调试软件,软件可以在网上下载。在与安控RTU通讯之前先将西门子S7-200与PC机通讯,检验程序的正确性后再与安控RTU进行通讯调试。在调试西门子S7-200与PC机通讯的过程中出现的问题以及解决方法:

       ①程序跑飞的问题,即在与PC机通讯时,用PLC串口通讯调试软件向PLC中发送数据,当连续地发送数据时,PLC在接收到第一个字符后就会出现通讯错误现象。程序跑飞最主要的原因是程序结构问题,只要精简一下程序结构使其更加结构化,问题就可以解决。

      ②西门子S7-200和安控RTU的波特率,数据位,校验位,停止位不一致。如果两者不完全一致,是不能进行通讯的。

4 总结 

      本文给出了关于西门子S7-200与其他设备之间利用自由端口通讯的完整通讯程序,以及给出的球阀分区域方法有一定的创新性,可以应用于很多领域中,并给出在编程过程中遇到的问题和解决方法,具有很大的实用性,可以应用于实际项目中。

 参考文献:

[1]张维笛,周泽魁,杨丽明,张光新.利用自由通信口模式实现PLC与远程数据终端的信息传送[J]机电工程,2002,19卷,第6期

[2] Super E40系列RTU使用手册

[3]廖常初.PLC编程及应用(第二版)[M]北京:机械工业出版社,2005




本文地址:本文地址: http://www.ca800.com/apply/d_1nrutga2l1ovi_1.html

拷贝地址

上一篇:PLC控制步进电机分度的设计与实现

下一篇:邦纳超声波传感器在自动扶梯行业的应用

免责声明:本文仅代表作者个人观点,与中国自动化网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容!