资源描述:
8 4 工业仪表与 自动化装置 2 0 1 0年第 1 期 J a v a实现计算机与 o MR O N P L C 串口通信 吴兴军 . 胡汉春 北京西动车所 ; 西南交通大学机械工程学院, 成都 6 1 0 0 3 1 摘要 O MR O N C J系列 P L C在工业 自动化领域 中应 用广泛。P L C与计算机 串口通信在分布式 控制系统、 数据采集系统等方面得到充分应用。通过 P L C串口硬件配置, 端口参数设置, P L C串口 程序设计, J a v a串口包的设置和 J a v a 计算机端串口通信程序编写实现计算机与P L C的串口通信。 关键词 P L C; 分布式控制 系统 ; 串口通信; 中图分类号 T N 9 1 文献标志码 A 文章编号 1 0 0 0 0 6 8 2 2 0 1 0 0 1 0 0 8 4 0 3 S e r i a l c o mmu n i c a t i o n b e t we e n c o mp u t e r a n d OMRON P LC r e a l i z e d b y l a n g u a g e o f J a v a wu X i n g j u n , H U H a n c h u n Me c h a n i c a l S c h o o l o fS o u t h w e s t J i a o t o n g , C h e n g d u 6 1 0 0 3 1 , C h i n a Ab s t r a c t O MRON C J s e ri e s P L C i s w i d e l y u s e d i n t h e i n d u s t ri a l a u t o ma t i o n .S e ri a l c o mmu n i c a t i o n b e t w e e n P L C a n d c o mp u t e r i s e x t e n s i v e l y u s e d i n d i s t ri b u t e d c o n t r o l s y s t e m,d a t a a c q u i s i t i o n s y s t e m a n d S O o n .B y h a r d wa r e c o n f i g u r a t i o n, p o r t S p a r a me t e r a l l o c a t i o n, P L C p r o g r a m f o r s e ri a l c o mmu n i c a t i o n d e s i g n,s e t t i n g for J a v a s e r i al c o mmu n i c a t i o n AP I a n d d e s i g n i n g s e ri a l c o mmu n i c a t i o n p r o gra m o n t h e C O B p u t e r h a n d,t h i s p a p e r s h o w a me t h o d o f s e ri a l c o mmu n i c a t i o n b e t w e e n c o mp u t e r a n d P L C wi t h l a n gua g e o f J a v a . Ke y wo r ds PLC; d i s t rib u t e d c o n t r o l s y s t e m ; s e ria l c o mmu n i c a t i o n 0 引言 可编程序控制器 P L C 是一种专门为工业环境 下应用而设计的工业控制计算机 , 具有抗干扰能力 强、 可靠性高 、 体积小等显著优点。P L C广泛运用于 工业及其他领域, 它 的串行通信功能在分布式控制 系统、 数据采集 系统 等方 面已经得到 了充分应用。 J a v a 语言在工业控制网络 、 电力系统 自动化等领域 中运用已越来越来广泛, 利用 J a v a语言实现 P L C与 计算机串口通信 , 可以将 J a v a多线程等特点运用于 P L C组成的控制系统中。 1 OMR ON C J系列 P L C简介 O M R O N C J系列 P L C是 欧姆龙公 司生产的小 型机。C J系列 P L C采用模块化设计 , C P U单元、 链 接单元、 I / O单元、 A / D单元、 D / A单元及通信单元 等可以供用户根据实际需求配置。同时它具有高速 总线性能 , 使用国际标准的 D e v i c e N e t 构筑包容不同 收稿 日期 2 0 0 9 0 51 8 作者简介 吴兴军 1 9 8 0 , 男 , 硕士 , 北京西动车运用所。 控制方法及数据 的设备 的 网络 , 实现高速 的 D e v i . c e N e t 通信。 2 P L C串口与 J a v a语言 串口功能 2 . 1 P L C串口硬件设置 c J系列 P L C的 C P U单元设置有一个 R S 2 3 2 C 端口, 用于连接编程设备 、 通 用外部设备、 可编程终 端或者上位机等。R S 2 3 2 C端 口为一个 9针的 D型 插座 , 图 1为 P L C的 R S 2 3 2 C端 口与普 通计算 机 R S 2 3 2端 口之间的连线图。 计算机 R S 一 2 3 2 端 口P L C R S 一 2 3 2 C端 口 信号 脚号 脚号 信号 CD l 1 R D 2 X 2 S D SD 3 3 RD ER 4 1 厂 4 RS S G 5 L 5 C S DR 6 6 R S 7 ] 7 C S 8 8 CI 9 ● 一 9 S G 图 1 P L C与计算机串口连线图 2 . 2 P L C串口通信时数据帧的格式 2 0 1 0年第 1 期 工业仪表与自动化装置 8 5 命令格式 . 响应格式 . 回巫 压亟圃 图 2 P L C数据帧格式 串 口通信时数据帧的格式如图2所示 。每帧必 须以字符“ ” 开头 , 机号是上位机用于识别所连接 P L C的号码 , 指定 为 0 0~3 1 B C D码 , 识别码为两 个字节 , F C S为两个字节 , “ ” 和 C R码为终端 。在 响应中包括两个字节 的结束码。命令/ 响应最大帧 的长度为 1 3 1 个 字节 , 每帧超过 1 3 1 个 字节 时必须 将帧分割后再发送 , 其中响应时会 自动分割帧。 2 . 3 J a v a串口通信功能介绍 S u n的 J 2 S E中并 没有 直接 提供 串行通信协议 的开发包 , 而是以独立的 j a r 包的形式在 网上发布 , 即 c o mm. j a r , 称之为 J a v a C o m m u n i c a t i o n s A P I , 它是 J 2 S E的标准扩展。C O mB. j a r 分别提供 了对常用 的 R S 2 3 2串行端 口和 I E E E 1 2 8 4并行端 口通信 的支持。 与 e o m m.j a 17一 起 的 还 有 两 个 重 要 的 文 件 , w i n 3 2 c o m. d l l 和 j a v a x . e o m m. p r o p e r t i e s , 前者提供 了 供 c o m m. j a r 调用的本地驱动接 口, 后者是 e o m m. j a / “ 的类配置文件 。应用时首先将 C O mB. j a r 复制到 \ l i b \ e x t目录, 再将 w i n 3 2 c o m. d l l 复制到应用程序运行 目录 , 然 后将 j a v a x . e o m m. p r o p e rt i e s 复 制到 \ l i b目 录 。 3 P L C与计算机串口通信的J a v a 语言实现 在分布式控制系统 中, 当 C J 系列 P L C作为 D e v i c e N e t 主站 , 可以由串行通信 口实现上位机与主站 之间的通信 , 上位机实现系统管理 , c J系列 P L C控 制现场设备 。利用 c J系列 P L C高速总线功能实现 对现场设备的可靠控制 , 同时由上位机与 P L C通 信 , 实现对整个系统的高效管理。在实现的过程中, P L C一端利用其 编程语 言 梯 形 图 编制 串 口通信 程序 , 在上位机一端利用 J a v a语言实现 串口通信功 能。 3 . 1 P LC串口通信指令与参数设置 用于 C J 系列 P L C串口通信 的指令 如图 3所 不 。 S T UP 指令T X D指令R XD指令 图3 P L C串口指令 S T U P为通信端 口参数设置指令。指令 中参数 c用于指定通信端 口。S为源字起 始字 , 后面 SS 9十个字对端 口的通信方式 、 波特率数据长度 、 奇 偶校验 、 启动位 、 停止位等进行设 置 , 最后 该指令将 设置存贮在 P L C内部设置区。 T X D为数据 发送指 令。s为 发送 数据首 字地 址 , C为控制字 , 用 于指定通信端 口等, N为发送字 节数 。当串口初始化完成后 , 就可 以通过 T X D指令 来发送数据 。 R X D是数据接收指令 , S为接 收数据贮存 的首 字地址 , C为控制字 , 用于指定通信端 口等 , N为接 收字节数 。当 P L C本 身 已把接收 的数 据放于数据 缓冲区 , 使用 R X D指令就是把存于数据缓冲区的数 据读出。 如图 4所示 对 P L C的串 口进行设 置。其 中串 口通信选择为 内置的 R S 2 3 2 C端 口 即 C J系列 P L C 的 C P U单元 内置 串 口 , 通过 HR 0 0对 串 口进行设 置。在发送数据 时 , 要发送数据 的首字地址为 D M 区 0 1 0 0单元 , 共发送 1 0个字节 , 具体格式 由 HR 0 1 中的内容设定。接收数据存储区域首字地址 为 D M 区 0 1 5 0单元 , 共接收 1 O个字节 , 格式 由 H R 0 2中内 容设定 。同时程序在发送数据前对发送数据区的内 容做相应的设置 , 接收完数据后对接收到数据进行 处理。图中指令前加“ ” 表示微分指令。 图 4 P L C串 口通信设置 3 . 2 J a v a上位机串口初始化 按照上文提到的方法配置 c o mm. j a r 包后 , 定义 一 个 S e r i a l l n i t 类作 为本类库 与其 他应用程 序的接 口。在该类 中定 S e r i a l l n i t中构造方法 以及初始 化 串口, 从串口读取数据 , 往串 口写入数据以及关闭串 的函数 。具体介绍如下 p u b l i c b o o l e a n I n i t i a l i z e 器 8 6 工业仪表与自动化装置 2 0 1 0年第 1 期 函数初始化所指定 的串 口并返回初始化结果。 如果初始化成功返回 t r u e , 否则返回 f a l s e 。初始化 的结果是该串口被 S e r i a l l n i t 独 占性使用 , 并且设置 串口参数。如果串 口被成功初始化 , 则将得 到输入 输出流。 并且打开一个进程读取从 串 口传人 的数据 并将其保存在缓冲区中。 t r y {p o r t l d C o m m P o r t l d e n t i fi e r . g e t P o r t I d e n t i fi e r P o r t N a me ; t r y{s e r i a l P o r t S e r i a l P o r t p o r t l d . o p e n ” S e ri a l I n i t ” , 2 0 0 0 ; / / 打开串E l s e r i a l P o r t . a d d E v e n t L i s t e n e r t h i s ; / / 添加事件 串口监听 } c a t c h P o r t l n U s e E x c e p t i o n e {r e t u r n I n i t F a i l ;} t r y { I n p u t S t r e a m i ns e fi M P o . g e t I n p u t S t r e a m ; Out p u t S t r e a m o u t s e r i a l P o r t .g e t Out pu t S t r e a m ; }c a t c h I O E x c e p t i o n e {r e t u r n I n i t F a i l ;} / / 取得 串 口上 的输 入/ 输出流 t r y {s e r i a l P o r t . s e t S e r i a l P o r t P a r a m s B a u d r a t e , S e r i a l Po r t . DATABI TS _8, S e fiP o a. S T O P B I T S 一1, S e r i a l Po r t . PARI rⅣ 一N O N E ; }c a t c h U n s u p p o r t e d C o m mO p e r a t i o n E x c e p t i o n e {r e t u r n I n i t F a i l ;} / / 设置串口参数 } c a t c h N o S u c h P o r t E x c e p t i o n e t r e t u r n I n i t F a i l ;} s e ri a l P o f1 . n o t if y O n D a t a A v a i l a b l e t r u e ; p u b l i c v o i d R e a d P o r t 该 函数用于当串 口有 数据时从 串 口缓 区读数 据 , 其主要代码如下 b y t e [ ] k l n e w b y t e [ 1 ] ; w h il e i n . a v a il a b l e 0 { i n . r e a d k 1 ; i f k l [ 0 ] 0 { k 1 [ 0 ] b y t e 0 x 8 0 b y t e k 1 [ 0 ] ; } r S . p u t m e s s a g e c h a r k l [ 0 ] ; / / 将串口接 收到数据写入接收缓冲区 } p u b l i c v o i d Wfi t e P o 本函数向串口发送数据。 f 0 r i n t i 0; i S . 1 e n g t h ; i { t r y { o u t . w r i t e b y t e S . c h a r A t i ; } c a t c h E x c e p t i o n e e { } p u b l i c v o i d C l o s e P o r t { s e r i a lP o r t . c l o s e ;} 函数停止 串口检测进程并关 闭串口, S e r i a l l n i t 释放 对 串口的占有 。 3 . 3 数据发送与接收的实现 前两步中分别实现上位机串口的初始化和 P L C 串口通信 的设置。J a v a是对字节流的形式数据进行 相应 的处理。在 S e r i a l I n i t 类 中除 了初始化串 口以 外, 还得到了输入/ 输出流 i n和 o u t , 输人流的读取 方式与文件的输入流有些不一样, 那就是你可能永 远不知这个输人流何时结束 , 除非对方的输 出流向 你发送了一个特定数据表示发送结束 , 你收到这个 特定字符后 , 再行关闭输入流。J a v a的 c o mm. j a r 中 提供轮询和监听两种方法读取数据。此处采用监听 方式读取数据, 即当有数据到达串口时程序会 自动 接收数据。在 S e r i a l l n i t 类 中实现 串口监听事件方 法 p u b l i c v o i d s e r i a l E v e n t S e r i a l P o r t E v e n t e v t { s w i t c h e v t . g e t E v e n t T y p e { c a s e S e r i a l P o r t Ev e n t . BI S y s t e m. o u t . p r i n t l n ” 通信中断。 ” ; b r e a k; c a s e S e r i a l P 0 r t Ev e n t . DSR S y s t e m. o u t . p r i n t l n ” 数据设备 已准备 好。 ” ; b r e a k; 只SP S e ria l Po r t Ev e n t . DAT A AVAI LABL E S y s t e m. o u t . p r i n t l n “ 有数据到达” ; T ry{ R e a d P o r t ; / / 调用串口读取函数从 串口读取数据 下转第 9 1页 2 0 1 0年第 1 期 工业仪表与自动化装置 9 l 轴承间的油膜而发生放 电。放电会使润滑油的品质 加速劣化 , 放电的电弧会使转子轴颈和轴瓦烧出麻 点 , 烧毁瓦面 , 严重时会造成发电机运行事故。 2 解 决方案 为了防止发电机轴电压的产生 , 规程规定需要在 发电机励侧轴承座下加绝缘垫板。绝缘垫板的安装 方式主要有 3种。常见的有以下两种形式 1 在发电 机励侧轴承座与地之间只加一层绝缘板; 2 在发电机 励侧轴承座与地之间加两层绝缘板 , 一层铁板 , 铁板 置于两层绝缘板之间。为 了确定发电机励侧轴承座 与地之间确实绝缘 , 有以下两种方法进行测量。 2 . 1 测量轴 电压法 测量发电机轴电压时, 简易的轴系统如 图 1 a 所 示。在测量轴电压时 , 可将轴电压理解成一电势 E, 将油膜理解成等值 可变 电阻 R L 励侧 和 R C 汽 侧 , 将轴瓦对地绝缘垫理解成绝缘 电阻 I L l , 则测量 轴电压的等效电路如图 1 b 所示。 油 膜重 [ 二 二 二 二 二 二 二 ] ≥ 荤 油 膜 对地绝缘 \ \ 一 大地 大地 地一 励侧 汽侧 一 b轴电压电路图 图 1 轴 系统及轴 电压 测量方法 1 在机组空载或带载的情况下, 用高内阻电 压表 3~l 0 V交流电压表 测量轴二端 电压 即 b c 点电压 , 得发电机转子轴电压 。 2 将发 电机励 磁机侧 油膜短 接 即 a b点短 接 , 将发电机汽机侧 油膜短接 即 c d点短接 , 用 电压表测量发电机励磁机侧轴 瓦对地 电压 即 a e点 电压 , 可检测绝缘垫对地绝缘情况 , 当 U 的 1 0 %时 , 说 明绝缘垫绝缘情况不良, 需要处理。 2 . 2 测量绝缘电阻法 将发 电机转子 吊起 , 用 5 0 0 V 老规程规定 或 1 0 0 0 V 新规程规定 的摇表对发电机励侧轴承座 与铁板 、 铁板与地之间摇绝缘 。规程规定 绝缘电阻 应不小于 1 Mf t 。若绝缘 电阻实测值小于 1 M n, 说 明绝缘垫绝缘情况不 良, 需要处理 。 在测量发 电机励侧轴承座绝缘电阻时, 应注意 发电机的进出油管路法兰连接处螺栓应配有绝缘套 管及绝缘垫片, 并且 , 此处绝缘 良好 。测量绝缘电阻 法是 目前现场应用 比较普遍的判断发电机励侧轴承 座对地绝缘好坏的方法 。 3 总结 发电机励侧轴承座对地绝缘是一项设备交接试 验项 目。但同时也是一项容易被忽视的项 目。而忽 视它就有可能带来严重 的发 电机运行事故。因此, 该 问题应该引起高度重视。在现场 , 经 常会发生安 装轴承座时绝缘检测合格 , 而在油管路连接后或开 机前测量绝缘不合格的现象。处理此类故障一般需 要 2 4 h或更长时间。所以, 建议在今后 的产品安装 过程 中, 在第一次安装检测发电机轴承座绝缘合格 后 , 应将绝缘垫板等部位用塑胶带或环 氧树脂类密 封胶封死 , 防止后续漏油或进水 等原 因造成轴承座 绝缘阻值降低等事故的发生。 参考文献 [ 1 ] 陈宏波 , 夏 杰, 俞 国宾. 电站汽轮发 电机技术 问答 [ M] . 北京 中国石化出版社, 2 0 0 5 . 上接第 8 6页 }c a t c h I O E x c e p t i o n e { } u s e r F u n ; / / 用户处理 函数 , 对收到数 据按照 P L C帧格式分析处理 b r e a k; } } 上位机向 P L C发送 数据时必须按照 P L C数据 帧的格式来组织数据 帧, 在 Wr i t e P o r t 方法 中以字 符 串的形式定 义发送 数据帧 , 用输 出流 o u t 向 P L C 串口发送数据。发送数据帧长度不超过 1 3 1 字节。 4 结论 用 J a v a 语言实现上位机与 c J系列 P L C串 口通 信, 当 C J 系列 P L C作为 D e v ic e N e t 主站时, 可以充分 利用 J a v a的多线程功能实现对 D e v i c e N e t 网络不 同 设备的灵活控制。同时 J a v a语言具有较强大的网络 功能, 实现 P L C与计算机串 口通信后 , P L C可 以通过 上位机连人 E t h e me t , 而不需要添加 E t h e me t 单元。 参考文献 [ 1 ] O MR O N公司. O MR O N C J 1 操作手册[ z ] . [ 2 ] J a v a C o m mu n i c a t i o n A P I u s e r g g u i d e . [ E B / O L ] .
展开阅读全文