技术频道

Delphi的MSCOMM实现上位机与PLC间的串行通信(附源程序)

随着现代信息技术的发展以及计算机网络的广泛应用,计算机通信技术已经日趋成熟。作为传统的计算机通信方式的串行通信,由于具有线路简单、应用灵活、可靠性高等一系列优点长期以来获得了广泛的应用。计算机串行通信在数据财经、数据通信、故障检测、计算机远程监控等方面有广泛的实用价值,特别在Windows下的串口通信可以充分利用Windows下的软件资源优势,实现多任务条件下对外部的数据传输、信息收集和处理。在本系统中,我们采用了性能/价格比较高的计算机构成厂级的监控工作站。在PLC与上位计算机之间采用RS-485RS-232C标准通信接口进行通信。

在两级计算机控制系统中,最不稳定的环节就是上位机。为了保证系统的稳定性,避免因上位机的故障导致系统控制失灵,所有采集到的信号都反馈到PLC当中。上位机需要通过串行通信取得所需的数据信息,并通过串行通信将必要的控制信息和参数设置信息写入PLC的数据存储区。因此,串行通信作为上位机和下位机联系的唯一方式,在整个系统中具有非常重要的作用。

1.1上位机与PLC间的串行通信

计算机与计算机或计算机与外部设备之间的数据传输和交换的方式主要有串行通信和并行通信两种方式,其中串行通信指的是数据逐位传输的方式。由于串行通信方式具有使用线路少、成本低,特别是在远程传输时,避免了多条线路特性的不一致而被广泛采用。

1.1.1串行通信

串行通信方式又可分为两种:同步串行通信方式和异步串行通信方式。

1.同步串行通信方式:同步串行通信是以数据块(字符块)为信息单位传送,每帧信息可以包含很多字符。同步通信要求通信双方以相同的速率进行,而且要准证确协调,通常通过共享一个时钟或定时脉冲源保发送方和接收方准确同步。这种通信方式的效率较高,但是对时钟同步要求非常严格,成本较高。

2.异步串行通信方式:异步串行通信以字符为信息单位传送。双方需要遵守异步通信协议,以字符为数据单位,发送方传送字符的时间间隔不确定。每个字符传输都以起始位开始,以停止位结束。通信双方所指定的字符的数据位数,奇偶校验方法和停止位数必须相同。其传输效率比同步通信方式低,但是成本较低。

异步通信是在以起始位开始、停止位结束的一个字符内按约定的频率进行同步接收。各个字符之间允许有间隙,而且两个字符之间的间隔是不固定的。在同步通信方式中,不仅同一字符中的相邻两位间的时间间隔要相等,而且相邻字符间的时间间隔也要求相等,这也是同步通信和异步通信方式的主要差别所在。

因此,异步串行通信一般用在数据传送时间不能确知,发送数据不连续,数据量较少和数据传输速率较低的场合;而同步串行通信则用在要求快速、连续传输大批量数据的场合。

1.1.2串行通信接口标准

在串行通信时,要求通信双方都采用一个标准接口,使不同的设备可以方便地连接起来进行通信。在设计通信接口时,一般都采用标准接口以提高其通用性。本系统中,上、下位机进行通信首先面临的问题就是通信标准的选择问题。

1RS-232C接口标准

RS-232C接口标准(全称EIA-RS-232C标准)是在1969年由美国电子工业联合会(EIAElectronic Industrial Associate-Recommended Standard-232C)与Bell公司、调制解调器厂家及计算机终端生产厂家共同开发的用于串行接口的通信协议。它最初是为远程通信连接数据终端设备DTEData Terminal Equipment)和数据通信设备DCEData Communication Equipment)而制定的[46]。虽然这个标准的制定没有考虑计算机系统的应用要求,但是广泛的用于计算机与终端或外设之间的连接。

RS-232C标准规定了在串行通信时,数据终端设备和数据通信设备之间的接口信号。其中常用信号的名称、引脚号以及功能如表4-1所示。

4-1 RS-232C常用信号定义

引脚号

信号名称

简称

信号功能说明

2

发送数据

TxD

DTEDCE发送串行数据

3

接收数据

RxD

DTEDCE接收串行数据

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器件连接,必须进行电平和逻辑关系的转换。目前使用较为广泛的是集成电路转换器件,如MC1488MC1489

RS-232C的机械特性:虽然RS-232标准定义了25个信号,但进行异步通信时实际只用到了9个信号:2个数据信号、6个控制信号和1个信号地线。因此RS-232的连接器主要有DB25DB9两种类型。现在微型计算机上均采用DB9型连接器作为主板上COM1COM2两个串行口的连接器,其引脚及信号分配如图4-2所示。

3RS-485接口标准

RS-485标准也是一种平衡传输方式的串行接口标准,它和RS-422A兼容并且扩展了RS-422A的功能。

RS-485的电气特性:逻辑“1”以两线间的电压差为+(26)V表示;逻辑“0”以两线间的电压差为-(2-6)V表示。接口信号电平比RS-232C降低了,就不易损坏接口电路的芯片,且该电平与TTL电平兼容,可方便与TTL电路连接。数据最高传输速率为10MbpsRS-485接口是采用平衡驱动器和差分接收器的组合,抗共模干扰能力增强,即抗干扰性好。RS-485接口的最大传输距离标准值为4000英尺,实际上可达3000米。RS-485接口在总线上是允许连接多达128个收发器,具有多站能力,用户可以利用它建立起设备网络。RS-485接口由于具有良好的抗干扰性、传输距离长和多站能力等优点使其成为首选的串行接口。

本系统中,上位机和下位机的通信运用了以上标准中的RS485RS232C两种通信标准。计算机具有标准RS232C接口,而PLC具有标准RS485接口,两者通过电缆和RS485/RS232C转换模块连接(如图所示4-3)。

1.2通讯参数设置和通讯测试界面

在供水自动化监控系统中,信息管理及监控软件作为处理、显示和存储数据的核心,主要负责对各个电动机的转速和各处管道压力的查询、监控以及报警的处理。运行信息管理及监控软件的计算机与PLC之间的通讯主要是通过RS-232C串行接口(PC机一般提供了COM1COM2两个串行口)进行通讯,实现系统的监测控制和信息管理功能。

本系统中上位机的信息管理及监控软件运行在Windows2000/NT操作系统下,串行通讯程序运用Inprise公司推出的快速开发工具Delphi 6.0开发。PPI通信协议是西门子专为S7-200系列PLC开发的一个通信协议,物理上采用RS485信号电平,PLC默认处于该方式。使用PPI方式对PLC编程及调试监控,其硬件连接只需通过编程(PC/PPI)电缆即可实现。软件编程采用中文环境、内部系统协议,设计人员只需通过软件设置一下参数,数据如交换不需要考虑,用NETRNETW两条语句即可进行数据的传递。

1.2.1通讯参数设置

为了进行串口通信,实现系统的监测控制和信息管理功能,必须对通讯参数加以设置。

通信设置:

串口:COM1COM2

波特率:3006001200...

校验方法:NEMOS

数据位数

停止位数:

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具有强大的通信能力。主要支持以下几种协议:

1PI(Point-to-Point)协议,即点到点接口协议。PPI是一个主/从协议,主站(其它CPUSIMATIC编程器)给从站发送申请,从站进行响应。从站不初始化信息,只响应主站的申请或查询。如果在用户程序中允许PPI主站模式,S7-200 CPURUN模式下可以作为主站,还可以利用网络读(NETR)和网络写(NETW)指令读写其他CPU,同时也能够作为从站响应来自其它主站的申请。采用PPI协议的网络中最多只能有32个主站。该协议主要是用来编程、PPI组网等

2MPI(Multi-Point)协议,即多点接口协议。MPI可以是主/主协议或主/从协议,协议如何操作依赖于设备类型(设备是S7-200系列CPU时建立主/从连接)。MPI总在两个相互通信的设备之间建立连接,其它主站不能干涉两个设备之间已建立的连接。由于S7-200的连接是非公用的,并且需要CPU中的资源,每个S7-200 CPU只能支持4个连接,每个EM277模块支持6个连接。在使用时,每个S7-200 CPUEM277模块保留两个连接,分别用于连接SIMATIC编程器(或计算机)以及操作面板。这些保留连接不能被其它类型的主站使用。

3ROFIBUS协议。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.0BCC校验正确则置位;

M0.1Verify子程序的触发条件,被置位表示进行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和用户程序之间交换信息。

SMB30SMB130是自由端口控制寄存器。SMB30控制自由端口0的通信方式,SMB130控制自由端口1的通信方式。这两个寄存器是用来设置自由端口通信的操作方式,并提供自由端口或者系统所支持的协议之间的选择。Pp用于校验选择,0010表示不校验,01表示奇校验,11表示偶校验。d用于指定每个字符的数据位,0表示8位字符,1表示7位字符。bbb用于选择自由口通信的波特率,其含义同表4-2mm用于协议选择,00表示PPI/从站模式,01表示自由口协议,10表示PPI/主站模式,11保留不用。

SMB87SMB187用于控制接收信息的标志;SMB88SMB188用于指定开始的信息字符;SMB88SMB188用于指定

文章版权归西部工控xbgk所有,未经许可不得转载。