资源描述
1 组态软件
1.1工业组态软件的概念
工业组态软件简称为组态软件,是一个快速建立计算机监控系统界面的软件工具,组态软件通常运用与个人计算机平台,并与各类控制设备一起组成计算机监控系统。其中,各类控制设备通称为下位机,而运行组态软件的计算机称为上位机。组态软件支持的下位机设备包括:PLC,PC板卡,仪表,变频器,模块等设备。
1.2工业组态软件的产生及国内发展状况
在工业组态软件出现之前,要实现某一监控任务,往往通过手工编写程序来实现。编写程序不但工作量大,开发时间长,效率低,而且可靠性差,程序的通用性差,很难与其系统进行数据的交互,往往不能满足系统升级的要求。
随着工业计算机控制系统的应用普及,在面临规模更大,控制更复杂的控制系统时,人们逐渐认识到原有的上位机的弊端。同时,管理信息系统和计算机集成制造系统的大量应用,要求工业现场为企业的生产,经营,决策提供了更多更详细更深入的数据,以便优化企业经营中的各个环节。
组态软件产品诞生于20世纪80年代初期,并在80年代末进入我国,在90年代中后期以来,组态软件在国内的应用逐渐得到了普及。随着组态软件技术的快速发展,实时数据库,实时控制,通信及连网,开放数据接口,对I/O设备的广泛支持已经成为它的主要内容,在工业自动化领域得到越来越广泛的应用。
国际比较典型的组态软件有,美国Wonderware公司的InTouch组态软件,Intellution公司的iFIX组态软件,德国西门子公司的WinCC组态软件。国内第一家较有影响力的是亚控科技推出的组态王(KINGVIEW),后来陆续出现了通态软件公司的MCGS组态软件以及大庆三维公司的力控(ForceControl)等一系列产品。
1.3工业组态软件的基本结构特点
组态软件产品具有类似的功能,比如几乎所有的组态软件都采用类似资源浏览器的窗口结构,并且对工业控制系统中的各种资源(设备,变量,画面等)进行配置和编辑;都提供多种数据驱动程序;都使用脚本语言提供二次开发的功能等。从形式上看,各种组态软件提供实现这些功能的方式方法却各不相同。
1.4工业组态软件的功能及发展方向
组态软件的主要功能:
l 数据采功能
l 组态软件提供多种数据采集程序,用户可以进行应用配置。
l 脚本语言编写功能
l 脚本语言是扩充组态软件功能的重要手段。例如支持:C语言,Basic语言,VB 等。
l 组态软件的可扩展性功能
l 组态软件在不改变原有系统的情况下,向系统内增加新的功能,这种功能的增加由组态软件的开发商提供第三方软件,用户自身开发。
l 对Internet的支持功能
l 现代企业的生产已经趋向国际化,分布式的生产方式。Internet将是实现分布式生产的基础。
l 组态软件的控制功能
l 如软PLC功能,先进过程控制等。
组态软件的发展方向:
未来的组态软件将能提供更强大的分布式环境下的组态功能,全面支持过程控制,嵌入技术等,工业标准,控制功能强,并能通过Internet进行访问的开放式系统。
1.5工业组态软件的在自动控制系统中所处地位
在自动监控系统中,投入运行的监控组态软件是系统的数据收集处理中心,远程监视中心和数据转发中心,处于运行状态的监控软件与各种控制,检测设备(如智能能仪表,DCS等)共同构成快速响应的控制中心。
1.6组态王(KINGVIEW)软件介绍
1.6.1组态王的基本组成
组态王软件包括有工程管理器,工程浏览器和画面运行系统三部分组成。其中,工程浏览器内嵌组态王画面开发系统,生成人机界面工程。界面开发系统中的组态设计的界面工程将在画面系统中运行。
1.6.2组态王的版本类型
组态王包括五种类型,多个规格。
l 开发版
开发版分为64点,128点,256点,512点,1024点,不限点共六种规格;内置编程语言;支持网络功能;内置高速历史库;内置WEB浏览器;支持运行在线8小时。
l 运行版
运行版分为64点,128点,256点,512点,1024点,不限点共六种规格;支持网络功能,可选用通信驱动程序。
l NetView版
有512点,不限点两种规格;支持网络功能,可选用通信驱动程序。
l For Internet应用版
有5用户,10用户20用户,50用户,无限用户五种;
l 演示版
支持64点;内置编程语言;在线运行2小时;可选用通讯驱动程序。
1.6.3组态王的软PLC功能
KingACT是基于PC建立的实时性控制软件,他以Windows2000/WindowsNT4.0中文操作系统做为操作平台。符合IEC标准的PLC编程语言。KingACT分为开发系统和运行系统两部分,可以实现PLC的部分功能。
2 可编程序控制器
2.1可编程序控制器的概念
可编程控制器(PROGRAMMABLE CONTROLLER,简称PC)。与个人计算机的PC相区别,用PLC表示。
PLC是在传统的顺序控制器的基础上引入了微电子技术、计算机技术、自动控制技术和通讯技术而形成的一代新型工业控制装置,目的是用来取代继电器、执行逻辑、计时、计数等顺序控制功能,建立柔性的程控系统。国际电工委员会(IEC)颁布了对PLC的规定:可编程控制器是一种数字运算操作的电子系统,专为在工业环境下应用而设计。它采用可编程序的存贮器,用来在其内部存贮执行逻辑运算、顺序控制、定时、计数和算术运算等操作的指令,并通过数字的、模拟的输入和输出,控制各种类型的机械或生产过程。可编程序控制器及其有关设备,都应按易于与工业控制系统形成一个整体,易于扩充其功能的原则设计。
PLC具有通用性强、使用方便、适应面广、可靠性高、抗干扰能力强、编程简单等特点。可以预料:在工业控制领域中,PLC控制技术的应用必将形成世界潮流。
PLC程序既有生产厂家的系统程序,又有用户自己开发的应用程序,系统程序提供运行平台,同时,还为PLC程序可靠运行及信息与信息转换进行必要的公共处理。用户程序由用户按控制要求设计。
2.2可编程序控制器的结构及功能
一般讲,PLC分为箱体式和模块式两种。但它们的组成是相同的,对箱体式PLC,有一块CPU板、I/O板、显示面板、内存块、电源等,当然按CPU性能分成若干型号,并按I/O点数又有若干规格。对模块式PLC,有CPU模块、I/O模块、内存、电源模块、底板或机架。无论哪种结构类型的PLC,都属于总线式开放型结构,其I/O能力可按用户需要进行扩展与组合。PLC的基本结构框图如下:
接口部件输出
输入接口部件
中央处理单元
CPU板
接受 驱动
现场信号 受控元件
电 源 部 件
图2.1 PLC的基本结构框图
2.2.1 CPU的构成
PLC中的CPU是PLC的核心,起神经中枢的作用,每台PLC至少有一个CPU,它按PLC的系统程序赋予的功能接收并存贮用户程序和数据,用扫描的方式采集由现场输入装置送来的状态或数据,并存入规定的寄存器中,同时,诊断电源和PLC内部电路的工作状态和编程过程中的语法错误等。进入运行后,从用户程序存贮器中逐条读取指令,经分析后再按指令规定的任务产生相应的控制信号,去指挥有关的控制电路,
与通用计算机一样,主要由运算器、控制器、寄存器及实现它们之间联系的数据、控制及地址总线构成,还有外围芯片、总线接口及有关电路。它确定了进行控制的规模、工作速度、内存容量等。内存主要用于存储程序及数据,是PLC不可缺少的组成单元。
CPU的控制器控制CPU工作,由它读取指令、解释指令及执行指令。但工作节奏由振荡信号控制。
CPU的运算器用于进行数字或逻辑运算,在控制器指挥下工作。
CPU的寄存器参与运算,并存储运算的中间结果,它也是在控制器指挥下工作。
CPU虽然划分为以上几个部分,但PLC中的CPU芯片实际上就是微处理器,由于电路的高度集成,对CPU内部的详细分析已无必要,我们只要弄清它在PLC中的功能与性能,能正确地使用它就够了。
CPU模块的外部表现就是它的工作状态的种种显示、种种接口及设定或控制开关。一般讲,CPU模块总要有相应的状态指示灯,如电源显示、运行显示、故障显示等。箱体式PLC的主箱体也有这些显示。它的总线接口,用于接I/O模板或底板,有内存接口,用于安装内存,有外设接口,用于接外部设备,有的还有通讯接口,用于进行通讯。CPU模块上还有许多设定开关,用以对PLC作设定,如设定起始工作方式、内存区等。
2.2.2 I/O单元
PLC的对外功能,主要是通过各种I/O接口模块与外界联系的,按I/O点数确定模块规格及数量,I/O模块可多可少,但其最大数受CPU所能管理的基本配置的能力,即受最大的底板或机架槽数限制。I/O模块集成了PLC的I/O电路,其输入暂存器反映输入信号状态,输出点反映输出锁存器状态。
2.2.3电源模块
有些PLC中的电源,是与CPU模块合二为一的,有些是分开的,其主要用途是为PLC各模块的集成电路提供工作电源。同时,有的还为输入电路提供24V的工作电源。电源以其输入类型有:交流电源,加的为交流220VAC或110VAC,直流电源,加的为直流电压,常用的为24V。
2.2.4 底板或机架
大多数模块式PLC使用底板或机架,其作用是:电气上,实现各模块间的联系,使CPU能访问底板上的所有模块,机械上,实现各模块间的连接,使各模块构成一个整体。
2.2.5 外部设备
外部设备是PLC系统不可分割的一部分,它有四大类:
编程设备:有简易编程器和智能图形编程器,用于编程、对系统作一些设定、监控PLC及PLC所控制的系统的工作状况。编程器是PLC开发应用、监测运行、检查维护不可缺少的器件,但它不直接参与现场控制运行。
监控设备:有数据监视器和图形监视器。直接监视数据或通过画面监视数据。
存储设备:有存储卡、存储磁带、软磁盘或只读存储器,用于永久性地存储用户数据,使用户程序不丢失,如EPROM、EEPROM写入器等。
输入输出设备:用于接收信号或输出信号,一般有条码读入器,输入模拟量的电位器,打印机等。
2.2.6 网络功能
PLC具有通信联网的功能,它使PLC与PLC 之间、PLC与上位计算机以及其他智能设备之间能够交换信息,形成一个统一的整体,实现分散集中控制。现在几乎所有的PLC新产品都有通信联网功能,它和计算机一样具有RS-232接口,通过双绞线、同轴电缆或光缆,可以在几公里甚至几十公里的范围内交换信息。
当然,PLC之间的通讯网络是各厂家专用的,PLC与计算机之间的通讯,一些生产厂家采用工业标准总线,并向标准通讯协议靠拢,这将使不同机型的PLC之间、PLC与计算机之间可以方便地进行通讯与联网。
了解了PLC的基本结构,为购买可编程控制器(PLC)时就有了一个基本配置的概念,做到既经济又合理,尽可能发挥PLC所提供的最佳功能。
2.3可编程序控制器的发展方向及国内发展状况
PLC自问世以来,经过40多年的发展,在美、德、日等工业发达国家已成为重要的产业之一。世界总销售额不断上升、生产厂家不断涌现、品种不断翻新。产量产值大幅度上升而价格则不断下降。
目前,世界上有200多个厂家生产PLC,较有名的:美国:AB通用电气、莫迪康公司;日本:三菱、富士、欧姆龙、松下电工等;德国:西门子公司;法国:TE 施耐德公司;韩国:三星、LG公司等。
技术发展动向:
1) 产品规模向大、小两个方向发展
大: I/O点数达14336点、32位为微处理器、多CPU并行工作、大容量存储器、 扫描 速度高速化。
小: 由整体结构向小型模块化结构发展,增加了配置的灵活性,降低了成本。
2) PLC在闭环过程控制中应用日益广泛
3) 不断加强通讯功能
4) 新器件和模块不断推出高档的PLC除了主要采用CPU以提高处理速度外,还有带处理器的EPROM或RAM的智能I/O模块、高速计数模块、远程I/O模块等专用化模块。
5) 编程工具丰富多样,功能不断提高,编程语言趋向标准化有各种简单或复杂的编程器及编程软件,采用梯形图、功能图、语句表等编程语言,亦有高档的PLC指令系统。
6) 发展容错技术采用热备用或并行工作、多数表决的工作方式。
7) 追求软硬件的标准化。
国内发展及应用概况:
我国的PLC产品的研制和生产经历了三个阶段:顺序控制器(1973~1979)——一位处理器为主的工业控制器(1979~1985)——8位微处理器为主的可编程序控制器(1985以后)。在对外开放政策的推动下,国外PLC产品大量进入我国市场,一部分随成套设备进口。如宝钢一、二期工程就引进了500多套,还有咸阳显象管厂、秦皇岛煤码头、汽车厂等。现在,PLC在国内的各行各业也有了极大的应用,技术含量也越来越高。
3 Modbus通讯协议
3.1 Modbus协议
Modbus协议最初由Modicon公司开发出来,在1979年末该公司成为施耐德自动化(Schneider Automation)部门的一部分,现在Modbus已经是工业领域全球最流行的协议。此协议支持传统的RS-232、RS-422、RS-485和以太网设备。许多工业设备,包括PLC,DCS,智能仪表等都在使用Modbus协议作为他们之间的通讯标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。 当在网络上通信时,Modbus协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成应答并使用Modbus协议发送给询问方。
Modbus协议包括ASCII、RTU、TCP等,并没有规定物理层。此协议定义了控制器能够认识和使用的消息结构,而不管它们是经过何种网络进行通信的。标准的Modicon控制器使用RS232C实现串行的Modbus。Modbus的ASCII、RTU协议规定了消息、数据的结构、命令和就答的方式,数据通讯采用Maser/Slave方式,Master端发出数据请求消息,Slave端接收到正确消息后就可以发送数据到Master端以响应请求;Master端也可以直接发消息修改Slave端的数据,实现双向读写。
Modbus协议需要对数据进行校验,串行协议中除有奇偶校验外,ASCII模式采用LRC校验,RTU模式采用16位CRC校验,但TCP模式没有额外规定校验,因为TCP协议是一个面向连接的可靠协议。另外,Modbus采用主从方式定时收发数据,在实际使用中如果某Slave站点断开后(如故障或关机),Master端可以诊断出来,而当故障修复后,网络又可自动接通。因此,Modbus协议的可靠性较好。
下面我来简单的给大家介绍一下,对于Modbus的ASCII、RTU和TCP协议来说,其中TCP和RTU协议非常类似,我们只要把RTU协议的两个字节的校验码去掉,然后在RTU协议的开始加上5个0和一个6并通过TCP/IP网络协议发送出去即可。所以在这里我仅介绍一下Modbus的ASCII和RTU协议。
下表是ASCII协议和RTU协议进行的比较:
表3.1 ASCII协议与RTU协议比较
协议
开始标记
结束标记
校验
传输效率
程序处理
ASCII
:(冒号)
CR,LF
LRC
低
直观,简单,易调试
RTU
无
无
CRC
高
不直观,稍复杂
通过比较可以看到,ASCII协议和RTU协议相比拥有开始和结束标记,因此在进行程序处理时能更加方便,而且由于传输的都是可见的ASCII字符,所以进行调试时就更加的直观,另外它的LRC校验也比较容易。但是因为它传输的都是可见的ASCII字符,RTU传输的数据每一个字节ASCII都要用两个字节来传输,比如RTU传输一个十六进制数0xF9,ASCII就需要传输’F’’9’的ASCII码0x39和0x46两个字节,这样它的传输的效率就比较低。所以一般来说,如果所需要传输的数据量较小可以考虑使用ASCII协议,如果所需传输的数据量比较大,最好能使用RTU协议。
下面对两种协议的校验进行一下介绍。
3.2 LRC校验
LRC域是一个包含一个8位二进制值的字节。LRC值由传输设备来计算并放到消息帧中,接收设备在接收消息的过程中计算LRC,并将它和接收到消息中LRC域中的值比较,如果两值不等,说明有错误。
LRC校验比较简单,它在ASCII协议中使用,检测了消息域中除开始的冒号及结束的回车换行号外的内容。它仅仅是把每一个需要传输的数据按字节叠加后取反加1即可。下面是它的VC代码:
BYTE GetCheckCode(const char * pSendBuf, int nEnd)//获得校验码
{
BYTE byLrc = 0;
char pBuf[4];
int nData = 0;
for(i=1; i<end; i+=2) //i初始为1,避开“开始标记”冒号
{
//每两个需要发送的ASCII码转化为一个十六进制数
pBuf [0] = pSendBuf [i];
pBuf [1] = pSendBuf [i+1];
pBuf [2] = '\0';
sscanf(pBuf,"%x",& nData);
byLrc += nData;
}
byLrc = ~ byLrc;
byLrc ++;
return byLrc;
}
3.3 CRC校验
CRC域是两个字节,包含一16位的二进制值。它由传输设备计算后加入到消息中。接收设备重新计算收到消息的CRC,并与接收到的CRC域中的值比较,如果两值不同,则有误。
CRC是先调入一值是全“1”的16位寄存器,然后调用一过程将消息中连续的8位字节各当前寄存器中的值进行处理。仅每个字符中的8Bit数据对CRC有效,起始位和停止位以及奇偶校验位均无效。
CRC产生过程中,每个8位字符都单独和寄存器内容相或(OR),结果向最低有效位方向移动,最高有效位以0填充。LSB被提取出来检测,如果LSB为1,寄存器单独和预置的值或一下,如果LSB为0,则不进行。整个过程要重复8次。在最后一位(第8位)完成后,下一个8位字节又单独和寄存器的当前值相或。最终寄存器中的值,是消息中所有的字节都执行之后的CRC值。
CRC添加到消息中时,低字节先加入,然后高字节。下面是它的VC代码:
WORD GetCheckCode(const char * pSendBuf, int nEnd)//获得校验码
{
WORD wCrc = WORD(0xFFFF);
for(int i=0; i<nEnd; i++)
{
wCrc ^= WORD(BYTE(pSendBuf[i]));
for(int j=0; j<8; j++)
{
if(wCrc & 1)
{
wCrc >>= 1;
wCrc ^= 0xA001;
}
else
{
wCrc >>= 1;
}
}
}
return wCrc;
}
对于一条RTU协议的命令可以简单的通过以下的步骤转化为ASCII协议的命令:
1、 把命令的CRC校验去掉,并且计算出LRC校验取代。
2、 把生成的命令串的每一个字节转化成对应的两个字节的ASCII码,比如0x03转化成0x30,0x33(0的ASCII码和3的ASCII码)。
3、 在命令的开头加上起始标记“:”,它的ASCII码为0x3A。
4、 在命令的尾部加上结束标记CR,LF(0xD,0xA),此处的CR,LF表示回车和换行的ASCII码。
所以以下我们仅介绍RTU协议即可,对应的ASCII协议可以使用以上的步骤来生成。
3.4 Modbus支持的功能码
表3.2 Modbus功能码
功能码
名称
作用
1
读取线圈状态
取得一组逻辑线圈的当前状态(ON/OFF)
2
读取输入状态
取得一组开关输入的当前状态(ON/OFF)
3
读取保持寄存器
在一个或多个保持寄存器中取得当前的二进制值
4
读取输入寄存器
在一个或多个输入寄存器中取得当前的二进制值
5
强置单线圈
强置一个逻辑线圈的通断状态
6
预置单寄存器
把具体二进值装入一个保持寄存器
7
读取异常状态
取得8个内部线圈的通断状态,这8个线圈的地址由控制器决定
8
回送诊断校验
把诊断校验报文送从机,以对通信处理进行评鉴
9
编程(只用于484)
使主机模拟编程器作用,修改PC从机逻辑
10
控询(只用于484)
可使主机与一台正在执行长程序任务从机通信,探询该从机是否已完成其操作任务,仅在含有功能码9的报文发送后,本功能码才发送
11
读取事件计数
可使主机发出单询问,并随即判定操作是否成功,尤其是该命令或其他应答产生通信错误时
12
读取通信事件记录
可是主机检索每台从机的ModBus事务处理通信事件记录。如果某项事务处理完成,记录会给出有关错误
13
编程(184/384 484 584)
可使主机模拟编程器功能修改PC从机逻辑
14
探询(184/384 484 584)
可使主机与正在执行任务的从机通信,定期控询该从机是否已完成其程序操作,仅在含有功能13的报文发送后,本功能码才得发送
15
强置多线圈
强置一串连续逻辑线圈的通断
16
预置多寄存器
把具体的二进制值装入一串连续的保持寄存器
17
报告从机标识
可使主机判断编址从机的类型及该从机运行指示灯的状态
18
(884和MICRO 84)
可使主机模拟编程功能,修改PC状态逻辑
19
重置通信链路
发生非可修改错误后,是从机复位于已知状态,可重置顺序字节
20
读取通用参数(584L)
显示扩展存储器文件中的数据信息
21
写入通用参数(584L)
把通用参数写入扩展存储文件,或修改之
22~64
保留作扩展功能备用
65~72
保留以备用户功能所用
留作用户功能的扩展编码
73~119
非法功能
120~127
保留
留作内部作用
128~255
保留
用于异常应答
在这些功能码中较长使用的是1、2、3、4、5、6号功能码,使用它们即可实现对下位机的数字量和模拟量的读写操作。
1、读可读写数字量寄存器(线圈状态):
计算机发送命令:[设备地址] [命令号01] [起始寄存器地址高8位] [低8位] [读取的寄存器数高8位] [低8位] [CRC校验的低8位] [CRC校验的高8位]
例:[11][01][00][13][00][25][CRC低][CRC高]
意义如下:
<1>设备地址:在一个485总线上可以挂接多个设备,此处的设备地址表示想和哪一个设备通讯。例子中为想和17号(十进制的17是十六进制的11)通讯。
<2>命令号01:读取数字量的命令号固定为01。
<3>起始地址高8位、低8位:表示想读取的开关量的起始地址(起始地址为0)。比如例子中的起始地址为19。
<4>寄存器数高8位、低8位:表示从起始地址开始读多少个开关量。例子中为37个开关量。
<5>CRC校验:是从开头一直校验到此之前。在此协议的最后再作介绍。此处需要注意,CRC校验在命令中的高低字节的顺序和其他的相反。
设备响应:[设备地址] [命令号01] [返回的字节个数][数据1][数据2]...[数据n][CRC校验的低8位] [CRC校验的高8位]
例:[11][01][05][CD][6B][B2][0E][1B][CRC低][CRC高]
意义如下:
<1>设备地址和命令号和上面的相同。
<2>返回的字节个数:表示数据的字节个数,也就是数据1,2...n中的n的值。
<3>数据1...n:由于每一个数据是一个8位的数,所以每一个数据表示8个开关量的值,每一位为0表示对应的开关断开,为1表示闭合。比如例子中,表示20号(索引号为19)开关闭合,21号断开,22闭合,23闭合,24断开,25断开,26闭合,27闭合...如果询问的开关量不是8的整倍数,那么最后一个字节的高位部分无意义,置为0。
<4>CRC校验同上。
2、读只可读数字量寄存器(输入状态):
和读取线圈状态类似,只是第二个字节的命令号不再是1而是2。
3、写数字量(线圈状态):
计算机发送命令:[设备地址] [命令号05] [需下置的寄存器地址高8位] [低8位] [下置的数据高8位] [低8位] [CRC校验的低8位] [CRC校验的高8位]
例:[11][05][00][AC][FF][00][CRC低][CRC高]
意义如下:
<1>设备地址和上面的相同。
<2>命令号:写数字量的命令号固定为05。
<3>需下置的寄存器地址高8位,低8位:表明了需要下置的开关的地址。
<4>下置的数据高8位,低8位:表明需要下置的开关量的状态。例子中为把该开关闭合。注意,此处只可以是[FF][00]表示闭合[00][00]表示断开,其他数值非法。
<5>注意此命令一条只能下置一个开关量的状态。
设备响应:如果成功把计算机发送的命令原样返回,否则不响应。
4、读可读写模拟量寄存器(保持寄存器):
计算机发送命令:[设备地址] [命令号03] [起始寄存器地址高8位] [低8位] [读取的寄存器数高8位] [低8位] [CRC校验的低8位] [CRC校验的高8位]
例:[11][03][00][6B][00][03][CRC低][CRC高]
意义如下:
<1>设备地址和上面的相同。
<2>命令号:读模拟量的命令号固定为03。
<3>起始地址高8位、低8位:表示想读取的模拟量的起始地址(起始地址为0)。比如例子中的起始地址为107。
<4>寄存器数高8位、低8位:表示从起始地址开始读多少个模拟量。例子中为3个模拟量。注意,在返回的信息中一个模拟量需要返回两个字节。
设备响应:[设备地址] [命令号03] [返回的字节个数][数据1][数据2]...[数据n][CRC校验的低8位] [CRC校验的高8位]
例:[11][03][06][02][2B][00][00][00][64][CRC低][CRC高]
意义如下:
<1>设备地址和命令号和上面的相同。
<2>返回的字节个数:表示数据的字节个数,也就是数据1,2...n中的n的值。例子中返回了3个模拟量的数据,因为一个模拟量需要2个字节所以共6个字节。
<3>数据1...n:其中[数据1][数据2]分别是第1个模拟量的高8位和低8位,[数据3][数据4]是第2个模拟量的高8位和低8位,以此类推。例子中返回的值分别是555,0,100。
<4>CRC校验同上。
5、读只可读模拟量寄存器(输入寄存器):
和读取保存寄存器类似,只是第二个字节的命令号不再是2而是4。
6、写单个模拟量寄存器(保持寄存器):
计算机发送命令:[设备地址] [命令号06] [需下置的寄存器地址高8位] [低8位] [下置的数据高8位] [低8位] [CRC校验的低8位] [CRC校验的高8位]
例:[11][06][00][01][00][03][CRC低][CRC高]
意义如下:
<1>设备地址和上面的相同。
<2>命令号:写模拟量的命令号固定为06。
<3>需下置的寄存器地址高8位,低8位:表明了需要下置的模拟量寄存器的地址。
<4>下置的数据高8位,低8位:表明需要下置的模拟量数据。比如例子中就把1号寄存器的值设为3。
<5>注意此命令一条只能下置一个模拟量的状态。
设备响应:如果成功把计算机发送的命令原样返回,否则不响应。
4 流体计量控制系统
4.1流体计量
4.1.1概述
概述 管道流体计量包括管道输送的油品计量和天然气计量。这两种流体计量目前都以体积为单位。早期油品的计量是以重量为单位。20世纪40年代初期,直径为100毫米的容积式流量计开始在成品油管道上使用。后来又出现了多种容积式流量计,如刮板式流量计、腰轮式流量计等。60年代出现了涡轮式流量计,这种流量计体积小,计量的流量范围较宽,并能保持较高的精度,被应用于轻质油品的计量。近年来,非浸入式超声波流量计日益广泛应用于管道流体计量。随着流量计的改进,与之配套的流量计标定装置也不断发展,如60年代出现机械式双向直管体积管标定装置;此后又出现了单向和双向U形体积管标定装置,使流量计标定达到更高的精度。
4.1.2液体流量计
容积式流量计
由设在转子上的机械部件构成的几个能随转子转动的密闭容积,每转一周可传递一定体积的油量,根据转数的积累计算通过的油量。容积式流量计转子的转动是靠流量计进出口油流的压差。它适用于润滑性较好、粘度较高的重质油品,如原油、重质成品油等的计量。容积式流量计的计量范围受到转子重量的影响,其精度只适用于一定流量的计量,计量更大流量时,要几台并联使用。
涡轮式流量计
根据油流速度计算大输量流量计。这种流量计结构紧凑,重量较轻,压降较小,并易于维护。其工作原理是将一个带翼片的涡轮转子置于被计量的油流中心,涡轮在转动时,涡轮转速与油的流速成正比。在涡轮上镶有一块磁铁,每转一圈即在外部的感应线圈中产生一个脉冲,经过标定,确认一定数量的脉冲数代表一个计量单位。涡轮在油流中旋转,减少了机械磨损,转子重量轻,能适应较大的流量变化。这种流量计用于各种轻质油品的计量。
4.1.3流量计标定装置
标定装置是伴随管道采用流量计而出现的。在40~50年代,标定装置是小型的标准容积罐,计量精度为容积的千分之一。60年代以来,各种类型的标准体积管已广泛地在管道中用于标定流量计。U形体积管是在精加工的U形管段上,设置两个检测开关,两个开关之间的管段体积是经过更高一级的标定容器进行仔细测定的已知数,作为标准体积,其精度可达±0.02%。这种标定装置在流量计与标准体积管串联起来进行标定时,先用油流将流量计与标准体积管进行预热,使其温度与油流温度相同;然后将球型隔离器投入油流,在油流推动下,隔离器首先触动第一个检测开关,并同时打开流量计计数器输入门电路,开始记录被标定的流量计发出的脉冲。当隔离器触动第二个检测开关时,即停止计数。如此进行数次,将标准体积管的容积与计数器记录的平均脉冲数所代表的容积值进行比较,即得出流量计的修正系数。在成品油管道上进行多种油品的计量时,应经常用不同油品进行标定,以取得不同的修正系数。在管道计量中,只在起点站和终点站及主要分输站等大量收、发油品的计量点上,才设有体积管标定装置;其他收发量少的站,均可用标准流量计进行校核。
4.2系统结构
以装有组态王V6.53的个人PC机作为上位机,以西门子200系列PLC构成的下位机控制系统作为下位机,通过西门子的PPI通讯协议与上位机通讯。通过由下位机对管道压力、流量、温度、以及逻辑控制信号传送到上位机进行计算,以实现对流体的自动计量。
装置结构图见附录Ⅰ。
4.3硬件设计
上位机:装有组态的PC机作为系统主站,
下位机:由S7-200系类PLC作为从站与上位机通讯,下位机负责对管道阀体以及电动机的逻辑控制。对于温度、流量等型号通过PLC的RS485通讯介质与各变送器构成Modbus-RTU总线网络。通过网络将信号送至PLC处理,再由PLC于上位机交换信息。
低压控制部分电气原理图见附录Ⅱ。
4.4软件设计
4.4.1上位机软件设计
工作步骤如下:
1.新建工程 下一步操作。
输入文件位置,确定工程名称即可。
2.新建画面编辑窗口
设置窗口大小及背景颜色等。共建两个窗口如下:
图4.3 主窗口
图4.4 监控窗口
注释:详细元件见:组态程序开发部分。
3.设备添加,本课题中的组态软件为仿真软件(由于很多设备无法满足)
注释:该过程和真实PLC完全相同
点击新建设备(这里采用的是亚控的仿真PLC作为下位机)过程如下图:
-----》
输入名称,选择通讯端口(PC机端口com)
4.数据词典
4.4.2组态脚本程序设计
脚本程序在监控窗口内生成,步骤如下:
点击窗口,查看属性
进入编辑界面
点击命令语言
由下列操作完成:
注释:具体命令可按F1查看。
脚本程序
//----------管道控制-----------
if(\\本站点\N管道1==0)
{
\\本站点\N管道2=0;
}
if(\\本站点\N管道2==0)
{
\\本站点\N管道3=0;
}
if(\\本站点\N管道3==0)
{
\\本站点\N管道4=0;
}
if(\\本站点\N管道4==0)
{
\\本站点\N管道5=0;
}
if(\\本站点\N管道5==0)
{
\\本站点\N管道6=0;
}
if(\\本站点\N管道6==0)
{
\\本站点\N管道7=0;
}
//----------分水器控制-----------
if(\\本站点\N管道6==10)
{
if(\\本站点\N管道7==0)
{
\\本站点\N管道10=0;
\\本站点\N管道9=10;
}
if(\\本站点\N管道7==10)
{
\\本站点\N管道10=10;
\\本站点\N管道9=0;
}
}
if(\\本站点\N管道6==0)
{
\\本站点\N管道9=0;
\\本站点\N管道10=0;
}
//----------call-------------
if
(\\本站点\N管道2==10)
{
\\本站点\N罐体1=\\本站点\N随机4;
\\本站点\N表1=\\本站点\N随机4;
}
if
(\\本站点\N管道5==10)
{
\\本站点\N表3=\\本站点\N随机2;
}
if
(\\本站点\N管道6==10)
{
\\本站点\N表2=\\本站点\N随机300;
}
//-------------分水时间控制-----------
if
(\\本站点\N管道10==10)
{
\\本站点\N表4=\\本站点\N随机6;
\\本站点\N罐体2=\\本站点\N罐体2+1;
\\本站点\N表6=\\本站点\N表6-1;
}
if
(\\本站点\N表6==0)
{
\\本站点\N管道7=0;
}
if
(\\本站点\N管道8==10)
{
\\本站点\N罐体2=0;
\\本站点\N表6=10;
\\本站点\N管道8=0;
}
if
(\\本站点\N管道1==10)
{
\\本站点\N管道15=\\本站点\N随机4;
4.4.3 PLC程序设计
PLC I/O地址分配表
展开阅读全文