产品规格模块式包装说明全新
大连西门子中国一级代理商电源供应商
1引言
由于变频器具有优良的控制特性以及其节能的特点,使得变频器近几年在各个领域被广泛的采用。在某些场合,需要用一台工控机灵活地控制多台变频器,以达到控制交流电机的目的。在油田输油控制系统中,多台变频器的控制问题成为关键,按照以往的控制方法,需要使用PLC或者控制电路板来控制变频器。然而使用这种方法造、系统复杂、布线量大、故障率高,因此亟需一种结构简单、造价低廉、性高的系统来实现多台变频器的控制。
针对这一需要,一些公司(如日本三菱、德国西门子、日本等)推出了带有RS-485通信接口的变频器,使用户能方便灵活地选择变频器的强大功能,设计各自的工业控制系统。因此,我们可以充分利用厂商提供的工业总线接口,使控制系统布线简洁,稳定。
目前,我们在利用工业总线接口开发用户程序时,大部分都是基于DOS环境下的,随着bbbbbbs操作系统的普及使得DOS单任务系统固有的缺陷显得日益,人们越来越希望能在bbbbbbs的环境下进行工业控制。
在bbbbbbs9X下开发工控软件,不仅可以实现多任务操作,充分利用硬件资源,而且可以利用bbbbbbs9X下丰富的开发工具,方便地生成各种菜单及友好的图形界面,软件产品质量高且开发。但在bbbbbbs9X环境下,系统接管了各种硬件资源,不允许用户直接对系统硬件进行控制。如何在bbbbbbs9X/NT环境下开发微机的底层资源,已成为当今工控业的一个值得探讨的课题。
本文以三菱FR-A500变频器的串行通信为例,利用VisualBasic6.0的ActiveX控件—MicrosoftCommunication控件,通过对变频器串行通信协议的分析,解决了bbbbbbs9X环境下与多个变频器的串行通信,成功地实现了用单台工控PC机对多台交流异步电机的灵活控制,从而在bbbbbbs9X环境下如何实现串行通信的问题上作了有益的尝试。
2油田输油控制系统的简介
由于多台变频器的控制技术是油田输油控制系统中的关键,所以有必要简单介绍一下本控制系统的概况。
油田输油控制系统主要有以下几部分构成,图1所示:
1. 控制器,主要一台工控计算机及其通信模块构成,它主要负责发送控制指令及控制参数,并根据现场返回的工况数据调整控制参数;
2. 监控信号和管道反馈信号由RS—485总线连接到控制器;
3. 泵站1~n主要油泵、变频器、通信适配器、管道传感器等构成;
控制系统的通信原理
根据油田输油控制系统的要求,我们给出了通信原理框图(图2),这里只工控PC机与变频器RS—485的接口部分。RS—485的驱动器可带32个,在波特率为100Kbit/s时,通信距离可达到1200m;通信距离为15m时,波特率可达10Mbit/s。在工业现场,RS-485是应用较多的一种通信方式。
图2中工控PC机通过RS-232C—RS-485转换器与多个变频器相连接,多可达到32台。每个变频器被赋予各自的地址码用以识别身份,这样,上位机便能通过RS-485通信线,对挂在上面的所有变频器进行控制操作。
变频器的串行口通信协议分析
通过对油田输油控制系统的结构设计,以及对三菱FR-A500变频器原理及通信方式的研究,我们发现三菱FR-A500变频器的通信方式为异步半双工RS—485协议;波特率19200bit/s,9600bit/s,4800bit/s可选;ASCII7或8位数据位可选;1位奇偶校验可选;1或2位停止位可选。其通信协议的数据格式有十种,分别为:
A,A’,B,C,D,E,E’,F,G,H;
下面以格式A为例简要说明一下变频器通信协议:
格式A的功能是变频器运行频率、运行参数的写入和复位变频器,
1 ENQ——表示控制代码,它有以下几种:(括号内为ASCII码)
STX (H02) 正文数据开始;ETX (H03) 正文数据结束;ENQ (H05) 通信请求;
ACK (H06) 应答无数据错误;LF (H0A) 换行;CR (H0D) 回车;
NAK (H15) 应答发现数据错误;
*2变频器站号——可用十六进制数在H00和H1F(站号0 至31 )间设定;
*3指令代码——由计算机发给变频器,指明程序要求(如:监视、运行等);
*4等待时间——规定变频器收到从计算机来的数据和传输应答数据之间的等待时间。根据计算机的响应时间在0和150ms之间设定,小设定单位10ms。
*5数据——表示计算机与变频器之间传输的数据,如:频率、参数等;
*6总合校验——由被校验的ASCII码数据的总和(二进制)的一个字节表示的2个ASCII数字(十六进制)。
*7表示CR(回车)、LF(换行)代码。
与格式A相对应的数据格式有C和D;若用户程序通信请求以格式A发送到变频器的数据被变频器接受,则变频器以格式C形式的数据返回给计算机;若变频器发现计算机发送的数据有误,则变频器以格式D形式的数据返回给计算机。
数据格式C和D分别如下:
其他的数据格式的功能如下:格式A’ 用于运行指令的写入,其对应的应答数据格式为格式C和格式D;格式 B用于监视变频器的运行参数(频率、电压、电流、转速)及读出变频器的系统参数,其对应的应答数据格式为E、E’、F、G、H。
一般情况下,变频器通过操作面板(PU)来设置变频器参数,一旦参数设定好了,就不能改变,这样很难通过现场信号进行实时的控制。通过以上对变频器通信协议的分析,考虑用软件来实现工控机与变频器的串行通信,利用软件可以灵活的实现系统所需的各种功能而不必改动现场的硬件电路,而且RS-485通信线多能同时控制32台变频器,同时,各变频器的运行状态也能实时地回送给上位机。
5 控制系统通信控制软件设计
5.1串口通信程序设计方法
基于对系统结构和变频器串口通信协议的分析,对工控计算机的串行口进行编程。在DOS的操作系统下,计算机所有的硬件对编程人员是透明的,因此比较容易进行内存管理和硬件中断管理,所以程序的响应速度快。但是,DOS是单任务操作系统,对硬件资源浪费严重,并且在进行图形界面编程时其难度和任务量都远远过了对硬件部分的编程。因此我们采用bbbbbbs 9X操作系统和基于此平台的开发软件来编写控制系统软件。
在bbbbbbs 9X环境下,操作系统接管了各种硬件资源, 不允许用户程序直接读写硬件端口和进行中断管理。所以早期的程序员只能通过数目众多的API函数来控制端口,使用起来很不方便。
本系统利用VB6.0下提供了一个ActiveX控件(Microsoft Communication控件, 简称MSComm 控件)来实现串行口的通信设计。通过在应用程序中嵌入MSComm控件的方式,进行计算机串口的通信管理,下面简要介绍一下MSComm控件的功能:
MSComm 6.0控件可以实现数据缓冲区的管理,bbbbb (从缓冲区读取接收数据)的数据类型为Variant,从缓冲区读取数据的格式为字符串格式(Text)或二进制格式(Binary)。
MSComm控件提供的具体功能如表1:
其中串口号(CommPort)设置为1、2 … n等表示COM1、COM2 … COMn。参数设置(Settings)的格式为“BBBB,P,D,S”,BBBB表示波特率,P表示奇偶校验(N:无校验,E:偶校验,O:奇校验),D表示字节有效位数,S表示停止位数。串口状态(PortOpen)为BOOL变量,TRUE表示打开串口,FALSE表示关闭串口。bbbbbMode使程序能方便地选择从缓冲区读取数据的格式,设置为0时,为字符串格式(Text),设置为1时,为二进制格式(Binary)。bbbbbLen设置或返回的是用bbbbb从缓冲区读字符串时每次读出的字符个数,这个性质对于读出数据块中定长数据串非常有用。
InBufferCount和OutBufferCount用于串口的查询方式。对于较复杂的通信任务,可通过Com9Xvent处理串口的事件,当相应事件或串口错误事件发生时,系统会OnComm事件,在OnComm中添加用户的处理代码,则可实现类似DOS中断的串口处理程序。
5.2变频器串口通信软件结构
为了用该控件控制一个串口进行通信操作,还在应用程序中插入该控件。为此,将MSComm控件插入到程序的某个对话框,并为这个控件对象命名为MSComm1,则程序中对串口的各种操作都可通过对象MSComm1来实现。
下面是串口控制子程序的流程图:
6 结束语
本文利用Win9X下的ActiveX控件和三菱变频器RS-485的串行通信功能,成功实现了在Win9X环境下单台IPC机对多台三菱变频器的控制,并能实时检测各变频器的运行状态。整个控制系统灵活方便,具有很大的实用性。本文在Win9X下多台变频器控制的设计方案及软件实现为此类问题的解决作了很好的尝试与探索。与DOS方式的控制相比,具有开发、充分利用硬件资源、软件界面美观等优点。但由于Win9X是多任务分时操作系统,所以该系统不能做到强实时控制,这是今后有待改进的地方。
随着现代信息技术的发展以及计算机网络的广泛应用,计算机通信技术已经日趋成熟。作为传统的计算机通信方式的串行通信,由于具有线路简单、应用灵活、性高等一系列优点长期以来获得了广泛的应用。计算机串行通信在数据财经、数据通信、故障检测、计算机远程监控等方面有广泛的实用,特别在bbbbbbs下的串口通信可以充分利用bbbbbbs下的软件资源优势,实现多任务条件下对外部的、信息收集和处理。在本系统中,我们采用了性能/价格比较高的计算机构成厂级的监控工作站。在PLC与上位计算机之间采用RS-485和RS-232C标准通信接口进行通信。
在两级计算机控制系统中,不稳定的环节就是上位机。为了保证系统的稳定性,避免因上位机的故障导致系统控制失灵,所有采集到的信号都反馈到PLC当中。上位机需要通过串行通信所需的数据信息,并通过串行通信将必要的控制信息和参数设置信息写入PLC的数据存储区。因此,串行通信作为上位机和下位机联系的方式,在整个系统中具有非常重要的作用。
1.1上位机与PLC间的串行通信
计算机与计算机或计算机与外部设备之间的和交换的方式主要有串行通信和并行通信两种方式,其中串行通信指的是数据逐位传输的方式。由于串行通信方式具有使用线路少、,特别是在远程传输时,避免了多条线路特性的不一致而被广泛采用。
1.1.1串行通信
串行通信方式又可分为两种:同步串行通信方式和异步串行通信方式。
1.同步串行通信方式:同步串行通信是以数据块(字符块)为信息单位传送,每帧信息可以包含很多字符。同步通信要求通信双方以相同的速率进行,而且要准证确协调,通常通过共享一个时钟或定时脉冲源保发送方和接收方准确同步。这种通信方式的效率较高,但是对时钟同步要求非常严格,成本较高。
2.异步串行通信方式:异步串行通信以字符为信息单位传送。双方需要遵守异步通信协议,以字符为数据单位,发送方传送字符的时间间隔不确定。每个字符传输都以起始位开始,以停止位结束。通信双方所的字符的数据位数,奇偶校验方法和停止位数相同。其传输效率比同步通信方式低,但是成本较低。
异步通信是在以起始位开始、停止位结束的一个字符内按约定的频率进行同步接收。各个字符之间允许有间隙,而且两个字符之间的间隔是不固定的。在同步通信方式中,不仅同一字符中的相邻两位间的时间间隔要相等,而且相邻字符间的时间间隔也要求相等,这也是同步通信和异步通信方式的主要差别所在。
因此,异步串行通信一般用在数据传送时间不能确知,发送数据不连续,数据量较少和速率较低的场合;而同步串行通信则用在要求快速、连续传输大批量数据的场合。
1.1.2串行通信接口标准
在串行通信时,要求通信双方都采用一个标准接口,使不同的设备可以方便地连接起来进行通信。在设计通信接口时,一般都采用标准接口以提高其通用性。本系统中,上、下位机进行通信面临的问题就是通信标准的选择问题。
1、RS-232C接口标准
RS-232C接口标准(全称EIA-RS-232C标准)是在1969年由美国电子工业联合会(EIA,Electronic Industrial Associate-Recommended Standard-232C)与Bell公司、调制解调器厂家及计算机终端生产厂家共同开发的用于串行接口的通信协议。它初是为远程通信连接数据终端设备DTE(Data Terminal Equipment)和数据通信设备DCE(Data Communication Equipment)而的[46]。虽然这个标准的没有考虑计算机系统的应用要求,但是广泛的用于计算机与终端或外设之间的连接。
RS-232C标准规定了在串行通信时,数据终端设备和数据通信设备之间的接口信号。其中常用信号的名称、引脚号以及功能如表4-1所示。
表4-1 RS-232C常用信号定义
引脚号 | 信号名称 | 简称 | 信号功能说明 |
2 | 发送数据 | TxD | DTE向DCE发送串行数据 |
3 | 接收数据 | RxD | DTE从DCE接收串行数据 |
4 | 请求发送 | RTS | 请求通信设备切换到发送方向 |
5 | 发送 | CTS | 响应DTE请求,提示DCE开始发送 |
6 | 数据设备就绪 | DSR | DCE通信设备就绪 |
7 | 信号地 | SG | 整个电路的公共信号地 |
8 | 数据载波检测 | DCD | DCE收到载波 |
20 | 数据终端就绪 | DTR | DTE终端设备就绪 |
22 | 振铃 | RI | 通信线路上有振铃 |
RS-232C的电气特性:RS-232C采用的是负逻辑工作,即逻辑“1”用负电压(-3~-15V)表示,逻辑“0”用正电压(+3~+15V)表示。介于-3V和+3V之间以及-15V或+15V的电压没有意义。实际工作时,应保证电平在±(5~15)V之间。由于RS232C是用正负电压来表示逻辑状态,与以高低电平表示逻辑状态的TTL不同。为了能够同计算机接口或终端的TTL器件连接,进行电平和逻辑关系的转换。目前使用较为广泛的是集成电路转换器件,如MC1488和MC1489。
RS-232C的机械特性:虽然RS-232标准定义了25个信号,但进行异步通信时实际只用到了9个信号:2个数据信号、6个控制信号和1个信号地线。因此RS-232的连接器主要有DB25和DB9两种类型。现在微型计算机上均采用DB9型连接器作为主板上COM1和COM2两个串行口的连接器,其引脚及信号分配如图4-2所示。
3、RS-485接口标准
RS-485标准也是一种平衡传输方式的串行接口标准,它和RS-422A兼容并且扩展了RS-422A的功能。
RS-485的电气特性:逻辑“1”以两线间的电压差为+(2-6)V表示;逻辑“0”以两线间的电压差为-(2-6)V表示。接口信号电平比RS-232C降低了,就不易损坏接口电路的芯片,且该电平与TTL电平兼容,可方便与TTL电路连接。速率为10Mbps。RS-485接口是采用平衡驱动器和差分的组合,抗共模干扰能力增强,即抗干扰性好。RS-485接口的大传输距离标准值为4000英尺,实际上可达3000米。RS-485接口在总线上是允许连接多达128个收发器,具有多站能力,用户可以利用它建立起设备网络。RS-485接口由于具有良好的抗干扰性、传输距离长和多站能力等优点使其成为的串行接口。
本系统中,上位机和下位机的通信运用了以上标准中的RS485和RS232C两种通信标准。计算机具有标准RS232C接口,而PLC具有标准RS485接口,两者通过电缆和RS485/RS232C转换模块连接(如图所示4-3)。
1.2通讯参数设置和通讯测试界面
在供水自动化监控系统中,信息管理及软件作为处理、显示和存储数据的,主要负责对各个电动机的转速和各处管道压力的查询、监控以及报警的处理。运行信息管理及软件的计算机与PLC之间的通讯主要是通过RS-232C串行接口(PC机一般提供了COM1和COM2两个串行口)进行通讯,实现系统的监测控制和信息管理功能。
本系统中上位机的信息管理及软件运行在bbbbbbs2000/NT操作系统下,串行通讯程序运用Inprise公司推出的快速开发工具Delphi 6.0开发。PPI通信协议是西门子专为S7-200系列PLC开发的一个通信协议,物理上采用RS485信号电平,PLC默认处于该方式。使用PPI方式对PLC编程及调试监控,其硬件连接只需通过编程(PC/PPI)电缆即可实现。软件编程采用中文环境、内部系统协议,设计人员只需通过软件设置一下参数,数据如交换不需要考虑,用NETR和NETW 两条语句即可进行数据的传递。
1.2.1通讯参数设置
为了进行串口通信, 实现系统的监测控制和信息管理功能,对通讯参数加以设置。
通信设置:
串口:COM1、COM2
波特率:300、600、1200...
校验方法:N、E、M、O、S
数据位数
停止位数:
Setting:
缓冲区设置
接收缓冲区:字节
发送缓冲区:字节
数据传送方式
文本形式和二进制形式
流控制
不握手(默认)、XON/XOFF方式、
RTS/CTS方式、 XON/XOFF AND RTS/CTS方式
1.2.2通讯测试界面
通信测试界面如图4-5所示。
通讯设置
Setting属性值
commport属性值
通讯状态
串口状态
发送字节数
接收字节数
数据显示
接收数据显示
发送数据显示
1.3 PLC通信程序设计
1.3.1 PLC网络通信协议[19]
本系统采用的PLC是德国SIEMENS公司生产的S7-200系列,主模块采用CPU226,扩展模块采用数字量扩展模块EM222和模拟量扩展模块EM235。
S7-200系列CPU具有强大的通信能力。主要支持以下几种协议:
1.PI(Point-to-Point)协议,即点到点接口协议。PPI是一个主/从协议,主站(其它CPU或SIMATIC编程器)给从站发送申请,从站进行响应。从站不初始化信息,只响应主站的申请或查询。如果在用户程序中允许PPI主站模式,S7-200 CPU在RUN模式下可以作为主站,还可以利用网络读(NETR)和网络写(NETW)指令读写其他CPU,同时也能够作为从站响应来自其它主站的申请。采用PPI协议的网络中多只能有32个主站。该协议主要是用来编程、PPI组网等
2.MPI(Multi-Point)协议,即多点接口协议。MPI可以是主/主协议或主/从协议,协议如何操作依赖于设备类型(设备是S7-200系列CPU时建立主/从连接)。MPI总在两个相互通信的设备之间建立连接,其它主站不能干涉两个设备之间已建立的连接。由于S7-200的连接是非公用的,并且需要CPU中的资源,每个S7-200 CPU只能支持4个连接,每个EM277模块支持6个连接。在使用时,每个S7-200 CPU和EM277模块保留两个连接,分别用于连接SIMATIC编程器(或计算机)以及操作面板。这些保留连接不能被其它类型的主站使用。
3.ROFIBUS协议。PROFIBUS协议设计用于分布式I/O设备(远程I/O)的高速通信。PROFIBUS网络通常有一个主站和几个I/O从站,主站配置成知道所连接的I/O从站的型号和地址。主站初始化网络并核对网络上的从站设备和配置中的是否匹配。主站连续的把输出数据写到从站并从它们读取输入数据。
4.户自定义协议(自由口协议)。自由口协议可以由用户定义通讯协议,通过用户程序控制S7-200通信口的操作模式,将CPU与任意通讯协议公开的设备联网,如上位计算机、打印机、变频器等。用户程序通过使用接收中断、发送中断、发送指令(XMT)和接收指令(RCV)来控制通信口的操作。在自由口模式下,通信协议由用户程序控制。用户程序通过设置SMB30(0口)允许自由口模式,而且只有在CPU处于RUN模式时才能允许。当CPU处于STOP模式时,自由口通信停止,通信口转换成正常的PPI协议操作。
可以利用PC/PPI电缆和自由口通信功能把S7-200 CPU连接到许多和RS-232标准兼容的设备。PC/PPI电缆支持波特率设置,利用PC/PPI电缆盒上的DIP开关可以配置所需的波特率。波特率和开关位置的对应关系如表4-6所示:
表4-6 波特率和开关位置对应表
波特率 | 38400 | 19200 | 9600 | 4800 | 2400 | 1200 | 600 | 300 |
开关(1=上) | 000 | 001 | 010 | 011 | 100 | 101 | 110 | 111 |
当数据从RS-232传送到RS-485口时,PC/PPI电缆是发送模式。当数据从RS-485传送到RS-232口时,PC/PPI电缆是接收模式。当检测到RS-232的发送线有字符时,电缆立即从接收模式转换到发送模式。当RS-232发送线处于闲置的时间过电缆切换时间时,电缆又切换到接收模式。这个时间与电缆上的DIP开关设定的波特率选择有关,如表4-7所示:
表4-7 PC/PPI电缆转换时间(发送模式到接收模式)
波 特 率 | 38400 | 19200 | 9600 | 4800 | 2400 | 1200 | 600 |
转换时间(ms) | 0.5 | 1 | 2 | 4 | 7 | 14 | 28 |
在使用自由口的系统中使用PC/PPI电缆时,在S7-200 CPU的用户程序中包含转换时间。S7-200 CPU在接收到RS-232设备的申请信息后,S7-200 CPU的发送信息响应延迟过或等于电缆的切换时间。RS-232设备在接收到RS-232设备的申请信息后,S7-200 CPU的下一次申请信息的发出延迟过或等于电缆的切换时间。在以上两种情况中,需要通过延迟使PC/PPI电缆有足够的时间从发送模式切换到接收模式,以便于数据从RS-485口传送到RS-232口。
1.3.2 PLC通信程序设计
PLC作为控制系统中的下位机,不主动发送数据而是被动的响应上位机的命令,根据上位机的指令进行数据发送和接收。PLC中的通信程序由主程序、三个子程序和三个中断组成,通信程序的流程如图4-4所示。
1、主程序
PLC在次扫描时执行初始化子程序,对端口及RCV指令进行初始化。初始化完成后,使端口处于接收状态。RCV指令将接收到的数据保存到接收缓冲区,同时产生接收完成中断。PLC每接收到一条指令后都会发送一条反馈信息,发送完成后产送完成中断。程序中使用的标志位含义约定如下:
M0.0:BCC校验正确则置位;
M0.1:Verify子程序的触发条件,被置位表示进行BCC校验。
//主程序
LD SM0.1
CALL Init
LDB= VB117, VB150 //接收数据
AB= VB103, 16#05
A M0.0
CALL Recv
LDB= VB117, VB150 //发送数据
AB= VB103, 16#06
A M0.0
CALL Send
LD M0.1 //校验
CALL Verify
LD SM4.5
RCV VB100, 0
2、通信初始化子程序(Init)
本系统采用自由口通信,通信协议为自定义的。用户可以通过设置PLC中相应的特殊寄存器SMB30等的参数改变485口的波特率、数据格式(数据位数、停止位、校验),以适应不同的通讯协议。PLC采用了特殊存储器(SM)标志位,提供大量的状态和控制功能,并且能够使CPU和用户程序之间交换信息。
SMB30和SMB130是自由端口控制寄存器。SMB30控制自由端口0的通信方式,SMB130控制自由端口1的通信方式。这两个寄存器是用来设置自由端口通信的操作方式,并提供自由端口或者系统所支持的协议之间的选择。Pp用于校验选择,00和10表示不校验,01表示奇校验,11表示偶校验。d用于每个字符的数据位,0表示8位字符,1表示7位字符。bbb用于选择自由口通信的波特率,其含义同表4-2。mm用于协议选择,00表示PPI/从站模式,01表示自由口协议,10表示PPI/主站模式,11保留不用。
SMB87或SMB187用于控制接收信息的标志;SMB88或SMB188用于开始的信息字符;SMB88或SMB188用于结束的信息字符。SMB94或SMB194用于端口0或端口1接收字符的大个数(1~255Byte)。该区要设为需要的大缓冲区,否则可能会丢失信息。
本系统采用端口0,自由口方式通信,波特率为9600Kbps,发送数据的大长度为16。因此SMB30的值为09H(十六进制),SMB87的值为ECH(十六进制),SMB94的值为16。当PLC的工作模式开关处于“RUN”(SM0.7=1)时初始化通信端口,初始化完毕打开接收数据中断。PLC的通信初始化程序如下:
//通信初始化子程序
LD SM0.0
MOVB 16#09, SMB30
MOVB 16#EC, SMB87
MOVB 103, SMB88
MOVB 71, SMB89
MOVW +1000, SMW92
MOVB 16, SMB94
R SM87.2, 1
LD SM0.0
ATCH INT_1, 23
ATCH INT_2, 9
ENI
LD SM0.0
MOVD &VB102,VD120
MOVB 2, VB150
MOVB 0, VB147
MOVB 0, VB148
2、发送子程序(Send)
在PLC接收到上位机的读取数据命令后,调用发送程序将的数据通过端口0发送给上位机。在PLC的存储区中,从VB126到VB141为约定的数据存储区,VB125为发送的数据个数。发送完数据后,打开发送完成中断。
//发送子程序
LD SM0.0
R SM87.7, 1
R M0.0, 1
RCV VB100, 0
MOVB 103, VB126
MOVB 16#01, VB127
MOVB 26, VB141
MOVB 16, VB125
LD SM0.0
FOR VW121, +1, +12
XORB *VD121, VB148
INCD VD181
NEXT
LD SM0.0
HTA VB148, VB140, 1
XMT VB125, 0
3、接收子程序(Recv)
LD SM0.0
R SM87.7, 1
R M0.0, 1
RCV VB100, 0
MOVB 21, VB125
MOVB 103, VB126
MOVB 16#02, VB127
MOVB 16, VB141
LD SM4.5
XMT VB125, 0
4、接收完成中断(INT_0)
接收完成中断用来处理接收完成中断事件,它将接收缓冲区的数据还原并保存,同时将M0.1置位。
//接收完成中断
LD SM0.0
ATH VB102, VB123, 1
ATH VB104, VB129, 1
ATH VB115, VB140, 1
S M0.1, 1
MOVB 0, VB147
MOVD &VB102, VD120
5、发送完成中断(INT_1)
发送完成中断用于处理发送完成中断事件,主要是将M0.0复位、BCC码寄存器清零、将接收缓冲区中存放结束字符的字节清零等。
//发送完成中断
LD SM0.0
R M0.0, 1
S SM87.7, 1
MOVB 0, VB147
MOVB 0, VB148
MOVD &VB102, VD120
MOVB 0, VB100
6、BCC校验程序(Verify)
将接收到的数据进行异或和校验。
LD SM0.0
R M0.1, 1
LD SM0.0
FOR VW143, +1, +12
LD SM0.0
XORB *VD121, VB147
LD SM0.0
INCD VD121
NEXT
LDB= VB147, VB119
AB= VB116, 71
S M0.0, 1
LDB= VB116, 71
AB<> VB147, VB119
MOVB 16, VB119
MOVB 16#03, VB125
R SM87.7, 1
RCV VB100, 0
XMT VB125, 0
LDB<> VB116, 71
MOVB 16, VB125
MOVB 16#04, VB127
R SM87.7, 1
RCV VB100, 0
XMT VB125, 0
1.4 上位机的通信模块设计
该恒压供水监控系统采用一台工控机对泵房的水泵机组进行监控,监控程序程序的功能包括水位、水压、电机速度信号的采集;监测显示水泵机组的工作状态和运行情况;检测故障信号,进行报警及语言提示;相关数据的存储、动态实时报表、历史数据的随时查询、打印;根据现场工作情况发出控制指令给PLC实行水泵机组的切换;根据生产实际情况修改工作参数等等。系统软件采用Delphi语言编程,能够及时准确地对供水自动化生产实行监控。串行通信作为上位机和下位机联系的桥梁,因此上位机通信模块设计在整个监控程序占有非常重要的地位。
用Delphi实现串口通信,常用的办法是使用控件(如MSCOMM等),利用MSCOMM控件开发串口通信程序,只需设置相关的属性,使用相关的方法与相应的事件,实现串口通信较为简单方便。本系统中上位机的信息管理及软件运行在bbbbbbs2000/NT操作系统下,并利用MSCOMM控件开发设计了上位机与PLC的串行通信程序,对供水系统的运行状态进行监控。MSComm32控件的主要属性、方法及事件如下[6-8]:
CommPort属性:用于设置或返回通讯端口号。计算机的串行通讯端口一般有COM1和COM2两个,在打开端口以前设置该属性。如果设置的端口不存在,运行时会产生设备无效错误。
CommEvent属性:返回通信事件或错误。
Setting属性:设置并返回初始化参数,即波特率、奇偶校验、传输数据位和停止位。
bbbbbMode属性:设置或返回接收到的数据的类型。缺省为CombbbbbModeText表示以文本(ASCII码)形式接收数据,而CombbbbbModeBinary表示以二进制形式接收数据。
bbbbb属性:返回并删除接收缓冲区中的数据,在设计时Output属性:向输出缓冲区中写入数据,在设计时无效,运行时为只读。
Output属性:向输出缓冲区中写入数据,在设计时无效,运行时为只读。
PortOpen属性:设置并返回通信端口开或关的状态,运行时有效。
CommInit方法:初始化并打开的串口。
RecvData方法:接收数据。
SendData方法:发送数据。
ComOpenOrClose方法:打开或关闭串口。
OnComm事件:当CommEvent属性的值发生变化时,就产生此事件,标志发生了一个通信事件或错误。
通信模块作为上位机和PLC交换数据的平台,具有十分重要的作用。通信模块的设计主要包括几个方面:
1、串口初始化。串口初始化包括设置通信协议、输入输出缓冲区大小等内容。
2、数据的接收和发送以及校验。上位机发出命令给PLC,PLC从串口输出缓冲区内接收数据,然后PLC自动发送一个响应帧,上位机检测到输入缓冲区的数据开始接收数据。命令帧的格式为站号、读/写操作类型、发送数据、校验码、结束字符。响应帧的格式为站号、接收数据、校验码、结束字符。为了保证通信数据的正确性,上位机对接收到的数据需要进行校验,校验是通过一个BCC校验函数来进行。BCC校验码就是将要传送的字符串的ASCII码以字节为单位作异或运算,并将异或运算结果作为指令的一部分传送出去。
3、数据转换。由于PLC在发送数据时,有些模拟量数据,如管网压力和电机转速,采用的是二进制的形式,在计算机接受到数据之后进行转换,方能正确显示。
4、错误处理和报警。对于传输过程中可能出现的各种错误,需要采取相应的处理措施,不可恢复的严重错误报警。
http://zhangqueena.b2b168.com