《自动化仪表》第26卷第5期 2005年5月
基于FXBD的FXPLC串口通信DLL的实现
ImplementationofDLLofPLCSerialPortCommunicationBasedonFXBD
邱培林 沈昱明
(上海理工大学光电学院,上海 200093)
摘 要 提出了一种不同于传统方法编写DLL(动态链接库)的新思路,详细地介绍如何实现基于FXBD的FXPLC串口通信DLL,并应用在LabVIEW中。该DLL将更大程度地满足工业的需要。关键词 FXBD PLC串口通信 DLL
Abstract Anewconceptdiffersfromtraditionalmethodtodevelopdynamiclinklibrary(DLL)isdescribed.TheimplementationofDLLofFXPLCse2rialcommunicationbasedonFXBDandhowtousethisDLLinLabVIEWareintroducedindetail.ThisDLLgreatlymeetsindustrialdemands.Keywords FXBD PLCSerialcommunication DLL
0 引言
DLL(动态链接库)是Windows的重要组成部分,包
变换成RS485信号,经FX485BD与PLC进行通信。
含被程序或者其他动态链接库调用来完成某项工作的函数。使用它的目的就是给不同应用程序提供完成某项工作的资源或函数。因而在不同应用场合,要实现上位机对PLC进行控制以完成各种功能,编写能完全控制PLC的动态链接库十分必要。本文详细地讨论如何实现基于FXBD的FXPLC串口通信DLL。
图2 多PLC串口通信图1 单PLC串口通信
1 FXPLC串口通信DLL的实现原理
1.1 FXBD
FXBD是三菱PLC通信的扩展模块,主要分为FX232BD、FX485BD和FX422BD等3种,而实现PLC串
实现通信的原理就是利用计算机链接通信协议发送控制帧来操作各个PLC。协议内容如图3所示。
口通信应使用FX232BD、FX485BD模块。其中FX232BD主要用于单PLC连接,FX485BD用于多PLC连接。
1.2 实现原理
传统的三菱PLC通信动态链接库主要通过三菱
PLC上的编程口,利用编程电缆来对PLC进行控制。
因串口通信的参数固定,且对PLC可操作的寄存器数目有限,故有必要编写功能更多的动态链接库。考虑到三菱PLC支持计算机链接,采用计算机链接通信格式,利用FXBD,可通过单个串行口来控制多PLC,并且可以设定串口参数,适应不同的传输速率。通信时可以调整PLC中的响应等待时间,支持PLC内部所有寄存器,扩大了使用范围,适用于多PLC联网和上位机通信等,满足工业现场的各种控制需要。
图1、图2分别为单PLC、多PLC串口通信系统图。在多PLC通信时,通过上位机的串口接入485PC-IF,60
图3 PLC通信协议
2 FXPLC串口通信DLL的编写
2.1 串口通信类
在实现的具体过程中,首先建立一个串口通信类。对于PLC的操作只是按照相应的通信协议,写成一个帧,调用该通信类中相应成员函数来操作串口,从而控制PLC。串口通信类各成员函数的程序流程如图4、图
PROCESSAUTOMATIONINSTRUMENTATIONVol.26No.5May2005
基于FXBD的FXPLC串口通信DLL的实现 邱培林,等
5、图6所示,分别为打开串口、读写数据、关闭串口函
intmessagewait,intoperationstatus,chardevicename,intaddress,intnumber,int3databuffer); ∥批量读设备
数流程图。通过Windows的API函数,对串口进行参数设置、读写操作,并根据API函数返回值作出判断,返回给上层应用程序,便于应用程序作出判断。其关键是用到异步I/O操作,它是指应用程序可以在后台读或写数据,而在前台做其他事情。打开串口创建两个OVERLAPPED结构的事件句柄,分别用于读写操作完成触发事件。关闭串口时则需关闭这两个事件句柄。读写操作时通过这两个事件判断操作是否成功。
⑤intControlPLC(intnPort,intstationnumber,int
messagewait,intrunstatus); ∥PLC运行状态控制
⑥intLoopBackTest(intnPort,intstationnumber,int
messagewait); ∥PLC通信状态测试
其中参数的含义详见表1。
表1 各参数的含义
参 数
nPortnBaud
表 示 含 义
打开串口号(1~6)
波特率(300,600,1200,2400,4800,600,
19200)
bytesizeparity stopbitsstationnumbermessagewait
operationstatusdevicenameaddressnumberdatabuffer
图4 打开串口流程图
数据位(7,8) 校验(0为偶校验,1为奇校验,2为无校验) 停止位,1为1位停止位,2为2位停止位 PLC的站号(0~15) PLC的等待时间。允许PLC等待一段延时时间后执行。取值为PLC中设置的值0~15,代表0~150ms。 操作状态,1读写位设备,0读写字设备 设备名称(Y,M,C,T,D,S) 设备地址 批量读写设备数量 读写设备的值存放缓冲区
2.3 通过串口通信类实现DLL的导出函数
该DLL导出函数的实现,就是调用来自串口通信类的成员函数,完成对串口的操作。如在DLL中打开串口导出函数时,调用serial.Open(nPort,nBaud,byte2
size,Parity,stopbits)来传入相应参数,完成打开串口的
操作。其中serial为串口通信类对象,Open是串口通信类的成员函数。对于其他的导出函数都采用同样的方法。
图5 读写串口数据流程图
图6 关闭串口流程图
2.2 DLL的导出函数
DLL的导出函数是DLL最主要的部分,是DLL与
3 应用DLL
调用DLL主要完成如下一些操作:①打开串口,完成对串口的参数设置;②完成相关读写PLC、控制
PLC运行操作;③操作完成关闭串口。
外围应用程序的接口。作为FXPLC串口通信DLL,其内封装了PLC通信帧的传输格式,只提供给用户简单的接口。该DLL实现的导出函数如下:
①intOpen(intnPort,intnBaud,intbytesize,int
parity,intstopbits); ∥打开串口
该动态链接库支持多种语言环境,例如VC++、
VB、LabVIEW等。在LabVIEW环境下的调用过程如
下:新建项目,在Diagram中右键选择Function→Ad2
vanced→CallLibraryFunctionNode,如图7所示。
②intClose(intnPort); ∥关闭串口
③intBatchWriteDevice(intnPort,intstationnumber,
intmessagewait,intoperationstatus,chardevicename,intaddress,intnumber,int3databuffer); ∥批量写设备
双击出现图7所示的对话框。
点击FunctionName的下拉对话框,按照顺序对
DLL中的其他函数进行参数设置。其中选项Calling
(下转第页)
④intBatchReadDevice(intnPort,intstationnumber,
61
《自动化仪表》第26卷第5期 2005年5月
②溶解氧和压力控制回路:采用串级控制,在一定程度上解决了该回路具有的非线性,理论上可以采用多变量自适应控制器进行控制。
③发酵液pH值控制回路:由于pH值变化有一定的滞后性,采用时间比例的开关PID方式进行控制,提高了pH值控制的质量。
④空罐消菌回路和投料控制回路:采用由DeltaV控制系统提供的简单顺序控制和联锁控制方式对各种阀门(调节阀、截断阀等)以及其它执行机构和智能检测设备等进行控制。
该制药厂整个发酵罐工段的控制系统由分放在不同地点的4台操作站和控制站构成过程控制和管理级,实现对发酵罐工段的优化过程控制、组态及画面显示、历史趋势显示、报警处理、报表生成以及安全权限管理等功能,并且可以实现与分装工段控制系统等进行集成。该工段控制系统组态图如图3所示。选用符合FF协议的标准智能终端设备,甚至把一些简单控制功能下放到生产底层,保证了生产数据的可靠性和实时性,有利于对生产数据的处理、分析和对比,为企业的管理信息系统提供了准确可靠的实时数据信息,为企业计划指令的下达提供了可靠的依据。
3 结束语
自2002年10月采用基于现场总线的控制系统对该制药厂发酵罐工段进行全面技术改造实施以来,系统实现了对发酵罐工段的空消、送料、培养基灭菌、冷却、接种和培养发酵等整个工序的实时监控,并且与产品分装等系统进行了集成,做到了对批流量过程生产的精确控制和管理,减少了外界干预和设备故障等问题,实现了企业对生产质量的在线优化控制和性能改善,降低了生产成本,缩短了针对不同订单的生产周期。系统为公司上层管理信息系统实现了底层生产实时数据的上传和企业上层决策计划指令实时下达等功能,为进一步实施企业管控一体化和提高企业对市场需求的快速响应能力打下了坚实的基础。
参考文献
1 阳宪惠.现场总线技术及其应用.清华大学出版社,1999
2 白焰,等.现场总线控制系统的体系结构及其应用问题分析.中
国电力,2003.3
3 王树清、元英进.生化过程自动化技术.化学工业出版社,1999
图3 发酵罐工段控制系统组态图
整个发酵罐工段采用基于基金会现场总线(FF)技术的通信方式,大大减少了通信线路的铺设,提高了系统数据的实时性和准确性。在实施中,过程生产现场
(上接第61页)
收稿日期:2004-06-03。
第一作者王献伟,男,1978年生,2001年毕业于太原理工大学,2002年至今为上海交通大学自动化系在读硕士研究生;研究方向为实时监控信息系统、现场总线控制系统和分散控制系统等。
4 结束语
该动态链接库响应速度快,功能多,应用于工业控制的场合,实现了与PLC的远程数据交换,满足了数据采集的实时性、准确性的要求,提高了工业控制的效率,还为编程者节省了大量的时间。相信在工业控制中实现与工业设备通信的DLL将是编程的趋势。
参考文献
1 李现勇.VisualC++串口通讯技术与工程实践.人民邮电出版社,2002
图7 在LabVIEW环境下的操作界面2 [日]MITSUBISHIELECTRICCORPORATION.FXCOMMUNICATION
(RS232,RS485)USER’SMANUAL.2000
3 康博创作室.VisualC++610高级编程.清华大学出版社,1999
Convention选择C,Parameter选择Numeric,Type选择Signed16Integer。然后点击AddaParameterAfter写入
参数名称与类型,一再在Diagram中连线将相应的数值传入该接点的参数中,完成相应的功能,实现在Lab2
VIEW环境中的调用。
收稿日期:2004-09-23。
第一作者邱培林,男,1981年生,上海理工大学在读硕士研究生;主要从事工业通信技术在工业领域中的应用。
PROCESSAUTOMATIONINSTRUMENTATIONVol.26No.5May2005