- UID
- 1023230
|
0 引言
在过程控制中,由于工业现场非常分散,I/O点数众多,各种仪表的工作环境非常恶劣,采用数据采集卡和LabVIEW开发平台来完成现场的数据采集和控制显然不可取。考虑到过程控制中的过程参数变化不是很快,而PLC恰恰可以克服数据采集卡在过程控制中的不足,并且具有较高的性价比,因而采取以PLC为下位机,以装有LabVIEW软件的工控机为上位机开发平台。通过RS-232和RS-485串口与PLC通信,实现对工业现场的监控与现场数据的分析。本文根据这个思想设计了一个工业远程监控系统,上位机采用PC机,下位机采用西门子PLC S7-200。介绍了一种在LabVIEW 8.6平台上开发PC机和PLC实时监控的软件的编程方法,在此基础上构建了基于PLC的主从式虚拟仪器测控系统。
1 系统构成与自由口通信模式
1.1 PC与PLC的通信方式
S7-200 CPU上的通信口是与RS-485兼容的9针D型连接器。PLC还提供了实现RS-485与PC机上RS-232相连接的PC/PPI电缆,可以方便地实现S7系列PLC与PC之间的硬件连接。图1是PC与PLC通信的示意图,利用主机上的232串口,通过RS232-RS485转换模块与PLC相连。系统中如果应用多个PLC模块或其他具有RS485串行通信能力的设备,亦可方便地联网或构成网络测控系统。
1.2 PC与PLC的通信协议
西门子S7-200系列的PLC可以在四种通信模式下工作:PPI、MPI、PROFIBUS-DP和自由口通信模式。自由口通信模式是由用户程序来控制CPU的串口通信。用户可以利用发送/接收中断、发送/接收指令来控制通信的操作,实现与打印机、条形码阅读器等设备的通信。
本文主机与PLC之间串行通信采用的是自由通信协议。该协议采用主从结构的通信方式,传输模式是RTU,适用于半双工的RS485总线。协议规定总线上有一个主机,多个从机,每个从机分配惟一的地址。工作时可以采用命令应答的通信方式,每一种命令帧对应着一种应答帧。主机向要访问的从机发出命令帧,地址匹配的从机做出响应,向主机发出命令帧对应的应答帧。自由通信协议中,为命令帧定义了许多功能码,不同的功能码要求从机进行不同的响应。PLC在将传感器信号转换为数据后将其存储在变量存储区的固定区域。此时PLC的串口一直处于接收状态,直到接收到来自上位机的读命令后,转为发送状态,将变量存储区中的数据通过串口发送给上位机。考虑到收发切换有一定的时间间隔,所以必须延迟一段时间再转为发送数据。
1.3 自由口模式的注意事项
自由口模式通信要注意以下问题:
(1)CPU通信口工作在自由口模式时,通信口就不支持其它通信协议。CPU停止时,自由口不能工作,编程软件就可以与CPU通信。
(2)此通信模式下,发送和接收指令是程序的核心指令,用户程序不能直接控制通讯芯片而必须通过操作系统。
(3)用户程序中应考虑电缆的切换时间。CPU接收到RS-232设备的请求到它发送响应的延迟时间必须大于等于电缆的切换时间,可用定时中断实现切换延时。
(4)在自由口模式下,通信双方的通信参数是由用户自行设定的,通信双方的波特率一定要设置相同。另外,在PLC网络中主站个数越少,通信速度越快:波特率越大,通信速度也越快,但抗干扰能力降低。因此对于本系统这种单主站的网络,要注意波特率不宜设置得过大。
2 虚拟仪器程序设计
LabVIEW是美国国家仪器公司开发的虚拟仪器开发平台软件,功能强大、灵活,广泛应用于自动测量系统以及工业过程自动化等各个领域。
在LabVIEW编程语言中串口通信采用虚拟仪器体系结构VISA (Virtual Instrument Software Architecture)标准编程。VISA是仪器驱动的一个工业标准,其内部是一个面向对象的结构,这一结构使得VISA和在它之前的I/O控制软件相比,在接口无关性、可扩展性方面都有很大提高。VISA标准的推出,统一了仪器工业的软件接口标准,使得仪器驱动程序兼容性强并且可适应未来软硬件的发展需要。
2.1 LabVIEW中的串口通信函数
(1)VISA配置串口。该函数主要用于串口的初始化。主要参数如图2所示。
其中“VISA资源名称”指定要打开的资源。该控件也可指定会话句柄和类。“波特率”是传输速率,默认值为9600。“数据比特”是输入数据的位数,默认值为8。“奇偶”指定要传输或接收的每一帧所使用的奇偶校验。“停止位”指定用于表示帧结束的停止位的数量。“流控制”设置传输机制使用的控制类型。 “VISA资源名称输出”是由VISA函数返回的VISA资源名称的副本。
(2)VISA读取函数。该函数为串口读取子程序,从串行设备读取数据,为后续的数据处理提供条件。主要参数如图3。
其中“字节总数”是要读取的字节数量。“读取缓冲区”包含从设备读取的数据。“返回数”包含实际读取的字节数。
(3)VISA写入函数。该函数为串口写子程序,用于对串口设备进行写操作。主要参数如图4所示。
其中“写入缓冲区”包含要写入设备的数据。“返回数”包含实际写入的字节数。
此外,LabVIEW中与串口通信有关的还有VISA关闭函数与VISA串口字节数函数,分别用于关闭串行设备的任务或事件和计算进入串口缓存区中的数据字节数。
2.2 LabVIEW与PLC串口通信实现
按照通信协议使用专用的九芯插头和PC/PPI电缆,将PC机的COM1口与S7-200的自由通信口直接连接。由于电缆上带有RS-232/RS485电平转换器,连接十分方便。LabVIEW进行串口通信的基本步骤为:
(1)初始化端口。利用VISA配置串口函数设定进行串口通信的端口号、波特率、停止位、校验、数据位。
(2)读写端口。利用VISA读串口函数和VISA写串口函数从串口中读入或输出数据。由于LabVIEW的串行通信子程序只允许对字符串的读写,因此在数据处理时,必须进行字符串与数字之间的正确转换。
(3)关闭端口。当对串口操作完成后,需要关闭串口,以释放硬件资源。
3 串口通信实现
按照上述过程,设计了监控系统程序,程序框图与前面板分别如图5、图6所示。
其中PC机与PLC串口通信程序结构分为3个部分:
(1)串口初始化。根据通信协议设定,通信端口:COM1,波特率:9600bps,1位起始位,8位数据位,1位停止位,无奇偶校验,无软件握手协议。
(2)发送命令和读取响应将命令通过串口COM1发给PLC,并接收来自PLC的响应信息,如果响应正常(状态信息为O1或02),就将所得数据做显示、计算分析、存储等后续处理,以便用于设备实时控制和在线状态监测;如果响应不正常则退出程序(03或04),用户重新输入命令开始工作。
(3)关闭串口。调用LabVIEW提供的VISA关闭串口函数实现串口资源的释放。
当程序运行时,LabVIEW首先向PLC发出一个读请求,然后检测输入缓存中的字节数;当达到预定字节数时,LabVIEW利用读串口函数将输入缓存中的字节一次性读出,然后继续发出一个读请求到PLC。如此循环,直至结束。本程序还采用了状态机的方法进行状态的判断和选择。
4 结论
PLC自由口通信方式具有与外围设备通信方便、自由,易于微机控制等特点,这一通信方式被越来越多的监控系统所采用。利用PC机或工控机的串口,按照自由通信协议,结合地址映射技术在LabVIEW平台上开发出串行通信模块,可以很方便地实现主机与PLC的串行通信,对PLC的内存单元进行读写操作,从而实现对PLC的监控。本文所提出的设计能够方便地应用于基于PLC的工业监控,具有开发方便、扩展灵活的优点。 |
|