作为中国自动化领域的权威旗舰网络媒体,控制网创立于1999年7月,是中国举行的第十四届IFAC (International Federation of Automatic Control)大会的中国官方组织机构的唯一指定网站。控制网是中国自动化学会专家咨询工作 委员会(ECC)的秘书处常设之地。是北京自控在线文化传播有限公司开设的网站。
标题 | PLC在SmartPro DCS系统中的应用 | ||||||||||||||||||||||||||||||||||||||||||||
技术领域 | 电源 | ||||||||||||||||||||||||||||||||||||||||||||
行业 | |||||||||||||||||||||||||||||||||||||||||||||
简介 | |||||||||||||||||||||||||||||||||||||||||||||
内容 |
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. 3.1 S7-200 PLC与上位机之间的通信
其中各段指令含义如下: 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:起始字符,本工程以“#”字符的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:
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所示。
5 结束语 |