1一款第三方通讯平台的开发及应用田善江(陕西锌业有限公司陕西商洛726007)0引言随着技术的发展,智能化设备越来越多。有大量的智能化机器(或仪表)需要与PLC通讯。具体到印制电路板电镀生产线来说,依据印制电路板的型号规格以及印制电路板投入电镀槽时间的长短,自动控制整流器的输出电流,对于保证印制电路板的电镀质量意义重大,这就要求采用智能化的整流器,更要求智能化整流器与电镀生产线的PLC系统实现通讯,接收PLC的控制指令,并将输出电流、电压等实时参数发送给PLC。不同品牌的智能化整流器,其内部单片机的软件各有千秋,通讯协议各不相同,这就给智能化整流器与PLC的通讯带来很大难度。因此就迫切需要一种即可与PLC通讯,又能与智能化整流器通讯的第三方通讯平台。1待研发第三方通讯平台的通讯对象1.1以欧姆龙品牌C系列PLC为主通讯对象欧姆龙品牌C系列PLC在印制电路板行业电镀生产线控制系统中广泛应用,其通讯协议是公开发布的。且欧姆龙PLC与上位机实现通讯比较方便,只需要按照上位机提出的要求设定相关参数,将通讯线与上位机连接正确即可,并不需要特别编写通讯程序。数据传输时,上位机主动从PLC读取数据,并主动向PLC写入数据。PLC程序只需要在PLC数据区中约定存储区域读取上位机发来的数据,并将需要发给上位机的数据写入PLC存储区中约定的上位机读数据区域即可。因此,待研发第三方通讯平台将欧姆龙品牌C系列PLC作为主通讯对象。将其作为第作为智能化整流器的上位机考虑。1.2从通讯对象为各种品牌的智能化整流器不同厂家的智能化整流器尽管使用的单片机程序各不相同,且通讯协议千差万别,但单片机程序的主要功能基本相同:(1)将整流器的地址上传给上位机。(2)对整流器的输出电流、电压的检测信号(已经过模拟放大电路转换为DC0—5V标准信号)进行数字化处理,转换为数字数据,再通过串口发送出去,以便上传给上位机进行本整流器的输出电流、电压的远程显示;(3)对串口接收到的上位机发送来的信号进行甄别处理,不是发给本整流器的,则丢弃;对发送给本整流器的数据进行接收,并按不同的指令,分别处理如下:a、将上位机发来的恒流(或恒压)工作方式指令,经数字化处理,变为开关量信号0或1,从规定的端口输出,用于控制整流器按恒流方式或者按恒压方式工作;b、将上位机传来的电流(或电压)设定值进行处理(如果设定的整流器工作方式为恒流方式,只处理电流设定值;工作方式为恒压方式,则只处理电压设定值),转换为0—511或0—1023的数字数据,然后再经过PWM转换为PWM方波,从PWM输出端输出,经外围电路处理后变为模拟量信号,用以控制整流器恒流方式时的电流输出大小及恒压方式时的电压输出大小。c、将上位机传来的整流器输出开通(或关断)设定指令,经过处理,变为开关量信号0或1,从规定的端口输出,用于控制整流器开通输出或关断输出。因此,如果第三方通讯平台要成为比较通用的产品,就应可以与不同品牌的智能化整流器通讯,2而不是只与特定品牌的整流器通讯。这个问题的关键是要识别不同厂家通讯协议并进行处理。经反复分析研究,这个问题是可以通过软件方法解决的。另外,由于不同品牌智能化整流器的软件主要功能基本相同,因此第三方通讯平台软件中的核心数据处理部分就可以封装为一个标准的函数模块,而不需要针对不同品牌整流器进行特别考虑。根据上述,完全能够做到将各种不同品牌整流器作为第三方通讯平台的从通讯对象。2待研发第三方通讯平台的硬件平台选择硬件平台的选择原则是兼顾经济性、先进性和方便性。因此PC机显然因为价格较高且体积较大是不合适作为硬件平台的。所以确定硬件平台以嵌入式主板为核心,再配置少量外围器件构成。经反复进行价格及性能比较,嵌入式主板决定选择深圳市深蓝宇科技有限公司生产的PCM-3592型(或PCM-3593型)嵌入式主板。该型主板可根据用户需要提供串口、USB口、VGA/LCD接口、鼠标/键盘接口、电源接口等接口配线。PCM-3592型嵌入式主板主要技术特点如下:项目描述项目描述CPUX86核心的SOC(系统级芯片)系统内存256MB硬盘(光盘)接口增强型IDE接口串行口4路RS232口显示支持支持VGA/LCD显示USB接口两路高速USB2.0支持的操作系统DOS6.22,DOS7.1,WinCE5.0,WinCE6.0,Linux,Win98,Win2000,WinXP,XPE等电源DC5V硬盘也选用深圳市深蓝宇科技有限公司的1款4G固态IDE硬盘。该款硬盘体积很小,可直接插在嵌入式主板的IDE接口上。其容量可以满足要求,因为操作系统最多会占用1G左右存储空间,第三方通讯平台软件所需存储空间不会超过2M,4G的容量,安装操作系统及第三方通讯平台软件后,还会剩余大量存储空间。另外,因为1条电镀生产线需要使用少则10几台,多则几十台整流器,通讯时最合适的方式是选择RS485方式,以便实现大量大量整流器与上位机远距离通讯。因此,在通讯平台实际应用时,需要根据生产线上整流器数量及分组情况选用1--3个232转485串口转换器,插接在嵌入式主板上规定为与整流器通讯的COM口上,以实现与各组整流器的RS485通讯总线的连接。3软件开发3.1编程语言的选择编程语言决定选用面向对象的编程语言C++6.0语言。编程过程决定先建立程序模型,在此基础上逐步求精。这样便于编程与测试基本同步进行,可以少走弯路,并且逐步求精的最终结果就是软件成品了。3.2辅助软件的编程第三方通讯平台的核心软件命名为《第三方通讯平台程序》(简称通讯平台程序),为了通讯平台程序安装及测试的需要,有几款辅助软件需要与通讯平台程序同步编程,分别是《整流器通讯协议注册程序》、《PLC模拟程序》、《整流器模拟程序》。(1)整流器通讯协议注册程序(简称注册程序)注册程序在通讯平台程序安装时使用,其功能是将在窗口输入的整流器通讯协议写入一个命名为“Rect_prot”,扩展名为ini的文件里,并将文件Rect_prot..ini存储在指定路径下,以便通讯平台程序启动后读取,从而使第三方通讯平台能够与具有特定通讯协议的整流器实现通讯。为防止用户误3删除该ini文件,可将其存储路径特别规定,使用户单位除专责技术员外难以找到。注册程序的窗口分位为2个输入区域,一个是串口初始化输入区,另一个是数据帧格式输入区:a、串口初始化输入区:共4个条目,每个条目由1个静态文本框和一个组合框组成。文本框指明本条目为波特率、数据位数、还是奇偶校验位、停止位,组合框则用于对波特率、数据位数等的值进行选择。b、数据帧格式输入区:针对通讯协议对数据帧规定的各项目,如起始字符、地址、命令字符、数据区、检查和、校验码、终止符等项目,分别进行输入。每一个项目由1个静态文本框和1个编辑框组成,静态文本框用以指明本项目名称;编辑框用以输入。注册程序窗口共设置2个按钮,一个注册按钮,一个取消按钮。注册按钮的功能为:将输入区录入的整流器通讯协议各个项目分别赋给对应的变量,然后将这些变量按规定的顺序分行写入文件Rect_prot.ini,并将文件存在指定路径下。按下注册按钮,如果输入的通讯协议不违背串口通讯的相关规则,则注册成功,同时弹出消息框,显示“注册成功”,按下消息框的确认按钮后,消息框消失且关闭注册窗口。如果输入的通讯协议不符合串口通讯的相关规则,则注册失败,弹出消息框,显示“你输入的通讯协议不合法,请返回上一步注”,按下消息框的确认按钮后,消息框消失,但注册窗口继续保留,以便进行修改。按下取消按钮,将放弃注册通讯协议,注册窗口关闭。(2)PLC模拟程序PLC模拟程序的用途是模拟欧姆龙PLC与第三方通讯平台通讯,以便通讯平台软件在没有真实PLC存在的情况下即可进行测试。它不需要对欧姆龙PLC的所有功能进行模拟,只要能进行整流器的相关参数设定,并按欧姆龙PLC与上位机进行通讯的通讯协议构造数据帧并发送且能被第三方通讯平台正确接收,以及能够正确接收第三方通讯平台通讯发来的遵循欧姆龙PLC通讯协议的数据帧即可。为了进行参数设定以及验证是否对第三方通讯平台传输的数据进行了正确接收,需要一个人接交互窗口。交互窗口需要一个显示区以及一个设定按钮。显示区用以显示每一台确定地址的整流器的电压、电流实际值,也显示PLC模拟程序为各台整流器设定的电压、电流值等。设定按钮的功能是调出一个设定对话框,在设定对话框里可以单台、也可以逐台对整流器进行工作参数设定,如恒流、恒压工作方式、开通或关断输出、设定电流、设定电压等。(3)整流器模拟程序(简称虚拟整流器)虚拟整流器的用途是:安装在PC机上用以模拟真实的整流器与第三方通讯平台通讯,以便对第三方通讯平台进行测试。对虚拟整流器的具体要求为:a、可以模拟通讯协议各不相同的整流器;b、能够将第三方通讯平台传输来的电流、电压等设定值显示出来;c、能够设定虚拟输出电流、电压,传输给第三方通讯平台,也在模拟整流器的窗口显示出来。为满足上述要求,具体的编程为:创建一个文件名为Rect_Protocol.dat的DAT文件,该文件应与虚拟整流器存储在同一路径下。Rect_Protocol.dat可在虚拟整流器启动前创建,也可在虚拟整流器启动前根据测试需要,按照某一品牌整流器的通讯协议对Rect_Protocol.dat的内容进行修改。虚拟整流器按照对话框应用程序进行创建和编程,在其初始化函数中读取文件Rect_Protocol.dat,并根据读取的内容初始化COM口及构建与第三方通讯平台通讯的数据帧格式。4为虚拟整流器创建1个通讯线程ComThread,用以实现与第三方通讯平台的通讯。再创建2个与通讯密切相关的全局函数DatReadProc和FrameStructure。DatReadProc用以处理虚拟整流器接收自第三方通讯平台的下传数据帧,FrameStructure用于构建与第三方通讯平台通讯的上传数据帧。ComThread将函数FrameStructure构建的符合通讯协议的数据帧上传给第三方通讯平台,并通过调用DatReadProc,从接收自第三方通讯平台的数据帧解析出电流设定值、电压设定值、恒流/恒压工作方式设定值、开通/关断整流器输出设定值,并分别赋给全局变量AmpSet、VoltSet、CVCI_Set、OnOff_Set。虚拟整流器显示窗口的主要功能为显示串口收到的数据以及进行虚拟输出电流、电压的设定。主要编程过程如下:a、创建4个静态文本框,用以显示AmpSet、VoltSet、CVCI_Set、OnOff_Set。b、创建2个编辑框,分别用以设定虚拟输出电流、虚拟输出电压,并为2个编辑框控件各添加1个int型变量AmpOut(虚拟输出电流)、VoltOut(虚拟输出电压);c、为确认按钮添加一个消息函数OnOk,在OnOk中删除自动生成的代码“CDialog::OnOK();”,使确认按钮按下后,对话框不会关闭;并添加代码“UpdateData(TRUE);”,将编辑框的数值赋给对应的变量AmpOut、VoltOut;再调用函数FrameStructure,实现对上传数据帧的更新,使最新的虚拟输出电流、电压及时传输给第三方通讯平台。d、将取消按钮的标题修改为“退出”,其它属性不做修改。按下退出按钮后,将关闭对话框,虚拟整流器退出运行。3.3通讯平台程序的编程通讯平台程序作为第三方通讯平台的核心,其编程效果直接决定着第三方通讯平台是否具有应用价值。为了少走弯路,首先要明确通讯平台程序的主要任务,并围绕主要任务解决关键问题,然后再逐步完善。(1)通讯平台程序的主要任务如下:a、数据上传任务:接收同一电镀生产线上的所有整流器(通讯协议相同)传输来的数据,进行处理后,按照欧姆龙PLC与计算机进行串口通讯的通讯协议构造数据帧,传输给欧姆龙PLC。b、数据下传任务:接收PLC传输来的数据,进行处理后,按照整流器的通讯协议构造数据帧,发送给整流器。c、视口任务:将接收自PLC及整流器的数据,均以友好的方式在窗口显示,以方便技术人员进行软件调试时及日后运行中的维护。(2)需