产品描述
6ES7321-1BL00-0AA0参数详细
可编程序控制器(PLC)都有一个编程口。以日本三菱公司生产的PLC为例(包括FX系列和A系列),其编程口为RS-422格式,根据PLC型号不同又分为8针座编程口和25针座编程口。对于后者,可直接将SC—08编程电缆将PLC的编程口和微型计算机的RS—232口连接起来;对于后者,则还需要一根转换电缆将PLC 的8针座编程口和25针编程电缆相连。无论何种情况,一旦将PLC用户程序由微型计算机编程环境传到PLC 用户程序区,其编程口大多就没有被再利用。其实,这是一种浪费。也就是说,可利用此编程口实现微型计算机和PLC 的数据通讯,将PLC的工作状态纳入微型计算机管理之下。
2 编程口操作命令类型与通讯端口初始化
串行通讯是计算机与其它机器之间进行通讯的一种常用方法,在bbbbbbs操作系统中提供了实现各种串行通讯的API函数。通过SC—08编程电缆或FX232AW模块,可将微型计算机的串行通讯口RS—232和PLC 的编程口连接起来,这样微型计算机就可对PLC的RAM区数据进行读、写操作。由PLC本身所具有的特性,可对PLC进行以下四种类型的操作:
(1)位元件或字元件状态读操作(CMD0);
(2)位元件或字元件状态写操作(CMD1);
(3)位元件强制ON操作(CMD7);
(4)位元件强制OFF操作(CMD8)。
另外,在进行上述四类操作以前,首先要对端口进行初始化操作,即设定通讯协议(包括设置通讯波特率、数据位数、数据停止位及奇偶校验)。在bbbbbbs的SDK中定义了一个结构DCB,该结构详细地说明了如何对通讯端口进行控制,所以通讯端口的初始化也是围绕着对这个结构的正确设置为中心进行的。用VC++语言实现端口初始化如下:
BOOL CSerial::Open(int nPort)
{
//nPort 为微型计算机串行通讯口端口号。nport=1为端口1;nPort=2为端口2。
char szPort\\[15\\];
DCB dob;
m_hIDComDev=CreateFile(szPort, GENERIC_READ│GENERIC_WRITE,O,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL│FILE_FLAG_OVERLAPPED,NULL);
dcb.DCB1ength=sizeof(DCB);
GetCommState(m_hIDComDev,&dcb);//取得通讯资源当前设置
dcb.BaudRate=9600;//设定波特率为9600
dcb.ByteSize=7;//7数据位
dcb.Parity=2;//偶校验
dcb.StopBits=0;//设定1个停止位
if(SetCommState(m_hIDComDev,&dcb)return(TRUE);
else return(FALSE);//设置端口,若设置成功则返回TRUE,否则返回FALSE
}
需要说明的是CSerial是一个用于串行通讯的类,它包含了进行串行通讯的所需的函数。除上述端口初始化成员函数Open外,还包括另两个重要成员函数:一个是endData,把数据从一个缓冲区发送到串行端口。另一个是ReadData,从端口的接收缓冲区中读入数据。
其次,在每进行一次上述四类操作中的一种操作以前,还要进行握手联络。对PLC发请求讯号ENQ(代码为OX05),然后读PLC 的响应讯号。如果读到的响应讯号为ACK(代码为OX06),则表示PLC已准备就绪,等待接收通讯数据。握手联络VC++语言示PLC已准备就绪,等待接收通讯数据。握手联络VC++语言实现为:
BOOL CNTJD1g::ReadFromPLC(char *Read_char char *Read_address,int Read_bytes)
{
CSerial Serial;//用于串行通讯的类
char read_BUFFER;
if(Serial.Open(2)//初始化串行口通讯口COM2
{ Serial.SendData(&ENQ_request,1);//发送联络讯号
Sleep(1000);//等待1秒钟
Serial.ReadData(&read_BUFFER,1);//读取PLC响应讯号
if(read_BUFFER==ACK)
{ 如果PLC响应讯号等于ACK,则进行上述四种操作:}}
Serial.Close()://操作完毕后,关闭通讯口
}
3 编程口命令操作
(1)位元件或字元件状态读操作
操作对象元件:PLC内部的X、Y、M、S、T、C、D元件;命令格式:
说明:①为读命令起始标志STX,代码为OX02;
②为位元件或字元件状态读命令CMDO,命令代码为OX30;
③为读位元件或字元件的4位起始地址,高位先发,低位后发,且是以ASCII码的形式发送;
④为一次读取位元件或字元件的个数,较多一次可读取OXff个字节的元件,以ASCII码的形式发送;
⑤为停止位标志ETX,代码为OX03;
⑥为2位和校验,和累计为②、③、④项代码,取其和较低两位转化成ASCII码,高位先发,低位后发。
在发送完上述命令格式代码后,就可直接读取PLC响应的信息。响应信息格式如下
VC++语言实现:
BOOL CNTJDlg::ReadFromPLC(char *Read_char char
*Read_address, int Read_bytes)
{
char senddatasum_CHECK\\[2\\];char readdatasum_CHECK\\[2\\]; char total_DATABYTES\\[2\\];
char readdatasum_check\\[2\\];int readdata_sum;
int datasum_check=0; int i;
Serial.SendData(&STX_start,1);/向PLC发送“开始”标志代码
Serial.SendData(&CMDO_read,1);//发送“读”命令代码datasum_check+=CMDO_read;
for(i=0;i<4;i++){Serial.SendData(&Read_address\\[i\\],1);//发送起始元件地址的ASCII代码datasum_check+=Read_address\\[i\\];}
Change to ASCII(total DATABYTES,Read_bytes);//将字节数转化成ASCII代码
for (i=0;i<2;i++){Serial.SendData(&total_DATABYTES\\[i\\],1);//发送元件字节数的ASCII代码)datasum_check+total_DATABYTES\\[i\\];}
Serial.SendData(&ETX_end,1);//发送“结束”标志代码senddatasum_CHECK+ETX_end;
Change_to_ASCII(senddatasum_CHECK,senddatasum_CHECK);//将“和”转化成ASCII码
for (i=0;i<2;i++) Serial.SendData(&senddatasum_CHECK\\[i\\],1);
Sleep(1000);//等待PLC响应
Serial.ReadData(&read_BUFFER,1);
if(read_BUFFER==STX_start){
readdata_sum=0;
for(i=0;i<2*Read_bytes;i++){Serial.ReadData(&Read_char\\[i\\],1);//读Read_bytes个字节readdata_sum+Read_char\\[i\\];}
Serial.ReadData(&read_BUFFER,1);
if(read_BUFFER==ETX_end){Serial.ReadData(readdatasum_CHECK,2);//读入的“和”的低2位ASCII码Readdata_sum+=ETX_end;}
Change_to_ASCII(readdatasum_check,readdata_sum);//将计算得到的“和”转化成ASCII码
if(*readdatasum_CHECK==*readdatasum_check)//“和”校验
{ AfxMessageBox(“数据读出成功!”)return TRUE;}
else { AfxMessageBox(“校验错误”)return FALSE.}
}
(2)位元件或字元件状态写操作
操作对象元件:同3(1);命令格式:
说明:①为写命令起始标志STX,代码为OX02;
②为位元件或字元件状态写命令CMD1,命令代码为OX31;
③为写位元件或字元件的4位起始地址,高位先发,低位后发,且是以ASCII码的形式发送;
④为一次写入位元件或字元件的个数,以ASCII码的形式发送;
⑤为待写到PLC RAM区的数据DATA,以ASCII码形式发送;
⑥为停止位标志ETX,代码为OX03;
⑦为2位和校验,和累计为②、③、④项代码,取其和较低两位转化成ASCII码,高位先发,低位后发。
VC++语言实现:
BOOL CNTJDlg::WritePLC(char *data_ADDRESS,char *Write_ASC,int bytesnumber)
{
char total_BYTES\\[2\\];char senddatasum_CHECK\\[2\\];
char read_BUFFER;char read_finishBUFFER;
int datasum_check=0; int i=0;
Serial.SendData(&STX_start,1);//向PLC发送“开始”标志代码
datasum_check=0;Serial.SendData(&CMD1_write,1);//发送“写”命令代码
datasum_check+CMD1_write;
for(i=0;i<4;i++) {Serial.SendData(&data_ADDRESS\\[i\\],1);//发送起始元件地址的ASCII码
datasum_check+=data_ADDRESS\\[i\\];
Change_to_ASCII(total_DATABYTES,bytesnumber);//将字节数转化成ASCII码
for(i=0;i<2;i++)
{
Serial.SendData(&total_BYTES\\,1);//发送元件字节数的ASCII代码
datasum_check+=total_BYTES\\[i\\];}
for {i=0;i {
Serial.SendData(&Write_ASC\\[i\\],1);//发送要写入的数据的ASCII码
datasum_check+=Write_ASC\\[i\\];}
Serial.SendData(&ETX_end,1);//发送“结束”标志代码
datasum_check+=ETX_end;
Change_to_ASCII(senddatasum_CHECK,datasum_check);//将“和”转化成ASCII码
Serial.SendData(&senddatasum_CHECK,2);
Sleep(1000); Serial.ReadData(&read_finishBUFFER,1);
if (read_finishBUFFER==ACK_reply)
{AfxMessageBox(“数据写入 OK”)return TRUE;}
else {AfxMessageBox(“数据写入失败”)return FALSE。}
(3)位元件强制ON操作
操作对象:X、Y、M、S、T、C元件;
命令格式:
说明:①为强制OFF命令起始标志STX,代码为OX02;
②为强制OFF命令CMD8,命令代码为OX38H;
③为强制OFF位元件4位起始地址,高位先发,低位后发,以ASCII码形式发送;
④为停止位标志ETX,代码为OX03;
⑤为2位和校验,和累计为②、③、④项代码,取其和较低两位转化成ASCII码,高位先发,低位后发。
VC++语言实现:
void NTJDlg::ForceOffOperation (char *OFF_Address)
{
int i;
char Sum_Check\\[2\\];
char read_buffer;
int Sum=0;
Serial.SendData(&STX_start,1);//向PLC发送“开始”标志代码
Serial.SendData(&CMD8_ForceOFF,1);//发送“OFF”命令代码
Sum=CMD8_ForceOFF;
for (i=0;i<4;i++) {
Serial.SendData(&OFF_Address\\[i\\],1);//发送起始元件地址的ASCII码
Sum+=OFF_Address\\[i\\];}
Serial.SendData(&ETX_end,1);//发送“结束”标志代码
Sum+=ETX_end;
Change_to_ASCII(Sum_Check,Sum);//将“和”转化成ASCII码
Serial.SendData(&Sum_Check,2);
Skeeo(1000);
Serial.ReadData(&read_buffer,1);
if(read_fininhBUFFER==ACK_reply) AfxMessageBox(“OFF 操作 OK ”);
else AfxMessageBox(“OFF 操作失败”)。
}
注意:必须严格按照上述四种操作命令格式进行发送,在发送前,起始地址、数据、数据个数、校验和都必须按位转换成ASCII码。从PLC读到的数据亦是ASCII码形式,需要经过适当转换才能利用。另外,要注意强制命令地址与读写地址的顺序不是一样,且一次较多只能传送64个字节数据。
4 结论
利用上述四种操作命令,就可对PLC的RAM区数据进行管理操作。将PLC的工作状态纳入微型计算机管理之下。在此基础上,用户可以应用VC很方便地设计自己的PLC人机接口界面,为监控与管理PLC的运行提供一种良好的方法。
现场情况
油田油井十分分散,往往离采油厂几公里甚至几十公里,因此,输送及天然气的管线遍布油区各地,要想实时获得每口井以及各个区域的采油/气量十分困难,多年来,各大油田的采油站、联合站、运销处等大都采用各采油站填写报表的形式统计每天每口井以及各个区域的采油/气量,然后通过累加的方式获得月产量,这样的方法不但要花费大量的人力和物力,很易出错, 而且在时间上也严重滞后,采油厂、油田很难动态掌握每口井甚至每个区域的采油情况,对突发事件难以做出迅速反应,有时甚至造成重大损失。因此,给油田管理带来诸多不便,对油田整体效益的提高造成重大影响。
系统组成
其主要部分有: 科昊公司KH300G彩色无纸记录仪、涡街流量变送器、压力变送器 、Pt100热电阻以及无线通讯设备和后方计算机系统。
该系统的核心是科昊公司KH300G彩色无纸记录仪,该产品是厦门科昊自动化有限公司研发、生产的,是以CPU为核心,辅以大规模集成电路和图形液晶显示器的新型智能化记录仪表,其性能、技术指标达到了国际水平,与同类产品相比,该记录仪有许多*到之处,特别适合油田现场较为复杂的显示和控制需要。首先,它质量可靠,性能稳定,在线校正,能够适应油田现场恶劣温度与电磁环境,另一方面,它所有输入、输出信号全隔离,并实现智能调理、万用输入功能,各种信号可直接输入,记录仪内部可自动识别,且可以为一次仪表提供全隔离配电,使用、维护非常方便;第三方面,精度非常高,可达到千分之一的精度;*四,高性价比。不但能显示、记录,而且具有调节、报警输出功能,特别适于高度分散,既需显示,又需控制的油田现场;*五,其内部固化了常规控制算法、常用介质温压补偿等功能块;*六,它具有通讯和联网功能,记录仪上可配有两个RS-485接口和一个RS-232接口,使用它们可方便的组成网络,另外,体积小、容量大。
较多可达16个输入通道,同时可有8个开关量输出。
在本应用案例中,该系统主要用于采油站、联合站对每口井以及各个区域采油、气量的实时显示、记录,并把实时数据通过无线的方式传送给采油厂的调度中心,并可对各个实时数据进行累计,生成相应报表。
在该系统中,一般配10个输入通道、4各输出通道、6个开关量输出的科昊公司KH300G彩色无纸记录仪。根据每个采油站、联合站的具体情况,其配置作相应改变,但较多可配16通道(包括输出通道)和12个开关量输出,如果一台无纸纪录仪不能满足需要,可配多台,多台记录仪可公用一台无线发射装置,作为和基地通讯的通道。
对于,由于其为液体,不需进行温度压力补偿,对于天然气,其流量累计采用了科昊公司KH300G彩色无纸记录仪内部集成的**的温度、压力补偿算法。
系统主要功能
该系统虽然硬件结构简单,投资少,但它不但实现了油田采油量的实时采集、显示,为油田的管理上一台阶,而且可以大大减少意外事故损失,其主要功能有:
● 及时性。油田后方能够实时掌握每个区域、甚至每口油、气井的生产动态,为快速制定生产和经营方案提供决策依据。
● 自动报警系统。在出现意外情况,如输油管线破裂,造成主管流量和分支管线流量之和产生较大差异,上位计算机经运算发出报警,提醒用户及时采取措施,减少事故损失。
● 在局部区域,如一个采油站或联合站内,出现异常情况,如某管线压力严重下降,可自动关闭相关阀门,防止事故发生。
● 提高统计数据的准确性。本系统提供各种形式的自动报表,不但节约大量人力,也减少了因认为因素造成的误差。
● 系统维护量小。由于采用了无线通讯技术,野外没有通讯线路,可大大减少维护量。
● 在采油站、联合站也可监控每口井或每个采油站的生产情况,不但有瞬时流量,而且有累计流量;各参数不但有棒图指示,而且有历史曲线显示,各项参数一目了然。
● 针对天然气的特点,我们在记录仪内集成了其**流量累积计算算法,其温度、压力补偿计算公式如下:
● 后方作为数据服务器的计算机通过无线方式接收数据后,不但本机可以显示、进行数据处理和报表打印,而且可通过网络达到数据共享。
● 双重记录功能。无纸记录仪和后方计算机同时记录,互为冗余,可较好的防止数据丢失,即使计算机中的数据由于各种原因丢失,可方便的从记录仪中取回历史数据。
● 本系统现场部分采用无纸记录仪,集、控制、记录、显示于一体,结构简单,功能强大。
● 配备了配套的计算机管理软件,用户可根据需要,十分方便的组态自己所需的画面及处理数据。
小 结
总之,该系统把科昊公司KH300G彩色无纸记录仪和无线通讯技术**结合,有效的解决了油田采油系统数据实时采集和处理问题,为油田的管理上一个台阶,而且可有效防止局部事故的发生,或在发生事故时提供报警,为处理事故赢得宝贵时间,降低事故损失
工源水泥厂是建材行业的大型骨干企业之一,现有4台带余热锅炉干法中空水泥回转窑。其中#1,#2窑的规格为Φ3.3m×70m,#3窑的规格为Φ3.3m×58m, #4窑的规格为Φ4.0m×70m;年产水泥>100万t。熟料煅烧是水泥生产过程中的中心环节,对熟料煅烧系统中的主要热工参数:窑尾温度、窑速、负压等进行准确的检测并合理地控制,有助于保证水泥生产工艺设备性能的充分发挥及长期安全运转,从而实现高产优质低耗生产。该公司从2005年8月起采用集测量与管理为一体的KH300BM十六通道蓝屏无纸记录仪检测#1、#2窑上的尾温、负压、转速及#4窑的料仓仓重等七项参数,效果良好。1、KH300BM十六通道蓝屏无纸记录仪简介
KH300BM十六通道蓝屏无纸记录仪(以下简称KH300BM无纸记录仪)是无纸记录仪的*三代产品,它采用了宽视角、宽温度塑料工业网版权所有,640×480点阵液晶显示记录曲线;FLASH RAM快速存储数据;高可靠USB数据备份三项新技术。我公司KH300BM无纸记录仪共有16个全智能模拟输入通道,体积小、功耗低,可直接接收热电阻、热电偶及标准信号的输入。因此,对于窑尾温度用热电偶检测后产生的电压信号(mV),可以直接输入到DR记录仪的通道中;而窑的转速、负压及料仓的仓重信号只需转化成4~20mA标准信号后即可送到KH300BM无纸记录仪的通道中。
2、KH300BM无纸记录仪的现场操作及显示
安装在#1、#1窑头操作控制台上的KH300BM无纸记录仪,通过对窑尾温度、窑速、负压及仓重的检测,将结果以数值的方式或者是以曲线的方式在其液晶显示屏上进行实时显示。现场共设有八种显示画面,其中的主画面能同时显示检测的七项参数。#1、#2窑头的看火工根据主画面的显示结果以及自已多年的观火经验金属加工网,可及时地调整窑的运转状态。如:在主画面上显示检测的尾温过高或者过低时,就要及时调整喷煤量的大小,从而保生产出质量好、产量高、消耗低的熟料。另在主画面上设置有各种的功能按钮,可方便地进行如:画面选择、通道选择、历史记录的追忆以及数据存盘等操作.
3、KH300BM无纸记录仪在计算机上的管理操作显示
KH300系列无纸记录仪无纸记录仪中配有我公司专业数据分析软件。该软件是采用VB开发研制的并可以安装在办公室的管理计算机上。其功能设置为:读数据软盘、显示选择(数字显示和流量累计显示)、打印、放缩及量程。进入该软件后,即可调出现场复制数据盘中的数据,并在屏幕上以数字或曲线的方式显示,或者从打印机中打印出来,做为长期保存或管理生产使用。
4、使用效果
虽然KH300BM无纸记录仪只是对现场数据的检测塑料工业网,不直接控制生产,但其的真实可靠,从而为窑头看火工保证窑始终处于良好的运转状态提供了及时可靠的信息和依据,达到了采用闭环控制系统所能带来的效果。经过近两年的使用,其使用优势及其效果如下:
(1)尾温控制稳定,有据可查,基本上杜绝了高尾温操作现象。安装DR记录仪前,交接班时的尾温**高造车网,责任不清,安装KH300BM无纸记录仪后,不仅可准确确定交接班时的尾温,为考核提供依据;而且对尾温控制提供了精确的数据,保证了工艺制度的有效执行,大大减少了结圈现象。
(2)对负压的控制起到了有效的监督作用。排风机转数直接控制窑内的通风量,在安装KH300BM无纸记录仪以前,负压控制没有有效的监测手段。如个别看火工私自加大排风以利于自已班内的产量提高,但对整个窑的稳定有相当大的负面影响,容易造成结后圈现象。安装KH300BM无纸记录仪后,可对负压进行有效的监测,对回转窑的稳定运转起到了积极的作用。
(3) 对窑转速的监测。我厂#1、#2窑在窑传动方面要求不许**过1r/min,**过这个转数回转窑会出现不平稳运转,对窑衬有影响。自采用DR记录仪后,随时可对窑速进行监控,杜绝了**窑速现象。
(4) 对回转窑生料仓重的有效监测。自使用KH300BM无纸记录仪对生料仓重监测以来,生料仓重一制在12t以上,杜绝了低库位的现象,对窑内的物料稳定起到了决定作用。
经过近2年的使用,得到该公司一致**,认为KH300BM无纸记录仪的测量准确度、显示读数以及数据记录等都令人比较满意,而且基本上达到了免维护状态。另外,由于该无纸记录仪采用了先进的微机技术,做到了**模拟输入、体积小、功耗低、通用性广、独立性强、画面色彩鲜艳、读数直观、反映灵敏可靠、数据保存、追忆都十分方便,是集测量和管理为一体的较好设备,因此,我们认为该记录仪不仅可以用于回转窑上,而且还可以用于水泥企业其它设备参数的检测造车网,也可用于其它行业
产品推荐