企业简介

作为中国自动化领域的权威旗舰网络媒体,控制网创立于1999年7月,是中国举行的第十四届IFAC (International Federation of Automatic Control)大会的中国官方组织机构的唯一指定网站。控制网是中国自动化学会专家咨询工作 委员会(ECC)的秘书处常设之地。是北京自控在线文化传播有限公司开设的网站。

  • 公司类型:其他

联系方式
  • 控制网
  • 地址:北京市海淀区上地十街辉煌国际2号楼1504室
  • 邮编:100085
  • 电话:010-57116291 / 59813326
  • 传真:010-59813329
  • 网址:http://www.kongzhi.net
  • Email:mahongliang@kongzhi.net
  • 联系人:市场部
案例详细
标题PLC在SmartPro DCS系统中的应用
技术领域电源
行业
简介
内容



    陈达军 (1981—)
男,江苏建湖人,本科,热控专工,毕业于南京航空航天大学自动化学院,现就职于宝应协鑫生物质环保热电有限公司生产管理部。

摘 要:以入厂煤量信号送入SmartPro DCS系统为例,系统地讲述了S7-200 PLC在SmartPro DCS控制系统中的具体应用,以及S7-200 PLC通过自由口和上位机通信的实现方法等。

关键词:SmartPro;DCS;PLC;自由口;通信;DELPHI

Abstract:By introducing how to send the input coal quantity into smartPro DCS system, this paper give a sysmatic representation of the concrete application of S7-200PLC in SmartPro DCS control system,   and introduces a method of the freeport communication between S7-200 PLC and PC.

Key words: SmartPro;DCS;PLC;freeport;communication;DELPHI

1  引言

    宝应协鑫生物质环保热电有限公司码头两台料斗秤原采用就地方式控制,两台秤重仪表和两台日本松下PLC分别通过RS-422接口与码头控制计算机通信,现因集团实施ERP项目,需要将两台料斗秤的秤重数据实时在线送入到全厂DCS系统中。因当初仪表选型问题两台料斗秤秤重仪表均无称重脉冲输出信号,且距离DCS控制室较远,约有1000米的距离,所以采用RS-485的方式将两台料斗秤的入厂煤量等信号直接从码头控制计算机送入到安装于DCS现场控制站内的S7-200 PLC中,而S7-200 PLC同时作为SmartPro DCS控制系统的DP从站,再将入厂煤量信号送入到DCS系统中。方案示意图1所示。

2 系统概述

    SmartPro DCS系统是北京和利时公司设计、开发的分布式控制系统,其现场控制站内部基于Profibus-DP现场总线通信,可以通过串口MPI、以太网以及DP总线等方式将一种PLC接入到SmartPro DCS系统中。该方案中采用DP协议与DCS系统中控制器建立通信连接,简单方便、稳定高效。

    SIMATIC S7-200系列PLC是德国西门子公司生产的具有高性能价格比的微型可编程控制器,由于它具有高可靠性、指令丰富、内置功能丰富、强劲的通讯能力等优点而得到广泛的应用。S7-200支持多种通讯协议,如点到点接口协议(PPI)、多点接口协议(MPI)、Profibus DP协议以及自由口协议等。PPI等通讯协议主要用于西门子公司系列产品之间的通讯以及对PLC编程,而在自由口模式下,可由用户控制串行通讯接口,实现用户自定义的通讯协议。用户可以调用接收中断、发送中断、发送指令(XMT)、接受指令(RCV)来控制通信操作。可以说,在PLC与上位机PC的通讯方式上,自由口通讯是一种灵活而廉价的方式。

3 通讯方案的设计

    在该工程中,选用了CPU224XP型PLC,该可编程控制器具有两个RS-485通信接口,其中自由口0用来与上位机码头控制计算机之间的通信,自由口1留作备用;同时该PLC通过EM277 PROFIBUS-DP扩展模块作为SmartPro DCS系统的DP从站,将入厂煤量数据信号送入到DCS系统中。该工程中通讯方案的设计包括了S7-200 PLC与上位机之间的通信和S7-200 PLC与SmartPro DCS系统的通信两部分内容。

    3.1 S7-200 PLC与上位机之间的通信

    通过PLC的自由口通信,必须自定义两者之间的通讯协议。在上位机与PLC的通讯中,PLC作为从站,只有接收到计算机的命令帧后才会返回响应帧,不会主动发送数据。

    上位机发送给PLC的指令格式为:

 S

 T

V

M


    其中各段指令含义如下:

    S:起始字符,本工程以“#”字符的ASCII码为起始字符,占1个字节;

    T:指令类型,01H表示读取指令,02H表示写指令,占1个字节;

    P:目标PLC站地址,采用十六进制ASCII码表示,本工程中目标PLC站地址为02H,占2个字节;

    V:目标寄存器地址,采用十六进制ASCII码表示,占8个字节;

    M:读/写字节数,采用十六进制ASCII码表示,占2个字节;

    D:要写入的数据,采用十六进制ASCII码表示,占16个字节;

    B:校验码,采用十六进制ASCII码表示,占2个字节;

    E:结束字符,本工程以“&”字符的ASCII码为结束字符,占1个字节。

    PLC反馈给PC机的数据格式为:

 S

 T

 D

 B

 E



    其中各段指令含义如下:

    S:起始字符,本工程以“#”字符的ASCII码为起始字符,占1个字节;

    T:状态信息,采用十六进制ASCII码表示,01H 读取正确,02H 写入正确,03H BCC码校验错误,04H 指令不合法,占1个字节;

    D:返回的数据区,采用十六进制ASCII码表示,占16个字节;

    B:校验码,采用十六进制ASCII码表示,占2个字节;

    E:结束字符,本工程以“&”字符的ASCII码为结束字符。

    这里采用了BCC校验码的方法来检查接收到的指令是否正确,以防止错误指令的执行。同时,指令中目标PLC站地址、目标寄存器地址、要写入的数据等部分均采用十六进制ASCII码表示,以文本的方式来传递二进制数,以避免当传递如24H数据时使PLC误认为是结束字符而停止接收。

    3.2  S7-200 PLC与SmartPro DCS系统的通信

    S7-200 PLC与SmartPro DCS系统两者之间的通信任务主要是确定通讯区,根据Profibus-DP协议的规定,通讯区的大小不能随意指定,只能在几种预定值中选择一种或几种组合。该工程中约定如下:通信区的起始地址为PLC寄存器地址的VB200,大小为16个字节,分别为4Word的输入区和4Word的输出区,通信区具体配置见表1。

    表1:

 PLC寄
存器地址

 输入/输出
区分配

 具体含义

 VB200

DP_RECV1 

其中V201.0,作为从DCS接收的是否设置入厂煤量初始值的开关量信号 

 VB201

DP_RECV2

 VB202

DP_RECV3

备用 

 VB203

DP_RECV4 

VB204
VB205

DP_RECV5
DP_RECV6

合成为VW204
作为从DCS接收入厂煤量初始值的高16位
 

VB206
VB207

DP_RECV7
DP_RECV8

合成为VW206 
作为从DCS接收入厂煤量初始值的低16位

VB208
VB209

DP_REDV1
DP_REDV2

合成为VW208
作为送入DCS的入厂煤量累计值的高16位 

VB210
VB211

DP_REDV3
DP_REDV4

合成为VW210
作为送入DCS的入厂煤量累计值的低16位 

VB212
VB213

DP_REDV5
DP_REDV6

 备用

VB214
VB215

DP_REDV7
DP_REDV8

 备用


4 具体实现
 
    根据上述通讯方案,实现将入厂煤量信号传送到DCS系统需要下述三步实现。

    4.1  SmartPro DCS侧组态

    首先将EM277 PROFIBUS-DP模块最新的GSD文件siem089d.gsd拷贝到DCS侧组态软件ConMaker的相应目录下C:\Target\Hollysys\PCBaseIO\,然后重新启动ConMaker软件,这样ConMaker软件才能识别新加入的GSD文件。

    在MACS配置处点击“Append Dp-slave”菜单添加EM277 PROFIBUS-DP模块,设置对应的DP从站号。然后根据上述通讯方案设置通讯区的大小和起始地址。

    最后是算法组态,注意从PLC得到的入厂煤量高16位RCMLJ_HIGH和入厂煤量低16位RCMLJ_ LOW与DCS中最终入厂煤量累计值RCMLJ有如下公式的换算关系:RCMLJ := (RCMLJ_HIGH * 65536 + RCMLJ_LOW) /1000。入厂煤量的初始值送入PLC与此类似,这里不再阐述。

    组态程序编译无误后,下装到DCS下层控制器即可。

    4.2  S7-200 PLC侧组态

    S7-200 PLC作为数据中转站,不但需要完成和上位机通信的任务,接收上位机发送来的入厂煤量净重等信号,并且要将入厂煤量数据累计值传送到与SmartPro DCS系统约定的通讯区中。

    首先直接将DP总线连接到EM277的DP口,通过硬拨码开关设定EM277 DP从站号,本工程的从站号为15。注意:每次重新设置EM277 DP从站号需要重新启动运行PLC。然后根据所需通讯的变量数目,双方协商设定通讯区的大小,来确定通讯区的起始地址和长度,对于CPU224XP的最大起始地址为10239,本例中起始地址为200,该起始地址和通讯区长度大小由上述DCS侧组态时设置,PLC侧只需要将要发送给DCS的数据赋值给指定区域即可。注意该起始地址是指变量存储区(V存储区)的地址。

    PLC组态程序分为主程序、接收中断程序和发送中断程序等几部分。主程序完成初始化通信口、开中断、逻辑判断、发送数据等功能, 接收中断程序和发送中断程序分别完成接收和发送数据的功能。接收指令(RCV)启动或终止接收信息功能,必须为接收操作指定开始和结束条件。发送指令(XMT)在自由口模式下依靠通讯口发送数据。下面以STL语言给出部分示例代码。

    设置自由端口0的通讯方式:

LD      SM0.0
MOVB   2#1001, SMB30  //设置端口0为自由口"9600,N,8,1"
MOVB   2#11100100, SMB87
MOVB   16#23, SMB88
MOVB   16#24, SMB89
MOVW   +1000, SMW92
MOVB   35, SMB94
R       SM87.2, 1
S       M0.7, 1

    通讯0接收信息完成执行RCVcomplete程序:

LD      SM0.0
ATCH    RCVcomplete:INT1, 23       //端口0接收完成的中断

    通讯0发送信息完成执行XMTcomplete程序:

LD      SM0.0
ATCH    XMTcomplete:INT2, 9        //端口0发送完成的中断

    将入厂煤量净重信号累加,并将上一次煤量净重信号清零:

LD      SM0.0
+D      VD284, VD292
MOVD   +0, VD284

    将入厂煤量累计值信号送入DCS系统:

LDB=    SMB224, 2
MOVD    VD292, VD208

    条件满足时给入厂煤量累计赋初始值:

LD      V201.0
MOVD    VD204, VD292
R       V201.0, 1 

    4.3  上位机软件设计

    这里以在Delphi开发环境中上位机向PLC写入厂煤净重数据为例,说明上位机软件的开发过程。

Var
SendBuf: array[0..32] of Byte;
SendBuf[0]  := Byte($23);      // 起始标志符
SendBuf[1]  := Byte($02);      // 代表写操作
// 目标PLC站地址(十六进制ASCII码)
SendBuf[2]  := Byte($30);      // PLC地址的ASCII码高字节
SendBuf[3]  := Byte($32);      // PLC地址的ASCII码低字节
// 目标寄存器地址(十六进制ASCII码)
// VB284的地址表示为:08 00 01 1CH的相应ASCII码
SendBuf[4]  := Byte($30);      // 0 的ASCII码
SendBuf[5]  := Byte($38);      // 8 的ASCII码
SendBuf[6]  := Byte($30);      // 0 的ASCII码
SendBuf[7]  := Byte($30);      // 0 的ASCII码
SendBuf[8]  := Byte($30);      // 0 的ASCII码
SendBuf[9]  := Byte($31);      // 1 的ASCII码
SendBuf[10] := Byte($31);      // 1 的ASCII码
SendBuf[11] := Byte($43);      // C 的ASCII码   
// 读/写字节数M(十六进制ASCII码)
SendBuf[12] := Byte($30);      // 0 的ASCII码
SendBuf[13] := Byte($38);      // 8 的ASCII码
// 要写入的数据      
StrJZ := IntToHex(StrToInt(Edit1.Text), 8);
StrLCopy(@SendBuf[14], @StrJZ[1], Length(StrJZ));
// 计算BCC校验码
BCC := BccCheck(SendBuf, 1, 29);
StrBCC := IntToHex(BCC, 2);
StrLCopy(@SendBuf[30], @StrBCC[1], Length(StrBCC));   
// 结束标志符
SendBuf[32] := Byte($24);
// 发送数据
SendData;

    程序执行效果如图2所示。



图2  程序执行结果示意图

5  结束语

    将入厂煤量信号送到SmartPro DCS系统可以通过几种方式实现,但考虑到系统整体的安全性、稳定性、扩展性和经济性,我们采用了此种方式,经过现场试验测试和实际运行,此方式为一种切实可行的方式,且相比其他实现方式,该方案既节约了项目成本,又更好地实现了既定的目标,与DCS系统实现软通信,不占用DCS系统硬件资源,对DCS系统的稳定运行几乎没有影响,系统安全性和可靠性大大增强。

作者信息:

    陈达军,杨  华(宝应协鑫生物质环保热电有限公司,江苏  扬州  225800)